import { tool } from "@opencode-ai/plugin"; import { callServerApiTool } from "./server_api_shared.js"; export default tool({ description: "查询一个或多个 SCADA 资产在指定时间范围内的时序读数。调用前通常先用 list_scada_assets 获取资产 id;必须给出明确的 observed_from 和 observed_to,不要省略或自行扩大时间范围。", args: { asset_ids: tool.schema .array(tool.schema.string().uuid()) .min(1) .max(100) .describe( "SCADA asset UUID 数组,1 到 100 个。必须使用 list_scada_assets 返回的 assets[].scada_id,不要使用 GeoServer feature id/fid、external_id 或 site_external_id。", ), observed_from: tool.schema .string() .datetime() .describe( "查询开始时间,ISO8601 datetime 字符串,必须包含时区,例如 2026-04-10T07:15:00Z 或 2026-04-10T15:15:00+08:00。包含该时刻。", ), observed_to: tool.schema .string() .datetime() .describe( "查询结束时间,ISO8601 datetime 字符串,必须包含时区,且必须晚于 observed_from。服务端按半开区间处理:observed_at >= observed_from 且 observed_at < observed_to。", ), granularity: tool.schema .enum(["5m", "1h", "1d"]) .default("5m") .describe( "读数粒度:5m 为原始 5 分钟读数,1h 为小时聚合,1d 为日聚合。未指定时默认 5m。", ), metrics: tool.schema .array( tool.schema.enum([ "conductivity_mean", "level_mean", "flow_mean", "temperature_mean", ]), ) .min(1) .max(4) .describe( "要返回的指标数组,1 到 4 个。允许值:conductivity_mean(电导率均值)、level_mean(液位均值)、flow_mean(流量均值)、temperature_mean(温度均值)。", ), }, execute: (args, context) => callServerApiTool("query_scada_readings", args, context.sessionID), });