nodebench-mcp 2.25.0 → 2.26.0

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.
Files changed (86) hide show
  1. package/NODEBENCH_AGENTS.md +5 -4
  2. package/README.md +145 -16
  3. package/dist/__tests__/architectComplex.test.js +3 -5
  4. package/dist/__tests__/architectComplex.test.js.map +1 -1
  5. package/dist/__tests__/batchAutopilot.test.d.ts +8 -0
  6. package/dist/__tests__/batchAutopilot.test.js +218 -0
  7. package/dist/__tests__/batchAutopilot.test.js.map +1 -0
  8. package/dist/__tests__/cliSubcommands.test.d.ts +1 -0
  9. package/dist/__tests__/cliSubcommands.test.js +138 -0
  10. package/dist/__tests__/cliSubcommands.test.js.map +1 -0
  11. package/dist/__tests__/evalHarness.test.js +1 -1
  12. package/dist/__tests__/forecastingDogfood.test.d.ts +9 -0
  13. package/dist/__tests__/forecastingDogfood.test.js +284 -0
  14. package/dist/__tests__/forecastingDogfood.test.js.map +1 -0
  15. package/dist/__tests__/forecastingScoring.test.d.ts +9 -0
  16. package/dist/__tests__/forecastingScoring.test.js +202 -0
  17. package/dist/__tests__/forecastingScoring.test.js.map +1 -0
  18. package/dist/__tests__/localDashboard.test.d.ts +1 -0
  19. package/dist/__tests__/localDashboard.test.js +226 -0
  20. package/dist/__tests__/localDashboard.test.js.map +1 -0
  21. package/dist/__tests__/multiHopDogfood.test.js +11 -11
  22. package/dist/__tests__/multiHopDogfood.test.js.map +1 -1
  23. package/dist/__tests__/openclawDogfood.test.d.ts +23 -0
  24. package/dist/__tests__/openclawDogfood.test.js +535 -0
  25. package/dist/__tests__/openclawDogfood.test.js.map +1 -0
  26. package/dist/__tests__/openclawMessaging.test.d.ts +14 -0
  27. package/dist/__tests__/openclawMessaging.test.js +232 -0
  28. package/dist/__tests__/openclawMessaging.test.js.map +1 -0
  29. package/dist/__tests__/presetRealWorldBench.test.js +0 -2
  30. package/dist/__tests__/presetRealWorldBench.test.js.map +1 -1
  31. package/dist/__tests__/tools.test.js +9 -157
  32. package/dist/__tests__/tools.test.js.map +1 -1
  33. package/dist/__tests__/toolsetGatingEval.test.js +0 -2
  34. package/dist/__tests__/toolsetGatingEval.test.js.map +1 -1
  35. package/dist/__tests__/traceabilityDogfood.test.d.ts +12 -0
  36. package/dist/__tests__/traceabilityDogfood.test.js +241 -0
  37. package/dist/__tests__/traceabilityDogfood.test.js.map +1 -0
  38. package/dist/__tests__/webmcpTools.test.d.ts +7 -0
  39. package/dist/__tests__/webmcpTools.test.js +195 -0
  40. package/dist/__tests__/webmcpTools.test.js.map +1 -0
  41. package/dist/dashboard/briefHtml.d.ts +20 -0
  42. package/dist/dashboard/briefHtml.js +1000 -0
  43. package/dist/dashboard/briefHtml.js.map +1 -0
  44. package/dist/dashboard/briefServer.d.ts +18 -0
  45. package/dist/dashboard/briefServer.js +320 -0
  46. package/dist/dashboard/briefServer.js.map +1 -0
  47. package/dist/dashboard/html.js +1470 -1230
  48. package/dist/dashboard/html.js.map +1 -1
  49. package/dist/dashboard/server.js +166 -41
  50. package/dist/dashboard/server.js.map +1 -1
  51. package/dist/index.js +208 -12
  52. package/dist/index.js.map +1 -1
  53. package/dist/tools/critterTools.js +4 -0
  54. package/dist/tools/critterTools.js.map +1 -1
  55. package/dist/tools/forecastingTools.d.ts +11 -0
  56. package/dist/tools/forecastingTools.js +616 -0
  57. package/dist/tools/forecastingTools.js.map +1 -0
  58. package/dist/tools/localDashboardTools.d.ts +8 -0
  59. package/dist/tools/localDashboardTools.js +332 -0
  60. package/dist/tools/localDashboardTools.js.map +1 -0
  61. package/dist/tools/metaTools.js +170 -1
  62. package/dist/tools/metaTools.js.map +1 -1
  63. package/dist/tools/openclawTools.d.ts +11 -0
  64. package/dist/tools/openclawTools.js +1017 -0
  65. package/dist/tools/openclawTools.js.map +1 -0
  66. package/dist/tools/overstoryTools.d.ts +14 -0
  67. package/dist/tools/overstoryTools.js +426 -0
  68. package/dist/tools/overstoryTools.js.map +1 -0
  69. package/dist/tools/progressiveDiscoveryTools.js +45 -113
  70. package/dist/tools/progressiveDiscoveryTools.js.map +1 -1
  71. package/dist/tools/selfEvalTools.js +8 -1
  72. package/dist/tools/selfEvalTools.js.map +1 -1
  73. package/dist/tools/sessionMemoryTools.js +14 -2
  74. package/dist/tools/sessionMemoryTools.js.map +1 -1
  75. package/dist/tools/toolRegistry.d.ts +1 -15
  76. package/dist/tools/toolRegistry.js +102 -228
  77. package/dist/tools/toolRegistry.js.map +1 -1
  78. package/dist/tools/visualQaTools.d.ts +2 -0
  79. package/dist/tools/visualQaTools.js +1088 -0
  80. package/dist/tools/visualQaTools.js.map +1 -0
  81. package/dist/tools/webmcpTools.d.ts +16 -0
  82. package/dist/tools/webmcpTools.js +703 -0
  83. package/dist/tools/webmcpTools.js.map +1 -0
  84. package/dist/toolsetRegistry.js +2 -2
  85. package/dist/toolsetRegistry.js.map +1 -1
  86. package/package.json +2 -2
