Files
opencode/packages/plugin/src/effect/tool.ts
T
2026-08-07 15:34:36 -04:00

46 lines
1.2 KiB
TypeScript

import { Tool } from "@opencode-ai/schema/tool"
import type { Agent } from "@opencode-ai/schema/agent"
import type { Session } from "@opencode-ai/schema/session"
import type { SessionMessage } from "@opencode-ai/schema/session-message"
import type { Hooks, Transform } from "./registration.js"
export interface ToolDraft {
add<
Input extends Tool.ValueSchema<any>,
Output extends Tool.ValueSchema<any> | undefined,
>(tool: Tool.Info<Input, Output>): void
}
export interface ToolHooks {
readonly "execute.before": {
readonly tool: string
readonly sessionID: Session.ID
readonly agent: Agent.ID
readonly messageID: SessionMessage.ID
readonly id: Tool.CallID
input: unknown
}
readonly "execute.after": {
readonly tool: string
readonly sessionID: Session.ID
readonly agent: Agent.ID
readonly messageID: SessionMessage.ID
readonly id: Tool.CallID
readonly input: unknown
} & (
| {
readonly status: "completed"
result: Tool.Result
}
| {
readonly status: "error"
error: Tool.Error
}
)
}
export interface ToolDomain {
readonly transform: Transform<ToolDraft>
readonly hook: Hooks<ToolHooks>
}