Merge pull request #3941 from code-yeongyu/fix/delegate-task-metadata
[codex] preserve native delegate task metadata
This commit is contained in:
@@ -92,4 +92,34 @@ describe("createToolExecuteAfterHandler", () => {
|
||||
expect(output.title).toBe("stored title")
|
||||
expect(output.metadata).toEqual({ sessionId: "ses_native", agent: "hephaestus" })
|
||||
})
|
||||
|
||||
it("#given native session linkage without model #when stored metadata exists #then required task metadata is preserved", async () => {
|
||||
// given
|
||||
const model = { providerID: "openai", modelID: "gpt-5.5" }
|
||||
storeToolMetadata("ses_parent", "call_model", {
|
||||
title: "stored title",
|
||||
metadata: { sessionId: "ses_stored", agent: "oracle", model },
|
||||
})
|
||||
|
||||
const handler = createToolExecuteAfterHandler({
|
||||
ctx: {} as never,
|
||||
hooks: {} as never,
|
||||
})
|
||||
|
||||
const output = {
|
||||
title: "result",
|
||||
output: "original output",
|
||||
metadata: { sessionId: "ses_native", agent: "hephaestus" },
|
||||
}
|
||||
|
||||
// when
|
||||
await handler(
|
||||
{ tool: "task", sessionID: "ses_parent", callID: "call_model" },
|
||||
output
|
||||
)
|
||||
|
||||
// then
|
||||
expect(output.title).toBe("stored title")
|
||||
expect(output.metadata).toEqual({ sessionId: "ses_native", agent: "hephaestus", model })
|
||||
})
|
||||
})
|
||||
|
||||
@@ -59,12 +59,13 @@ export function createToolExecuteAfterHandler(args: {
|
||||
}
|
||||
if (stored.metadata) {
|
||||
if (nativeSessionId) {
|
||||
log("[tool-execute-after] Native output metadata already includes session linkage; skipping stored metadata overwrite", {
|
||||
log("[tool-execute-after] Native output metadata already includes session linkage; preserving native metadata precedence", {
|
||||
tool: input.tool,
|
||||
sessionID: input.sessionID,
|
||||
callID: input.callID ?? input.callId ?? input.call_id,
|
||||
nativeSessionId,
|
||||
})
|
||||
output.metadata = { ...stored.metadata, ...output.metadata }
|
||||
} else {
|
||||
output.metadata = { ...output.metadata, ...stored.metadata }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user