fix(core): tolerate missing tool input schemas (#39130)
Co-authored-by: Dax Raad <d@ironbay.co>
This commit is contained in:
parent
1f2c59a1b6
commit
33e3d1ebca
3 changed files with 34 additions and 1 deletions
|
|
@ -140,6 +140,22 @@ describe("Tool", () => {
|
|||
}),
|
||||
)
|
||||
|
||||
it.effect("snapshots external tools with missing input schemas", () =>
|
||||
Effect.gen(function* () {
|
||||
const service = yield* Tool.Service
|
||||
yield* service.transform((draft) =>
|
||||
draft.add({
|
||||
...make(),
|
||||
input: undefined,
|
||||
} as unknown as Info),
|
||||
)
|
||||
|
||||
const snapshot = yield* service.snapshot()
|
||||
expect(snapshot.definitions.map((tool) => tool.name)).toEqual(["execute"])
|
||||
expect(snapshot.codeModeCatalog?.[0]?.signature).toContain("tools.echo")
|
||||
}),
|
||||
)
|
||||
|
||||
it.effect("keeps execute available without Code Mode tools unless explicitly denied", () =>
|
||||
Effect.gen(function* () {
|
||||
const service = yield* Tool.Service
|
||||
|
|
|
|||
|
|
@ -143,3 +143,18 @@ test("raw JSON schemas are render-only and omitted output means model-only", asy
|
|||
content: [{ type: "text", text: '{"value":1}' }],
|
||||
})
|
||||
})
|
||||
|
||||
test("missing external input schemas fall back to an empty schema", () => {
|
||||
const tool = {
|
||||
name: "external",
|
||||
description: "External tool",
|
||||
input: undefined,
|
||||
execute: () => Effect.succeed({ content: "unused" }),
|
||||
} as unknown as Info
|
||||
|
||||
expect(definition(tool)).toEqual({
|
||||
name: "external",
|
||||
description: "External tool",
|
||||
inputSchema: {},
|
||||
})
|
||||
})
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue