import { tool } from "@opencode-ai/plugin"; const internalBaseUrl = process.env.TJWATER_AGENT_INTERNAL_BASE_URL ?? "http://127.0.0.1:8787"; const internalToken = process.env.TJWATER_AGENT_INTERNAL_TOKEN ?? ""; export default tool({ description: "通过本地 Agent 桥接调用 TJWater 后端 API。需提供 API 路径、可选的请求方法以及查询参数。", args: { reason: tool.schema .string() .describe("Why this tool call is required for the current user request."), path: tool.schema.string().describe("Target backend API path, starting with '/'."), method: tool.schema .string() .optional() .describe("HTTP method. Defaults to GET."), arguments: tool.schema .record(tool.schema.string(), tool.schema.unknown()) .optional() .describe("Query arguments object."), }, async execute(args, context) { // 工具本身不直接持有用户 token;通过 sessionID 回调 Agent 服务,由服务侧补齐用户上下文。 const response = await fetch(`${internalBaseUrl}/internal/tools/dynamic-http-call`, { method: "POST", headers: { "Content-Type": "application/json", "x-agent-internal-token": internalToken, }, body: JSON.stringify({ sessionId: context.sessionID, reason: args.reason, path: args.path, method: args.method, arguments: args.arguments, }), }); const text = await response.text(); if (!response.ok) { throw new Error(text); } return text; }, });