@nxuss/lemma 1.38.0 → 1.40.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (431) hide show
  1. package/README.md +3 -4
  2. package/bin/brain-ingest.js +68 -31
  3. package/bin/init.js +25 -28
  4. package/dashboard/dist/assets/index-DNTQXLER.css +1 -0
  5. package/dashboard/dist/assets/index-DzL_Zu3m.js +452 -0
  6. package/dashboard/dist/index.html +2 -2
  7. package/dist/cjs/cli/gitHooks.d.ts +9 -2
  8. package/dist/cjs/cli/gitHooks.d.ts.map +1 -1
  9. package/dist/cjs/cli/gitHooks.js +31 -4
  10. package/dist/cjs/cli/gitHooks.js.map +1 -1
  11. package/dist/cjs/cli/lemma-proxy.d.ts.map +1 -1
  12. package/dist/cjs/cli/lemma-proxy.js +21 -1
  13. package/dist/cjs/cli/lemma-proxy.js.map +1 -1
  14. package/dist/cjs/infra/analyzers/index.d.ts +0 -2
  15. package/dist/cjs/infra/analyzers/index.d.ts.map +1 -1
  16. package/dist/cjs/infra/analyzers/index.js +1 -6
  17. package/dist/cjs/infra/analyzers/index.js.map +1 -1
  18. package/dist/cjs/infra/cli.d.ts +4 -0
  19. package/dist/cjs/infra/cli.d.ts.map +1 -1
  20. package/dist/cjs/infra/cli.js +6 -199
  21. package/dist/cjs/infra/cli.js.map +1 -1
  22. package/dist/cjs/infra/index.d.ts +1 -3
  23. package/dist/cjs/infra/index.d.ts.map +1 -1
  24. package/dist/cjs/infra/index.js +1 -16
  25. package/dist/cjs/infra/index.js.map +1 -1
  26. package/dist/cjs/infra/mcp-tools.d.ts.map +1 -1
  27. package/dist/cjs/infra/mcp-tools.js +8 -453
  28. package/dist/cjs/infra/mcp-tools.js.map +1 -1
  29. package/dist/cjs/infra/types.d.ts +0 -101
  30. package/dist/cjs/infra/types.d.ts.map +1 -1
  31. package/dist/cjs/infra/types.js +2 -1
  32. package/dist/cjs/infra/types.js.map +1 -1
  33. package/dist/cjs/mcp/cognitiveMap.d.ts.map +1 -1
  34. package/dist/cjs/mcp/cognitiveMap.js +6 -2
  35. package/dist/cjs/mcp/cognitiveMap.js.map +1 -1
  36. package/dist/cjs/mcp/index.js +2 -0
  37. package/dist/cjs/mcp/index.js.map +1 -1
  38. package/dist/cjs/mcp/prompts.d.ts +1 -1
  39. package/dist/cjs/mcp/prompts.d.ts.map +1 -1
  40. package/dist/cjs/mcp/prompts.js +8 -23
  41. package/dist/cjs/mcp/prompts.js.map +1 -1
  42. package/dist/cjs/mcp/tool-profiles.d.ts +8 -3
  43. package/dist/cjs/mcp/tool-profiles.d.ts.map +1 -1
  44. package/dist/cjs/mcp/tool-profiles.js +25 -54
  45. package/dist/cjs/mcp/tool-profiles.js.map +1 -1
  46. package/dist/cjs/mcp/tools/devtools.d.ts.map +1 -1
  47. package/dist/cjs/mcp/tools/devtools.js +11 -1
  48. package/dist/cjs/mcp/tools/devtools.js.map +1 -1
  49. package/dist/cjs/mcp/tools/memory.d.ts +8 -0
  50. package/dist/cjs/mcp/tools/memory.d.ts.map +1 -1
  51. package/dist/cjs/mcp/tools/memory.js +209 -137
  52. package/dist/cjs/mcp/tools/memory.js.map +1 -1
  53. package/dist/cjs/mcp/tools/refactor.d.ts.map +1 -1
  54. package/dist/cjs/mcp/tools/refactor.js +129 -32
  55. package/dist/cjs/mcp/tools/refactor.js.map +1 -1
  56. package/dist/cjs/mcp/tools/workspace.d.ts.map +1 -1
  57. package/dist/cjs/mcp/tools/workspace.js +108 -8
  58. package/dist/cjs/mcp/tools/workspace.js.map +1 -1
  59. package/dist/cjs/mcp/tools.d.ts.map +1 -1
  60. package/dist/cjs/mcp/tools.js +11 -6
  61. package/dist/cjs/mcp/tools.js.map +1 -1
  62. package/dist/cjs/mcp/workspaceShared.d.ts.map +1 -1
  63. package/dist/cjs/mcp/workspaceShared.js +8 -4
  64. package/dist/cjs/mcp/workspaceShared.js.map +1 -1
  65. package/dist/cjs/proxy/ProjectRegistry.d.ts +20 -0
  66. package/dist/cjs/proxy/ProjectRegistry.d.ts.map +1 -1
  67. package/dist/cjs/proxy/ProjectRegistry.js +46 -4
  68. package/dist/cjs/proxy/ProjectRegistry.js.map +1 -1
  69. package/dist/cjs/proxy/ProjectStore.d.ts.map +1 -1
  70. package/dist/cjs/proxy/ProjectStore.js +9 -6
  71. package/dist/cjs/proxy/ProjectStore.js.map +1 -1
  72. package/dist/cjs/subconscious/HostRecall.d.ts +26 -2
  73. package/dist/cjs/subconscious/HostRecall.d.ts.map +1 -1
  74. package/dist/cjs/subconscious/HostRecall.js +115 -40
  75. package/dist/cjs/subconscious/HostRecall.js.map +1 -1
  76. package/dist/cjs/subconscious/NarrowEvidence.d.ts +53 -0
  77. package/dist/cjs/subconscious/NarrowEvidence.d.ts.map +1 -0
  78. package/dist/cjs/subconscious/NarrowEvidence.js +237 -0
  79. package/dist/cjs/subconscious/NarrowEvidence.js.map +1 -0
  80. package/dist/cjs/subconscious/TheBrainV2.d.ts +48 -0
  81. package/dist/cjs/subconscious/TheBrainV2.d.ts.map +1 -1
  82. package/dist/cjs/subconscious/TheBrainV2.js +227 -26
  83. package/dist/cjs/subconscious/TheBrainV2.js.map +1 -1
  84. package/dist/cjs/subconscious/freshness/LocalFsResolver.d.ts.map +1 -1
  85. package/dist/cjs/subconscious/freshness/LocalFsResolver.js +32 -0
  86. package/dist/cjs/subconscious/freshness/LocalFsResolver.js.map +1 -1
  87. package/dist/cjs/subconscious/recallDigest.d.ts +8 -0
  88. package/dist/cjs/subconscious/recallDigest.d.ts.map +1 -1
  89. package/dist/cjs/subconscious/recallDigest.js +13 -1
  90. package/dist/cjs/subconscious/recallDigest.js.map +1 -1
  91. package/dist/cjs/utils/AffectedTests.d.ts +1 -5
  92. package/dist/cjs/utils/AffectedTests.d.ts.map +1 -1
  93. package/dist/cjs/utils/AffectedTests.js +5 -37
  94. package/dist/cjs/utils/AffectedTests.js.map +1 -1
  95. package/dist/cjs/utils/AtomicFile.d.ts +14 -0
  96. package/dist/cjs/utils/AtomicFile.d.ts.map +1 -0
  97. package/dist/cjs/utils/AtomicFile.js +44 -0
  98. package/dist/cjs/utils/AtomicFile.js.map +1 -0
  99. package/dist/cjs/utils/AutoContextBundle.js +1 -1
  100. package/dist/cjs/utils/AutoContextBundle.js.map +1 -1
  101. package/dist/cjs/utils/BulkFileDigest.js +1 -1
  102. package/dist/cjs/utils/BulkFileDigest.js.map +1 -1
  103. package/dist/cjs/utils/ContextSqueezer.d.ts +36 -4
  104. package/dist/cjs/utils/ContextSqueezer.d.ts.map +1 -1
  105. package/dist/cjs/utils/ContextSqueezer.js +69 -21
  106. package/dist/cjs/utils/ContextSqueezer.js.map +1 -1
  107. package/dist/cjs/utils/FileLock.d.ts +2 -0
  108. package/dist/cjs/utils/FileLock.d.ts.map +1 -0
  109. package/dist/cjs/utils/FileLock.js +32 -0
  110. package/dist/cjs/utils/FileLock.js.map +1 -0
  111. package/dist/cjs/utils/FileOutline.d.ts +1 -1
  112. package/dist/cjs/utils/FileOutline.d.ts.map +1 -1
  113. package/dist/cjs/utils/FileOutline.js +5 -1
  114. package/dist/cjs/utils/FileOutline.js.map +1 -1
  115. package/dist/cjs/utils/FixCapture.d.ts.map +1 -1
  116. package/dist/cjs/utils/FixCapture.js +4 -3
  117. package/dist/cjs/utils/FixCapture.js.map +1 -1
  118. package/dist/cjs/utils/GitChanges.d.ts +11 -0
  119. package/dist/cjs/utils/GitChanges.d.ts.map +1 -0
  120. package/dist/cjs/utils/GitChanges.js +44 -0
  121. package/dist/cjs/utils/GitChanges.js.map +1 -0
  122. package/dist/cjs/utils/JsonKeys.d.ts +17 -0
  123. package/dist/cjs/utils/JsonKeys.d.ts.map +1 -0
  124. package/dist/cjs/utils/JsonKeys.js +75 -0
  125. package/dist/cjs/utils/JsonKeys.js.map +1 -0
  126. package/dist/cjs/utils/LocalExclude.d.ts +3 -0
  127. package/dist/cjs/utils/LocalExclude.d.ts.map +1 -0
  128. package/dist/cjs/utils/LocalExclude.js +68 -0
  129. package/dist/cjs/utils/LocalExclude.js.map +1 -0
  130. package/dist/cjs/utils/OtherLanguageSymbols.d.ts +31 -0
  131. package/dist/cjs/utils/OtherLanguageSymbols.d.ts.map +1 -0
  132. package/dist/cjs/utils/OtherLanguageSymbols.js +276 -0
  133. package/dist/cjs/utils/OtherLanguageSymbols.js.map +1 -0
  134. package/dist/cjs/utils/OutputDelta.d.ts +14 -2
  135. package/dist/cjs/utils/OutputDelta.d.ts.map +1 -1
  136. package/dist/cjs/utils/OutputDelta.js +22 -15
  137. package/dist/cjs/utils/OutputDelta.js.map +1 -1
  138. package/dist/cjs/utils/RoiLedger.d.ts.map +1 -1
  139. package/dist/cjs/utils/RoiLedger.js +7 -3
  140. package/dist/cjs/utils/RoiLedger.js.map +1 -1
  141. package/dist/cjs/utils/SavingsLedger.d.ts +27 -0
  142. package/dist/cjs/utils/SavingsLedger.d.ts.map +1 -1
  143. package/dist/cjs/utils/SavingsLedger.js +56 -2
  144. package/dist/cjs/utils/SavingsLedger.js.map +1 -1
  145. package/dist/cjs/utils/SharedLedgerStore.d.ts.map +1 -1
  146. package/dist/cjs/utils/SharedLedgerStore.js +2 -1
  147. package/dist/cjs/utils/SharedLedgerStore.js.map +1 -1
  148. package/dist/cjs/utils/StoreDraft.d.ts +12 -0
  149. package/dist/cjs/utils/StoreDraft.d.ts.map +1 -1
  150. package/dist/cjs/utils/StoreDraft.js +53 -1
  151. package/dist/cjs/utils/StoreDraft.js.map +1 -1
  152. package/dist/cjs/utils/SurgicalASTInsert.d.ts.map +1 -1
  153. package/dist/cjs/utils/SurgicalASTInsert.js +2 -1
  154. package/dist/cjs/utils/SurgicalASTInsert.js.map +1 -1
  155. package/dist/cjs/utils/SymbolSurgicalContext.d.ts +2 -0
  156. package/dist/cjs/utils/SymbolSurgicalContext.d.ts.map +1 -1
  157. package/dist/cjs/utils/SymbolSurgicalContext.js +30 -62
  158. package/dist/cjs/utils/SymbolSurgicalContext.js.map +1 -1
  159. package/dist/cjs/utils/Utf8Guard.d.ts +23 -0
  160. package/dist/cjs/utils/Utf8Guard.d.ts.map +1 -0
  161. package/dist/cjs/utils/Utf8Guard.js +81 -0
  162. package/dist/cjs/utils/Utf8Guard.js.map +1 -0
  163. package/dist/cjs/utils/WorkspaceSearch.d.ts.map +1 -1
  164. package/dist/cjs/utils/WorkspaceSearch.js +26 -8
  165. package/dist/cjs/utils/WorkspaceSearch.js.map +1 -1
  166. package/dist/cjs/utils/reportSavings.d.ts +17 -4
  167. package/dist/cjs/utils/reportSavings.d.ts.map +1 -1
  168. package/dist/cjs/utils/reportSavings.js +67 -22
  169. package/dist/cjs/utils/reportSavings.js.map +1 -1
  170. package/dist/cjs/utils/tsLoader.d.ts +5 -0
  171. package/dist/cjs/utils/tsLoader.d.ts.map +1 -0
  172. package/dist/cjs/utils/tsLoader.js +15 -0
  173. package/dist/cjs/utils/tsLoader.js.map +1 -0
  174. package/dist/esm/cli/gitHooks.d.ts +9 -2
  175. package/dist/esm/cli/gitHooks.d.ts.map +1 -1
  176. package/dist/esm/cli/gitHooks.js +31 -4
  177. package/dist/esm/cli/gitHooks.js.map +1 -1
  178. package/dist/esm/cli/lemma-proxy.d.ts.map +1 -1
  179. package/dist/esm/cli/lemma-proxy.js +21 -1
  180. package/dist/esm/cli/lemma-proxy.js.map +1 -1
  181. package/dist/esm/infra/analyzers/index.d.ts +0 -2
  182. package/dist/esm/infra/analyzers/index.d.ts.map +1 -1
  183. package/dist/esm/infra/analyzers/index.js +0 -2
  184. package/dist/esm/infra/analyzers/index.js.map +1 -1
  185. package/dist/esm/infra/cli.d.ts +4 -0
  186. package/dist/esm/infra/cli.d.ts.map +1 -1
  187. package/dist/esm/infra/cli.js +6 -199
  188. package/dist/esm/infra/cli.js.map +1 -1
  189. package/dist/esm/infra/index.d.ts +1 -3
  190. package/dist/esm/infra/index.d.ts.map +1 -1
  191. package/dist/esm/infra/index.js +1 -3
  192. package/dist/esm/infra/index.js.map +1 -1
  193. package/dist/esm/infra/mcp-tools.d.ts.map +1 -1
  194. package/dist/esm/infra/mcp-tools.js +9 -454
  195. package/dist/esm/infra/mcp-tools.js.map +1 -1
  196. package/dist/esm/infra/types.d.ts +0 -101
  197. package/dist/esm/infra/types.d.ts.map +1 -1
  198. package/dist/esm/infra/types.js +2 -1
  199. package/dist/esm/infra/types.js.map +1 -1
  200. package/dist/esm/mcp/cognitiveMap.d.ts.map +1 -1
  201. package/dist/esm/mcp/cognitiveMap.js +6 -2
  202. package/dist/esm/mcp/cognitiveMap.js.map +1 -1
  203. package/dist/esm/mcp/index.js +2 -0
  204. package/dist/esm/mcp/index.js.map +1 -1
  205. package/dist/esm/mcp/prompts.d.ts +1 -1
  206. package/dist/esm/mcp/prompts.d.ts.map +1 -1
  207. package/dist/esm/mcp/prompts.js +8 -23
  208. package/dist/esm/mcp/prompts.js.map +1 -1
  209. package/dist/esm/mcp/tool-profiles.d.ts +8 -3
  210. package/dist/esm/mcp/tool-profiles.d.ts.map +1 -1
  211. package/dist/esm/mcp/tool-profiles.js +25 -54
  212. package/dist/esm/mcp/tool-profiles.js.map +1 -1
  213. package/dist/esm/mcp/tools/devtools.d.ts.map +1 -1
  214. package/dist/esm/mcp/tools/devtools.js +11 -1
  215. package/dist/esm/mcp/tools/devtools.js.map +1 -1
  216. package/dist/esm/mcp/tools/memory.d.ts +8 -0
  217. package/dist/esm/mcp/tools/memory.d.ts.map +1 -1
  218. package/dist/esm/mcp/tools/memory.js +211 -140
  219. package/dist/esm/mcp/tools/memory.js.map +1 -1
  220. package/dist/esm/mcp/tools/refactor.d.ts.map +1 -1
  221. package/dist/esm/mcp/tools/refactor.js +129 -32
  222. package/dist/esm/mcp/tools/refactor.js.map +1 -1
  223. package/dist/esm/mcp/tools/workspace.d.ts.map +1 -1
  224. package/dist/esm/mcp/tools/workspace.js +108 -8
  225. package/dist/esm/mcp/tools/workspace.js.map +1 -1
  226. package/dist/esm/mcp/tools.d.ts.map +1 -1
  227. package/dist/esm/mcp/tools.js +12 -7
  228. package/dist/esm/mcp/tools.js.map +1 -1
  229. package/dist/esm/mcp/workspaceShared.d.ts.map +1 -1
  230. package/dist/esm/mcp/workspaceShared.js +9 -5
  231. package/dist/esm/mcp/workspaceShared.js.map +1 -1
  232. package/dist/esm/proxy/ProjectRegistry.d.ts +20 -0
  233. package/dist/esm/proxy/ProjectRegistry.d.ts.map +1 -1
  234. package/dist/esm/proxy/ProjectRegistry.js +45 -3
  235. package/dist/esm/proxy/ProjectRegistry.js.map +1 -1
  236. package/dist/esm/proxy/ProjectStore.d.ts.map +1 -1
  237. package/dist/esm/proxy/ProjectStore.js +9 -6
  238. package/dist/esm/proxy/ProjectStore.js.map +1 -1
  239. package/dist/esm/subconscious/HostRecall.d.ts +26 -2
  240. package/dist/esm/subconscious/HostRecall.d.ts.map +1 -1
  241. package/dist/esm/subconscious/HostRecall.js +113 -41
  242. package/dist/esm/subconscious/HostRecall.js.map +1 -1
  243. package/dist/esm/subconscious/NarrowEvidence.d.ts +53 -0
  244. package/dist/esm/subconscious/NarrowEvidence.d.ts.map +1 -0
  245. package/dist/esm/subconscious/NarrowEvidence.js +228 -0
  246. package/dist/esm/subconscious/NarrowEvidence.js.map +1 -0
  247. package/dist/esm/subconscious/TheBrainV2.d.ts +48 -0
  248. package/dist/esm/subconscious/TheBrainV2.d.ts.map +1 -1
  249. package/dist/esm/subconscious/TheBrainV2.js +226 -25
  250. package/dist/esm/subconscious/TheBrainV2.js.map +1 -1
  251. package/dist/esm/subconscious/freshness/LocalFsResolver.d.ts.map +1 -1
  252. package/dist/esm/subconscious/freshness/LocalFsResolver.js +32 -0
  253. package/dist/esm/subconscious/freshness/LocalFsResolver.js.map +1 -1
  254. package/dist/esm/subconscious/recallDigest.d.ts +8 -0
  255. package/dist/esm/subconscious/recallDigest.d.ts.map +1 -1
  256. package/dist/esm/subconscious/recallDigest.js +12 -1
  257. package/dist/esm/subconscious/recallDigest.js.map +1 -1
  258. package/dist/esm/utils/AffectedTests.d.ts +1 -5
  259. package/dist/esm/utils/AffectedTests.d.ts.map +1 -1
  260. package/dist/esm/utils/AffectedTests.js +2 -35
  261. package/dist/esm/utils/AffectedTests.js.map +1 -1
  262. package/dist/esm/utils/AtomicFile.d.ts +14 -0
  263. package/dist/esm/utils/AtomicFile.d.ts.map +1 -0
  264. package/dist/esm/utils/AtomicFile.js +37 -0
  265. package/dist/esm/utils/AtomicFile.js.map +1 -0
  266. package/dist/esm/utils/AutoContextBundle.js +1 -1
  267. package/dist/esm/utils/AutoContextBundle.js.map +1 -1
  268. package/dist/esm/utils/BulkFileDigest.js +1 -1
  269. package/dist/esm/utils/BulkFileDigest.js.map +1 -1
  270. package/dist/esm/utils/ContextSqueezer.d.ts +36 -4
  271. package/dist/esm/utils/ContextSqueezer.d.ts.map +1 -1
  272. package/dist/esm/utils/ContextSqueezer.js +67 -21
  273. package/dist/esm/utils/ContextSqueezer.js.map +1 -1
  274. package/dist/esm/utils/FileLock.d.ts +2 -0
  275. package/dist/esm/utils/FileLock.d.ts.map +1 -0
  276. package/dist/esm/utils/FileLock.js +29 -0
  277. package/dist/esm/utils/FileLock.js.map +1 -0
  278. package/dist/esm/utils/FileOutline.d.ts +1 -1
  279. package/dist/esm/utils/FileOutline.d.ts.map +1 -1
  280. package/dist/esm/utils/FileOutline.js +5 -1
  281. package/dist/esm/utils/FileOutline.js.map +1 -1
  282. package/dist/esm/utils/FixCapture.d.ts.map +1 -1
  283. package/dist/esm/utils/FixCapture.js +3 -2
  284. package/dist/esm/utils/FixCapture.js.map +1 -1
  285. package/dist/esm/utils/GitChanges.d.ts +11 -0
  286. package/dist/esm/utils/GitChanges.d.ts.map +1 -0
  287. package/dist/esm/utils/GitChanges.js +41 -0
  288. package/dist/esm/utils/GitChanges.js.map +1 -0
  289. package/dist/esm/utils/JsonKeys.d.ts +17 -0
  290. package/dist/esm/utils/JsonKeys.d.ts.map +1 -0
  291. package/dist/esm/utils/JsonKeys.js +71 -0
  292. package/dist/esm/utils/JsonKeys.js.map +1 -0
  293. package/dist/esm/utils/LocalExclude.d.ts +3 -0
  294. package/dist/esm/utils/LocalExclude.d.ts.map +1 -0
  295. package/dist/esm/utils/LocalExclude.js +62 -0
  296. package/dist/esm/utils/LocalExclude.js.map +1 -0
  297. package/dist/esm/utils/OtherLanguageSymbols.d.ts +31 -0
  298. package/dist/esm/utils/OtherLanguageSymbols.d.ts.map +1 -0
  299. package/dist/esm/utils/OtherLanguageSymbols.js +268 -0
  300. package/dist/esm/utils/OtherLanguageSymbols.js.map +1 -0
  301. package/dist/esm/utils/OutputDelta.d.ts +14 -2
  302. package/dist/esm/utils/OutputDelta.d.ts.map +1 -1
  303. package/dist/esm/utils/OutputDelta.js +22 -15
  304. package/dist/esm/utils/OutputDelta.js.map +1 -1
  305. package/dist/esm/utils/RoiLedger.d.ts.map +1 -1
  306. package/dist/esm/utils/RoiLedger.js +7 -3
  307. package/dist/esm/utils/RoiLedger.js.map +1 -1
  308. package/dist/esm/utils/SavingsLedger.d.ts +27 -0
  309. package/dist/esm/utils/SavingsLedger.d.ts.map +1 -1
  310. package/dist/esm/utils/SavingsLedger.js +56 -2
  311. package/dist/esm/utils/SavingsLedger.js.map +1 -1
  312. package/dist/esm/utils/SharedLedgerStore.d.ts.map +1 -1
  313. package/dist/esm/utils/SharedLedgerStore.js +2 -1
  314. package/dist/esm/utils/SharedLedgerStore.js.map +1 -1
  315. package/dist/esm/utils/StoreDraft.d.ts +12 -0
  316. package/dist/esm/utils/StoreDraft.d.ts.map +1 -1
  317. package/dist/esm/utils/StoreDraft.js +52 -1
  318. package/dist/esm/utils/StoreDraft.js.map +1 -1
  319. package/dist/esm/utils/SurgicalASTInsert.d.ts.map +1 -1
  320. package/dist/esm/utils/SurgicalASTInsert.js +2 -1
  321. package/dist/esm/utils/SurgicalASTInsert.js.map +1 -1
  322. package/dist/esm/utils/SymbolSurgicalContext.d.ts +2 -0
  323. package/dist/esm/utils/SymbolSurgicalContext.d.ts.map +1 -1
  324. package/dist/esm/utils/SymbolSurgicalContext.js +2 -2
  325. package/dist/esm/utils/SymbolSurgicalContext.js.map +1 -1
  326. package/dist/esm/utils/Utf8Guard.d.ts +23 -0
  327. package/dist/esm/utils/Utf8Guard.d.ts.map +1 -0
  328. package/dist/esm/utils/Utf8Guard.js +74 -0
  329. package/dist/esm/utils/Utf8Guard.js.map +1 -0
  330. package/dist/esm/utils/WorkspaceSearch.d.ts.map +1 -1
  331. package/dist/esm/utils/WorkspaceSearch.js +26 -8
  332. package/dist/esm/utils/WorkspaceSearch.js.map +1 -1
  333. package/dist/esm/utils/reportSavings.d.ts +17 -4
  334. package/dist/esm/utils/reportSavings.d.ts.map +1 -1
  335. package/dist/esm/utils/reportSavings.js +65 -22
  336. package/dist/esm/utils/reportSavings.js.map +1 -1
  337. package/dist/esm/utils/tsLoader.d.ts +5 -0
  338. package/dist/esm/utils/tsLoader.d.ts.map +1 -0
  339. package/dist/esm/utils/tsLoader.js +13 -0
  340. package/dist/esm/utils/tsLoader.js.map +1 -0
  341. package/package.json +3 -2
  342. package/dashboard/dist/assets/index-CLXWgzTm.css +0 -1
  343. package/dashboard/dist/assets/index-CoMIMxyC.js +0 -451
  344. package/dist/cjs/infra/analyzers/DriftDetector.d.ts +0 -4
  345. package/dist/cjs/infra/analyzers/DriftDetector.d.ts.map +0 -1
  346. package/dist/cjs/infra/analyzers/DriftDetector.js +0 -88
  347. package/dist/cjs/infra/analyzers/DriftDetector.js.map +0 -1
  348. package/dist/cjs/infra/analyzers/InfraAnalyzer.d.ts +0 -3
  349. package/dist/cjs/infra/analyzers/InfraAnalyzer.d.ts.map +0 -1
  350. package/dist/cjs/infra/analyzers/InfraAnalyzer.js +0 -73
  351. package/dist/cjs/infra/analyzers/InfraAnalyzer.js.map +0 -1
  352. package/dist/cjs/infra/config.d.ts +0 -17
  353. package/dist/cjs/infra/config.d.ts.map +0 -1
  354. package/dist/cjs/infra/config.js +0 -111
  355. package/dist/cjs/infra/config.js.map +0 -1
  356. package/dist/cjs/infra/errorCause.d.ts +0 -36
  357. package/dist/cjs/infra/errorCause.d.ts.map +0 -1
  358. package/dist/cjs/infra/errorCause.js +0 -143
  359. package/dist/cjs/infra/errorCause.js.map +0 -1
  360. package/dist/cjs/infra/providers/InfraProvider.d.ts +0 -9
  361. package/dist/cjs/infra/providers/InfraProvider.d.ts.map +0 -1
  362. package/dist/cjs/infra/providers/InfraProvider.js +0 -3
  363. package/dist/cjs/infra/providers/InfraProvider.js.map +0 -1
  364. package/dist/cjs/infra/providers/JenkinsProvider.d.ts +0 -16
  365. package/dist/cjs/infra/providers/JenkinsProvider.d.ts.map +0 -1
  366. package/dist/cjs/infra/providers/JenkinsProvider.js +0 -193
  367. package/dist/cjs/infra/providers/JenkinsProvider.js.map +0 -1
  368. package/dist/cjs/infra/providers/OKDProvider.d.ts +0 -24
  369. package/dist/cjs/infra/providers/OKDProvider.d.ts.map +0 -1
  370. package/dist/cjs/infra/providers/OKDProvider.js +0 -296
  371. package/dist/cjs/infra/providers/OKDProvider.js.map +0 -1
  372. package/dist/cjs/infra/providers/TerraformProvider.d.ts +0 -17
  373. package/dist/cjs/infra/providers/TerraformProvider.d.ts.map +0 -1
  374. package/dist/cjs/infra/providers/TerraformProvider.js +0 -111
  375. package/dist/cjs/infra/providers/TerraformProvider.js.map +0 -1
  376. package/dist/cjs/infra/providers/index.d.ts +0 -9
  377. package/dist/cjs/infra/providers/index.d.ts.map +0 -1
  378. package/dist/cjs/infra/providers/index.js +0 -34
  379. package/dist/cjs/infra/providers/index.js.map +0 -1
  380. package/dist/cjs/infra/templates/jenkins/index.d.ts +0 -15
  381. package/dist/cjs/infra/templates/jenkins/index.d.ts.map +0 -1
  382. package/dist/cjs/infra/templates/jenkins/index.js +0 -128
  383. package/dist/cjs/infra/templates/jenkins/index.js.map +0 -1
  384. package/dist/cjs/infra/templates/okd/index.d.ts +0 -31
  385. package/dist/cjs/infra/templates/okd/index.d.ts.map +0 -1
  386. package/dist/cjs/infra/templates/okd/index.js +0 -149
  387. package/dist/cjs/infra/templates/okd/index.js.map +0 -1
  388. package/dist/esm/infra/analyzers/DriftDetector.d.ts +0 -4
  389. package/dist/esm/infra/analyzers/DriftDetector.d.ts.map +0 -1
  390. package/dist/esm/infra/analyzers/DriftDetector.js +0 -84
  391. package/dist/esm/infra/analyzers/DriftDetector.js.map +0 -1
  392. package/dist/esm/infra/analyzers/InfraAnalyzer.d.ts +0 -3
  393. package/dist/esm/infra/analyzers/InfraAnalyzer.d.ts.map +0 -1
  394. package/dist/esm/infra/analyzers/InfraAnalyzer.js +0 -70
  395. package/dist/esm/infra/analyzers/InfraAnalyzer.js.map +0 -1
  396. package/dist/esm/infra/config.d.ts +0 -17
  397. package/dist/esm/infra/config.d.ts.map +0 -1
  398. package/dist/esm/infra/config.js +0 -101
  399. package/dist/esm/infra/config.js.map +0 -1
  400. package/dist/esm/infra/errorCause.d.ts +0 -36
  401. package/dist/esm/infra/errorCause.d.ts.map +0 -1
  402. package/dist/esm/infra/errorCause.js +0 -138
  403. package/dist/esm/infra/errorCause.js.map +0 -1
  404. package/dist/esm/infra/providers/InfraProvider.d.ts +0 -9
  405. package/dist/esm/infra/providers/InfraProvider.d.ts.map +0 -1
  406. package/dist/esm/infra/providers/InfraProvider.js +0 -2
  407. package/dist/esm/infra/providers/InfraProvider.js.map +0 -1
  408. package/dist/esm/infra/providers/JenkinsProvider.d.ts +0 -16
  409. package/dist/esm/infra/providers/JenkinsProvider.d.ts.map +0 -1
  410. package/dist/esm/infra/providers/JenkinsProvider.js +0 -186
  411. package/dist/esm/infra/providers/JenkinsProvider.js.map +0 -1
  412. package/dist/esm/infra/providers/OKDProvider.d.ts +0 -24
  413. package/dist/esm/infra/providers/OKDProvider.d.ts.map +0 -1
  414. package/dist/esm/infra/providers/OKDProvider.js +0 -292
  415. package/dist/esm/infra/providers/OKDProvider.js.map +0 -1
  416. package/dist/esm/infra/providers/TerraformProvider.d.ts +0 -17
  417. package/dist/esm/infra/providers/TerraformProvider.d.ts.map +0 -1
  418. package/dist/esm/infra/providers/TerraformProvider.js +0 -107
  419. package/dist/esm/infra/providers/TerraformProvider.js.map +0 -1
  420. package/dist/esm/infra/providers/index.d.ts +0 -9
  421. package/dist/esm/infra/providers/index.d.ts.map +0 -1
  422. package/dist/esm/infra/providers/index.js +0 -27
  423. package/dist/esm/infra/providers/index.js.map +0 -1
  424. package/dist/esm/infra/templates/jenkins/index.d.ts +0 -15
  425. package/dist/esm/infra/templates/jenkins/index.d.ts.map +0 -1
  426. package/dist/esm/infra/templates/jenkins/index.js +0 -124
  427. package/dist/esm/infra/templates/jenkins/index.js.map +0 -1
  428. package/dist/esm/infra/templates/okd/index.d.ts +0 -31
  429. package/dist/esm/infra/templates/okd/index.d.ts.map +0 -1
  430. package/dist/esm/infra/templates/okd/index.js +0 -142
  431. package/dist/esm/infra/templates/okd/index.js.map +0 -1
