distill-mcp 0.6.0-beta

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 (440) hide show
  1. package/bin/cli.js +133 -0
  2. package/dist/analytics/session-tracker.d.ts +74 -0
  3. package/dist/analytics/session-tracker.d.ts.map +1 -0
  4. package/dist/analytics/session-tracker.js +123 -0
  5. package/dist/ast/benchmark.test.d.ts +7 -0
  6. package/dist/ast/benchmark.test.d.ts.map +1 -0
  7. package/dist/ast/benchmark.test.js +175 -0
  8. package/dist/ast/go/index.d.ts +9 -0
  9. package/dist/ast/go/index.d.ts.map +1 -0
  10. package/dist/ast/go/index.js +8 -0
  11. package/dist/ast/go/parser.d.ts +31 -0
  12. package/dist/ast/go/parser.d.ts.map +1 -0
  13. package/dist/ast/go/parser.js +428 -0
  14. package/dist/ast/go/parser.test.d.ts +5 -0
  15. package/dist/ast/go/parser.test.d.ts.map +1 -0
  16. package/dist/ast/go/parser.test.js +241 -0
  17. package/dist/ast/go/queries.d.ts +51 -0
  18. package/dist/ast/go/queries.d.ts.map +1 -0
  19. package/dist/ast/go/queries.js +114 -0
  20. package/dist/ast/go/utils.d.ts +66 -0
  21. package/dist/ast/go/utils.d.ts.map +1 -0
  22. package/dist/ast/go/utils.js +140 -0
  23. package/dist/ast/index.d.ts +39 -0
  24. package/dist/ast/index.d.ts.map +1 -0
  25. package/dist/ast/index.js +245 -0
  26. package/dist/ast/php/index.d.ts +9 -0
  27. package/dist/ast/php/index.d.ts.map +1 -0
  28. package/dist/ast/php/index.js +8 -0
  29. package/dist/ast/php/parser.d.ts +31 -0
  30. package/dist/ast/php/parser.d.ts.map +1 -0
  31. package/dist/ast/php/parser.js +388 -0
  32. package/dist/ast/php/parser.test.d.ts +5 -0
  33. package/dist/ast/php/parser.test.d.ts.map +1 -0
  34. package/dist/ast/php/parser.test.js +328 -0
  35. package/dist/ast/php/queries.d.ts +61 -0
  36. package/dist/ast/php/queries.d.ts.map +1 -0
  37. package/dist/ast/php/queries.js +117 -0
  38. package/dist/ast/php/utils.d.ts +83 -0
  39. package/dist/ast/php/utils.d.ts.map +1 -0
  40. package/dist/ast/php/utils.js +246 -0
  41. package/dist/ast/python/index.d.ts +9 -0
  42. package/dist/ast/python/index.d.ts.map +1 -0
  43. package/dist/ast/python/index.js +8 -0
  44. package/dist/ast/python/parser.d.ts +32 -0
  45. package/dist/ast/python/parser.d.ts.map +1 -0
  46. package/dist/ast/python/parser.js +422 -0
  47. package/dist/ast/python/parser.test.d.ts +5 -0
  48. package/dist/ast/python/parser.test.d.ts.map +1 -0
  49. package/dist/ast/python/parser.test.js +186 -0
  50. package/dist/ast/python/queries.d.ts +73 -0
  51. package/dist/ast/python/queries.d.ts.map +1 -0
  52. package/dist/ast/python/queries.js +137 -0
  53. package/dist/ast/python/utils.d.ts +63 -0
  54. package/dist/ast/python/utils.d.ts.map +1 -0
  55. package/dist/ast/python/utils.js +159 -0
  56. package/dist/ast/quick-scan.d.ts +40 -0
  57. package/dist/ast/quick-scan.d.ts.map +1 -0
  58. package/dist/ast/quick-scan.js +287 -0
  59. package/dist/ast/rust/index.d.ts +9 -0
  60. package/dist/ast/rust/index.d.ts.map +1 -0
  61. package/dist/ast/rust/index.js +8 -0
  62. package/dist/ast/rust/parser.d.ts +31 -0
  63. package/dist/ast/rust/parser.d.ts.map +1 -0
  64. package/dist/ast/rust/parser.js +416 -0
  65. package/dist/ast/rust/parser.test.d.ts +5 -0
  66. package/dist/ast/rust/parser.test.d.ts.map +1 -0
  67. package/dist/ast/rust/parser.test.js +329 -0
  68. package/dist/ast/rust/queries.d.ts +66 -0
  69. package/dist/ast/rust/queries.d.ts.map +1 -0
  70. package/dist/ast/rust/queries.js +132 -0
  71. package/dist/ast/rust/utils.d.ts +91 -0
  72. package/dist/ast/rust/utils.d.ts.map +1 -0
  73. package/dist/ast/rust/utils.js +254 -0
  74. package/dist/ast/swift/index.d.ts +10 -0
  75. package/dist/ast/swift/index.d.ts.map +1 -0
  76. package/dist/ast/swift/index.js +8 -0
  77. package/dist/ast/swift/parser.d.ts +31 -0
  78. package/dist/ast/swift/parser.d.ts.map +1 -0
  79. package/dist/ast/swift/parser.js +554 -0
  80. package/dist/ast/swift/parser.test.d.ts +5 -0
  81. package/dist/ast/swift/parser.test.d.ts.map +1 -0
  82. package/dist/ast/swift/parser.test.js +398 -0
  83. package/dist/ast/swift/queries.d.ts +71 -0
  84. package/dist/ast/swift/queries.d.ts.map +1 -0
  85. package/dist/ast/swift/queries.js +137 -0
  86. package/dist/ast/swift/utils.d.ts +94 -0
  87. package/dist/ast/swift/utils.d.ts.map +1 -0
  88. package/dist/ast/swift/utils.js +411 -0
  89. package/dist/ast/types.d.ts +96 -0
  90. package/dist/ast/types.d.ts.map +1 -0
  91. package/dist/ast/types.js +21 -0
  92. package/dist/ast/typescript.d.ts +24 -0
  93. package/dist/ast/typescript.d.ts.map +1 -0
  94. package/dist/ast/typescript.js +357 -0
  95. package/dist/cache/file-hash.d.ts +33 -0
  96. package/dist/cache/file-hash.d.ts.map +1 -0
  97. package/dist/cache/file-hash.js +59 -0
  98. package/dist/cache/index.d.ts +9 -0
  99. package/dist/cache/index.d.ts.map +1 -0
  100. package/dist/cache/index.js +8 -0
  101. package/dist/cache/smart-cache.d.ts +68 -0
  102. package/dist/cache/smart-cache.d.ts.map +1 -0
  103. package/dist/cache/smart-cache.js +266 -0
  104. package/dist/cache/types.d.ts +102 -0
  105. package/dist/cache/types.d.ts.map +1 -0
  106. package/dist/cache/types.js +6 -0
  107. package/dist/cli/analyze.d.ts +43 -0
  108. package/dist/cli/analyze.d.ts.map +1 -0
  109. package/dist/cli/analyze.js +250 -0
  110. package/dist/cli/doctor.d.ts +2 -0
  111. package/dist/cli/doctor.d.ts.map +1 -0
  112. package/dist/cli/doctor.js +127 -0
  113. package/dist/cli/hooks.d.ts +14 -0
  114. package/dist/cli/hooks.d.ts.map +1 -0
  115. package/dist/cli/hooks.js +229 -0
  116. package/dist/cli/index.d.ts +5 -0
  117. package/dist/cli/index.d.ts.map +1 -0
  118. package/dist/cli/index.js +4 -0
  119. package/dist/cli/setup.d.ts +10 -0
  120. package/dist/cli/setup.d.ts.map +1 -0
  121. package/dist/cli/setup.js +117 -0
  122. package/dist/cli/utils.d.ts +30 -0
  123. package/dist/cli/utils.d.ts.map +1 -0
  124. package/dist/cli/utils.js +116 -0
  125. package/dist/compressors/config.d.ts +9 -0
  126. package/dist/compressors/config.d.ts.map +1 -0
  127. package/dist/compressors/config.js +183 -0
  128. package/dist/compressors/conversation.d.ts +109 -0
  129. package/dist/compressors/conversation.d.ts.map +1 -0
  130. package/dist/compressors/conversation.js +404 -0
  131. package/dist/compressors/diff.d.ts +35 -0
  132. package/dist/compressors/diff.d.ts.map +1 -0
  133. package/dist/compressors/diff.js +389 -0
  134. package/dist/compressors/generic.d.ts +9 -0
  135. package/dist/compressors/generic.d.ts.map +1 -0
  136. package/dist/compressors/generic.js +188 -0
  137. package/dist/compressors/index.d.ts +31 -0
  138. package/dist/compressors/index.d.ts.map +1 -0
  139. package/dist/compressors/index.js +82 -0
  140. package/dist/compressors/logs.d.ts +9 -0
  141. package/dist/compressors/logs.d.ts.map +1 -0
  142. package/dist/compressors/logs.js +245 -0
  143. package/dist/compressors/multifile.d.ts +106 -0
  144. package/dist/compressors/multifile.d.ts.map +1 -0
  145. package/dist/compressors/multifile.js +498 -0
  146. package/dist/compressors/semantic.d.ts +33 -0
  147. package/dist/compressors/semantic.d.ts.map +1 -0
  148. package/dist/compressors/semantic.js +233 -0
  149. package/dist/compressors/stacktrace.d.ts +9 -0
  150. package/dist/compressors/stacktrace.d.ts.map +1 -0
  151. package/dist/compressors/stacktrace.js +259 -0
  152. package/dist/compressors/types.d.ts +146 -0
  153. package/dist/compressors/types.d.ts.map +1 -0
  154. package/dist/compressors/types.js +6 -0
  155. package/dist/config/output-config.d.ts +56 -0
  156. package/dist/config/output-config.d.ts.map +1 -0
  157. package/dist/config/output-config.js +78 -0
  158. package/dist/index.d.ts +21 -0
  159. package/dist/index.d.ts.map +1 -0
  160. package/dist/index.js +27 -0
  161. package/dist/middleware/chain.d.ts +49 -0
  162. package/dist/middleware/chain.d.ts.map +1 -0
  163. package/dist/middleware/chain.js +126 -0
  164. package/dist/middleware/index.d.ts +4 -0
  165. package/dist/middleware/index.d.ts.map +1 -0
  166. package/dist/middleware/index.js +3 -0
  167. package/dist/middleware/logging.d.ts +8 -0
  168. package/dist/middleware/logging.d.ts.map +1 -0
  169. package/dist/middleware/logging.js +71 -0
  170. package/dist/middleware/types.d.ts +58 -0
  171. package/dist/middleware/types.d.ts.map +1 -0
  172. package/dist/middleware/types.js +7 -0
  173. package/dist/parsers/eslint.d.ts +8 -0
  174. package/dist/parsers/eslint.d.ts.map +1 -0
  175. package/dist/parsers/eslint.js +132 -0
  176. package/dist/parsers/generic.d.ts +8 -0
  177. package/dist/parsers/generic.d.ts.map +1 -0
  178. package/dist/parsers/generic.js +234 -0
  179. package/dist/parsers/index.d.ts +34 -0
  180. package/dist/parsers/index.d.ts.map +1 -0
  181. package/dist/parsers/index.js +216 -0
  182. package/dist/parsers/types.d.ts +84 -0
  183. package/dist/parsers/types.d.ts.map +1 -0
  184. package/dist/parsers/types.js +6 -0
  185. package/dist/parsers/typescript.d.ts +8 -0
  186. package/dist/parsers/typescript.d.ts.map +1 -0
  187. package/dist/parsers/typescript.js +107 -0
  188. package/dist/pipelines/definitions.d.ts +50 -0
  189. package/dist/pipelines/definitions.d.ts.map +1 -0
  190. package/dist/pipelines/definitions.js +206 -0
  191. package/dist/sandbox/executor.d.ts +12 -0
  192. package/dist/sandbox/executor.d.ts.map +1 -0
  193. package/dist/sandbox/executor.js +191 -0
  194. package/dist/sandbox/index.d.ts +11 -0
  195. package/dist/sandbox/index.d.ts.map +1 -0
  196. package/dist/sandbox/index.js +9 -0
  197. package/dist/sandbox/sandbox.test.d.ts +7 -0
  198. package/dist/sandbox/sandbox.test.d.ts.map +1 -0
  199. package/dist/sandbox/sandbox.test.js +202 -0
  200. package/dist/sandbox/sdk/analyze.d.ts +36 -0
  201. package/dist/sandbox/sdk/analyze.d.ts.map +1 -0
  202. package/dist/sandbox/sdk/analyze.js +413 -0
  203. package/dist/sandbox/sdk/analyze.test.d.ts +7 -0
  204. package/dist/sandbox/sdk/analyze.test.d.ts.map +1 -0
  205. package/dist/sandbox/sdk/analyze.test.js +191 -0
  206. package/dist/sandbox/sdk/code.d.ts +20 -0
  207. package/dist/sandbox/sdk/code.d.ts.map +1 -0
  208. package/dist/sandbox/sdk/code.js +104 -0
  209. package/dist/sandbox/sdk/compress.d.ts +23 -0
  210. package/dist/sandbox/sdk/compress.d.ts.map +1 -0
  211. package/dist/sandbox/sdk/compress.js +107 -0
  212. package/dist/sandbox/sdk/conversation.d.ts +148 -0
  213. package/dist/sandbox/sdk/conversation.d.ts.map +1 -0
  214. package/dist/sandbox/sdk/conversation.js +177 -0
  215. package/dist/sandbox/sdk/files.d.ts +29 -0
  216. package/dist/sandbox/sdk/files.d.ts.map +1 -0
  217. package/dist/sandbox/sdk/files.js +41 -0
  218. package/dist/sandbox/sdk/git.d.ts +37 -0
  219. package/dist/sandbox/sdk/git.d.ts.map +1 -0
  220. package/dist/sandbox/sdk/git.js +313 -0
  221. package/dist/sandbox/sdk/git.test.d.ts +8 -0
  222. package/dist/sandbox/sdk/git.test.d.ts.map +1 -0
  223. package/dist/sandbox/sdk/git.test.js +160 -0
  224. package/dist/sandbox/sdk/index.d.ts +16 -0
  225. package/dist/sandbox/sdk/index.d.ts.map +1 -0
  226. package/dist/sandbox/sdk/index.js +15 -0
  227. package/dist/sandbox/sdk/multifile.d.ts +63 -0
  228. package/dist/sandbox/sdk/multifile.d.ts.map +1 -0
  229. package/dist/sandbox/sdk/multifile.js +130 -0
  230. package/dist/sandbox/sdk/pipeline.d.ts +16 -0
  231. package/dist/sandbox/sdk/pipeline.d.ts.map +1 -0
  232. package/dist/sandbox/sdk/pipeline.js +454 -0
  233. package/dist/sandbox/sdk/pipeline.test.d.ts +7 -0
  234. package/dist/sandbox/sdk/pipeline.test.d.ts.map +1 -0
  235. package/dist/sandbox/sdk/pipeline.test.js +197 -0
  236. package/dist/sandbox/sdk/search.d.ts +36 -0
  237. package/dist/sandbox/sdk/search.d.ts.map +1 -0
  238. package/dist/sandbox/sdk/search.js +338 -0
  239. package/dist/sandbox/sdk/search.test.d.ts +7 -0
  240. package/dist/sandbox/sdk/search.test.d.ts.map +1 -0
  241. package/dist/sandbox/sdk/search.test.js +183 -0
  242. package/dist/sandbox/sdk/utils.d.ts +18 -0
  243. package/dist/sandbox/sdk/utils.d.ts.map +1 -0
  244. package/dist/sandbox/sdk/utils.js +24 -0
  245. package/dist/sandbox/security/code-analyzer.d.ts +15 -0
  246. package/dist/sandbox/security/code-analyzer.d.ts.map +1 -0
  247. package/dist/sandbox/security/code-analyzer.js +87 -0
  248. package/dist/sandbox/security/index.d.ts +6 -0
  249. package/dist/sandbox/security/index.d.ts.map +1 -0
  250. package/dist/sandbox/security/index.js +5 -0
  251. package/dist/sandbox/security/path-validator.d.ts +23 -0
  252. package/dist/sandbox/security/path-validator.d.ts.map +1 -0
  253. package/dist/sandbox/security/path-validator.js +113 -0
  254. package/dist/sandbox/types.d.ts +577 -0
  255. package/dist/sandbox/types.d.ts.map +1 -0
  256. package/dist/sandbox/types.js +14 -0
  257. package/dist/server.d.ts +36 -0
  258. package/dist/server.d.ts.map +1 -0
  259. package/dist/server.js +133 -0
  260. package/dist/summarizers/build-logs.d.ts +11 -0
  261. package/dist/summarizers/build-logs.d.ts.map +1 -0
  262. package/dist/summarizers/build-logs.js +234 -0
  263. package/dist/summarizers/generic.d.ts +11 -0
  264. package/dist/summarizers/generic.d.ts.map +1 -0
  265. package/dist/summarizers/generic.js +93 -0
  266. package/dist/summarizers/index.d.ts +20 -0
  267. package/dist/summarizers/index.d.ts.map +1 -0
  268. package/dist/summarizers/index.js +43 -0
  269. package/dist/summarizers/server-logs.d.ts +11 -0
  270. package/dist/summarizers/server-logs.d.ts.map +1 -0
  271. package/dist/summarizers/server-logs.js +215 -0
  272. package/dist/summarizers/test-logs.d.ts +11 -0
  273. package/dist/summarizers/test-logs.d.ts.map +1 -0
  274. package/dist/summarizers/test-logs.js +258 -0
  275. package/dist/summarizers/types.d.ts +146 -0
  276. package/dist/summarizers/types.d.ts.map +1 -0
  277. package/dist/summarizers/types.js +21 -0
  278. package/dist/tools/analyze-build-output.d.ts +30 -0
  279. package/dist/tools/analyze-build-output.d.ts.map +1 -0
  280. package/dist/tools/analyze-build-output.js +45 -0
  281. package/dist/tools/analyze-context.d.ts +23 -0
  282. package/dist/tools/analyze-context.d.ts.map +1 -0
  283. package/dist/tools/analyze-context.js +78 -0
  284. package/dist/tools/auto-optimize.d.ts +9 -0
  285. package/dist/tools/auto-optimize.d.ts.map +1 -0
  286. package/dist/tools/auto-optimize.js +191 -0
  287. package/dist/tools/code-execute.d.ts +9 -0
  288. package/dist/tools/code-execute.d.ts.map +1 -0
  289. package/dist/tools/code-execute.js +84 -0
  290. package/dist/tools/code-skeleton.d.ts +33 -0
  291. package/dist/tools/code-skeleton.d.ts.map +1 -0
  292. package/dist/tools/code-skeleton.js +206 -0
  293. package/dist/tools/compress-context.d.ts +33 -0
  294. package/dist/tools/compress-context.d.ts.map +1 -0
  295. package/dist/tools/compress-context.js +64 -0
  296. package/dist/tools/context-budget.d.ts +43 -0
  297. package/dist/tools/context-budget.d.ts.map +1 -0
  298. package/dist/tools/context-budget.js +260 -0
  299. package/dist/tools/context-budget.test.d.ts +5 -0
  300. package/dist/tools/context-budget.test.d.ts.map +1 -0
  301. package/dist/tools/context-budget.test.js +219 -0
  302. package/dist/tools/conversation-compress.d.ts +46 -0
  303. package/dist/tools/conversation-compress.d.ts.map +1 -0
  304. package/dist/tools/conversation-compress.js +78 -0
  305. package/dist/tools/conversation-memory.d.ts +75 -0
  306. package/dist/tools/conversation-memory.d.ts.map +1 -0
  307. package/dist/tools/conversation-memory.js +289 -0
  308. package/dist/tools/deduplicate-errors.d.ts +30 -0
  309. package/dist/tools/deduplicate-errors.d.ts.map +1 -0
  310. package/dist/tools/deduplicate-errors.js +72 -0
  311. package/dist/tools/detect-retry-loop.d.ts +40 -0
  312. package/dist/tools/detect-retry-loop.d.ts.map +1 -0
  313. package/dist/tools/detect-retry-loop.js +212 -0
  314. package/dist/tools/diff-compress.d.ts +40 -0
  315. package/dist/tools/diff-compress.d.ts.map +1 -0
  316. package/dist/tools/diff-compress.js +94 -0
  317. package/dist/tools/discover-tools.d.ts +11 -0
  318. package/dist/tools/discover-tools.d.ts.map +1 -0
  319. package/dist/tools/discover-tools.js +163 -0
  320. package/dist/tools/dynamic-loader.d.ts +131 -0
  321. package/dist/tools/dynamic-loader.d.ts.map +1 -0
  322. package/dist/tools/dynamic-loader.js +378 -0
  323. package/dist/tools/dynamic-loader.test.d.ts +10 -0
  324. package/dist/tools/dynamic-loader.test.d.ts.map +1 -0
  325. package/dist/tools/dynamic-loader.test.js +164 -0
  326. package/dist/tools/lazy-mcp.d.ts +31 -0
  327. package/dist/tools/lazy-mcp.d.ts.map +1 -0
  328. package/dist/tools/lazy-mcp.js +151 -0
  329. package/dist/tools/lazy-mcp.test.d.ts +10 -0
  330. package/dist/tools/lazy-mcp.test.d.ts.map +1 -0
  331. package/dist/tools/lazy-mcp.test.js +172 -0
  332. package/dist/tools/multifile-compress.d.ts +36 -0
  333. package/dist/tools/multifile-compress.d.ts.map +1 -0
  334. package/dist/tools/multifile-compress.js +223 -0
  335. package/dist/tools/optimization-tips.d.ts +18 -0
  336. package/dist/tools/optimization-tips.d.ts.map +1 -0
  337. package/dist/tools/optimization-tips.js +133 -0
  338. package/dist/tools/registry.d.ts +70 -0
  339. package/dist/tools/registry.d.ts.map +1 -0
  340. package/dist/tools/registry.js +169 -0
  341. package/dist/tools/semantic-compress.d.ts +39 -0
  342. package/dist/tools/semantic-compress.d.ts.map +1 -0
  343. package/dist/tools/semantic-compress.js +113 -0
  344. package/dist/tools/semantic-compress.test.d.ts +5 -0
  345. package/dist/tools/semantic-compress.test.d.ts.map +1 -0
  346. package/dist/tools/semantic-compress.test.js +182 -0
  347. package/dist/tools/session-stats.d.ts +34 -0
  348. package/dist/tools/session-stats.d.ts.map +1 -0
  349. package/dist/tools/session-stats.js +194 -0
  350. package/dist/tools/set-output-config.d.ts +38 -0
  351. package/dist/tools/set-output-config.d.ts.map +1 -0
  352. package/dist/tools/set-output-config.js +122 -0
  353. package/dist/tools/smart-cache-tool.d.ts +38 -0
  354. package/dist/tools/smart-cache-tool.d.ts.map +1 -0
  355. package/dist/tools/smart-cache-tool.js +224 -0
  356. package/dist/tools/smart-file-read.d.ts +52 -0
  357. package/dist/tools/smart-file-read.d.ts.map +1 -0
  358. package/dist/tools/smart-file-read.js +481 -0
  359. package/dist/tools/smart-pipeline.d.ts +40 -0
  360. package/dist/tools/smart-pipeline.d.ts.map +1 -0
  361. package/dist/tools/smart-pipeline.js +295 -0
  362. package/dist/tools/summarize-logs.d.ts +36 -0
  363. package/dist/tools/summarize-logs.d.ts.map +1 -0
  364. package/dist/tools/summarize-logs.js +184 -0
  365. package/dist/tools/token-budget.test.d.ts +11 -0
  366. package/dist/tools/token-budget.test.d.ts.map +1 -0
  367. package/dist/tools/token-budget.test.js +275 -0
  368. package/dist/utils/bm25.d.ts +86 -0
  369. package/dist/utils/bm25.d.ts.map +1 -0
  370. package/dist/utils/bm25.js +153 -0
  371. package/dist/utils/bm25.test.d.ts +5 -0
  372. package/dist/utils/bm25.test.d.ts.map +1 -0
  373. package/dist/utils/bm25.test.js +156 -0
  374. package/dist/utils/command-normalizer.d.ts +39 -0
  375. package/dist/utils/command-normalizer.d.ts.map +1 -0
  376. package/dist/utils/command-normalizer.js +90 -0
  377. package/dist/utils/content-detector.d.ts +27 -0
  378. package/dist/utils/content-detector.d.ts.map +1 -0
  379. package/dist/utils/content-detector.js +127 -0
  380. package/dist/utils/embeddings.d.ts +54 -0
  381. package/dist/utils/embeddings.d.ts.map +1 -0
  382. package/dist/utils/embeddings.js +97 -0
  383. package/dist/utils/embeddings.test.d.ts +8 -0
  384. package/dist/utils/embeddings.test.d.ts.map +1 -0
  385. package/dist/utils/embeddings.test.js +96 -0
  386. package/dist/utils/error-normalizer.d.ts +39 -0
  387. package/dist/utils/error-normalizer.d.ts.map +1 -0
  388. package/dist/utils/error-normalizer.js +233 -0
  389. package/dist/utils/hybrid-search.d.ts +79 -0
  390. package/dist/utils/hybrid-search.d.ts.map +1 -0
  391. package/dist/utils/hybrid-search.js +146 -0
  392. package/dist/utils/hybrid-search.test.d.ts +5 -0
  393. package/dist/utils/hybrid-search.test.d.ts.map +1 -0
  394. package/dist/utils/hybrid-search.test.js +172 -0
  395. package/dist/utils/index.d.ts +13 -0
  396. package/dist/utils/index.d.ts.map +1 -0
  397. package/dist/utils/index.js +12 -0
  398. package/dist/utils/language-detector.d.ts +27 -0
  399. package/dist/utils/language-detector.d.ts.map +1 -0
  400. package/dist/utils/language-detector.js +94 -0
  401. package/dist/utils/log-parser.d.ts +46 -0
  402. package/dist/utils/log-parser.d.ts.map +1 -0
  403. package/dist/utils/log-parser.js +287 -0
  404. package/dist/utils/output-estimator.d.ts +54 -0
  405. package/dist/utils/output-estimator.d.ts.map +1 -0
  406. package/dist/utils/output-estimator.js +119 -0
  407. package/dist/utils/output-estimator.test.d.ts +5 -0
  408. package/dist/utils/output-estimator.test.d.ts.map +1 -0
  409. package/dist/utils/output-estimator.test.js +115 -0
  410. package/dist/utils/output-similarity.d.ts +48 -0
  411. package/dist/utils/output-similarity.d.ts.map +1 -0
  412. package/dist/utils/output-similarity.js +140 -0
  413. package/dist/utils/project-detector.d.ts +16 -0
  414. package/dist/utils/project-detector.d.ts.map +1 -0
  415. package/dist/utils/project-detector.js +119 -0
  416. package/dist/utils/segment-scorer.d.ts +99 -0
  417. package/dist/utils/segment-scorer.d.ts.map +1 -0
  418. package/dist/utils/segment-scorer.js +148 -0
  419. package/dist/utils/signature-grouper.d.ts +58 -0
  420. package/dist/utils/signature-grouper.d.ts.map +1 -0
  421. package/dist/utils/signature-grouper.js +185 -0
  422. package/dist/utils/tfidf.d.ts +45 -0
  423. package/dist/utils/tfidf.d.ts.map +1 -0
  424. package/dist/utils/tfidf.js +204 -0
  425. package/dist/utils/tfidf.test.d.ts +5 -0
  426. package/dist/utils/tfidf.test.d.ts.map +1 -0
  427. package/dist/utils/tfidf.test.js +115 -0
  428. package/dist/utils/token-counter.d.ts +35 -0
  429. package/dist/utils/token-counter.d.ts.map +1 -0
  430. package/dist/utils/token-counter.js +83 -0
  431. package/dist/utils/toon-serializer.d.ts +120 -0
  432. package/dist/utils/toon-serializer.d.ts.map +1 -0
  433. package/dist/utils/toon-serializer.js +472 -0
  434. package/dist/utils/toon-serializer.test.d.ts +7 -0
  435. package/dist/utils/toon-serializer.test.d.ts.map +1 -0
  436. package/dist/utils/toon-serializer.test.js +290 -0
  437. package/package.json +63 -0
  438. package/scripts/install.ps1 +133 -0
  439. package/scripts/install.sh +183 -0
  440. package/scripts/pre-commit-hook.sh +86 -0
