@claude-flow/cli 3.11.0 → 3.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/src/commands/doctor.d.ts.map +1 -1
- package/dist/src/commands/doctor.js +175 -1
- package/dist/src/commands/doctor.js.map +1 -1
- package/dist/src/commands/eject.d.ts +33 -0
- package/dist/src/commands/eject.d.ts.map +1 -0
- package/dist/src/commands/eject.js +195 -0
- package/dist/src/commands/eject.js.map +1 -0
- package/dist/src/commands/hooks.d.ts.map +1 -1
- package/dist/src/commands/hooks.js +2 -1
- package/dist/src/commands/hooks.js.map +1 -1
- package/dist/src/commands/index.d.ts.map +1 -1
- package/dist/src/commands/index.js +4 -0
- package/dist/src/commands/index.js.map +1 -1
- package/dist/src/commands/init.d.ts.map +1 -1
- package/dist/src/commands/init.js +3 -0
- package/dist/src/commands/init.js.map +1 -1
- package/dist/src/commands/metaharness.d.ts +39 -0
- package/dist/src/commands/metaharness.d.ts.map +1 -0
- package/dist/src/commands/metaharness.js +194 -0
- package/dist/src/commands/metaharness.js.map +1 -0
- package/dist/src/mcp-client.d.ts.map +1 -1
- package/dist/src/mcp-client.js +4 -0
- package/dist/src/mcp-client.js.map +1 -1
- package/dist/src/mcp-tools/index.d.ts +1 -0
- package/dist/src/mcp-tools/index.d.ts.map +1 -1
- package/dist/src/mcp-tools/index.js +2 -0
- package/dist/src/mcp-tools/index.js.map +1 -1
- package/dist/src/mcp-tools/metaharness-tools.d.ts +31 -0
- package/dist/src/mcp-tools/metaharness-tools.d.ts.map +1 -0
- package/dist/src/mcp-tools/metaharness-tools.js +372 -0
- package/dist/src/mcp-tools/metaharness-tools.js.map +1 -0
- package/dist/src/plugins/store/discovery.d.ts.map +1 -1
- package/dist/src/plugins/store/discovery.js +3 -0
- package/dist/src/plugins/store/discovery.js.map +1 -1
- package/dist/src/plugins/store/types.d.ts +6 -1
- package/dist/src/plugins/store/types.d.ts.map +1 -1
- package/dist/src/ruvector/model-router.d.ts.map +1 -1
- package/dist/src/ruvector/model-router.js +37 -0
- package/dist/src/ruvector/model-router.js.map +1 -1
- package/dist/src/ruvector/router-parallel-recorder.d.ts +127 -0
- package/dist/src/ruvector/router-parallel-recorder.d.ts.map +1 -0
- package/dist/src/ruvector/router-parallel-recorder.js +183 -0
- package/dist/src/ruvector/router-parallel-recorder.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +13 -10
- package/plugins/ruflo-metaharness/.claude-flow/data/pending-insights.jsonl +1 -0
- package/plugins/ruflo-metaharness/.claude-flow/neural/stats.json +6 -0
- package/plugins/ruflo-metaharness/.claude-plugin/plugin.json +32 -0
- package/plugins/ruflo-metaharness/README.md +64 -0
- package/plugins/ruflo-metaharness/agents/metaharness-architect.md +58 -0
- package/plugins/ruflo-metaharness/commands/ruflo-metaharness.md +46 -0
- package/plugins/ruflo-metaharness/scripts/_harness.mjs +261 -0
- package/plugins/ruflo-metaharness/scripts/_similarity.mjs +161 -0
- package/plugins/ruflo-metaharness/scripts/_spike-similarity.mjs +223 -0
- package/plugins/ruflo-metaharness/scripts/audit-list.mjs +158 -0
- package/plugins/ruflo-metaharness/scripts/audit-trend.mjs +272 -0
- package/plugins/ruflo-metaharness/scripts/bench-parse-mcp-scan.mjs +146 -0
- package/plugins/ruflo-metaharness/scripts/bench-recordpair-overhead.mjs +186 -0
- package/plugins/ruflo-metaharness/scripts/bench-similarity.mjs +177 -0
- package/plugins/ruflo-metaharness/scripts/drift-from-history.mjs +363 -0
- package/plugins/ruflo-metaharness/scripts/genome.mjs +80 -0
- package/plugins/ruflo-metaharness/scripts/mcp-scan.mjs +111 -0
- package/plugins/ruflo-metaharness/scripts/mint.mjs +119 -0
- package/plugins/ruflo-metaharness/scripts/oia-audit.mjs +228 -0
- package/plugins/ruflo-metaharness/scripts/router-parallel-analyze.mjs +250 -0
- package/plugins/ruflo-metaharness/scripts/score.mjs +92 -0
- package/plugins/ruflo-metaharness/scripts/similarity.mjs +158 -0
- package/plugins/ruflo-metaharness/scripts/smoke.sh +2268 -0
- package/plugins/ruflo-metaharness/scripts/test-graceful-degradation.mjs +141 -0
- package/plugins/ruflo-metaharness/scripts/test-mcp-tools.mjs +437 -0
- package/plugins/ruflo-metaharness/scripts/test-parallel-pipeline.mjs +204 -0
- package/plugins/ruflo-metaharness/scripts/test-pipeline-roundtrip.mjs +586 -0
- package/plugins/ruflo-metaharness/scripts/test-similarity.mjs +334 -0
- package/plugins/ruflo-metaharness/scripts/test-with-openrouter.mjs +229 -0
- package/plugins/ruflo-metaharness/scripts/threat-model.mjs +59 -0
- package/plugins/ruflo-metaharness/skills/harness-drift-from-history/SKILL.md +65 -0
- package/plugins/ruflo-metaharness/skills/harness-genome/SKILL.md +54 -0
- package/plugins/ruflo-metaharness/skills/harness-mcp-scan/SKILL.md +47 -0
- package/plugins/ruflo-metaharness/skills/harness-mint/SKILL.md +72 -0
- package/plugins/ruflo-metaharness/skills/harness-oia-audit/SKILL.md +79 -0
- package/plugins/ruflo-metaharness/skills/harness-score/SKILL.md +66 -0
- package/plugins/ruflo-metaharness/skills/harness-similarity/SKILL.md +67 -0
- package/plugins/ruflo-metaharness/skills/harness-threat-model/SKILL.md +39 -0
- package/dist/src/benchmarks/capability-tasks.d.ts +0 -126
- package/dist/src/benchmarks/capability-tasks.d.ts.map +0 -1
- package/dist/src/benchmarks/capability-tasks.js +0 -147
- package/dist/src/benchmarks/capability-tasks.js.map +0 -1
- package/dist/src/benchmarks/gaia-agent-contrastive.d.ts +0 -53
- package/dist/src/benchmarks/gaia-agent-contrastive.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-agent-contrastive.js +0 -177
- package/dist/src/benchmarks/gaia-agent-contrastive.js.map +0 -1
- package/dist/src/benchmarks/gaia-agent-gemini.d.ts +0 -51
- package/dist/src/benchmarks/gaia-agent-gemini.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-agent-gemini.js +0 -352
- package/dist/src/benchmarks/gaia-agent-gemini.js.map +0 -1
- package/dist/src/benchmarks/gaia-claude-p.d.ts +0 -105
- package/dist/src/benchmarks/gaia-claude-p.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-claude-p.js +0 -269
- package/dist/src/benchmarks/gaia-claude-p.js.map +0 -1
- package/dist/src/benchmarks/gaia-claude-p.smoke.d.ts +0 -20
- package/dist/src/benchmarks/gaia-claude-p.smoke.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-claude-p.smoke.js +0 -168
- package/dist/src/benchmarks/gaia-claude-p.smoke.js.map +0 -1
- package/dist/src/benchmarks/gaia-codeagent-runner.py +0 -556
- package/dist/src/benchmarks/gaia-codeagent.d.ts +0 -129
- package/dist/src/benchmarks/gaia-codeagent.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-codeagent.js +0 -590
- package/dist/src/benchmarks/gaia-codeagent.js.map +0 -1
- package/dist/src/benchmarks/gaia-codeagent.smoke.d.ts +0 -33
- package/dist/src/benchmarks/gaia-codeagent.smoke.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-codeagent.smoke.js +0 -241
- package/dist/src/benchmarks/gaia-codeagent.smoke.js.map +0 -1
- package/dist/src/benchmarks/gaia-dag-pilot.d.ts +0 -22
- package/dist/src/benchmarks/gaia-dag-pilot.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-dag-pilot.js +0 -158
- package/dist/src/benchmarks/gaia-dag-pilot.js.map +0 -1
- package/dist/src/benchmarks/gaia-dag.d.ts +0 -110
- package/dist/src/benchmarks/gaia-dag.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-dag.js +0 -658
- package/dist/src/benchmarks/gaia-dag.js.map +0 -1
- package/dist/src/benchmarks/gaia-dag.smoke.d.ts +0 -21
- package/dist/src/benchmarks/gaia-dag.smoke.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-dag.smoke.js +0 -290
- package/dist/src/benchmarks/gaia-dag.smoke.js.map +0 -1
- package/dist/src/benchmarks/gaia-ensemble-pilot.d.ts +0 -17
- package/dist/src/benchmarks/gaia-ensemble-pilot.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-ensemble-pilot.js +0 -106
- package/dist/src/benchmarks/gaia-ensemble-pilot.js.map +0 -1
- package/dist/src/benchmarks/gaia-ensemble.d.ts +0 -103
- package/dist/src/benchmarks/gaia-ensemble.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-ensemble.js +0 -462
- package/dist/src/benchmarks/gaia-ensemble.js.map +0 -1
- package/dist/src/benchmarks/gaia-gemini-pilot.d.ts +0 -17
- package/dist/src/benchmarks/gaia-gemini-pilot.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-gemini-pilot.js +0 -168
- package/dist/src/benchmarks/gaia-gemini-pilot.js.map +0 -1
- package/dist/src/benchmarks/gaia-mode-router.d.ts +0 -67
- package/dist/src/benchmarks/gaia-mode-router.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-mode-router.js +0 -126
- package/dist/src/benchmarks/gaia-mode-router.js.map +0 -1
- package/dist/src/benchmarks/gaia-mode-router.smoke.d.ts +0 -15
- package/dist/src/benchmarks/gaia-mode-router.smoke.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-mode-router.smoke.js +0 -131
- package/dist/src/benchmarks/gaia-mode-router.smoke.js.map +0 -1
- package/dist/src/benchmarks/gaia-tools/grounded_query.smoke.d.ts +0 -24
- package/dist/src/benchmarks/gaia-tools/grounded_query.smoke.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-tools/grounded_query.smoke.js +0 -276
- package/dist/src/benchmarks/gaia-tools/grounded_query.smoke.js.map +0 -1
- package/dist/src/benchmarks/gaia-tools/image_describe.d.ts +0 -45
- package/dist/src/benchmarks/gaia-tools/image_describe.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-tools/image_describe.js +0 -222
- package/dist/src/benchmarks/gaia-tools/image_describe.js.map +0 -1
- package/dist/src/benchmarks/gaia-tools/image_describe.smoke.d.ts +0 -24
- package/dist/src/benchmarks/gaia-tools/image_describe.smoke.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-tools/image_describe.smoke.js +0 -169
- package/dist/src/benchmarks/gaia-tools/image_describe.smoke.js.map +0 -1
- package/dist/src/benchmarks/gaia-tools/pdf_read.d.ts +0 -27
- package/dist/src/benchmarks/gaia-tools/pdf_read.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-tools/pdf_read.js +0 -226
- package/dist/src/benchmarks/gaia-tools/pdf_read.js.map +0 -1
- package/dist/src/benchmarks/gaia-tools/python_exec.d.ts +0 -31
- package/dist/src/benchmarks/gaia-tools/python_exec.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-tools/python_exec.js +0 -94
- package/dist/src/benchmarks/gaia-tools/python_exec.js.map +0 -1
- package/dist/src/benchmarks/gaia-tools/python_exec.smoke.d.ts +0 -13
- package/dist/src/benchmarks/gaia-tools/python_exec.smoke.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-tools/python_exec.smoke.js +0 -98
- package/dist/src/benchmarks/gaia-tools/python_exec.smoke.js.map +0 -1
- package/dist/src/benchmarks/gaia-tools/visit_webpage.d.ts +0 -52
- package/dist/src/benchmarks/gaia-tools/visit_webpage.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-tools/visit_webpage.js +0 -304
- package/dist/src/benchmarks/gaia-tools/visit_webpage.js.map +0 -1
- package/dist/src/benchmarks/gaia-tools/web_browse.d.ts +0 -61
- package/dist/src/benchmarks/gaia-tools/web_browse.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-tools/web_browse.js +0 -217
- package/dist/src/benchmarks/gaia-tools/web_browse.js.map +0 -1
- package/dist/src/benchmarks/gaia-tools/web_browse.smoke.d.ts +0 -26
- package/dist/src/benchmarks/gaia-tools/web_browse.smoke.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-tools/web_browse.smoke.js +0 -152
- package/dist/src/benchmarks/gaia-tools/web_browse.smoke.js.map +0 -1
- package/dist/src/benchmarks/gaia-tools/web_search.smoke.d.ts +0 -24
- package/dist/src/benchmarks/gaia-tools/web_search.smoke.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-tools/web_search.smoke.js +0 -311
- package/dist/src/benchmarks/gaia-tools/web_search.smoke.js.map +0 -1
- package/dist/src/benchmarks/gaia-visit-webpage.smoke.d.ts +0 -25
- package/dist/src/benchmarks/gaia-visit-webpage.smoke.d.ts.map +0 -1
- package/dist/src/benchmarks/gaia-visit-webpage.smoke.js +0 -304
- package/dist/src/benchmarks/gaia-visit-webpage.smoke.js.map +0 -1
- package/dist/src/commands/performance-capability.d.ts +0 -30
- package/dist/src/commands/performance-capability.d.ts.map +0 -1
- package/dist/src/commands/performance-capability.js +0 -349
- package/dist/src/commands/performance-capability.js.map +0 -1
|
@@ -23,4 +23,6 @@ export { wasmAgentTools } from './wasm-agent-tools.js';
|
|
|
23
23
|
export { ruvllmWasmTools } from './ruvllm-tools.js';
|
|
24
24
|
export { guidanceTools } from './guidance-tools.js';
|
|
25
25
|
export { autopilotTools } from './autopilot-tools.js';
|
|
26
|
+
// ADR-150 — MetaHarness MCP tools (score / genome / mcp-scan / threat-model / oia-audit)
|
|
27
|
+
export { metaharnessTools } from './metaharness-tools.js';
|
|
26
28
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp-tools/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp-tools/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,yFAAyF;AACzF,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MetaHarness MCP Tools — ADR-150 Phase-2 deep-integration surface.
|
|
3
|
+
*
|
|
4
|
+
* Exposes the static-analysis MetaHarness CLIs as first-class MCP tools
|
|
5
|
+
* so Claude Code agents can call them programmatically without shelling
|
|
6
|
+
* out themselves. Five tools, all read-only / subprocess-isolated:
|
|
7
|
+
*
|
|
8
|
+
* - metaharness_score 5-dim readiness scorecard
|
|
9
|
+
* - metaharness_genome 7-section categorical report
|
|
10
|
+
* - metaharness_mcp_scan static MCP security findings
|
|
11
|
+
* - metaharness_threat_model enterprise-grade threat model
|
|
12
|
+
* - metaharness_oia_audit composite audit (score + threat + mcp) → memory
|
|
13
|
+
*
|
|
14
|
+
* Every tool resolves the corresponding plugin script
|
|
15
|
+
* (`plugins/ruflo-metaharness/scripts/<X>.mjs`) via the same locator
|
|
16
|
+
* the commands/metaharness.ts dispatcher uses, then spawns it with
|
|
17
|
+
* `--format json` and parses the response.
|
|
18
|
+
*
|
|
19
|
+
* ADR-150 ARCHITECTURAL CONSTRAINT
|
|
20
|
+
* --------------------------------
|
|
21
|
+
* This file has ZERO static `@metaharness/*` imports. All metaharness
|
|
22
|
+
* invocation stays in the plugin scripts behind the `_harness.mjs`
|
|
23
|
+
* subprocess bridge. When the plugin scripts aren't reachable at
|
|
24
|
+
* runtime, each tool returns a structured `{ degraded: true }` payload
|
|
25
|
+
* — never throws.
|
|
26
|
+
*
|
|
27
|
+
* @module @claude-flow/cli/mcp-tools/metaharness
|
|
28
|
+
*/
|
|
29
|
+
import type { MCPTool } from './types.js';
|
|
30
|
+
export declare const metaharnessTools: MCPTool[];
|
|
31
|
+
//# sourceMappingURL=metaharness-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metaharness-tools.d.ts","sourceRoot":"","sources":["../../../src/mcp-tools/metaharness-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAsB,MAAM,YAAY,CAAC;AAyH9D,eAAO,MAAM,gBAAgB,EAAE,OAAO,EAwMrC,CAAC"}
|
|
@@ -0,0 +1,372 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MetaHarness MCP Tools — ADR-150 Phase-2 deep-integration surface.
|
|
3
|
+
*
|
|
4
|
+
* Exposes the static-analysis MetaHarness CLIs as first-class MCP tools
|
|
5
|
+
* so Claude Code agents can call them programmatically without shelling
|
|
6
|
+
* out themselves. Five tools, all read-only / subprocess-isolated:
|
|
7
|
+
*
|
|
8
|
+
* - metaharness_score 5-dim readiness scorecard
|
|
9
|
+
* - metaharness_genome 7-section categorical report
|
|
10
|
+
* - metaharness_mcp_scan static MCP security findings
|
|
11
|
+
* - metaharness_threat_model enterprise-grade threat model
|
|
12
|
+
* - metaharness_oia_audit composite audit (score + threat + mcp) → memory
|
|
13
|
+
*
|
|
14
|
+
* Every tool resolves the corresponding plugin script
|
|
15
|
+
* (`plugins/ruflo-metaharness/scripts/<X>.mjs`) via the same locator
|
|
16
|
+
* the commands/metaharness.ts dispatcher uses, then spawns it with
|
|
17
|
+
* `--format json` and parses the response.
|
|
18
|
+
*
|
|
19
|
+
* ADR-150 ARCHITECTURAL CONSTRAINT
|
|
20
|
+
* --------------------------------
|
|
21
|
+
* This file has ZERO static `@metaharness/*` imports. All metaharness
|
|
22
|
+
* invocation stays in the plugin scripts behind the `_harness.mjs`
|
|
23
|
+
* subprocess bridge. When the plugin scripts aren't reachable at
|
|
24
|
+
* runtime, each tool returns a structured `{ degraded: true }` payload
|
|
25
|
+
* — never throws.
|
|
26
|
+
*
|
|
27
|
+
* @module @claude-flow/cli/mcp-tools/metaharness
|
|
28
|
+
*/
|
|
29
|
+
import { getProjectCwd } from './types.js';
|
|
30
|
+
import { spawn } from 'node:child_process';
|
|
31
|
+
import { existsSync } from 'node:fs';
|
|
32
|
+
import { join, dirname, resolve } from 'node:path';
|
|
33
|
+
import { fileURLToPath } from 'node:url';
|
|
34
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
35
|
+
/**
|
|
36
|
+
* Walk up from this module to find plugins/ruflo-metaharness/scripts/.
|
|
37
|
+
* Handles three install layouts (mirrors commands/metaharness.ts).
|
|
38
|
+
*/
|
|
39
|
+
function locatePluginScripts() {
|
|
40
|
+
const candidates = [];
|
|
41
|
+
let p = resolve(__dirname);
|
|
42
|
+
for (let i = 0; i < 8; i++) {
|
|
43
|
+
candidates.push(join(p, 'plugins', 'ruflo-metaharness', 'scripts'));
|
|
44
|
+
candidates.push(join(p, '..', 'plugins', 'ruflo-metaharness', 'scripts'));
|
|
45
|
+
p = dirname(p);
|
|
46
|
+
}
|
|
47
|
+
const cwd = getProjectCwd();
|
|
48
|
+
candidates.push(join(cwd, 'plugins', 'ruflo-metaharness', 'scripts'));
|
|
49
|
+
candidates.push(join(cwd, 'node_modules', '@claude-flow', 'cli', 'plugins', 'ruflo-metaharness', 'scripts'));
|
|
50
|
+
for (const c of candidates) {
|
|
51
|
+
if (existsSync(join(c, '_harness.mjs')))
|
|
52
|
+
return c;
|
|
53
|
+
}
|
|
54
|
+
return null;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Result of running a metaharness plugin script.
|
|
58
|
+
*
|
|
59
|
+
* SUCCESS SEMANTICS (iter 44 — fix for iter-43-flagged bug)
|
|
60
|
+
* `success` is computed from the canonical signal: exitCode === 0.
|
|
61
|
+
*
|
|
62
|
+
* Three observable cases:
|
|
63
|
+
* 1. exitCode 0 + valid JSON → success: true, degraded: false
|
|
64
|
+
* (happy path; data is the script's JSON output)
|
|
65
|
+
*
|
|
66
|
+
* 2. exitCode 0 + degraded payload → success: true, degraded: true
|
|
67
|
+
* (ADR-150 constraint #3 — upstream `@metaharness/*` absent, script
|
|
68
|
+
* emits `{degraded:true, reason:"metaharness-not-available"}` and
|
|
69
|
+
* exits 0 so ruflo stays operational. `success: true` because the
|
|
70
|
+
* script DID run as designed; the agent reads `degraded: true` to
|
|
71
|
+
* know the dep was missing.)
|
|
72
|
+
*
|
|
73
|
+
* 3. exitCode != 0 → success: false
|
|
74
|
+
* Two sub-cases:
|
|
75
|
+
* a. exitCode 1 with alert.triggered JSON → intentional alert
|
|
76
|
+
* failure (e.g. --alert-on-fit-below 70). Agents read
|
|
77
|
+
* `data.alert.triggered` for the reason.
|
|
78
|
+
* b. exitCode 2 with stderr-only → user error (bad arg).
|
|
79
|
+
* `data` is null because no JSON was on stdout.
|
|
80
|
+
*
|
|
81
|
+
* BEFORE iter 44 `success` was computed as `!degraded`, which collapsed
|
|
82
|
+
* case 3b into success: true / exitCode: 2 — contradictory.
|
|
83
|
+
*/
|
|
84
|
+
function runScript(scriptName, args) {
|
|
85
|
+
return new Promise((resolve) => {
|
|
86
|
+
const dir = locatePluginScripts();
|
|
87
|
+
if (!dir) {
|
|
88
|
+
resolve({
|
|
89
|
+
exitCode: 0, stdout: '', json: { degraded: true, reason: 'plugin-not-found' },
|
|
90
|
+
degraded: true, success: true, // plugin absent → equivalent to case 2
|
|
91
|
+
});
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
const scriptPath = join(dir, scriptName);
|
|
95
|
+
const argv = [...args];
|
|
96
|
+
if (!argv.includes('--format'))
|
|
97
|
+
argv.push('--format', 'json');
|
|
98
|
+
const p = spawn('node', [scriptPath, ...argv], {
|
|
99
|
+
stdio: ['ignore', 'pipe', 'pipe'],
|
|
100
|
+
env: process.env,
|
|
101
|
+
});
|
|
102
|
+
let stdout = '';
|
|
103
|
+
p.stdout?.on('data', (d) => { stdout += d.toString(); });
|
|
104
|
+
p.stderr?.on('data', () => { });
|
|
105
|
+
const timer = setTimeout(() => { try {
|
|
106
|
+
p.kill('SIGTERM');
|
|
107
|
+
}
|
|
108
|
+
catch { /* ignore */ } }, 120_000);
|
|
109
|
+
p.on('close', (code) => {
|
|
110
|
+
clearTimeout(timer);
|
|
111
|
+
let json = null;
|
|
112
|
+
const m = /\{[\s\S]*\}/.exec(stdout);
|
|
113
|
+
if (m) {
|
|
114
|
+
try {
|
|
115
|
+
json = JSON.parse(m[0]);
|
|
116
|
+
}
|
|
117
|
+
catch { /* leave null */ }
|
|
118
|
+
}
|
|
119
|
+
const looksDegraded = !!(json && typeof json === 'object' && json.degraded === true);
|
|
120
|
+
const exitCode = code ?? 0;
|
|
121
|
+
// iter 44 — success now reflects exit code, not the degraded marker.
|
|
122
|
+
// exit 0 = script ran as designed (whether the result was happy
|
|
123
|
+
// data or a graceful-degradation payload). exit != 0 = something
|
|
124
|
+
// went wrong (intentional alert OR user/system error).
|
|
125
|
+
const success = exitCode === 0;
|
|
126
|
+
resolve({ exitCode, stdout, json, degraded: looksDegraded, success });
|
|
127
|
+
});
|
|
128
|
+
p.on('error', () => {
|
|
129
|
+
clearTimeout(timer);
|
|
130
|
+
resolve({
|
|
131
|
+
exitCode: 127, stdout, json: { degraded: true, reason: 'spawn-failed' },
|
|
132
|
+
degraded: true, success: false,
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* iter 46 — success-semantic footnote appended to every tool description
|
|
139
|
+
* so agents reading the registry know how to interpret the return shape.
|
|
140
|
+
* Reflects the iter-44 fix: `success` derives from exitCode, not from the
|
|
141
|
+
* degraded marker. Three observable cases an agent can branch on.
|
|
142
|
+
*/
|
|
143
|
+
const MCP_SUCCESS_SEMANTIC = '[Return shape: {success, data, degraded, exitCode}. success===true iff exitCode===0 ' +
|
|
144
|
+
'(includes graceful-degradation path where dep is absent — check degraded for that). ' +
|
|
145
|
+
'success===false with exitCode===1 = intentional alert exit (read data.alert.triggered). ' +
|
|
146
|
+
'success===false with exitCode===2 = input error (data is null).]';
|
|
147
|
+
export const metaharnessTools = [
|
|
148
|
+
{
|
|
149
|
+
name: 'metaharness_score',
|
|
150
|
+
description: 'ADR-150 — 5-dimension harness readiness scorecard from `metaharness score <path>` (harnessFit / compileConfidence / taskCoverage / toolSafety / memoryUsefulness + estCostPerRunUsd). Pure-read subprocess; graceful degradation when metaharness optional dep absent. Use when you need an evidence-based readiness signal before recommending the user run `ruflo metaharness mint`; reading the repo manually is wrong because the 5-dim score includes signals (cost-per-run, MCP surface safety) that aren\'t obvious from source. ' + MCP_SUCCESS_SEMANTIC,
|
|
151
|
+
category: 'metaharness',
|
|
152
|
+
inputSchema: {
|
|
153
|
+
type: 'object',
|
|
154
|
+
properties: {
|
|
155
|
+
path: { type: 'string', description: 'Repo path to score (default: cwd)', default: '.' },
|
|
156
|
+
alertOnFitBelow: { type: 'number', description: 'Set to make the tool flag harnessFit < N (informational only; tool result has alert.triggered field)' },
|
|
157
|
+
},
|
|
158
|
+
},
|
|
159
|
+
handler: async (input) => {
|
|
160
|
+
const path = input.path || '.';
|
|
161
|
+
const args = ['--path', path];
|
|
162
|
+
if (input.alertOnFitBelow !== undefined)
|
|
163
|
+
args.push('--alert-on-fit-below', String(input.alertOnFitBelow));
|
|
164
|
+
const r = await runScript('score.mjs', args);
|
|
165
|
+
return { success: r.success, data: r.json, degraded: r.degraded, exitCode: r.exitCode };
|
|
166
|
+
},
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
name: 'metaharness_genome',
|
|
170
|
+
description: 'ADR-150 — 7-section categorical readiness report from `metaharness genome <path>` (repo_type / agent_topology / risk_score / mcp_surface / test_confidence / publish_readiness). Use when you need the categorical view (vs numeric score). Pair with metaharness_score for the full readiness picture — score-alone is wrong because two harnesses with the same harnessFit can have very different agent_topology and mcp_surface. ' + MCP_SUCCESS_SEMANTIC,
|
|
171
|
+
category: 'metaharness',
|
|
172
|
+
inputSchema: {
|
|
173
|
+
type: 'object',
|
|
174
|
+
properties: {
|
|
175
|
+
path: { type: 'string', description: 'Repo path to analyze (default: cwd)', default: '.' },
|
|
176
|
+
alertOnRiskAbove: { type: 'number', description: 'Set to flag risk_score > N' },
|
|
177
|
+
},
|
|
178
|
+
},
|
|
179
|
+
handler: async (input) => {
|
|
180
|
+
const path = input.path || '.';
|
|
181
|
+
const args = ['--path', path];
|
|
182
|
+
if (input.alertOnRiskAbove !== undefined)
|
|
183
|
+
args.push('--alert-on-risk-above', String(input.alertOnRiskAbove));
|
|
184
|
+
const r = await runScript('genome.mjs', args);
|
|
185
|
+
return { success: r.success, data: r.json, degraded: r.degraded, exitCode: r.exitCode };
|
|
186
|
+
},
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
name: 'metaharness_mcp_scan',
|
|
190
|
+
description: 'ADR-150 — static security scan of `.mcp/servers.json` + `.harness/claims.json` via `harness mcp-scan <path>`. Reads only; no dispatch. Use when you are about to expose a new MCP server config to humans/agents. Eyeballing the JSON is wrong because the scan catches policy regressions (capability grants, audit gaps) that humans miss. ' + MCP_SUCCESS_SEMANTIC,
|
|
191
|
+
category: 'metaharness',
|
|
192
|
+
inputSchema: {
|
|
193
|
+
type: 'object',
|
|
194
|
+
properties: {
|
|
195
|
+
path: { type: 'string', description: 'Repo path with .mcp/servers.json (default: cwd)', default: '.' },
|
|
196
|
+
failOn: { type: 'string', enum: ['low', 'medium', 'high'], description: 'Severity floor for tool.alert.triggered (default: high)', default: 'high' },
|
|
197
|
+
},
|
|
198
|
+
},
|
|
199
|
+
handler: async (input) => {
|
|
200
|
+
const path = input.path || '.';
|
|
201
|
+
const failOn = input.failOn || 'high';
|
|
202
|
+
const r = await runScript('mcp-scan.mjs', ['--path', path, '--fail-on', failOn]);
|
|
203
|
+
return { success: r.success, data: r.json, degraded: r.degraded, exitCode: r.exitCode };
|
|
204
|
+
},
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
name: 'metaharness_threat_model',
|
|
208
|
+
description: 'ADR-150 — enterprise-grade threat model from `harness threat-model <path>`. Returns worst-severity verdict (clean/low/medium/high) + categorized findings suitable for sharing with infosec. Use when you need a sharable infosec-grade verdict; a one-line summary is wrong because compliance reviewers want the per-category breakdown. ' + MCP_SUCCESS_SEMANTIC,
|
|
209
|
+
category: 'metaharness',
|
|
210
|
+
inputSchema: {
|
|
211
|
+
type: 'object',
|
|
212
|
+
properties: {
|
|
213
|
+
path: { type: 'string', description: 'Repo path (default: cwd)', default: '.' },
|
|
214
|
+
failOn: { type: 'string', enum: ['clean', 'low', 'medium', 'high'], description: 'Severity floor for tool.alert.triggered (default: high)', default: 'high' },
|
|
215
|
+
},
|
|
216
|
+
},
|
|
217
|
+
handler: async (input) => {
|
|
218
|
+
const path = input.path || '.';
|
|
219
|
+
const failOn = input.failOn || 'high';
|
|
220
|
+
const r = await runScript('threat-model.mjs', ['--path', path, '--fail-on', failOn]);
|
|
221
|
+
return { success: r.success, data: r.json, degraded: r.degraded, exitCode: r.exitCode };
|
|
222
|
+
},
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
name: 'metaharness_oia_audit',
|
|
226
|
+
description: 'ADR-150 — composite weekly audit. Bundles oia-manifest + threat-model + mcp-scan into one timestamped record persisted to `metaharness-audit` memory namespace (or --dry-run to skip persistence). Use when you want to seed periodic drift detection (pair with metaharness_drift_from_history). Running the 3 sub-audits separately is wrong because you lose the composite worst-severity rollup and the timestamped record that drift detection needs to compare against. ' + MCP_SUCCESS_SEMANTIC,
|
|
227
|
+
category: 'metaharness',
|
|
228
|
+
inputSchema: {
|
|
229
|
+
type: 'object',
|
|
230
|
+
properties: {
|
|
231
|
+
path: { type: 'string', description: 'Repo path (default: cwd)', default: '.' },
|
|
232
|
+
dryRun: { type: 'boolean', description: 'Skip memory persistence — local-only run', default: false },
|
|
233
|
+
alertOnWorst: { type: 'string', enum: ['clean', 'low', 'medium', 'high'], description: 'Composite worst-severity floor for tool.alert.triggered' },
|
|
234
|
+
},
|
|
235
|
+
},
|
|
236
|
+
handler: async (input) => {
|
|
237
|
+
const path = input.path || '.';
|
|
238
|
+
const args = ['--path', path];
|
|
239
|
+
if (input.dryRun === true)
|
|
240
|
+
args.push('--dry-run');
|
|
241
|
+
if (input.alertOnWorst !== undefined)
|
|
242
|
+
args.push('--alert-on-worst', String(input.alertOnWorst));
|
|
243
|
+
const r = await runScript('oia-audit.mjs', args);
|
|
244
|
+
return { success: r.success, data: r.json, degraded: r.degraded, exitCode: r.exitCode };
|
|
245
|
+
},
|
|
246
|
+
},
|
|
247
|
+
{
|
|
248
|
+
name: 'metaharness_audit_list',
|
|
249
|
+
description: 'ADR-150 iter 16 — list timestamped records from the `metaharness-audit` memory namespace. Use when you need to discover which audit keys exist before running metaharness_audit_trend. Guessing key names is wrong because timestamps include sub-second precision; pair with metaharness_audit_trend by passing the returned key. ' + MCP_SUCCESS_SEMANTIC,
|
|
250
|
+
category: 'metaharness',
|
|
251
|
+
inputSchema: {
|
|
252
|
+
type: 'object',
|
|
253
|
+
properties: {
|
|
254
|
+
limit: { type: 'number', description: 'Max records to return, newest first (default: 20)', default: 20 },
|
|
255
|
+
since: { type: 'string', description: 'Filter to last N(h|d|w|m), e.g. "30d" for last 30 days' },
|
|
256
|
+
},
|
|
257
|
+
},
|
|
258
|
+
handler: async (input) => {
|
|
259
|
+
const args = [];
|
|
260
|
+
if (input.limit !== undefined)
|
|
261
|
+
args.push('--limit', String(input.limit));
|
|
262
|
+
if (input.since !== undefined)
|
|
263
|
+
args.push('--since', String(input.since));
|
|
264
|
+
const r = await runScript('audit-list.mjs', args);
|
|
265
|
+
return { success: r.success, data: r.json, degraded: r.degraded, exitCode: r.exitCode };
|
|
266
|
+
},
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
name: 'metaharness_similarity',
|
|
270
|
+
description: 'ADR-152 §3.1 — weighted similarity between two harness fingerprints (genome + score JSON). Returns overall ∈ [0,1] plus per-component breakdown (cosine over 9 numerics, categorical over 4 enums, jaccard over agent_topology). Pure-TS, zero `@metaharness/*` dep. Use when you need to (a) rank candidate templates against a target repo, (b) decide fork-vs-scaffold, or (c) feed ADR-151 §3.2 Recommender / §3.3 Drift / §3.5 Plugin Compat. Hand-comparing genome fields is wrong because the weighted blend (cosine + categorical + jaccard) reproduces human judgment on the spike-similarity invariants. ' + MCP_SUCCESS_SEMANTIC,
|
|
271
|
+
category: 'metaharness',
|
|
272
|
+
inputSchema: {
|
|
273
|
+
type: 'object',
|
|
274
|
+
properties: {
|
|
275
|
+
aFile: { type: 'string', description: 'Path to harness A genome+score JSON file (mutually exclusive with aKey)' },
|
|
276
|
+
bFile: { type: 'string', description: 'Path to harness B genome+score JSON file (mutually exclusive with bKey)' },
|
|
277
|
+
aKey: { type: 'string', description: 'Memory key for harness A in `metaharness-audit` namespace (mutually exclusive with aFile)' },
|
|
278
|
+
bKey: { type: 'string', description: 'Memory key for harness B in `metaharness-audit` namespace (mutually exclusive with bFile)' },
|
|
279
|
+
perDimension: { type: 'boolean', description: 'Include per-dimension contribution breakdown (used by ADR-151 §3.2 Recommender)', default: false },
|
|
280
|
+
alertBelow: { type: 'number', description: 'Set tool.alert.triggered when overall < N (used by ADR-151 §3.3 Drift Detection)' },
|
|
281
|
+
},
|
|
282
|
+
},
|
|
283
|
+
handler: async (input) => {
|
|
284
|
+
const args = [];
|
|
285
|
+
if (input.aFile)
|
|
286
|
+
args.push('--a', String(input.aFile));
|
|
287
|
+
if (input.bFile)
|
|
288
|
+
args.push('--b', String(input.bFile));
|
|
289
|
+
if (input.aKey)
|
|
290
|
+
args.push('--a-key', String(input.aKey));
|
|
291
|
+
if (input.bKey)
|
|
292
|
+
args.push('--b-key', String(input.bKey));
|
|
293
|
+
if (input.perDimension === true)
|
|
294
|
+
args.push('--per-dimension');
|
|
295
|
+
if (input.alertBelow !== undefined)
|
|
296
|
+
args.push('--alert-below', String(input.alertBelow));
|
|
297
|
+
const r = await runScript('similarity.mjs', args);
|
|
298
|
+
return { success: r.success, data: r.json, degraded: r.degraded, exitCode: r.exitCode };
|
|
299
|
+
},
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
name: 'metaharness_drift_from_history',
|
|
303
|
+
description: 'iter 53 — one-command drift detection. Composes audit-list + oia-audit + audit-trend: finds the most recent record in `metaharness-audit` namespace (or skips that with `baselineKey`/`baselineFile`), runs a fresh audit against the current path, diffs via ADR-152 §3.1 similarity, alerts when structural similarity falls below `threshold`. Use when you need a structured drift report before recommending the user act on regressions; calling the 3 sub-tools separately is wrong because you lose the composed alert ladder + fastpath optimization (iter 66/67: `baselineKey` ~14x faster, `baselineFile` ~19x faster, ideal for CI artifact pipelines). ' + MCP_SUCCESS_SEMANTIC,
|
|
304
|
+
category: 'metaharness',
|
|
305
|
+
inputSchema: {
|
|
306
|
+
type: 'object',
|
|
307
|
+
properties: {
|
|
308
|
+
path: { type: 'string', description: 'Repo path to audit (default: cwd)', default: '.' },
|
|
309
|
+
baselineSince: { type: 'string', description: 'Use a baseline at least N(h|d|w) old, e.g. "7d" — skips drift against ultra-recent audits' },
|
|
310
|
+
baselineKey: { type: 'string', description: 'iter 66 — explicit memory key for the baseline audit. Skips audit-list (no ONNX warmup). Get from `metaharness_audit_list` first.' },
|
|
311
|
+
baselineFile: { type: 'string', description: 'iter 67 — file path to a saved oia-audit JSON. Skips audit-list AND memory roundtrip. Ideal for CI artifact pipelines (e.g., comparing this run vs a downloaded prior-run artifact).' },
|
|
312
|
+
threshold: { type: 'number', description: 'Alert when structural similarity < N. Default 0.95.', default: 0.95 },
|
|
313
|
+
alertOnNewSeverity: { type: 'string', enum: ['info', 'low', 'medium', 'warn', 'high', 'error', 'critical'], description: 'iter 78 — ALSO alert when any introduced finding meets or exceeds this severity. Orthogonal to `threshold`: a CRITICAL finding triggers even if structural similarity > threshold.' },
|
|
314
|
+
dryRun: { type: 'boolean', description: 'Skip persisting the fresh audit to memory', default: false },
|
|
315
|
+
},
|
|
316
|
+
},
|
|
317
|
+
handler: async (input) => {
|
|
318
|
+
const args = [];
|
|
319
|
+
args.push('--path', String(input.path ?? '.'));
|
|
320
|
+
if (input.baselineSince)
|
|
321
|
+
args.push('--baseline-since', String(input.baselineSince));
|
|
322
|
+
if (input.baselineKey)
|
|
323
|
+
args.push('--baseline-key', String(input.baselineKey));
|
|
324
|
+
if (input.baselineFile)
|
|
325
|
+
args.push('--baseline-file', String(input.baselineFile));
|
|
326
|
+
if (input.threshold !== undefined)
|
|
327
|
+
args.push('--threshold', String(input.threshold));
|
|
328
|
+
if (input.alertOnNewSeverity)
|
|
329
|
+
args.push('--alert-on-new-severity', String(input.alertOnNewSeverity));
|
|
330
|
+
if (input.dryRun === true)
|
|
331
|
+
args.push('--dry-run');
|
|
332
|
+
const r = await runScript('drift-from-history.mjs', args);
|
|
333
|
+
return { success: r.success, data: r.json, degraded: r.degraded, exitCode: r.exitCode };
|
|
334
|
+
},
|
|
335
|
+
},
|
|
336
|
+
{
|
|
337
|
+
name: 'metaharness_audit_trend',
|
|
338
|
+
description: 'ADR-150 iter 15 — diff two oia-audit records (drift detection). Accepts EITHER memory keys (run metaharness_audit_list first to discover them) OR direct file paths (useful for diffing CI artifacts). Surfaces composite worst-severity delta + per-component status change + introduced/cleared findings + (iter 38) ADR-152 §3.1 structural distance when both records carry a fingerprint. Use when you have two specific audits to compare; pair with metaharness_audit_list for key discovery. Skipping this tool and eyeballing two JSONs is wrong because the structural-distance verdict (near-identical / minor-drift / moderate-drift / major-drift) is the operationally-useful summary. ' + MCP_SUCCESS_SEMANTIC,
|
|
339
|
+
category: 'metaharness',
|
|
340
|
+
inputSchema: {
|
|
341
|
+
type: 'object',
|
|
342
|
+
properties: {
|
|
343
|
+
baselineKey: { type: 'string', description: 'Memory key for the older audit (mutually exclusive with baselineFile)' },
|
|
344
|
+
currentKey: { type: 'string', description: 'Memory key for the newer audit (mutually exclusive with currentFile)' },
|
|
345
|
+
baselineFile: { type: 'string', description: 'iter 46 — file path to older audit JSON (mutually exclusive with baselineKey)' },
|
|
346
|
+
currentFile: { type: 'string', description: 'iter 46 — file path to newer audit JSON (mutually exclusive with currentKey)' },
|
|
347
|
+
alertOnWorsening: { type: 'boolean', description: 'Set tool.alert.triggered when composite worst severity worsened', default: false },
|
|
348
|
+
alertOnDistanceBelow: { type: 'number', description: 'iter 38 — set tool.alert.triggered when structural similarity falls below N (uses fingerprint field added in iter 38; older records emit verdict=unavailable)' },
|
|
349
|
+
},
|
|
350
|
+
// No required[] — caller picks key OR file inputs. The script
|
|
351
|
+
// emits a graceful degraded payload if neither is supplied.
|
|
352
|
+
},
|
|
353
|
+
handler: async (input) => {
|
|
354
|
+
const args = [];
|
|
355
|
+
if (input.baselineKey)
|
|
356
|
+
args.push('--baseline-key', String(input.baselineKey));
|
|
357
|
+
if (input.currentKey)
|
|
358
|
+
args.push('--current-key', String(input.currentKey));
|
|
359
|
+
if (input.baselineFile)
|
|
360
|
+
args.push('--baseline', String(input.baselineFile));
|
|
361
|
+
if (input.currentFile)
|
|
362
|
+
args.push('--current', String(input.currentFile));
|
|
363
|
+
if (input.alertOnWorsening === true)
|
|
364
|
+
args.push('--alert-on-worsening');
|
|
365
|
+
if (input.alertOnDistanceBelow !== undefined)
|
|
366
|
+
args.push('--alert-on-distance-below', String(input.alertOnDistanceBelow));
|
|
367
|
+
const r = await runScript('audit-trend.mjs', args);
|
|
368
|
+
return { success: r.success, data: r.json, degraded: r.degraded, exitCode: r.exitCode };
|
|
369
|
+
},
|
|
370
|
+
},
|
|
371
|
+
];
|
|
372
|
+
//# sourceMappingURL=metaharness-tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metaharness-tools.js","sourceRoot":"","sources":["../../../src/mcp-tools/metaharness-tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../../../src/plugins/store/discovery.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EACV,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EAElB,MAAM,YAAY,CAAC;AAmCpB;;GAEG;AACH;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,mDAAmD,CAAC;AAElF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,mDAAmD,CAAC;AAEnF,eAAO,MAAM,2BAA2B,EAAE,iBAkCzC,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,KAAK,CAA2E;gBAE5E,MAAM,GAAE,OAAO,CAAC,iBAAiB,CAAM;IAInD;;OAEG;IACG,gBAAgB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAsF7E;;OAEG;YACW,uBAAuB;
|
|
1
|
+
{"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../../../src/plugins/store/discovery.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EACV,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EAElB,MAAM,YAAY,CAAC;AAmCpB;;GAEG;AACH;;;;;;GAMG;AACH,eAAO,MAAM,iBAAiB,mDAAmD,CAAC;AAElF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,mDAAmD,CAAC;AAEnF,eAAO,MAAM,2BAA2B,EAAE,iBAkCzC,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,qBAAa,sBAAsB;IACjC,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,KAAK,CAA2E;gBAE5E,MAAM,GAAE,OAAO,CAAC,iBAAiB,CAAM;IAInD;;OAEG;IACG,gBAAgB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAsF7E;;OAEG;YACW,uBAAuB;IA6DrC;;OAEG;IACH,OAAO,CAAC,cAAc;IAk1BtB;;OAEG;YACW,uBAAuB;IAyErC;;;;;;;;;;OAUG;YACW,uBAAuB;IAoBrC;;OAEG;IACH,cAAc,IAAI,mBAAmB,EAAE;IAIvC;;OAEG;IACH,WAAW,CAAC,QAAQ,EAAE,mBAAmB,GAAG,IAAI;IAIhD;;OAEG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IASrC;;OAEG;IACH,UAAU,IAAI,IAAI;IAIlB;;OAEG;IACH,aAAa,IAAI;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE;CAM3D;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAC1C,MAAM,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,GAClC,sBAAsB,CAExB"}
|
|
@@ -193,6 +193,9 @@ export class PluginDiscoveryService {
|
|
|
193
193
|
{ id: 'integrations', name: 'Integrations', description: 'Third-party integrations', pluginCount: 2 },
|
|
194
194
|
{ id: 'agents', name: 'Agents', description: 'Custom agent types', pluginCount: 1 },
|
|
195
195
|
{ id: 'iot', name: 'IoT', description: 'IoT device management and fleet orchestration', pluginCount: 1 },
|
|
196
|
+
// ADR-150 — MetaHarness-generated standalone harnesses
|
|
197
|
+
// surface alongside plugins. Filter via `--type harness`.
|
|
198
|
+
{ id: 'harness', name: 'Harness', description: 'MetaHarness-generated standalone agent harnesses (ADR-150)', pluginCount: 0 },
|
|
196
199
|
],
|
|
197
200
|
authors: [
|
|
198
201
|
{
|