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-cli。命令路径和参数不是可自由拼接的语法;若当前会话或已加载工作流没有经过验证的完整命令,必须先调用 help 或 help <命令族>,再从返回的 command、usage 和 options 中选择。", args: { command: tool.schema .string() .describe( "不含二进制路径。只可使用 help 响应或已验证工作流中出现的完整命令路径和参数,禁止类推不同命令族的层级,例如 analysis runs list 存在不代表 simulation runs list 存在。无法确认时调用 'help'、'help simulation' 或相应前缀的 help。", ), timeout: tool.schema .number() .optional() .describe("超时秒数,默认 120。大结果集建议设 300+。"), store_result: tool.schema .boolean() .optional() .describe( "是否强制把结果保存到当前对话工作区并返回 data_file。分析脚本需要文件输入时设为 true。", ), }, async execute(args, context) { const response = await fetch( `${internalBaseUrl}/internal/tools/tjwater-cli-call`, { method: "POST", headers: { "Content-Type": "application/json", "x-agent-internal-token": internalToken, }, body: JSON.stringify({ session_id: context.sessionID, command: args.command, store_result: args.store_result, timeout: args.timeout, }), }, ); const text = await response.text(); if (!response.ok) { throw new Error(text); } return text; }, });