nodebench-mcp 3.0.0 → 3.0.2
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/NODEBENCH_AGENTS.md +74 -67
- package/README.md +36 -34
- 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 +19 -18
- 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 +7 -6
- package/scripts/install.sh +14 -14
- 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,280 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Edge case tests for Dynamic Toolset Loading (Search+Load architecture).
|
|
3
|
-
* Tests: hybridSearch full-registry search, _loadSuggestions in discover_tools,
|
|
4
|
-
* TOOLSET_MAP/TOOL_TO_TOOLSET structural correctness, and simulated
|
|
5
|
-
* load/unload handler edge cases.
|
|
6
|
-
*/
|
|
7
|
-
import { describe, it, expect } from "vitest";
|
|
8
|
-
import { hybridSearch, ALL_REGISTRY_ENTRIES, TOOL_REGISTRY, } from "../tools/toolRegistry.js";
|
|
9
|
-
import { createProgressiveDiscoveryTools } from "../tools/progressiveDiscoveryTools.js";
|
|
10
|
-
import { TOOLSET_MAP, TOOL_TO_TOOLSET } from "../toolsetRegistry.js";
|
|
11
|
-
// ── Helpers ────────────────────────────────────────────────────────────
|
|
12
|
-
// Simulate a "default" loaded set: only verification + eval + quality_gate + learning + flywheel + recon
|
|
13
|
-
const DEFAULT_TOOLSET_NAMES = new Set(["verification", "eval", "quality_gate", "learning", "flywheel", "recon"]);
|
|
14
|
-
const defaultTools = [];
|
|
15
|
-
for (const [tsName, tools] of Object.entries(TOOLSET_MAP)) {
|
|
16
|
-
if (DEFAULT_TOOLSET_NAMES.has(tsName)) {
|
|
17
|
-
defaultTools.push(...tools);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
const defaultToolNames = new Set(defaultTools.map(t => t.name));
|
|
21
|
-
// ═══════════════════════════════════════════════════════════════════════
|
|
22
|
-
// hybridSearch with searchFullRegistry
|
|
23
|
-
// ═══════════════════════════════════════════════════════════════════════
|
|
24
|
-
describe("Dynamic Loading: hybridSearch searchFullRegistry", () => {
|
|
25
|
-
const smallLoadedTools = defaultTools.map(t => ({ name: t.name, description: t.description }));
|
|
26
|
-
it("searchFullRegistry=true searches all 175 registry entries", () => {
|
|
27
|
-
const results = hybridSearch("analyze screenshot visual regression", smallLoadedTools, {
|
|
28
|
-
limit: 10,
|
|
29
|
-
searchFullRegistry: true,
|
|
30
|
-
});
|
|
31
|
-
expect(results.length).toBeGreaterThan(0);
|
|
32
|
-
// Should include tools from unloaded toolsets (vision, ui_capture)
|
|
33
|
-
const categories = new Set(results.map(r => r.category));
|
|
34
|
-
expect(categories.size).toBeGreaterThan(1);
|
|
35
|
-
});
|
|
36
|
-
it("searchFullRegistry=true returns vision tools for screenshot queries", () => {
|
|
37
|
-
const results = hybridSearch("analyze screenshot", smallLoadedTools, {
|
|
38
|
-
limit: 10,
|
|
39
|
-
searchFullRegistry: true,
|
|
40
|
-
});
|
|
41
|
-
const names = results.map(r => r.name);
|
|
42
|
-
expect(names).toContain("analyze_screenshot");
|
|
43
|
-
});
|
|
44
|
-
it("searchFullRegistry=true returns SEO tools for SEO queries", () => {
|
|
45
|
-
const results = hybridSearch("SEO meta tags lighthouse audit", smallLoadedTools, {
|
|
46
|
-
limit: 10,
|
|
47
|
-
searchFullRegistry: true,
|
|
48
|
-
});
|
|
49
|
-
const categories = results.map(r => r.category);
|
|
50
|
-
expect(categories).toContain("seo");
|
|
51
|
-
});
|
|
52
|
-
it("searchFullRegistry=false only returns loaded tools", () => {
|
|
53
|
-
const results = hybridSearch("analyze screenshot", smallLoadedTools, {
|
|
54
|
-
limit: 10,
|
|
55
|
-
searchFullRegistry: false,
|
|
56
|
-
});
|
|
57
|
-
// All result names should be in the loaded set
|
|
58
|
-
for (const r of results) {
|
|
59
|
-
expect(defaultToolNames.has(r.name)).toBe(true);
|
|
60
|
-
}
|
|
61
|
-
});
|
|
62
|
-
it("searchFullRegistry=true does not break keyword scoring", () => {
|
|
63
|
-
const results = hybridSearch("verify code changes", smallLoadedTools, {
|
|
64
|
-
limit: 10,
|
|
65
|
-
searchFullRegistry: true,
|
|
66
|
-
explain: true,
|
|
67
|
-
});
|
|
68
|
-
expect(results.length).toBeGreaterThan(0);
|
|
69
|
-
// Top results should have positive scores and include verification or dive/review tools
|
|
70
|
-
expect(results[0].score).toBeGreaterThan(0);
|
|
71
|
-
const categories = results.map(r => r.category);
|
|
72
|
-
// "verify code changes" may match verification tools or ui_ux_dive_v2 flywheel tools (dive_fix_verify, dive_reexplore, dive_code_review)
|
|
73
|
-
const hasRelevantCategory = categories.includes("verification") || categories.includes("ui_ux_dive_v2");
|
|
74
|
-
expect(hasRelevantCategory).toBe(true);
|
|
75
|
-
});
|
|
76
|
-
});
|
|
77
|
-
// ═══════════════════════════════════════════════════════════════════════
|
|
78
|
-
// discover_tools _loadSuggestions
|
|
79
|
-
// ═══════════════════════════════════════════════════════════════════════
|
|
80
|
-
describe("Dynamic Loading: discover_tools _loadSuggestions", () => {
|
|
81
|
-
// Create discovery tools with dynamic loading awareness
|
|
82
|
-
const options = {
|
|
83
|
-
getLoadedToolNames: () => defaultToolNames,
|
|
84
|
-
getToolToToolset: () => TOOL_TO_TOOLSET,
|
|
85
|
-
};
|
|
86
|
-
const discoveryTools = createProgressiveDiscoveryTools(defaultTools.map(t => ({ name: t.name, description: t.description })), options);
|
|
87
|
-
const discoverTool = discoveryTools.find(t => t.name === "discover_tools");
|
|
88
|
-
it("returns _loadSuggestions when results include unloaded tools", async () => {
|
|
89
|
-
const result = await discoverTool.handler({ query: "analyze screenshot UI regression", limit: 10 });
|
|
90
|
-
expect(result).toHaveProperty("_loadSuggestions");
|
|
91
|
-
expect(Array.isArray(result._loadSuggestions)).toBe(true);
|
|
92
|
-
expect(result._loadSuggestions.length).toBeGreaterThan(0);
|
|
93
|
-
// Each suggestion should have toolset, matchingTools, action
|
|
94
|
-
for (const s of result._loadSuggestions) {
|
|
95
|
-
expect(s).toHaveProperty("toolset");
|
|
96
|
-
expect(s).toHaveProperty("matchingTools");
|
|
97
|
-
expect(s).toHaveProperty("action");
|
|
98
|
-
expect(s.action).toContain("load_toolset");
|
|
99
|
-
}
|
|
100
|
-
});
|
|
101
|
-
it("_loadSuggestions includes the correct toolset name", async () => {
|
|
102
|
-
const result = await discoverTool.handler({ query: "analyze screenshot", limit: 10 });
|
|
103
|
-
const toolsetNames = result._loadSuggestions.map((s) => s.toolset);
|
|
104
|
-
// Vision tools should suggest loading "vision" toolset
|
|
105
|
-
expect(toolsetNames).toContain("vision");
|
|
106
|
-
});
|
|
107
|
-
it("does NOT return _loadSuggestions when all results are loaded", async () => {
|
|
108
|
-
// Search for something that only matches default-loaded tools
|
|
109
|
-
const result = await discoverTool.handler({ query: "start verification cycle log findings", limit: 5 });
|
|
110
|
-
// Either _loadSuggestions is absent, empty, or all results are from loaded toolsets
|
|
111
|
-
if (result._loadSuggestions) {
|
|
112
|
-
// Some results might still be from unloaded toolsets due to keyword overlap
|
|
113
|
-
// But the suggestions should only contain actually unloaded toolsets
|
|
114
|
-
for (const s of result._loadSuggestions) {
|
|
115
|
-
expect(DEFAULT_TOOLSET_NAMES.has(s.toolset)).toBe(false);
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
});
|
|
119
|
-
it("totalToolsSearched reflects full registry when dynamic loading enabled", async () => {
|
|
120
|
-
const result = await discoverTool.handler({ query: "anything", limit: 5 });
|
|
121
|
-
expect(result.totalToolsSearched).toBe(ALL_REGISTRY_ENTRIES.length);
|
|
122
|
-
});
|
|
123
|
-
});
|
|
124
|
-
// ═══════════════════════════════════════════════════════════════════════
|
|
125
|
-
// discover_tools WITHOUT dynamic loading awareness
|
|
126
|
-
// ═══════════════════════════════════════════════════════════════════════
|
|
127
|
-
describe("Dynamic Loading: discover_tools without options", () => {
|
|
128
|
-
const discoveryToolsNoOpts = createProgressiveDiscoveryTools(defaultTools.map(t => ({ name: t.name, description: t.description })));
|
|
129
|
-
const discoverToolNoOpts = discoveryToolsNoOpts.find(t => t.name === "discover_tools");
|
|
130
|
-
it("does NOT return _loadSuggestions when no options provided", async () => {
|
|
131
|
-
const result = await discoverToolNoOpts.handler({ query: "analyze screenshot", limit: 10 });
|
|
132
|
-
expect(result._loadSuggestions).toBeUndefined();
|
|
133
|
-
});
|
|
134
|
-
it("totalToolsSearched reflects only loaded tools", async () => {
|
|
135
|
-
const result = await discoverToolNoOpts.handler({ query: "anything", limit: 5 });
|
|
136
|
-
expect(result.totalToolsSearched).toBe(defaultTools.length);
|
|
137
|
-
});
|
|
138
|
-
});
|
|
139
|
-
// ═══════════════════════════════════════════════════════════════════════
|
|
140
|
-
// TOOLSET_MAP / TOOL_TO_TOOLSET structural correctness
|
|
141
|
-
// ═══════════════════════════════════════════════════════════════════════
|
|
142
|
-
describe("Dynamic Loading: toolset registry structure", () => {
|
|
143
|
-
it("every tool in TOOLSET_MAP has a TOOL_TO_TOOLSET entry", () => {
|
|
144
|
-
for (const [tsName, tools] of Object.entries(TOOLSET_MAP)) {
|
|
145
|
-
for (const tool of tools) {
|
|
146
|
-
expect(TOOL_TO_TOOLSET.get(tool.name)).toBe(tsName);
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
});
|
|
150
|
-
it("every TOOL_TO_TOOLSET entry maps to a valid TOOLSET_MAP key", () => {
|
|
151
|
-
for (const [toolName, tsName] of TOOL_TO_TOOLSET.entries()) {
|
|
152
|
-
expect(TOOLSET_MAP).toHaveProperty(tsName);
|
|
153
|
-
}
|
|
154
|
-
});
|
|
155
|
-
it("every tool in TOOL_REGISTRY exists in TOOL_TO_TOOLSET", () => {
|
|
156
|
-
// Some tools (meta, discovery, dynamic) may not be in TOOL_TO_TOOLSET
|
|
157
|
-
// but all TOOLSET_MAP domain tools should be
|
|
158
|
-
for (const [tsName, tools] of Object.entries(TOOLSET_MAP)) {
|
|
159
|
-
for (const tool of tools) {
|
|
160
|
-
expect(TOOL_REGISTRY.has(tool.name)).toBe(true);
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
});
|
|
164
|
-
it("ALL_REGISTRY_ENTRIES covers all TOOLSET_MAP tools", () => {
|
|
165
|
-
const registryNames = new Set(ALL_REGISTRY_ENTRIES.map(e => e.name));
|
|
166
|
-
for (const [_, tools] of Object.entries(TOOLSET_MAP)) {
|
|
167
|
-
for (const tool of tools) {
|
|
168
|
-
expect(registryNames.has(tool.name)).toBe(true);
|
|
169
|
-
}
|
|
170
|
-
}
|
|
171
|
-
});
|
|
172
|
-
});
|
|
173
|
-
// ═══════════════════════════════════════════════════════════════════════
|
|
174
|
-
// Simulated load/unload handler edge cases
|
|
175
|
-
// ═══════════════════════════════════════════════════════════════════════
|
|
176
|
-
describe("Dynamic Loading: load/unload edge cases (simulated)", () => {
|
|
177
|
-
// Simulate the server state and handler logic from index.ts
|
|
178
|
-
function createDynamicState(initialToolsets) {
|
|
179
|
-
const activeToolsets = new Set(initialToolsets);
|
|
180
|
-
const initialToolsetNames = new Set(initialToolsets);
|
|
181
|
-
let domainTools = [];
|
|
182
|
-
for (const ts of activeToolsets) {
|
|
183
|
-
if (TOOLSET_MAP[ts])
|
|
184
|
-
domainTools.push(...TOOLSET_MAP[ts]);
|
|
185
|
-
}
|
|
186
|
-
return {
|
|
187
|
-
activeToolsets,
|
|
188
|
-
initialToolsetNames,
|
|
189
|
-
get toolCount() { return domainTools.length; },
|
|
190
|
-
load(toolset) {
|
|
191
|
-
if (!TOOLSET_MAP[toolset])
|
|
192
|
-
return { error: true, message: `Unknown toolset: ${toolset}` };
|
|
193
|
-
if (activeToolsets.has(toolset))
|
|
194
|
-
return { alreadyLoaded: true, toolset };
|
|
195
|
-
activeToolsets.add(toolset);
|
|
196
|
-
domainTools.push(...TOOLSET_MAP[toolset]);
|
|
197
|
-
return { loaded: true, toolset, toolsAdded: TOOLSET_MAP[toolset].length };
|
|
198
|
-
},
|
|
199
|
-
unload(toolset) {
|
|
200
|
-
if (!TOOLSET_MAP[toolset])
|
|
201
|
-
return { error: true, message: `Unknown toolset: ${toolset}` };
|
|
202
|
-
if (initialToolsetNames.has(toolset))
|
|
203
|
-
return { error: true, message: `Cannot unload initial preset toolset: ${toolset}` };
|
|
204
|
-
if (!activeToolsets.has(toolset))
|
|
205
|
-
return { notLoaded: true, toolset };
|
|
206
|
-
activeToolsets.delete(toolset);
|
|
207
|
-
const removeNames = new Set(TOOLSET_MAP[toolset].map(t => t.name));
|
|
208
|
-
domainTools = domainTools.filter(t => !removeNames.has(t.name));
|
|
209
|
-
return { unloaded: true, toolset };
|
|
210
|
-
},
|
|
211
|
-
};
|
|
212
|
-
}
|
|
213
|
-
it("load_toolset: unknown toolset returns error", () => {
|
|
214
|
-
const state = createDynamicState(["verification"]);
|
|
215
|
-
const result = state.load("nonexistent_toolset_xyz");
|
|
216
|
-
expect(result.error).toBe(true);
|
|
217
|
-
expect(result.message).toContain("Unknown toolset");
|
|
218
|
-
});
|
|
219
|
-
it("load_toolset: double load returns alreadyLoaded", () => {
|
|
220
|
-
const state = createDynamicState(["verification"]);
|
|
221
|
-
const r1 = state.load("vision");
|
|
222
|
-
expect(r1.loaded).toBe(true);
|
|
223
|
-
expect(r1.toolsAdded).toBeGreaterThan(0);
|
|
224
|
-
const r2 = state.load("vision");
|
|
225
|
-
expect(r2.alreadyLoaded).toBe(true);
|
|
226
|
-
});
|
|
227
|
-
it("load_toolset: increases tool count", () => {
|
|
228
|
-
const state = createDynamicState(["verification"]);
|
|
229
|
-
const before = state.toolCount;
|
|
230
|
-
state.load("vision");
|
|
231
|
-
expect(state.toolCount).toBeGreaterThan(before);
|
|
232
|
-
expect(state.toolCount).toBe(before + TOOLSET_MAP["vision"].length);
|
|
233
|
-
});
|
|
234
|
-
it("unload_toolset: cannot unload initial preset toolset", () => {
|
|
235
|
-
const state = createDynamicState(["verification", "eval"]);
|
|
236
|
-
const result = state.unload("verification");
|
|
237
|
-
expect(result.error).toBe(true);
|
|
238
|
-
expect(result.message).toContain("Cannot unload initial preset");
|
|
239
|
-
});
|
|
240
|
-
it("unload_toolset: can unload dynamically loaded toolset", () => {
|
|
241
|
-
const state = createDynamicState(["verification"]);
|
|
242
|
-
state.load("vision");
|
|
243
|
-
const before = state.toolCount;
|
|
244
|
-
const result = state.unload("vision");
|
|
245
|
-
expect(result.unloaded).toBe(true);
|
|
246
|
-
expect(state.toolCount).toBe(before - TOOLSET_MAP["vision"].length);
|
|
247
|
-
});
|
|
248
|
-
it("unload_toolset: unloading already-unloaded returns notLoaded", () => {
|
|
249
|
-
const state = createDynamicState(["verification"]);
|
|
250
|
-
const result = state.unload("vision");
|
|
251
|
-
expect(result.notLoaded).toBe(true);
|
|
252
|
-
});
|
|
253
|
-
it("unload_toolset: unknown toolset returns error", () => {
|
|
254
|
-
const state = createDynamicState(["verification"]);
|
|
255
|
-
const result = state.unload("nonexistent_toolset_xyz");
|
|
256
|
-
expect(result.error).toBe(true);
|
|
257
|
-
});
|
|
258
|
-
it("load then unload restores original tool count", () => {
|
|
259
|
-
const state = createDynamicState(["verification", "eval"]);
|
|
260
|
-
const original = state.toolCount;
|
|
261
|
-
state.load("vision");
|
|
262
|
-
expect(state.toolCount).toBeGreaterThan(original);
|
|
263
|
-
state.unload("vision");
|
|
264
|
-
expect(state.toolCount).toBe(original);
|
|
265
|
-
});
|
|
266
|
-
it("list_available_toolsets: loaded vs available is correct", () => {
|
|
267
|
-
const state = createDynamicState(["verification", "eval"]);
|
|
268
|
-
state.load("vision");
|
|
269
|
-
const loaded = [...state.activeToolsets];
|
|
270
|
-
const allToolsetNames = Object.keys(TOOLSET_MAP);
|
|
271
|
-
const available = allToolsetNames.filter(ts => !state.activeToolsets.has(ts));
|
|
272
|
-
expect(loaded).toContain("verification");
|
|
273
|
-
expect(loaded).toContain("eval");
|
|
274
|
-
expect(loaded).toContain("vision");
|
|
275
|
-
expect(available).not.toContain("vision");
|
|
276
|
-
expect(available).toContain("web");
|
|
277
|
-
expect(loaded.length + available.length).toBe(allToolsetNames.length);
|
|
278
|
-
});
|
|
279
|
-
});
|
|
280
|
-
//# sourceMappingURL=dynamicLoading.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dynamicLoading.test.js","sourceRoot":"","sources":["../../src/__tests__/dynamicLoading.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
|
@@ -1,86 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Unit tests for embeddingProvider — cosine similarity, cache, mock provider, graceful fallback.
|
|
3
|
-
*/
|
|
4
|
-
import { describe, it, expect, beforeEach } from "vitest";
|
|
5
|
-
import { embeddingSearch, isEmbeddingReady, getProviderName, _resetForTesting, _setProviderForTesting, _setIndexForTesting, } from "../tools/embeddingProvider.js";
|
|
6
|
-
beforeEach(() => {
|
|
7
|
-
_resetForTesting();
|
|
8
|
-
});
|
|
9
|
-
describe("embeddingProvider: cosine similarity correctness", () => {
|
|
10
|
-
it("identical vectors should have similarity ~1.0", () => {
|
|
11
|
-
const vec = new Float32Array([0.5, 0.3, 0.8, 0.1]);
|
|
12
|
-
_setIndexForTesting([{ name: "tool_a", nodeType: "tool", vector: vec }]);
|
|
13
|
-
const results = embeddingSearch(vec, 5);
|
|
14
|
-
expect(results.length).toBe(1);
|
|
15
|
-
expect(results[0].name).toBe("tool_a");
|
|
16
|
-
expect(results[0].similarity).toBeCloseTo(1.0, 4);
|
|
17
|
-
});
|
|
18
|
-
it("orthogonal vectors should have similarity ~0.0", () => {
|
|
19
|
-
const vecA = new Float32Array([1, 0, 0, 0]);
|
|
20
|
-
const vecB = new Float32Array([0, 1, 0, 0]);
|
|
21
|
-
_setIndexForTesting([
|
|
22
|
-
{ name: "tool_a", nodeType: "tool", vector: vecA },
|
|
23
|
-
{ name: "tool_b", nodeType: "tool", vector: vecB },
|
|
24
|
-
]);
|
|
25
|
-
const queryVec = new Float32Array([1, 0, 0, 0]);
|
|
26
|
-
const results = embeddingSearch(queryVec, 5);
|
|
27
|
-
expect(results[0].name).toBe("tool_a");
|
|
28
|
-
expect(results[0].similarity).toBeCloseTo(1.0, 4);
|
|
29
|
-
expect(results[1].name).toBe("tool_b");
|
|
30
|
-
expect(results[1].similarity).toBeCloseTo(0.0, 4);
|
|
31
|
-
});
|
|
32
|
-
it("should rank by similarity (highest first)", () => {
|
|
33
|
-
_setIndexForTesting([
|
|
34
|
-
{ name: "low", nodeType: "tool", vector: new Float32Array([0.1, 0.9, 0.0]) },
|
|
35
|
-
{ name: "high", nodeType: "tool", vector: new Float32Array([0.9, 0.1, 0.0]) },
|
|
36
|
-
{ name: "mid", nodeType: "tool", vector: new Float32Array([0.5, 0.5, 0.0]) },
|
|
37
|
-
]);
|
|
38
|
-
const query = new Float32Array([1.0, 0.0, 0.0]);
|
|
39
|
-
const results = embeddingSearch(query, 3);
|
|
40
|
-
expect(results[0].name).toBe("high");
|
|
41
|
-
expect(results[1].name).toBe("mid");
|
|
42
|
-
expect(results[2].name).toBe("low");
|
|
43
|
-
});
|
|
44
|
-
});
|
|
45
|
-
describe("embeddingProvider: graceful fallback", () => {
|
|
46
|
-
it("isEmbeddingReady returns false when no index", () => {
|
|
47
|
-
expect(isEmbeddingReady()).toBe(false);
|
|
48
|
-
});
|
|
49
|
-
it("embeddingSearch returns empty when no index", () => {
|
|
50
|
-
const results = embeddingSearch(new Float32Array([1, 0, 0]), 5);
|
|
51
|
-
expect(results).toEqual([]);
|
|
52
|
-
});
|
|
53
|
-
it("getProviderName returns null when no provider", () => {
|
|
54
|
-
expect(getProviderName()).toBe(null);
|
|
55
|
-
});
|
|
56
|
-
});
|
|
57
|
-
describe("embeddingProvider: mock provider", () => {
|
|
58
|
-
it("can inject a mock provider", () => {
|
|
59
|
-
const mockProvider = {
|
|
60
|
-
name: "mock",
|
|
61
|
-
dimensions: 3,
|
|
62
|
-
embed: async (texts) => texts.map(() => new Float32Array([0.5, 0.5, 0.0])),
|
|
63
|
-
};
|
|
64
|
-
_setProviderForTesting(mockProvider);
|
|
65
|
-
expect(getProviderName()).toBe("mock");
|
|
66
|
-
});
|
|
67
|
-
it("isEmbeddingReady returns true when index is set", () => {
|
|
68
|
-
_setIndexForTesting([
|
|
69
|
-
{ name: "tool_a", nodeType: "tool", vector: new Float32Array([1, 0, 0]) },
|
|
70
|
-
]);
|
|
71
|
-
expect(isEmbeddingReady()).toBe(true);
|
|
72
|
-
});
|
|
73
|
-
});
|
|
74
|
-
describe("embeddingProvider: limit parameter", () => {
|
|
75
|
-
it("respects limit in embeddingSearch", () => {
|
|
76
|
-
_setIndexForTesting([
|
|
77
|
-
{ name: "a", nodeType: "tool", vector: new Float32Array([1, 0, 0]) },
|
|
78
|
-
{ name: "b", nodeType: "tool", vector: new Float32Array([0, 1, 0]) },
|
|
79
|
-
{ name: "c", nodeType: "tool", vector: new Float32Array([0, 0, 1]) },
|
|
80
|
-
]);
|
|
81
|
-
const results = embeddingSearch(new Float32Array([1, 0, 0]), 2);
|
|
82
|
-
expect(results.length).toBe(2);
|
|
83
|
-
expect(results[0].name).toBe("a");
|
|
84
|
-
});
|
|
85
|
-
});
|
|
86
|
-
//# sourceMappingURL=embeddingProvider.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"embeddingProvider.test.js","sourceRoot":"","sources":["../../src/__tests__/embeddingProvider.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|