MCPcopy Create free account
hub / github.com/arctic-cli/interface / resolveTools

Function resolveTools

packages/arctic/src/session/prompt.ts:867–1017  ·  view source on GitHub ↗
(input: {
    agent: Agent.Info
    model: Provider.Model
    sessionID: string
    tools?: Record<string, boolean>
    processor: SessionProcessor.Info
  })

Source from the content-addressed store, hash-verified

865 }
866
867 async function resolveTools(input: {
868 agent: Agent.Info
869 model: Provider.Model
870 sessionID: string
871 tools?: Record<string, boolean>
872 processor: SessionProcessor.Info
873 }) {
874 const tools: Record<string, AITool> = {}
875 const enabledTools = pipe(
876 input.agent.tools,
877 mergeDeep(await ToolRegistry.enabled(input.agent)),
878 mergeDeep(input.tools ?? {}),
879 )
880 for (const item of await ToolRegistry.tools(input.model.providerID)) {
881 if (Wildcard.all(item.id, enabledTools) === false) continue
882 const schema = ProviderTransform.schema(input.model, z.toJSONSchema(item.parameters))
883 const toolId = item.id
884 tools[toolId] = tool({
885 id: toolId as any,
886 description: item.description,
887 inputSchema: jsonSchema(schema as any),
888 async execute(args, options) {
889 const rawToolName = item.id
890 Telemetry.toolInvoked(rawToolName)
891
892 await Plugin.trigger(
893 "tool.execute.before",
894 {
895 tool: rawToolName,
896 sessionID: input.sessionID,
897 callID: options.toolCallId,
898 },
899 {
900 args,
901 },
902 )
903 const result = await item.execute(args, {
904 sessionID: input.sessionID,
905 abort: options.abortSignal!,
906 messageID: input.processor.message.id,
907 callID: options.toolCallId,
908 extra: { model: input.model },
909 agent: input.agent.name,
910 metadata: async (val) => {
911 const match = input.processor.partFromToolCall(options.toolCallId)
912 if (match && match.state.status === "running") {
913 await Session.updatePart({
914 ...match,
915 state: {
916 title: val.title,
917 metadata: val.metadata,
918 status: "running",
919 input: args,
920 time: {
921 start: Date.now(),
922 },
923 },
924 })

Callers 1

prompt.tsFile · 0.85

Calls 5

toolFunction · 0.85
enabledMethod · 0.80
schemaMethod · 0.80
pushMethod · 0.80
executeFunction · 0.70

Tested by

no test coverage detected