mirror of
https://github.com/getcompanion-ai/co-mono.git
synced 2026-04-16 15:02:32 +00:00
WIP: Add hook API for dynamic tool control with plan-mode hook example
- Add pi.getTools() and pi.setTools(toolNames) to HookAPI - Hooks can now enable/disable tools dynamically - Changes take effect on next agent turn New example hook: plan-mode.ts - Claude Code-style read-only exploration mode - /plan command toggles plan mode on/off - Plan mode tools: read, bash, grep, find, ls - Edit/write tools disabled in plan mode - Injects context telling agent about restrictions - After each response, prompts to execute/stay/refine - State persists across sessions
This commit is contained in:
parent
5b95ccf830
commit
059292ead1
14 changed files with 304 additions and 8 deletions
|
|
@ -80,6 +80,8 @@ describe.skipIf(!API_KEY)("Compaction hooks", () => {
|
|||
commands: new Map(),
|
||||
setSendMessageHandler: () => {},
|
||||
setAppendEntryHandler: () => {},
|
||||
setGetToolsHandler: () => {},
|
||||
setSetToolsHandler: () => {},
|
||||
};
|
||||
}
|
||||
|
||||
|
|
@ -104,6 +106,8 @@ describe.skipIf(!API_KEY)("Compaction hooks", () => {
|
|||
getModel: () => session.model,
|
||||
sendMessageHandler: async () => {},
|
||||
appendEntryHandler: async () => {},
|
||||
getToolsHandler: () => [],
|
||||
setToolsHandler: () => {},
|
||||
uiContext: {
|
||||
select: async () => undefined,
|
||||
confirm: async () => false,
|
||||
|
|
@ -267,6 +271,8 @@ describe.skipIf(!API_KEY)("Compaction hooks", () => {
|
|||
commands: new Map(),
|
||||
setSendMessageHandler: () => {},
|
||||
setAppendEntryHandler: () => {},
|
||||
setGetToolsHandler: () => {},
|
||||
setSetToolsHandler: () => {},
|
||||
};
|
||||
|
||||
createSession([throwingHook]);
|
||||
|
|
@ -314,6 +320,8 @@ describe.skipIf(!API_KEY)("Compaction hooks", () => {
|
|||
commands: new Map(),
|
||||
setSendMessageHandler: () => {},
|
||||
setAppendEntryHandler: () => {},
|
||||
setGetToolsHandler: () => {},
|
||||
setSetToolsHandler: () => {},
|
||||
};
|
||||
|
||||
const hook2: LoadedHook = {
|
||||
|
|
@ -343,6 +351,8 @@ describe.skipIf(!API_KEY)("Compaction hooks", () => {
|
|||
commands: new Map(),
|
||||
setSendMessageHandler: () => {},
|
||||
setAppendEntryHandler: () => {},
|
||||
setGetToolsHandler: () => {},
|
||||
setSetToolsHandler: () => {},
|
||||
};
|
||||
|
||||
createSession([hook1, hook2]);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue