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.
Files changed (168) hide show
  1. package/dist/dashboard/operatingDashboardHtml.js +2 -1
  2. package/dist/dashboard/operatingDashboardHtml.js.map +1 -1
  3. package/dist/dashboard/operatingServer.js +3 -2
  4. package/dist/dashboard/operatingServer.js.map +1 -1
  5. package/dist/db.js +51 -3
  6. package/dist/db.js.map +1 -1
  7. package/dist/index.js +13 -16
  8. package/dist/index.js.map +1 -1
  9. package/dist/packageInfo.d.ts +3 -0
  10. package/dist/packageInfo.js +32 -0
  11. package/dist/packageInfo.js.map +1 -0
  12. package/dist/sandboxApi.js +2 -1
  13. package/dist/sandboxApi.js.map +1 -1
  14. package/dist/tools/boilerplateTools.js +10 -9
  15. package/dist/tools/boilerplateTools.js.map +1 -1
  16. package/dist/tools/documentationTools.js +2 -1
  17. package/dist/tools/documentationTools.js.map +1 -1
  18. package/dist/tools/progressiveDiscoveryTools.js +2 -1
  19. package/dist/tools/progressiveDiscoveryTools.js.map +1 -1
  20. package/dist/tools/toolRegistry.js +11 -0
  21. package/dist/tools/toolRegistry.js.map +1 -1
  22. package/dist/toolsetRegistry.js +74 -1
  23. package/dist/toolsetRegistry.js.map +1 -1
  24. package/package.json +4 -3
  25. package/dist/__tests__/analytics.test.d.ts +0 -11
  26. package/dist/__tests__/analytics.test.js +0 -546
  27. package/dist/__tests__/analytics.test.js.map +0 -1
  28. package/dist/__tests__/architectComplex.test.d.ts +0 -1
  29. package/dist/__tests__/architectComplex.test.js +0 -373
  30. package/dist/__tests__/architectComplex.test.js.map +0 -1
  31. package/dist/__tests__/architectSmoke.test.d.ts +0 -1
  32. package/dist/__tests__/architectSmoke.test.js +0 -92
  33. package/dist/__tests__/architectSmoke.test.js.map +0 -1
  34. package/dist/__tests__/audit-registry.d.ts +0 -1
  35. package/dist/__tests__/audit-registry.js +0 -60
  36. package/dist/__tests__/audit-registry.js.map +0 -1
  37. package/dist/__tests__/batchAutopilot.test.d.ts +0 -8
  38. package/dist/__tests__/batchAutopilot.test.js +0 -218
  39. package/dist/__tests__/batchAutopilot.test.js.map +0 -1
  40. package/dist/__tests__/cliSubcommands.test.d.ts +0 -1
  41. package/dist/__tests__/cliSubcommands.test.js +0 -138
  42. package/dist/__tests__/cliSubcommands.test.js.map +0 -1
  43. package/dist/__tests__/comparativeBench.test.d.ts +0 -1
  44. package/dist/__tests__/comparativeBench.test.js +0 -722
  45. package/dist/__tests__/comparativeBench.test.js.map +0 -1
  46. package/dist/__tests__/critterCalibrationEval.d.ts +0 -8
  47. package/dist/__tests__/critterCalibrationEval.js +0 -370
  48. package/dist/__tests__/critterCalibrationEval.js.map +0 -1
  49. package/dist/__tests__/dynamicLoading.test.d.ts +0 -1
  50. package/dist/__tests__/dynamicLoading.test.js +0 -280
  51. package/dist/__tests__/dynamicLoading.test.js.map +0 -1
  52. package/dist/__tests__/embeddingProvider.test.d.ts +0 -1
  53. package/dist/__tests__/embeddingProvider.test.js +0 -86
  54. package/dist/__tests__/embeddingProvider.test.js.map +0 -1
  55. package/dist/__tests__/evalDatasetBench.test.d.ts +0 -1
  56. package/dist/__tests__/evalDatasetBench.test.js +0 -738
  57. package/dist/__tests__/evalDatasetBench.test.js.map +0 -1
  58. package/dist/__tests__/evalHarness.test.d.ts +0 -1
  59. package/dist/__tests__/evalHarness.test.js +0 -1107
  60. package/dist/__tests__/evalHarness.test.js.map +0 -1
  61. package/dist/__tests__/fixtures/bfcl_v3_long_context.sample.json +0 -264
  62. package/dist/__tests__/fixtures/generateBfclLongContextFixture.d.ts +0 -10
  63. package/dist/__tests__/fixtures/generateBfclLongContextFixture.js +0 -135
  64. package/dist/__tests__/fixtures/generateBfclLongContextFixture.js.map +0 -1
  65. package/dist/__tests__/fixtures/generateSwebenchVerifiedFixture.d.ts +0 -14
  66. package/dist/__tests__/fixtures/generateSwebenchVerifiedFixture.js +0 -189
  67. package/dist/__tests__/fixtures/generateSwebenchVerifiedFixture.js.map +0 -1
  68. package/dist/__tests__/fixtures/generateToolbenchInstructionFixture.d.ts +0 -16
  69. package/dist/__tests__/fixtures/generateToolbenchInstructionFixture.js +0 -154
  70. package/dist/__tests__/fixtures/generateToolbenchInstructionFixture.js.map +0 -1
  71. package/dist/__tests__/fixtures/swebench_verified.sample.json +0 -162
  72. package/dist/__tests__/fixtures/toolbench_instruction.sample.json +0 -109
  73. package/dist/__tests__/forecastingDogfood.test.d.ts +0 -9
  74. package/dist/__tests__/forecastingDogfood.test.js +0 -284
  75. package/dist/__tests__/forecastingDogfood.test.js.map +0 -1
  76. package/dist/__tests__/forecastingScoring.test.d.ts +0 -9
  77. package/dist/__tests__/forecastingScoring.test.js +0 -202
  78. package/dist/__tests__/forecastingScoring.test.js.map +0 -1
  79. package/dist/__tests__/gaiaCapabilityAudioEval.test.d.ts +0 -15
  80. package/dist/__tests__/gaiaCapabilityAudioEval.test.js +0 -265
  81. package/dist/__tests__/gaiaCapabilityAudioEval.test.js.map +0 -1
  82. package/dist/__tests__/gaiaCapabilityEval.test.d.ts +0 -14
  83. package/dist/__tests__/gaiaCapabilityEval.test.js +0 -1259
  84. package/dist/__tests__/gaiaCapabilityEval.test.js.map +0 -1
  85. package/dist/__tests__/gaiaCapabilityFilesEval.test.d.ts +0 -15
  86. package/dist/__tests__/gaiaCapabilityFilesEval.test.js +0 -914
  87. package/dist/__tests__/gaiaCapabilityFilesEval.test.js.map +0 -1
  88. package/dist/__tests__/gaiaCapabilityMediaEval.test.d.ts +0 -15
  89. package/dist/__tests__/gaiaCapabilityMediaEval.test.js +0 -1101
  90. package/dist/__tests__/gaiaCapabilityMediaEval.test.js.map +0 -1
  91. package/dist/__tests__/helpers/answerMatch.d.ts +0 -41
  92. package/dist/__tests__/helpers/answerMatch.js +0 -267
  93. package/dist/__tests__/helpers/answerMatch.js.map +0 -1
  94. package/dist/__tests__/helpers/textLlm.d.ts +0 -25
  95. package/dist/__tests__/helpers/textLlm.js +0 -214
  96. package/dist/__tests__/helpers/textLlm.js.map +0 -1
  97. package/dist/__tests__/localDashboard.test.d.ts +0 -1
  98. package/dist/__tests__/localDashboard.test.js +0 -226
  99. package/dist/__tests__/localDashboard.test.js.map +0 -1
  100. package/dist/__tests__/multiHopDogfood.test.d.ts +0 -12
  101. package/dist/__tests__/multiHopDogfood.test.js +0 -303
  102. package/dist/__tests__/multiHopDogfood.test.js.map +0 -1
  103. package/dist/__tests__/openDatasetParallelEval.test.d.ts +0 -7
  104. package/dist/__tests__/openDatasetParallelEval.test.js +0 -209
  105. package/dist/__tests__/openDatasetParallelEval.test.js.map +0 -1
  106. package/dist/__tests__/openDatasetParallelEvalGaia.test.d.ts +0 -7
  107. package/dist/__tests__/openDatasetParallelEvalGaia.test.js +0 -279
  108. package/dist/__tests__/openDatasetParallelEvalGaia.test.js.map +0 -1
  109. package/dist/__tests__/openDatasetParallelEvalSwebench.test.d.ts +0 -7
  110. package/dist/__tests__/openDatasetParallelEvalSwebench.test.js +0 -220
  111. package/dist/__tests__/openDatasetParallelEvalSwebench.test.js.map +0 -1
  112. package/dist/__tests__/openDatasetParallelEvalToolbench.test.d.ts +0 -7
  113. package/dist/__tests__/openDatasetParallelEvalToolbench.test.js +0 -218
  114. package/dist/__tests__/openDatasetParallelEvalToolbench.test.js.map +0 -1
  115. package/dist/__tests__/openDatasetPerfComparison.test.d.ts +0 -10
  116. package/dist/__tests__/openDatasetPerfComparison.test.js +0 -318
  117. package/dist/__tests__/openDatasetPerfComparison.test.js.map +0 -1
  118. package/dist/__tests__/openclawDogfood.test.d.ts +0 -23
  119. package/dist/__tests__/openclawDogfood.test.js +0 -535
  120. package/dist/__tests__/openclawDogfood.test.js.map +0 -1
  121. package/dist/__tests__/openclawMessaging.test.d.ts +0 -14
  122. package/dist/__tests__/openclawMessaging.test.js +0 -232
  123. package/dist/__tests__/openclawMessaging.test.js.map +0 -1
  124. package/dist/__tests__/presetRealWorldBench.test.d.ts +0 -1
  125. package/dist/__tests__/presetRealWorldBench.test.js +0 -859
  126. package/dist/__tests__/presetRealWorldBench.test.js.map +0 -1
  127. package/dist/__tests__/tools.test.d.ts +0 -1
  128. package/dist/__tests__/tools.test.js +0 -3201
  129. package/dist/__tests__/tools.test.js.map +0 -1
  130. package/dist/__tests__/toolsetGatingEval.test.d.ts +0 -1
  131. package/dist/__tests__/toolsetGatingEval.test.js +0 -1099
  132. package/dist/__tests__/toolsetGatingEval.test.js.map +0 -1
  133. package/dist/__tests__/traceabilityDogfood.test.d.ts +0 -12
  134. package/dist/__tests__/traceabilityDogfood.test.js +0 -241
  135. package/dist/__tests__/traceabilityDogfood.test.js.map +0 -1
  136. package/dist/__tests__/webmcpTools.test.d.ts +0 -7
  137. package/dist/__tests__/webmcpTools.test.js +0 -195
  138. package/dist/__tests__/webmcpTools.test.js.map +0 -1
  139. package/dist/benchmarks/testProviderBus.d.ts +0 -7
  140. package/dist/benchmarks/testProviderBus.js +0 -272
  141. package/dist/benchmarks/testProviderBus.js.map +0 -1
  142. package/dist/hooks/postCompaction.d.ts +0 -14
  143. package/dist/hooks/postCompaction.js +0 -51
  144. package/dist/hooks/postCompaction.js.map +0 -1
  145. package/dist/security/__tests__/security.test.d.ts +0 -8
  146. package/dist/security/__tests__/security.test.js +0 -295
  147. package/dist/security/__tests__/security.test.js.map +0 -1
  148. package/dist/sync/hyperloopEval.test.d.ts +0 -4
  149. package/dist/sync/hyperloopEval.test.js +0 -60
  150. package/dist/sync/hyperloopEval.test.js.map +0 -1
  151. package/dist/sync/store.test.d.ts +0 -4
  152. package/dist/sync/store.test.js +0 -43
  153. package/dist/sync/store.test.js.map +0 -1
  154. package/dist/tools/documentTools.d.ts +0 -5
  155. package/dist/tools/documentTools.js +0 -524
  156. package/dist/tools/documentTools.js.map +0 -1
  157. package/dist/tools/financialTools.d.ts +0 -10
  158. package/dist/tools/financialTools.js +0 -403
  159. package/dist/tools/financialTools.js.map +0 -1
  160. package/dist/tools/memoryTools.d.ts +0 -5
  161. package/dist/tools/memoryTools.js +0 -137
  162. package/dist/tools/memoryTools.js.map +0 -1
  163. package/dist/tools/planningTools.d.ts +0 -5
  164. package/dist/tools/planningTools.js +0 -147
  165. package/dist/tools/planningTools.js.map +0 -1
  166. package/dist/tools/searchTools.d.ts +0 -5
  167. package/dist/tools/searchTools.js +0 -145
  168. package/dist/tools/searchTools.js.map +0 -1