@@ -17,6 +17,8 @@ import fs from 'fs';
17
17
  import path from 'path';
18
18
  import crypto from 'crypto';
19
19
  import { getSymbolSurgicalContext, normalizeForFreshness } from '../../utils/SymbolSurgicalContext.js';
20
+ import { findOtherLanguageSymbol, normalizeOtherLanguage, supportsOtherLanguage } from '../../utils/OtherLanguageSymbols.js';
21
+ import { isJsonFile, jsonKeyText } from '../../utils/JsonKeys.js';
20
22
  export class LocalFsResolver {
21
23
  constructor(rootDir = process.cwd()) {
22
24
  this.lane = 'A';
@@ -51,6 +53,36 @@ export class LocalFsResolver {
51
53
  }
52
54
  hashSymbol(pathStr, symbolName) {
53
55
  const abs = this.resolvePath(pathStr);
56
+ if (isJsonFile(abs)) {
57
+ // A JSON "symbol" is a dotted key path (`version`, `scripts.build`). Its value is hashed in
58
+ // canonical form, so reformatting or reordering keys does not count as a change.
59
+ try {
60
+ const text = jsonKeyText(abs, fs.readFileSync(abs, 'utf8'), symbolName);
61
+ if (text === null)
62
+ return { raw: 'MISSING', normalized: 'MISSING' };
63
+ const hash = crypto.createHash('sha256').update(text).digest('hex');
64
+ return { raw: hash, normalized: hash };
65
+ }
66
+ catch {
67
+ return { raw: 'MISSING', normalized: 'MISSING' };
68
+ }
69
+ }
70
+ if (supportsOtherLanguage(abs)) {
71
+ // Python, Go, Java… — the TypeScript compiler cannot read them, so a declaration locator
72
+ // does. A name it cannot place is MISSING, like a deleted symbol, and the memory goes stale.
73
+ try {
74
+ const text = findOtherLanguageSymbol(abs, fs.readFileSync(abs, 'utf8'), symbolName);
75
+ if (text === null)
76
+ return { raw: 'MISSING', normalized: 'MISSING' };
77
+ return {
78
+ raw: crypto.createHash('sha256').update(text).digest('hex'),
79
+ normalized: crypto.createHash('sha256').update(normalizeOtherLanguage(abs, text)).digest('hex'),
80
+ };
81
+ }
82
+ catch {
83
+ return { raw: 'MISSING', normalized: 'MISSING' };
84
+ }
85
+ }
54
86
  try {
55
87
  const ctx = getSymbolSurgicalContext(path.dirname(abs), path.basename(abs), symbolName);
56
88
  return {
@@ -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;AAKpG,MAAM,OAAO,eAAe;IAU1B,YAAY,UAAkB,OAAO,CAAC,GAAG,EAAE;QATlC,SAAI,GAAG,GAAG,CAAC;QAEpB,oFAAoF;QACpF,mFAAmF;QACnF,oFAAoF;QACpF,sFAAsF;QACtF,oEAAoE;QAC5D,cAAS,GAAG,IAAI,GAAG,EAA0B,CAAC;QAGpD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,gGAAgG;IACxF,WAAW,CAAC,CAAS;QAC3B,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAChE,CAAC;IAED,QAAQ,CAAC,OAAe;QACtB,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACvC,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC3E,OAAO,MAAM,CAAC,IAAI,CAAC;YACrB,CAAC;YACD,MAAM,IAAI,GAAG,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5F,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1E,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAC3B,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,UAAU,CAAC,OAAe,EAAE,UAAkB;QAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,CAAC;YACxF,OAAO;gBACL,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;gBACzE,UAAU,EAAE,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aACxG,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC;QACnD,CAAC;IACH,CAAC;CACF;AAED,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"LocalFsResolver.js","sourceRoot":"","sources":["../../../../src/subconscious/freshness/LocalFsResolver.ts"],"names":[],"mappings":"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"}
@@ -19,8 +19,16 @@ export interface FileDigest {
19
19
  total: number;
20
20
  /** One "• id (fresh, 3d ago): headline" line per memory shown, most relevant first. */
21
21
  lines: string[];
22
+ /** The ids those lines name — what the note actually offered the agent. */
23
+ ids: string[];
22
24
  failedCount: number;
23
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[];
24
32
  /**
25
33
  * Relevance without a query to rank against: a failed approach first (repeating it is the
26
34
  * costliest mistake), then memories someone wrote on purpose over commit-log ingests (a hub
@@ -1 +1 @@
1
- {"version":3,"file":"recallDigest.d.ts","sourceRoot":"","sources":["../../../src/subconscious/recallDigest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAG5D;;;;;;;;;GASG;AAEH,eAAO,MAAM,UAAU,IAAI,CAAC;AAG5B,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,WAAW,GAAG,QAAQ,CAAC;CAClC;AAED,MAAM,WAAW,UAAU;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,uFAAuF;IACvF,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAOD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,SAAS,EAAE,CAoB9E;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,GAAG,SAAa,GAAG,UAAU,CAkBjG;AAED,yEAAyE;AACzE,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,CAY5E"}
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"}
@@ -16,6 +16,17 @@ function headline(query) {
16
16
  const q = query.replace(/\s+/g, ' ').trim();
17
17
  return q.length > HEADLINE_MAX ? `${q.slice(0, HEADLINE_MAX - 1)}…` : q;
18
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
+ }
19
30
  /**
20
31
  * Relevance without a query to rank against: a failed approach first (repeating it is the
21
32
  * costliest mistake), then memories someone wrote on purpose over commit-log ingests (a hub
@@ -59,7 +70,7 @@ export function digestFileHits(brain, hits, max = DIGEST_MAX) {
59
70
  const failed = h.outcome === 'failed' ? ', FAILED approach' : '';
60
71
  return ` • ${h.id} (${verdict}, ${age}${failed}): ${headline(h.query)}`;
61
72
  });
62
- return { total: hits.length, lines, failedCount: hits.filter((h) => h.outcome === 'failed').length };
73
+ return { total: hits.length, lines, ids: top.map((h) => h.id), failedCount: hits.filter((h) => h.outcome === 'failed').length };
63
74
  }
64
75
  /** The full note: header, the digest lines, and what to do with them. */
65
76
  export function formatFileDigest(subject, digest) {
@@ -1 +1 @@
1
- {"version":3,"file":"recallDigest.js","sourceRoot":"","sources":["../../../src/subconscious/recallDigest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"recallDigest.js","sourceRoot":"","sources":["../../../src/subconscious/recallDigest.ts"],"names":[],"mappings":"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"}
@@ -37,11 +37,7 @@ export interface AffectedTestsResult {
37
37
  /** Changed files absent from the import graph — their blast radius is unknown. */
38
38
  ungraphed: string[];
39
39
  }
40
- /**
41
- * Files changed versus a base ref, from git. Includes the working tree (staged and
42
- * unstaged) because the whole point is to test edits that have not been committed yet.
43
- */
44
- export declare function changedFilesFromGit(workspaceRoot: string, baseRef?: string): string[];
40
+ export { changedFilesFromGit } from "./GitChanges.js";
45
41
  export interface AffectedTestsOptions {
46
42
  workspaceRoot: string;
47
43
  /** Explicit file list; when omitted the diff is read from git. */
@@ -1 +1 @@
1
- {"version":3,"file":"AffectedTests.d.ts","sourceRoot":"","sources":["../../../src/utils/AffectedTests.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAWH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE/C;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEvD,MAAM,WAAW,mBAAmB;IAClC,sDAAsD;IACtD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,uFAAuF;IACvF,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,qEAAqE;IACrE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,qFAAqF;IACrF,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,UAAU,CAAC;IACnB,oGAAoG;IACpG,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,+EAA+E;IAC/E,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,kFAAkF;IAClF,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAeD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,aAAa,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CA0BrF;AAmED,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,oBAAoB,GAAG,mBAAmB,CAmEpF;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CA4BvE"}
1
+ {"version":3,"file":"AffectedTests.d.ts","sourceRoot":"","sources":["../../../src/utils/AffectedTests.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAUH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAE/C;AAED,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEvD,MAAM,WAAW,mBAAmB;IAClC,sDAAsD;IACtD,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,uFAAuF;IACvF,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,qEAAqE;IACrE,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,qFAAqF;IACrF,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,UAAU,CAAC;IACnB,oGAAoG;IACpG,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,+EAA+E;IAC/E,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,kFAAkF;IAClF,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB;AAeD,OAAO,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAoEnD,MAAM,WAAW,oBAAoB;IACnC,aAAa,EAAE,MAAM,CAAC;IACtB,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,iEAAiE;IACjE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,oBAAoB,GAAG,mBAAmB,CAmEpF;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CA4BvE"}
@@ -20,7 +20,6 @@
20
20
  */
21
21
  import fs from "fs";
22
22
  import path from "path";
23
- import { execFileSync } from "child_process";
24
23
  import { buildDepGraphMap } from "./DepGraph.js";
25
24
  /** A file is a test if its name says so, or if it lives in a conventional test directory. */
26
25
  const TEST_FILE_RE = /(\.|_)(test|spec)\.[tj]sx?$/;
@@ -43,40 +42,8 @@ function detectRunner(workspaceRoot) {
43
42
  }
44
43
  return "unknown";
45
44
  }
46
- /**
47
- * Files changed versus a base ref, from git. Includes the working tree (staged and
48
- * unstaged) because the whole point is to test edits that have not been committed yet.
49
- */
50
- export function changedFilesFromGit(workspaceRoot, baseRef) {
51
- const run = (args) => {
52
- try {
53
- // stderr is discarded rather than inherited: outside a repo git writes its full usage
54
- // text to the parent's stderr, which is noise for a case we already handle by returning [].
55
- const out = execFileSync("git", args, {
56
- cwd: workspaceRoot,
57
- encoding: "utf8",
58
- timeout: 15000,
59
- stdio: ["ignore", "pipe", "ignore"],
60
- });
61
- return out.split("\n").map((l) => l.trim()).filter(Boolean);
62
- }
63
- catch {
64
- return [];
65
- }
66
- };
67
- const files = new Set();
68
- // Working tree against HEAD, plus untracked files — an entirely new module is a change
69
- // even though `git diff` never mentions it.
70
- for (const f of run(["diff", "--name-only", "HEAD"]))
71
- files.add(f);
72
- for (const f of run(["ls-files", "--others", "--exclude-standard"]))
73
- files.add(f);
74
- if (baseRef) {
75
- for (const f of run(["diff", "--name-only", `${baseRef}...HEAD`]))
76
- files.add(f);
77
- }
78
- return [...files];
79
- }
45
+ export { changedFilesFromGit } from "./GitChanges.js";
46
+ import { changedFilesFromGit } from "./GitChanges.js";
80
47
  /**
81
48
  * Walk reverse import edges from every changed file and collect the test files reached.
82
49
  *
@@ -1 +1 @@
1
- {"version":3,"file":"AffectedTests.js","sourceRoot":"","sources":["../../../src/utils/AffectedTests.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AffectedTests.js","sourceRoot":"","sources":["../../../src/utils/AffectedTests.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * State files (ledger, stats, free-tier counter) used to be written in place with writeFileSync.
3
+ * A crash or a second process mid-write leaves truncated JSON; the loader then swallowed the parse
4
+ * error, started from empty and the next save overwrote whatever was left. For the usage counter
5
+ * that also reset the monthly quota.
6
+ */
7
+ /** Writes via a temp file in the same directory and renames it over `target`, so readers see the old or the new file, never half of one. */
8
+ export declare function writeFileAtomic(target: string, data: string): void;
9
+ /**
10
+ * Moves an unreadable state file to `<file>.corrupt-<time>` so the next save cannot destroy it.
11
+ * Returns the new path, or null when the move itself failed.
12
+ */
13
+ export declare function quarantineCorrupt(file: string): string | null;
14
+ //# sourceMappingURL=AtomicFile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AtomicFile.d.ts","sourceRoot":"","sources":["../../../src/utils/AtomicFile.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,4IAA4I;AAC5I,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CASlE;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQ7D"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * State files (ledger, stats, free-tier counter) used to be written in place with writeFileSync.
3
+ * A crash or a second process mid-write leaves truncated JSON; the loader then swallowed the parse
4
+ * error, started from empty and the next save overwrote whatever was left. For the usage counter
5
+ * that also reset the monthly quota.
6
+ */
7
+ import fs from 'fs';
8
+ /** Writes via a temp file in the same directory and renames it over `target`, so readers see the old or the new file, never half of one. */
9
+ export function writeFileAtomic(target, data) {
10
+ const tmp = `${target}.tmp.${process.pid}.${Date.now().toString(36)}`;
11
+ try {
12
+ fs.writeFileSync(tmp, data, 'utf8');
13
+ fs.renameSync(tmp, target);
14
+ }
15
+ catch (err) {
16
+ try {
17
+ fs.unlinkSync(tmp);
18
+ }
19
+ catch { }
20
+ throw err;
21
+ }
22
+ }
23
+ /**
24
+ * Moves an unreadable state file to `<file>.corrupt-<time>` so the next save cannot destroy it.
25
+ * Returns the new path, or null when the move itself failed.
26
+ */
27
+ export function quarantineCorrupt(file) {
28
+ const dest = `${file}.corrupt-${Date.now().toString(36)}`;
29
+ try {
30
+ fs.renameSync(file, dest);
31
+ return dest;
32
+ }
33
+ catch {
34
+ return null;
35
+ }
36
+ }
37
+ //# sourceMappingURL=AtomicFile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AtomicFile.js","sourceRoot":"","sources":["../../../src/utils/AtomicFile.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,4IAA4I;AAC5I,MAAM,UAAU,eAAe,CAAC,MAAc,EAAE,IAAY;IAC1D,MAAM,GAAG,GAAG,GAAG,MAAM,QAAQ,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;IACtE,IAAI,CAAC;QACH,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;QACpC,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC;YAAC,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;QAAC,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACpC,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,MAAM,IAAI,GAAG,GAAG,IAAI,YAAY,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;IAC1D,IAAI,CAAC;QACH,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC1B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
@@ -61,7 +61,7 @@ export function autoContextBundle(filePath, projectRoot) {
61
61
  const fpResult = computeFingerprint(filePath, projectRoot);
62
62
  const resolved = path.resolve(projectRoot, filePath);
63
63
  const content = fs.existsSync(resolved)
64
- ? squeezeCode(fpResult.content || fs.readFileSync(resolved, 'utf8'))
64
+ ? squeezeCode(fpResult.content || fs.readFileSync(resolved, 'utf8'), filePath)
65
65
  : '';
66
66
  const importTree = buildImportTree(filePath, projectRoot, 1);
67
67
  const rootNode = importTree.nodes.find(n => n.file === filePath);
@@ -1 +1 @@
1
- {"version":3,"file":"AutoContextBundle.js","sourceRoot":"","sources":["../../../src/utils/AutoContextBundle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AutoContextBundle.js","sourceRoot":"","sources":["../../../src/utils/AutoContextBundle.ts"],"names":[],"mappings":"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"}
@@ -24,7 +24,7 @@ export function bulkFileDigest(filePaths, projectRoot, query = '', maxTotalToken
24
24
  if (!fs.existsSync(resolved))
25
25
  return { fp, content: '', tokens: 0, hash: fpResult.hash };
26
26
  const raw = fpResult.content || fs.readFileSync(resolved, 'utf8');
27
- const squeezed = squeezeCode(raw);
27
+ const squeezed = squeezeCode(raw, fp);
28
28
  return { fp, content: squeezed, tokens: estimateTokens(squeezed), hash: fpResult.hash };
29
29
  });
30
30
  const scored = entries.map(e => ({
@@ -1 +1 @@
1
- {"version":3,"file":"BulkFileDigest.js","sourceRoot":"","sources":["../../../src/utils/BulkFileDigest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAehD,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,cAAc,CAAC,IAAY,EAAE,KAAa;IACjD,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,CAAC;IACrB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IACjC,MAAM,MAAM,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAChE,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IACjG,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,SAAmB,EACnB,WAAmB,EACnB,QAAgB,EAAE,EAClB,iBAAyB,IAAI;IAE7B,MAAM,OAAO,GAAqB,EAAE,CAAC;IAErC,MAAM,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE;QACjC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,EAAE,EAAE,WAAW,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;QACzF,MAAM,GAAG,GAAG,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAClE,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;QAClC,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,cAAc,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC1F,CAAC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/B,GAAG,CAAC;QACJ,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC;KAC5C,CAAC,CAAC,CAAC;IAEJ,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC;IAEjD,IAAI,eAAe,GAAG,cAAc,CAAC;IACrC,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;QACvB,IAAI,eAAe,IAAI,CAAC;YAAE,MAAM;QAChC,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QAC1D,MAAM,SAAS,GAAG,aAAa,GAAG,CAAC,CAAC,MAAM,CAAC;QAC3C,MAAM,OAAO,GAAG,SAAS;YACvB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,GAAG,CAAC,CAAC,GAAG,mBAAmB;YAC7D,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACd,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,CAAC,CAAC,EAAE;YACV,OAAO,EAAE,OAAO;YAChB,UAAU,EAAE,aAAa;YACzB,SAAS;SACV,CAAC,CAAC;QACH,eAAe,IAAI,aAAa,CAAC;IACnC,CAAC;IAED,OAAO;QACL,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,cAAc,GAAG,eAAe;QAC7C,KAAK;KACN,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"BulkFileDigest.js","sourceRoot":"","sources":["../../../src/utils/BulkFileDigest.ts"],"names":[],"mappings":"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"}
@@ -20,7 +20,13 @@ export interface SqueezeResult {
20
20
  * a glob such as `src/**\/*.ts` (leaving `src*.ts`). Anything the scanner is unsure about is kept:
21
21
  * a stray comment costs a few tokens, a wrongly deleted line misleads the reader.
22
22
  */
23
- export declare function stripComments(code: string): string;
23
+ export interface CommentOptions {
24
+ /** `// …` is a comment (JS family, C family, Go, Rust, SCSS…). Off for CSS, Markdown, YAML… */
25
+ line?: boolean;
26
+ /** `/* … *\/` is a comment. */
27
+ block?: boolean;
28
+ }
29
+ export declare function stripComments(code: string, options?: CommentOptions): string;
24
30
  /**
25
31
  * Compress code structure by removing redundant whitespace and blank lines
26
32
  */
@@ -32,9 +38,34 @@ export declare function detectFunctionDeclaration(context: string): string | nul
32
38
  */
33
39
  export declare function treeShakeCode(code: string, query: string): string;
34
40
  /**
35
- * Squeezes a block of source code
41
+ * Drops blank lines and trailing spaces and nothing else. For languages where indentation IS the
42
+ * structure (Python, YAML, Makefile tabs) and for prose, where collapsing leading whitespace turns
43
+ * `if x:\n return 1\nelse:\n return 2` into four lines at one level and a nested YAML tree
44
+ * into a flat list, which a reader then misinterprets without any sign that it was altered.
45
+ */
46
+ export declare function compactKeepIndent(code: string): string;
47
+ /** What squeezing may do to a file, decided by what kind of file it is. */
48
+ interface SqueezeProfile {
49
+ lineComments: boolean;
50
+ blockComments: boolean;
51
+ htmlComments: boolean;
52
+ imports: boolean;
53
+ /** `#` instead of `//` for the marker that lists the removed imports. */
54
+ hashMarker: boolean;
55
+ keepIndent: boolean;
56
+ }
57
+ export declare function squeezeProfileFor(filePath: string): SqueezeProfile;
58
+ /**
59
+ * Squeezes a block of source code.
60
+ *
61
+ * With a `filePath` the rules follow the kind of file: `//` and `/* *\/` are only comments where
62
+ * the language says so, import lines are only listed away in languages that have them, and
63
+ * indentation is only collapsed where it carries no meaning. The rules used to be JavaScript's for
64
+ * every file, which cut Markdown prose at the first `//`, lost the rest of a CSS line after
65
+ * `url(//cdn…)`, and flattened Python and YAML. Without a path (a clipboard paste, a prompt) the
66
+ * old JavaScript-family behaviour applies.
36
67
  */
37
- export declare function squeezeCode(code: string): string;
68
+ export declare function squeezeCode(code: string, filePath?: string): string;
38
69
  /**
39
70
  * Detects the file path from the first line comment inside a code block
40
71
  */
@@ -84,7 +115,7 @@ export declare function pruneHistoryMessages(messages: any[], options?: {
84
115
  /**
85
116
  * Strip import statements and require declarations from JavaScript, TypeScript, Python and CSS code
86
117
  */
87
- export declare function stripImports(code: string): string;
118
+ export declare function stripImports(code: string, markerPrefix?: '//' | '#'): string;
88
119
  /**
89
120
  * Generate a highly compact, unified line-by-line diff between two versions of code blocks
90
121
  */
@@ -98,4 +129,5 @@ export declare function filterHighDensityRAG(prompt: string, query: string): str
98
129
  * Detects and collapses consecutive repeating lines in logs, stack traces or terminal dumps.
99
130
  */
100
131
  export declare function collapseRepetitiveLogs(text: string): string;
132
+ export {};
101
133
  //# sourceMappingURL=ContextSqueezer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ContextSqueezer.d.ts","sourceRoot":"","sources":["../../../src/utils/ContextSqueezer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA4GlD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOtD;AAGD,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA0BxE;AAED;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAoEjE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIhD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAa1D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,MAAW,EAClB,WAAW,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAChC,aAAa,CAiEf;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,GAAG,GAAG,MAAM,CA0BvD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,GAAG,EAAE,GAAG,GAAG,EAAE,CAkDtD;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,GAAG,EAAE,CAAC;IAChB,mBAAmB,EAAE,MAAM,CAAC;IAC5B;;;;;OAKG;IACH,yBAAyB,EAAE,MAAM,CAAC;IAClC,gGAAgG;IAChG,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,GAAG,EAAE,EAAE,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,kBAAkB,CA+E3G;AAsDD;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA2CjD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAoExE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAiD1E;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAiC3D"}
1
+ {"version":3,"file":"ContextSqueezer.d.ts","sourceRoot":"","sources":["../../../src/utils/ContextSqueezer.ts"],"names":[],"mappings":"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"}
@@ -5,16 +5,9 @@
5
5
  * semantic minimum by stripping comments, excessive whitespace, and boilerplate,
6
6
  * saving up to 80% of token consumption in LLM context windows.
7
7
  */
8
- /**
9
- * Remove single-line and multi-line comments from JavaScript/TypeScript/JSON/CSS code.
10
- *
11
- * A scanner, not a pair of regexes: `//` and `/*` inside a string, a template literal or a regex
12
- * literal are not comments. The previous implementation cut every line at its first `//`, so
13
- * `` `file://${path}` `` lost the rest of its line, and its `/* … *\/` regex deleted the `/**\/` in
14
- * a glob such as `src/**\/*.ts` (leaving `src*.ts`). Anything the scanner is unsure about is kept:
15
- * a stray comment costs a few tokens, a wrongly deleted line misleads the reader.
16
- */
17
- export function stripComments(code) {
8
+ export function stripComments(code, options = {}) {
9
+ const lineComments = options.line !== false;
10
+ const blockComments = options.block !== false;
18
11
  const n = code.length;
19
12
  let out = '';
20
13
  let i = 0;
@@ -128,14 +121,15 @@ export function stripComments(code) {
128
121
  copyTemplate();
129
122
  continue;
130
123
  }
131
- if (c === '/' && d === '*') {
124
+ if (c === '/' && d === '*' && blockComments) {
132
125
  const end = code.indexOf('*/', i + 2);
133
126
  i = end === -1 ? n : end + 2; // block comment: removed entirely, newlines included
134
127
  continue;
135
128
  }
136
- if (c === '/' && d === '/') {
137
- // `scheme://` is a URL, not a comment (http, https, file, ws, s3, …).
138
- if (code[i - 1] === ':' && /[a-z][a-z0-9+.-]*:$/i.test(out.slice(-24))) {
129
+ if (c === '/' && d === '/' && lineComments) {
130
+ // `scheme://` is a URL, not a comment (http, https, file, ws, s3, …); so is the
131
+ // protocol-relative `url(//cdn.example.com/a.png)` of a stylesheet.
132
+ if ((code[i - 1] === ':' && /[a-z][a-z0-9+.-]*:$/i.test(out.slice(-24))) || /url\(\s*['"]?$/i.test(out.slice(-12))) {
139
133
  out += '//';
140
134
  i += 2;
141
135
  continue;
@@ -248,12 +242,64 @@ export function treeShakeCode(code, query) {
248
242
  return compactWhitespace(resultLines.join('\n'));
249
243
  }
250
244
  /**
251
- * Squeezes a block of source code
245
+ * Drops blank lines and trailing spaces and nothing else. For languages where indentation IS the
246
+ * structure (Python, YAML, Makefile tabs) and for prose, where collapsing leading whitespace turns
247
+ * `if x:\n return 1\nelse:\n return 2` into four lines at one level and a nested YAML tree
248
+ * into a flat list, which a reader then misinterprets without any sign that it was altered.
252
249
  */
253
- export function squeezeCode(code) {
254
- const withoutComments = stripComments(code);
255
- const withoutImports = stripImports(withoutComments);
256
- return compactWhitespace(withoutImports);
250
+ export function compactKeepIndent(code) {
251
+ return code
252
+ .split('\n')
253
+ .map((line) => line.trimEnd())
254
+ .filter((line) => line.trim().length > 0)
255
+ .join('\n');
256
+ }
257
+ const BRACE = { lineComments: true, blockComments: true, htmlComments: false, imports: true, hashMarker: false, keepIndent: false };
258
+ const SCSS = { ...BRACE, imports: true };
259
+ const CSS = { ...BRACE, lineComments: false };
260
+ const PYTHON = { lineComments: false, blockComments: false, htmlComments: false, imports: true, hashMarker: true, keepIndent: true };
261
+ const MARKUP = { lineComments: false, blockComments: false, htmlComments: true, imports: false, hashMarker: false, keepIndent: false };
262
+ const JSON_LIKE = { lineComments: false, blockComments: false, htmlComments: false, imports: false, hashMarker: false, keepIndent: false };
263
+ /** Prose, YAML, shell, SQL, Ruby, Makefiles, unknown: nothing is a comment we can be sure of. */
264
+ const PLAIN = { lineComments: false, blockComments: false, htmlComments: false, imports: false, hashMarker: false, keepIndent: true };
265
+ const BRACE_EXT = /\.(?:[cm]?[jt]sx?|java|c|h|cc|cpp|cxx|hpp|hh|cs|go|rs|swift|kt|kts|scala|dart|php|m|mm|groovy)$/i;
266
+ export function squeezeProfileFor(filePath) {
267
+ const f = filePath.toLowerCase();
268
+ if (BRACE_EXT.test(f))
269
+ return BRACE;
270
+ if (/\.(?:scss|less|sass)$/.test(f))
271
+ return SCSS;
272
+ if (/\.css$/.test(f))
273
+ return CSS;
274
+ if (/\.pyi?$/.test(f))
275
+ return PYTHON;
276
+ if (/\.(?:html?|xml|svg|vue|svelte|xhtml)$/.test(f))
277
+ return MARKUP;
278
+ if (/\.(?:json|jsonl|ndjson|geojson)$/.test(f))
279
+ return JSON_LIKE;
280
+ return PLAIN;
281
+ }
282
+ /**
283
+ * Squeezes a block of source code.
284
+ *
285
+ * With a `filePath` the rules follow the kind of file: `//` and `/* *\/` are only comments where
286
+ * the language says so, import lines are only listed away in languages that have them, and
287
+ * indentation is only collapsed where it carries no meaning. The rules used to be JavaScript's for
288
+ * every file, which cut Markdown prose at the first `//`, lost the rest of a CSS line after
289
+ * `url(//cdn…)`, and flattened Python and YAML. Without a path (a clipboard paste, a prompt) the
290
+ * old JavaScript-family behaviour applies.
291
+ */
292
+ export function squeezeCode(code, filePath) {
293
+ const profile = filePath ? squeezeProfileFor(filePath) : BRACE;
294
+ let out = code;
295
+ if (profile.lineComments || profile.blockComments) {
296
+ out = stripComments(out, { line: profile.lineComments, block: profile.blockComments });
297
+ }
298
+ if (profile.htmlComments)
299
+ out = out.replace(/<!--[\s\S]*?-->/g, '');
300
+ if (profile.imports)
301
+ out = stripImports(out, profile.hashMarker ? '#' : '//');
302
+ return profile.keepIndent ? compactKeepIndent(out) : compactWhitespace(out);
257
303
  }
258
304
  /**
259
305
  * Detects the file path from the first line comment inside a code block
@@ -553,7 +599,7 @@ function isImportLine(trimmed) {
553
599
  /**
554
600
  * Strip import statements and require declarations from JavaScript, TypeScript, Python and CSS code
555
601
  */
556
- export function stripImports(code) {
602
+ export function stripImports(code, markerPrefix = '//') {
557
603
  const lines = code.split('\n');
558
604
  let removedCount = 0;
559
605
  const specifiers = [];
@@ -593,7 +639,7 @@ export function stripImports(code) {
593
639
  const detail = specifiers.length > 0 ? `: ${listed}${extra}` : '';
594
640
  // Keep a shebang first: a header above it turns `#!/usr/bin/env node` into a syntax error.
595
641
  const at = processedLines.length > 0 && processedLines[0].startsWith('#!') ? 1 : 0;
596
- processedLines.splice(at, 0, `// [Lemma Squeezer: Squeezed ${removedCount} import/dependency lines${detail}]`);
642
+ processedLines.splice(at, 0, `${markerPrefix} [Lemma Squeezer: Squeezed ${removedCount} import/dependency lines${detail}]`);
597
643
  }
598
644
  return processedLines.join('\n');
599
645
  }