refactor(agent)!: focus tools on SCADA

This commit is contained in:
2026-07-15 18:30:58 +08:00
parent 8a21908785
commit 155513fdbc
47 changed files with 503 additions and 2910 deletions
@@ -0,0 +1,19 @@
import { describe, expect, it } from "bun:test";
import { readFileSync } from "node:fs";
describe("SCADA opencode tools", () => {
it("documents asset listing and reading query parameters", () => {
const listTool = readFileSync(".opencode/tools/list_scada_assets.ts", "utf8");
const queryTool = readFileSync(".opencode/tools/query_scada_readings.ts", "utf8");
expect(listTool).toContain("无请求参数");
expect(listTool).toContain("assets[].scada_id");
expect(queryTool).toContain("asset_ids");
expect(queryTool).toContain("observed_from");
expect(queryTool).toContain("observed_to");
expect(queryTool).toContain("granularity");
expect(queryTool).toContain("metrics");
expect(queryTool).toContain("半开区间");
expect(queryTool).toContain("不要使用 GeoServer feature id/fid、external_id 或 site_external_id");
});
});
+9 -9
View File
@@ -26,8 +26,8 @@ describe("skill_manager tool", () => {
const skillDocument = (body: string) =>
[
"---",
"name: pressure-review",
"description: Pressure review workflow.",
"name: scada-level-review",
"description: SCADA level review workflow.",
"---",
"",
body,
@@ -64,32 +64,32 @@ describe("skill_manager tool", () => {
await tool.execute(
{
action: "write_skill",
content: skillDocument("# Pressure Review"),
content: skillDocument("# SCADA Level Review"),
reason: "verified reusable workflow",
skill_path: "workflow/pressure-review",
skill_path: "workflow/scada-level-review",
},
toolContext,
) as string,
);
expect(writeResult.decision).toBe("accepted");
await expect(readFile(writeResult.target, "utf8")).resolves.toContain(
"# Pressure Review\n",
"# SCADA Level Review\n",
);
const updateResult = JSON.parse(
await tool.execute(
{
action: "write_skill",
content: skillDocument("# Updated Pressure Review"),
content: skillDocument("# Updated SCADA Level Review"),
reason: "verified reusable workflow overwrite",
skill_path: "workflow/pressure-review",
skill_path: "workflow/scada-level-review",
},
toolContext,
) as string,
);
expect(updateResult.decision).toBe("accepted");
await expect(readFile(updateResult.target, "utf8")).resolves.toContain(
"# Updated Pressure Review\n",
"# Updated SCADA Level Review\n",
);
const removeResult = JSON.parse(
@@ -97,7 +97,7 @@ describe("skill_manager tool", () => {
{
action: "remove_skill",
reason: "workflow is obsolete",
skill_path: "workflow/pressure-review",
skill_path: "workflow/scada-level-review",
},
toolContext,
) as string,