mirror of
https://github.com/getcompanion-ai/co-mono.git
synced 2026-04-15 21:03:19 +00:00
Hook API: replace send() with sendMessage(), add appendEntry() and registerCommand()
Breaking changes to Hook API: - pi.send(text, attachments?) replaced with pi.sendMessage(message, triggerTurn?) - Creates CustomMessageEntry instead of user messages - Properly handles queuing during streaming via agent loop - Supports optional turn triggering when idle - New pi.appendEntry(customType, data?) for hook state persistence - New pi.registerCommand(name, options) for custom slash commands - Handler types renamed: SendHandler -> SendMessageHandler, new AppendEntryHandler Implementation: - AgentSession.sendHookMessage() handles all three cases: - Streaming: queues message with _hookData marker, agent loop processes it - Not streaming + triggerTurn: appends to state/session, calls agent.continue() - Not streaming + no trigger: appends to state/session only - message_end handler routes based on _hookData presence to correct persistence - HookRunner gains getRegisteredCommands() and getCommand() methods New types: HookMessage<T>, RegisteredCommand, CommandContext
This commit is contained in:
parent
d43a5e47a1
commit
ba185b0571
13 changed files with 412 additions and 77 deletions
|
|
@ -64,7 +64,9 @@ describe.skipIf(!API_KEY)("Compaction hooks", () => {
|
|||
resolvedPath: "/test/test-hook.ts",
|
||||
handlers,
|
||||
customMessageRenderers: new Map(),
|
||||
setSendHandler: () => {},
|
||||
commands: new Map(),
|
||||
setSendMessageHandler: () => {},
|
||||
setAppendEntryHandler: () => {},
|
||||
};
|
||||
}
|
||||
|
||||
|
|
@ -240,7 +242,9 @@ describe.skipIf(!API_KEY)("Compaction hooks", () => {
|
|||
],
|
||||
]),
|
||||
customMessageRenderers: new Map(),
|
||||
setSendHandler: () => {},
|
||||
commands: new Map(),
|
||||
setSendMessageHandler: () => {},
|
||||
setAppendEntryHandler: () => {},
|
||||
};
|
||||
|
||||
createSession([throwingHook]);
|
||||
|
|
@ -284,7 +288,9 @@ describe.skipIf(!API_KEY)("Compaction hooks", () => {
|
|||
],
|
||||
]),
|
||||
customMessageRenderers: new Map(),
|
||||
setSendHandler: () => {},
|
||||
commands: new Map(),
|
||||
setSendMessageHandler: () => {},
|
||||
setAppendEntryHandler: () => {},
|
||||
};
|
||||
|
||||
const hook2: LoadedHook = {
|
||||
|
|
@ -307,7 +313,9 @@ describe.skipIf(!API_KEY)("Compaction hooks", () => {
|
|||
],
|
||||
]),
|
||||
customMessageRenderers: new Map(),
|
||||
setSendHandler: () => {},
|
||||
commands: new Map(),
|
||||
setSendMessageHandler: () => {},
|
||||
setAppendEntryHandler: () => {},
|
||||
};
|
||||
|
||||
createSession([hook1, hook2]);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue