@nxuss/lemma 1.37.0 → 1.39.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 +9 -6
- package/bin/brain-ingest.js +86 -27
- package/bin/doctor.js +31 -4
- package/bin/init.js +98 -60
- package/dashboard/dist/assets/index-DNTQXLER.css +1 -0
- package/dashboard/dist/assets/index-DzL_Zu3m.js +452 -0
- package/dashboard/dist/index.html +2 -2
- package/dist/cjs/cli/gitHooks.d.ts +9 -2
- package/dist/cjs/cli/gitHooks.d.ts.map +1 -1
- package/dist/cjs/cli/gitHooks.js +31 -4
- package/dist/cjs/cli/gitHooks.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 +42 -5
- package/dist/cjs/cli/lemma-proxy.js.map +1 -1
- package/dist/cjs/infra/analyzers/index.d.ts +0 -2
- package/dist/cjs/infra/analyzers/index.d.ts.map +1 -1
- package/dist/cjs/infra/analyzers/index.js +1 -6
- package/dist/cjs/infra/analyzers/index.js.map +1 -1
- package/dist/cjs/infra/cli.d.ts +4 -0
- package/dist/cjs/infra/cli.d.ts.map +1 -1
- package/dist/cjs/infra/cli.js +6 -199
- package/dist/cjs/infra/cli.js.map +1 -1
- package/dist/cjs/infra/index.d.ts +1 -3
- package/dist/cjs/infra/index.d.ts.map +1 -1
- package/dist/cjs/infra/index.js +1 -16
- package/dist/cjs/infra/index.js.map +1 -1
- package/dist/cjs/infra/mcp-tools.d.ts.map +1 -1
- package/dist/cjs/infra/mcp-tools.js +8 -453
- package/dist/cjs/infra/mcp-tools.js.map +1 -1
- package/dist/cjs/infra/types.d.ts +0 -101
- package/dist/cjs/infra/types.d.ts.map +1 -1
- package/dist/cjs/infra/types.js +2 -1
- package/dist/cjs/infra/types.js.map +1 -1
- package/dist/cjs/mcp/index.js +33 -10
- 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 +8 -21
- package/dist/cjs/mcp/prompts.js.map +1 -1
- package/dist/cjs/mcp/tool-profiles.d.ts +8 -3
- package/dist/cjs/mcp/tool-profiles.d.ts.map +1 -1
- package/dist/cjs/mcp/tool-profiles.js +25 -54
- package/dist/cjs/mcp/tool-profiles.js.map +1 -1
- package/dist/cjs/mcp/tools/memory.d.ts +8 -0
- package/dist/cjs/mcp/tools/memory.d.ts.map +1 -1
- package/dist/cjs/mcp/tools/memory.js +154 -125
- package/dist/cjs/mcp/tools/memory.js.map +1 -1
- package/dist/cjs/mcp/tools.d.ts.map +1 -1
- package/dist/cjs/mcp/tools.js +11 -6
- 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 +13 -12
- package/dist/cjs/mcp/workspaceShared.js.map +1 -1
- package/dist/cjs/proxy/ProjectRegistry.d.ts +44 -0
- package/dist/cjs/proxy/ProjectRegistry.d.ts.map +1 -1
- package/dist/cjs/proxy/ProjectRegistry.js +92 -3
- package/dist/cjs/proxy/ProjectRegistry.js.map +1 -1
- package/dist/cjs/subconscious/HostRecall.d.ts +36 -3
- package/dist/cjs/subconscious/HostRecall.d.ts.map +1 -1
- package/dist/cjs/subconscious/HostRecall.js +164 -37
- package/dist/cjs/subconscious/HostRecall.js.map +1 -1
- package/dist/cjs/subconscious/NarrowEvidence.d.ts +47 -0
- package/dist/cjs/subconscious/NarrowEvidence.d.ts.map +1 -0
- package/dist/cjs/subconscious/NarrowEvidence.js +252 -0
- package/dist/cjs/subconscious/NarrowEvidence.js.map +1 -0
- package/dist/cjs/subconscious/TheBrainV2.d.ts +37 -0
- package/dist/cjs/subconscious/TheBrainV2.d.ts.map +1 -1
- package/dist/cjs/subconscious/TheBrainV2.js +147 -15
- package/dist/cjs/subconscious/TheBrainV2.js.map +1 -1
- package/dist/cjs/subconscious/freshness/LocalFsResolver.d.ts.map +1 -1
- package/dist/cjs/subconscious/freshness/LocalFsResolver.js +17 -0
- package/dist/cjs/subconscious/freshness/LocalFsResolver.js.map +1 -1
- package/dist/cjs/subconscious/recallDigest.d.ts +42 -0
- package/dist/cjs/subconscious/recallDigest.d.ts.map +1 -0
- package/dist/cjs/subconscious/recallDigest.js +94 -0
- package/dist/cjs/subconscious/recallDigest.js.map +1 -0
- package/dist/cjs/utils/OtherLanguageSymbols.d.ts +31 -0
- package/dist/cjs/utils/OtherLanguageSymbols.d.ts.map +1 -0
- package/dist/cjs/utils/OtherLanguageSymbols.js +283 -0
- package/dist/cjs/utils/OtherLanguageSymbols.js.map +1 -0
- package/dist/cjs/utils/SavingsLedger.d.ts +27 -0
- package/dist/cjs/utils/SavingsLedger.d.ts.map +1 -1
- package/dist/cjs/utils/SavingsLedger.js +51 -0
- package/dist/cjs/utils/SavingsLedger.js.map +1 -1
- package/dist/cjs/utils/StoreDraft.d.ts +12 -0
- package/dist/cjs/utils/StoreDraft.d.ts.map +1 -1
- package/dist/cjs/utils/StoreDraft.js +53 -1
- package/dist/cjs/utils/StoreDraft.js.map +1 -1
- package/dist/cjs/utils/SymbolSurgicalContext.d.ts +2 -0
- package/dist/cjs/utils/SymbolSurgicalContext.d.ts.map +1 -1
- package/dist/cjs/utils/SymbolSurgicalContext.js +1 -0
- package/dist/cjs/utils/SymbolSurgicalContext.js.map +1 -1
- package/dist/cjs/utils/reportSavings.d.ts +17 -4
- package/dist/cjs/utils/reportSavings.d.ts.map +1 -1
- package/dist/cjs/utils/reportSavings.js +67 -22
- package/dist/cjs/utils/reportSavings.js.map +1 -1
- package/dist/esm/cli/gitHooks.d.ts +9 -2
- package/dist/esm/cli/gitHooks.d.ts.map +1 -1
- package/dist/esm/cli/gitHooks.js +31 -4
- package/dist/esm/cli/gitHooks.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 +42 -5
- package/dist/esm/cli/lemma-proxy.js.map +1 -1
- package/dist/esm/infra/analyzers/index.d.ts +0 -2
- package/dist/esm/infra/analyzers/index.d.ts.map +1 -1
- package/dist/esm/infra/analyzers/index.js +0 -2
- package/dist/esm/infra/analyzers/index.js.map +1 -1
- package/dist/esm/infra/cli.d.ts +4 -0
- package/dist/esm/infra/cli.d.ts.map +1 -1
- package/dist/esm/infra/cli.js +6 -199
- package/dist/esm/infra/cli.js.map +1 -1
- package/dist/esm/infra/index.d.ts +1 -3
- package/dist/esm/infra/index.d.ts.map +1 -1
- package/dist/esm/infra/index.js +1 -3
- package/dist/esm/infra/index.js.map +1 -1
- package/dist/esm/infra/mcp-tools.d.ts.map +1 -1
- package/dist/esm/infra/mcp-tools.js +9 -454
- package/dist/esm/infra/mcp-tools.js.map +1 -1
- package/dist/esm/infra/types.d.ts +0 -101
- package/dist/esm/infra/types.d.ts.map +1 -1
- package/dist/esm/infra/types.js +2 -1
- package/dist/esm/infra/types.js.map +1 -1
- package/dist/esm/mcp/index.js +33 -10
- 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 +8 -21
- package/dist/esm/mcp/prompts.js.map +1 -1
- package/dist/esm/mcp/tool-profiles.d.ts +8 -3
- package/dist/esm/mcp/tool-profiles.d.ts.map +1 -1
- package/dist/esm/mcp/tool-profiles.js +25 -54
- package/dist/esm/mcp/tool-profiles.js.map +1 -1
- package/dist/esm/mcp/tools/memory.d.ts +8 -0
- package/dist/esm/mcp/tools/memory.d.ts.map +1 -1
- package/dist/esm/mcp/tools/memory.js +156 -128
- package/dist/esm/mcp/tools/memory.js.map +1 -1
- package/dist/esm/mcp/tools.d.ts.map +1 -1
- package/dist/esm/mcp/tools.js +12 -7
- 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 +13 -12
- package/dist/esm/mcp/workspaceShared.js.map +1 -1
- package/dist/esm/proxy/ProjectRegistry.d.ts +44 -0
- package/dist/esm/proxy/ProjectRegistry.d.ts.map +1 -1
- package/dist/esm/proxy/ProjectRegistry.js +91 -2
- package/dist/esm/proxy/ProjectRegistry.js.map +1 -1
- package/dist/esm/subconscious/HostRecall.d.ts +36 -3
- package/dist/esm/subconscious/HostRecall.d.ts.map +1 -1
- package/dist/esm/subconscious/HostRecall.js +159 -36
- package/dist/esm/subconscious/HostRecall.js.map +1 -1
- package/dist/esm/subconscious/NarrowEvidence.d.ts +47 -0
- package/dist/esm/subconscious/NarrowEvidence.d.ts.map +1 -0
- package/dist/esm/subconscious/NarrowEvidence.js +211 -0
- package/dist/esm/subconscious/NarrowEvidence.js.map +1 -0
- package/dist/esm/subconscious/TheBrainV2.d.ts +37 -0
- package/dist/esm/subconscious/TheBrainV2.d.ts.map +1 -1
- package/dist/esm/subconscious/TheBrainV2.js +146 -14
- package/dist/esm/subconscious/TheBrainV2.js.map +1 -1
- package/dist/esm/subconscious/freshness/LocalFsResolver.d.ts.map +1 -1
- package/dist/esm/subconscious/freshness/LocalFsResolver.js +17 -0
- package/dist/esm/subconscious/freshness/LocalFsResolver.js.map +1 -1
- package/dist/esm/subconscious/recallDigest.d.ts +42 -0
- package/dist/esm/subconscious/recallDigest.d.ts.map +1 -0
- package/dist/esm/subconscious/recallDigest.js +87 -0
- package/dist/esm/subconscious/recallDigest.js.map +1 -0
- package/dist/esm/utils/OtherLanguageSymbols.d.ts +31 -0
- package/dist/esm/utils/OtherLanguageSymbols.d.ts.map +1 -0
- package/dist/esm/utils/OtherLanguageSymbols.js +275 -0
- package/dist/esm/utils/OtherLanguageSymbols.js.map +1 -0
- package/dist/esm/utils/SavingsLedger.d.ts +27 -0
- package/dist/esm/utils/SavingsLedger.d.ts.map +1 -1
- package/dist/esm/utils/SavingsLedger.js +51 -0
- package/dist/esm/utils/SavingsLedger.js.map +1 -1
- package/dist/esm/utils/StoreDraft.d.ts +12 -0
- package/dist/esm/utils/StoreDraft.d.ts.map +1 -1
- package/dist/esm/utils/StoreDraft.js +52 -1
- package/dist/esm/utils/StoreDraft.js.map +1 -1
- package/dist/esm/utils/SymbolSurgicalContext.d.ts +2 -0
- package/dist/esm/utils/SymbolSurgicalContext.d.ts.map +1 -1
- package/dist/esm/utils/SymbolSurgicalContext.js +1 -1
- package/dist/esm/utils/SymbolSurgicalContext.js.map +1 -1
- package/dist/esm/utils/reportSavings.d.ts +17 -4
- package/dist/esm/utils/reportSavings.d.ts.map +1 -1
- package/dist/esm/utils/reportSavings.js +65 -22
- package/dist/esm/utils/reportSavings.js.map +1 -1
- package/package.json +2 -1
- package/dashboard/dist/assets/index-BoeQau6n.css +0 -1
- package/dashboard/dist/assets/index-Clf3qR64.js +0 -451
- package/dist/cjs/infra/analyzers/DriftDetector.d.ts +0 -4
- package/dist/cjs/infra/analyzers/DriftDetector.d.ts.map +0 -1
- package/dist/cjs/infra/analyzers/DriftDetector.js +0 -88
- package/dist/cjs/infra/analyzers/DriftDetector.js.map +0 -1
- package/dist/cjs/infra/analyzers/InfraAnalyzer.d.ts +0 -3
- package/dist/cjs/infra/analyzers/InfraAnalyzer.d.ts.map +0 -1
- package/dist/cjs/infra/analyzers/InfraAnalyzer.js +0 -73
- package/dist/cjs/infra/analyzers/InfraAnalyzer.js.map +0 -1
- package/dist/cjs/infra/config.d.ts +0 -17
- package/dist/cjs/infra/config.d.ts.map +0 -1
- package/dist/cjs/infra/config.js +0 -111
- package/dist/cjs/infra/config.js.map +0 -1
- package/dist/cjs/infra/errorCause.d.ts +0 -36
- package/dist/cjs/infra/errorCause.d.ts.map +0 -1
- package/dist/cjs/infra/errorCause.js +0 -143
- package/dist/cjs/infra/errorCause.js.map +0 -1
- package/dist/cjs/infra/providers/InfraProvider.d.ts +0 -9
- package/dist/cjs/infra/providers/InfraProvider.d.ts.map +0 -1
- package/dist/cjs/infra/providers/InfraProvider.js +0 -3
- package/dist/cjs/infra/providers/InfraProvider.js.map +0 -1
- package/dist/cjs/infra/providers/JenkinsProvider.d.ts +0 -16
- package/dist/cjs/infra/providers/JenkinsProvider.d.ts.map +0 -1
- package/dist/cjs/infra/providers/JenkinsProvider.js +0 -193
- package/dist/cjs/infra/providers/JenkinsProvider.js.map +0 -1
- package/dist/cjs/infra/providers/OKDProvider.d.ts +0 -24
- package/dist/cjs/infra/providers/OKDProvider.d.ts.map +0 -1
- package/dist/cjs/infra/providers/OKDProvider.js +0 -296
- package/dist/cjs/infra/providers/OKDProvider.js.map +0 -1
- package/dist/cjs/infra/providers/TerraformProvider.d.ts +0 -17
- package/dist/cjs/infra/providers/TerraformProvider.d.ts.map +0 -1
- package/dist/cjs/infra/providers/TerraformProvider.js +0 -111
- package/dist/cjs/infra/providers/TerraformProvider.js.map +0 -1
- package/dist/cjs/infra/providers/index.d.ts +0 -9
- package/dist/cjs/infra/providers/index.d.ts.map +0 -1
- package/dist/cjs/infra/providers/index.js +0 -34
- package/dist/cjs/infra/providers/index.js.map +0 -1
- package/dist/cjs/infra/templates/jenkins/index.d.ts +0 -15
- package/dist/cjs/infra/templates/jenkins/index.d.ts.map +0 -1
- package/dist/cjs/infra/templates/jenkins/index.js +0 -128
- package/dist/cjs/infra/templates/jenkins/index.js.map +0 -1
- package/dist/cjs/infra/templates/okd/index.d.ts +0 -31
- package/dist/cjs/infra/templates/okd/index.d.ts.map +0 -1
- package/dist/cjs/infra/templates/okd/index.js +0 -149
- package/dist/cjs/infra/templates/okd/index.js.map +0 -1
- package/dist/esm/infra/analyzers/DriftDetector.d.ts +0 -4
- package/dist/esm/infra/analyzers/DriftDetector.d.ts.map +0 -1
- package/dist/esm/infra/analyzers/DriftDetector.js +0 -84
- package/dist/esm/infra/analyzers/DriftDetector.js.map +0 -1
- package/dist/esm/infra/analyzers/InfraAnalyzer.d.ts +0 -3
- package/dist/esm/infra/analyzers/InfraAnalyzer.d.ts.map +0 -1
- package/dist/esm/infra/analyzers/InfraAnalyzer.js +0 -70
- package/dist/esm/infra/analyzers/InfraAnalyzer.js.map +0 -1
- package/dist/esm/infra/config.d.ts +0 -17
- package/dist/esm/infra/config.d.ts.map +0 -1
- package/dist/esm/infra/config.js +0 -101
- package/dist/esm/infra/config.js.map +0 -1
- package/dist/esm/infra/errorCause.d.ts +0 -36
- package/dist/esm/infra/errorCause.d.ts.map +0 -1
- package/dist/esm/infra/errorCause.js +0 -138
- package/dist/esm/infra/errorCause.js.map +0 -1
- package/dist/esm/infra/providers/InfraProvider.d.ts +0 -9
- package/dist/esm/infra/providers/InfraProvider.d.ts.map +0 -1
- package/dist/esm/infra/providers/InfraProvider.js +0 -2
- package/dist/esm/infra/providers/InfraProvider.js.map +0 -1
- package/dist/esm/infra/providers/JenkinsProvider.d.ts +0 -16
- package/dist/esm/infra/providers/JenkinsProvider.d.ts.map +0 -1
- package/dist/esm/infra/providers/JenkinsProvider.js +0 -186
- package/dist/esm/infra/providers/JenkinsProvider.js.map +0 -1
- package/dist/esm/infra/providers/OKDProvider.d.ts +0 -24
- package/dist/esm/infra/providers/OKDProvider.d.ts.map +0 -1
- package/dist/esm/infra/providers/OKDProvider.js +0 -292
- package/dist/esm/infra/providers/OKDProvider.js.map +0 -1
- package/dist/esm/infra/providers/TerraformProvider.d.ts +0 -17
- package/dist/esm/infra/providers/TerraformProvider.d.ts.map +0 -1
- package/dist/esm/infra/providers/TerraformProvider.js +0 -107
- package/dist/esm/infra/providers/TerraformProvider.js.map +0 -1
- package/dist/esm/infra/providers/index.d.ts +0 -9
- package/dist/esm/infra/providers/index.d.ts.map +0 -1
- package/dist/esm/infra/providers/index.js +0 -27
- package/dist/esm/infra/providers/index.js.map +0 -1
- package/dist/esm/infra/templates/jenkins/index.d.ts +0 -15
- package/dist/esm/infra/templates/jenkins/index.d.ts.map +0 -1
- package/dist/esm/infra/templates/jenkins/index.js +0 -124
- package/dist/esm/infra/templates/jenkins/index.js.map +0 -1
- package/dist/esm/infra/templates/okd/index.d.ts +0 -31
- package/dist/esm/infra/templates/okd/index.d.ts.map +0 -1
- package/dist/esm/infra/templates/okd/index.js +0 -142
- package/dist/esm/infra/templates/okd/index.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LocalFsResolver.js","sourceRoot":"","sources":["../../../../src/subconscious/freshness/LocalFsResolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAC;
|
|
1
|
+
{"version":3,"file":"LocalFsResolver.js","sourceRoot":"","sources":["../../../../src/subconscious/freshness/LocalFsResolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { type TheBrainV2 } from './TheBrainV2.js';
|
|
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
|
+
/** The ids those lines name — what the note actually offered the agent. */
|
|
23
|
+
ids: string[];
|
|
24
|
+
failedCount: number;
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* The hits worth naming in a note: commit-log ingests are dropped. They restate `git log`, and on
|
|
28
|
+
* a hub file they were most of the list — Lemma's own repo held 295 of them, recalled twice in
|
|
29
|
+
* total, and a file with no deliberate memory got a note made only of them.
|
|
30
|
+
*/
|
|
31
|
+
export declare function recallableHits<T extends DigestHit>(brain: TheBrainV2, hits: T[]): T[];
|
|
32
|
+
/**
|
|
33
|
+
* Relevance without a query to rank against: a failed approach first (repeating it is the
|
|
34
|
+
* costliest mistake), then memories someone wrote on purpose over commit-log ingests (a hub
|
|
35
|
+
* file like package.json collects one per commit that touched it), then the ones reused most,
|
|
36
|
+
* then the newest.
|
|
37
|
+
*/
|
|
38
|
+
export declare function rankFileHits(brain: TheBrainV2, hits: DigestHit[]): DigestHit[];
|
|
39
|
+
export declare function digestFileHits(brain: TheBrainV2, hits: DigestHit[], max?: number): FileDigest;
|
|
40
|
+
/** The full note: header, the digest lines, and what to do with them. */
|
|
41
|
+
export declare function formatFileDigest(subject: string, digest: FileDigest): string;
|
|
42
|
+
//# 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,2EAA2E;IAC3E,GAAG,EAAE,MAAM,EAAE,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAOD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,CAAC,SAAS,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,CAKrF;AAED;;;;;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,87 @@
|
|
|
1
|
+
import { entrySource } from './TheBrainV2.js';
|
|
2
|
+
import { ageLabel } from '../utils/ageLabel.js';
|
|
3
|
+
/**
|
|
4
|
+
* Shared by the host's PostToolUse hook (HostRecall) and the MCP read tools (workspaceShared):
|
|
5
|
+
* the note that says "the Brain knows something about this file". It used to print every id —
|
|
6
|
+
* "116 memories about package.json: 007e…, 00d1…, …" — which an agent can't act on without a
|
|
7
|
+
* round-trip per id, so in practice it was read as noise and skipped. A digest names the few
|
|
8
|
+
* memories worth opening, with what each one is about and whether it can still be trusted.
|
|
9
|
+
*
|
|
10
|
+
* Headlines only, never bodies: a file read must not turn into a memory dump. get_memory
|
|
11
|
+
* fetches the body of the one that matters.
|
|
12
|
+
*/
|
|
13
|
+
export const DIGEST_MAX = 3;
|
|
14
|
+
const HEADLINE_MAX = 110;
|
|
15
|
+
function headline(query) {
|
|
16
|
+
const q = query.replace(/\s+/g, ' ').trim();
|
|
17
|
+
return q.length > HEADLINE_MAX ? `${q.slice(0, HEADLINE_MAX - 1)}…` : q;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* The hits worth naming in a note: commit-log ingests are dropped. They restate `git log`, and on
|
|
21
|
+
* a hub file they were most of the list — Lemma's own repo held 295 of them, recalled twice in
|
|
22
|
+
* total, and a file with no deliberate memory got a note made only of them.
|
|
23
|
+
*/
|
|
24
|
+
export function recallableHits(brain, hits) {
|
|
25
|
+
return hits.filter((h) => {
|
|
26
|
+
const entry = brain.getEntry(h.id);
|
|
27
|
+
return !entry || entrySource(entry) !== 'auto-git';
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Relevance without a query to rank against: a failed approach first (repeating it is the
|
|
32
|
+
* costliest mistake), then memories someone wrote on purpose over commit-log ingests (a hub
|
|
33
|
+
* file like package.json collects one per commit that touched it), then the ones reused most,
|
|
34
|
+
* then the newest.
|
|
35
|
+
*/
|
|
36
|
+
export function rankFileHits(brain, hits) {
|
|
37
|
+
const meta = new Map(hits.map((h) => {
|
|
38
|
+
const entry = brain.getEntry(h.id);
|
|
39
|
+
return [
|
|
40
|
+
h.id,
|
|
41
|
+
{
|
|
42
|
+
failed: h.outcome === 'failed' ? 1 : 0,
|
|
43
|
+
deliberate: entry && entrySource(entry) === 'auto-git' ? 0 : 1,
|
|
44
|
+
hits: entry?.hits ?? 0,
|
|
45
|
+
time: Date.parse(entry?.timestamp ?? '') || 0,
|
|
46
|
+
},
|
|
47
|
+
];
|
|
48
|
+
}));
|
|
49
|
+
return [...hits].sort((a, b) => {
|
|
50
|
+
const x = meta.get(a.id);
|
|
51
|
+
const y = meta.get(b.id);
|
|
52
|
+
return y.failed - x.failed || y.deliberate - x.deliberate || y.hits - x.hits || y.time - x.time;
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
export function digestFileHits(brain, hits, max = DIGEST_MAX) {
|
|
56
|
+
const top = rankFileHits(brain, hits).slice(0, max);
|
|
57
|
+
// Freshness only for the ones shown: hash-comparing every hit on a hub file would cost more
|
|
58
|
+
// than the read it rides on.
|
|
59
|
+
let status = new Map();
|
|
60
|
+
try {
|
|
61
|
+
status = new Map(brain.verifyByIds(top.map((h) => h.id)).map((r) => [r.id, r.status]));
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
// Unknown freshness is reported as such below, never as fresh.
|
|
65
|
+
}
|
|
66
|
+
const lines = top.map((h) => {
|
|
67
|
+
const raw = status.get(h.id) ?? 'unverified';
|
|
68
|
+
const verdict = raw === 'stale' ? 'STALE' : raw;
|
|
69
|
+
const age = ageLabel(brain.getEntry(h.id)?.timestamp);
|
|
70
|
+
const failed = h.outcome === 'failed' ? ', FAILED approach' : '';
|
|
71
|
+
return ` • ${h.id} (${verdict}, ${age}${failed}): ${headline(h.query)}`;
|
|
72
|
+
});
|
|
73
|
+
return { total: hits.length, lines, ids: top.map((h) => h.id), failedCount: hits.filter((h) => h.outcome === 'failed').length };
|
|
74
|
+
}
|
|
75
|
+
/** The full note: header, the digest lines, and what to do with them. */
|
|
76
|
+
export function formatFileDigest(subject, digest) {
|
|
77
|
+
const { total, lines, failedCount } = digest;
|
|
78
|
+
const header = total === 1
|
|
79
|
+
? `🧠 Lemma Brain has 1 memory about ${subject}:`
|
|
80
|
+
: `🧠 Lemma Brain has ${total} memories about ${subject}; the most relevant:`;
|
|
81
|
+
const rest = total > lines.length ? ` (+${total - lines.length} more — search_memory with your question ranks them against it.)` : '';
|
|
82
|
+
// Failed approaches rank first, so any are already among the lines; this flags them loudly.
|
|
83
|
+
const failed = failedCount > 0 ? `⚠️ ${failedCount === 1 ? 'One documents' : `${failedCount} document`} an approach that FAILED here — read it before repeating it.` : '';
|
|
84
|
+
const action = 'get_memory <id> reads one; a STALE memory must be re-checked against the current code before you rely on it.';
|
|
85
|
+
return [header, ...lines, rest, failed, action].filter(Boolean).join('\n');
|
|
86
|
+
}
|
|
87
|
+
//# 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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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Symbol lookup for languages the TypeScript compiler cannot parse.
|
|
3
|
+
*
|
|
4
|
+
* Freshness tracks the symbols a memory names instead of the whole file, so an edit elsewhere
|
|
5
|
+
* in the file does not make the memory STALE. That only worked for .ts/.js: in a Python, Go or
|
|
6
|
+
* Java project every memory tracked a whole file and went STALE on any edit to it, which is
|
|
7
|
+
* exactly the noise symbol tracking exists to remove.
|
|
8
|
+
*
|
|
9
|
+
* This is a declaration locator, not a parser. It finds where a named function/class/method
|
|
10
|
+
* starts and where its block ends (indentation for Python and Ruby, brace depth for the rest).
|
|
11
|
+
* It is deliberately conservative in both directions the Brain cares about:
|
|
12
|
+
* - a name it cannot find, or finds in more than one place, returns null — the caller then
|
|
13
|
+
* tracks the whole file, which can only be too sensitive, never blind;
|
|
14
|
+
* - comments are stripped only where a scanner that tracks string literals is sure they are
|
|
15
|
+
* comments, so a `#` or `//` inside a string is never mistaken for one. Treating a code
|
|
16
|
+
* change as cosmetic would stamp "fresh" on a memory whose subject changed.
|
|
17
|
+
*/
|
|
18
|
+
export declare function supportsOtherLanguage(filePath: string): boolean;
|
|
19
|
+
/**
|
|
20
|
+
* The source text of the named declaration, or null when it is absent or ambiguous.
|
|
21
|
+
* `Class.member` looks the member up inside the class's own block.
|
|
22
|
+
*/
|
|
23
|
+
export declare function findOtherLanguageSymbol(filePath: string, source: string, name: string): string | null;
|
|
24
|
+
/**
|
|
25
|
+
* The declaration with comments dropped and whitespace collapsed, for the cosmetic-vs-real
|
|
26
|
+
* change test. Python keeps each line's indentation because it is syntax there; everything
|
|
27
|
+
* else collapses to one token stream. Anything the scanner is unsure about stays in, so the
|
|
28
|
+
* worst outcome is a cosmetic edit reported as a change, never a change reported as cosmetic.
|
|
29
|
+
*/
|
|
30
|
+
export declare function normalizeOtherLanguage(filePath: string, source: string): string;
|
|
31
|
+
//# sourceMappingURL=OtherLanguageSymbols.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OtherLanguageSymbols.d.ts","sourceRoot":"","sources":["../../../src/utils/OtherLanguageSymbols.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AA2DH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE/D;AAWD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAarG;AAuGD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CA8C/E"}
|
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Symbol lookup for languages the TypeScript compiler cannot parse.
|
|
3
|
+
*
|
|
4
|
+
* Freshness tracks the symbols a memory names instead of the whole file, so an edit elsewhere
|
|
5
|
+
* in the file does not make the memory STALE. That only worked for .ts/.js: in a Python, Go or
|
|
6
|
+
* Java project every memory tracked a whole file and went STALE on any edit to it, which is
|
|
7
|
+
* exactly the noise symbol tracking exists to remove.
|
|
8
|
+
*
|
|
9
|
+
* This is a declaration locator, not a parser. It finds where a named function/class/method
|
|
10
|
+
* starts and where its block ends (indentation for Python and Ruby, brace depth for the rest).
|
|
11
|
+
* It is deliberately conservative in both directions the Brain cares about:
|
|
12
|
+
* - a name it cannot find, or finds in more than one place, returns null — the caller then
|
|
13
|
+
* tracks the whole file, which can only be too sensitive, never blind;
|
|
14
|
+
* - comments are stripped only where a scanner that tracks string literals is sure they are
|
|
15
|
+
* comments, so a `#` or `//` inside a string is never mistaken for one. Treating a code
|
|
16
|
+
* change as cosmetic would stamp "fresh" on a memory whose subject changed.
|
|
17
|
+
*/
|
|
18
|
+
import path from 'path';
|
|
19
|
+
const C_LIKE_COMMENTS = { lineComment: ['//'], blockComment: ['/*', '*/'] };
|
|
20
|
+
const LANGS = {
|
|
21
|
+
'.py': {
|
|
22
|
+
style: 'indent',
|
|
23
|
+
decl: ['^(\\s*)(?:async\\s+)?(?:def|class)\\s+$NAME\\b'],
|
|
24
|
+
lineComment: ['#'],
|
|
25
|
+
quotes: ['"""', "'''", '"', "'"],
|
|
26
|
+
},
|
|
27
|
+
'.rb': {
|
|
28
|
+
style: 'ruby',
|
|
29
|
+
decl: ['^(\\s*)(?:def|class|module)\\s+(?:self\\.)?$NAME\\b'],
|
|
30
|
+
lineComment: ['#'],
|
|
31
|
+
quotes: ['"', "'"],
|
|
32
|
+
},
|
|
33
|
+
'.go': {
|
|
34
|
+
style: 'braces',
|
|
35
|
+
decl: ['^(\\s*)func\\s+(?:\\([^)]*\\)\\s*)?$NAME\\s*[(\\[]', '^(\\s*)type\\s+$NAME\\b'],
|
|
36
|
+
...C_LIKE_COMMENTS,
|
|
37
|
+
quotes: ['`', '"', "'"],
|
|
38
|
+
},
|
|
39
|
+
'.rs': {
|
|
40
|
+
style: 'braces',
|
|
41
|
+
decl: ['^(\\s*)(?:pub(?:\\([^)]*\\))?\\s+)?(?:async\\s+)?(?:unsafe\\s+)?(?:fn|struct|enum|trait)\\s+$NAME\\b'],
|
|
42
|
+
...C_LIKE_COMMENTS,
|
|
43
|
+
quotes: ['"', "'"],
|
|
44
|
+
},
|
|
45
|
+
// Java/Kotlin/C#/PHP/Swift: a method or class declaration — modifiers and a return type, then
|
|
46
|
+
// the name and an opening paren or brace. A call such as `foo(x);` has no brace and no type.
|
|
47
|
+
'.java': { style: 'braces', decl: braceDecl(), ...C_LIKE_COMMENTS, quotes: ['"""', '"', "'"] },
|
|
48
|
+
'.kt': { style: 'braces', decl: ['^(\\s*)(?:[\\w@]+\\s+)*(?:fun|class|object|interface)\\s+(?:<[^>]*>\\s*)?$NAME\\b'], ...C_LIKE_COMMENTS, quotes: ['"""', '"', "'"] },
|
|
49
|
+
'.cs': { style: 'braces', decl: braceDecl(), ...C_LIKE_COMMENTS, quotes: ['"', "'"] },
|
|
50
|
+
'.php': { style: 'braces', decl: ['^(\\s*)(?:(?:public|private|protected|static|abstract|final)\\s+)*(?:function|class|interface|trait)\\s+&?$NAME\\b'], ...C_LIKE_COMMENTS, lineComment: ['//', '#'], quotes: ['"', "'"] },
|
|
51
|
+
'.swift': { style: 'braces', decl: ['^(\\s*)(?:[\\w@]+\\s+)*(?:func|class|struct|enum|protocol)\\s+$NAME\\b'], ...C_LIKE_COMMENTS, quotes: ['"""', '"', "'"] },
|
|
52
|
+
};
|
|
53
|
+
function braceDecl() {
|
|
54
|
+
return [
|
|
55
|
+
'^(\\s*)(?:(?:public|private|protected|internal|static|final|abstract|virtual|override|async|sealed|partial)\\s+)*(?:class|interface|enum|record|struct)\\s+$NAME\\b',
|
|
56
|
+
'^(\\s*)(?:(?:public|private|protected|internal|static|final|abstract|virtual|override|async|synchronized)\\s+)+[\\w<>\\[\\],.?\\s]+?\\s$NAME\\s*\\(',
|
|
57
|
+
];
|
|
58
|
+
}
|
|
59
|
+
export function supportsOtherLanguage(filePath) {
|
|
60
|
+
return path.extname(filePath).toLowerCase() in LANGS;
|
|
61
|
+
}
|
|
62
|
+
const escapeRe = (s) => s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
63
|
+
/** Index of the first line at or after `from` whose text is not blank. */
|
|
64
|
+
function nextCodeLine(lines, from) {
|
|
65
|
+
let i = from;
|
|
66
|
+
while (i < lines.length && lines[i].trim() === '')
|
|
67
|
+
i++;
|
|
68
|
+
return i;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* The source text of the named declaration, or null when it is absent or ambiguous.
|
|
72
|
+
* `Class.member` looks the member up inside the class's own block.
|
|
73
|
+
*/
|
|
74
|
+
export function findOtherLanguageSymbol(filePath, source, name) {
|
|
75
|
+
const lang = LANGS[path.extname(filePath).toLowerCase()];
|
|
76
|
+
if (!lang)
|
|
77
|
+
return null;
|
|
78
|
+
const [owner, member] = name.split('.');
|
|
79
|
+
if (name.split('.').length > 2)
|
|
80
|
+
return null;
|
|
81
|
+
const lines = source.split(/\r?\n/);
|
|
82
|
+
const ownerBlock = locate(lang, lines, 0, lines.length, owner, true);
|
|
83
|
+
if (!ownerBlock)
|
|
84
|
+
return null;
|
|
85
|
+
if (!member)
|
|
86
|
+
return lines.slice(ownerBlock.start, ownerBlock.end).join('\n');
|
|
87
|
+
// The member must sit inside the owner's block; the owner line itself is not searched.
|
|
88
|
+
const inner = locate(lang, lines, ownerBlock.start + 1, ownerBlock.end, member, false);
|
|
89
|
+
return inner ? lines.slice(inner.start, inner.end).join('\n') : null;
|
|
90
|
+
}
|
|
91
|
+
function locate(lang, lines, from, to, name, topLevelOnly) {
|
|
92
|
+
const patterns = lang.decl.map((d) => new RegExp(d.replace(/\$NAME/g, escapeRe(name))));
|
|
93
|
+
const hits = [];
|
|
94
|
+
for (let i = from; i < to; i++) {
|
|
95
|
+
for (const re of patterns) {
|
|
96
|
+
const m = re.exec(lines[i]);
|
|
97
|
+
if (m) {
|
|
98
|
+
hits.push({ line: i, indent: m[1].length });
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// Ambiguous (an overload, a redefinition, a nested helper of the same name): do not guess.
|
|
104
|
+
// For a top-level lookup, only the least-indented hit counts, so a method with the same name
|
|
105
|
+
// as a function does not make the function unfindable.
|
|
106
|
+
const pool = topLevelOnly && hits.length > 1 ? hits.filter((h) => h.indent === Math.min(...hits.map((x) => x.indent))) : hits;
|
|
107
|
+
if (pool.length !== 1)
|
|
108
|
+
return null;
|
|
109
|
+
const { line, indent } = pool[0];
|
|
110
|
+
const end = blockEnd(lang, lines, line, indent, to);
|
|
111
|
+
if (end === null)
|
|
112
|
+
return null;
|
|
113
|
+
// A decorator or annotation directly above belongs to the declaration.
|
|
114
|
+
let start = line;
|
|
115
|
+
while (start > from && /^\s*(@\w|#\[)/.test(lines[start - 1]))
|
|
116
|
+
start--;
|
|
117
|
+
return { start, end };
|
|
118
|
+
}
|
|
119
|
+
function blockEnd(lang, lines, line, indent, limit) {
|
|
120
|
+
if (lang.style === 'indent') {
|
|
121
|
+
// The block is every following line indented deeper than the declaration (blank lines
|
|
122
|
+
// inside it included); a continuation of a multi-line signature is deeper too.
|
|
123
|
+
let end = line + 1;
|
|
124
|
+
for (let i = line + 1; i < limit; i++) {
|
|
125
|
+
if (lines[i].trim() === '')
|
|
126
|
+
continue;
|
|
127
|
+
const ind = lines[i].match(/^\s*/)[0].length;
|
|
128
|
+
if (ind <= indent)
|
|
129
|
+
break;
|
|
130
|
+
end = i + 1;
|
|
131
|
+
}
|
|
132
|
+
return end;
|
|
133
|
+
}
|
|
134
|
+
if (lang.style === 'ruby') {
|
|
135
|
+
for (let i = line + 1; i < limit; i++) {
|
|
136
|
+
if (new RegExp(`^\\s{${indent}}end\\b`).test(lines[i]))
|
|
137
|
+
return i + 1;
|
|
138
|
+
}
|
|
139
|
+
return null;
|
|
140
|
+
}
|
|
141
|
+
// Braces: from the declaration, count { and } outside strings and comments until balanced.
|
|
142
|
+
let depth = 0;
|
|
143
|
+
let opened = false;
|
|
144
|
+
let inBlock = false;
|
|
145
|
+
for (let i = line; i < limit; i++) {
|
|
146
|
+
const text = lines[i];
|
|
147
|
+
let pos = 0;
|
|
148
|
+
while (pos < text.length) {
|
|
149
|
+
if (inBlock) {
|
|
150
|
+
const close = text.indexOf(lang.blockComment[1], pos);
|
|
151
|
+
if (close < 0) {
|
|
152
|
+
pos = text.length;
|
|
153
|
+
break;
|
|
154
|
+
}
|
|
155
|
+
pos = close + lang.blockComment[1].length;
|
|
156
|
+
inBlock = false;
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
159
|
+
if (lang.blockComment && text.startsWith(lang.blockComment[0], pos)) {
|
|
160
|
+
inBlock = true;
|
|
161
|
+
pos += lang.blockComment[0].length;
|
|
162
|
+
continue;
|
|
163
|
+
}
|
|
164
|
+
if (lang.lineComment.some((c) => text.startsWith(c, pos)))
|
|
165
|
+
break;
|
|
166
|
+
const q = lang.quotes.find((c) => text.startsWith(c, pos));
|
|
167
|
+
if (q) {
|
|
168
|
+
pos = skipString(text, pos, q);
|
|
169
|
+
continue;
|
|
170
|
+
}
|
|
171
|
+
const ch = text[pos];
|
|
172
|
+
if (ch === '{') {
|
|
173
|
+
depth++;
|
|
174
|
+
opened = true;
|
|
175
|
+
}
|
|
176
|
+
else if (ch === '}') {
|
|
177
|
+
depth--;
|
|
178
|
+
if (opened && depth === 0)
|
|
179
|
+
return i + 1;
|
|
180
|
+
}
|
|
181
|
+
pos++;
|
|
182
|
+
}
|
|
183
|
+
// A declaration with no body (an interface method, an abstract one) ends at its semicolon.
|
|
184
|
+
if (!opened && /;\s*$/.test(text))
|
|
185
|
+
return i + 1;
|
|
186
|
+
}
|
|
187
|
+
return null;
|
|
188
|
+
}
|
|
189
|
+
/** Position after the string literal starting at `pos`; an unterminated one ends the line. */
|
|
190
|
+
function skipString(text, pos, quote) {
|
|
191
|
+
return scanString(text, pos, quote).end;
|
|
192
|
+
}
|
|
193
|
+
function scanString(text, pos, quote) {
|
|
194
|
+
let i = pos + quote.length;
|
|
195
|
+
while (i < text.length) {
|
|
196
|
+
if (text[i] === '\\' && quote !== '`') {
|
|
197
|
+
i += 2;
|
|
198
|
+
continue;
|
|
199
|
+
}
|
|
200
|
+
if (text.startsWith(quote, i))
|
|
201
|
+
return { end: i + quote.length, closed: true };
|
|
202
|
+
i++;
|
|
203
|
+
}
|
|
204
|
+
return { end: text.length, closed: false };
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* The declaration with comments dropped and whitespace collapsed, for the cosmetic-vs-real
|
|
208
|
+
* change test. Python keeps each line's indentation because it is syntax there; everything
|
|
209
|
+
* else collapses to one token stream. Anything the scanner is unsure about stays in, so the
|
|
210
|
+
* worst outcome is a cosmetic edit reported as a change, never a change reported as cosmetic.
|
|
211
|
+
*/
|
|
212
|
+
export function normalizeOtherLanguage(filePath, source) {
|
|
213
|
+
const lang = LANGS[path.extname(filePath).toLowerCase()];
|
|
214
|
+
if (!lang)
|
|
215
|
+
return source;
|
|
216
|
+
const out = [];
|
|
217
|
+
let inBlock = false;
|
|
218
|
+
let openQuote = null; // a triple-quoted or backtick string spanning lines
|
|
219
|
+
for (const raw of source.split(/\r?\n/)) {
|
|
220
|
+
let kept = '';
|
|
221
|
+
let pos = 0;
|
|
222
|
+
if (openQuote) {
|
|
223
|
+
const close = raw.indexOf(openQuote);
|
|
224
|
+
if (close < 0) {
|
|
225
|
+
out.push(raw);
|
|
226
|
+
continue;
|
|
227
|
+
}
|
|
228
|
+
kept = raw.slice(0, close + openQuote.length);
|
|
229
|
+
pos = close + openQuote.length;
|
|
230
|
+
openQuote = null;
|
|
231
|
+
}
|
|
232
|
+
while (pos < raw.length) {
|
|
233
|
+
if (inBlock) {
|
|
234
|
+
const close = raw.indexOf(lang.blockComment[1], pos);
|
|
235
|
+
if (close < 0) {
|
|
236
|
+
pos = raw.length;
|
|
237
|
+
break;
|
|
238
|
+
}
|
|
239
|
+
pos = close + lang.blockComment[1].length;
|
|
240
|
+
inBlock = false;
|
|
241
|
+
continue;
|
|
242
|
+
}
|
|
243
|
+
if (lang.blockComment && raw.startsWith(lang.blockComment[0], pos)) {
|
|
244
|
+
inBlock = true;
|
|
245
|
+
pos += lang.blockComment[0].length;
|
|
246
|
+
continue;
|
|
247
|
+
}
|
|
248
|
+
if (lang.lineComment.some((c) => raw.startsWith(c, pos)))
|
|
249
|
+
break;
|
|
250
|
+
const q = lang.quotes.find((c) => raw.startsWith(c, pos));
|
|
251
|
+
if (q) {
|
|
252
|
+
const { end, closed } = scanString(raw, pos, q);
|
|
253
|
+
kept += raw.slice(pos, end);
|
|
254
|
+
pos = end;
|
|
255
|
+
if (!closed && (q.length === 3 || q === '`'))
|
|
256
|
+
openQuote = q;
|
|
257
|
+
continue;
|
|
258
|
+
}
|
|
259
|
+
kept += raw[pos++];
|
|
260
|
+
}
|
|
261
|
+
if (lang.style === 'indent') {
|
|
262
|
+
const indent = raw.match(/^\s*/)[0];
|
|
263
|
+
const body = kept.trim().replace(/[ \t]+/g, ' ');
|
|
264
|
+
if (body)
|
|
265
|
+
out.push(indent + body);
|
|
266
|
+
}
|
|
267
|
+
else {
|
|
268
|
+
const body = kept.trim().replace(/\s+/g, ' ');
|
|
269
|
+
if (body)
|
|
270
|
+
out.push(body);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
return lang.style === 'indent' ? out.join('\n') : out.join(' ');
|
|
274
|
+
}
|
|
275
|
+
//# sourceMappingURL=OtherLanguageSymbols.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OtherLanguageSymbols.js","sourceRoot":"","sources":["../../../src/utils/OtherLanguageSymbols.ts"],"names":[],"mappings":"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"}
|
|
@@ -62,6 +62,23 @@ export interface NetStats {
|
|
|
62
62
|
/** tokensSaved / tokensSpent. Below 1.0 means Lemma is not paying for itself. */
|
|
63
63
|
ratio: number;
|
|
64
64
|
}
|
|
65
|
+
/** Tokens saved and spent on one local calendar day. */
|
|
66
|
+
export interface DayTotals {
|
|
67
|
+
saved: number;
|
|
68
|
+
spent: number;
|
|
69
|
+
}
|
|
70
|
+
/** Net position over the last `days` days — the trend the all-time totals hide. */
|
|
71
|
+
export interface RecentStats {
|
|
72
|
+
days: number;
|
|
73
|
+
/** First day of the window (YYYY-MM-DD, local time). */
|
|
74
|
+
since: string;
|
|
75
|
+
/** Days in the window that recorded anything. */
|
|
76
|
+
daysWithData: number;
|
|
77
|
+
tokensSaved: number;
|
|
78
|
+
tokensSpent: number;
|
|
79
|
+
netTokens: number;
|
|
80
|
+
netCost: number;
|
|
81
|
+
}
|
|
65
82
|
export interface SavingsSnapshot {
|
|
66
83
|
clipboard: SourceStats;
|
|
67
84
|
contextSqueeze: SourceStats;
|
|
@@ -72,6 +89,12 @@ export interface SavingsSnapshot {
|
|
|
72
89
|
costs: Record<CostSource, CostStats>;
|
|
73
90
|
totalCost: CostStats;
|
|
74
91
|
net: NetStats;
|
|
92
|
+
/**
|
|
93
|
+
* The last RECENT_WINDOW_DAYS days. The all-time totals mix every configuration Lemma ever
|
|
94
|
+
* ran with; this shows what it does now. Empty (daysWithData 0) for ledgers written before
|
|
95
|
+
* daily totals existed — those days were never recorded per day, and are not invented.
|
|
96
|
+
*/
|
|
97
|
+
recent: RecentStats;
|
|
75
98
|
sessionStartedAt: string;
|
|
76
99
|
/**
|
|
77
100
|
* AN-01 attribution: per-tool / per-host / per-origin rollups of toolResult.
|
|
@@ -95,6 +118,8 @@ declare class SavingsLedger {
|
|
|
95
118
|
/** Per-origin rollup: "lemma" vs anything explicitly reported otherwise. */
|
|
96
119
|
private costByOrigin;
|
|
97
120
|
private readonly sessionStartedAt;
|
|
121
|
+
/** Local day (YYYY-MM-DD) -> tokens saved/spent that day. */
|
|
122
|
+
private daily;
|
|
98
123
|
constructor();
|
|
99
124
|
private load;
|
|
100
125
|
private save;
|
|
@@ -105,6 +130,8 @@ declare class SavingsLedger {
|
|
|
105
130
|
* @param charsAfter Resulting char count after compression/routing
|
|
106
131
|
*/
|
|
107
132
|
record(source: SavingsSource, charsBefore: number, charsAfter: number): void;
|
|
133
|
+
/** Adds to today's totals and drops days past MAX_DAYS_KEPT. */
|
|
134
|
+
private bumpDay;
|
|
108
135
|
/**
|
|
109
136
|
* Record a savings event directly in tokens (for sources that already know their token count).
|
|
110
137
|
*/
|
|
@@ -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;AAED,sFAAsF;AACtF,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAyB3C,cAAM,aAAa;IACjB,OAAO,CAAC,OAAO,CAAqC;IACpD,OAAO,CAAC,KAAK,CAAgC;IAC7C,iFAAiF;IACjF,OAAO,CAAC,UAAU,CAAgC;IAClD,6EAA6E;IAC7E,OAAO,CAAC,UAAU,CAAgC;IAClD,4EAA4E;IAC5E,OAAO,CAAC,YAAY,CAAgC;IACpD,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;;
|
|
1
|
+
{"version":3,"file":"SavingsLedger.d.ts","sourceRoot":"","sources":["../../../src/utils/SavingsLedger.ts"],"names":[],"mappings":"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"}
|