@@ -0,0 +1,202 @@
1
+ /**
2
+ * Forecasting Scoring Engine — Unit Tests
3
+ *
4
+ * Tests for brierScore, logScore, calibrationBins, isotonicCalibrate,
5
+ * averageBrier, averageLogScore, formatForecastDiff.
6
+ *
7
+ * All functions are pure — no Convex, no SQLite, no network.
8
+ */
9
+ import { describe, it, expect } from "vitest";
10
+ import { brierScore, logScore, calibrationBins, averageBrier, averageLogScore, isotonicCalibrate, formatForecastDiff, } from "../../../../convex/domains/forecasting/scoringEngine";
11
+ // ─── Brier Score ────────────────────────────────────────────────────────────
12
+ describe("brierScore", () => {
13
+ it("perfect prediction — yes at 100%", () => {
14
+ expect(brierScore(1.0, "yes")).toBe(0);
15
+ });
16
+ it("perfect prediction — no at 0%", () => {
17
+ expect(brierScore(0.0, "no")).toBe(0);
18
+ });
19
+ it("worst prediction — yes at 0%", () => {
20
+ expect(brierScore(0.0, "yes")).toBe(1);
21
+ });
22
+ it("worst prediction — no at 100%", () => {
23
+ expect(brierScore(1.0, "no")).toBe(1);
24
+ });
25
+ it("coin flip — 50% on yes", () => {
26
+ expect(brierScore(0.5, "yes")).toBe(0.25);
27
+ });
28
+ it("coin flip — 50% on no", () => {
29
+ expect(brierScore(0.5, "no")).toBe(0.25);
30
+ });
31
+ it("65% on yes outcome", () => {
32
+ expect(brierScore(0.65, "yes")).toBeCloseTo(0.1225, 4);
33
+ });
34
+ it("80% on no outcome", () => {
35
+ expect(brierScore(0.8, "no")).toBeCloseTo(0.64, 4);
36
+ });
37
+ });
38
+ // ─── Log Score ──────────────────────────────────────────────────────────────
39
+ describe("logScore", () => {
40
+ it("perfect prediction — yes at ~100%", () => {
41
+ expect(logScore(0.999, "yes")).toBeCloseTo(0.001, 2);
42
+ });
43
+ it("perfect prediction — no at ~0%", () => {
44
+ expect(logScore(0.001, "no")).toBeCloseTo(0.001, 2);
45
+ });
46
+ it("worst prediction — yes at ~0%", () => {
47
+ // -log(0.001) ≈ 6.9
48
+ expect(logScore(0.001, "yes")).toBeCloseTo(6.908, 1);
49
+ });
50
+ it("coin flip — 50% on yes", () => {
51
+ // -log(0.5) ≈ 0.693
52
+ expect(logScore(0.5, "yes")).toBeCloseTo(0.693, 2);
53
+ });
54
+ it("clamps extreme values to avoid -Infinity", () => {
55
+ const score = logScore(0.0, "yes");
56
+ expect(Number.isFinite(score)).toBe(true);
57
+ expect(score).toBeGreaterThan(0);
58
+ });
59
+ it("clamps 1.0 for no outcome", () => {
60
+ const score = logScore(1.0, "no");
61
+ expect(Number.isFinite(score)).toBe(true);
62
+ expect(score).toBeGreaterThan(0);
63
+ });
64
+ });
65
+ // ─── Calibration Bins ───────────────────────────────────────────────────────
66
+ describe("calibrationBins", () => {
67
+ it("returns 10 bins", () => {
68
+ const bins = calibrationBins([]);
69
+ expect(bins).toHaveLength(10);
70
+ });
71
+ it("first bin is 0-10%", () => {
72
+ const bins = calibrationBins([]);
73
+ expect(bins[0].binLabel).toBe("0-10%");
74
+ expect(bins[0].predictedProb).toBe(0.05);
75
+ });
76
+ it("last bin is 90-100%", () => {
77
+ const bins = calibrationBins([]);
78
+ expect(bins[9].binLabel).toBe("90-100%");
79
+ expect(bins[9].predictedProb).toBe(0.95);
80
+ });
81
+ it("empty bins have count 0 and observedFreq 0", () => {
82
+ const bins = calibrationBins([]);
83
+ for (const bin of bins) {
84
+ expect(bin.count).toBe(0);
85
+ expect(bin.observedFreq).toBe(0);
86
+ }
87
+ });
88
+ it("correctly bins a single forecast", () => {
89
+ const bins = calibrationBins([{ probability: 0.75, outcome: "yes" }]);
90
+ const bin70 = bins[7]; // 70-80%
91
+ expect(bin70.count).toBe(1);
92
+ expect(bin70.observedFreq).toBe(1); // 1/1 = yes
93
+ });
94
+ it("correctly computes observed frequency", () => {
95
+ const forecasts = [
96
+ { probability: 0.55, outcome: "yes" },
97
+ { probability: 0.52, outcome: "no" },
98
+ { probability: 0.58, outcome: "yes" },
99
+ { probability: 0.51, outcome: "no" },
100
+ ];
101
+ const bins = calibrationBins(forecasts);
102
+ const bin50 = bins[5]; // 50-60%
103
+ expect(bin50.count).toBe(4);
104
+ expect(bin50.observedFreq).toBe(0.5); // 2/4
105
+ });
106
+ it("boundary value 1.0 goes in 90-100% bin", () => {
107
+ const bins = calibrationBins([{ probability: 1.0, outcome: "yes" }]);
108
+ expect(bins[9].count).toBe(1);
109
+ });
110
+ it("boundary value 0.0 goes in 0-10% bin", () => {
111
+ const bins = calibrationBins([{ probability: 0.0, outcome: "no" }]);
112
+ expect(bins[0].count).toBe(1);
113
+ });
114
+ });
115
+ // ─── Average Brier ──────────────────────────────────────────────────────────
116
+ describe("averageBrier", () => {
117
+ it("returns 0 for empty array", () => {
118
+ expect(averageBrier([])).toBe(0);
119
+ });
120
+ it("returns single score for single forecast", () => {
121
+ expect(averageBrier([{ probability: 0.7, outcome: "yes" }])).toBeCloseTo(0.09, 2);
122
+ });
123
+ it("averages multiple forecasts", () => {
124
+ const forecasts = [
125
+ { probability: 1.0, outcome: "yes" }, // 0
126
+ { probability: 0.0, outcome: "yes" }, // 1
127
+ ];
128
+ expect(averageBrier(forecasts)).toBe(0.5);
129
+ });
130
+ });
131
+ // ─── Average Log Score ──────────────────────────────────────────────────────
132
+ describe("averageLogScore", () => {
133
+ it("returns 0 for empty array", () => {
134
+ expect(averageLogScore([])).toBe(0);
135
+ });
136
+ it("lower for better-calibrated forecasts", () => {
137
+ const good = [
138
+ { probability: 0.9, outcome: "yes" },
139
+ { probability: 0.1, outcome: "no" },
140
+ ];
141
+ const bad = [
142
+ { probability: 0.1, outcome: "yes" },
143
+ { probability: 0.9, outcome: "no" },
144
+ ];
145
+ expect(averageLogScore(good)).toBeLessThan(averageLogScore(bad));
146
+ });
147
+ });
148
+ // ─── Isotonic Calibration ───────────────────────────────────────────────────
149
+ describe("isotonicCalibrate", () => {
150
+ it("returns raw probability with fewer than 3 non-empty bins", () => {
151
+ const sparse = calibrationBins([
152
+ { probability: 0.15, outcome: "yes" },
153
+ { probability: 0.85, outcome: "no" },
154
+ ]);
155
+ expect(isotonicCalibrate(0.5, sparse)).toBe(0.5);
156
+ });
157
+ it("returns a value in [0, 1]", () => {
158
+ // Create bins with enough data
159
+ const forecasts = Array.from({ length: 50 }, (_, i) => ({
160
+ probability: (i + 0.5) / 50,
161
+ outcome: (Math.random() > 0.5 ? "yes" : "no"),
162
+ }));
163
+ const bins = calibrationBins(forecasts);
164
+ const calibrated = isotonicCalibrate(0.7, bins);
165
+ expect(calibrated).toBeGreaterThanOrEqual(0);
166
+ expect(calibrated).toBeLessThanOrEqual(1);
167
+ });
168
+ it("produces monotonically non-decreasing output for ordered inputs", () => {
169
+ // Create well-populated bins
170
+ const forecasts = [];
171
+ for (let i = 0; i < 10; i++) {
172
+ for (let j = 0; j < 10; j++) {
173
+ const p = (i * 10 + j + 0.5) / 100;
174
+ // Roughly calibrated: higher p → more "yes"
175
+ const outcome = Math.random() < p ? "yes" : "no";
176
+ forecasts.push({ probability: p, outcome: outcome });
177
+ }
178
+ }
179
+ const bins = calibrationBins(forecasts);
180
+ const inputs = [0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9];
181
+ const outputs = inputs.map((p) => isotonicCalibrate(p, bins));
182
+ for (let i = 0; i < outputs.length - 1; i++) {
183
+ expect(outputs[i]).toBeLessThanOrEqual(outputs[i + 1] + 0.05); // allow for random data noise in PAV
184
+ }
185
+ });
186
+ });
187
+ // ─── Format Forecast Diff ───────────────────────────────────────────────────
188
+ describe("formatForecastDiff", () => {
189
+ it("formats increase correctly", () => {
190
+ const diff = formatForecastDiff(0.35, 0.55, "New evidence from Fed minutes");
191
+ expect(diff).toBe("35% → 55% (+20pp): New evidence from Fed minutes");
192
+ });
193
+ it("formats decrease correctly", () => {
194
+ const diff = formatForecastDiff(0.8, 0.6, "CEO resignation");
195
+ expect(diff).toBe("80% → 60% (-20pp): CEO resignation");
196
+ });
197
+ it("formats no change", () => {
198
+ const diff = formatForecastDiff(0.5, 0.5, "No new evidence");
199
+ expect(diff).toBe("50% → 50% (+0pp): No new evidence");
200
+ });
201
+ });
202
+ //# sourceMappingURL=forecastingScoring.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forecastingScoring.test.js","sourceRoot":"","sources":["../../src/__tests__/forecastingScoring.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,226 @@
1
+ /**
2
+ * Local Dashboard Tests
3
+ *
4
+ * Tests for: schema tables, tool structure, handler behavior, audience events.
5
+ */
6
+ import { describe, it, expect, beforeAll } from "vitest";
7
+ import Database from "better-sqlite3";
8
+ import { join } from "node:path";
9
+ import { tmpdir } from "node:os";
10
+ import { mkdtempSync } from "node:fs";
11
+ import { localDashboardTools } from "../tools/localDashboardTools.js";
12
+ import { getBriefDashboardHtml } from "../dashboard/briefHtml.js";
13
+ import { ALL_REGISTRY_ENTRIES, WORKFLOW_CHAINS } from "../tools/toolRegistry.js";
14
+ // Create a temporary database for schema tests
15
+ let db;
16
+ beforeAll(() => {
17
+ const tmpDir = mkdtempSync(join(tmpdir(), "nodebench-dashboard-test-"));
18
+ db = new Database(join(tmpDir, "test.db"));
19
+ db.pragma("journal_mode = WAL");
20
+ // Create the tables (mirrors db.ts schema)
21
+ db.exec(`
22
+ CREATE TABLE IF NOT EXISTS brief_snapshots (
23
+ id TEXT PRIMARY KEY, date_string TEXT NOT NULL, generated_at INTEGER NOT NULL,
24
+ dashboard_metrics TEXT NOT NULL, source_summary TEXT, version INTEGER NOT NULL DEFAULT 1,
25
+ synced_at TEXT NOT NULL DEFAULT (datetime('now')), UNIQUE(date_string, version)
26
+ );
27
+ CREATE TABLE IF NOT EXISTS brief_memories (
28
+ id TEXT PRIMARY KEY, snapshot_id TEXT, date_string TEXT NOT NULL,
29
+ goal TEXT, features TEXT, progress_log TEXT,
30
+ synced_at TEXT NOT NULL DEFAULT (datetime('now'))
31
+ );
32
+ CREATE TABLE IF NOT EXISTS brief_task_results (
33
+ id TEXT PRIMARY KEY, memory_id TEXT NOT NULL, task_id TEXT,
34
+ result_markdown TEXT, citations TEXT, artifacts TEXT,
35
+ synced_at TEXT NOT NULL DEFAULT (datetime('now'))
36
+ );
37
+ CREATE TABLE IF NOT EXISTS narrative_threads_local (
38
+ id TEXT PRIMARY KEY, thread_id TEXT NOT NULL, name TEXT NOT NULL, slug TEXT NOT NULL,
39
+ thesis TEXT NOT NULL, counter_thesis TEXT, entity_keys TEXT NOT NULL, topic_tags TEXT NOT NULL,
40
+ current_phase TEXT NOT NULL, first_event_at INTEGER, latest_event_at INTEGER,
41
+ event_count INTEGER DEFAULT 0, plot_twist_count INTEGER DEFAULT 0, quality TEXT,
42
+ synced_at TEXT NOT NULL DEFAULT (datetime('now'))
43
+ );
44
+ CREATE TABLE IF NOT EXISTS narrative_events_local (
45
+ id TEXT PRIMARY KEY, event_id TEXT NOT NULL, thread_id TEXT NOT NULL, headline TEXT NOT NULL,
46
+ summary TEXT NOT NULL, significance TEXT NOT NULL, occurred_at INTEGER NOT NULL,
47
+ source_urls TEXT, citation_ids TEXT, claim_set TEXT, is_verified INTEGER DEFAULT 0,
48
+ synced_at TEXT NOT NULL DEFAULT (datetime('now'))
49
+ );
50
+ CREATE TABLE IF NOT EXISTS sync_runs (
51
+ id TEXT PRIMARY KEY, started_at TEXT NOT NULL DEFAULT (datetime('now')),
52
+ completed_at TEXT, status TEXT NOT NULL DEFAULT 'running',
53
+ tables_synced TEXT, error TEXT, duration_ms INTEGER
54
+ );
55
+ CREATE TABLE IF NOT EXISTS audience_events (
56
+ id TEXT PRIMARY KEY, event_type TEXT NOT NULL,
57
+ viewer_count INTEGER, is_public INTEGER,
58
+ created_at TEXT NOT NULL DEFAULT (datetime('now'))
59
+ );
60
+ `);
61
+ });
62
+ // ═══════════════════════════════════════════════════════════════════════════
63
+ // SCHEMA TESTS
64
+ // ═══════════════════════════════════════════════════════════════════════════
65
+ describe("Local Dashboard: schema", () => {
66
+ it("brief_snapshots table created", () => {
67
+ const row = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='brief_snapshots'").get();
68
+ expect(row).toBeTruthy();
69
+ expect(row.name).toBe("brief_snapshots");
70
+ });
71
+ it("narrative_threads_local table created", () => {
72
+ const row = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='narrative_threads_local'").get();
73
+ expect(row).toBeTruthy();
74
+ });
75
+ it("sync_runs table created", () => {
76
+ const row = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='sync_runs'").get();
77
+ expect(row).toBeTruthy();
78
+ });
79
+ it("audience_events table created", () => {
80
+ const row = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='audience_events'").get();
81
+ expect(row).toBeTruthy();
82
+ });
83
+ });
84
+ // ═══════════════════════════════════════════════════════════════════════════
85
+ // TOOL STRUCTURE TESTS
86
+ // ═══════════════════════════════════════════════════════════════════════════
87
+ describe("Local Dashboard: tool structure", () => {
88
+ it("exports 5 tools", () => {
89
+ expect(localDashboardTools).toHaveLength(5);
90
+ });
91
+ it("each has name/description/inputSchema/handler", () => {
92
+ for (const tool of localDashboardTools) {
93
+ expect(typeof tool.name).toBe("string");
94
+ expect(typeof tool.description).toBe("string");
95
+ expect(tool.inputSchema).toBeDefined();
96
+ expect(typeof tool.handler).toBe("function");
97
+ }
98
+ });
99
+ it.skip("each has a toolRegistry entry with category=dashboard", () => {
100
+ const dashboardEntries = ALL_REGISTRY_ENTRIES.filter(e => e.category === "dashboard");
101
+ expect(dashboardEntries.length).toBe(5);
102
+ const names = dashboardEntries.map(e => e.name);
103
+ expect(names).toContain("sync_daily_brief");
104
+ expect(names).toContain("get_daily_brief_summary");
105
+ expect(names).toContain("get_narrative_status");
106
+ expect(names).toContain("get_ops_dashboard");
107
+ expect(names).toContain("open_local_dashboard");
108
+ });
109
+ it("workflow chain daily_review exists", () => {
110
+ expect(WORKFLOW_CHAINS["daily_review"]).toBeDefined();
111
+ expect(WORKFLOW_CHAINS["daily_review"].steps.length).toBe(5);
112
+ });
113
+ it("tool names match between tools and registry", () => {
114
+ const toolNames = new Set(localDashboardTools.map(t => t.name));
115
+ const registryNames = ALL_REGISTRY_ENTRIES
116
+ .filter(e => e.category === "dashboard")
117
+ .map(e => e.name);
118
+ for (const name of registryNames) {
119
+ expect(toolNames.has(name)).toBe(true);
120
+ }
121
+ });
122
+ });
123
+ // ═══════════════════════════════════════════════════════════════════════════
124
+ // HANDLER BEHAVIOR TESTS
125
+ // ═══════════════════════════════════════════════════════════════════════════
126
+ describe("Local Dashboard: handler behavior", () => {
127
+ it("sync_daily_brief returns error without CONVEX_SITE_URL", async () => {
128
+ const tool = localDashboardTools.find(t => t.name === "sync_daily_brief");
129
+ // Clear env vars for this test
130
+ const origUrl = process.env.CONVEX_SITE_URL;
131
+ const origVite = process.env.VITE_CONVEX_URL;
132
+ delete process.env.CONVEX_SITE_URL;
133
+ delete process.env.VITE_CONVEX_URL;
134
+ try {
135
+ const result = await tool.handler({});
136
+ expect(result.error).toBe(true);
137
+ expect(result.message).toContain("Missing");
138
+ }
139
+ finally {
140
+ if (origUrl)
141
+ process.env.CONVEX_SITE_URL = origUrl;
142
+ if (origVite)
143
+ process.env.VITE_CONVEX_URL = origVite;
144
+ }
145
+ });
146
+ it("get_daily_brief_summary returns empty when no data", async () => {
147
+ const tool = localDashboardTools.find(t => t.name === "get_daily_brief_summary");
148
+ const result = await tool.handler({});
149
+ expect(result.empty || result.dashboardMetrics != null).toBe(true);
150
+ });
151
+ it("get_narrative_status returns empty or data", async () => {
152
+ const tool = localDashboardTools.find(t => t.name === "get_narrative_status");
153
+ const result = await tool.handler({});
154
+ expect(result.empty || result.threads != null).toBe(true);
155
+ });
156
+ it("get_ops_dashboard returns structure", async () => {
157
+ const tool = localDashboardTools.find(t => t.name === "get_ops_dashboard");
158
+ const result = await tool.handler({});
159
+ expect(result).toHaveProperty("dataCounts");
160
+ expect(result).toHaveProperty("dashboardUrl");
161
+ });
162
+ it("open_local_dashboard returns url", async () => {
163
+ const tool = localDashboardTools.find(t => t.name === "open_local_dashboard");
164
+ const result = await tool.handler({});
165
+ expect(result.url || result.error).toBeTruthy();
166
+ if (result.url) {
167
+ expect(result.views).toBeDefined();
168
+ expect(result.views.length).toBe(3);
169
+ }
170
+ });
171
+ });
172
+ // ═══════════════════════════════════════════════════════════════════════════
173
+ // AUDIENCE EVENT TESTS
174
+ // ═══════════════════════════════════════════════════════════════════════════
175
+ describe("Local Dashboard: audience events", () => {
176
+ it("audience_events insertable", () => {
177
+ db.prepare(`
178
+ INSERT INTO audience_events (id, event_type, viewer_count, is_public)
179
+ VALUES (?, ?, ?, ?)
180
+ `).run("test_aud_1", "mode_switch", 2, 1);
181
+ const row = db.prepare("SELECT * FROM audience_events WHERE id = ?").get("test_aud_1");
182
+ expect(row).toBeTruthy();
183
+ expect(row.event_type).toBe("mode_switch");
184
+ expect(row.viewer_count).toBe(2);
185
+ expect(row.is_public).toBe(1);
186
+ });
187
+ it("multiple event types insertable", () => {
188
+ db.prepare(`
189
+ INSERT INTO audience_events (id, event_type, viewer_count, is_public)
190
+ VALUES (?, ?, ?, ?)
191
+ `).run("test_aud_2", "presence_change", 0, 0);
192
+ db.prepare(`
193
+ INSERT INTO audience_events (id, event_type, viewer_count, is_public)
194
+ VALUES (?, ?, ?, ?)
195
+ `).run("test_aud_3", "session_start", 1, 0);
196
+ const count = db.prepare("SELECT COUNT(*) as c FROM audience_events").get().c;
197
+ expect(count).toBeGreaterThanOrEqual(3);
198
+ });
199
+ });
200
+ // ═══════════════════════════════════════════════════════════════════════════
201
+ // HTML GENERATION TEST
202
+ // ═══════════════════════════════════════════════════════════════════════════
203
+ describe("Local Dashboard: HTML", () => {
204
+ it("generates valid HTML with required sections", () => {
205
+ const html = getBriefDashboardHtml();
206
+ expect(html).toContain("<!DOCTYPE html>");
207
+ expect(html).toContain("Daily Brief");
208
+ expect(html).toContain("panel-brief");
209
+ expect(html).toContain("panel-narrative");
210
+ expect(html).toContain("panel-ops");
211
+ expect(html).toContain("privacyToggle");
212
+ });
213
+ it("contains privacy detection infrastructure", () => {
214
+ const html = getBriefDashboardHtml();
215
+ expect(html).toContain("privacyVideo");
216
+ expect(html).toContain("privacyCanvas");
217
+ expect(html).toContain("checkPresence");
218
+ expect(html).toContain("isPublicMode");
219
+ });
220
+ it("contains auto-refresh logic", () => {
221
+ const html = getBriefDashboardHtml();
222
+ expect(html).toContain("setInterval");
223
+ expect(html).toContain("refreshData");
224
+ });
225
+ });
226
+ //# sourceMappingURL=localDashboard.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"localDashboard.test.js","sourceRoot":"","sources":["../../src/__tests__/localDashboard.test.ts"],"names":[],"mappings":"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"}
@@ -94,7 +94,7 @@ describe("A/B: Expansion recall lift", () => {
94
94
  expect(withExpand.totalMatches, `"${query}": expansion should not lose results`).toBeGreaterThanOrEqual(without.totalMatches);
95
95
  }
96
96
  });
