shieldcortex 2.4.10 → 2.4.13

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 (100) hide show
  1. package/dashboard/.next/standalone/dashboard/.next/BUILD_ID +1 -1
  2. package/dashboard/.next/standalone/dashboard/.next/build-manifest.json +2 -2
  3. package/dashboard/.next/standalone/dashboard/.next/prerender-manifest.json +3 -3
  4. package/dashboard/.next/standalone/dashboard/.next/required-server-files.json +4 -4
  5. package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.html +2 -2
  6. package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.rsc +1 -1
  7. package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  8. package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  9. package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  10. package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  11. package/dashboard/.next/standalone/dashboard/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  12. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.html +1 -1
  13. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.rsc +1 -1
  14. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_full.segment.rsc +1 -1
  15. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  16. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_index.segment.rsc +1 -1
  17. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  18. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  19. package/dashboard/.next/standalone/dashboard/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  20. package/dashboard/.next/standalone/dashboard/.next/server/app/index.html +1 -1
  21. package/dashboard/.next/standalone/dashboard/.next/server/app/index.rsc +1 -1
  22. package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  23. package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/_full.segment.rsc +1 -1
  24. package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/_head.segment.rsc +1 -1
  25. package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/_index.segment.rsc +1 -1
  26. package/dashboard/.next/standalone/dashboard/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  27. package/dashboard/.next/standalone/dashboard/.next/server/pages/404.html +1 -1
  28. package/dashboard/.next/standalone/dashboard/.next/server/pages/500.html +2 -2
  29. package/dashboard/.next/standalone/dashboard/.next/server/server-reference-manifest.js +1 -1
  30. package/dashboard/.next/standalone/dashboard/.next/server/server-reference-manifest.json +1 -1
  31. package/dashboard/.next/standalone/dashboard/node_modules/@img/{sharp-libvips-darwin-arm64 → sharp-libvips-linux-x64}/README.md +2 -2
  32. package/dashboard/.next/standalone/dashboard/node_modules/@img/{sharp-libvips-darwin-arm64 → sharp-libvips-linux-x64}/lib/glib-2.0/include/glibconfig.h +9 -8
  33. package/dashboard/.next/standalone/dashboard/node_modules/@img/{sharp-libvips-darwin-arm64/lib/libvips-cpp.8.17.3.dylib → sharp-libvips-linux-x64/lib/libvips-cpp.so.8.17.3} +0 -0
  34. package/dashboard/.next/standalone/dashboard/node_modules/@img/{sharp-libvips-darwin-arm64 → sharp-libvips-linux-x64}/package.json +11 -5
  35. package/dashboard/.next/standalone/dashboard/node_modules/@img/sharp-libvips-linuxmusl-x64/README.md +46 -0
  36. package/dashboard/.next/standalone/dashboard/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/glib-2.0/include/glibconfig.h +221 -0
  37. package/dashboard/.next/standalone/dashboard/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/index.js +1 -0
  38. package/dashboard/.next/standalone/dashboard/node_modules/@img/sharp-libvips-linuxmusl-x64/lib/libvips-cpp.so.8.17.3 +0 -0
  39. package/dashboard/.next/standalone/dashboard/node_modules/@img/sharp-libvips-linuxmusl-x64/package.json +42 -0
  40. package/dashboard/.next/standalone/dashboard/node_modules/@img/sharp-libvips-linuxmusl-x64/versions.json +30 -0
  41. package/dashboard/.next/standalone/dashboard/node_modules/@img/sharp-linux-x64/lib/sharp-linux-x64.node +0 -0
  42. package/dashboard/.next/standalone/dashboard/node_modules/@img/{sharp-darwin-arm64 → sharp-linux-x64}/package.json +13 -7
  43. package/dashboard/.next/standalone/dashboard/node_modules/@img/sharp-linuxmusl-x64/lib/sharp-linuxmusl-x64.node +0 -0
  44. package/dashboard/.next/standalone/dashboard/node_modules/@img/sharp-linuxmusl-x64/package.json +46 -0
  45. package/dashboard/.next/standalone/dashboard/server.js +1 -1
  46. package/dashboard/.next/standalone/node_modules/@img/{sharp-libvips-darwin-arm64 → sharp-libvips-linux-x64}/package.json +11 -5
  47. package/dashboard/.next/standalone/node_modules/@img/sharp-libvips-linuxmusl-x64/package.json +42 -0
  48. package/dashboard/.next/standalone/node_modules/@img/{sharp-darwin-arm64 → sharp-linux-x64}/package.json +13 -7
  49. package/dashboard/.next/standalone/node_modules/@img/sharp-linuxmusl-x64/package.json +46 -0
  50. package/dist/api/visualization-server.js +4 -4
  51. package/dist/api/visualization-server.js.map +1 -1
  52. package/dist/defence/__tests__/env-detector.test.js +2 -1
  53. package/dist/defence/__tests__/env-detector.test.js.map +1 -1
  54. package/dist/defence/firewall/anomaly-scorer.d.ts.map +1 -1
  55. package/dist/defence/firewall/anomaly-scorer.js +34 -0
  56. package/dist/defence/firewall/anomaly-scorer.js.map +1 -1
  57. package/dist/defence/firewall/index.js +21 -3
  58. package/dist/defence/firewall/index.js.map +1 -1
  59. package/dist/defence/firewall/instruction-detector.d.ts.map +1 -1
  60. package/dist/defence/firewall/instruction-detector.js +17 -5
  61. package/dist/defence/firewall/instruction-detector.js.map +1 -1
  62. package/dist/defence/fragmentation/temporal-analyzer.d.ts +1 -1
  63. package/dist/defence/fragmentation/temporal-analyzer.d.ts.map +1 -1
  64. package/dist/defence/fragmentation/temporal-analyzer.js +4 -3
  65. package/dist/defence/fragmentation/temporal-analyzer.js.map +1 -1
  66. package/dist/defence/pipeline.d.ts +1 -1
  67. package/dist/defence/pipeline.js +15 -15
  68. package/dist/defence/pipeline.js.map +1 -1
  69. package/dist/defence/trust/env-detector.d.ts +1 -1
  70. package/dist/defence/trust/env-detector.js +3 -3
  71. package/dist/defence/trust/env-detector.js.map +1 -1
  72. package/dist/defence/types.d.ts +1 -1
  73. package/dist/defence/types.d.ts.map +1 -1
  74. package/dist/defence/types.js.map +1 -1
  75. package/dist/index.js +42 -9
  76. package/dist/index.js.map +1 -1
  77. package/dist/integrations/langchain.d.ts +6 -2
  78. package/dist/integrations/langchain.d.ts.map +1 -1
  79. package/dist/integrations/langchain.js +14 -4
  80. package/dist/integrations/langchain.js.map +1 -1
  81. package/dist/server.d.ts.map +1 -1
  82. package/dist/server.js +5 -2
  83. package/dist/server.js.map +1 -1
  84. package/dist/tools/remember.d.ts +5 -5
  85. package/dist/tools/remember.d.ts.map +1 -1
  86. package/dist/tools/remember.js +25 -10
  87. package/dist/tools/remember.js.map +1 -1
  88. package/hooks/openclaw/cortex-memory/HOOK.md +30 -2
  89. package/hooks/openclaw/cortex-memory/handler.js +142 -36
  90. package/package.json +1 -1
  91. package/dashboard/.next/standalone/dashboard/node_modules/@img/sharp-darwin-arm64/lib/sharp-darwin-arm64.node +0 -0
  92. package/dist/setup/clawdbot.d.ts +0 -15
  93. package/dist/setup/clawdbot.d.ts.map +0 -1
  94. package/dist/setup/clawdbot.js +0 -118
  95. package/dist/setup/clawdbot.js.map +0 -1
  96. /package/dashboard/.next/standalone/dashboard/.next/static/{iswq9TJJVHZDUWYSMMM-2 → sxZYns1tvtphU9mDWg3i2}/_buildManifest.js +0 -0
  97. /package/dashboard/.next/standalone/dashboard/.next/static/{iswq9TJJVHZDUWYSMMM-2 → sxZYns1tvtphU9mDWg3i2}/_clientMiddlewareManifest.json +0 -0
  98. /package/dashboard/.next/standalone/dashboard/.next/static/{iswq9TJJVHZDUWYSMMM-2 → sxZYns1tvtphU9mDWg3i2}/_ssgManifest.js +0 -0
  99. /package/dashboard/.next/standalone/dashboard/node_modules/@img/{sharp-libvips-darwin-arm64 → sharp-libvips-linux-x64}/lib/index.js +0 -0
  100. /package/dashboard/.next/standalone/dashboard/node_modules/@img/{sharp-libvips-darwin-arm64 → sharp-libvips-linux-x64}/versions.json +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"remember.js","sourceRoot":"","sources":["../../src/tools/remember.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remember.js","sourceRoot":"","sources":["../../src/tools/remember.ts"],"names":[],"mappings":"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"}
