tool.ts 946 B

1234567891011121314151617181920
  1. import { AgentV2 } from "@opencode-ai/core/agent"
  2. import { SessionMessage } from "@opencode-ai/core/session/message"
  3. import { ToolRegistry } from "@opencode-ai/core/tool/registry"
  4. import { Effect } from "effect"
  5. export const toolIdentity = {
  6. agent: AgentV2.ID.make("build"),
  7. assistantMessageID: SessionMessage.ID.make("msg_tool_test"),
  8. }
  9. export const toolDefinitions = (
  10. registry: ToolRegistry.Interface,
  11. permissions?: Parameters<typeof registry.materialize>[0],
  12. ) => registry.materialize(permissions).pipe(Effect.map((materialized) => materialized.definitions))
  13. export const settleTool = (registry: ToolRegistry.Interface, input: ToolRegistry.ExecuteInput) =>
  14. registry.materialize().pipe(Effect.flatMap((materialized) => materialized.settle(input)))
  15. export const executeTool = (registry: ToolRegistry.Interface, input: ToolRegistry.ExecuteInput) =>
  16. settleTool(registry, input).pipe(Effect.map((settlement) => settlement.result))