feat(hooks): fabric-chat-injector — suggest chat workflow on channel turns
New before_prompt_build hook that appends a "next action: workflow_start
chat" hint to the system prompt whenever the agent's turn was triggered
by a message in a fabric channel.
If Meridian (`globalThis.__meridian.getChatJournalForChannel`) reports
an existing chat journal for this (agentId, channelId), the hint
includes `from="<journal-id>"` so the agent resumes the conversation
file instead of starting a fresh one each turn.
Activation:
- ctx.agentId AND ctx.channelId present
- ctx.messageProvider in {fabric, '' (empty/omitted by gateway)}
TODO(phase-2): once Fabric exposes per-channel type info (DM / group /
triage) via a cross-plugin API, narrow this to xType === 'dm' only.
Today we fire on any fabric channel — chat workflow is a no-op outside
DMs, so the false positives are just prompt-text noise.
Dedup via WeakSet keyed on the event object (same pattern as the
existing before-prompt-build hook) so each turn injects at most once
even when multiple harness call sites trigger the hook.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -2,6 +2,7 @@ import path from "node:path";
|
||||
import { loadRouters } from "./core/router-loader.js";
|
||||
import { initRuleStore } from "./core/rule-store.js";
|
||||
import { registerBeforePromptBuild } from "./hooks/before-prompt-build.js";
|
||||
import { registerFabricChatInjector } from "./hooks/fabric-chat-injector.js";
|
||||
import { registerPromptRulesTool } from "./tools/prompt-rules.js";
|
||||
|
||||
interface PluginConfig {
|
||||
@@ -57,6 +58,7 @@ export default {
|
||||
|
||||
// Agent session hooks: register every time (dedup inside handler)
|
||||
registerBeforePromptBuild(api);
|
||||
registerFabricChatInjector(api);
|
||||
|
||||
// Tools
|
||||
registerPromptRulesTool(api, routersDir);
|
||||
|
||||
Reference in New Issue
Block a user