@@ -0,0 +1,404 @@
1
+ /**
2
+ * Conversation Compressor
3
+ *
4
+ * Compresses conversation history using different strategies
5
+ * to reduce tokens while preserving key information.
6
+ */
7
+ import { countTokens } from "../utils/token-counter.js";
8
+ /**
9
+ * Extract key points from messages using heuristics
10
+ *
11
+ * Looks for:
12
+ * - Decisions and conclusions
13
+ * - Code references (backticks)
14
+ * - Numbered and bullet lists
15
+ * - File paths and URLs
16
+ * - Important keywords
17
+ */
18
+ function extractKeyPoints(messages) {
19
+ const keyPoints = [];
20
+ // Keywords that indicate important information
21
+ const importantPatterns = [
22
+ /\bdecided\b/i,
23
+ /\bwill use\b/i,
24
+ /\bshould\b/i,
25
+ /\bmust\b/i,
26
+ /\bimportant\b/i,
27
+ /\bcritical\b/i,
28
+ /\brequired\b/i,
29
+ /\bimplemented\b/i,
30
+ /\bcreated\b/i,
31
+ /\bfixed\b/i,
32
+ /\bupdated\b/i,
33
+ ];
34
+ for (const msg of messages) {
35
+ const lines = msg.content.split("\n");
36
+ for (const line of lines) {
37
+ const trimmed = line.trim();
38
+ // Skip empty or very short lines
39
+ if (trimmed.length < 10)
40
+ continue;
41
+ // Skip very long lines (likely code blocks)
42
+ if (trimmed.length > 300)
43
+ continue;
44
+ // Check for important patterns
45
+ const isImportant = importantPatterns.some((p) => p.test(trimmed)) ||
46
+ /`[^`]+`/.test(trimmed) || // Code references
47
+ /^\d+\./.test(trimmed) || // Numbered lists
48
+ /^[-*]\s/.test(trimmed) || // Bullet points
49
+ /\.(ts|js|py|go|rs|tsx|jsx)\b/.test(trimmed) || // File extensions
50
+ /https?:\/\//.test(trimmed); // URLs
51
+ if (isImportant) {
52
+ // Clean up the line
53
+ let cleaned = trimmed;
54
+ // Remove markdown formatting
55
+ cleaned = cleaned.replace(/^\s*[-*]\s*/, "");
56
+ cleaned = cleaned.replace(/^\d+\.\s*/, "");
57
+ cleaned = cleaned.replace(/\*\*/g, "");
58
+ if (cleaned.length > 10 && cleaned.length < 200) {
59
+ keyPoints.push(cleaned);
60
+ }
61
+ }
62
+ }
63
+ }
64
+ // Deduplicate and limit to 15 most relevant
65
+ const unique = [...new Set(keyPoints)];
66
+ return unique.slice(0, 15);
67
+ }
68
+ /**
69
+ * Create a rolling summary of messages
70
+ *
71
+ * Groups messages by role and creates a concise summary
72
+ * of what was discussed and what actions were taken.
73
+ */
74
+ function createRollingSummary(messages) {
75
+ const userTopics = [];
76
+ const assistantActions = [];
77
+ const codeFiles = new Set();
78
+ for (const msg of messages) {
79
+ // Extract first meaningful line as topic
80
+ const lines = msg.content.split("\n").filter((l) => l.trim().length > 0);
81
+ const firstLine = lines[0]?.slice(0, 150) || "";
82
+ if (msg.role === "user") {
83
+ // User messages are typically questions or requests
84
+ if (firstLine.length > 10) {
85
+ userTopics.push(firstLine);
86
+ }
87
+ }
88
+ else if (msg.role === "assistant") {
89
+ // Look for action patterns in assistant messages
90
+ const actionPatterns = [
91
+ /^(I |I'll |I've |Let me |I'm going to |I will )/i,
92
+ /^(Created|Updated|Fixed|Implemented|Added|Removed)/i,
93
+ ];
94
+ if (actionPatterns.some((p) => p.test(firstLine))) {
95
+ assistantActions.push(firstLine);
96
+ }
97
+ }
98
+ // Extract file references from all messages
99
+ const fileMatches = msg.content.match(/[a-zA-Z0-9_\-./]+\.(ts|js|tsx|jsx|py|go|rs|json|yaml|md)\b/g);
100
+ if (fileMatches) {
101
+ fileMatches.slice(0, 5).forEach((f) => codeFiles.add(f));
102
+ }
103
+ }
104
+ // Build summary
105
+ const parts = [];
106
+ if (userTopics.length > 0) {
107
+ const topics = userTopics.slice(0, 3).join("; ");
108
+ parts.push(`User discussed: ${topics}`);
109
+ }
110
+ if (assistantActions.length > 0) {
111
+ const actions = assistantActions.slice(0, 3).join("; ");
112
+ parts.push(`Assistant: ${actions}`);
113
+ }
114
+ if (codeFiles.size > 0) {
115
+ const files = [...codeFiles].slice(0, 5).join(", ");
116
+ parts.push(`Files mentioned: ${files}`);
117
+ }
118
+ return parts.join(". ") || "Previous conversation context.";
119
+ }
120
+ /**
121
+ * Compress conversation messages
122
+ */
123
+ export function compressConversation(messages, options) {
124
+ const preserveSystem = options.preserveSystem ?? true;
125
+ const preserveLastN = options.preserveLastN ?? 2;
126
+ // Handle edge cases
127
+ if (messages.length === 0) {
128
+ return {
129
+ compressedMessages: [],
130
+ originalTokens: 0,
131
+ compressedTokens: 0,
132
+ savings: 0,
133
+ };
134
+ }
135
+ // Calculate original tokens
136
+ const originalTokens = messages.reduce((sum, m) => sum + countTokens(m.content), 0);
137
+ // Separate messages into categories
138
+ const systemMessages = preserveSystem
139
+ ? messages.filter((m) => m.role === "system")
140
+ : [];
141
+ // Handle case where preserveLastN >= message count
142
+ const effectivePreserveN = Math.min(preserveLastN, messages.length);
143
+ const lastNMessages = effectivePreserveN > 0 ? messages.slice(-effectivePreserveN) : [];
144
+ // Messages to compress (excluding system and last N)
145
+ const toCompress = messages
146
+ .slice(0, messages.length - effectivePreserveN)
147
+ .filter((m) => !preserveSystem || m.role !== "system");
148
+ // If nothing to compress, return original
149
+ if (toCompress.length === 0) {
150
+ return {
151
+ compressedMessages: messages,
152
+ originalTokens,
153
+ compressedTokens: originalTokens,
154
+ savings: 0,
155
+ };
156
+ }
157
+ // Apply compression strategy
158
+ let summary;
159
+ let keyPoints;
160
+ let contextMessage;
161
+ switch (options.strategy) {
162
+ case "rolling-summary":
163
+ summary = createRollingSummary(toCompress);
164
+ contextMessage = {
165
+ role: "system",
166
+ content: `[Previous conversation summary]\n${summary}`,
167
+ };
168
+ break;
169
+ case "key-extraction":
170
+ keyPoints = extractKeyPoints(toCompress);
171
+ if (keyPoints.length === 0) {
172
+ // Fallback to summary if no key points found
173
+ summary = createRollingSummary(toCompress);
174
+ contextMessage = {
175
+ role: "system",
176
+ content: `[Previous conversation context]\n${summary}`,
177
+ };
178
+ }
179
+ else {
180
+ contextMessage = {
181
+ role: "system",
182
+ content: `[Key points from conversation]\n${keyPoints.map((p) => `- ${p}`).join("\n")}`,
183
+ };
184
+ }
185
+ break;
186
+ case "hybrid":
187
+ summary = createRollingSummary(toCompress);
188
+ keyPoints = extractKeyPoints(toCompress);
189
+ const keyPointsSection = keyPoints.length > 0
190
+ ? `\n\nKey points:\n${keyPoints
191
+ .slice(0, 7)
192
+ .map((p) => `- ${p}`)
193
+ .join("\n")}`
194
+ : "";
195
+ contextMessage = {
196
+ role: "system",
197
+ content: `[Conversation context]\n${summary}${keyPointsSection}`,
198
+ };
199
+ break;
200
+ }
201
+ // Build compressed messages array
202
+ // Order: system messages, context message, last N messages
203
+ const compressedMessages = [
204
+ ...systemMessages,
205
+ contextMessage,
206
+ ...lastNMessages,
207
+ ];
208
+ // Calculate compressed tokens
209
+ const compressedTokens = compressedMessages.reduce((sum, m) => sum + countTokens(m.content), 0);
210
+ // Calculate savings percentage
211
+ const savings = originalTokens > 0
212
+ ? Math.round((1 - compressedTokens / originalTokens) * 100)
213
+ : 0;
214
+ return {
215
+ compressedMessages,
216
+ summary,
217
+ keyPoints,
218
+ originalTokens,
219
+ compressedTokens,
220
+ savings: Math.max(0, savings), // Ensure non-negative
221
+ };
222
+ }
223
+ /**
224
+ * Extract decisions from messages with enhanced patterns
225
+ */
226
+ export function extractDecisions(messages) {
227
+ const decisions = [];
228
+ const now = Date.now();
229
+ // Decision patterns
230
+ const decisionPatterns = [
231
+ // Direct decisions
232
+ /(?:decided|will|going to|let's|I'll|we'll|we should)\s+(.{10,150})/gi,
233
+ // Plans and approaches
234
+ /(?:the approach|the solution|the plan|strategy)\s+(?:is|will be)\s+(.{10,150})/gi,
235
+ // Requirements
236
+ /(?:we need to|must|should|have to)\s+(.{10,150})/gi,
237
+ // Completed actions
238
+ /(?:done|completed|finished|implemented|created|fixed|updated):\s*(.{10,150})/gi,
239
+ ];
240
+ for (const msg of messages) {
241
+ if (msg.role === "system")
242
+ continue;
243
+ const lines = msg.content.split("\n");
244
+ for (const line of lines) {
245
+ const trimmed = line.trim();
246
+ if (trimmed.length < 15 || trimmed.length > 300)
247
+ continue;
248
+ for (const pattern of decisionPatterns) {
249
+ pattern.lastIndex = 0; // Reset regex state
250
+ const match = pattern.exec(trimmed);
251
+ if (match && match[1]) {
252
+ const decision = match[1].trim();
253
+ // Avoid duplicates
254
+ if (!decisions.some((d) => d.decision === decision)) {
255
+ decisions.push({
256
+ decision,
257
+ context: trimmed.slice(0, 200),
258
+ timestamp: now,
259
+ });
260
+ }
261
+ }
262
+ }
263
+ // Also check for numbered list items that look like decisions
264
+ if (/^\d+\.\s+/.test(trimmed)) {
265
+ const item = trimmed.replace(/^\d+\.\s+/, "").trim();
266
+ if (item.length > 15 &&
267
+ item.length < 200 &&
268
+ !decisions.some((d) => d.decision === item)) {
269
+ decisions.push({
270
+ decision: item,
271
+ context: trimmed,
272
+ timestamp: now,
273
+ });
274
+ }
275
+ }
276
+ }
277
+ }
278
+ // Limit to 20 most recent decisions
279
+ return decisions.slice(-20);
280
+ }
281
+ /**
282
+ * Extract code references from messages
283
+ */
284
+ export function extractCodeReferences(messages) {
285
+ const refs = [];
286
+ const seenFiles = new Set();
287
+ // File path pattern
288
+ const filePattern = /[a-zA-Z0-9_\-./]+\.(ts|js|tsx|jsx|py|go|rs|json|yaml|yml|md|css|scss|html)\b/g;
289
+ // Action patterns
290
+ const actionPatterns = [
291
+ { pattern: /\b(created?|add(?:ed|ing)?|writ(?:e|ing|ten))\b/i, action: "created" },
292
+ { pattern: /\b(modif(?:y|ied|ying)|updat(?:e|ed|ing)|chang(?:e|ed|ing)|edit(?:ed|ing)?)\b/i, action: "modified" },
293
+ { pattern: /\b(delet(?:e|ed|ing)|remov(?:e|ed|ing))\b/i, action: "deleted" },
294
+ ];
295
+ for (const msg of messages) {
296
+ const content = msg.content;
297
+ let match;
298
+ while ((match = filePattern.exec(content)) !== null) {
299
+ const file = match[0];
300
+ if (seenFiles.has(file))
301
+ continue;
302
+ seenFiles.add(file);
303
+ // Find surrounding context to determine action
304
+ const start = Math.max(0, match.index - 50);
305
+ const end = Math.min(content.length, match.index + file.length + 50);
306
+ const context = content.slice(start, end).toLowerCase();
307
+ let action = "discussed";
308
+ for (const { pattern, action: act } of actionPatterns) {
309
+ if (pattern.test(context)) {
310
+ action = act;
311
+ break;
312
+ }
313
+ }
314
+ refs.push({ file, action });
315
+ }
316
+ }
317
+ // Limit to 30 most relevant
318
+ return refs.slice(0, 30);
319
+ }
320
+ /**
321
+ * Create conversation memory from messages
322
+ */
323
+ export function createMemory(messages, options) {
324
+ const summary = createRollingSummary(messages);
325
+ const decisions = extractDecisions(messages);
326
+ const codeReferences = extractCodeReferences(messages);
327
+ // Compress messages using hybrid strategy
328
+ const result = compressConversation(messages, {
329
+ ...options,
330
+ strategy: "hybrid",
331
+ });
332
+ return {
333
+ summary,
334
+ decisions,
335
+ codeReferences,
336
+ compressedHistory: result.compressedMessages,
337
+ lastUpdated: Date.now(),
338
+ };
339
+ }
340
+ /**
341
+ * Restore context from memory state
342
+ */
343
+ export function restoreContext(memory, options = {}) {
344
+ const { includeSummary = true, recentMessages = 3, includeCodeRefs = true, includeDecisions = true, } = options;
345
+ const parts = [];
346
+ // Add summary
347
+ if (includeSummary && memory.summary) {
348
+ parts.push("[Previous Context]");
349
+ parts.push(memory.summary);
350
+ parts.push("");
351
+ }
352
+ // Add decisions
353
+ if (includeDecisions && memory.decisions.length > 0) {
354
+ parts.push("[Key Decisions]");
355
+ for (const decision of memory.decisions.slice(-10)) {
356
+ parts.push(`- ${decision.decision}`);
357
+ }
358
+ parts.push("");
359
+ }
360
+ // Add code references
361
+ if (includeCodeRefs && memory.codeReferences.length > 0) {
362
+ parts.push("[Code References]");
363
+ const byAction = new Map();
364
+ for (const ref of memory.codeReferences) {
365
+ if (!byAction.has(ref.action)) {
366
+ byAction.set(ref.action, []);
367
+ }
368
+ byAction.get(ref.action).push(ref.file);
369
+ }
370
+ for (const [action, files] of byAction) {
371
+ parts.push(`${action}: ${files.slice(0, 10).join(", ")}`);
372
+ }
373
+ parts.push("");
374
+ }
375
+ // Add recent messages
376
+ if (recentMessages > 0 && memory.compressedHistory.length > 0) {
377
+ parts.push("[Recent Messages]");
378
+ const recent = memory.compressedHistory.slice(-recentMessages);
379
+ for (const msg of recent) {
380
+ const preview = msg.content.slice(0, 200);
381
+ parts.push(`${msg.role}: ${preview}${msg.content.length > 200 ? "..." : ""}`);
382
+ }
383
+ }
384
+ return parts.join("\n");
385
+ }
386
+ /**
387
+ * Compress conversation and create memory result
388
+ */
389
+ export function compressConversationWithMemory(messages, options) {
390
+ const originalTokens = messages.reduce((sum, m) => sum + countTokens(m.content), 0);
391
+ const memory = createMemory(messages, options);
392
+ const context = restoreContext(memory);
393
+ const compressedTokens = countTokens(context);
394
+ return {
395
+ context,
396
+ memory,
397
+ stats: {
398
+ originalTokens,
399
+ compressedTokens,
400
+ decisionsExtracted: memory.decisions.length,
401
+ codeRefsFound: memory.codeReferences.length,
402
+ },
403
+ };
404
+ }
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Diff Compressor
3
+ *
4
+ * Compresses git diff output to reduce tokens while preserving essential changes.
5
+ * Supports three strategies: hunks-only, summary, and semantic.
6
+ */
7
+ import type { ParsedDiff, DiffCompressOptions, DiffCompressedResult } from "./types.js";
8
+ /**
9
+ * Parse unified diff format into structured data
10
+ *
11
+ * Handles:
12
+ * - Standard unified diff (git diff, diff -u)
13
+ * - File headers: diff --git a/path b/path
14
+ * - Index lines: index abc123..def456 100644
15
+ * - --- / +++ file markers
16
+ * - @@ hunk headers
17
+ * - Context lines (space prefix)
18
+ * - Addition lines (+ prefix)
19
+ * - Deletion lines (- prefix)
20
+ * - Binary file indicators
21
+ * - Renamed files (similarity index)
22
+ */
23
+ export declare function parseDiff(diff: string): ParsedDiff;
24
+ /**
25
+ * Compress a git diff using the specified strategy
26
+ */
27
+ export declare function compressDiff(diff: string, options: DiffCompressOptions): DiffCompressedResult;
28
+ /**
29
+ * Diff compressor instance for use with tool system
30
+ */
31
+ export declare const diffCompressor: {
32
+ name: string;
33
+ compress: typeof compressDiff;
34
+ };
35
+ //# sourceMappingURL=diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../src/compressors/diff.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAGV,UAAU,EACV,mBAAmB,EACnB,oBAAoB,EAErB,MAAM,YAAY,CAAC;AAQpB;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CA6GlD;AA+PD;;GAEG;AACH,wBAAgB,YAAY,CAC1B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,mBAAmB,GAC3B,oBAAoB,CA4DtB;AAED;;GAEG;AACH,eAAO,MAAM,cAAc;;;CAG1B,CAAC"}