refactor(tool): Tool.Def.execute returns Effect, rename defineEffect → define (#21961)
This commit is contained in:
@@ -1,4 +1,5 @@
|
||||
import { describe, test, expect } from "bun:test"
|
||||
import { Effect } from "effect"
|
||||
import z from "zod"
|
||||
import { Tool } from "../../src/tool/tool"
|
||||
|
||||
@@ -8,9 +9,9 @@ function makeTool(id: string, executeFn?: () => void) {
|
||||
return {
|
||||
description: "test tool",
|
||||
parameters: params,
|
||||
async execute() {
|
||||
execute() {
|
||||
executeFn?.()
|
||||
return { title: "test", output: "ok", metadata: {} }
|
||||
return Effect.succeed({ title: "test", output: "ok", metadata: {} })
|
||||
},
|
||||
}
|
||||
}
|
||||
@@ -20,29 +21,31 @@ describe("Tool.define", () => {
|
||||
const original = makeTool("test")
|
||||
const originalExecute = original.execute
|
||||
|
||||
const tool = Tool.define("test-tool", original)
|
||||
const info = await Effect.runPromise(Tool.define("test-tool", Effect.succeed(original)))
|
||||
|
||||
await tool.init()
|
||||
await tool.init()
|
||||
await tool.init()
|
||||
await info.init()
|
||||
await info.init()
|
||||
await info.init()
|
||||
|
||||
expect(original.execute).toBe(originalExecute)
|
||||
})
|
||||
|
||||
test("function-defined tool returns fresh objects and is unaffected", async () => {
|
||||
const tool = Tool.define("test-fn-tool", () => Promise.resolve(makeTool("test")))
|
||||
const info = await Effect.runPromise(
|
||||
Tool.define("test-fn-tool", Effect.succeed(() => Promise.resolve(makeTool("test")))),
|
||||
)
|
||||
|
||||
const first = await tool.init()
|
||||
const second = await tool.init()
|
||||
const first = await info.init()
|
||||
const second = await info.init()
|
||||
|
||||
expect(first).not.toBe(second)
|
||||
})
|
||||
|
||||
test("object-defined tool returns distinct objects per init() call", async () => {
|
||||
const tool = Tool.define("test-copy", makeTool("test"))
|
||||
const info = await Effect.runPromise(Tool.define("test-copy", Effect.succeed(makeTool("test"))))
|
||||
|
||||
const first = await tool.init()
|
||||
const second = await tool.init()
|
||||
const first = await info.init()
|
||||
const second = await info.init()
|
||||
|
||||
expect(first).not.toBe(second)
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user