@@ -1,272 +0,0 @@
1
- /**
2
- * testProviderBus.ts — Integration test for ProviderBus WebSocket event bus.
3
- *
4
- * Tests: auth, registration, event routing, disconnect cleanup.
5
- * Run: npx tsx src/benchmarks/testProviderBus.ts
6
- */
7
- import { createServer } from "node:http";
8
- import { WebSocket } from "ws";
9
- import { ProviderBus, } from "../../../../server/providerBus.js";
10
- import { generateApiKey, getMemoryStore, } from "../../../../server/mcpAuth.js";
11
- // ═══════════════════════════════════════════════════════════════════════════
12
- // Test helpers
13
- // ═══════════════════════════════════════════════════════════════════════════
14
- const results = [];
15
- function record(name, pass, detail) {
16
- results.push({ name, pass, detail });
17
- const icon = pass ? "PASS" : "FAIL";
18
- console.log(` [${icon}] ${name}${detail ? ` — ${detail}` : ""}`);
19
- }
20
- /** Wait for a WS message matching a predicate, with timeout. */
21
- function waitForMessage(ws, predicate, timeoutMs = 5000) {
22
- return new Promise((resolve, reject) => {
23
- const timer = setTimeout(() => {
24
- ws.removeListener("message", handler);
25
- reject(new Error(`Timed out waiting for message (${timeoutMs}ms)`));
26
- }, timeoutMs);
27
- function handler(data) {
28
- try {
29
- const parsed = JSON.parse(typeof data === "string" ? data : data.toString("utf-8"));
30
- if (predicate(parsed)) {
31
- clearTimeout(timer);
32
- ws.removeListener("message", handler);
33
- resolve(parsed);
34
- }
35
- }
36
- catch {
37
- // ignore parse errors, keep waiting
38
- }
39
- }
40
- ws.on("message", handler);
41
- });
42
- }
43
- /** Connect a WS client to the bus with Bearer auth. Returns the ws + first message. */
44
- function connectClient(port, apiKey) {
45
- return new Promise((resolve, reject) => {
46
- const ws = new WebSocket(`ws://127.0.0.1:${port}/bus`, {
47
- headers: { Authorization: `Bearer ${apiKey}` },
48
- });
49
- let firstMessage = null;
50
- let resolved = false;
51
- ws.on("message", (data) => {
52
- if (!firstMessage) {
53
- try {
54
- firstMessage = JSON.parse(typeof data === "string" ? data : data.toString("utf-8"));
55
- }
56
- catch { /* ignore */ }
57
- if (!resolved) {
58
- resolved = true;
59
- resolve({ ws, firstMessage });
60
- }
61
- }
62
- });
63
- ws.on("open", () => {
64
- // Give a brief window for the welcome message to arrive
65
- setTimeout(() => {
66
- if (!resolved) {
67
- resolved = true;
68
- resolve({ ws, firstMessage });
69
- }
70
- }, 500);
71
- });
72
- ws.on("error", (err) => {
73
- if (!resolved) {
74
- resolved = true;
75
- reject(err);
76
- }
77
- });
78
- });
79
- }
80
- // ═══════════════════════════════════════════════════════════════════════════
81
- // Setup: HTTP server + ProviderBus + seed an API key
82
- // ═══════════════════════════════════════════════════════════════════════════
83
- async function run() {
84
- console.log("\n=== ProviderBus Integration Tests ===\n");
85
- // 1. Generate a valid API key and seed it into the in-memory store
86
- const generated = generateApiKey();
87
- const rawKey = generated.rawKey;
88
- const store = getMemoryStore();
89
- const keyRecord = {
90
- keyHash: generated.keyHash,
91
- keyHashPrefix: generated.keyHashPrefix,
92
- userId: "test-user-1",
93
- permissions: ["tools:read", "tools:execute"],
94
- rateLimits: { perMinute: 100, perDay: 10_000 },
95
- createdAt: Date.now(),
96
- lastUsedAt: Date.now(),
97
- revokedAt: null,
98
- };
99
- store.set(generated.keyHashPrefix, keyRecord);
100
- // 2. Create HTTP server
101
- const httpServer = createServer((_req, res) => {
102
- res.writeHead(404);
103
- res.end();
104
- });
105
- // 3. Create ProviderBus with short timeouts for testing
106
- const busConfig = {
107
- maxConnections: 10,
108
- heartbeatIntervalMs: 60_000, // long — we don't need heartbeats during test
109
- idleTimeoutMs: 60_000,
110
- rateLimitPerMinute: 100,
111
- };
112
- const bus = new ProviderBus(busConfig);
113
- bus.attachToServer(httpServer, "/bus");
114
- // Wire upgrade handling
115
- httpServer.on("upgrade", (req, socket, head) => {
116
- const url = new URL(req.url ?? "/", `http://127.0.0.1`);
117
- if (url.pathname === "/bus") {
118
- bus.handleUpgrade(req, socket, head).catch((err) => {
119
- console.error(` [ERROR] handleUpgrade error:`, err);
120
- });
121
- }
122
- else {
123
- socket.destroy();
124
- }
125
- });
126
- // 4. Start listening
127
- const port = await new Promise((resolve) => {
128
- httpServer.listen(0, "127.0.0.1", () => {
129
- const addr = httpServer.address();
130
- if (typeof addr === "object" && addr !== null) {
131
- resolve(addr.port);
132
- }
133
- });
134
- });
135
- console.log(` Server listening on 127.0.0.1:${port}`);
136
- console.log("");
137
- try {
138
- // ── Test 1: Connect with valid API key ──────────────────────────────
139
- let ws;
140
- try {
141
- const conn = await connectClient(port, rawKey);
142
- ws = conn.ws;
143
- const welcome = conn.firstMessage;
144
- record("Connect with valid API key", welcome !== null && welcome.type === "heartbeat" && typeof welcome.providerId === "string", welcome ? `providerId=${welcome.providerId}` : "no welcome message received");
145
- }
146
- catch (err) {
147
- record("Connect with valid API key", false, String(err));
148
- // Can't continue without a connection
149
- return;
150
- }
151
- // ── Test 2: Connect with invalid API key ─────────────────────────────
152
- try {
153
- const badConn = await connectClient(port, "nb_key_00000000000000000000000000000000");
154
- // If we get here the connection opened — wait briefly for a close
155
- await new Promise((resolve, reject) => {
156
- badConn.ws.on("close", () => resolve());
157
- badConn.ws.on("error", () => resolve());
158
- setTimeout(() => {
159
- badConn.ws.close();
160
- reject(new Error("Bad key connection was not rejected"));
161
- }, 2000);
162
- });
163
- record("Reject invalid API key", true);
164
- }
165
- catch (err) {
166
- // Connection refused or error is also acceptable (socket destroyed before upgrade completes)
167
- const msg = String(err);
168
- if (msg.includes("not rejected")) {
169
- record("Reject invalid API key", false, msg);
170
- }
171
- else {
172
- record("Reject invalid API key", true, "Connection rejected/errored as expected");
173
- }
174
- }
175
- // ── Test 3: Register as a provider ───────────────────────────────────
176
- try {
177
- ws.send(JSON.stringify({
178
- type: "register",
179
- registration: {
180
- providerName: "test-agent",
181
- providerType: "custom",
182
- capabilities: ["chat", "tool_execution"],
183
- version: "1.0.0",
184
- },
185
- }));
186
- const registered = await waitForMessage(ws, (m) => m.type === "registered", 3000);
187
- record("Register as provider", registered.type === "registered" && typeof registered.providerId === "string", `providerId=${registered.providerId}`);
188
- }
189
- catch (err) {
190
- record("Register as provider", false, String(err));
191
- }
192
- // ── Test 4: Send an event ────────────────────────────────────────────
193
- try {
194
- const eventPromise = new Promise((resolve) => {
195
- bus.once("event", (evt) => {
196
- resolve(evt.type === "chat.message" && evt.payload?.text === "hello");
197
- });
198
- setTimeout(() => resolve(false), 3000);
199
- });
200
- ws.send(JSON.stringify({
201
- type: "event",
202
- event: {
203
- type: "chat.message",
204
- payload: { text: "hello" },
205
- },
206
- }));
207
- const eventReceived = await eventPromise;
208
- record("Send event and bus emits it", eventReceived);
209
- // Verify event log
210
- const log = bus.getEventLog(10);
211
- const found = log.some((e) => e.type === "chat.message");
212
- record("Event logged in event log", found, `log size=${log.length}`);
213
- }
214
- catch (err) {
215
- record("Send event and bus emits it", false, String(err));
216
- }
217
- // ── Test 5: Health snapshot ──────────────────────────────────────────
218
- try {
219
- const health = bus.getHealthSnapshot();
220
- record("Health snapshot returns data", health.status === "healthy" && health.providers.connected >= 1, `connected=${health.providers.connected}, registered=${health.providers.registered}`);
221
- }
222
- catch (err) {
223
- record("Health snapshot returns data", false, String(err));
224
- }
225
- // ── Test 6: Connected providers list ─────────────────────────────────
226
- try {
227
- const providers = bus.getConnectedProviders();
228
- const testProvider = providers.find((p) => p.providerName === "test-agent");
229
- record("Connected providers list includes test-agent", !!testProvider && testProvider.providerType === "custom", testProvider
230
- ? `capabilities=${testProvider.capabilities.join(",")}`
231
- : "not found");
232
- }
233
- catch (err) {
234
- record("Connected providers list includes test-agent", false, String(err));
235
- }
236
- // ── Test 7: Disconnect and cleanup ──────────────────────────────────
237
- try {
238
- const disconnectPromise = new Promise((resolve) => {
239
- bus.once("provider:disconnected", () => resolve(true));
240
- setTimeout(() => resolve(false), 3000);
241
- });
242
- ws.close();
243
- const disconnected = await disconnectPromise;
244
- record("Disconnect fires provider:disconnected", disconnected);
245
- // Verify cleanup
246
- const afterProviders = bus.getConnectedProviders();
247
- record("Provider removed from connected list after disconnect", afterProviders.length === 0, `remaining=${afterProviders.length}`);
248
- }
249
- catch (err) {
250
- record("Disconnect and cleanup", false, String(err));
251
- }
252
- }
253
- finally {
254
- // Cleanup
255
- bus.shutdown();
256
- store.delete(generated.keyHashPrefix);
257
- httpServer.close();
258
- // Summary
259
- console.log("\n=== Summary ===");
260
- const passed = results.filter((r) => r.pass).length;
261
- const total = results.length;
262
- console.log(` ${passed}/${total} tests passed\n`);
263
- if (passed < total) {
264
- process.exit(1);
265
- }
266
- }
267
- }
268
- run().catch((err) => {
269
- console.error("Fatal error:", err);
270
- process.exit(1);
271
- });
272
- //# sourceMappingURL=testProviderBus.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"testProviderBus.js","sourceRoot":"","sources":["../../src/benchmarks/testProviderBus.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,YAAY,EAA6B,MAAM,WAAW,CAAC;AACpE,OAAO,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AAC/B,OAAO,EACL,WAAW,GAEZ,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,cAAc,EACd,cAAc,GAIf,MAAM,+BAA+B,CAAC;AAEvC,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAE9E,MAAM,OAAO,GAA4D,EAAE,CAAC;AAE5E,SAAS,MAAM,CAAC,IAAY,EAAE,IAAa,EAAE,MAAe;IAC1D,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IACpC,OAAO,CAAC,GAAG,CAAC,MAAM,IAAI,KAAK,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;AACpE,CAAC;AAED,gEAAgE;AAChE,SAAS,cAAc,CACrB,EAAa,EACb,SAAoD,EACpD,SAAS,GAAG,IAAI;IAEhB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,EAAE,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACtC,MAAM,CAAC,IAAI,KAAK,CAAC,kCAAkC,SAAS,KAAK,CAAC,CAAC,CAAC;QACtE,CAAC,EAAE,SAAS,CAAC,CAAC;QAEd,SAAS,OAAO,CAAC,IAAqB;YACpC,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CACvB,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAC9B,CAAC;gBAC7B,IAAI,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;oBACtB,YAAY,CAAC,KAAK,CAAC,CAAC;oBACpB,EAAE,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;oBACtC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,oCAAoC;YACtC,CAAC;QACH,CAAC;QACD,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,uFAAuF;AACvF,SAAS,aAAa,CACpB,IAAY,EACZ,MAAc;IAEd,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,kBAAkB,IAAI,MAAM,EAAE;YACrD,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,MAAM,EAAE,EAAE;SAC/C,CAAC,CAAC;QACH,IAAI,YAAY,GAAmC,IAAI,CAAC;QACxD,IAAI,QAAQ,GAAG,KAAK,CAAC;QAErB,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,IAAqB,EAAE,EAAE;YACzC,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,IAAI,CAAC;oBACH,YAAY,GAAG,IAAI,CAAC,KAAK,CACvB,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAC9B,CAAC;gBAC/B,CAAC;gBAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC;gBACxB,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,QAAQ,GAAG,IAAI,CAAC;oBAChB,OAAO,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE;YACjB,wDAAwD;YACxD,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,QAAQ,GAAG,IAAI,CAAC;oBAChB,OAAO,CAAC,EAAE,EAAE,EAAE,YAAY,EAAE,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC,EAAE,GAAG,CAAC,CAAC;QACV,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACrB,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,QAAQ,GAAG,IAAI,CAAC;gBAChB,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,8EAA8E;AAC9E,qDAAqD;AACrD,8EAA8E;AAE9E,KAAK,UAAU,GAAG;IAChB,OAAO,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;IAEzD,mEAAmE;IACnE,MAAM,SAAS,GAAG,cAAc,EAAE,CAAC;IACnC,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;IAChC,MAAM,KAAK,GAAG,cAAc,EAAE,CAAC;IAE/B,MAAM,SAAS,GAAiB;QAC9B,OAAO,EAAE,SAAS,CAAC,OAAO;QAC1B,aAAa,EAAE,SAAS,CAAC,aAAa;QACtC,MAAM,EAAE,aAAa;QACrB,WAAW,EAAE,CAAC,YAAY,EAAE,eAAe,CAAC;QAC5C,UAAU,EAAE,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE;QAC9C,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;QACrB,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;QACtB,SAAS,EAAE,IAAI;KAChB,CAAC;IACF,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IAE9C,wBAAwB;IACxB,MAAM,UAAU,GAAe,YAAY,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE;QACxD,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QACnB,GAAG,CAAC,GAAG,EAAE,CAAC;IACZ,CAAC,CAAC,CAAC;IAEH,wDAAwD;IACxD,MAAM,SAAS,GAAsB;QACnC,cAAc,EAAE,EAAE;QAClB,mBAAmB,EAAE,MAAM,EAAE,8CAA8C;QAC3E,aAAa,EAAE,MAAM;QACrB,kBAAkB,EAAE,GAAG;KACxB,CAAC;IACF,MAAM,GAAG,GAAG,IAAI,WAAW,CAAC,SAAS,CAAC,CAAC;IACvC,GAAG,CAAC,cAAc,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAEvC,wBAAwB;IACxB,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;QAC7C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,EAAE,kBAAkB,CAAC,CAAC;QACxD,IAAI,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;YAC5B,GAAG,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACjD,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAC;YACvD,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,OAAO,EAAE,CAAC;QACnB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,qBAAqB;IACrB,MAAM,IAAI,GAAG,MAAM,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;QACjD,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,WAAW,EAAE,GAAG,EAAE;YACrC,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;YAClC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBAC9C,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,mCAAmC,IAAI,EAAE,CAAC,CAAC;IAEvD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,IAAI,CAAC;QACH,uEAAuE;QACvE,IAAI,EAAa,CAAC;QAClB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YAC/C,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC;YAClC,MAAM,CACJ,4BAA4B,EAC5B,OAAO,KAAK,IAAI,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,IAAI,OAAO,OAAO,CAAC,UAAU,KAAK,QAAQ,EAC1F,OAAO,CAAC,CAAC,CAAC,cAAc,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,6BAA6B,CAC7E,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,4BAA4B,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YACzD,sCAAsC;YACtC,OAAO;QACT,CAAC;QAED,wEAAwE;QACxE,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,yCAAyC,CAAC,CAAC;YACrF,kEAAkE;YAClE,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;gBAC1C,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;gBACxC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;gBACxC,UAAU,CAAC,GAAG,EAAE;oBACd,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;oBACnB,MAAM,CAAC,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC,CAAC;gBAC3D,CAAC,EAAE,IAAI,CAAC,CAAC;YACX,CAAC,CAAC,CAAC;YACH,MAAM,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAC;QACzC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,6FAA6F;YAC7F,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YACxB,IAAI,GAAG,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC;gBACjC,MAAM,CAAC,wBAAwB,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAC/C,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,wBAAwB,EAAE,IAAI,EAAE,yCAAyC,CAAC,CAAC;YACpF,CAAC;QACH,CAAC;QAED,wEAAwE;QACxE,IAAI,CAAC;YACH,EAAE,CAAC,IAAI,CACL,IAAI,CAAC,SAAS,CAAC;gBACb,IAAI,EAAE,UAAU;gBAChB,YAAY,EAAE;oBACZ,YAAY,EAAE,YAAY;oBAC1B,YAAY,EAAE,QAAQ;oBACtB,YAAY,EAAE,CAAC,MAAM,EAAE,gBAAgB,CAAC;oBACxC,OAAO,EAAE,OAAO;iBACjB;aACF,CAAC,CACH,CAAC;YAEF,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,YAAY,EAAE,IAAI,CAAC,CAAC;YAClF,MAAM,CACJ,sBAAsB,EACtB,UAAU,CAAC,IAAI,KAAK,YAAY,IAAI,OAAO,UAAU,CAAC,UAAU,KAAK,QAAQ,EAC7E,cAAc,UAAU,CAAC,UAAU,EAAE,CACtC,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,sBAAsB,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACrD,CAAC;QAED,wEAAwE;QACxE,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE;gBACpD,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;oBACxB,OAAO,CAAC,GAAG,CAAC,IAAI,KAAK,cAAc,IAAI,GAAG,CAAC,OAAO,EAAE,IAAI,KAAK,OAAO,CAAC,CAAC;gBACxE,CAAC,CAAC,CAAC;gBACH,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,IAAI,CACL,IAAI,CAAC,SAAS,CAAC;gBACb,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE;oBACL,IAAI,EAAE,cAAc;oBACpB,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;iBAC3B;aACF,CAAC,CACH,CAAC;YAEF,MAAM,aAAa,GAAG,MAAM,YAAY,CAAC;YACzC,MAAM,CAAC,6BAA6B,EAAE,aAAa,CAAC,CAAC;YAErD,mBAAmB;YACnB,MAAM,GAAG,GAAG,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;YAChC,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;YACzD,MAAM,CAAC,2BAA2B,EAAE,KAAK,EAAE,YAAY,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;QACvE,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,6BAA6B,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5D,CAAC;QAED,wEAAwE;QACxE,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,GAAG,CAAC,iBAAiB,EAAE,CAAC;YACvC,MAAM,CACJ,8BAA8B,EAC9B,MAAM,CAAC,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,SAAS,CAAC,SAAS,IAAI,CAAC,EAC9D,aAAa,MAAM,CAAC,SAAS,CAAC,SAAS,gBAAgB,MAAM,CAAC,SAAS,CAAC,UAAU,EAAE,CACrF,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,8BAA8B,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7D,CAAC;QAED,wEAAwE;QACxE,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,GAAG,CAAC,qBAAqB,EAAE,CAAC;YAC9C,MAAM,YAAY,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,KAAK,YAAY,CAAC,CAAC;YAC5E,MAAM,CACJ,8CAA8C,EAC9C,CAAC,CAAC,YAAY,IAAI,YAAY,CAAC,YAAY,KAAK,QAAQ,EACxD,YAAY;gBACV,CAAC,CAAC,gBAAgB,YAAY,CAAC,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBACvD,CAAC,CAAC,WAAW,CAChB,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,8CAA8C,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7E,CAAC;QAED,uEAAuE;QACvE,IAAI,CAAC;YACH,MAAM,iBAAiB,GAAG,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE;gBACzD,GAAG,CAAC,IAAI,CAAC,uBAAuB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;gBACvD,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;YACzC,CAAC,CAAC,CAAC;YAEH,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,YAAY,GAAG,MAAM,iBAAiB,CAAC;YAC7C,MAAM,CAAC,wCAAwC,EAAE,YAAY,CAAC,CAAC;YAE/D,iBAAiB;YACjB,MAAM,cAAc,GAAG,GAAG,CAAC,qBAAqB,EAAE,CAAC;YACnD,MAAM,CACJ,uDAAuD,EACvD,cAAc,CAAC,MAAM,KAAK,CAAC,EAC3B,aAAa,cAAc,CAAC,MAAM,EAAE,CACrC,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,CAAC,wBAAwB,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;YAAS,CAAC;QACT,UAAU;QACV,GAAG,CAAC,QAAQ,EAAE,CAAC;QACf,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACtC,UAAU,CAAC,KAAK,EAAE,CAAC;QAEnB,UAAU;QACV,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;QACpD,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,IAAI,KAAK,iBAAiB,CAAC,CAAC;QAEnD,IAAI,MAAM,GAAG,KAAK,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;AACH,CAAC;AAED,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IAClB,OAAO,CAAC,KAAK,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;IACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -1,14 +0,0 @@
1
- #!/usr/bin/env npx tsx
2
- /**
3
- * Post-Compaction Hook for Claude Code
4
- *
5
- * Called after context compaction. Stdout is injected as a system message
6
- * into the new compacted context, allowing session continuity.
7
- *
8
- * Usage:
9
- * npx tsx packages/mcp-local/src/hooks/postCompaction.ts
10
- *
11
- * Wire in .claude/hooks.json:
12
- * { "hooks": { "PostCompaction": [{ "type": "command", "command": "npx tsx ./packages/mcp-local/src/hooks/postCompaction.ts" }] } }
13
- */
14
- export {};
@@ -1,51 +0,0 @@
1
- #!/usr/bin/env npx tsx
2
- // @ts-nocheck — standalone CLI hook; not part of the library build
3
- /**
4
- * Post-Compaction Hook for Claude Code
5
- *
6
- * Called after context compaction. Stdout is injected as a system message
7
- * into the new compacted context, allowing session continuity.
8
- *
9
- * Usage:
10
- * npx tsx packages/mcp-local/src/hooks/postCompaction.ts
11
- *
12
- * Wire in .claude/hooks.json:
13
- * { "hooks": { "PostCompaction": [{ "type": "command", "command": "npx tsx ./packages/mcp-local/src/hooks/postCompaction.ts" }] } }
14
- */
15
- const FALLBACK_PROMPT = `NodeBench session context: Use summarize_session to recover prior state. Use get_proactive_alerts for pending items. Use founder_deep_context_gather for packet preparation.`;
16
- async function main() {
17
- try {
18
- // Dynamic import to handle the case where founderTrackingTools doesn't export get_compaction_recovery
19
- const mod = await import("../tools/founderTrackingTools.js");
20
- // The tools array is the default export — find the compaction recovery tool
21
- const tools = mod.founderTrackingTools ?? mod.default ?? [];
22
- const recoveryTool = tools.find((t) => t.name === "get_compaction_recovery");
23
- if (!recoveryTool) {
24
- // Tool not registered yet — use fallback
25
- console.log(FALLBACK_PROMPT);
26
- return;
27
- }
28
- const result = await recoveryTool.handler({});
29
- const text = result?.content?.[0]?.text;
30
- if (!text) {
31
- console.log(FALLBACK_PROMPT);
32
- return;
33
- }
34
- // Parse the JSON response to extract injectionPrompt
35
- const parsed = JSON.parse(text);
36
- if (parsed.injectionPrompt && typeof parsed.injectionPrompt === "string") {
37
- console.log(parsed.injectionPrompt);
38
- }
39
- else {
40
- // Tool returned data but no injectionPrompt field — print the raw text
41
- console.log(text);
42
- }
43
- }
44
- catch {
45
- // Any failure (module not found, DB not ready, parse error) — degrade gracefully
46
- console.log(FALLBACK_PROMPT);
47
- }
48
- }
49
- main();
50
- export {};
51
- //# sourceMappingURL=postCompaction.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"postCompaction.js","sourceRoot":"","sources":["../../src/hooks/postCompaction.ts"],"names":[],"mappings":";AACA,mEAAmE;AACnE;;;;;;;;;;;GAWG;AAEH,MAAM,eAAe,GAAG,8KAA8K,CAAC;AAEvM,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,sGAAsG;QACtG,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,kCAAkC,CAAC,CAAC;QAE7D,4EAA4E;QAC5E,MAAM,KAAK,GACT,GAAG,CAAC,oBAAoB,IAAI,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;QAEhD,MAAM,YAAY,GAAG,KAAK,CAAC,IAAI,CAC7B,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,yBAAyB,CAC5C,CAAC;QAEF,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,yCAAyC;YACzC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAC7B,OAAO;QACT,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAC9C,MAAM,IAAI,GAAG,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC;QAExC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAC7B,OAAO;QACT,CAAC;QAED,qDAAqD;QACrD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,MAAM,CAAC,eAAe,IAAI,OAAO,MAAM,CAAC,eAAe,KAAK,QAAQ,EAAE,CAAC;YACzE,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,uEAAuE;YACvE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,iFAAiF;QACjF,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC/B,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
@@ -1,8 +0,0 @@
1
- /**
2
- * Security module tests — scenario-based, covering all 4 layers.
3
- *
4
- * Personas:
5
- * - Mallory: Attacker trying to exfiltrate credentials via MCP tools
6
- * - Alice: Legitimate user running builds, tests, git commands
7
- */
8
- export {};