chore: initialize qiming workspace repository
This commit is contained in:
41
qimingcode/packages/plugin/src/tool.ts
Normal file
41
qimingcode/packages/plugin/src/tool.ts
Normal file
@@ -0,0 +1,41 @@
|
||||
import { z } from "zod"
|
||||
import { Effect } from "effect"
|
||||
|
||||
export type ToolContext = {
|
||||
sessionID: string
|
||||
messageID: string
|
||||
agent: string
|
||||
/**
|
||||
* Current project directory for this session.
|
||||
* Prefer this over process.cwd() when resolving relative paths.
|
||||
*/
|
||||
directory: string
|
||||
/**
|
||||
* Project worktree root for this session.
|
||||
* Useful for generating stable relative paths (e.g. path.relative(worktree, absPath)).
|
||||
*/
|
||||
worktree: string
|
||||
abort: AbortSignal
|
||||
metadata(input: { title?: string; metadata?: { [key: string]: any } }): void
|
||||
ask(input: AskInput): Effect.Effect<void>
|
||||
}
|
||||
|
||||
type AskInput = {
|
||||
permission: string
|
||||
patterns: string[]
|
||||
always: string[]
|
||||
metadata: { [key: string]: any }
|
||||
}
|
||||
|
||||
export type ToolResult = string | { output: string; metadata?: { [key: string]: any } }
|
||||
|
||||
export function tool<Args extends z.ZodRawShape>(input: {
|
||||
description: string
|
||||
args: Args
|
||||
execute(args: z.infer<z.ZodObject<Args>>, context: ToolContext): Promise<ToolResult>
|
||||
}) {
|
||||
return input
|
||||
}
|
||||
tool.schema = z
|
||||
|
||||
export type ToolDefinition = ReturnType<typeof tool>
|
||||
Reference in New Issue
Block a user