@nxuss/lemma 1.36.0 → 1.38.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 (143) hide show
  1. package/README.md +88 -426
  2. package/bin/brain-ingest.js +22 -0
  3. package/bin/doctor.js +31 -4
  4. package/bin/init.js +92 -51
  5. package/dashboard/README.md +48 -19
  6. package/dashboard/dist/assets/index-CLXWgzTm.css +1 -0
  7. package/dashboard/dist/assets/index-CoMIMxyC.js +451 -0
  8. package/dashboard/dist/index.html +2 -2
  9. package/dist/cjs/api/dashboardRoutes.d.ts.map +1 -1
  10. package/dist/cjs/api/dashboardRoutes.js +7 -3
  11. package/dist/cjs/api/dashboardRoutes.js.map +1 -1
  12. package/dist/cjs/autopilot/Notifier.d.ts.map +1 -1
  13. package/dist/cjs/autopilot/Notifier.js +3 -0
  14. package/dist/cjs/autopilot/Notifier.js.map +1 -1
  15. package/dist/cjs/cli/hostHooks.d.ts +13 -1
  16. package/dist/cjs/cli/hostHooks.d.ts.map +1 -1
  17. package/dist/cjs/cli/hostHooks.js +34 -4
  18. package/dist/cjs/cli/hostHooks.js.map +1 -1
  19. package/dist/cjs/cli/lemma-proxy.d.ts.map +1 -1
  20. package/dist/cjs/cli/lemma-proxy.js +235 -107
  21. package/dist/cjs/cli/lemma-proxy.js.map +1 -1
  22. package/dist/cjs/mcp/index.js +42 -18
  23. package/dist/cjs/mcp/index.js.map +1 -1
  24. package/dist/cjs/mcp/prompts.d.ts +1 -1
  25. package/dist/cjs/mcp/prompts.d.ts.map +1 -1
  26. package/dist/cjs/mcp/prompts.js +2 -0
  27. package/dist/cjs/mcp/prompts.js.map +1 -1
  28. package/dist/cjs/mcp/resources.d.ts.map +1 -1
  29. package/dist/cjs/mcp/resources.js +23 -4
  30. package/dist/cjs/mcp/resources.js.map +1 -1
  31. package/dist/cjs/mcp/tools/memory.js +11 -11
  32. package/dist/cjs/mcp/tools/memory.js.map +1 -1
  33. package/dist/cjs/mcp/tools/misc.js +1 -1
  34. package/dist/cjs/mcp/tools/misc.js.map +1 -1
  35. package/dist/cjs/mcp/tools/review.js +1 -1
  36. package/dist/cjs/mcp/tools/review.js.map +1 -1
  37. package/dist/cjs/mcp/tools/workspace.d.ts.map +1 -1
  38. package/dist/cjs/mcp/tools/workspace.js +10 -7
  39. package/dist/cjs/mcp/tools/workspace.js.map +1 -1
  40. package/dist/cjs/mcp/tools.d.ts +16 -1
  41. package/dist/cjs/mcp/tools.d.ts.map +1 -1
  42. package/dist/cjs/mcp/tools.js +63 -33
  43. package/dist/cjs/mcp/tools.js.map +1 -1
  44. package/dist/cjs/mcp/workspaceShared.d.ts.map +1 -1
  45. package/dist/cjs/mcp/workspaceShared.js +6 -9
  46. package/dist/cjs/mcp/workspaceShared.js.map +1 -1
  47. package/dist/cjs/proxy/ProjectRegistry.d.ts +24 -0
  48. package/dist/cjs/proxy/ProjectRegistry.d.ts.map +1 -1
  49. package/dist/cjs/proxy/ProjectRegistry.js +50 -3
  50. package/dist/cjs/proxy/ProjectRegistry.js.map +1 -1
  51. package/dist/cjs/subconscious/HostRecall.d.ts +10 -1
  52. package/dist/cjs/subconscious/HostRecall.d.ts.map +1 -1
  53. package/dist/cjs/subconscious/HostRecall.js +68 -6
  54. package/dist/cjs/subconscious/HostRecall.js.map +1 -1
  55. package/dist/cjs/subconscious/recallDigest.d.ts +34 -0
  56. package/dist/cjs/subconscious/recallDigest.d.ts.map +1 -0
  57. package/dist/cjs/subconscious/recallDigest.js +82 -0
  58. package/dist/cjs/subconscious/recallDigest.js.map +1 -0
  59. package/dist/cjs/utils/ProjectIdentity.d.ts +8 -0
  60. package/dist/cjs/utils/ProjectIdentity.d.ts.map +1 -1
  61. package/dist/cjs/utils/ProjectIdentity.js +15 -0
  62. package/dist/cjs/utils/ProjectIdentity.js.map +1 -1
  63. package/dist/cjs/utils/SavingsLedger.d.ts +2 -0
  64. package/dist/cjs/utils/SavingsLedger.d.ts.map +1 -1
  65. package/dist/cjs/utils/SavingsLedger.js +5 -5
  66. package/dist/cjs/utils/SavingsLedger.js.map +1 -1
  67. package/dist/cjs/utils/TokenReceipt.d.ts +2 -0
  68. package/dist/cjs/utils/TokenReceipt.d.ts.map +1 -1
  69. package/dist/cjs/utils/TokenReceipt.js +11 -1
  70. package/dist/cjs/utils/TokenReceipt.js.map +1 -1
  71. package/dist/cjs/utils/reportSavings.d.ts +7 -0
  72. package/dist/cjs/utils/reportSavings.d.ts.map +1 -1
  73. package/dist/cjs/utils/reportSavings.js +14 -2
  74. package/dist/cjs/utils/reportSavings.js.map +1 -1
  75. package/dist/esm/api/dashboardRoutes.d.ts.map +1 -1
  76. package/dist/esm/api/dashboardRoutes.js +7 -3
  77. package/dist/esm/api/dashboardRoutes.js.map +1 -1
  78. package/dist/esm/autopilot/Notifier.d.ts.map +1 -1
  79. package/dist/esm/autopilot/Notifier.js +3 -0
  80. package/dist/esm/autopilot/Notifier.js.map +1 -1
  81. package/dist/esm/cli/hostHooks.d.ts +13 -1
  82. package/dist/esm/cli/hostHooks.d.ts.map +1 -1
  83. package/dist/esm/cli/hostHooks.js +32 -3
  84. package/dist/esm/cli/hostHooks.js.map +1 -1
  85. package/dist/esm/cli/lemma-proxy.d.ts.map +1 -1
  86. package/dist/esm/cli/lemma-proxy.js +236 -108
  87. package/dist/esm/cli/lemma-proxy.js.map +1 -1
  88. package/dist/esm/mcp/index.js +42 -18
  89. package/dist/esm/mcp/index.js.map +1 -1
  90. package/dist/esm/mcp/prompts.d.ts +1 -1
  91. package/dist/esm/mcp/prompts.d.ts.map +1 -1
  92. package/dist/esm/mcp/prompts.js +2 -0
  93. package/dist/esm/mcp/prompts.js.map +1 -1
  94. package/dist/esm/mcp/resources.d.ts.map +1 -1
  95. package/dist/esm/mcp/resources.js +23 -4
  96. package/dist/esm/mcp/resources.js.map +1 -1
  97. package/dist/esm/mcp/tools/memory.js +11 -11
  98. package/dist/esm/mcp/tools/memory.js.map +1 -1
  99. package/dist/esm/mcp/tools/misc.js +1 -1
  100. package/dist/esm/mcp/tools/misc.js.map +1 -1
  101. package/dist/esm/mcp/tools/review.js +1 -1
  102. package/dist/esm/mcp/tools/review.js.map +1 -1
  103. package/dist/esm/mcp/tools/workspace.d.ts.map +1 -1
  104. package/dist/esm/mcp/tools/workspace.js +10 -7
  105. package/dist/esm/mcp/tools/workspace.js.map +1 -1
  106. package/dist/esm/mcp/tools.d.ts +16 -1
  107. package/dist/esm/mcp/tools.d.ts.map +1 -1
  108. package/dist/esm/mcp/tools.js +62 -34
  109. package/dist/esm/mcp/tools.js.map +1 -1
  110. package/dist/esm/mcp/workspaceShared.d.ts.map +1 -1
  111. package/dist/esm/mcp/workspaceShared.js +6 -9
  112. package/dist/esm/mcp/workspaceShared.js.map +1 -1
  113. package/dist/esm/proxy/ProjectRegistry.d.ts +24 -0
  114. package/dist/esm/proxy/ProjectRegistry.d.ts.map +1 -1
  115. package/dist/esm/proxy/ProjectRegistry.js +49 -2
  116. package/dist/esm/proxy/ProjectRegistry.js.map +1 -1
  117. package/dist/esm/subconscious/HostRecall.d.ts +10 -1
  118. package/dist/esm/subconscious/HostRecall.d.ts.map +1 -1
  119. package/dist/esm/subconscious/HostRecall.js +66 -5
  120. package/dist/esm/subconscious/HostRecall.js.map +1 -1
  121. package/dist/esm/subconscious/recallDigest.d.ts +34 -0
  122. package/dist/esm/subconscious/recallDigest.d.ts.map +1 -0
  123. package/dist/esm/subconscious/recallDigest.js +76 -0
  124. package/dist/esm/subconscious/recallDigest.js.map +1 -0
  125. package/dist/esm/utils/ProjectIdentity.d.ts +8 -0
  126. package/dist/esm/utils/ProjectIdentity.d.ts.map +1 -1
  127. package/dist/esm/utils/ProjectIdentity.js +14 -0
  128. package/dist/esm/utils/ProjectIdentity.js.map +1 -1
  129. package/dist/esm/utils/SavingsLedger.d.ts +2 -0
  130. package/dist/esm/utils/SavingsLedger.d.ts.map +1 -1
  131. package/dist/esm/utils/SavingsLedger.js +1 -1
  132. package/dist/esm/utils/SavingsLedger.js.map +1 -1
  133. package/dist/esm/utils/TokenReceipt.d.ts +2 -0
  134. package/dist/esm/utils/TokenReceipt.d.ts.map +1 -1
  135. package/dist/esm/utils/TokenReceipt.js +10 -1
  136. package/dist/esm/utils/TokenReceipt.js.map +1 -1
  137. package/dist/esm/utils/reportSavings.d.ts +7 -0
  138. package/dist/esm/utils/reportSavings.d.ts.map +1 -1
  139. package/dist/esm/utils/reportSavings.js +13 -2
  140. package/dist/esm/utils/reportSavings.js.map +1 -1
  141. package/package.json +10 -3
  142. package/dashboard/dist/assets/index-D6nem4OA.js +0 -461
  143. package/dashboard/dist/assets/index-DNz43ews.css +0 -1
