@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.
- package/README.md +88 -426
- package/bin/brain-ingest.js +22 -0
- package/bin/doctor.js +31 -4
- package/bin/init.js +92 -51
- package/dashboard/README.md +48 -19
- package/dashboard/dist/assets/index-CLXWgzTm.css +1 -0
- package/dashboard/dist/assets/index-CoMIMxyC.js +451 -0
- package/dashboard/dist/index.html +2 -2
- package/dist/cjs/api/dashboardRoutes.d.ts.map +1 -1
- package/dist/cjs/api/dashboardRoutes.js +7 -3
- package/dist/cjs/api/dashboardRoutes.js.map +1 -1
- package/dist/cjs/autopilot/Notifier.d.ts.map +1 -1
- package/dist/cjs/autopilot/Notifier.js +3 -0
- package/dist/cjs/autopilot/Notifier.js.map +1 -1
- package/dist/cjs/cli/hostHooks.d.ts +13 -1
- package/dist/cjs/cli/hostHooks.d.ts.map +1 -1
- package/dist/cjs/cli/hostHooks.js +34 -4
- package/dist/cjs/cli/hostHooks.js.map +1 -1
- package/dist/cjs/cli/lemma-proxy.d.ts.map +1 -1
- package/dist/cjs/cli/lemma-proxy.js +235 -107
- package/dist/cjs/cli/lemma-proxy.js.map +1 -1
- package/dist/cjs/mcp/index.js +42 -18
- package/dist/cjs/mcp/index.js.map +1 -1
- package/dist/cjs/mcp/prompts.d.ts +1 -1
- package/dist/cjs/mcp/prompts.d.ts.map +1 -1
- package/dist/cjs/mcp/prompts.js +2 -0
- package/dist/cjs/mcp/prompts.js.map +1 -1
- package/dist/cjs/mcp/resources.d.ts.map +1 -1
- package/dist/cjs/mcp/resources.js +23 -4
- package/dist/cjs/mcp/resources.js.map +1 -1
- package/dist/cjs/mcp/tools/memory.js +11 -11
- package/dist/cjs/mcp/tools/memory.js.map +1 -1
- package/dist/cjs/mcp/tools/misc.js +1 -1
- package/dist/cjs/mcp/tools/misc.js.map +1 -1
- package/dist/cjs/mcp/tools/review.js +1 -1
- package/dist/cjs/mcp/tools/review.js.map +1 -1
- package/dist/cjs/mcp/tools/workspace.d.ts.map +1 -1
- package/dist/cjs/mcp/tools/workspace.js +10 -7
- package/dist/cjs/mcp/tools/workspace.js.map +1 -1
- package/dist/cjs/mcp/tools.d.ts +16 -1
- package/dist/cjs/mcp/tools.d.ts.map +1 -1
- package/dist/cjs/mcp/tools.js +63 -33
- package/dist/cjs/mcp/tools.js.map +1 -1
- package/dist/cjs/mcp/workspaceShared.d.ts.map +1 -1
- package/dist/cjs/mcp/workspaceShared.js +6 -9
- package/dist/cjs/mcp/workspaceShared.js.map +1 -1
- package/dist/cjs/proxy/ProjectRegistry.d.ts +24 -0
- package/dist/cjs/proxy/ProjectRegistry.d.ts.map +1 -1
- package/dist/cjs/proxy/ProjectRegistry.js +50 -3
- package/dist/cjs/proxy/ProjectRegistry.js.map +1 -1
- package/dist/cjs/subconscious/HostRecall.d.ts +10 -1
- package/dist/cjs/subconscious/HostRecall.d.ts.map +1 -1
- package/dist/cjs/subconscious/HostRecall.js +68 -6
- package/dist/cjs/subconscious/HostRecall.js.map +1 -1
- package/dist/cjs/subconscious/recallDigest.d.ts +34 -0
- package/dist/cjs/subconscious/recallDigest.d.ts.map +1 -0
- package/dist/cjs/subconscious/recallDigest.js +82 -0
- package/dist/cjs/subconscious/recallDigest.js.map +1 -0
- package/dist/cjs/utils/ProjectIdentity.d.ts +8 -0
- package/dist/cjs/utils/ProjectIdentity.d.ts.map +1 -1
- package/dist/cjs/utils/ProjectIdentity.js +15 -0
- package/dist/cjs/utils/ProjectIdentity.js.map +1 -1
- package/dist/cjs/utils/SavingsLedger.d.ts +2 -0
- package/dist/cjs/utils/SavingsLedger.d.ts.map +1 -1
- package/dist/cjs/utils/SavingsLedger.js +5 -5
- package/dist/cjs/utils/SavingsLedger.js.map +1 -1
- package/dist/cjs/utils/TokenReceipt.d.ts +2 -0
- package/dist/cjs/utils/TokenReceipt.d.ts.map +1 -1
- package/dist/cjs/utils/TokenReceipt.js +11 -1
- package/dist/cjs/utils/TokenReceipt.js.map +1 -1
- package/dist/cjs/utils/reportSavings.d.ts +7 -0
- package/dist/cjs/utils/reportSavings.d.ts.map +1 -1
- package/dist/cjs/utils/reportSavings.js +14 -2
- package/dist/cjs/utils/reportSavings.js.map +1 -1
- package/dist/esm/api/dashboardRoutes.d.ts.map +1 -1
- package/dist/esm/api/dashboardRoutes.js +7 -3
- package/dist/esm/api/dashboardRoutes.js.map +1 -1
- package/dist/esm/autopilot/Notifier.d.ts.map +1 -1
- package/dist/esm/autopilot/Notifier.js +3 -0
- package/dist/esm/autopilot/Notifier.js.map +1 -1
- package/dist/esm/cli/hostHooks.d.ts +13 -1
- package/dist/esm/cli/hostHooks.d.ts.map +1 -1
- package/dist/esm/cli/hostHooks.js +32 -3
- package/dist/esm/cli/hostHooks.js.map +1 -1
- package/dist/esm/cli/lemma-proxy.d.ts.map +1 -1
- package/dist/esm/cli/lemma-proxy.js +236 -108
- package/dist/esm/cli/lemma-proxy.js.map +1 -1
- package/dist/esm/mcp/index.js +42 -18
- package/dist/esm/mcp/index.js.map +1 -1
- package/dist/esm/mcp/prompts.d.ts +1 -1
- package/dist/esm/mcp/prompts.d.ts.map +1 -1
- package/dist/esm/mcp/prompts.js +2 -0
- package/dist/esm/mcp/prompts.js.map +1 -1
- package/dist/esm/mcp/resources.d.ts.map +1 -1
- package/dist/esm/mcp/resources.js +23 -4
- package/dist/esm/mcp/resources.js.map +1 -1
- package/dist/esm/mcp/tools/memory.js +11 -11
- package/dist/esm/mcp/tools/memory.js.map +1 -1
- package/dist/esm/mcp/tools/misc.js +1 -1
- package/dist/esm/mcp/tools/misc.js.map +1 -1
- package/dist/esm/mcp/tools/review.js +1 -1
- package/dist/esm/mcp/tools/review.js.map +1 -1
- package/dist/esm/mcp/tools/workspace.d.ts.map +1 -1
- package/dist/esm/mcp/tools/workspace.js +10 -7
- package/dist/esm/mcp/tools/workspace.js.map +1 -1
- package/dist/esm/mcp/tools.d.ts +16 -1
- package/dist/esm/mcp/tools.d.ts.map +1 -1
- package/dist/esm/mcp/tools.js +62 -34
- package/dist/esm/mcp/tools.js.map +1 -1
- package/dist/esm/mcp/workspaceShared.d.ts.map +1 -1
- package/dist/esm/mcp/workspaceShared.js +6 -9
- package/dist/esm/mcp/workspaceShared.js.map +1 -1
- package/dist/esm/proxy/ProjectRegistry.d.ts +24 -0
- package/dist/esm/proxy/ProjectRegistry.d.ts.map +1 -1
- package/dist/esm/proxy/ProjectRegistry.js +49 -2
- package/dist/esm/proxy/ProjectRegistry.js.map +1 -1
- package/dist/esm/subconscious/HostRecall.d.ts +10 -1
- package/dist/esm/subconscious/HostRecall.d.ts.map +1 -1
- package/dist/esm/subconscious/HostRecall.js +66 -5
- package/dist/esm/subconscious/HostRecall.js.map +1 -1
- package/dist/esm/subconscious/recallDigest.d.ts +34 -0
- package/dist/esm/subconscious/recallDigest.d.ts.map +1 -0
- package/dist/esm/subconscious/recallDigest.js +76 -0
- package/dist/esm/subconscious/recallDigest.js.map +1 -0
- package/dist/esm/utils/ProjectIdentity.d.ts +8 -0
- package/dist/esm/utils/ProjectIdentity.d.ts.map +1 -1
- package/dist/esm/utils/ProjectIdentity.js +14 -0
- package/dist/esm/utils/ProjectIdentity.js.map +1 -1
- package/dist/esm/utils/SavingsLedger.d.ts +2 -0
- package/dist/esm/utils/SavingsLedger.d.ts.map +1 -1
- package/dist/esm/utils/SavingsLedger.js +1 -1
- package/dist/esm/utils/SavingsLedger.js.map +1 -1
- package/dist/esm/utils/TokenReceipt.d.ts +2 -0
- package/dist/esm/utils/TokenReceipt.d.ts.map +1 -1
- package/dist/esm/utils/TokenReceipt.js +10 -1
- package/dist/esm/utils/TokenReceipt.js.map +1 -1
- package/dist/esm/utils/reportSavings.d.ts +7 -0
- package/dist/esm/utils/reportSavings.d.ts.map +1 -1
- package/dist/esm/utils/reportSavings.js +13 -2
- package/dist/esm/utils/reportSavings.js.map +1 -1
- package/package.json +10 -3
- package/dashboard/dist/assets/index-D6nem4OA.js +0 -461
- 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;
|
|
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 =
|
|
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:
|
|
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":";;;
|
|
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 →
|
|
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;
|
|
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 →
|
|
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
|
-
|
|
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;
|
|
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":"AAAA;;;;;;;GAOG;AAKH,MAAM,MAAM,aAAa,GAAG,WAAW,GAAG,gBAAgB,GAAG,cAAc,GAAG,mBAAmB,GAAG,OAAO,CAAC;AAE5G;;;;;;;;GAQG;AACH,MAAM,MAAM,UAAU,GAAG,iBAAiB,GAAG,YAAY,GAAG,WAAW,CAAC;AAExE,MAAM,WAAW,WAAW;IAC1B,uDAAuD;IACvD,MAAM,EAAE,MAAM,CAAC;IACf,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,8DAA8D;IAC9D,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAC;IACf,yCAAyC;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,8DAA8D;IAC9D,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,wFAAwF;IACxF,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oGAAoG;IACpG,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,sFAAsF;AACtF,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAKD,MAAM,WAAW,QAAQ;IACvB,+EAA+E;IAC/E,SAAS,EAAE,MAAM,CAAC;IAClB,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAC;IAChB,iFAAiF;IACjF,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,WAAW,CAAC;IACvB,cAAc,EAAE,WAAW,CAAC;IAC5B,YAAY,EAAE,WAAW,CAAC;IAC1B,iBAAiB,EAAE,WAAW,CAAC;IAC/B,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,EAAE,WAAW,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACrC,SAAS,EAAE,SAAS,CAAC;IACrB,GAAG,EAAE,QAAQ,CAAC;IACd,gBAAgB,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,eAAe,EAAE;QACf,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QACtC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;QACtC,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;KACzC,CAAC;CACH;
|
|
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
|
-
|
|
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
|