Download packages/coding-agent/src/core/tools/tool-definition-wrapper.ts from SaylorTwift/pi: direct link, hf CLI and curl.
- Browser
- Download file 1.87 kB
-
https://huggingface.co/SaylorTwift/pi/resolve/main/packages/coding-agent/src/core/tools/tool-definition-wrapper.ts
- Command line
-
hf download hf://SaylorTwift/pi/packages/coding-agent/src/core/tools/tool-definition-wrapper.ts
-
curl -L -o tool-definition-wrapper.ts https://huggingface.co/SaylorTwift/pi/resolve/main/packages/coding-agent/src/core/tools/tool-definition-wrapper.ts
1.87 kB
| import type { AgentTool } from "@earendil-works/pi-agent-core"; | |
| import type { ExtensionContext, ToolDefinition } from "../extensions/types.ts"; | |
| /** Wrap a ToolDefinition into an AgentTool for the core runtime. */ | |
| export function wrapToolDefinition<TDetails = unknown>( | |
| definition: ToolDefinition<any, TDetails>, | |
| ctxFactory?: () => ExtensionContext, | |
| ): AgentTool<any, TDetails> { | |
| return { | |
| name: definition.name, | |
| label: definition.label, | |
| description: definition.description, | |
| parameters: definition.parameters, | |
| constrainedSampling: definition.constrainedSampling, | |
| prepareArguments: definition.prepareArguments, | |
| executionMode: definition.executionMode, | |
| execute: (toolCallId, params, signal, onUpdate, ctx?: ExtensionContext) => | |
| definition.execute(toolCallId, params, signal, onUpdate, ctx ?? (ctxFactory?.() as ExtensionContext)), | |
| }; | |
| } | |
| /** Wrap multiple ToolDefinitions into AgentTools for the core runtime. */ | |
| export function wrapToolDefinitions( | |
| definitions: ToolDefinition<any, any>[], | |
| ctxFactory?: () => ExtensionContext, | |
| ): AgentTool<any>[] { | |
| return definitions.map((definition) => wrapToolDefinition(definition, ctxFactory)); | |
| } | |
| /** | |
| * Synthesize a minimal ToolDefinition from an AgentTool. | |
| * | |
| * This keeps AgentSession's internal registry definition-first even when a caller | |
| * provides plain AgentTool overrides that do not include prompt metadata or renderers. | |
| */ | |
| export function createToolDefinitionFromAgentTool(tool: AgentTool<any>): ToolDefinition<any, unknown> { | |
| return { | |
| name: tool.name, | |
| label: tool.label, | |
| description: tool.description, | |
| parameters: tool.parameters as any, | |
| constrainedSampling: tool.constrainedSampling, | |
| prepareArguments: tool.prepareArguments, | |
| executionMode: tool.executionMode, | |
| execute: async (toolCallId, params, signal, onUpdate) => tool.execute(toolCallId, params, signal, onUpdate), | |
| }; | |
| } | |