nodebench-mcp 3.0.0 → 3.0.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/dashboard/operatingDashboardHtml.js +2 -1
- package/dist/dashboard/operatingDashboardHtml.js.map +1 -1
- package/dist/dashboard/operatingServer.js +3 -2
- package/dist/dashboard/operatingServer.js.map +1 -1
- package/dist/db.js +51 -3
- package/dist/db.js.map +1 -1
- package/dist/index.js +13 -16
- package/dist/index.js.map +1 -1
- package/dist/packageInfo.d.ts +3 -0
- package/dist/packageInfo.js +32 -0
- package/dist/packageInfo.js.map +1 -0
- package/dist/sandboxApi.js +2 -1
- package/dist/sandboxApi.js.map +1 -1
- package/dist/tools/boilerplateTools.js +10 -9
- package/dist/tools/boilerplateTools.js.map +1 -1
- package/dist/tools/documentationTools.js +2 -1
- package/dist/tools/documentationTools.js.map +1 -1
- package/dist/tools/progressiveDiscoveryTools.js +2 -1
- package/dist/tools/progressiveDiscoveryTools.js.map +1 -1
- package/dist/tools/toolRegistry.js +11 -0
- package/dist/tools/toolRegistry.js.map +1 -1
- package/dist/toolsetRegistry.js +74 -1
- package/dist/toolsetRegistry.js.map +1 -1
- package/package.json +4 -3
- package/dist/__tests__/analytics.test.d.ts +0 -11
- package/dist/__tests__/analytics.test.js +0 -546
- package/dist/__tests__/analytics.test.js.map +0 -1
- package/dist/__tests__/architectComplex.test.d.ts +0 -1
- package/dist/__tests__/architectComplex.test.js +0 -373
- package/dist/__tests__/architectComplex.test.js.map +0 -1
- package/dist/__tests__/architectSmoke.test.d.ts +0 -1
- package/dist/__tests__/architectSmoke.test.js +0 -92
- package/dist/__tests__/architectSmoke.test.js.map +0 -1
- package/dist/__tests__/audit-registry.d.ts +0 -1
- package/dist/__tests__/audit-registry.js +0 -60
- package/dist/__tests__/audit-registry.js.map +0 -1
- package/dist/__tests__/batchAutopilot.test.d.ts +0 -8
- package/dist/__tests__/batchAutopilot.test.js +0 -218
- package/dist/__tests__/batchAutopilot.test.js.map +0 -1
- package/dist/__tests__/cliSubcommands.test.d.ts +0 -1
- package/dist/__tests__/cliSubcommands.test.js +0 -138
- package/dist/__tests__/cliSubcommands.test.js.map +0 -1
- package/dist/__tests__/comparativeBench.test.d.ts +0 -1
- package/dist/__tests__/comparativeBench.test.js +0 -722
- package/dist/__tests__/comparativeBench.test.js.map +0 -1
- package/dist/__tests__/critterCalibrationEval.d.ts +0 -8
- package/dist/__tests__/critterCalibrationEval.js +0 -370
- package/dist/__tests__/critterCalibrationEval.js.map +0 -1
- package/dist/__tests__/dynamicLoading.test.d.ts +0 -1
- package/dist/__tests__/dynamicLoading.test.js +0 -280
- package/dist/__tests__/dynamicLoading.test.js.map +0 -1
- package/dist/__tests__/embeddingProvider.test.d.ts +0 -1
- package/dist/__tests__/embeddingProvider.test.js +0 -86
- package/dist/__tests__/embeddingProvider.test.js.map +0 -1
- package/dist/__tests__/evalDatasetBench.test.d.ts +0 -1
- package/dist/__tests__/evalDatasetBench.test.js +0 -738
- package/dist/__tests__/evalDatasetBench.test.js.map +0 -1
- package/dist/__tests__/evalHarness.test.d.ts +0 -1
- package/dist/__tests__/evalHarness.test.js +0 -1107
- package/dist/__tests__/evalHarness.test.js.map +0 -1
- package/dist/__tests__/fixtures/bfcl_v3_long_context.sample.json +0 -264
- package/dist/__tests__/fixtures/generateBfclLongContextFixture.d.ts +0 -10
- package/dist/__tests__/fixtures/generateBfclLongContextFixture.js +0 -135
- package/dist/__tests__/fixtures/generateBfclLongContextFixture.js.map +0 -1
- package/dist/__tests__/fixtures/generateSwebenchVerifiedFixture.d.ts +0 -14
- package/dist/__tests__/fixtures/generateSwebenchVerifiedFixture.js +0 -189
- package/dist/__tests__/fixtures/generateSwebenchVerifiedFixture.js.map +0 -1
- package/dist/__tests__/fixtures/generateToolbenchInstructionFixture.d.ts +0 -16
- package/dist/__tests__/fixtures/generateToolbenchInstructionFixture.js +0 -154
- package/dist/__tests__/fixtures/generateToolbenchInstructionFixture.js.map +0 -1
- package/dist/__tests__/fixtures/swebench_verified.sample.json +0 -162
- package/dist/__tests__/fixtures/toolbench_instruction.sample.json +0 -109
- package/dist/__tests__/forecastingDogfood.test.d.ts +0 -9
- package/dist/__tests__/forecastingDogfood.test.js +0 -284
- package/dist/__tests__/forecastingDogfood.test.js.map +0 -1
- package/dist/__tests__/forecastingScoring.test.d.ts +0 -9
- package/dist/__tests__/forecastingScoring.test.js +0 -202
- package/dist/__tests__/forecastingScoring.test.js.map +0 -1
- package/dist/__tests__/gaiaCapabilityAudioEval.test.d.ts +0 -15
- package/dist/__tests__/gaiaCapabilityAudioEval.test.js +0 -265
- package/dist/__tests__/gaiaCapabilityAudioEval.test.js.map +0 -1
- package/dist/__tests__/gaiaCapabilityEval.test.d.ts +0 -14
- package/dist/__tests__/gaiaCapabilityEval.test.js +0 -1259
- package/dist/__tests__/gaiaCapabilityEval.test.js.map +0 -1
- package/dist/__tests__/gaiaCapabilityFilesEval.test.d.ts +0 -15
- package/dist/__tests__/gaiaCapabilityFilesEval.test.js +0 -914
- package/dist/__tests__/gaiaCapabilityFilesEval.test.js.map +0 -1
- package/dist/__tests__/gaiaCapabilityMediaEval.test.d.ts +0 -15
- package/dist/__tests__/gaiaCapabilityMediaEval.test.js +0 -1101
- package/dist/__tests__/gaiaCapabilityMediaEval.test.js.map +0 -1
- package/dist/__tests__/helpers/answerMatch.d.ts +0 -41
- package/dist/__tests__/helpers/answerMatch.js +0 -267
- package/dist/__tests__/helpers/answerMatch.js.map +0 -1
- package/dist/__tests__/helpers/textLlm.d.ts +0 -25
- package/dist/__tests__/helpers/textLlm.js +0 -214
- package/dist/__tests__/helpers/textLlm.js.map +0 -1
- package/dist/__tests__/localDashboard.test.d.ts +0 -1
- package/dist/__tests__/localDashboard.test.js +0 -226
- package/dist/__tests__/localDashboard.test.js.map +0 -1
- package/dist/__tests__/multiHopDogfood.test.d.ts +0 -12
- package/dist/__tests__/multiHopDogfood.test.js +0 -303
- package/dist/__tests__/multiHopDogfood.test.js.map +0 -1
- package/dist/__tests__/openDatasetParallelEval.test.d.ts +0 -7
- package/dist/__tests__/openDatasetParallelEval.test.js +0 -209
- package/dist/__tests__/openDatasetParallelEval.test.js.map +0 -1
- package/dist/__tests__/openDatasetParallelEvalGaia.test.d.ts +0 -7
- package/dist/__tests__/openDatasetParallelEvalGaia.test.js +0 -279
- package/dist/__tests__/openDatasetParallelEvalGaia.test.js.map +0 -1
- package/dist/__tests__/openDatasetParallelEvalSwebench.test.d.ts +0 -7
- package/dist/__tests__/openDatasetParallelEvalSwebench.test.js +0 -220
- package/dist/__tests__/openDatasetParallelEvalSwebench.test.js.map +0 -1
- package/dist/__tests__/openDatasetParallelEvalToolbench.test.d.ts +0 -7
- package/dist/__tests__/openDatasetParallelEvalToolbench.test.js +0 -218
- package/dist/__tests__/openDatasetParallelEvalToolbench.test.js.map +0 -1
- package/dist/__tests__/openDatasetPerfComparison.test.d.ts +0 -10
- package/dist/__tests__/openDatasetPerfComparison.test.js +0 -318
- package/dist/__tests__/openDatasetPerfComparison.test.js.map +0 -1
- package/dist/__tests__/openclawDogfood.test.d.ts +0 -23
- package/dist/__tests__/openclawDogfood.test.js +0 -535
- package/dist/__tests__/openclawDogfood.test.js.map +0 -1
- package/dist/__tests__/openclawMessaging.test.d.ts +0 -14
- package/dist/__tests__/openclawMessaging.test.js +0 -232
- package/dist/__tests__/openclawMessaging.test.js.map +0 -1
- package/dist/__tests__/presetRealWorldBench.test.d.ts +0 -1
- package/dist/__tests__/presetRealWorldBench.test.js +0 -859
- package/dist/__tests__/presetRealWorldBench.test.js.map +0 -1
- package/dist/__tests__/tools.test.d.ts +0 -1
- package/dist/__tests__/tools.test.js +0 -3201
- package/dist/__tests__/tools.test.js.map +0 -1
- package/dist/__tests__/toolsetGatingEval.test.d.ts +0 -1
- package/dist/__tests__/toolsetGatingEval.test.js +0 -1099
- package/dist/__tests__/toolsetGatingEval.test.js.map +0 -1
- package/dist/__tests__/traceabilityDogfood.test.d.ts +0 -12
- package/dist/__tests__/traceabilityDogfood.test.js +0 -241
- package/dist/__tests__/traceabilityDogfood.test.js.map +0 -1
- package/dist/__tests__/webmcpTools.test.d.ts +0 -7
- package/dist/__tests__/webmcpTools.test.js +0 -195
- package/dist/__tests__/webmcpTools.test.js.map +0 -1
- package/dist/benchmarks/testProviderBus.d.ts +0 -7
- package/dist/benchmarks/testProviderBus.js +0 -272
- package/dist/benchmarks/testProviderBus.js.map +0 -1
- package/dist/hooks/postCompaction.d.ts +0 -14
- package/dist/hooks/postCompaction.js +0 -51
- package/dist/hooks/postCompaction.js.map +0 -1
- package/dist/security/__tests__/security.test.d.ts +0 -8
- package/dist/security/__tests__/security.test.js +0 -295
- package/dist/security/__tests__/security.test.js.map +0 -1
- package/dist/sync/hyperloopEval.test.d.ts +0 -4
- package/dist/sync/hyperloopEval.test.js +0 -60
- package/dist/sync/hyperloopEval.test.js.map +0 -1
- package/dist/sync/store.test.d.ts +0 -4
- package/dist/sync/store.test.js +0 -43
- package/dist/sync/store.test.js.map +0 -1
- package/dist/tools/documentTools.d.ts +0 -5
- package/dist/tools/documentTools.js +0 -524
- package/dist/tools/documentTools.js.map +0 -1
- package/dist/tools/financialTools.d.ts +0 -10
- package/dist/tools/financialTools.js +0 -403
- package/dist/tools/financialTools.js.map +0 -1
- package/dist/tools/memoryTools.d.ts +0 -5
- package/dist/tools/memoryTools.js +0 -137
- package/dist/tools/memoryTools.js.map +0 -1
- package/dist/tools/planningTools.d.ts +0 -5
- package/dist/tools/planningTools.js +0 -147
- package/dist/tools/planningTools.js.map +0 -1
- package/dist/tools/searchTools.d.ts +0 -5
- package/dist/tools/searchTools.js +0 -145
- package/dist/tools/searchTools.js.map +0 -1
|
@@ -1,373 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Complex end-to-end tests for architect tools — exercises all 3 tools against
|
|
3
|
-
* real files in the monorepo with diverse patterns (React components, backend
|
|
4
|
-
* servers, MCP tool files) to verify accuracy at scale.
|
|
5
|
-
*/
|
|
6
|
-
import { describe, it, expect } from "vitest";
|
|
7
|
-
import { architectTools } from "../tools/architectTools.js";
|
|
8
|
-
import { resolve } from "node:path";
|
|
9
|
-
const callTool = async (name, args) => {
|
|
10
|
-
const tool = architectTools.find((t) => t.name === name);
|
|
11
|
-
if (!tool)
|
|
12
|
-
throw new Error(`Tool not found: ${name}`);
|
|
13
|
-
return tool.handler(args);
|
|
14
|
-
};
|
|
15
|
-
// ── Real files in the monorepo ──────────────────────────────────────────────
|
|
16
|
-
/** React component with useState, useEffect, useRef, useCallback, framer-motion, lazy loading */
|
|
17
|
-
const MAIN_LAYOUT = resolve(import.meta.dirname, "../../../../src/components/MainLayout.tsx");
|
|
18
|
-
/** React component with useState, useEffect, useRef, useMemo, framer-motion, keyboard input */
|
|
19
|
-
const COMMAND_PALETTE = resolve(import.meta.dirname, "../../../../src/components/CommandPalette.tsx");
|
|
20
|
-
/** HTTP server with routes, middleware-like patterns, auth token check */
|
|
21
|
-
const HTTP_SERVER = resolve(import.meta.dirname, "../../../../mcp_tools/gateway_server/httpServer.ts");
|
|
22
|
-
/** MCP tool file — pure Node.js, SQLite, McpTool pattern, no React */
|
|
23
|
-
const SEO_TOOLS = resolve(import.meta.dirname, "../tools/seoTools.ts");
|
|
24
|
-
/** Progressive discovery — hybrid search, complex logic, no React */
|
|
25
|
-
const DISCOVERY_TOOLS = resolve(import.meta.dirname, "../tools/progressiveDiscoveryTools.ts");
|
|
26
|
-
// ── 1. scan_capabilities — React component (MainLayout) ────────────────────
|
|
27
|
-
describe("Architect Tools — Complex E2E: scan_capabilities", () => {
|
|
28
|
-
it("detects React hooks in MainLayout.tsx", async () => {
|
|
29
|
-
const r = (await callTool("scan_capabilities", {
|
|
30
|
-
file_path: MAIN_LAYOUT,
|
|
31
|
-
}));
|
|
32
|
-
// MainLayout imports useState, useEffect, useCallback
|
|
33
|
-
// Note: useRef regex requires `useRef<` (with generic) — MainLayout uses useRef() without generic
|
|
34
|
-
expect(r.state_management.effects).toBeGreaterThan(0); // has useEffect
|
|
35
|
-
expect(r.state_management.callbacks).toBeGreaterThan(0); // has useCallback
|
|
36
|
-
// imports
|
|
37
|
-
expect(r.imports.has_react).toBe(true);
|
|
38
|
-
expect(r.imports.count).toBeGreaterThan(5); // many imports
|
|
39
|
-
// Note: framer-motion was removed in the Jony Ive animation pass; animation check skipped
|
|
40
|
-
});
|
|
41
|
-
it("detects keyboard shortcuts in CommandPalette.tsx", async () => {
|
|
42
|
-
const r = (await callTool("scan_capabilities", {
|
|
43
|
-
file_path: COMMAND_PALETTE,
|
|
44
|
-
}));
|
|
45
|
-
// CommandPalette uses useState, useEffect, useRef, useMemo
|
|
46
|
-
expect(r.state_management.effects).toBeGreaterThan(0);
|
|
47
|
-
expect(r.state_management.memos).toBeGreaterThan(0);
|
|
48
|
-
expect(r.imports.has_react).toBe(true);
|
|
49
|
-
// Note: framer-motion was removed; animation check skipped
|
|
50
|
-
// dynamic lists (.map(() => ...))
|
|
51
|
-
expect(r.rendering_capabilities.dynamic_lists).toBeGreaterThan(0);
|
|
52
|
-
});
|
|
53
|
-
it("detects backend patterns in httpServer.ts", async () => {
|
|
54
|
-
const r = (await callTool("scan_capabilities", {
|
|
55
|
-
file_path: HTTP_SERVER,
|
|
56
|
-
}));
|
|
57
|
-
// No React
|
|
58
|
-
expect(r.imports.has_react).toBe(false);
|
|
59
|
-
expect(r.state_management.boolean_flags).toBe(0);
|
|
60
|
-
expect(r.state_management.effects).toBe(0);
|
|
61
|
-
// Has imports and exports
|
|
62
|
-
expect(r.imports.count).toBeGreaterThan(0);
|
|
63
|
-
// backend file characteristics
|
|
64
|
-
expect(r.file.lines).toBeGreaterThan(50);
|
|
65
|
-
});
|
|
66
|
-
it("detects MCP tool patterns in seoTools.ts", async () => {
|
|
67
|
-
const r = (await callTool("scan_capabilities", {
|
|
68
|
-
file_path: SEO_TOOLS,
|
|
69
|
-
}));
|
|
70
|
-
// No React — pure Node.js tool file
|
|
71
|
-
expect(r.imports.has_react).toBe(false);
|
|
72
|
-
expect(r.state_management.effects).toBe(0);
|
|
73
|
-
// Has named exports (the tools array)
|
|
74
|
-
expect(r.exports.named_exports).toBeGreaterThan(0);
|
|
75
|
-
// Has imports
|
|
76
|
-
expect(r.imports.count).toBeGreaterThan(0);
|
|
77
|
-
// dynamic lists (likely .map calls in the tool logic)
|
|
78
|
-
expect(r.rendering_capabilities.dynamic_lists).toBeGreaterThanOrEqual(0);
|
|
79
|
-
});
|
|
80
|
-
});
|
|
81
|
-
// ── 2. verify_concept_support — concept verification at scale ───────────────
|
|
82
|
-
describe("Architect Tools — Complex E2E: verify_concept_support", () => {
|
|
83
|
-
it("verifies 'React SPA with Routing' against MainLayout → Fully Implemented", async () => {
|
|
84
|
-
const r = (await callTool("verify_concept_support", {
|
|
85
|
-
file_path: MAIN_LAYOUT,
|
|
86
|
-
concept_name: "React SPA with Routing",
|
|
87
|
-
required_signatures: [
|
|
88
|
-
"useState",
|
|
89
|
-
"useEffect",
|
|
90
|
-
"useCallback",
|
|
91
|
-
"useRef",
|
|
92
|
-
"from.*react",
|
|
93
|
-
],
|
|
94
|
-
}));
|
|
95
|
-
expect(r.status).toBe("Fully Implemented");
|
|
96
|
-
expect(r.match_score).toBe("100%");
|
|
97
|
-
expect(r.gap_analysis).toHaveLength(0);
|
|
98
|
-
expect(r.id).toMatch(/^cv_/);
|
|
99
|
-
});
|
|
100
|
-
it.skip("verifies 'Animation System' against MainLayout → detects framer-motion", async () => {
|
|
101
|
-
const r = (await callTool("verify_concept_support", {
|
|
102
|
-
file_path: MAIN_LAYOUT,
|
|
103
|
-
concept_name: "Animation System",
|
|
104
|
-
required_signatures: [
|
|
105
|
-
"framer-motion",
|
|
106
|
-
"AnimatePresence",
|
|
107
|
-
"motion",
|
|
108
|
-
],
|
|
109
|
-
}));
|
|
110
|
-
expect(r.status).toBe("Fully Implemented");
|
|
111
|
-
expect(r.match_score).toBe("100%");
|
|
112
|
-
expect(r.evidence_found).toContain("framer-motion");
|
|
113
|
-
expect(r.evidence_found).toContain("AnimatePresence");
|
|
114
|
-
});
|
|
115
|
-
it("verifies 'WebSocket Support' against MainLayout → Not Implemented", async () => {
|
|
116
|
-
const r = (await callTool("verify_concept_support", {
|
|
117
|
-
file_path: MAIN_LAYOUT,
|
|
118
|
-
concept_name: "WebSocket Support",
|
|
119
|
-
required_signatures: [
|
|
120
|
-
"WebSocket",
|
|
121
|
-
"wss://",
|
|
122
|
-
"socket\\.on",
|
|
123
|
-
"onmessage",
|
|
124
|
-
],
|
|
125
|
-
}));
|
|
126
|
-
expect(r.status).toBe("Not Implemented");
|
|
127
|
-
expect(r.match_score).toBe("0%");
|
|
128
|
-
expect(r.gap_analysis).toHaveLength(4);
|
|
129
|
-
});
|
|
130
|
-
it("verifies 'MCP Tool Pattern' against seoTools → Fully Implemented", async () => {
|
|
131
|
-
const r = (await callTool("verify_concept_support", {
|
|
132
|
-
file_path: SEO_TOOLS,
|
|
133
|
-
concept_name: "MCP Tool Pattern",
|
|
134
|
-
required_signatures: [
|
|
135
|
-
"McpTool",
|
|
136
|
-
"name:",
|
|
137
|
-
"description:",
|
|
138
|
-
"inputSchema",
|
|
139
|
-
"handler",
|
|
140
|
-
],
|
|
141
|
-
}));
|
|
142
|
-
expect(r.status).toBe("Fully Implemented");
|
|
143
|
-
expect(r.match_score).toBe("100%");
|
|
144
|
-
expect(r.evidence_found).toHaveLength(5);
|
|
145
|
-
});
|
|
146
|
-
it("verifies 'Hybrid Search' against progressiveDiscoveryTools → detects search patterns", async () => {
|
|
147
|
-
const r = (await callTool("verify_concept_support", {
|
|
148
|
-
file_path: DISCOVERY_TOOLS,
|
|
149
|
-
concept_name: "Hybrid Search System",
|
|
150
|
-
required_signatures: [
|
|
151
|
-
"hybridSearch",
|
|
152
|
-
"score",
|
|
153
|
-
"keyword|fuzzy|prefix|semantic",
|
|
154
|
-
"WORKFLOW_CHAINS",
|
|
155
|
-
],
|
|
156
|
-
}));
|
|
157
|
-
expect(r.status).toBe("Fully Implemented");
|
|
158
|
-
expect(r.match_score).toBe("100%");
|
|
159
|
-
});
|
|
160
|
-
it("verifies 'GraphQL API' against httpServer → Not Implemented", async () => {
|
|
161
|
-
const r = (await callTool("verify_concept_support", {
|
|
162
|
-
file_path: HTTP_SERVER,
|
|
163
|
-
concept_name: "GraphQL API",
|
|
164
|
-
required_signatures: [
|
|
165
|
-
"typeDefs",
|
|
166
|
-
"resolvers",
|
|
167
|
-
"gql`",
|
|
168
|
-
"graphqlHTTP",
|
|
169
|
-
],
|
|
170
|
-
}));
|
|
171
|
-
expect(r.status).toBe("Not Implemented");
|
|
172
|
-
expect(r.match_score).toBe("0%");
|
|
173
|
-
expect(r.gap_analysis).toHaveLength(4);
|
|
174
|
-
});
|
|
175
|
-
it("handles partial implementation correctly (50-99%)", async () => {
|
|
176
|
-
// CommandPalette has useState, useEffect, useMemo but NOT useReducer or useContext
|
|
177
|
-
const r = (await callTool("verify_concept_support", {
|
|
178
|
-
file_path: COMMAND_PALETTE,
|
|
179
|
-
concept_name: "Advanced State Management",
|
|
180
|
-
required_signatures: [
|
|
181
|
-
"useState",
|
|
182
|
-
"useEffect",
|
|
183
|
-
"useMemo",
|
|
184
|
-
"useReducer",
|
|
185
|
-
"useContext",
|
|
186
|
-
],
|
|
187
|
-
}));
|
|
188
|
-
expect(r.status).toBe("Partially Implemented");
|
|
189
|
-
expect(parseInt(r.match_score)).toBe(60); // 3/5 = 60%
|
|
190
|
-
expect(r.evidence_found).toContain("useState");
|
|
191
|
-
expect(r.evidence_found).toContain("useEffect");
|
|
192
|
-
expect(r.evidence_found).toContain("useMemo");
|
|
193
|
-
expect(r.gap_analysis).toContain("useReducer");
|
|
194
|
-
expect(r.gap_analysis).toContain("useContext");
|
|
195
|
-
});
|
|
196
|
-
});
|
|
197
|
-
// ── 3. Full self-discovery loop: scan → verify → plan ───────────────────────
|
|
198
|
-
describe("Architect Tools — Complex E2E: Full Self-Discovery Loop", () => {
|
|
199
|
-
it("scan → verify → plan for 'Real-time Collaboration' on MainLayout", async () => {
|
|
200
|
-
// Step 1: Scan the file
|
|
201
|
-
const scan = (await callTool("scan_capabilities", {
|
|
202
|
-
file_path: MAIN_LAYOUT,
|
|
203
|
-
}));
|
|
204
|
-
expect(scan.file.lines).toBeGreaterThan(100);
|
|
205
|
-
// Step 2: Verify the concept
|
|
206
|
-
const verify = (await callTool("verify_concept_support", {
|
|
207
|
-
file_path: MAIN_LAYOUT,
|
|
208
|
-
concept_name: "Real-time Collaboration",
|
|
209
|
-
required_signatures: [
|
|
210
|
-
"WebSocket|socket\\.io",
|
|
211
|
-
"cursor.*position|presence",
|
|
212
|
-
"conflict.*resolution|CRDT",
|
|
213
|
-
"broadcast|emit",
|
|
214
|
-
],
|
|
215
|
-
}));
|
|
216
|
-
expect(verify.status).toBe("Not Implemented");
|
|
217
|
-
expect(verify.gap_analysis.length).toBeGreaterThan(0);
|
|
218
|
-
// Step 3: Generate implementation plan from the gaps
|
|
219
|
-
const plan = (await callTool("generate_implementation_plan", {
|
|
220
|
-
concept_name: "Real-time Collaboration",
|
|
221
|
-
missing_signatures: verify.gap_analysis,
|
|
222
|
-
current_context: JSON.stringify({
|
|
223
|
-
has_react: scan.imports.has_react,
|
|
224
|
-
has_effects: scan.state_management.effects > 0,
|
|
225
|
-
has_refs: scan.state_management.refs > 0,
|
|
226
|
-
has_animation: scan.interaction_patterns.animation,
|
|
227
|
-
}),
|
|
228
|
-
target_file: MAIN_LAYOUT,
|
|
229
|
-
}));
|
|
230
|
-
expect(plan.concept).toBe("Real-time Collaboration");
|
|
231
|
-
expect(plan.total_steps).toBe(verify.gap_analysis.length);
|
|
232
|
-
expect(plan.context_provided).toBe(true);
|
|
233
|
-
expect(plan.steps.length).toBe(verify.gap_analysis.length);
|
|
234
|
-
// Each step should have a strategy
|
|
235
|
-
for (const step of plan.steps) {
|
|
236
|
-
expect(step.strategy).toBeTruthy();
|
|
237
|
-
expect(step.requirement).toBeTruthy();
|
|
238
|
-
expect(step.conflicts).toContain("Review current context");
|
|
239
|
-
}
|
|
240
|
-
});
|
|
241
|
-
it("scan → verify → plan for 'Canvas Artifacts' on CommandPalette", async () => {
|
|
242
|
-
// Step 1: Scan
|
|
243
|
-
const scan = (await callTool("scan_capabilities", {
|
|
244
|
-
file_path: COMMAND_PALETTE,
|
|
245
|
-
}));
|
|
246
|
-
// Step 2: Verify
|
|
247
|
-
const verify = (await callTool("verify_concept_support", {
|
|
248
|
-
file_path: COMMAND_PALETTE,
|
|
249
|
-
concept_name: "Canvas Artifacts",
|
|
250
|
-
required_signatures: [
|
|
251
|
-
"canvas|Canvas",
|
|
252
|
-
"getContext\\(['\"]2d",
|
|
253
|
-
"drawImage|fillRect",
|
|
254
|
-
"useRef.*canvas",
|
|
255
|
-
"onMouseDown|onPointerDown",
|
|
256
|
-
],
|
|
257
|
-
}));
|
|
258
|
-
expect(verify.status).toBe("Not Implemented");
|
|
259
|
-
// Step 3: Plan
|
|
260
|
-
const plan = (await callTool("generate_implementation_plan", {
|
|
261
|
-
concept_name: "Canvas Artifacts",
|
|
262
|
-
missing_signatures: verify.gap_analysis,
|
|
263
|
-
current_context: `React component with ${scan.state_management.effects} effects, ${scan.state_management.memos} memos, animation: ${scan.interaction_patterns.animation}`,
|
|
264
|
-
target_file: COMMAND_PALETTE,
|
|
265
|
-
}));
|
|
266
|
-
expect(plan.total_steps).toBe(5);
|
|
267
|
-
expect(plan.estimated_complexity).toBe("medium"); // 5 steps = medium
|
|
268
|
-
expect(plan.workflow).toHaveLength(4);
|
|
269
|
-
});
|
|
270
|
-
it("scan → verify → plan for 'REST API with Auth' on httpServer", async () => {
|
|
271
|
-
// Step 1: Scan
|
|
272
|
-
const scan = (await callTool("scan_capabilities", {
|
|
273
|
-
file_path: HTTP_SERVER,
|
|
274
|
-
}));
|
|
275
|
-
// Step 2: Verify REST API with auth
|
|
276
|
-
const verify = (await callTool("verify_concept_support", {
|
|
277
|
-
file_path: HTTP_SERVER,
|
|
278
|
-
concept_name: "REST API with Authentication",
|
|
279
|
-
required_signatures: [
|
|
280
|
-
"http|express",
|
|
281
|
-
"createServer|listen",
|
|
282
|
-
"JSON\\.parse|json\\(",
|
|
283
|
-
"token|auth|bearer",
|
|
284
|
-
],
|
|
285
|
-
}));
|
|
286
|
-
// httpServer.ts should have most of these
|
|
287
|
-
expect(parseInt(verify.match_score)).toBeGreaterThanOrEqual(75);
|
|
288
|
-
// Step 3: Plan for any gaps
|
|
289
|
-
if (verify.gap_analysis.length > 0) {
|
|
290
|
-
const plan = (await callTool("generate_implementation_plan", {
|
|
291
|
-
concept_name: "REST API with Authentication",
|
|
292
|
-
missing_signatures: verify.gap_analysis,
|
|
293
|
-
current_context: JSON.stringify(scan.backend_patterns),
|
|
294
|
-
target_file: HTTP_SERVER,
|
|
295
|
-
}));
|
|
296
|
-
expect(plan.total_steps).toBe(verify.gap_analysis.length);
|
|
297
|
-
expect(plan.context_provided).toBe(true);
|
|
298
|
-
}
|
|
299
|
-
});
|
|
300
|
-
it("handles zero-gap scenario gracefully (plan with 0 steps)", async () => {
|
|
301
|
-
// Verify something that fully exists
|
|
302
|
-
const verify = (await callTool("verify_concept_support", {
|
|
303
|
-
file_path: SEO_TOOLS,
|
|
304
|
-
concept_name: "MCP Tool Pattern",
|
|
305
|
-
required_signatures: ["McpTool", "handler", "inputSchema"],
|
|
306
|
-
}));
|
|
307
|
-
expect(verify.status).toBe("Fully Implemented");
|
|
308
|
-
expect(verify.gap_analysis).toHaveLength(0);
|
|
309
|
-
// Plan with empty missing_signatures
|
|
310
|
-
const plan = (await callTool("generate_implementation_plan", {
|
|
311
|
-
concept_name: "MCP Tool Pattern",
|
|
312
|
-
missing_signatures: [],
|
|
313
|
-
target_file: SEO_TOOLS,
|
|
314
|
-
}));
|
|
315
|
-
expect(plan.total_steps).toBe(0);
|
|
316
|
-
expect(plan.steps).toHaveLength(0);
|
|
317
|
-
expect(plan.estimated_complexity).toBe("low");
|
|
318
|
-
});
|
|
319
|
-
});
|
|
320
|
-
// ── 4. Edge cases and stress tests ──────────────────────────────────────────
|
|
321
|
-
describe("Architect Tools — Complex E2E: Edge Cases", () => {
|
|
322
|
-
it("scan_capabilities handles large files (progressiveDiscoveryTools)", async () => {
|
|
323
|
-
const r = (await callTool("scan_capabilities", {
|
|
324
|
-
file_path: DISCOVERY_TOOLS,
|
|
325
|
-
}));
|
|
326
|
-
// Large file
|
|
327
|
-
expect(r.file.lines).toBeGreaterThan(200);
|
|
328
|
-
expect(r.file.sizeBytes).toBeGreaterThan(5000);
|
|
329
|
-
// Has exports
|
|
330
|
-
expect(r.exports.named_exports).toBeGreaterThan(0);
|
|
331
|
-
});
|
|
332
|
-
it("verify_concept_support handles regex-heavy signatures", async () => {
|
|
333
|
-
const r = (await callTool("verify_concept_support", {
|
|
334
|
-
file_path: DISCOVERY_TOOLS,
|
|
335
|
-
concept_name: "Search Engine Internals",
|
|
336
|
-
required_signatures: [
|
|
337
|
-
"toLowerCase\\(\\)",
|
|
338
|
-
"for \\(",
|
|
339
|
-
"hybridSearch",
|
|
340
|
-
"WORKFLOW_CHAINS",
|
|
341
|
-
],
|
|
342
|
-
}));
|
|
343
|
-
// Progressive discovery uses toLowerCase, for loops, hybridSearch function, WORKFLOW_CHAINS
|
|
344
|
-
expect(parseInt(r.match_score)).toBe(100);
|
|
345
|
-
});
|
|
346
|
-
it("generate_implementation_plan infers correct strategies for diverse patterns", async () => {
|
|
347
|
-
const r = (await callTool("generate_implementation_plan", {
|
|
348
|
-
concept_name: "Full Stack Feature",
|
|
349
|
-
missing_signatures: [
|
|
350
|
-
"useState",
|
|
351
|
-
"app.post(",
|
|
352
|
-
"db.prepare(",
|
|
353
|
-
"verifyToken",
|
|
354
|
-
"WebSocket",
|
|
355
|
-
"onKeyDown",
|
|
356
|
-
"navigator.clipboard",
|
|
357
|
-
],
|
|
358
|
-
current_context: "Empty file, starting from scratch",
|
|
359
|
-
}));
|
|
360
|
-
expect(r.total_steps).toBe(7);
|
|
361
|
-
expect(r.estimated_complexity).toBe("high"); // 7 steps > 5
|
|
362
|
-
// Verify each strategy maps to the correct category
|
|
363
|
-
const strategies = r.steps.map((s) => s.strategy);
|
|
364
|
-
expect(strategies[0]).toContain("React hook"); // useState
|
|
365
|
-
expect(strategies[1]).toContain("route"); // app.post
|
|
366
|
-
expect(strategies[2]).toContain("database"); // db.prepare
|
|
367
|
-
expect(strategies[3]).toContain("auth"); // verifyToken
|
|
368
|
-
expect(strategies[4]).toContain("WebSocket"); // WebSocket
|
|
369
|
-
expect(strategies[5]).toContain("keyboard"); // onKeyDown
|
|
370
|
-
expect(strategies[6]).toContain("clipboard"); // navigator.clipboard
|
|
371
|
-
});
|
|
372
|
-
});
|
|
373
|
-
//# sourceMappingURL=architectComplex.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"architectComplex.test.js","sourceRoot":"","sources":["../../src/__tests__/architectComplex.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Smoke test for architect tools — runs all 3 tools against real files.
|
|
3
|
-
*/
|
|
4
|
-
import { describe, it, expect } from "vitest";
|
|
5
|
-
import { architectTools } from "../tools/architectTools.js";
|
|
6
|
-
import { resolve } from "node:path";
|
|
7
|
-
const callTool = async (name, args) => {
|
|
8
|
-
const tool = architectTools.find((t) => t.name === name);
|
|
9
|
-
if (!tool)
|
|
10
|
-
throw new Error(`Tool not found: ${name}`);
|
|
11
|
-
return tool.handler(args);
|
|
12
|
-
};
|
|
13
|
-
// Use a known file in the repo
|
|
14
|
-
const FIXTURE_PATH = resolve(import.meta.dirname, "../tools/critterTools.ts");
|
|
15
|
-
describe("Architect Tools — Smoke Tests", () => {
|
|
16
|
-
it("scan_capabilities returns structured capability report", async () => {
|
|
17
|
-
const result = (await callTool("scan_capabilities", {
|
|
18
|
-
file_path: FIXTURE_PATH,
|
|
19
|
-
}));
|
|
20
|
-
console.log("scan_capabilities result:", JSON.stringify(result, null, 2));
|
|
21
|
-
// Should have all top-level sections
|
|
22
|
-
expect(result.file).toBeDefined();
|
|
23
|
-
expect(result.file.path).toBe(FIXTURE_PATH);
|
|
24
|
-
expect(result.file.lines).toBeGreaterThan(0);
|
|
25
|
-
expect(result.state_management).toBeDefined();
|
|
26
|
-
expect(result.layout_structure).toBeDefined();
|
|
27
|
-
expect(result.interaction_patterns).toBeDefined();
|
|
28
|
-
expect(result.rendering_capabilities).toBeDefined();
|
|
29
|
-
expect(result.backend_patterns).toBeDefined();
|
|
30
|
-
expect(result.imports).toBeDefined();
|
|
31
|
-
expect(result.exports).toBeDefined();
|
|
32
|
-
// critterTools.ts should have some imports and exports
|
|
33
|
-
expect(result.imports.count).toBeGreaterThan(0);
|
|
34
|
-
expect(result.exports.named_exports).toBeGreaterThan(0);
|
|
35
|
-
});
|
|
36
|
-
it("verify_concept_support detects patterns and persists to SQLite", async () => {
|
|
37
|
-
const result = (await callTool("verify_concept_support", {
|
|
38
|
-
file_path: FIXTURE_PATH,
|
|
39
|
-
concept_name: "SQLite Persistence",
|
|
40
|
-
required_signatures: [
|
|
41
|
-
"getDb",
|
|
42
|
-
"CREATE TABLE",
|
|
43
|
-
"db\\.prepare",
|
|
44
|
-
"McpTool",
|
|
45
|
-
],
|
|
46
|
-
}));
|
|
47
|
-
console.log("verify_concept_support result:", JSON.stringify(result, null, 2));
|
|
48
|
-
expect(result.concept).toBe("SQLite Persistence");
|
|
49
|
-
expect(result.status).toBe("Fully Implemented");
|
|
50
|
-
expect(result.match_score).toBe("100%");
|
|
51
|
-
expect(result.evidence_found).toHaveLength(4);
|
|
52
|
-
expect(result.gap_analysis).toHaveLength(0);
|
|
53
|
-
expect(result.id).toMatch(/^cv_/);
|
|
54
|
-
});
|
|
55
|
-
it("verify_concept_support reports gaps correctly", async () => {
|
|
56
|
-
const result = (await callTool("verify_concept_support", {
|
|
57
|
-
file_path: FIXTURE_PATH,
|
|
58
|
-
concept_name: "React UI Component",
|
|
59
|
-
required_signatures: [
|
|
60
|
-
"useState",
|
|
61
|
-
"useEffect",
|
|
62
|
-
"return.*<div",
|
|
63
|
-
"export default",
|
|
64
|
-
],
|
|
65
|
-
}));
|
|
66
|
-
console.log("verify_concept_support (gaps) result:", JSON.stringify(result, null, 2));
|
|
67
|
-
expect(result.status).toBe("Not Implemented");
|
|
68
|
-
expect(result.gap_analysis.length).toBeGreaterThan(0);
|
|
69
|
-
expect(parseInt(result.match_score)).toBeLessThan(50);
|
|
70
|
-
});
|
|
71
|
-
it("generate_implementation_plan builds structured plan", async () => {
|
|
72
|
-
const result = (await callTool("generate_implementation_plan", {
|
|
73
|
-
concept_name: "Dark Mode Toggle",
|
|
74
|
-
missing_signatures: [
|
|
75
|
-
"prefers-color-scheme",
|
|
76
|
-
"theme.*dark",
|
|
77
|
-
"useEffect",
|
|
78
|
-
],
|
|
79
|
-
current_context: "File has getDb import, McpTool exports, no React hooks",
|
|
80
|
-
target_file: FIXTURE_PATH,
|
|
81
|
-
}));
|
|
82
|
-
console.log("generate_implementation_plan result:", JSON.stringify(result, null, 2));
|
|
83
|
-
expect(result.concept).toBe("Dark Mode Toggle");
|
|
84
|
-
expect(result.total_steps).toBe(3);
|
|
85
|
-
expect(result.steps).toHaveLength(3);
|
|
86
|
-
expect(result.steps[0].requirement).toBe("prefers-color-scheme");
|
|
87
|
-
expect(result.steps[0].strategy).toBeTruthy();
|
|
88
|
-
expect(result.workflow).toHaveLength(4);
|
|
89
|
-
expect(result.context_provided).toBe(true);
|
|
90
|
-
});
|
|
91
|
-
});
|
|
92
|
-
//# sourceMappingURL=architectSmoke.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"architectSmoke.test.js","sourceRoot":"","sources":["../../src/__tests__/architectSmoke.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { TOOL_REGISTRY } from "../tools/toolRegistry.js";
|
|
2
|
-
import { verificationTools } from "../tools/verificationTools.js";
|
|
3
|
-
import { evalTools } from "../tools/evalTools.js";
|
|
4
|
-
import { qualityGateTools } from "../tools/qualityGateTools.js";
|
|
5
|
-
import { learningTools } from "../tools/learningTools.js";
|
|
6
|
-
import { flywheelTools } from "../tools/flywheelTools.js";
|
|
7
|
-
import { reconTools } from "../tools/reconTools.js";
|
|
8
|
-
import { uiCaptureTools } from "../tools/uiCaptureTools.js";
|
|
9
|
-
import { visionTools } from "../tools/visionTools.js";
|
|
10
|
-
import { localFileTools } from "../tools/localFileTools.js";
|
|
11
|
-
import { webTools } from "../tools/webTools.js";
|
|
12
|
-
import { githubTools } from "../tools/githubTools.js";
|
|
13
|
-
import { documentationTools } from "../tools/documentationTools.js";
|
|
14
|
-
import { agentBootstrapTools } from "../tools/agentBootstrapTools.js";
|
|
15
|
-
import { selfEvalTools } from "../tools/selfEvalTools.js";
|
|
16
|
-
import { parallelAgentTools } from "../tools/parallelAgentTools.js";
|
|
17
|
-
import { llmTools } from "../tools/llmTools.js";
|
|
18
|
-
import { securityTools } from "../tools/securityTools.js";
|
|
19
|
-
import { platformTools } from "../tools/platformTools.js";
|
|
20
|
-
import { researchWritingTools } from "../tools/researchWritingTools.js";
|
|
21
|
-
import { flickerDetectionTools } from "../tools/flickerDetectionTools.js";
|
|
22
|
-
import { figmaFlowTools } from "../tools/figmaFlowTools.js";
|
|
23
|
-
import { boilerplateTools } from "../tools/boilerplateTools.js";
|
|
24
|
-
import { cCompilerBenchmarkTools } from "../tools/cCompilerBenchmarkTools.js";
|
|
25
|
-
import { createMetaTools } from "../tools/metaTools.js";
|
|
26
|
-
import { createProgressiveDiscoveryTools } from "../tools/progressiveDiscoveryTools.js";
|
|
27
|
-
const domain = [
|
|
28
|
-
...verificationTools, ...evalTools, ...qualityGateTools, ...learningTools,
|
|
29
|
-
...flywheelTools, ...reconTools, ...uiCaptureTools, ...visionTools,
|
|
30
|
-
...localFileTools, ...webTools, ...githubTools, ...documentationTools,
|
|
31
|
-
...agentBootstrapTools, ...selfEvalTools, ...parallelAgentTools,
|
|
32
|
-
...llmTools, ...securityTools, ...platformTools, ...researchWritingTools,
|
|
33
|
-
...flickerDetectionTools, ...figmaFlowTools, ...boilerplateTools,
|
|
34
|
-
...cCompilerBenchmarkTools,
|
|
35
|
-
];
|
|
36
|
-
const meta = createMetaTools(domain);
|
|
37
|
-
const base = [...domain, ...meta];
|
|
38
|
-
const discovery = createProgressiveDiscoveryTools(base);
|
|
39
|
-
const all = [...base, ...discovery];
|
|
40
|
-
const allNames = all.map(t => t.name);
|
|
41
|
-
const registryNames = new Set([...TOOL_REGISTRY.keys()]);
|
|
42
|
-
const missing = allNames.filter(n => !registryNames.has(n));
|
|
43
|
-
const extra = [...registryNames].filter(n => !allNames.includes(n));
|
|
44
|
-
console.log(`Actual tools: ${allNames.length}`);
|
|
45
|
-
console.log(`Registry entries: ${registryNames.size}`);
|
|
46
|
-
console.log(`\nMISSING from registry (${missing.length}):`);
|
|
47
|
-
missing.forEach(n => console.log(` - ${n}`));
|
|
48
|
-
console.log(`\nExtra in registry, not actual tools (${extra.length}):`);
|
|
49
|
-
extra.forEach(n => console.log(` - ${n}`));
|
|
50
|
-
// Also check search quality
|
|
51
|
-
import { hybridSearch } from "../tools/toolRegistry.js";
|
|
52
|
-
const toolDescs = all.map(t => ({ name: t.name, description: t.description }));
|
|
53
|
-
const queries = ["verify", "test", "search", "benchmark", "scaffold", "parallel", "security"];
|
|
54
|
-
console.log(`\n--- SEARCH QUALITY AUDIT ---`);
|
|
55
|
-
for (const q of queries) {
|
|
56
|
-
const results = hybridSearch(q, toolDescs, { limit: 5 });
|
|
57
|
-
console.log(`\nQuery: "${q}" → ${results.length} results`);
|
|
58
|
-
results.forEach((r, i) => console.log(` ${i + 1}. ${r.name} (score: ${r.score})`));
|
|
59
|
-
}
|
|
60
|
-
//# sourceMappingURL=audit-registry.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"audit-registry.js","sourceRoot":"","sources":["../../src/__tests__/audit-registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* batchAutopilot.test.ts — Tests for Batch Autopilot MCP tools
|
|
3
|
-
*
|
|
4
|
-
* Validates the 5 batch autopilot tools added to openclawTools:
|
|
5
|
-
* setup_operator_profile, get_autopilot_status, trigger_batch_run,
|
|
6
|
-
* get_batch_run_history, sync_operator_profile
|
|
7
|
-
*/
|
|
8
|
-
export {};
|