84 lines
3.2 KiB
JavaScript
84 lines
3.2 KiB
JavaScript
/**
|
|
* Central entry point for the new macro system.
|
|
*
|
|
* Exposes the MacroEngine / MacroRegistry singletons and provides a
|
|
* single registerMacros() function that wires up all built-in macro
|
|
* definition sets (core, env, state, chat, time, variables, instruct).
|
|
*/
|
|
|
|
// Engine singletons and enums
|
|
import { MacroEngine } from './engine/MacroEngine.js';
|
|
import { MacroRegistry, MacroCategory, MacroValueType } from './engine/MacroRegistry.js';
|
|
import { MacroLexer } from './engine/MacroLexer.js';
|
|
import { MacroParser } from './engine/MacroParser.js';
|
|
import { MacroCstWalker } from './engine/MacroCstWalker.js';
|
|
import { MacroEnvBuilder } from './engine/MacroEnvBuilder.js';
|
|
|
|
// Macro definition groups
|
|
import { registerCoreMacros } from './definitions/core-macros.js';
|
|
import { registerEnvMacros } from './definitions/env-macros.js';
|
|
import { registerStateMacros } from './definitions/state-macros.js';
|
|
import { registerChatMacros } from './definitions/chat-macros.js';
|
|
import { registerTimeMacros } from './definitions/time-macros.js';
|
|
import { registerVariableMacros } from './definitions/variable-macros.js';
|
|
import { registerInstructMacros } from './definitions/instruct-macros.js';
|
|
|
|
// Re-export the category enum for external use
|
|
export { MacroCategory, MacroValueType };
|
|
|
|
// Re-export most-used jsdoc definitions
|
|
/** @typedef {import('./engine/MacroRegistry.js').MacroDefinitionOptions} MacroDefinitionOptions */
|
|
/** @typedef {import('./engine/MacroRegistry.js').MacroDefinition} MacroDefinition */
|
|
/** @typedef {import('./engine/MacroRegistry.js').MacroUnnamedArgDef} MacroUnnamedArgDef */
|
|
/** @typedef {import('./engine/MacroRegistry.js').MacroListSpec} MacroListSpec */
|
|
/** @typedef {import('./engine/MacroRegistry.js').MacroHandler} MacroHandler */
|
|
/** @typedef {import('./engine/MacroRegistry.js').MacroExecutionContext} MacroExecutionContext */
|
|
|
|
/** @typedef {import('chevrotain').CstNode} CstNode */
|
|
/** @typedef {import('./engine/MacroEnv.types.js').MacroEnv} MacroEnv */
|
|
/** @typedef {import('./engine/MacroEnv.types.js').MacroEnvNames} MacroEnvNames */
|
|
/** @typedef {import('./engine/MacroEnv.types.js').MacroEnvCharacter} MacroEnvCharacter */
|
|
/** @typedef {import('./engine/MacroEnv.types.js').MacroEnvSystem} MacroEnvSystem */
|
|
/** @typedef {import('./engine/MacroEnv.types.js').MacroEnvFunctions} MacroEnvFunctions */
|
|
|
|
export const macros = {
|
|
// engine singletons
|
|
engine: MacroEngine,
|
|
registry: MacroRegistry,
|
|
envBuilder: MacroEnvBuilder,
|
|
lexer: MacroLexer,
|
|
parser: MacroParser,
|
|
cstWalker: MacroCstWalker,
|
|
|
|
// enums
|
|
category: MacroCategory,
|
|
|
|
// shorthand functions
|
|
register: MacroRegistry.registerMacro.bind(MacroRegistry),
|
|
};
|
|
|
|
/**
|
|
* Registers all built-in macros in a well-defined order.
|
|
* Intended to be called once during app initialization.
|
|
*/
|
|
export function initRegisterMacros() {
|
|
// Core utilities and generic helpers
|
|
registerCoreMacros();
|
|
|
|
// Env / character / system / extras
|
|
registerEnvMacros();
|
|
|
|
// Runtime state tracking (eventSource etc.)
|
|
registerStateMacros();
|
|
|
|
// Chat/history inspection macros
|
|
registerChatMacros();
|
|
|
|
// Time / date / durations
|
|
registerTimeMacros();
|
|
|
|
// Variable and instruct macros
|
|
registerVariableMacros();
|
|
registerInstructMacros();
|
|
}
|