@@ -2,16 +2,40 @@ export interface RegisteredProject {
2
2
  name: string;
3
3
  path: string;
4
4
  stack: string;
5
+ /** Last handshake or tool call — what getActive() ranks by. Heartbeats don't move it. */
5
6
  lastActive: number;
7
+ /** Last sign of life from any MCP server in this project: handshake, heartbeat or tool call. */
8
+ lastSeen: number;
9
+ /** Last MCP tool call, or null if the project connected but hasn't called a tool yet. */
10
+ lastToolCall: number | null;
11
+ toolCallCount: number;
6
12
  }
13
+ export type ProjectStatus = 'active' | 'idle' | 'offline';
14
+ export interface ProjectSnapshot extends RegisteredProject {
15
+ status: ProjectStatus;
16
+ }
17
+ /** MCP servers heartbeat every 30s; three missed beats and the project counts as disconnected. */
18
+ export declare const OFFLINE_AFTER_MS = 90000;
19
+ /** Same threshold /api/mcp-status uses for "active". */
20
+ export declare const ACTIVE_WITHIN_MS = 60000;
7
21
  export declare class ProjectRegistry {
8
22
  private projects;
9
23
  register(projectPath: string, name: string, stack: string): RegisteredProject;
24
+ /**
25
+ * Keep-alive from an MCP server. Re-registers a project the daemon forgot (it restarted),
26
+ * but leaves lastActive alone so idle sessions heartbeating in the background don't steal
27
+ * getActive() from the project actually being worked on.
28
+ */
29
+ heartbeat(projectPath: string, name: string, stack: string): RegisteredProject;
30
+ /** A tool call from this project. Registers it if the handshake never reached this daemon. */
31
+ recordToolCall(projectPath: string): RegisteredProject;
10
32
  get(projectPath: string): RegisteredProject | undefined;
11
33
  touch(projectPath: string): void;
12
34
  getActive(): RegisteredProject | null;
13
35
  findByPathFragment(text: string): RegisteredProject | null;
14
36
  isStale(project: RegisteredProject, hours?: number): boolean;
15
37
  getAll(): RegisteredProject[];
38
+ /** Every known project with its connection status, most recently active first. */
39
+ snapshot(now?: number): ProjectSnapshot[];
16
40
  }
