fix: preserve plugin tool metadata in execute result (#22827)
Co-authored-by: jquense <jquense@ramp.com> Co-authored-by: Aiden Cline <63023139+rekram1-node@users.noreply.github.com>
This commit is contained in:
parent
dc38f22bd8
commit
7b3bb9a761
2 changed files with 9 additions and 4 deletions
|
|
@ -135,14 +135,17 @@ export const layer: Layer.Layer<
|
||||||
worktree: ctx.worktree,
|
worktree: ctx.worktree,
|
||||||
}
|
}
|
||||||
const result = yield* Effect.promise(() => def.execute(args as any, pluginCtx))
|
const result = yield* Effect.promise(() => def.execute(args as any, pluginCtx))
|
||||||
|
const output = typeof result === "string" ? result : result.output
|
||||||
|
const metadata = typeof result === "string" ? {} : (result.metadata ?? {})
|
||||||
const info = yield* agent.get(toolCtx.agent)
|
const info = yield* agent.get(toolCtx.agent)
|
||||||
const out = yield* truncate.output(result, {}, info)
|
const out = yield* truncate.output(output, {}, info)
|
||||||
return {
|
return {
|
||||||
title: "",
|
title: "",
|
||||||
output: out.truncated ? out.content : result,
|
output: out.truncated ? out.content : output,
|
||||||
metadata: {
|
metadata: {
|
||||||
|
...metadata,
|
||||||
truncated: out.truncated,
|
truncated: out.truncated,
|
||||||
outputPath: out.truncated ? out.outputPath : undefined,
|
...(out.truncated && { outputPath: out.outputPath }),
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
|
|
|
||||||
|
|
@ -27,10 +27,12 @@ type AskInput = {
|
||||||
metadata: { [key: string]: any }
|
metadata: { [key: string]: any }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type ToolResult = string | { output: string; metadata?: { [key: string]: any } }
|
||||||
|
|
||||||
export function tool<Args extends z.ZodRawShape>(input: {
|
export function tool<Args extends z.ZodRawShape>(input: {
|
||||||
description: string
|
description: string
|
||||||
args: Args
|
args: Args
|
||||||
execute(args: z.infer<z.ZodObject<Args>>, context: ToolContext): Promise<string>
|
execute(args: z.infer<z.ZodObject<Args>>, context: ToolContext): Promise<ToolResult>
|
||||||
}) {
|
}) {
|
||||||
return input
|
return input
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue