@nxuss/lemma 1.39.0 → 1.41.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 +45 -14
- package/bin/brain-ingest.js +41 -0
- package/bin/init.js +92 -92
- package/bin/postinstall.js +58 -4
- package/dashboard/dist/assets/index-Ca05LJvs.js +453 -0
- package/dashboard/dist/assets/{index-DNTQXLER.css → index-DdEVyDRj.css} +1 -1
- package/dashboard/dist/index.html +2 -2
- package/dist/cjs/cli/hostHooks.d.ts +14 -1
- package/dist/cjs/cli/hostHooks.d.ts.map +1 -1
- package/dist/cjs/cli/hostHooks.js +53 -6
- 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 +29 -10
- package/dist/cjs/cli/lemma-proxy.js.map +1 -1
- package/dist/cjs/contracts/evidence.d.ts +8 -1
- package/dist/cjs/contracts/evidence.d.ts.map +1 -1
- package/dist/cjs/mcp/cognitiveMap.d.ts.map +1 -1
- package/dist/cjs/mcp/cognitiveMap.js +6 -2
- package/dist/cjs/mcp/cognitiveMap.js.map +1 -1
- package/dist/cjs/mcp/index.js +21 -0
- 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 +6 -16
- package/dist/cjs/mcp/prompts.js.map +1 -1
- package/dist/cjs/mcp/tool-profiles.d.ts.map +1 -1
- package/dist/cjs/mcp/tool-profiles.js +8 -4
- package/dist/cjs/mcp/tool-profiles.js.map +1 -1
- package/dist/cjs/mcp/tools/context-tools.d.ts.map +1 -1
- package/dist/cjs/mcp/tools/context-tools.js +21 -17
- package/dist/cjs/mcp/tools/context-tools.js.map +1 -1
- package/dist/cjs/mcp/tools/devtools.d.ts.map +1 -1
- package/dist/cjs/mcp/tools/devtools.js +11 -1
- package/dist/cjs/mcp/tools/devtools.js.map +1 -1
- package/dist/cjs/mcp/tools/memory.d.ts.map +1 -1
- package/dist/cjs/mcp/tools/memory.js +82 -18
- package/dist/cjs/mcp/tools/memory.js.map +1 -1
- package/dist/cjs/mcp/tools/refactor.d.ts.map +1 -1
- package/dist/cjs/mcp/tools/refactor.js +129 -32
- package/dist/cjs/mcp/tools/refactor.js.map +1 -1
- package/dist/cjs/mcp/tools/workspace.d.ts.map +1 -1
- package/dist/cjs/mcp/tools/workspace.js +192 -49
- package/dist/cjs/mcp/tools/workspace.js.map +1 -1
- package/dist/cjs/mcp/tools.d.ts.map +1 -1
- package/dist/cjs/mcp/tools.js +95 -34
- package/dist/cjs/mcp/tools.js.map +1 -1
- package/dist/cjs/mcp/utils.d.ts.map +1 -1
- package/dist/cjs/mcp/utils.js +6 -1
- package/dist/cjs/mcp/utils.js.map +1 -1
- package/dist/cjs/mcp/workspaceShared.d.ts.map +1 -1
- package/dist/cjs/mcp/workspaceShared.js +14 -9
- package/dist/cjs/mcp/workspaceShared.js.map +1 -1
- package/dist/cjs/proxy/KeyManager.d.ts +10 -0
- package/dist/cjs/proxy/KeyManager.d.ts.map +1 -1
- package/dist/cjs/proxy/KeyManager.js +45 -8
- package/dist/cjs/proxy/KeyManager.js.map +1 -1
- package/dist/cjs/proxy/ProjectStore.d.ts.map +1 -1
- package/dist/cjs/proxy/ProjectStore.js +9 -6
- package/dist/cjs/proxy/ProjectStore.js.map +1 -1
- package/dist/cjs/security/SemanticScrubber.d.ts.map +1 -1
- package/dist/cjs/security/SemanticScrubber.js +19 -1
- package/dist/cjs/security/SemanticScrubber.js.map +1 -1
- package/dist/cjs/subconscious/HostRecall.d.ts +7 -5
- package/dist/cjs/subconscious/HostRecall.d.ts.map +1 -1
- package/dist/cjs/subconscious/HostRecall.js +130 -18
- package/dist/cjs/subconscious/HostRecall.js.map +1 -1
- package/dist/cjs/subconscious/NarrowEvidence.d.ts +6 -0
- package/dist/cjs/subconscious/NarrowEvidence.d.ts.map +1 -1
- package/dist/cjs/subconscious/NarrowEvidence.js +32 -47
- package/dist/cjs/subconscious/NarrowEvidence.js.map +1 -1
- package/dist/cjs/subconscious/TheBrainV2.d.ts +17 -1
- package/dist/cjs/subconscious/TheBrainV2.d.ts.map +1 -1
- package/dist/cjs/subconscious/TheBrainV2.js +101 -20
- package/dist/cjs/subconscious/TheBrainV2.js.map +1 -1
- package/dist/cjs/subconscious/freshness/LocalFsResolver.d.ts +3 -0
- package/dist/cjs/subconscious/freshness/LocalFsResolver.d.ts.map +1 -1
- package/dist/cjs/subconscious/freshness/LocalFsResolver.js +46 -13
- package/dist/cjs/subconscious/freshness/LocalFsResolver.js.map +1 -1
- package/dist/cjs/utils/AffectedTests.d.ts +1 -5
- package/dist/cjs/utils/AffectedTests.d.ts.map +1 -1
- package/dist/cjs/utils/AffectedTests.js +5 -37
- package/dist/cjs/utils/AffectedTests.js.map +1 -1
- package/dist/cjs/utils/AtomicFile.d.ts +14 -0
- package/dist/cjs/utils/AtomicFile.d.ts.map +1 -0
- package/dist/cjs/utils/AtomicFile.js +44 -0
- package/dist/cjs/utils/AtomicFile.js.map +1 -0
- package/dist/cjs/utils/AutoContextBundle.js +1 -1
- package/dist/cjs/utils/AutoContextBundle.js.map +1 -1
- package/dist/cjs/utils/BulkFileDigest.js +1 -1
- package/dist/cjs/utils/BulkFileDigest.js.map +1 -1
- package/dist/cjs/utils/CommandOutputDistiller.d.ts +10 -0
- package/dist/cjs/utils/CommandOutputDistiller.d.ts.map +1 -1
- package/dist/cjs/utils/CommandOutputDistiller.js +40 -2
- package/dist/cjs/utils/CommandOutputDistiller.js.map +1 -1
- package/dist/cjs/utils/ContextSqueezer.d.ts +49 -5
- package/dist/cjs/utils/ContextSqueezer.d.ts.map +1 -1
- package/dist/cjs/utils/ContextSqueezer.js +245 -24
- package/dist/cjs/utils/ContextSqueezer.js.map +1 -1
- package/dist/cjs/utils/FileLock.d.ts +2 -0
- package/dist/cjs/utils/FileLock.d.ts.map +1 -0
- package/dist/cjs/utils/FileLock.js +32 -0
- package/dist/cjs/utils/FileLock.js.map +1 -0
- package/dist/cjs/utils/FileOutline.d.ts +1 -1
- package/dist/cjs/utils/FileOutline.d.ts.map +1 -1
- package/dist/cjs/utils/FileOutline.js +5 -1
- package/dist/cjs/utils/FileOutline.js.map +1 -1
- package/dist/cjs/utils/FixCapture.d.ts.map +1 -1
- package/dist/cjs/utils/FixCapture.js +60 -3
- package/dist/cjs/utils/FixCapture.js.map +1 -1
- package/dist/cjs/utils/GitChanges.d.ts +11 -0
- package/dist/cjs/utils/GitChanges.d.ts.map +1 -0
- package/dist/cjs/utils/GitChanges.js +44 -0
- package/dist/cjs/utils/GitChanges.js.map +1 -0
- package/dist/cjs/utils/JsonKeys.d.ts +17 -0
- package/dist/cjs/utils/JsonKeys.d.ts.map +1 -0
- package/dist/cjs/utils/JsonKeys.js +75 -0
- package/dist/cjs/utils/JsonKeys.js.map +1 -0
- package/dist/cjs/utils/LineNumberMap.d.ts.map +1 -1
- package/dist/cjs/utils/LineNumberMap.js +27 -0
- package/dist/cjs/utils/LineNumberMap.js.map +1 -1
- package/dist/cjs/utils/LocalExclude.d.ts +3 -0
- package/dist/cjs/utils/LocalExclude.d.ts.map +1 -0
- package/dist/cjs/utils/LocalExclude.js +68 -0
- package/dist/cjs/utils/LocalExclude.js.map +1 -0
- package/dist/cjs/utils/OtherLanguageSymbols.d.ts.map +1 -1
- package/dist/cjs/utils/OtherLanguageSymbols.js +0 -7
- package/dist/cjs/utils/OtherLanguageSymbols.js.map +1 -1
- package/dist/cjs/utils/OutputDelta.d.ts +14 -2
- package/dist/cjs/utils/OutputDelta.d.ts.map +1 -1
- package/dist/cjs/utils/OutputDelta.js +22 -15
- package/dist/cjs/utils/OutputDelta.js.map +1 -1
- package/dist/cjs/utils/PatchMatcher.d.ts.map +1 -1
- package/dist/cjs/utils/PatchMatcher.js +26 -0
- package/dist/cjs/utils/PatchMatcher.js.map +1 -1
- package/dist/cjs/utils/ProLicense.d.ts +2 -0
- package/dist/cjs/utils/ProLicense.d.ts.map +1 -0
- package/dist/cjs/utils/ProLicense.js +31 -0
- package/dist/cjs/utils/ProLicense.js.map +1 -0
- package/dist/cjs/utils/RevivalThrottle.d.ts +9 -0
- package/dist/cjs/utils/RevivalThrottle.d.ts.map +1 -0
- package/dist/cjs/utils/RevivalThrottle.js +25 -0
- package/dist/cjs/utils/RevivalThrottle.js.map +1 -0
- package/dist/cjs/utils/RoiLedger.d.ts.map +1 -1
- package/dist/cjs/utils/RoiLedger.js +7 -3
- package/dist/cjs/utils/RoiLedger.js.map +1 -1
- package/dist/cjs/utils/SavingsLedger.d.ts +58 -18
- package/dist/cjs/utils/SavingsLedger.d.ts.map +1 -1
- package/dist/cjs/utils/SavingsLedger.js +333 -177
- package/dist/cjs/utils/SavingsLedger.js.map +1 -1
- package/dist/cjs/utils/SearchCache.d.ts +2 -2
- package/dist/cjs/utils/SearchCache.d.ts.map +1 -1
- package/dist/cjs/utils/SearchCache.js +8 -6
- package/dist/cjs/utils/SearchCache.js.map +1 -1
- package/dist/cjs/utils/SessionCapture.d.ts +65 -0
- package/dist/cjs/utils/SessionCapture.d.ts.map +1 -0
- package/dist/cjs/utils/SessionCapture.js +339 -0
- package/dist/cjs/utils/SessionCapture.js.map +1 -0
- package/dist/cjs/utils/SharedLedgerStore.d.ts.map +1 -1
- package/dist/cjs/utils/SharedLedgerStore.js +2 -1
- package/dist/cjs/utils/SharedLedgerStore.js.map +1 -1
- package/dist/cjs/utils/StaleDelta.d.ts +2 -0
- package/dist/cjs/utils/StaleDelta.d.ts.map +1 -0
- package/dist/cjs/utils/StaleDelta.js +60 -0
- package/dist/cjs/utils/StaleDelta.js.map +1 -0
- package/dist/cjs/utils/SurgicalASTInsert.d.ts.map +1 -1
- package/dist/cjs/utils/SurgicalASTInsert.js +2 -1
- package/dist/cjs/utils/SurgicalASTInsert.js.map +1 -1
- package/dist/cjs/utils/SymbolSurgicalContext.d.ts +2 -2
- package/dist/cjs/utils/SymbolSurgicalContext.d.ts.map +1 -1
- package/dist/cjs/utils/SymbolSurgicalContext.js +29 -62
- package/dist/cjs/utils/SymbolSurgicalContext.js.map +1 -1
- package/dist/cjs/utils/TokenBudgetedReader.d.ts.map +1 -1
- package/dist/cjs/utils/TokenBudgetedReader.js +56 -15
- package/dist/cjs/utils/TokenBudgetedReader.js.map +1 -1
- package/dist/cjs/utils/Utf8Guard.d.ts +23 -0
- package/dist/cjs/utils/Utf8Guard.d.ts.map +1 -0
- package/dist/cjs/utils/Utf8Guard.js +81 -0
- package/dist/cjs/utils/Utf8Guard.js.map +1 -0
- package/dist/cjs/utils/WorkspaceSearch.d.ts +8 -1
- package/dist/cjs/utils/WorkspaceSearch.d.ts.map +1 -1
- package/dist/cjs/utils/WorkspaceSearch.js +101 -13
- package/dist/cjs/utils/WorkspaceSearch.js.map +1 -1
- package/dist/cjs/utils/reportSavings.d.ts +3 -0
- package/dist/cjs/utils/reportSavings.d.ts.map +1 -1
- package/dist/cjs/utils/reportSavings.js +44 -5
- package/dist/cjs/utils/reportSavings.js.map +1 -1
- package/dist/cjs/utils/tsLoader.d.ts +5 -0
- package/dist/cjs/utils/tsLoader.d.ts.map +1 -0
- package/dist/cjs/utils/tsLoader.js +15 -0
- package/dist/cjs/utils/tsLoader.js.map +1 -0
- package/dist/esm/cli/hostHooks.d.ts +14 -1
- package/dist/esm/cli/hostHooks.d.ts.map +1 -1
- package/dist/esm/cli/hostHooks.js +52 -5
- 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 +30 -11
- package/dist/esm/cli/lemma-proxy.js.map +1 -1
- package/dist/esm/contracts/evidence.d.ts +8 -1
- package/dist/esm/contracts/evidence.d.ts.map +1 -1
- package/dist/esm/mcp/cognitiveMap.d.ts.map +1 -1
- package/dist/esm/mcp/cognitiveMap.js +6 -2
- package/dist/esm/mcp/cognitiveMap.js.map +1 -1
- package/dist/esm/mcp/index.js +22 -1
- 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 +6 -16
- package/dist/esm/mcp/prompts.js.map +1 -1
- package/dist/esm/mcp/tool-profiles.d.ts.map +1 -1
- package/dist/esm/mcp/tool-profiles.js +8 -4
- package/dist/esm/mcp/tool-profiles.js.map +1 -1
- package/dist/esm/mcp/tools/context-tools.d.ts.map +1 -1
- package/dist/esm/mcp/tools/context-tools.js +21 -17
- package/dist/esm/mcp/tools/context-tools.js.map +1 -1
- package/dist/esm/mcp/tools/devtools.d.ts.map +1 -1
- package/dist/esm/mcp/tools/devtools.js +11 -1
- package/dist/esm/mcp/tools/devtools.js.map +1 -1
- package/dist/esm/mcp/tools/memory.d.ts.map +1 -1
- package/dist/esm/mcp/tools/memory.js +83 -19
- package/dist/esm/mcp/tools/memory.js.map +1 -1
- package/dist/esm/mcp/tools/refactor.d.ts.map +1 -1
- package/dist/esm/mcp/tools/refactor.js +129 -32
- package/dist/esm/mcp/tools/refactor.js.map +1 -1
- package/dist/esm/mcp/tools/workspace.d.ts.map +1 -1
- package/dist/esm/mcp/tools/workspace.js +193 -50
- package/dist/esm/mcp/tools/workspace.js.map +1 -1
- package/dist/esm/mcp/tools.d.ts.map +1 -1
- package/dist/esm/mcp/tools.js +94 -33
- package/dist/esm/mcp/tools.js.map +1 -1
- package/dist/esm/mcp/utils.d.ts.map +1 -1
- package/dist/esm/mcp/utils.js +6 -1
- package/dist/esm/mcp/utils.js.map +1 -1
- package/dist/esm/mcp/workspaceShared.d.ts.map +1 -1
- package/dist/esm/mcp/workspaceShared.js +14 -9
- package/dist/esm/mcp/workspaceShared.js.map +1 -1
- package/dist/esm/proxy/KeyManager.d.ts +10 -0
- package/dist/esm/proxy/KeyManager.d.ts.map +1 -1
- package/dist/esm/proxy/KeyManager.js +43 -6
- package/dist/esm/proxy/KeyManager.js.map +1 -1
- package/dist/esm/proxy/ProjectStore.d.ts.map +1 -1
- package/dist/esm/proxy/ProjectStore.js +9 -6
- package/dist/esm/proxy/ProjectStore.js.map +1 -1
- package/dist/esm/security/SemanticScrubber.d.ts.map +1 -1
- package/dist/esm/security/SemanticScrubber.js +19 -1
- package/dist/esm/security/SemanticScrubber.js.map +1 -1
- package/dist/esm/subconscious/HostRecall.d.ts +7 -5
- package/dist/esm/subconscious/HostRecall.d.ts.map +1 -1
- package/dist/esm/subconscious/HostRecall.js +130 -19
- package/dist/esm/subconscious/HostRecall.js.map +1 -1
- package/dist/esm/subconscious/NarrowEvidence.d.ts +6 -0
- package/dist/esm/subconscious/NarrowEvidence.d.ts.map +1 -1
- package/dist/esm/subconscious/NarrowEvidence.js +24 -7
- package/dist/esm/subconscious/NarrowEvidence.js.map +1 -1
- package/dist/esm/subconscious/TheBrainV2.d.ts +17 -1
- package/dist/esm/subconscious/TheBrainV2.d.ts.map +1 -1
- package/dist/esm/subconscious/TheBrainV2.js +101 -20
- package/dist/esm/subconscious/TheBrainV2.js.map +1 -1
- package/dist/esm/subconscious/freshness/LocalFsResolver.d.ts +3 -0
- package/dist/esm/subconscious/freshness/LocalFsResolver.d.ts.map +1 -1
- package/dist/esm/subconscious/freshness/LocalFsResolver.js +46 -13
- package/dist/esm/subconscious/freshness/LocalFsResolver.js.map +1 -1
- package/dist/esm/utils/AffectedTests.d.ts +1 -5
- package/dist/esm/utils/AffectedTests.d.ts.map +1 -1
- package/dist/esm/utils/AffectedTests.js +2 -35
- package/dist/esm/utils/AffectedTests.js.map +1 -1
- package/dist/esm/utils/AtomicFile.d.ts +14 -0
- package/dist/esm/utils/AtomicFile.d.ts.map +1 -0
- package/dist/esm/utils/AtomicFile.js +37 -0
- package/dist/esm/utils/AtomicFile.js.map +1 -0
- package/dist/esm/utils/AutoContextBundle.js +1 -1
- package/dist/esm/utils/AutoContextBundle.js.map +1 -1
- package/dist/esm/utils/BulkFileDigest.js +1 -1
- package/dist/esm/utils/BulkFileDigest.js.map +1 -1
- package/dist/esm/utils/CommandOutputDistiller.d.ts +10 -0
- package/dist/esm/utils/CommandOutputDistiller.d.ts.map +1 -1
- package/dist/esm/utils/CommandOutputDistiller.js +39 -2
- package/dist/esm/utils/CommandOutputDistiller.js.map +1 -1
- package/dist/esm/utils/ContextSqueezer.d.ts +49 -5
- package/dist/esm/utils/ContextSqueezer.d.ts.map +1 -1
- package/dist/esm/utils/ContextSqueezer.js +242 -24
- package/dist/esm/utils/ContextSqueezer.js.map +1 -1
- package/dist/esm/utils/FileLock.d.ts +2 -0
- package/dist/esm/utils/FileLock.d.ts.map +1 -0
- package/dist/esm/utils/FileLock.js +29 -0
- package/dist/esm/utils/FileLock.js.map +1 -0
- package/dist/esm/utils/FileOutline.d.ts +1 -1
- package/dist/esm/utils/FileOutline.d.ts.map +1 -1
- package/dist/esm/utils/FileOutline.js +5 -1
- package/dist/esm/utils/FileOutline.js.map +1 -1
- package/dist/esm/utils/FixCapture.d.ts.map +1 -1
- package/dist/esm/utils/FixCapture.js +59 -2
- package/dist/esm/utils/FixCapture.js.map +1 -1
- package/dist/esm/utils/GitChanges.d.ts +11 -0
- package/dist/esm/utils/GitChanges.d.ts.map +1 -0
- package/dist/esm/utils/GitChanges.js +41 -0
- package/dist/esm/utils/GitChanges.js.map +1 -0
- package/dist/esm/utils/JsonKeys.d.ts +17 -0
- package/dist/esm/utils/JsonKeys.d.ts.map +1 -0
- package/dist/esm/utils/JsonKeys.js +71 -0
- package/dist/esm/utils/JsonKeys.js.map +1 -0
- package/dist/esm/utils/LineNumberMap.d.ts.map +1 -1
- package/dist/esm/utils/LineNumberMap.js +27 -0
- package/dist/esm/utils/LineNumberMap.js.map +1 -1
- package/dist/esm/utils/LocalExclude.d.ts +3 -0
- package/dist/esm/utils/LocalExclude.d.ts.map +1 -0
- package/dist/esm/utils/LocalExclude.js +62 -0
- package/dist/esm/utils/LocalExclude.js.map +1 -0
- package/dist/esm/utils/OtherLanguageSymbols.d.ts.map +1 -1
- package/dist/esm/utils/OtherLanguageSymbols.js +0 -7
- package/dist/esm/utils/OtherLanguageSymbols.js.map +1 -1
- package/dist/esm/utils/OutputDelta.d.ts +14 -2
- package/dist/esm/utils/OutputDelta.d.ts.map +1 -1
- package/dist/esm/utils/OutputDelta.js +22 -15
- package/dist/esm/utils/OutputDelta.js.map +1 -1
- package/dist/esm/utils/PatchMatcher.d.ts.map +1 -1
- package/dist/esm/utils/PatchMatcher.js +26 -0
- package/dist/esm/utils/PatchMatcher.js.map +1 -1
- package/dist/esm/utils/ProLicense.d.ts +2 -0
- package/dist/esm/utils/ProLicense.d.ts.map +1 -0
- package/dist/esm/utils/ProLicense.js +25 -0
- package/dist/esm/utils/ProLicense.js.map +1 -0
- package/dist/esm/utils/RevivalThrottle.d.ts +9 -0
- package/dist/esm/utils/RevivalThrottle.d.ts.map +1 -0
- package/dist/esm/utils/RevivalThrottle.js +22 -0
- package/dist/esm/utils/RevivalThrottle.js.map +1 -0
- package/dist/esm/utils/RoiLedger.d.ts.map +1 -1
- package/dist/esm/utils/RoiLedger.js +7 -3
- package/dist/esm/utils/RoiLedger.js.map +1 -1
- package/dist/esm/utils/SavingsLedger.d.ts +58 -18
- package/dist/esm/utils/SavingsLedger.d.ts.map +1 -1
- package/dist/esm/utils/SavingsLedger.js +333 -177
- package/dist/esm/utils/SavingsLedger.js.map +1 -1
- package/dist/esm/utils/SearchCache.d.ts +2 -2
- package/dist/esm/utils/SearchCache.d.ts.map +1 -1
- package/dist/esm/utils/SearchCache.js +8 -6
- package/dist/esm/utils/SearchCache.js.map +1 -1
- package/dist/esm/utils/SessionCapture.d.ts +65 -0
- package/dist/esm/utils/SessionCapture.d.ts.map +1 -0
- package/dist/esm/utils/SessionCapture.js +328 -0
- package/dist/esm/utils/SessionCapture.js.map +1 -0
- package/dist/esm/utils/SharedLedgerStore.d.ts.map +1 -1
- package/dist/esm/utils/SharedLedgerStore.js +2 -1
- package/dist/esm/utils/SharedLedgerStore.js.map +1 -1
- package/dist/esm/utils/StaleDelta.d.ts +2 -0
- package/dist/esm/utils/StaleDelta.d.ts.map +1 -0
- package/dist/esm/utils/StaleDelta.js +54 -0
- package/dist/esm/utils/StaleDelta.js.map +1 -0
- package/dist/esm/utils/SurgicalASTInsert.d.ts.map +1 -1
- package/dist/esm/utils/SurgicalASTInsert.js +2 -1
- package/dist/esm/utils/SurgicalASTInsert.js.map +1 -1
- package/dist/esm/utils/SymbolSurgicalContext.d.ts +2 -2
- 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/TokenBudgetedReader.d.ts.map +1 -1
- package/dist/esm/utils/TokenBudgetedReader.js +56 -15
- package/dist/esm/utils/TokenBudgetedReader.js.map +1 -1
- package/dist/esm/utils/Utf8Guard.d.ts +23 -0
- package/dist/esm/utils/Utf8Guard.d.ts.map +1 -0
- package/dist/esm/utils/Utf8Guard.js +74 -0
- package/dist/esm/utils/Utf8Guard.js.map +1 -0
- package/dist/esm/utils/WorkspaceSearch.d.ts +8 -1
- package/dist/esm/utils/WorkspaceSearch.d.ts.map +1 -1
- package/dist/esm/utils/WorkspaceSearch.js +100 -13
- package/dist/esm/utils/WorkspaceSearch.js.map +1 -1
- package/dist/esm/utils/reportSavings.d.ts +3 -0
- package/dist/esm/utils/reportSavings.d.ts.map +1 -1
- package/dist/esm/utils/reportSavings.js +42 -5
- package/dist/esm/utils/reportSavings.js.map +1 -1
- package/dist/esm/utils/tsLoader.d.ts +5 -0
- package/dist/esm/utils/tsLoader.d.ts.map +1 -0
- package/dist/esm/utils/tsLoader.js +13 -0
- package/dist/esm/utils/tsLoader.js.map +1 -0
- package/package.json +5 -5
- package/dashboard/dist/assets/index-DzL_Zu3m.js +0 -452
- package/dist/cjs/examples/basic-usage.d.ts +0 -12
- package/dist/cjs/examples/basic-usage.d.ts.map +0 -1
- package/dist/cjs/examples/basic-usage.js +0 -128
- package/dist/cjs/examples/basic-usage.js.map +0 -1
- package/dist/esm/examples/basic-usage.d.ts +0 -12
- package/dist/esm/examples/basic-usage.d.ts.map +0 -1
- package/dist/esm/examples/basic-usage.js +0 -126
- package/dist/esm/examples/basic-usage.js.map +0 -1
|
@@ -11,12 +11,19 @@ export interface GroupedSearchResult {
|
|
|
11
11
|
}
|
|
12
12
|
export declare function loadGitignorePatterns(workspaceRoot: string): RegExp[];
|
|
13
13
|
export declare function parseExtensionFilter(extension?: string): string[] | undefined;
|
|
14
|
+
/**
|
|
15
|
+
* Compiles the `regex` query of search_workspace (case-insensitive, like the literal search).
|
|
16
|
+
* Throws an Error whose message is meant for the model: what was wrong and what to do.
|
|
17
|
+
*/
|
|
18
|
+
export declare function compileSearchRegex(query: string): RegExp;
|
|
14
19
|
export interface SearchWorkspaceResult {
|
|
15
20
|
matches: SearchMatch[];
|
|
16
21
|
truncated: boolean;
|
|
17
22
|
}
|
|
18
23
|
export declare function searchWorkspace(workspaceRoot: string, query: string, extensions?: string[], maxResults?: number,
|
|
19
24
|
/** Workspace-relative directory to search instead of the whole root; the caller has validated it. */
|
|
20
|
-
subdir?: string
|
|
25
|
+
subdir?: string,
|
|
26
|
+
/** Treat `query` as a regular expression instead of literal text. */
|
|
27
|
+
useRegex?: boolean): SearchWorkspaceResult;
|
|
21
28
|
export declare function groupSearchResults(matches: SearchMatch[], truncated: boolean, maxPerFile?: number, workspaceRoot?: string): GroupedSearchResult;
|
|
22
29
|
//# sourceMappingURL=WorkspaceSearch.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkspaceSearch.d.ts","sourceRoot":"","sources":["../../../src/utils/WorkspaceSearch.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"WorkspaceSearch.d.ts","sourceRoot":"","sources":["../../../src/utils/WorkspaceSearch.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAyBD,wBAAgB,qBAAqB,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE,CAYrE;AAiBD,wBAAgB,oBAAoB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,CAM7E;AA+BD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMxD;AAkCD,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,eAAe,CAC7B,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,MAAM,EACb,UAAU,CAAC,EAAE,MAAM,EAAE,EACrB,UAAU,SAAsB;AAChC,qGAAqG;AACrG,MAAM,SAAK;AACX,qEAAqE;AACrE,QAAQ,UAAQ,GACf,qBAAqB,CA6FvB;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,WAAW,EAAE,EACtB,SAAS,EAAE,OAAO,EAClB,UAAU,SAAuB,EACjC,aAAa,CAAC,EAAE,MAAM,GACrB,mBAAmB,CA2CrB"}
|
|
@@ -5,10 +5,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.loadGitignorePatterns = loadGitignorePatterns;
|
|
7
7
|
exports.parseExtensionFilter = parseExtensionFilter;
|
|
8
|
+
exports.compileSearchRegex = compileSearchRegex;
|
|
8
9
|
exports.searchWorkspace = searchWorkspace;
|
|
9
10
|
exports.groupSearchResults = groupSearchResults;
|
|
10
11
|
const fs_1 = __importDefault(require("fs"));
|
|
11
12
|
const path_1 = __importDefault(require("path"));
|
|
13
|
+
const vm_1 = __importDefault(require("vm"));
|
|
12
14
|
const StructuralSearch_1 = require("./StructuralSearch");
|
|
13
15
|
const DEFAULT_IGNORED_DIRS = ["node_modules", ".git", "dist", "chroma_data", ".lemma"];
|
|
14
16
|
const MAX_SEARCHABLE_BYTES = 500 * 1024; // skip files larger than this
|
|
@@ -70,7 +72,7 @@ function isBinaryLikely(buf) {
|
|
|
70
72
|
if (buf[i] === 0)
|
|
71
73
|
nuls++;
|
|
72
74
|
}
|
|
73
|
-
return sampleLen > 0 && nuls / sampleLen > 0.001;
|
|
75
|
+
return sampleLen > 0 && nuls >= 4 && nuls / sampleLen > 0.001;
|
|
74
76
|
}
|
|
75
77
|
function parseExtensionFilter(extension) {
|
|
76
78
|
if (!extension)
|
|
@@ -81,11 +83,11 @@ function parseExtensionFilter(extension) {
|
|
|
81
83
|
.filter(Boolean);
|
|
82
84
|
}
|
|
83
85
|
/** The line, trimmed; when longer than MAX_LINE_CHARS, a window centred on the first hit. */
|
|
84
|
-
function snippetAround(line, lowerQuery) {
|
|
86
|
+
function snippetAround(line, lowerQuery, regex) {
|
|
85
87
|
const trimmed = line.trim();
|
|
86
88
|
if (trimmed.length <= MAX_LINE_CHARS)
|
|
87
89
|
return trimmed;
|
|
88
|
-
const at = Math.max(0, trimmed.toLowerCase().indexOf(lowerQuery));
|
|
90
|
+
const at = Math.max(0, regex ? (regex.exec(trimmed)?.index ?? 0) : trimmed.toLowerCase().indexOf(lowerQuery));
|
|
89
91
|
const start = Math.max(0, Math.min(at - LINE_CONTEXT_BEFORE, trimmed.length - MAX_LINE_CHARS));
|
|
90
92
|
const end = Math.min(trimmed.length, start + MAX_LINE_CHARS);
|
|
91
93
|
return `${start > 0 ? "…" : ""}${trimmed.slice(start, end)}${end < trimmed.length ? "…" : ""}`;
|
|
@@ -100,11 +102,62 @@ function searchPriority(entry) {
|
|
|
100
102
|
}
|
|
101
103
|
return /\.(md|mdx|txt|rst|mdc)$/i.test(entry.name) || entry.name.startsWith(".") ? 1 : 0;
|
|
102
104
|
}
|
|
105
|
+
/** Lines longer than this are not run through a user regex: minified bundles are where backtracking blows up. */
|
|
106
|
+
const MAX_REGEX_LINE_CHARS = 2000;
|
|
107
|
+
/** A failure of the user's regex itself, as opposed to an unreadable file: the walk must not swallow it. */
|
|
108
|
+
class RegexSearchError extends Error {
|
|
109
|
+
}
|
|
110
|
+
/** Wall-clock budget for running a user regex over ONE file; the first overrun aborts the whole search. */
|
|
111
|
+
const DEFAULT_REGEX_FILE_TIMEOUT_MS = 1500;
|
|
112
|
+
/**
|
|
113
|
+
* Compiles the `regex` query of search_workspace (case-insensitive, like the literal search).
|
|
114
|
+
* Throws an Error whose message is meant for the model: what was wrong and what to do.
|
|
115
|
+
*/
|
|
116
|
+
function compileSearchRegex(query) {
|
|
117
|
+
try {
|
|
118
|
+
return new RegExp(query, "i");
|
|
119
|
+
}
|
|
120
|
+
catch (err) {
|
|
121
|
+
throw new Error(`invalid regex "${query}": ${err.message}. Escape special characters or omit regex:true to search for literal text.`);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Runs `re` over the lines of one file and returns the 0-based indexes that match.
|
|
126
|
+
*
|
|
127
|
+
* JavaScript has no linear-time regex engine, and the MCP server is one thread that every tool
|
|
128
|
+
* shares: a pattern like `(a|aa)+$` on a 40-character line can run for minutes. The whole file is
|
|
129
|
+
* scanned inside one `vm` call with a timeout (V8 interrupts the regex); per line the same call
|
|
130
|
+
* costs ~600x more, which is why the unit is the file. `^`/`$` are line anchors, so the cheap
|
|
131
|
+
* whole-file prefilter uses the multiline form.
|
|
132
|
+
*/
|
|
133
|
+
function matchingLineIndexes(re, fileRe, content, timeoutMs, where) {
|
|
134
|
+
const ctx = vm_1.default.createContext({ re, fileRe, content, max: MAX_REGEX_LINE_CHARS });
|
|
135
|
+
try {
|
|
136
|
+
return vm_1.default.runInContext(`(function () {
|
|
137
|
+
if (!fileRe.test(content)) return [];
|
|
138
|
+
var lines = content.split("\\n"), out = [];
|
|
139
|
+
for (var i = 0; i < lines.length; i++) if (lines[i].length <= max && re.test(lines[i])) out.push(i);
|
|
140
|
+
return out;
|
|
141
|
+
})()`, ctx, { timeout: timeoutMs });
|
|
142
|
+
}
|
|
143
|
+
catch (err) {
|
|
144
|
+
if (err?.code === "ERR_SCRIPT_EXECUTION_TIMEOUT") {
|
|
145
|
+
throw new RegexSearchError(`regex too slow: "${re.source}" ran over ${timeoutMs} ms on ${where} (catastrophic backtracking, usually from a repeated group like "(a+)+"). Simplify the pattern or search for literal text.`);
|
|
146
|
+
}
|
|
147
|
+
throw err;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
103
150
|
function searchWorkspace(workspaceRoot, query, extensions, maxResults = DEFAULT_MAX_RESULTS,
|
|
104
151
|
/** Workspace-relative directory to search instead of the whole root; the caller has validated it. */
|
|
105
|
-
subdir = ""
|
|
152
|
+
subdir = "",
|
|
153
|
+
/** Treat `query` as a regular expression instead of literal text. */
|
|
154
|
+
useRegex = false) {
|
|
106
155
|
const gitignorePatterns = loadGitignorePatterns(workspaceRoot);
|
|
107
156
|
const lowerQuery = query.toLowerCase();
|
|
157
|
+
const lineRe = useRegex ? compileSearchRegex(query) : undefined;
|
|
158
|
+
// `^` and `$` mean line anchors to someone writing a grep pattern, so the whole-file prefilter
|
|
159
|
+
// has to see the same thing the per-line test does.
|
|
160
|
+
const fileRe = useRegex ? new RegExp(lineRe.source, "im") : undefined;
|
|
108
161
|
const results = [];
|
|
109
162
|
let truncated = false;
|
|
110
163
|
function walk(currentDir, relativePath) {
|
|
@@ -130,6 +183,10 @@ subdir = "") {
|
|
|
130
183
|
}
|
|
131
184
|
if (DEFAULT_IGNORED_DIRS.includes(entry.name))
|
|
132
185
|
continue;
|
|
186
|
+
// Like ripgrep, never follow a symlink: statSync/readFileSync would, and a link to a file
|
|
187
|
+
// outside the workspace made its content a search result (read_workspace_file refuses it).
|
|
188
|
+
if (entry.isSymbolicLink())
|
|
189
|
+
continue;
|
|
133
190
|
const rel = relativePath ? path_1.default.join(relativePath, entry.name) : entry.name;
|
|
134
191
|
const full = path_1.default.join(currentDir, entry.name);
|
|
135
192
|
const relForMatch = entry.isDirectory() ? `${rel}/` : rel;
|
|
@@ -149,6 +206,21 @@ subdir = "") {
|
|
|
149
206
|
if (isBinaryLikely(buf))
|
|
150
207
|
continue;
|
|
151
208
|
const content = buf.toString("utf8");
|
|
209
|
+
if (lineRe) {
|
|
210
|
+
const timeoutMs = Number(process.env.LEMMA_REGEX_TIMEOUT_MS) || DEFAULT_REGEX_FILE_TIMEOUT_MS;
|
|
211
|
+
const hits = matchingLineIndexes(lineRe, fileRe, content, timeoutMs, rel);
|
|
212
|
+
if (hits.length === 0)
|
|
213
|
+
continue;
|
|
214
|
+
const fileLines = content.split("\n");
|
|
215
|
+
for (const idx of hits) {
|
|
216
|
+
if (results.length >= maxResults) {
|
|
217
|
+
truncated = true;
|
|
218
|
+
break;
|
|
219
|
+
}
|
|
220
|
+
results.push({ filePath: rel, line: idx + 1, text: snippetAround(fileLines[idx], lowerQuery, lineRe) });
|
|
221
|
+
}
|
|
222
|
+
continue;
|
|
223
|
+
}
|
|
152
224
|
if (!content.toLowerCase().includes(lowerQuery))
|
|
153
225
|
continue;
|
|
154
226
|
const lines = content.split("\n");
|
|
@@ -162,8 +234,10 @@ subdir = "") {
|
|
|
162
234
|
}
|
|
163
235
|
}
|
|
164
236
|
}
|
|
165
|
-
catch {
|
|
166
|
-
// unreadable file — skip
|
|
237
|
+
catch (err) {
|
|
238
|
+
// A pattern that is too slow aborts the search; anything else is an unreadable file — skip it.
|
|
239
|
+
if (err instanceof RegexSearchError)
|
|
240
|
+
throw err;
|
|
167
241
|
}
|
|
168
242
|
}
|
|
169
243
|
}
|
|
@@ -213,10 +287,11 @@ function groupSearchResults(matches, truncated, maxPerFile = DEFAULT_MAX_PER_FIL
|
|
|
213
287
|
formatted: kept.join("\n\n"),
|
|
214
288
|
};
|
|
215
289
|
}
|
|
290
|
+
const MAX_LINES_PER_SYMBOL = 3;
|
|
216
291
|
// For code files, collapse N line matches inside the same function/class/etc. into one
|
|
217
|
-
// symbol entry
|
|
218
|
-
// pile of raw lines. Falls back to null (caller uses
|
|
219
|
-
// or files with no parseable declarations.
|
|
292
|
+
// symbol entry that names the function and keeps the matching lines — the model gets "what
|
|
293
|
+
// defines this behavior" and where, not a pile of raw lines. Falls back to null (caller uses
|
|
294
|
+
// the raw line format) for non-code files or files with no parseable declarations.
|
|
220
295
|
function formatStructuralBlock(workspaceRoot, file, fileMatches, maxPerFile) {
|
|
221
296
|
if (!(0, StructuralSearch_1.isStructurallySearchable)(file))
|
|
222
297
|
return null;
|
|
@@ -229,10 +304,23 @@ function formatStructuralBlock(workspaceRoot, file, fileMatches, maxPerFile) {
|
|
|
229
304
|
return null;
|
|
230
305
|
symbolHits.sort((a, b) => Math.min(...a.matchLines) - Math.min(...b.matchLines));
|
|
231
306
|
const shown = symbolHits.slice(0, maxPerFile);
|
|
232
|
-
const
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
307
|
+
const textAt = new Map(fileMatches.map((m) => [m.line, m.text]));
|
|
308
|
+
const lines = [];
|
|
309
|
+
for (const h of shown) {
|
|
310
|
+
const where = `${h.symbol.name} (L${h.symbol.startLine}-L${h.symbol.endLine})`;
|
|
311
|
+
if (h.matchLines.length === 1) {
|
|
312
|
+
// One hit in a function: the matching line IS the answer. The signature the old format
|
|
313
|
+
// printed was ~140 characters of parameter types, and left out the line that matched.
|
|
314
|
+
lines.push(` ${h.matchLines[0]} in ${where}: ${textAt.get(h.matchLines[0]) ?? ""}`);
|
|
315
|
+
continue;
|
|
316
|
+
}
|
|
317
|
+
// Several hits in one function are where collapsing pays: one header, then the lines.
|
|
318
|
+
lines.push(` in ${where}, ${h.matchLines.length} matches:`);
|
|
319
|
+
for (const line of h.matchLines.slice(0, MAX_LINES_PER_SYMBOL))
|
|
320
|
+
lines.push(` ${line}: ${textAt.get(line) ?? ""}`);
|
|
321
|
+
if (h.matchLines.length > MAX_LINES_PER_SYMBOL)
|
|
322
|
+
lines.push(` +${h.matchLines.length - MAX_LINES_PER_SYMBOL} more`);
|
|
323
|
+
}
|
|
236
324
|
const remainder = symbolHits.length - shown.length;
|
|
237
325
|
if (remainder > 0)
|
|
238
326
|
lines.push(` +${remainder} more symbols`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkspaceSearch.js","sourceRoot":"","sources":["../../../src/utils/WorkspaceSearch.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WorkspaceSearch.js","sourceRoot":"","sources":["../../../src/utils/WorkspaceSearch.ts"],"names":[],"mappings":"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"}
|
|
@@ -49,6 +49,8 @@ export declare function reportCost(payload: CostPayload): void;
|
|
|
49
49
|
* temp repo dir. Under it, no usage accounting is recorded anywhere.
|
|
50
50
|
*/
|
|
51
51
|
export declare function usageReportingDisabled(): boolean;
|
|
52
|
+
/** Called with the connected client's name whenever it is known; sticky per process. */
|
|
53
|
+
export declare function noteConnectedClient(name: string | undefined): void;
|
|
52
54
|
/** How a recalled memory reached the agent: a hook note on a read/edit/failure, the prompt-time
|
|
53
55
|
* recall, the SessionStart briefing, or the note on one of Lemma's own read tools. */
|
|
54
56
|
export type RecallTrigger = 'read' | 'edit' | 'failure' | 'prompt' | 'session' | 'search';
|
|
@@ -65,5 +67,6 @@ export interface RecallPayload {
|
|
|
65
67
|
* process that exits right after, and a fire-and-forget request would die with it.
|
|
66
68
|
*/
|
|
67
69
|
export declare function reportRecall(payload: RecallPayload, timeoutMs?: number): Promise<void>;
|
|
70
|
+
export declare function setProxyUnreachableHandler(fn: (() => void) | null): void;
|
|
68
71
|
export {};
|
|
69
72
|
//# sourceMappingURL=reportSavings.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reportSavings.d.ts","sourceRoot":"","sources":["../../../src/utils/reportSavings.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,KAAK,aAAa,GAAG,WAAW,GAAG,gBAAgB,GAAG,cAAc,GAAG,mBAAmB,GAAG,OAAO,CAAC;AAErG,UAAU,aAAa;IACrB,MAAM,EAAE,aAAa,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,cAAc;IACtB,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,KAAK,aAAa,GAAG,aAAa,GAAG,cAAc,CAAC;AA6BpD,wBAAgB,oBAAoB,IAAI,MAAM,CAI7C;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"reportSavings.d.ts","sourceRoot":"","sources":["../../../src/utils/reportSavings.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,KAAK,aAAa,GAAG,WAAW,GAAG,gBAAgB,GAAG,cAAc,GAAG,mBAAmB,GAAG,OAAO,CAAC;AAErG,UAAU,aAAa;IACrB,MAAM,EAAE,aAAa,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,UAAU,cAAc;IACtB,MAAM,EAAE,aAAa,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,KAAK,aAAa,GAAG,aAAa,GAAG,cAAc,CAAC;AA6BpD,wBAAgB,oBAAoB,IAAI,MAAM,CAI7C;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAc1D;AAED,KAAK,UAAU,GAAG,iBAAiB,GAAG,YAAY,GAAG,WAAW,CAAC;AAEjE,UAAU,WAAW;IACnB,MAAM,EAAE,UAAU,CAAC;IACnB,mDAAmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,2FAA2F;IAC3F,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,CAMrD;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,IAAI,OAAO,CAEhD;AAYD,wFAAwF;AACxF,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAElE;AAED;sFACsF;AACtF,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE1F,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,aAAa,CAAC;IACvB,wFAAwF;IACxF,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,aAAa,EAAE,SAAS,SAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAGnF;AAQD,wBAAgB,0BAA0B,CAAC,EAAE,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,CAExE"}
|
|
@@ -13,7 +13,9 @@ exports.takeSubstitutedChars = takeSubstitutedChars;
|
|
|
13
13
|
exports.reportSavings = reportSavings;
|
|
14
14
|
exports.reportCost = reportCost;
|
|
15
15
|
exports.usageReportingDisabled = usageReportingDisabled;
|
|
16
|
+
exports.noteConnectedClient = noteConnectedClient;
|
|
16
17
|
exports.reportRecall = reportRecall;
|
|
18
|
+
exports.setProxyUnreachableHandler = setProxyUnreachableHandler;
|
|
17
19
|
const fs_1 = __importDefault(require("fs"));
|
|
18
20
|
const path_1 = __importDefault(require("path"));
|
|
19
21
|
const os_1 = __importDefault(require("os"));
|
|
@@ -51,9 +53,13 @@ function takeSubstitutedChars() {
|
|
|
51
53
|
return chars;
|
|
52
54
|
}
|
|
53
55
|
function reportSavings(payload) {
|
|
54
|
-
|
|
56
|
+
// A cache answer measured by chars (the UNCHANGED marker of a re-read) also leaves its `charsAfter`
|
|
57
|
+
// in context, and is netted out of the toolResult cost for the same reason a squeeze is.
|
|
58
|
+
if ((payload.source === 'contextSqueeze' || payload.source === 'cache') && 'charsAfter' in payload) {
|
|
55
59
|
_substitutedChars += Math.max(0, payload.charsAfter);
|
|
56
|
-
|
|
60
|
+
}
|
|
61
|
+
// Which workspace this ran in: the MCP process cwd, the same assumption the ROI ledger below makes.
|
|
62
|
+
post('/api/savings-record', { ...payload, projectPath: process.cwd() });
|
|
57
63
|
if (payload.toolName && !usageReportingDisabled()) {
|
|
58
64
|
const tokens = 'tokens' in payload ? payload.tokens : Math.floor(Math.max(0, payload.charsBefore - payload.charsAfter) / 4);
|
|
59
65
|
// Best-effort, repo-scoped: process.cwd() is the workspace root for every MCP tool
|
|
@@ -67,7 +73,7 @@ function reportSavings(payload) {
|
|
|
67
73
|
* also must not be silently skipped, or the ledger goes back to only counting wins.
|
|
68
74
|
*/
|
|
69
75
|
function reportCost(payload) {
|
|
70
|
-
post('/api/cost-record', payload);
|
|
76
|
+
post('/api/cost-record', { ...payload, projectPath: process.cwd() });
|
|
71
77
|
if (payload.toolName && !usageReportingDisabled()) {
|
|
72
78
|
const tokens = typeof payload.tokens === 'number' ? payload.tokens : Math.floor(Math.max(0, payload.chars || 0) / 4);
|
|
73
79
|
(0, RoiLedger_1.recordRoiSpent)(process.cwd(), payload.toolName, tokens);
|
|
@@ -80,7 +86,21 @@ function reportCost(payload) {
|
|
|
80
86
|
* temp repo dir. Under it, no usage accounting is recorded anywhere.
|
|
81
87
|
*/
|
|
82
88
|
function usageReportingDisabled() {
|
|
83
|
-
return process.env.LEMMA_MCP_NO_PROXY === '1';
|
|
89
|
+
return process.env.LEMMA_MCP_NO_PROXY === '1' || _probeClient;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Clients that exercise the tools without being anyone's session: the eval harness and the
|
|
93
|
+
* dashboard's health probe. Their calls reached the live ledger as real usage (~18% of the
|
|
94
|
+
* attributed spend, together with other non-session hosts) because only the env var above
|
|
95
|
+
* silenced them and these clients do not set it. Matched on the clientInfo name, which is
|
|
96
|
+
* all the server is told about who connected.
|
|
97
|
+
*/
|
|
98
|
+
const PROBE_CLIENTS = new Set(['lemma-eval-harness', 'dashboard-probe']);
|
|
99
|
+
let _probeClient = false;
|
|
100
|
+
/** Called with the connected client's name whenever it is known; sticky per process. */
|
|
101
|
+
function noteConnectedClient(name) {
|
|
102
|
+
if (name && PROBE_CLIENTS.has(name))
|
|
103
|
+
_probeClient = true;
|
|
84
104
|
}
|
|
85
105
|
/**
|
|
86
106
|
* Tell the proxy which memories a note offered, so the dashboard can count recall the agent
|
|
@@ -93,6 +113,15 @@ function reportRecall(payload, timeoutMs = 300) {
|
|
|
93
113
|
return Promise.resolve();
|
|
94
114
|
return post('/api/brain-recall', payload, timeoutMs);
|
|
95
115
|
}
|
|
116
|
+
/**
|
|
117
|
+
* Called when a report found the proxy refusing connections. The report itself is still dropped
|
|
118
|
+
* (fire-and-forget by contract); this only lets the process that owns the session try to bring the
|
|
119
|
+
* proxy back so the NEXT reports land. Registered by the MCP server, absent in hooks and tests.
|
|
120
|
+
*/
|
|
121
|
+
let _onProxyUnreachable = null;
|
|
122
|
+
function setProxyUnreachableHandler(fn) {
|
|
123
|
+
_onProxyUnreachable = fn;
|
|
124
|
+
}
|
|
96
125
|
function post(pathname, payload, timeoutMs) {
|
|
97
126
|
if (usageReportingDisabled())
|
|
98
127
|
return Promise.resolve();
|
|
@@ -114,7 +143,17 @@ function post(pathname, payload, timeoutMs) {
|
|
|
114
143
|
res.resume();
|
|
115
144
|
res.on('end', () => resolve());
|
|
116
145
|
});
|
|
117
|
-
req.on('error', () =>
|
|
146
|
+
req.on('error', (err) => {
|
|
147
|
+
// Silently ignore if the proxy isn't running — but let the session owner know, once per
|
|
148
|
+
// failure, so a proxy that died mid-session does not swallow every later report.
|
|
149
|
+
if (err?.code === 'ECONNREFUSED') {
|
|
150
|
+
try {
|
|
151
|
+
_onProxyUnreachable?.();
|
|
152
|
+
}
|
|
153
|
+
catch { /* never let accounting throw */ }
|
|
154
|
+
}
|
|
155
|
+
resolve();
|
|
156
|
+
});
|
|
118
157
|
if (timeoutMs !== undefined) {
|
|
119
158
|
req.setTimeout(timeoutMs, () => {
|
|
120
159
|
req.destroy();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"reportSavings.js","sourceRoot":"","sources":["../../../src/utils/reportSavings.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;AAwDH,oDAIC;AAED,
|
|
1
|
+
{"version":3,"file":"reportSavings.js","sourceRoot":"","sources":["../../../src/utils/reportSavings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tsLoader.d.ts","sourceRoot":"","sources":["../../../src/utils/tsLoader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,EAAE,MAAM,YAAY,CAAC;AAiBtC,wBAAgB,KAAK,IAAI,OAAO,EAAE,CAGjC;AAED,yEAAyE;AACzE,eAAO,MAAM,EAAE,EAAE,OAAO,EAEtB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ts = void 0;
|
|
4
|
+
exports.getTs = getTs;
|
|
5
|
+
let loaded;
|
|
6
|
+
function getTs() {
|
|
7
|
+
if (!loaded)
|
|
8
|
+
loaded = require('typescript');
|
|
9
|
+
return loaded;
|
|
10
|
+
}
|
|
11
|
+
/** Drop-in for `import * as ts from 'typescript'` in value positions. */
|
|
12
|
+
exports.ts = new Proxy({}, {
|
|
13
|
+
get: (_target, prop) => getTs()[prop],
|
|
14
|
+
});
|
|
15
|
+
//# sourceMappingURL=tsLoader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tsLoader.js","sourceRoot":"","sources":["../../../src/utils/tsLoader.ts"],"names":[],"mappings":";;;AAiBA,sBAGC;AALD,IAAI,MAA6B,CAAC;AAElC,SAAgB,KAAK;IACnB,IAAI,CAAC,MAAM;QAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAc,CAAC;IACzD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,yEAAyE;AAC5D,QAAA,EAAE,GAAc,IAAI,KAAK,CAAC,EAAe,EAAE;IACtD,GAAG,EAAE,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,CAAE,KAAK,EAAkD,CAAC,IAAI,CAAC;CACvF,CAAC,CAAC"}
|
|
@@ -24,12 +24,23 @@ export declare function hookCommand(host: 'claude' | 'codex' | 'cursor'): string
|
|
|
24
24
|
export declare const CLAUDE_HOOK_COMMAND: string;
|
|
25
25
|
/** UserPromptSubmit: recall before the agent answers — see HostRecall.recallForPrompt. */
|
|
26
26
|
export declare const CLAUDE_PROMPT_HOOK_COMMAND = "command -v lemma-brain-ingest >/dev/null 2>&1 && lemma-brain-ingest --prompt-submit || true";
|
|
27
|
+
/** PreToolUse (edits): memories about the file before it is written — see HostRecall.preEditRecall. */
|
|
28
|
+
export declare const CLAUDE_PRE_TOOL_HOOK_COMMAND = "command -v lemma-brain-ingest >/dev/null 2>&1 && lemma-brain-ingest --pre-tool || true";
|
|
29
|
+
export declare const CLAUDE_PRE_TOOL_MATCHER = "Edit|MultiEdit|Write|NotebookEdit";
|
|
27
30
|
/** SessionStart: the Brain's briefing and the playbook — see HostRecall.sessionBriefing. */
|
|
28
31
|
export declare const CLAUDE_SESSION_HOOK_COMMAND = "command -v lemma-brain-ingest >/dev/null 2>&1 && lemma-brain-ingest --session-start || true";
|
|
32
|
+
/** SessionEnd: a session that stored nothing still leaves its closing answer — see SessionCapture. */
|
|
33
|
+
export declare const CLAUDE_SESSION_END_HOOK_COMMAND = "command -v lemma-brain-ingest >/dev/null 2>&1 && lemma-brain-ingest --session-end || true";
|
|
29
34
|
export declare const CLAUDE_HOOK_MATCHER = "Bash|Read|Edit|MultiEdit|Write|NotebookEdit";
|
|
30
35
|
export declare const CODEX_HOOK_MATCHER = "Bash|apply_patch|Edit|Write";
|
|
31
36
|
export declare const CURSOR_POST_MATCHER = "Read|Shell|Write";
|
|
32
37
|
export declare const CURSOR_FAILURE_MATCHER = "Shell";
|
|
38
|
+
/**
|
|
39
|
+
* Tools that only read, or write to the Brain, so a permission prompt on them is pure friction
|
|
40
|
+
* for an agent running unattended. Left out on purpose: run_workspace_command (runs commands),
|
|
41
|
+
* forget_memory (deletes), and lemma_toolbox (its `call` reaches both).
|
|
42
|
+
*/
|
|
43
|
+
export declare const CLAUDE_ALLOWED_TOOLS: string[];
|
|
33
44
|
export interface HookInstallOutcome {
|
|
34
45
|
status: 'installed' | 'updated' | 'unchanged' | 'manual';
|
|
35
46
|
file: string;
|
|
@@ -38,7 +49,9 @@ export interface HookInstallOutcome {
|
|
|
38
49
|
/** True when `.claude/settings.local.json` was appended to .gitignore (Claude Code only). */
|
|
39
50
|
gitignored?: boolean;
|
|
40
51
|
}
|
|
41
|
-
export declare function installClaudeHooks(cwd?: string
|
|
52
|
+
export declare function installClaudeHooks(cwd?: string, options?: {
|
|
53
|
+
permissions?: boolean;
|
|
54
|
+
}): HookInstallOutcome;
|
|
42
55
|
export declare function installCodexHooks(home?: string): HookInstallOutcome;
|
|
43
56
|
/** Cursor format: `{ version: 1, hooks: { <event>: [{ command, matcher? }] } }`. */
|
|
44
57
|
export declare function installCursorHooks(home?: string): HookInstallOutcome;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hostHooks.d.ts","sourceRoot":"","sources":["../../../src/cli/hostHooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;
|
|
1
|
+
{"version":3,"file":"hostHooks.d.ts","sourceRoot":"","sources":["../../../src/cli/hostHooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAaH,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAGvE;AAED,eAAO,MAAM,mBAAmB,QAAwB,CAAC;AACzD,0FAA0F;AAC1F,eAAO,MAAM,0BAA0B,gGAA4E,CAAC;AACpH,uGAAuG;AACvG,eAAO,MAAM,4BAA4B,2FAA8E,CAAC;AACxH,eAAO,MAAM,uBAAuB,sCAAsC,CAAC;AAC3E,4FAA4F;AAC5F,eAAO,MAAM,2BAA2B,gGAA6E,CAAC;AACtH,sGAAsG;AACtG,eAAO,MAAM,+BAA+B,8FAAiF,CAAC;AAC9H,eAAO,MAAM,mBAAmB,gDAAgD,CAAC;AACjF,eAAO,MAAM,kBAAkB,gCAAgC,CAAC;AAChE,eAAO,MAAM,mBAAmB,qBAAqB,CAAC;AACtD,eAAO,MAAM,sBAAsB,UAAU,CAAC;AAE9C;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,UAWD,CAAC;AAEjC,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,WAAW,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,CAAC;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,8EAA8E;IAC9E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6FAA6F;IAC7F,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AA6FD,wBAAgB,kBAAkB,CAAC,GAAG,GAAE,MAAsB,EAAE,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,kBAAkB,CAwB3H;AAED,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,MAAqB,GAAG,kBAAkB,CAEjF;AAED,oFAAoF;AACpF,wBAAgB,kBAAkB,CAAC,IAAI,GAAE,MAAqB,GAAG,kBAAkB,CAkClF;AAID;;;;;GAKG;AACH,eAAO,MAAM,eAAe,szCA0B3B,CAAC;AAEF,wBAAgB,qBAAqB,CAAC,IAAI,GAAE,MAAqB,GAAG,kBAAkB,CAYrF;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,aAAa,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC;IACtD,OAAO,EAAE,kBAAkB,CAAC;CAC7B;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,GAAE,MAAsB,EAAE,IAAI,GAAE,MAAqB,GAAG,cAAc,EAAE,CAO3G;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,GAAE,MAAsB,GAAG,kBAAkB,GAAG,IAAI,CAWxF"}
|
|
@@ -26,7 +26,9 @@ import path from 'path';
|
|
|
26
26
|
import { execFileSync } from 'child_process';
|
|
27
27
|
const HOOK_MARK = 'lemma-brain-ingest --hook-result';
|
|
28
28
|
const PROMPT_MARK = 'lemma-brain-ingest --prompt-submit';
|
|
29
|
+
const PRE_TOOL_MARK = 'lemma-brain-ingest --pre-tool';
|
|
29
30
|
const SESSION_MARK = 'lemma-brain-ingest --session-start';
|
|
31
|
+
const SESSION_END_MARK = 'lemma-brain-ingest --session-end';
|
|
30
32
|
export function hookCommand(host) {
|
|
31
33
|
const flag = host === 'claude' ? '' : ` --host=${host}`;
|
|
32
34
|
return `command -v lemma-brain-ingest >/dev/null 2>&1 && ${HOOK_MARK}${flag} || true`;
|
|
@@ -34,12 +36,34 @@ export function hookCommand(host) {
|
|
|
34
36
|
export const CLAUDE_HOOK_COMMAND = hookCommand('claude');
|
|
35
37
|
/** UserPromptSubmit: recall before the agent answers — see HostRecall.recallForPrompt. */
|
|
36
38
|
export const CLAUDE_PROMPT_HOOK_COMMAND = `command -v lemma-brain-ingest >/dev/null 2>&1 && ${PROMPT_MARK} || true`;
|
|
39
|
+
/** PreToolUse (edits): memories about the file before it is written — see HostRecall.preEditRecall. */
|
|
40
|
+
export const CLAUDE_PRE_TOOL_HOOK_COMMAND = `command -v lemma-brain-ingest >/dev/null 2>&1 && ${PRE_TOOL_MARK} || true`;
|
|
41
|
+
export const CLAUDE_PRE_TOOL_MATCHER = 'Edit|MultiEdit|Write|NotebookEdit';
|
|
37
42
|
/** SessionStart: the Brain's briefing and the playbook — see HostRecall.sessionBriefing. */
|
|
38
43
|
export const CLAUDE_SESSION_HOOK_COMMAND = `command -v lemma-brain-ingest >/dev/null 2>&1 && ${SESSION_MARK} || true`;
|
|
44
|
+
/** SessionEnd: a session that stored nothing still leaves its closing answer — see SessionCapture. */
|
|
45
|
+
export const CLAUDE_SESSION_END_HOOK_COMMAND = `command -v lemma-brain-ingest >/dev/null 2>&1 && ${SESSION_END_MARK} || true`;
|
|
39
46
|
export const CLAUDE_HOOK_MATCHER = 'Bash|Read|Edit|MultiEdit|Write|NotebookEdit';
|
|
40
47
|
export const CODEX_HOOK_MATCHER = 'Bash|apply_patch|Edit|Write';
|
|
41
48
|
export const CURSOR_POST_MATCHER = 'Read|Shell|Write';
|
|
42
49
|
export const CURSOR_FAILURE_MATCHER = 'Shell';
|
|
50
|
+
/**
|
|
51
|
+
* Tools that only read, or write to the Brain, so a permission prompt on them is pure friction
|
|
52
|
+
* for an agent running unattended. Left out on purpose: run_workspace_command (runs commands),
|
|
53
|
+
* forget_memory (deletes), and lemma_toolbox (its `call` reaches both).
|
|
54
|
+
*/
|
|
55
|
+
export const CLAUDE_ALLOWED_TOOLS = [
|
|
56
|
+
'search_memory',
|
|
57
|
+
'get_memory',
|
|
58
|
+
'verify_memory',
|
|
59
|
+
'store_memory',
|
|
60
|
+
'update_memory',
|
|
61
|
+
'refresh_memory',
|
|
62
|
+
'read_workspace_file',
|
|
63
|
+
'search_workspace',
|
|
64
|
+
'output_region',
|
|
65
|
+
'env_snapshot',
|
|
66
|
+
].map((t) => `mcp__lemma__${t}`);
|
|
43
67
|
const isOursWith = (mark) => (h) => typeof h?.command === 'string' && h.command.includes(mark);
|
|
44
68
|
const isOurs = isOursWith(HOOK_MARK);
|
|
45
69
|
function readJsonObject(file) {
|
|
@@ -97,6 +121,20 @@ function mergeMatcherHooks(file, event, matcher, command, mark = HOOK_MARK) {
|
|
|
97
121
|
writeJson(file, settings);
|
|
98
122
|
return { status, file };
|
|
99
123
|
}
|
|
124
|
+
/** Add Lemma's memory/read tools to `permissions.allow`. Adds only what is missing, never removes. */
|
|
125
|
+
function mergeClaudePermissions(file) {
|
|
126
|
+
const settings = readJsonObject(file);
|
|
127
|
+
if (!settings)
|
|
128
|
+
return { status: 'manual', file };
|
|
129
|
+
const perms = settings.permissions && typeof settings.permissions === 'object' ? settings.permissions : {};
|
|
130
|
+
const allow = Array.isArray(perms.allow) ? perms.allow : [];
|
|
131
|
+
const missing = CLAUDE_ALLOWED_TOOLS.filter((t) => !allow.includes(t));
|
|
132
|
+
if (missing.length === 0)
|
|
133
|
+
return { status: 'unchanged', file };
|
|
134
|
+
settings.permissions = { ...perms, allow: [...allow, ...missing] };
|
|
135
|
+
writeJson(file, settings);
|
|
136
|
+
return { status: 'updated', file };
|
|
137
|
+
}
|
|
100
138
|
function ensureClaudeLocalIgnored(cwd) {
|
|
101
139
|
const rel = path.join('.claude', 'settings.local.json');
|
|
102
140
|
try {
|
|
@@ -116,7 +154,7 @@ function ensureClaudeLocalIgnored(cwd) {
|
|
|
116
154
|
fs.appendFileSync(gitignore, `${existing && !existing.endsWith('\n') ? '\n' : ''}${rule}\n`);
|
|
117
155
|
return true;
|
|
118
156
|
}
|
|
119
|
-
export function installClaudeHooks(cwd = process.cwd()) {
|
|
157
|
+
export function installClaudeHooks(cwd = process.cwd(), options = {}) {
|
|
120
158
|
const file = path.join(cwd, '.claude', 'settings.local.json');
|
|
121
159
|
const post = mergeMatcherHooks(file, 'PostToolUse', CLAUDE_HOOK_MATCHER, CLAUDE_HOOK_COMMAND);
|
|
122
160
|
if (post.status === 'manual')
|
|
@@ -127,10 +165,19 @@ export function installClaudeHooks(cwd = process.cwd()) {
|
|
|
127
165
|
const session = mergeMatcherHooks(file, 'SessionStart', undefined, CLAUDE_SESSION_HOOK_COMMAND, SESSION_MARK);
|
|
128
166
|
if (session.status === 'manual')
|
|
129
167
|
return session;
|
|
168
|
+
const pre = mergeMatcherHooks(file, 'PreToolUse', CLAUDE_PRE_TOOL_MATCHER, CLAUDE_PRE_TOOL_HOOK_COMMAND, PRE_TOOL_MARK);
|
|
169
|
+
if (pre.status === 'manual')
|
|
170
|
+
return pre;
|
|
171
|
+
const sessionEnd = mergeMatcherHooks(file, 'SessionEnd', undefined, CLAUDE_SESSION_END_HOOK_COMMAND, SESSION_END_MARK);
|
|
172
|
+
if (sessionEnd.status === 'manual')
|
|
173
|
+
return sessionEnd;
|
|
174
|
+
// The permission grant is only for an explicit init: repairClaudeHooks runs on every MCP start
|
|
175
|
+
// and must not widen what the user's agent may do without asking.
|
|
176
|
+
const perms = options.permissions === false ? null : mergeClaudePermissions(file);
|
|
130
177
|
const gitignored = ensureClaudeLocalIgnored(cwd);
|
|
131
178
|
// All new → a fresh install. Extending a project that already had some of them is an update.
|
|
132
|
-
const parts = [post.status, prompt.status, session.status];
|
|
133
|
-
const status = parts.every((x) => x === 'unchanged')
|
|
179
|
+
const parts = [post.status, pre.status, prompt.status, session.status, sessionEnd.status];
|
|
180
|
+
const status = parts.every((x) => x === 'unchanged') && perms?.status !== 'updated'
|
|
134
181
|
? 'unchanged'
|
|
135
182
|
: parts.every((x) => x === 'installed')
|
|
136
183
|
? 'installed'
|
|
@@ -262,9 +309,9 @@ export function repairClaudeHooks(cwd = process.cwd()) {
|
|
|
262
309
|
catch {
|
|
263
310
|
return null;
|
|
264
311
|
}
|
|
265
|
-
if (![HOOK_MARK, PROMPT_MARK, SESSION_MARK].some((mark) => text.includes(mark)))
|
|
312
|
+
if (![HOOK_MARK, PROMPT_MARK, PRE_TOOL_MARK, SESSION_MARK, SESSION_END_MARK].some((mark) => text.includes(mark)))
|
|
266
313
|
return null;
|
|
267
|
-
const outcome = installClaudeHooks(cwd);
|
|
314
|
+
const outcome = installClaudeHooks(cwd, { permissions: false });
|
|
268
315
|
return outcome.status === 'unchanged' || outcome.status === 'manual' ? null : outcome;
|
|
269
316
|
}
|
|
270
317
|
//# sourceMappingURL=hostHooks.js.map
|