17
41
  //# sourceMappingURL=ProjectRegistry.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectRegistry.d.ts","sourceRoot":"","sources":["../../../src/proxy/ProjectRegistry.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAwC;IAExD,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,iBAAiB;IAiB7E,GAAG,CAAC,WAAW,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAIvD,KAAK,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAKhC,SAAS,IAAI,iBAAiB,GAAG,IAAI;IAYrC,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI;IAQ1D,OAAO,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,SAAK,GAAG,OAAO;IAIxD,MAAM,IAAI,iBAAiB,EAAE;CAG9B"}
1
+ {"version":3,"file":"ProjectRegistry.d.ts","sourceRoot":"","sources":["../../../src/proxy/ProjectRegistry.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,yFAAyF;IACzF,UAAU,EAAE,MAAM,CAAC;IACnB,gGAAgG;IAChG,QAAQ,EAAE,MAAM,CAAC;IACjB,yFAAyF;IACzF,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAE1D,MAAM,WAAW,eAAgB,SAAQ,iBAAiB;IACxD,MAAM,EAAE,aAAa,CAAC;CACvB;AAED,kGAAkG;AAClG,eAAO,MAAM,gBAAgB,QAAS,CAAC;AACvC,wDAAwD;AACxD,eAAO,MAAM,gBAAgB,QAAS,CAAC;AAEvC,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAwC;IAExD,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,iBAAiB;IAsB7E;;;;OAIG;IACH,SAAS,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,iBAAiB;IAQ9E,8FAA8F;IAC9F,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,iBAAiB;IAYtD,GAAG,CAAC,WAAW,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAIvD,KAAK,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI;IAKhC,SAAS,IAAI,iBAAiB,GAAG,IAAI;IAYrC,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI;IAQ1D,OAAO,CAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,SAAK,GAAG,OAAO;IAIxD,MAAM,IAAI,iBAAiB,EAAE;IAI7B,kFAAkF;IAClF,QAAQ,CAAC,GAAG,SAAa,GAAG,eAAe,EAAE;CAU9C"}
@@ -1,14 +1,20 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ProjectRegistry = void 0;
3
+ exports.ProjectRegistry = exports.ACTIVE_WITHIN_MS = exports.OFFLINE_AFTER_MS = void 0;
4
+ /** MCP servers heartbeat every 30s; three missed beats and the project counts as disconnected. */
5
+ exports.OFFLINE_AFTER_MS = 90000;
6
+ /** Same threshold /api/mcp-status uses for "active". */
7
+ exports.ACTIVE_WITHIN_MS = 60000;
4
8
  class ProjectRegistry {
5
9
  constructor() {
6
10
  this.projects = new Map();
7
11
  }
8
12
  register(projectPath, name, stack) {
13
+ const now = Date.now();
9
14
  const existing = this.projects.get(projectPath);
10
15
  if (existing) {
11
- existing.lastActive = Date.now();
16
+ existing.lastActive = now;
17
+ existing.lastSeen = now;
12
18
  if (stack && stack !== existing.stack)
13
19
  existing.stack = stack;
14
20
  return existing;
@@ -17,11 +23,39 @@ class ProjectRegistry {
17
23
  name,
18
24
  path: projectPath,
19
25
  stack,
20
- lastActive: Date.now(),
26
+ lastActive: now,
27
+ lastSeen: now,
28
+ lastToolCall: null,
29
+ toolCallCount: 0,
21
30
  };
22
31
  this.projects.set(projectPath, project);
23
32
  return project;
24
33
  }
34
+ /**
35
+ * Keep-alive from an MCP server. Re-registers a project the daemon forgot (it restarted),
36
+ * but leaves lastActive alone so idle sessions heartbeating in the background don't steal
37
+ * getActive() from the project actually being worked on.
38
+ */
39
+ heartbeat(projectPath, name, stack) {
40
+ const existing = this.projects.get(projectPath);
41
+ if (!existing)
42
+ return this.register(projectPath, name, stack);
43
+ existing.lastSeen = Date.now();
44
+ if (stack && stack !== existing.stack)
45
+ existing.stack = stack;
46
+ return existing;
47
+ }
48
+ /** A tool call from this project. Registers it if the handshake never reached this daemon. */
49
+ recordToolCall(projectPath) {
50
+ const project = this.projects.get(projectPath) ??
51
+ this.register(projectPath, projectPath.split(/[\\/]/).filter(Boolean).pop() || projectPath, '');
52
+ const now = Date.now();
53
+ project.lastActive = now;
54
+ project.lastSeen = now;
55
+ project.lastToolCall = now;
56
+ project.toolCallCount++;
57
+ return project;
58
+ }
25
59
  get(projectPath) {
26
60
  return this.projects.get(projectPath);
27
61
  }
@@ -55,6 +89,19 @@ class ProjectRegistry {
55
89
  getAll() {
56
90
  return Array.from(this.projects.values());
57
91
  }
92
+ /** Every known project with its connection status, most recently active first. */
93
+ snapshot(now = Date.now()) {
94
+ return this.getAll()
95
+ .map((p) => {
96
+ let status = 'idle';
97
+ if (now - p.lastSeen > exports.OFFLINE_AFTER_MS)
98
+ status = 'offline';
99
+ else if (p.lastToolCall !== null && now - p.lastToolCall < exports.ACTIVE_WITHIN_MS)
100
+ status = 'active';
101
+ return { ...p, status };
102
+ })
103
+ .sort((a, b) => b.lastActive - a.lastActive);
104
+ }
58
105
  }
59
106
  exports.ProjectRegistry = ProjectRegistry;
60
107
  //# sourceMappingURL=ProjectRegistry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectRegistry.js","sourceRoot":"","sources":["../../../src/proxy/ProjectRegistry.ts"],"names":[],"mappings":";;;AAOA,MAAa,eAAe;IAA5B;QACU,aAAQ,GAAG,IAAI,GAAG,EAA6B,CAAC;IAuD1D,CAAC;IArDC,QAAQ,CAAC,WAAmB,EAAE,IAAY,EAAE,KAAa;QACvD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAChD,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACjC,IAAI,KAAK,IAAI,KAAK,KAAK,QAAQ,CAAC,KAAK;gBAAE,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;YAC9D,OAAO,QAAQ,CAAC;QAClB,CAAC;QACD,MAAM,OAAO,GAAsB;YACjC,IAAI;YACJ,IAAI,EAAE,WAAW;YACjB,KAAK;YACL,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;SACvB,CAAC;QACF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QACxC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,GAAG,CAAC,WAAmB;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,WAAmB;QACvB,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QACzC,IAAI,CAAC;YAAE,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACnC,CAAC;IAED,SAAS;QACP,IAAI,MAAM,GAA6B,IAAI,CAAC;QAC5C,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,IAAI,CAAC,CAAC,UAAU,GAAG,MAAM,EAAE,CAAC;gBAC1B,MAAM,GAAG,CAAC,CAAC,UAAU,CAAC;gBACtB,MAAM,GAAG,CAAC,CAAC;YACb,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,kBAAkB,CAAC,IAAY;QAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QAC5C,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;YACvC,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;gBAAE,OAAO,CAAC,CAAC;QAC3E,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,CAAC,OAA0B,EAAE,KAAK,GAAG,EAAE;QAC5C,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,UAAU,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IAClE,CAAC;IAED,MAAM;QACJ,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC;CACF;AAxDD,0CAwDC"}
1
+ {"version":3,"file":"ProjectRegistry.js","sourceRoot":"","sources":["../../../src/proxy/ProjectRegistry.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,7 @@
8
8
  * has no reason to. This module answers a host PostToolUse hook payload with the same kind of
9
9
  * note, at the same three moments:
10
10
  *
11
- * - Reading a file the Brain has memories about → their ids (formatRecallNote's rule).
11
+ * - Reading a file the Brain has memories about → a digest of the most relevant (recallDigest).
12
12
  * - Editing a file a documented FAILED attempt depends on → a warning. Plain "this will go
13
13
  * stale" notes stay off for native edits: they are the common case and not worth context.
14
14
  * - A verdict command (test/build/lint) failing with an error the Brain already has a recorded
@@ -63,4 +63,13 @@ export interface PromptRecallOptions {
63
63
  mcpProcessDir?: string;
64
64
  }
65
65
  export declare function recallForPrompt(payload: unknown, cwd?: string, brain?: TheBrainV2, options?: PromptRecallOptions): string;
66
+ /** Tools the playbook names, in one ToolSearch line for hosts that defer MCP schemas. */
67
+ export declare const PLAYBOOK_TOOLS: string[];
68
+ /**
69
+ * When to reach for Lemma — triggers, not judgment calls. "Use it when it adds value" let every
70
+ * individual call look cheaper native; these are the moments where Lemma does something the
71
+ * native tools can't, so there is no cheaper alternative to weigh.
72
+ */
73
+ export declare const LEMMA_PLAYBOOK: string;
74
+ export declare function sessionBriefing(payload: unknown, cwd?: string, brain?: TheBrainV2): string;
66
75
  //# sourceMappingURL=HostRecall.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HostRecall.d.ts","sourceRoot":"","sources":["../../../src/subconscious/HostRecall.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAIH,OAAO,EAA0C,UAAU,EAAE,MAAM,cAAc,CAAC;AAQlF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAmEzC,uFAAuF;AACvF,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAO5D;AAwBD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,MAAM,CAgC/F;AAWD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAExD;AAQD,2EAA2E;AAC3E,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAOzE;AAQD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,mBAAmB;IAClC,gGAAgG;IAChG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,EAAE,OAAO,GAAE,mBAAwB,GAAG,MAAM,CAqD7H"}
1
+ {"version":3,"file":"HostRecall.d.ts","sourceRoot":"","sources":["../../../src/subconscious/HostRecall.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAIH,OAAO,EAA0C,UAAU,EAAE,MAAM,cAAc,CAAC;AASlF;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAgEzC,uFAAuF;AACvF,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAO5D;AAwBD;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,MAAM,CAgC/F;AAWD,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAExD;AAQD,2EAA2E;AAC3E,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAOzE;AAQD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,mBAAmB;IAClC,gGAAgG;IAChG,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,EAAE,OAAO,GAAE,mBAAwB,GAAG,MAAM,CAqD7H;AASD,yFAAyF;AACzF,eAAO,MAAM,cAAc,UAQ1B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,cAAc,QAQf,CAAC;AAIb,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,MAAM,CA8B1F"}
@@ -9,7 +9,7 @@
9
9
  * has no reason to. This module answers a host PostToolUse hook payload with the same kind of
10
10
  * note, at the same three moments:
11
11
  *
12
- * - Reading a file the Brain has memories about → their ids (formatRecallNote's rule).
12
+ * - Reading a file the Brain has memories about → a digest of the most relevant (recallDigest).
13
13
  * - Editing a file a documented FAILED attempt depends on → a warning. Plain "this will go
14
14
  * stale" notes stay off for native edits: they are the common case and not worth context.
15
15
  * - A verdict command (test/build/lint) failing with an error the Brain already has a recorded
@@ -31,12 +31,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
31
31
  return (mod && mod.__esModule) ? mod : { "default": mod };
32
32
  };
33
33
  Object.defineProperty(exports, "__esModule", { value: true });
34
- exports.FIX_MATCH_MIN_OVERLAP = void 0;
34
+ exports.LEMMA_PLAYBOOK = exports.PLAYBOOK_TOOLS = exports.FIX_MATCH_MIN_OVERLAP = void 0;
35
35
  exports.headlineOverlap = headlineOverlap;
36
36
  exports.recallForHookPayload = recallForHookPayload;
37
37
  exports.isStatusQuestion = isStatusQuestion;
38
38
  exports.headlineCoverage = headlineCoverage;
39
39
  exports.recallForPrompt = recallForPrompt;
40
+ exports.sessionBriefing = sessionBriefing;
40
41
  const fs_1 = __importDefault(require("fs"));
41
42
  const path_1 = __importDefault(require("path"));
42
43
  const TheBrainV2_1 = require("./TheBrainV2");
@@ -45,6 +46,7 @@ const FixCapture_1 = require("../utils/FixCapture");
45
46
  const ageLabel_1 = require("../utils/ageLabel");
46
47
  const StoreDraft_1 = require("../utils/StoreDraft");
47
48
  const staleBuild_1 = require("../mcp/staleBuild");
49
+ const recallDigest_1 = require("./recallDigest");
48
50
  const STATE_FILE = path_1.default.join('.lemma', 'session', 'host-recall.json');
49
51
  /**
50
52
  * BM25 similarity is normalized against the corpus, so the top result of any query scores
@@ -87,10 +89,7 @@ function fileNote(brain, toolName, filePath) {
87
89
  const name = path_1.default.basename(filePath);
88
90
  if (READ_TOOLS.has(toolName)) {
89
91
  const ids = result.hits.map((h) => h.id).sort();
90
- let text = `🧠 Lemma Brain has ${result.hits.length} ${plural(result.hits.length, 'memory', 'memories')} about ${name}: ${ids.join(', ')}. verify_memory ${plural(ids.length, 'it', 'them')} before investigating from scratch.`;
91
- if (result.failedHits.length > 0) {
92
- text += ` ⚠️ ${result.failedHits.map((h) => h.id).join(', ')} document an approach that FAILED here — read before repeating it.`;
93
- }
92
+ const text = (0, recallDigest_1.formatFileDigest)(name, (0, recallDigest_1.digestFileHits)(brain, result.hits));
94
93
  return { key: `read::${path_1.default.resolve(filePath)}::${ids.join(',')}`, text };
95
94
  }
96
95
  // Native edits: only the escalated case. "N memories will go stale" on every edit is noise.
@@ -279,4 +278,67 @@ function recallForPrompt(payload, cwd, brain, options = {}) {
279
278
  return '';
280
279
  }
281
280
  }
281
+ // ── SessionStart: the briefing that used to depend on the agent calling for it ──────────
282
+ //
283
+ // CLAUDE.md said "call get_project_onboarding at the start" and "search_memory before
284
+ // investigating". Both were prose the agent could weigh and skip — and did: a session could
285
+ // run start to finish on native tools and never learn the Brain held the answer. A SessionStart
286
+ // hook puts the essentials in context before the first prompt, with no tool call to forget.
287
+ /** Tools the playbook names, in one ToolSearch line for hosts that defer MCP schemas. */
288
+ exports.PLAYBOOK_TOOLS = [
289
+ 'search_memory',
290
+ 'get_memory',
291
+ 'verify_memory',
292
+ 'store_memory',
293
+ 'update_memory',
294
+ 'read_workspace_file',
295
+ 'search_workspace',
296
+ ];
297
+ /**
298
+ * When to reach for Lemma — triggers, not judgment calls. "Use it when it adds value" let every
299
+ * individual call look cheaper native; these are the moments where Lemma does something the
300
+ * native tools can't, so there is no cheaper alternative to weigh.
301
+ */
302
+ exports.LEMMA_PLAYBOOK = [
303
+ 'Lemma playbook — follow these triggers:',
304
+ ' - Before investigating a bug, error or "why does X": search_memory with the error text or question.',
305
+ ' - A 🧠 note names memories: get_memory the top one before re-deriving what it says.',
306
+ ' - A fix is verified (tests pass, build succeeds, user confirms): store_memory with filePaths.',
307
+ ' - A memory turned out outdated or wrong: update_memory / forget_memory — never store a near-duplicate.',
308
+ ' - Reading code you have not located yet, or that may hold secrets: search_workspace / read_workspace_file (they scrub keys).',
309
+ `If Lemma's tools are deferred, load them in ONE ToolSearch: select:${exports.PLAYBOOK_TOOLS.map((t) => `mcp__lemma__${t}`).join(',')}`,
310
+ ].join('\n');
311
+ const BRIEFING_MEMORIES = 3;
312
+ function sessionBriefing(payload, cwd, brain) {
313
+ try {
314
+ const p = payload && typeof payload === 'object' ? payload : {};
315
+ const root = (0, TeamBrain_1.repoRoot)(cwd || p.cwd || process.cwd());
316
+ const b = brain ?? (0, TheBrainV2_1.getBrain)();
317
+ const projectId = (0, TheBrainV2_1.deriveProjectId)(root);
318
+ const lines = [];
319
+ const { total, items } = b.list({ projectId, limit: 50 });
320
+ if (total === 0) {
321
+ lines.push(`🧠 Lemma is active in ${path_1.default.basename(root)}. The Brain has no memories for this project yet — store_memory once a fix is verified so the next session starts ahead.`);
322
+ }
323
+ else {
324
+ // Newest memories someone wrote on purpose; commit-log ingests are recalled per file instead.
325
+ const deliberate = items
326
+ .filter((i) => {
327
+ const entry = b.getEntry(i.id);
328
+ return !!entry && (0, TheBrainV2_1.entrySource)(entry) !== 'auto-git';
329
+ })
330
+ .slice(0, BRIEFING_MEMORIES);
331
+ lines.push(`🧠 Lemma is active in ${path_1.default.basename(root)}: the Brain holds ${total} ${plural(total, 'memory', 'memories')} for this project.`);
332
+ if (deliberate.length > 0) {
333
+ lines.push('Most recent decisions and fixes:');
334
+ lines.push(...(0, recallDigest_1.digestFileHits)(b, deliberate, BRIEFING_MEMORIES).lines);
335
+ }
336
+ }
337
+ lines.push(exports.LEMMA_PLAYBOOK);
338
+ return lines.join('\n');
339
+ }
340
+ catch {
341
+ return '';
342
+ }
343
+ }
282
344
  //# sourceMappingURL=HostRecall.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HostRecall.js","sourceRoot":"","sources":["../../../src/subconscious/HostRecall.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HostRecall.js","sourceRoot":"","sources":["../../../src/subconscious/HostRecall.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import { type TheBrainV2 } from './TheBrainV2';
2
+ /**
3
+ * Shared by the host's PostToolUse hook (HostRecall) and the MCP read tools (workspaceShared):
4
+ * the note that says "the Brain knows something about this file". It used to print every id —
5
+ * "116 memories about package.json: 007e…, 00d1…, …" — which an agent can't act on without a
6
+ * round-trip per id, so in practice it was read as noise and skipped. A digest names the few
7
+ * memories worth opening, with what each one is about and whether it can still be trusted.
8
+ *
9
+ * Headlines only, never bodies: a file read must not turn into a memory dump. get_memory
10
+ * fetches the body of the one that matters.
11
+ */
12
+ export declare const DIGEST_MAX = 3;
13
+ export interface DigestHit {
14
+ id: string;
15
+ query: string;
16
+ outcome?: 'confirmed' | 'failed';
17
+ }
18
+ export interface FileDigest {
19
+ total: number;
20
+ /** One "• id (fresh, 3d ago): headline" line per memory shown, most relevant first. */
21
+ lines: string[];
22
+ failedCount: number;
23
+ }
24
+ /**
25
+ * Relevance without a query to rank against: a failed approach first (repeating it is the
26
+ * costliest mistake), then memories someone wrote on purpose over commit-log ingests (a hub
27
+ * file like package.json collects one per commit that touched it), then the ones reused most,
28
+ * then the newest.
29
+ */
30
+ export declare function rankFileHits(brain: TheBrainV2, hits: DigestHit[]): DigestHit[];
31
+ export declare function digestFileHits(brain: TheBrainV2, hits: DigestHit[], max?: number): FileDigest;
32
+ /** The full note: header, the digest lines, and what to do with them. */
33
+ export declare function formatFileDigest(subject: string, digest: FileDigest): string;
34
+ //# sourceMappingURL=recallDigest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recallDigest.d.ts","sourceRoot":"","sources":["../../../src/subconscious/recallDigest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAG5D;;;;;;;;;GASG;AAEH,eAAO,MAAM,UAAU,IAAI,CAAC;AAG5B,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,WAAW,GAAG,QAAQ,CAAC;CAClC;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,uFAAuF;IACvF,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAOD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAoB9E;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,GAAG,SAAa,GAAG,UAAU,CAkBjG;AAED,yEAAyE;AACzE,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,CAY5E"}
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DIGEST_MAX = void 0;
4
+ exports.rankFileHits = rankFileHits;
5
+ exports.digestFileHits = digestFileHits;
6
+ exports.formatFileDigest = formatFileDigest;
7
+ const TheBrainV2_1 = require("./TheBrainV2");
8
+ const ageLabel_1 = require("../utils/ageLabel");
9
+ /**
10
+ * Shared by the host's PostToolUse hook (HostRecall) and the MCP read tools (workspaceShared):
11
+ * the note that says "the Brain knows something about this file". It used to print every id —
12
+ * "116 memories about package.json: 007e…, 00d1…, …" — which an agent can't act on without a
13
+ * round-trip per id, so in practice it was read as noise and skipped. A digest names the few
14
+ * memories worth opening, with what each one is about and whether it can still be trusted.
15
+ *
16
+ * Headlines only, never bodies: a file read must not turn into a memory dump. get_memory
17
+ * fetches the body of the one that matters.
18
+ */
19
+ exports.DIGEST_MAX = 3;
20
+ const HEADLINE_MAX = 110;
21
+ function headline(query) {
22
+ const q = query.replace(/\s+/g, ' ').trim();
23
+ return q.length > HEADLINE_MAX ? `${q.slice(0, HEADLINE_MAX - 1)}…` : q;
24
+ }
25
+ /**
26
+ * Relevance without a query to rank against: a failed approach first (repeating it is the
27
+ * costliest mistake), then memories someone wrote on purpose over commit-log ingests (a hub
28
+ * file like package.json collects one per commit that touched it), then the ones reused most,
29
+ * then the newest.
30
+ */
31
+ function rankFileHits(brain, hits) {
32
+ const meta = new Map(hits.map((h) => {
33
+ const entry = brain.getEntry(h.id);
34
+ return [
35
+ h.id,
36
+ {
37
+ failed: h.outcome === 'failed' ? 1 : 0,
38
+ deliberate: entry && (0, TheBrainV2_1.entrySource)(entry) === 'auto-git' ? 0 : 1,
39
+ hits: entry?.hits ?? 0,
40
+ time: Date.parse(entry?.timestamp ?? '') || 0,
41
+ },
42
+ ];
43
+ }));
44
+ return [...hits].sort((a, b) => {
45
+ const x = meta.get(a.id);
46
+ const y = meta.get(b.id);
47
+ return y.failed - x.failed || y.deliberate - x.deliberate || y.hits - x.hits || y.time - x.time;
48
+ });
49
+ }
50
+ function digestFileHits(brain, hits, max = exports.DIGEST_MAX) {
51
+ const top = rankFileHits(brain, hits).slice(0, max);
52
+ // Freshness only for the ones shown: hash-comparing every hit on a hub file would cost more
53
+ // than the read it rides on.
54
+ let status = new Map();
55
+ try {
56
+ status = new Map(brain.verifyByIds(top.map((h) => h.id)).map((r) => [r.id, r.status]));
57
+ }
58
+ catch {
59
+ // Unknown freshness is reported as such below, never as fresh.
60
+ }
61
+ const lines = top.map((h) => {
62
+ const raw = status.get(h.id) ?? 'unverified';
63
+ const verdict = raw === 'stale' ? 'STALE' : raw;
64
+ const age = (0, ageLabel_1.ageLabel)(brain.getEntry(h.id)?.timestamp);
65
+ const failed = h.outcome === 'failed' ? ', FAILED approach' : '';
66
+ return ` • ${h.id} (${verdict}, ${age}${failed}): ${headline(h.query)}`;
67
+ });
68
+ return { total: hits.length, lines, failedCount: hits.filter((h) => h.outcome === 'failed').length };
69
+ }
70
+ /** The full note: header, the digest lines, and what to do with them. */
71
+ function formatFileDigest(subject, digest) {
72
+ const { total, lines, failedCount } = digest;
73
+ const header = total === 1
74
+ ? `🧠 Lemma Brain has 1 memory about ${subject}:`
75
+ : `🧠 Lemma Brain has ${total} memories about ${subject}; the most relevant:`;
76
+ const rest = total > lines.length ? ` (+${total - lines.length} more — search_memory with your question ranks them against it.)` : '';
77
+ // Failed approaches rank first, so any are already among the lines; this flags them loudly.
78
+ const failed = failedCount > 0 ? `⚠️ ${failedCount === 1 ? 'One documents' : `${failedCount} document`} an approach that FAILED here — read it before repeating it.` : '';
79
+ const action = 'get_memory <id> reads one; a STALE memory must be re-checked against the current code before you rely on it.';
80
+ return [header, ...lines, rest, failed, action].filter(Boolean).join('\n');
81
+ }
82
+ //# sourceMappingURL=recallDigest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recallDigest.js","sourceRoot":"","sources":["../../../src/subconscious/recallDigest.ts"],"names":[],"mappings":"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"}
@@ -9,4 +9,12 @@ export declare function detectProjectName(cwd?: string): string;
9
9
  * backward-compatible behavior for any client that doesn't send it yet.
10
10
  */
11
11
  export declare function isProjectMismatch(expectedProject: string | null | undefined, actualProjectName: string): boolean;
12
+ /**
13
+ * The Chroma collection a project's semantic cache lives in. Chroma names allow only
14
+ * [A-Za-z0-9._-] (3–63 chars, alphanumeric at both ends). A scoped package name like
15
+ * "@nxuss/lemma" used to be passed through raw, the create failed inside a silent catch, and
16
+ * the semantic cache was simply off for that project. "@scope/name" maps to "scope_name" —
17
+ * the name earlier versions used, so existing collections are found again.
18
+ */
19
+ export declare function cacheCollectionName(projectName: string): string;
12
20
  //# sourceMappingURL=ProjectIdentity.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectIdentity.d.ts","sourceRoot":"","sources":["../../../src/utils/ProjectIdentity.ts"],"names":[],"mappings":"AAaA,gGAAgG;AAChG,wBAAgB,iBAAiB,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CASrE;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAEhH"}
1
+ {"version":3,"file":"ProjectIdentity.d.ts","sourceRoot":"","sources":["../../../src/utils/ProjectIdentity.ts"],"names":[],"mappings":"AAaA,gGAAgG;AAChG,wBAAgB,iBAAiB,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,CASrE;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,eAAe,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,iBAAiB,EAAE,MAAM,GAAG,OAAO,CAEhH;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAM/D"}
@@ -5,6 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.detectProjectName = detectProjectName;
7
7
  exports.isProjectMismatch = isProjectMismatch;
8
+ exports.cacheCollectionName = cacheCollectionName;
8
9
  /**
9
10
  * ProjectIdentity — the one place that decides "what project is this directory".
10
11
  *
@@ -41,4 +42,18 @@ function detectProjectName(cwd = process.cwd()) {
41
42
  function isProjectMismatch(expectedProject, actualProjectName) {
42
43
  return !!expectedProject && expectedProject !== actualProjectName;
43
44
  }
45
+ /**
46
+ * The Chroma collection a project's semantic cache lives in. Chroma names allow only
47
+ * [A-Za-z0-9._-] (3–63 chars, alphanumeric at both ends). A scoped package name like
48
+ * "@nxuss/lemma" used to be passed through raw, the create failed inside a silent catch, and
49
+ * the semantic cache was simply off for that project. "@scope/name" maps to "scope_name" —
50
+ * the name earlier versions used, so existing collections are found again.
51
+ */
52
+ function cacheCollectionName(projectName) {
53
+ const safe = projectName
54
+ .replace(/^@/, '')
55
+ .replace(/[^A-Za-z0-9._-]/g, '_')
56
+ .replace(/^[^A-Za-z0-9]+|[^A-Za-z0-9]+$/g, '');
57
+ return `lemma-cache-${safe || 'default'}`.slice(0, 63).replace(/[^A-Za-z0-9]+$/, '');
58
+ }
44
59
  //# sourceMappingURL=ProjectIdentity.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ProjectIdentity.js","sourceRoot":"","sources":["../../../src/utils/ProjectIdentity.ts"],"names":[],"mappings":";;;;;AAcA,8CASC;AAUD,8CAEC;AAnCD;;;;;;;;;GASG;AACH,4CAAoB;AACpB,gDAAwB;AAExB,gGAAgG;AAChG,SAAgB,iBAAiB,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IAC3D,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAC/C,IAAI,YAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;YACzD,IAAI,GAAG,CAAC,IAAI;gBAAE,OAAO,GAAG,CAAC,IAAI,CAAC;QAChC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IACV,OAAO,cAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,iBAAiB,CAAC,eAA0C,EAAE,iBAAyB;IACrG,OAAO,CAAC,CAAC,eAAe,IAAI,eAAe,KAAK,iBAAiB,CAAC;AACpE,CAAC"}
1
+ {"version":3,"file":"ProjectIdentity.js","sourceRoot":"","sources":["../../../src/utils/ProjectIdentity.ts"],"names":[],"mappings":";;;;;AAcA,8CASC;AAUD,8CAEC;AASD,kDAMC;AAlDD;;;;;;;;;GASG;AACH,4CAAoB;AACpB,gDAAwB;AAExB,gGAAgG;AAChG,SAAgB,iBAAiB,CAAC,MAAc,OAAO,CAAC,GAAG,EAAE;IAC3D,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QAC/C,IAAI,YAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;YACzD,IAAI,GAAG,CAAC,IAAI;gBAAE,OAAO,GAAG,CAAC,IAAI,CAAC;QAChC,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IACV,OAAO,cAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,iBAAiB,CAAC,eAA0C,EAAE,iBAAyB;IACrG,OAAO,CAAC,CAAC,eAAe,IAAI,eAAe,KAAK,iBAAiB,CAAC;AACpE,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,mBAAmB,CAAC,WAAmB;IACrD,MAAM,IAAI,GAAG,WAAW;SACrB,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC;SACjB,OAAO,CAAC,kBAAkB,EAAE,GAAG,CAAC;SAChC,OAAO,CAAC,gCAAgC,EAAE,EAAE,CAAC,CAAC;IACjD,OAAO,eAAe,IAAI,IAAI,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;AACvF,CAAC"}
@@ -83,6 +83,8 @@ export interface SavingsSnapshot {
83
83
  byOrigin: Record<string, ToolCostStats>;
84
84
  };
85
85
  }
86
+ /** Average blended cost per input token across GPT-4o / Claude Sonnet / Gemini Pro */
87
+ export declare const AVG_COST_PER_TOKEN = 0.000008;
86
88
  declare class SavingsLedger {
87
89
  private sources;
88
90
  private costs;
@@ -1 +1 @@
1
- {"version":3,"file":"SavingsLedger.d.ts","sourceRoot":"","sources":["../../../src/utils/SavingsLedger.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SavingsLedger.d.ts","sourceRoot":"","sources":["../../../src/utils/SavingsLedger.ts"],"names":[],"mappings":"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"}
@@ -11,13 +11,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
11
11
  return (mod && mod.__esModule) ? mod : { "default": mod };
12
12
  };
13
13
  Object.defineProperty(exports, "__esModule", { value: true });
14
- exports.savingsLedger = void 0;
14
+ exports.savingsLedger = exports.AVG_COST_PER_TOKEN = void 0;
15
15
  const fs_1 = __importDefault(require("fs"));
16
16
  const path_1 = __importDefault(require("path"));
17
17
  /** Hard cap on tracked tool names so a hostile caller cannot grow ledger.json unbounded. */
18
18
  const MAX_ATTRIBUTED_TOOLS = 300;
19
19
  /** Average blended cost per input token across GPT-4o / Claude Sonnet / Gemini Pro */
20
- const AVG_COST_PER_TOKEN = 0.000008; // $0.008 per 1K tokens
20
+ exports.AVG_COST_PER_TOKEN = 0.000008; // $0.008 per 1K tokens
21
21
  const HOME = process.env.HOME || process.env.USERPROFILE || '~';
22
22
  const LEDGER_FILE = path_1.default.join(HOME, '.lemma-cache', 'ledger.json');
23
23
  /**
@@ -142,7 +142,7 @@ class SavingsLedger {
142
142
  if (charsSaved === 0)
143
143
  return;
144
144
  const tokensSaved = Math.floor(charsSaved / 4);
145
- const costSaved = tokensSaved * AVG_COST_PER_TOKEN;
145
+ const costSaved = tokensSaved * exports.AVG_COST_PER_TOKEN;
146
146
  this.sources[source].events++;
147
147
  this.sources[source].tokensSaved += tokensSaved;
148
148
  this.sources[source].costSaved += costSaved;
@@ -154,7 +154,7 @@ class SavingsLedger {
154
154
  recordTokens(source, tokensSaved) {
155
155
  if (tokensSaved <= 0)
156
156
  return;
157
- const costSaved = tokensSaved * AVG_COST_PER_TOKEN;
157
+ const costSaved = tokensSaved * exports.AVG_COST_PER_TOKEN;
158
158
  this.sources[source].events++;
159
159
  this.sources[source].tokensSaved += tokensSaved;
160
160
  this.sources[source].costSaved += costSaved;
@@ -174,7 +174,7 @@ class SavingsLedger {
174
174
  return;
175
175
  this.costs[source].events++;
176
176
  this.costs[source].tokensSpent += tokensSpent;
177
- this.costs[source].costSpent += tokensSpent * AVG_COST_PER_TOKEN;
177
+ this.costs[source].costSpent += tokensSpent * exports.AVG_COST_PER_TOKEN;
178
178
  if (source === 'toolResult') {
179
179
  // byTool needs an explicit tool name; host/origin ALWAYS annotate (defaulting
180
180
  // to unknown/lemma) so the rollups sum to the bucket totals — a smoke test