@@ -37,8 +37,36 @@ Integrates [ShieldCortex](https://github.com/Drakon-Systems-Ltd/ShieldCortex) pe
37
37
  3. Agent starts with knowledge of past sessions
38
38
 
39
39
  ### Keyword Triggers
40
- - Say **"remember this"** or **"don't forget"** followed by content
41
- - Auto-saves to Cortex with critical importance
40
+
41
+ Say any of these phrases to trigger an instant save to Cortex memory:
42
+
43
+ | Trigger Phrase | Category | Importance |
44
+ |---------------|----------|------------|
45
+ | **"remember this"** | note | critical |
46
+ | **"don't forget"** | note | critical |
47
+ | **"this is important"** | note | critical |
48
+ | **"make a note"** | note | critical |
49
+ | **"for the record"** | note | critical |
50
+ | **"note to self"** | note | critical |
51
+ | **"important:"** | note | critical |
52
+ | **"crucial:"** | note | critical |
53
+ | **"key point:"** | note | high |
54
+ | **"lesson learned"** | learning | high |
55
+ | **"i learned"** | learning | normal |
56
+ | **"TIL:"** | learning | normal |
57
+ | **"today i learned"** | learning | normal |
58
+ | **"never again"** | error | critical |
59
+ | **"root cause was"** | error | high |
60
+ | **"the fix was"** | error | high |
61
+ | **"always do"** | preference | high |
62
+ | **"never do"** | preference | high |
63
+ | **"i prefer"** | preference | normal |
64
+ | **"we should always"** | preference | high |
65
+ | **"we decided"** | architecture | high |
66
+ | **"decision made"** | architecture | high |
67
+ | **"going with"** | architecture | normal |
68
+
69
+ Content after the trigger phrase is extracted and saved as the memory content.
42
70
 
43
71
  ## Requirements
44
72
 
@@ -15,9 +15,10 @@ import fs from "node:fs/promises";
15
15
  * Call a ShieldCortex MCP tool via mcporter
16
16
  * @param {string} tool - Tool name (e.g., "remember", "recall", "get_context")
17
17
  * @param {Record<string, string>} args - Tool arguments as key:value pairs
18
+ * @param {object} options - Options { retries: number, timeout: number }
18
19
  * @returns {Promise<string|null>} Raw stdout or null on error
19
20
  */
20
- function callCortex(tool, args = {}) {
21
+ function callCortex(tool, args = {}, options = { retries: 1, timeout: 15000 }) {
21
22
  return new Promise((resolve) => {
22
23
  const cmdArgs = [
23
24
  "mcporter", "call", "--stdio",
@@ -30,17 +31,36 @@ function callCortex(tool, args = {}) {
30
31
  cmdArgs.push(`${key}:${safe}`);
31
32
  }
32
33
 
33
- execFile("npx", cmdArgs, {
34
- timeout: 15000,
35
- maxBuffer: 1024 * 256,
36
- }, (err, stdout) => {
37
- if (err) {
38
- console.error(`[cortex-memory] mcporter error (${tool}):`, err.message);
39
- resolve(null);
40
- return;
41
- }
42
- resolve(stdout?.trim() || null);
43
- });
34
+ let attempts = 0;
35
+ const maxAttempts = (options.retries || 0) + 1;
36
+
37
+ function attempt() {
38
+ attempts++;
39
+ execFile("npx", cmdArgs, {
40
+ timeout: options.timeout || 15000,
41
+ maxBuffer: 1024 * 256,
42
+ }, (err, stdout) => {
43
+ if (err) {
44
+ // Distinguish timeout from other errors
45
+ const isTimeout = err.killed || err.code === "ETIMEDOUT" || err.signal === "SIGTERM";
46
+ const errorType = isTimeout ? "TIMEOUT" : "ERROR";
47
+
48
+ if (attempts < maxAttempts) {
49
+ console.warn(`[cortex-memory] ${errorType} on ${tool} (attempt ${attempts}/${maxAttempts}), retrying...`);
50
+ setTimeout(attempt, 1000); // 1s delay before retry
51
+ return;
52
+ }
53
+
54
+ console.error(`[cortex-memory] ${errorType} on ${tool} after ${attempts} attempt(s):`, err.message);
55
+ if (err.code) console.error(`[cortex-memory] Error code: ${err.code}`);
56
+ resolve(null);
57
+ return;
58
+ }
59
+ resolve(stdout?.trim() || null);
60
+ });
61
+ }
62
+
63
+ attempt();
44
64
  });
45
65
  }
46
66
 
@@ -256,48 +276,130 @@ async function onBootstrap(event) {
256
276
  }
257
277
 
258
278
  /**
259
- * Handle command events check for keyword triggers
279
+ * Keyword triggers with their categories and importance levels
280
+ * Order matters: more specific triggers should come first
260
281
  */
261
- async function onKeywordTrigger(event) {
262
- if (event.action === "new" || event.action === "stop" || event.action === "clear" || event.action === "exit") return;
282
+ const KEYWORD_TRIGGERS = [
283
+ // Learning triggers
284
+ { phrase: "lesson learned", category: "learning", importance: "high" },
285
+ { phrase: "i learned", category: "learning", importance: "normal" },
286
+ { phrase: "til:", category: "learning", importance: "normal" },
287
+ { phrase: "today i learned", category: "learning", importance: "normal" },
288
+
289
+ // Error/prevention triggers
290
+ { phrase: "never again", category: "error", importance: "critical" },
291
+ { phrase: "root cause was", category: "error", importance: "high" },
292
+ { phrase: "the fix was", category: "error", importance: "high" },
293
+
294
+ // Preference triggers
295
+ { phrase: "always do", category: "preference", importance: "high" },
296
+ { phrase: "never do", category: "preference", importance: "high" },
297
+ { phrase: "i prefer", category: "preference", importance: "normal" },
298
+ { phrase: "we should always", category: "preference", importance: "high" },
299
+
300
+ // Architecture/decision triggers
301
+ { phrase: "we decided", category: "architecture", importance: "high" },
302
+ { phrase: "decision made", category: "architecture", importance: "high" },
303
+ { phrase: "going with", category: "architecture", importance: "normal" },
304
+
305
+ // Explicit memory triggers (highest priority - always critical)
306
+ { phrase: "remember this", category: "note", importance: "critical" },
307
+ { phrase: "don't forget", category: "note", importance: "critical" },
308
+ { phrase: "dont forget", category: "note", importance: "critical" },
309
+ { phrase: "this is important", category: "note", importance: "critical" },
310
+ { phrase: "make a note", category: "note", importance: "critical" },
311
+ { phrase: "for the record", category: "note", importance: "critical" },
312
+ { phrase: "note to self", category: "note", importance: "critical" },
313
+ { phrase: "important:", category: "note", importance: "critical" },
314
+ { phrase: "key point:", category: "note", importance: "high" },
315
+ { phrase: "crucial:", category: "note", importance: "critical" },
316
+ ];
263
317
 
264
- const context = event.context || {};
265
- const sessionEntry = context.sessionEntry || {};
266
- const lastMessage = context.lastUserMessage || sessionEntry.lastUserMessage;
267
- if (!lastMessage || typeof lastMessage !== "string") return;
268
-
269
- const lower = lastMessage.toLowerCase();
270
- const triggers = ["remember this", "don't forget", "dont forget"];
271
- const triggered = triggers.some((t) => lower.includes(t));
272
- if (!triggered) return;
273
-
274
- let content = lastMessage;
275
- for (const t of triggers) {
276
- const idx = lower.indexOf(t);
318
+ /**
319
+ * Check message text for keyword triggers and save to memory
320
+ * @param {string} messageText - The user's message text
321
+ * @param {object} event - The event object for pushing response messages
322
+ * @returns {Promise<boolean>} Whether a memory was saved
323
+ */
324
+ async function checkAndSaveKeywordTrigger(messageText, event) {
325
+ if (!messageText || typeof messageText !== "string") return false;
326
+
327
+ const lower = messageText.toLowerCase();
328
+
329
+ // Find the first matching trigger
330
+ let matchedTrigger = null;
331
+ let matchIdx = -1;
332
+
333
+ for (const trigger of KEYWORD_TRIGGERS) {
334
+ const idx = lower.indexOf(trigger.phrase);
277
335
  if (idx !== -1) {
278
- content = lastMessage.slice(idx + t.length).replace(/^[:\s]+/, "").trim();
336
+ matchedTrigger = trigger;
337
+ matchIdx = idx;
279
338
  break;
280
339
  }
281
340
  }
282
-
283
- if (content.length < 5) return;
341
+
342
+ if (!matchedTrigger) return false;
343
+
344
+ // Extract content after the trigger phrase
345
+ let content = messageText.slice(matchIdx + matchedTrigger.phrase.length).replace(/^[:\s]+/, "").trim();
346
+
347
+ // If content is too short, use the whole message as context
348
+ if (content.length < 5) {
349
+ content = messageText;
350
+ }
284
351
 
285
352
  const title = content.slice(0, 80).replace(/["\n]/g, " ").trim();
286
353
 
287
354
  const result = await callCortex("remember", {
288
355
  title,
289
356
  content: content.slice(0, 500),
290
- category: "note",
357
+ category: matchedTrigger.category,
291
358
  project: "openclaw",
292
359
  scope: "global",
293
- importance: "critical",
294
- tags: "keyword-trigger,openclaw-hook",
360
+ importance: matchedTrigger.importance,
361
+ tags: `keyword-trigger,openclaw-hook,trigger:${matchedTrigger.phrase.replace(/\s+/g, "-")}`,
295
362
  });
296
363
 
297
364
  if (result) {
298
- event.messages.push(`Saved to Cortex memory: "${title}"`);
299
- console.log(`[cortex-memory] Keyword trigger saved: ${title}`);
365
+ if (event.messages) {
366
+ event.messages.push(`✅ Saved to Cortex memory (${matchedTrigger.category}): "${title}"`);
367
+ }
368
+ console.log(`[cortex-memory] Keyword trigger "${matchedTrigger.phrase}" saved: ${title}`);
369
+ return true;
300
370
  }
371
+ return false;
372
+ }
373
+
374
+ /**
375
+ * Handle message events — check for keyword triggers in user messages
376
+ * This is the FIX: keyword triggers must work on message events, not just commands
377
+ */
378
+ async function onMessageKeywordTrigger(event) {
379
+ // Only process user messages
380
+ if (event.role !== "user") return;
381
+
382
+ // Get message content - handle both string and array formats
383
+ let messageText = event.content;
384
+ if (Array.isArray(messageText)) {
385
+ const textBlock = messageText.find((c) => c.type === "text");
386
+ messageText = textBlock?.text || "";
387
+ }
388
+
389
+ await checkAndSaveKeywordTrigger(messageText, event);
390
+ }
391
+
392
+ /**
393
+ * Handle command events — check for keyword triggers (legacy/fallback)
394
+ */
395
+ async function onKeywordTrigger(event) {
396
+ if (event.action === "new" || event.action === "stop" || event.action === "clear" || event.action === "exit") return;
397
+
398
+ const context = event.context || {};
399
+ const sessionEntry = context.sessionEntry || {};
400
+ const lastMessage = context.lastUserMessage || sessionEntry.lastUserMessage;
401
+
402
+ await checkAndSaveKeywordTrigger(lastMessage, event);
301
403
  }
302
404
 
303
405
  // ==================== MAIN HANDLER ====================
@@ -313,7 +415,11 @@ const cortexMemoryHandler = async (event) => {
313
415
  await onSessionStop(event);
314
416
  } else if (event.type === "agent" && event.action === "bootstrap") {
315
417
  await onBootstrap(event);
418
+ } else if (event.type === "message") {
419
+ // FIX: Check for keyword triggers on message events (not just commands)
420
+ await onMessageKeywordTrigger(event);
316
421
  } else if (event.type === "command") {
422
+ // Fallback: also check commands for keyword triggers (legacy support)
317
423
  await onKeywordTrigger(event);
318
424
  }
319
425
  } catch (err) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shieldcortex",
3
- "version": "2.4.10",
3
+ "version": "2.4.13",
4
4
  "description": "Complete memory system + security layer for AI agents. Native OpenClaw integration. Persistent storage, semantic search, prompt injection firewall, credential protection, and audit trail. One package, full solution.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -1,15 +0,0 @@
1
- /**
2
- * OpenClaw/Clawdbot hook installer.
3
- *
4
- * Copies the cortex-memory hook into Clawdbot's bundled hooks directory.
5
- * Only works if OpenClaw is installed on the system.
6
- */
7
- /**
8
- * Find Clawdbot's bundled hooks directory by locating the binary
9
- */
10
- export declare function findClawdbotHooksDir(): string | null;
11
- export declare function installClawdbotHook(): Promise<void>;
12
- export declare function uninstallClawdbotHook(): Promise<void>;
13
- export declare function clawdbotHookStatus(): Promise<void>;
14
- export declare function handleClawdbotCommand(subcommand: string): Promise<void>;
15
- //# sourceMappingURL=clawdbot.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"clawdbot.d.ts","sourceRoot":"","sources":["../../src/setup/clawdbot.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAgBH;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,IAAI,CA8BpD;AAED,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC,CAgCzD;AAED,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CAiB3D;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAcxD;AAED,wBAAsB,qBAAqB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAe7E"}
@@ -1,118 +0,0 @@
1
- /**
2
- * OpenClaw/Clawdbot hook installer.
3
- *
4
- * Copies the cortex-memory hook into Clawdbot's bundled hooks directory.
5
- * Only works if OpenClaw is installed on the system.
6
- */
7
- import fs from 'fs';
8
- import path from 'path';
9
- import { execSync } from 'child_process';
10
- import { fileURLToPath } from 'url';
11
- const __filename = fileURLToPath(import.meta.url);
12
- const __dirname = path.dirname(__filename);
13
- const HOOK_NAME = 'cortex-memory';
14
- // Hook source is in hooks/clawdbot/cortex-memory/ relative to project root
15
- // From dist/setup/, go up two levels to project root
16
- const HOOK_SOURCE = path.resolve(__dirname, '..', '..', 'hooks', 'clawdbot', HOOK_NAME);
17
- /**
18
- * Find Clawdbot's bundled hooks directory by locating the binary
19
- */
20
- export function findClawdbotHooksDir() {
21
- try {
22
- const binPath = execSync('which openclaw 2>/dev/null || which clawdbot 2>/dev/null || which moltbot 2>/dev/null', {
23
- encoding: 'utf-8',
24
- }).trim();
25
- if (!binPath)
26
- return null;
27
- // Resolve symlink — lands in e.g. <prefix>/lib/node_modules/clawdbot/dist/entry.js
28
- const realBin = fs.realpathSync(binPath);
29
- // Walk up from resolved path to find dist/hooks/bundled/
30
- let dir = path.dirname(realBin);
31
- for (let i = 0; i < 5; i++) {
32
- const candidate = path.join(dir, 'hooks', 'bundled');
33
- if (fs.existsSync(candidate)) {
34
- return candidate;
35
- }
36
- // Also check dist/hooks/bundled from current dir
37
- const distCandidate = path.join(dir, 'dist', 'hooks', 'bundled');
38
- if (fs.existsSync(distCandidate)) {
39
- return distCandidate;
40
- }
41
- dir = path.dirname(dir);
42
- }
43
- return null;
44
- }
45
- catch {
46
- return null;
47
- }
48
- }
49
- export async function installClawdbotHook() {
50
- const hooksDir = findClawdbotHooksDir();
51
- if (!hooksDir) {
52
- console.error('OpenClaw/Clawdbot is not installed on this system.');
53
- console.log('Install it first: npm install -g openclaw');
54
- process.exit(1);
55
- }
56
- if (!fs.existsSync(HOOK_SOURCE)) {
57
- console.error('Hook source files not found. Package may be corrupted.');
58
- process.exit(1);
59
- }
60
- const destDir = path.join(hooksDir, HOOK_NAME);
61
- // Copy hook files
62
- fs.mkdirSync(destDir, { recursive: true });
63
- for (const file of ['HOOK.md', 'handler.js']) {
64
- const src = path.join(HOOK_SOURCE, file);
65
- const dest = path.join(destDir, file);
66
- fs.copyFileSync(src, dest);
67
- }
68
- console.log(`✓ Installed cortex-memory hook to ${destDir}`);
69
- console.log(' The hook will activate on next OpenClaw restart.');
70
- console.log('');
71
- console.log(' What it does:');
72
- console.log(' • Auto-saves important session context on /new');
73
- console.log(' • Injects past memories on session start');
74
- console.log(' • "remember this: ..." keyword trigger');
75
- }
76
- export async function uninstallClawdbotHook() {
77
- const hooksDir = findClawdbotHooksDir();
78
- if (!hooksDir) {
79
- console.log('OpenClaw/Clawdbot is not installed on this system.');
80
- return;
81
- }
82
- const destDir = path.join(hooksDir, HOOK_NAME);
83
- if (!fs.existsSync(destDir)) {
84
- console.log('cortex-memory hook is not installed.');
85
- return;
86
- }
87
- fs.rmSync(destDir, { recursive: true });
88
- console.log(`✓ Removed cortex-memory hook from ${destDir}`);
89
- }
90
- export async function clawdbotHookStatus() {
91
- const hooksDir = findClawdbotHooksDir();
92
- if (!hooksDir) {
93
- console.log('OpenClaw/Clawdbot: not installed');
94
- return;
95
- }
96
- const destDir = path.join(hooksDir, HOOK_NAME);
97
- const installed = fs.existsSync(destDir);
98
- console.log(`OpenClaw/Clawdbot: installed`);
99
- console.log(`Hooks directory: ${hooksDir}`);
100
- console.log(`cortex-memory: ${installed ? 'installed' : 'not installed'}`);
101
- }
102
- export async function handleClawdbotCommand(subcommand) {
103
- switch (subcommand) {
104
- case 'install':
105
- await installClawdbotHook();
106
- break;
107
- case 'uninstall':
108
- await uninstallClawdbotHook();
109
- break;
110
- case 'status':
111
- await clawdbotHookStatus();
112
- break;
113
- default:
114
- console.log('Usage: shieldcortex clawdbot <install|uninstall|status>');
115
- process.exit(1);
116
- }
117
- }
118
- //# sourceMappingURL=clawdbot.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"clawdbot.js","sourceRoot":"","sources":["../../src/setup/clawdbot.ts"],"names":[],"mappings":"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"}