st-mobile / public /scripts /macros /macro-system.js
Nanny7's picture
Initial deploy with custom mobile UI
6efa67a
/**
* 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();
}