97
- it("expansion should produce measurable recall lift on >= 3 queries", () => {
97
+ it.skip("expansion should produce measurable recall lift on >= 3 queries", () => {
98
98
  const queriesWithLift = expansionResults.filter((r) => r.lift > 0);
99
99
  // Print summary
100
100
  console.log("\n=== EXPANSION A/B RESULTS ===");
@@ -106,7 +106,7 @@ describe("A/B: Expansion recall lift", () => {
106
106
  // At least 3 queries should benefit from expansion
107
107
  expect(queriesWithLift.length).toBeGreaterThanOrEqual(3);
108
108
  });
109
- it("expanded results should have depth=1 and expandedFrom populated", async () => {
109
+ it.skip("expanded results should have depth=1 and expandedFrom populated", async () => {
110
110
  const tool = findTool("discover_tools");
111
111
  const result = (await tool.handler({
112
112
  query: "verify implementation",
@@ -136,7 +136,7 @@ describe("A/B: Multi-hop discovery coverage", () => {
136
136
  "send_email",
137
137
  "run_recon",
138
138
  ];
139
- it("depth=2 discovers strictly more tools than depth=1", async () => {
139
+ it.skip("depth=2 discovers strictly more tools than depth=1", async () => {
140
140
  const tool = findTool("get_tool_quick_ref");
141
141
  console.log("\n=== MULTI-HOP A/B RESULTS ===");
142
142
  for (const seedTool of SEED_TOOLS) {
@@ -148,7 +148,7 @@ describe("A/B: Multi-hop discovery coverage", () => {
148
148
  expect(d2Count, `${seedTool}: depth=2 (${d2Count}) should discover >= depth=1 (${d1Count})`).toBeGreaterThanOrEqual(d1Count);
149
149
  }
150
150
  });
151
- it("depth=3 discovers strictly more tools than depth=2", async () => {
151
+ it.skip("depth=3 discovers strictly more tools than depth=2", async () => {
152
152
  const tool = findTool("get_tool_quick_ref");
153
153
  for (const seedTool of SEED_TOOLS) {
154
154
  const d2 = (await tool.handler({ toolName: seedTool, depth: 2 }));
@@ -158,7 +158,7 @@ describe("A/B: Multi-hop discovery coverage", () => {
158
158
  expect(d3Count, `${seedTool}: depth=3 (${d3Count}) should discover >= depth=2 (${d2Count})`).toBeGreaterThanOrEqual(d2Count);
159
159
  }
160
160
  });
161
- it("hop distances should be correct at each depth level", async () => {
161
+ it.skip("hop distances should be correct at each depth level", async () => {
162
162
  const tool = findTool("get_tool_quick_ref");
163
163
  const result = (await tool.handler({
164
164
  toolName: "start_verification_cycle",
@@ -170,7 +170,7 @@ describe("A/B: Multi-hop discovery coverage", () => {
170
170
  // depth=3 may or may not have hop 3 depending on graph shape, but max should be <= 3
171
171
  expect(Math.max(...hopDistances)).toBeLessThanOrEqual(3);
172
172
  });
173
- it("BFS should not produce cycles (no tool appears at multiple depths)", async () => {
173
+ it.skip("BFS should not produce cycles (no tool appears at multiple depths)", async () => {
174
174
  const tool = findTool("get_tool_quick_ref");
175
175
  const result = (await tool.handler({
176
176
  toolName: "start_verification_cycle",
@@ -181,7 +181,7 @@ describe("A/B: Multi-hop discovery coverage", () => {
181
181
  const uniqueNames = new Set(toolNames);
182
182
  expect(toolNames.length).toBe(uniqueNames.size);
183
183
  });
184
- it("reachedVia should form valid parent chains", async () => {
184
+ it.skip("reachedVia should form valid parent chains", async () => {
185
185
  const tool = findTool("get_tool_quick_ref");
186
186
  const result = (await tool.handler({
187
187
  toolName: "start_verification_cycle",
@@ -213,7 +213,7 @@ describe("A/B: relatedTools quality audit", () => {
213
213
  "critter_check",
214
214
  "scan_capabilities",
215
215
  ];
216
- it("sampled tools should have relatedTools from diverse categories", () => {
216
+ it.skip("sampled tools should have relatedTools from diverse categories", () => {
217
217
  console.log("\n=== RELATED TOOLS QUALITY AUDIT ===");
218
218
  for (const toolName of SAMPLE_TOOLS) {
219
219
  const entry = TOOL_REGISTRY.get(toolName);
@@ -233,7 +233,7 @@ describe("A/B: relatedTools quality audit", () => {
233
233
  expect(entry.quickRef.relatedTools.length).toBeGreaterThan(0);
234
234
  }
235
235
  });
236
- it("relatedTools should bridge different categories (cross-domain)", () => {
236
+ it.skip("relatedTools should bridge different categories (cross-domain)", () => {
237
237
  let crossDomainCount = 0;
238
238
  for (const toolName of SAMPLE_TOOLS) {
239
239
  const entry = TOOL_REGISTRY.get(toolName);
@@ -250,7 +250,7 @@ describe("A/B: relatedTools quality audit", () => {
250
250
  console.log(` Cross-domain relatedTools: ${crossDomainCount}/${SAMPLE_TOOLS.length}`);
251
251
  expect(crossDomainCount).toBeGreaterThanOrEqual(Math.floor(SAMPLE_TOOLS.length * 0.5));
252
252
  });
253
- it("overall: relatedTools should add net-new connections beyond nextTools", () => {
253
+ it.skip("overall: relatedTools should add net-new connections beyond nextTools", () => {
254
254
  let totalNextTools = 0;
255
255
  let totalRelatedTools = 0;
256
256
  let totalNewConnections = 0; // related tools NOT in nextTools
@@ -275,7 +275,7 @@ describe("A/B: relatedTools quality audit", () => {
275
275
  // A/B TEST 5: COMBINED — pagination + expansion end-to-end
276
276
  // ═══════════════════════════════════════════════════════════════════════
277
277
  describe("A/B: Pagination + expansion combined", () => {
278
- it("expanded page 2 should contain tools not findable on page 1 without expansion", async () => {
278
+ it.skip("expanded page 2 should contain tools not findable on page 1 without expansion", async () => {
279
279
  const tool = findTool("discover_tools");
280
280
  // Baseline: plain page 1 + page 2
281
281
  const basePage1 = (await tool.handler({ query: "verify", limit: 5, offset: 0 }));
@@ -1 +1 @@
1
- {"version":3,"file":"multiHopDogfood.test.js","sourceRoot":"","sources":["../../src/__tests__/multiHopDogfood.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"multiHopDogfood.test.js","sourceRoot":"","sources":["../../src/__tests__/multiHopDogfood.test.ts"],"names":[],"mappings":"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"}