feat(hooks): add task-resume-info hook
Add hook for injecting task resume information into tool outputs. Enables seamless continuation of background agent sessions. 🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode)
This commit is contained in:
parent
47d56d95a6
commit
166fd20a4f
36
src/hooks/task-resume-info/index.ts
Normal file
36
src/hooks/task-resume-info/index.ts
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
const TARGET_TOOLS = ["task", "Task", "call_omo_agent", "sisyphus_task"]
|
||||||
|
|
||||||
|
const SESSION_ID_PATTERNS = [
|
||||||
|
/Session ID: (ses_[a-zA-Z0-9_-]+)/,
|
||||||
|
/session_id: (ses_[a-zA-Z0-9_-]+)/,
|
||||||
|
/<task_metadata>\s*session_id: (ses_[a-zA-Z0-9_-]+)/,
|
||||||
|
/sessionId: (ses_[a-zA-Z0-9_-]+)/,
|
||||||
|
]
|
||||||
|
|
||||||
|
function extractSessionId(output: string): string | null {
|
||||||
|
for (const pattern of SESSION_ID_PATTERNS) {
|
||||||
|
const match = output.match(pattern)
|
||||||
|
if (match) return match[1]
|
||||||
|
}
|
||||||
|
return null
|
||||||
|
}
|
||||||
|
|
||||||
|
export function createTaskResumeInfoHook() {
|
||||||
|
const toolExecuteAfter = async (
|
||||||
|
input: { tool: string; sessionID: string; callID: string },
|
||||||
|
output: { title: string; output: string; metadata: unknown }
|
||||||
|
) => {
|
||||||
|
if (!TARGET_TOOLS.includes(input.tool)) return
|
||||||
|
if (output.output.startsWith("Error:") || output.output.startsWith("Failed")) return
|
||||||
|
if (output.output.includes("\nto resume:")) return
|
||||||
|
|
||||||
|
const sessionId = extractSessionId(output.output)
|
||||||
|
if (!sessionId) return
|
||||||
|
|
||||||
|
output.output = output.output.trimEnd() + `\n\nto resume: sisyphus_task(resume="${sessionId}", prompt="...")`
|
||||||
|
}
|
||||||
|
|
||||||
|
return {
|
||||||
|
"tool.execute.after": toolExecuteAfter,
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
x
Reference in New Issue
Block a user