/** * Global Plugin Hook Runner * * Singleton hook runner that's initialized when plugins are loaded * and can be called from anywhere in the codebase.
*/
import { createSubsystemLogger } from "../logging/subsystem.js"; import { resolveGlobalSingleton } from "../shared/global-singleton.js"; import type { GlobalHookRunnerRegistry } from "./hook-registry.types.js"; import type { PluginHookGatewayContext, PluginHookGatewayStopEvent } from "./hook-types.js"; import { createHookRunner, type HookRunner } from "./hooks.js";
/** * Initialize the global hook runner with a plugin registry. * Called once when plugins are loaded during gateway startup.
*/
export function initializeGlobalHookRunner(registry: GlobalHookRunnerRegistry): void{ const state = getState(); const log = getLog();
state.registry = registry;
state.hookRunner = createHookRunner(registry, {
logger: {
debug: (msg) => log.debug(msg),
warn: (msg) => log.warn(msg),
error: (msg) => log.error(msg),
},
catchErrors: true,
failurePolicyByHook: {
before_tool_call: "fail-closed",
},
});
const hookCount = registry.hooks.length; if (hookCount > 0) {
log.debug(`hook runner initialized with ${hookCount} registered hooks`);
}
}
/** * Get the global hook runner. * Returns null if plugins haven't been loaded yet.
*/
export function getGlobalHookRunner(): HookRunner | null { return getState().hookRunner;
}
/** * Get the global plugin registry. * Returns null if plugins haven't been loaded yet.
*/
export function getGlobalPluginRegistry(): GlobalHookRunnerRegistry | null { return getState().registry;
}
/** * Check if any hooks are registered for a given hook name.
*/
export function hasGlobalHooks(hookName: Parameters<HookRunner["hasHooks"]>[0]): boolean { return getState().hookRunner?.hasHooks(hookName) ?? false;
}
/** * Reset the global hook runner (for testing).
*/
export function resetGlobalHookRunner(): void { const state = getState();
state.hookRunner = null;
state.registry = null;
}
Messung V0.5 in Prozent
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.1Bemerkung:
(vorverarbeitet am 2026-06-05)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.