refactor(prism-facet): become a pure registration framework
Strip all Hangman-Lab-specific content out of PrismFacet so it can be
reused by any project. Content (always router, pcexec-convention prompt,
fabric-chat-injector hook) moves to the new sibling plugin ClawPrompts.
Mechanism additions:
- `globalThis.__prismFacet` cross-plugin API installed at module-import
time (so consumers loaded before PrismFacet can still register):
.addRouter(name, resolveFn)
.addRule(router, key, { file })
- core/rule-store: tier rules into `persistent` (rules.json, mutated by
the prompt-rules admin tool) and `external` (in-memory, registered by
other plugins via the API). Persistent overrides external on conflict.
- core/router-loader: addExternalRouter() for programmatic registration
into the same map the file-based loader uses.
- index.ts: drops registerFabricChatInjector wiring, registerBeforePromptBuild
remains.
Removed (now shipped from ClawPrompts):
- plugin/routers/always.ts
- plugin/hooks/fabric-chat-injector.ts
- plugin/prompts/pcexec-convention.md
- plugin/rules.json: now `{}`; ClawPrompts registers its rule externally
What still lives in PrismFacet:
- before_prompt_build hook (the wiring between routers/rules and the
agent's system prompt)
- prompt-rules admin tool (lists + mutates persistent rules)
- file-based routersDir / rulesFile scanning (kept for operator ad-hoc
use; ClawPrompts uses the API instead)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
0
plugin/routers/.gitkeep
Normal file
0
plugin/routers/.gitkeep
Normal file
@@ -1,11 +0,0 @@
|
||||
/**
|
||||
* `always` router — resolves to the constant key `"always"` for every
|
||||
* agent. Pair with a rule like `always:always → <some-prompt.md>` to
|
||||
* inject a prompt fragment into every agent's system prompt
|
||||
* unconditionally (no ego / role / position lookup needed).
|
||||
*/
|
||||
import type { RouterContext } from "../core/router-loader.js";
|
||||
|
||||
export function resolve(_ctx: RouterContext): string {
|
||||
return "always";
|
||||
}
|
||||
Reference in New Issue
Block a user