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,219 @@
1
+ /**
2
+ * Context Budget Tool Tests
3
+ */
4
+ import { describe, it, expect } from "vitest";
5
+ import { executeContextBudget } from "./context-budget.js";
6
+ describe("context_budget tool", () => {
7
+ describe("basic estimation", () => {
8
+ it("should count input tokens", async () => {
9
+ const content = "Hello, world! This is a test message.";
10
+ const result = await executeContextBudget({ content });
11
+ expect(result.isError).toBeFalsy();
12
+ const text = result.content[0].text;
13
+ expect(text).toContain("Input Tokens");
14
+ expect(text).toContain("Context Budget Analysis");
15
+ });
16
+ it("should estimate output tokens", async () => {
17
+ const content = "What is the difference between let and const in JavaScript?";
18
+ const result = await executeContextBudget({ content });
19
+ expect(result.isError).toBeFalsy();
20
+ const text = result.content[0].text;
21
+ expect(text).toContain("Estimated Output");
22
+ });
23
+ it("should calculate total tokens", async () => {
24
+ const content = "Explain how async/await works.";
25
+ const result = await executeContextBudget({ content });
26
+ const text = result.content[0].text;
27
+ expect(text).toContain("Total Estimated");
28
+ });
29
+ it("should show estimated cost", async () => {
30
+ const content = "Create a function that sorts an array.";
31
+ const result = await executeContextBudget({ content });
32
+ const text = result.content[0].text;
33
+ expect(text).toContain("Estimated Cost");
34
+ expect(text).toContain("$");
35
+ });
36
+ it("should show context usage percentage", async () => {
37
+ const content = "Short prompt.";
38
+ const result = await executeContextBudget({ content });
39
+ const text = result.content[0].text;
40
+ expect(text).toContain("Context Usage");
41
+ expect(text).toContain("%");
42
+ });
43
+ });
44
+ describe("model selection", () => {
45
+ it("should use default model when not specified", async () => {
46
+ const content = "Test content";
47
+ const result = await executeContextBudget({ content });
48
+ const text = result.content[0].text;
49
+ expect(text).toContain("Claude Sonnet 4");
50
+ });
51
+ it("should use specified model", async () => {
52
+ const content = "Test content";
53
+ const result = await executeContextBudget({ content, model: "claude-opus-4-20250514" });
54
+ const text = result.content[0].text;
55
+ expect(text).toContain("Claude Opus 4");
56
+ });
57
+ it("should accept haiku model", async () => {
58
+ const content = "Test content";
59
+ const result = await executeContextBudget({ content, model: "claude-3-5-haiku-20241022" });
60
+ const text = result.content[0].text;
61
+ expect(text).toContain("Claude 3.5 Haiku");
62
+ });
63
+ });
64
+ describe("budget checking", () => {
65
+ it("should report within budget when tokens are under limit", async () => {
66
+ const content = "Short content";
67
+ const result = await executeContextBudget({ content, budgetTokens: 10000 });
68
+ const text = result.content[0].text;
69
+ expect(text).toContain("Within Budget");
70
+ expect(text).toContain("remaining");
71
+ });
72
+ it("should report over budget when tokens exceed limit", async () => {
73
+ // Create content that will exceed a small budget
74
+ const content = Array(100).fill("This is a test sentence.").join(" ");
75
+ const result = await executeContextBudget({ content, budgetTokens: 100 });
76
+ const text = result.content[0].text;
77
+ expect(text).toContain("OVER BUDGET");
78
+ expect(text).toContain("over");
79
+ });
80
+ it("should not show budget status when no budget specified", async () => {
81
+ const content = "Test content";
82
+ const result = await executeContextBudget({ content });
83
+ const text = result.content[0].text;
84
+ expect(text).not.toContain("Budget Status");
85
+ });
86
+ });
87
+ describe("recommendations", () => {
88
+ it("should recommend smart_file_read for code content", async () => {
89
+ // Create varied code content (not repetitive) with enough tokens
90
+ const content = `
91
+ function processData(data) {
92
+ const result = data.map(item => item * 2);
93
+ return result.filter(x => x > 10);
94
+ }
95
+
96
+ class DataProcessor {
97
+ constructor() {
98
+ this.cache = new Map();
99
+ this.timeout = 5000;
100
+ }
101
+
102
+ async process(input) {
103
+ if (this.cache.has(input)) {
104
+ return this.cache.get(input);
105
+ }
106
+ const result = await this.transform(input);
107
+ this.cache.set(input, result);
108
+ return result;
109
+ }
110
+
111
+ transform(value) {
112
+ return value.toString().toUpperCase();
113
+ }
114
+ }
115
+
116
+ const handler = async (req, res) => {
117
+ try {
118
+ const data = await req.json();
119
+ const processor = new DataProcessor();
120
+ const result = await processor.process(data);
121
+ return res.json({ success: true, data: result });
122
+ } catch (error) {
123
+ console.error('Error processing request:', error);
124
+ return res.json({ success: false, error: error.message });
125
+ }
126
+ };
127
+
128
+ export { processData, DataProcessor, handler };
129
+ `;
130
+ const result = await executeContextBudget({ content });
131
+ const text = result.content[0].text;
132
+ // Should have code-related recommendations
133
+ expect(text).toContain("Optimization Recommendations");
134
+ });
135
+ it("should recommend summarize_logs for log content", async () => {
136
+ const content = `
137
+ [2025-12-23 10:00:00] INFO: Server started on port 3000
138
+ [2025-12-23 10:00:01] DEBUG: Loading configuration
139
+ [2025-12-23 10:00:02] INFO: Database connected
140
+ [2025-12-23 10:00:03] WARN: Cache miss for key xyz
141
+ `.repeat(20);
142
+ const result = await executeContextBudget({ content });
143
+ const text = result.content[0].text;
144
+ expect(text).toContain("summarize_logs");
145
+ });
146
+ it("should recommend deduplicate_errors for repeated errors", async () => {
147
+ const content = Array(30)
148
+ .fill("Error: Connection refused at Database.connect()")
149
+ .join("\n");
150
+ const result = await executeContextBudget({ content });
151
+ const text = result.content[0].text;
152
+ expect(text).toContain("deduplicate_errors");
153
+ });
154
+ it("should recommend semantic_compress for long prose", async () => {
155
+ const content = Array(200)
156
+ .fill("This is a paragraph of text explaining something in detail.")
157
+ .join(" ");
158
+ const result = await executeContextBudget({ content });
159
+ const text = result.content[0].text;
160
+ expect(text).toContain("semantic_compress");
161
+ });
162
+ it("should show potential savings percentage", async () => {
163
+ const content = Array(50)
164
+ .fill("[INFO] Processing request from client")
165
+ .join("\n");
166
+ const result = await executeContextBudget({ content });
167
+ const text = result.content[0].text;
168
+ expect(text).toContain("Potential Savings");
169
+ });
170
+ });
171
+ describe("output estimation toggle", () => {
172
+ it("should include output estimation by default", async () => {
173
+ const content = "What is TypeScript?";
174
+ const result = await executeContextBudget({ content });
175
+ const text = result.content[0].text;
176
+ // Estimated Output should be > 0
177
+ expect(text).toMatch(/Estimated Output \| [1-9]/);
178
+ });
179
+ it("should exclude output estimation when disabled", async () => {
180
+ const content = "What is TypeScript?";
181
+ const result = await executeContextBudget({ content, includeEstimatedOutput: false });
182
+ const text = result.content[0].text;
183
+ // Estimated Output should be 0
184
+ expect(text).toContain("Estimated Output | 0");
185
+ });
186
+ });
187
+ describe("input validation", () => {
188
+ it("should reject empty content", async () => {
189
+ const result = await executeContextBudget({ content: "" });
190
+ expect(result.isError).toBe(true);
191
+ expect(result.content[0].text).toContain("Invalid input");
192
+ });
193
+ it("should reject invalid model", async () => {
194
+ const result = await executeContextBudget({ content: "test", model: "invalid-model" });
195
+ expect(result.isError).toBe(true);
196
+ });
197
+ it("should reject budget below minimum", async () => {
198
+ const result = await executeContextBudget({ content: "test", budgetTokens: 49 });
199
+ expect(result.isError).toBe(true);
200
+ });
201
+ });
202
+ describe("auto-optimize availability", () => {
203
+ it("should indicate auto-optimize available for large optimizable content", async () => {
204
+ const content = Array(100)
205
+ .fill("[ERROR] Failed to connect")
206
+ .join("\n");
207
+ const result = await executeContextBudget({ content });
208
+ const text = result.content[0].text;
209
+ expect(text).toContain("auto_optimize");
210
+ });
211
+ it("should not show auto-optimize tip for small content", async () => {
212
+ const content = "Short content here";
213
+ const result = await executeContextBudget({ content });
214
+ const text = result.content[0].text;
215
+ // Small content shouldn't trigger the tip
216
+ expect(text).not.toContain("Tip: Use `auto_optimize`");
217
+ });
218
+ });
219
+ });
@@ -0,0 +1,46 @@
1
+ /**
2
+ * Conversation Compress Tool
3
+ *
4
+ * MCP tool for compressing conversation history to reduce tokens
5
+ * while preserving key information.
6
+ */
7
+ import type { ToolDefinition } from "./registry.js";
8
+ export declare const conversationCompressSchema: {
9
+ type: "object";
10
+ properties: {
11
+ messages: {
12
+ type: string;
13
+ items: {
14
+ properties: {
15
+ role: {
16
+ enum: string[];
17
+ };
18
+ content: {
19
+ type: string;
20
+ };
21
+ };
22
+ };
23
+ };
24
+ strategy: {
25
+ enum: string[];
26
+ };
27
+ maxTokens: {
28
+ type: string;
29
+ };
30
+ };
31
+ required: string[];
32
+ };
33
+ /**
34
+ * Execute conversation compression
35
+ */
36
+ export declare function executeConversationCompress(args: unknown): Promise<{
37
+ content: Array<{
38
+ type: "text";
39
+ text: string;
40
+ }>;
41
+ }>;
42
+ /**
43
+ * Conversation Compress Tool Definition
44
+ */
45
+ export declare const conversationCompressTool: ToolDefinition;
46
+ //# sourceMappingURL=conversation-compress.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-compress.d.ts","sourceRoot":"","sources":["../../src/tools/conversation-compress.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAOpD,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;CAatC,CAAC;AAgBF;;GAEG;AACH,wBAAsB,2BAA2B,CAC/C,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAAC,CAiC7D;AAED;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,cAMtC,CAAC"}
@@ -0,0 +1,78 @@
1
+ /**
2
+ * Conversation Compress Tool
3
+ *
4
+ * MCP tool for compressing conversation history to reduce tokens
5
+ * while preserving key information.
6
+ */
7
+ import { z } from "zod";
8
+ import { compressConversation, } from "../compressors/conversation.js";
9
+ // Minimal schema - preserveSystem/preserveLastN rarely changed
10
+ export const conversationCompressSchema = {
11
+ type: "object",
12
+ properties: {
13
+ messages: {
14
+ type: "array",
15
+ items: {
16
+ properties: { role: { enum: ["user", "assistant", "system"] }, content: { type: "string" } },
17
+ },
18
+ },
19
+ strategy: { enum: ["rolling-summary", "key-extraction", "hybrid"] },
20
+ maxTokens: { type: "number" },
21
+ },
22
+ required: ["messages", "strategy", "maxTokens"],
23
+ };
24
+ // Zod schema for validation
25
+ const messageSchema = z.object({
26
+ role: z.enum(["user", "assistant", "system"]),
27
+ content: z.string(),
28
+ });
29
+ const inputSchema = z.object({
30
+ messages: z.array(messageSchema),
31
+ strategy: z.enum(["rolling-summary", "key-extraction", "hybrid"]),
32
+ maxTokens: z.number().positive(),
33
+ preserveSystem: z.boolean().optional().default(true),
34
+ preserveLastN: z.number().min(0).optional().default(2),
35
+ });
36
+ /**
37
+ * Execute conversation compression
38
+ */
39
+ export async function executeConversationCompress(args) {
40
+ const input = inputSchema.parse(args);
41
+ // Validate input
42
+ if (input.messages.length === 0) {
43
+ return {
44
+ content: [
45
+ {
46
+ type: "text",
47
+ text: "No messages to compress.",
48
+ },
49
+ ],
50
+ };
51
+ }
52
+ // Perform compression
53
+ const result = compressConversation(input.messages, {
54
+ strategy: input.strategy,
55
+ maxTokens: input.maxTokens,
56
+ preserveSystem: input.preserveSystem,
57
+ preserveLastN: input.preserveLastN,
58
+ });
59
+ // Minimal header
60
+ const header = `[conversation] ${result.originalTokens}→${result.compressedTokens} tokens (-${result.savings}%), ${input.messages.length}→${result.compressedMessages.length} msgs`;
61
+ // Compact output
62
+ const parts = [header];
63
+ if (result.summary)
64
+ parts.push(result.summary);
65
+ if (result.keyPoints?.length)
66
+ parts.push(result.keyPoints.map(p => `• ${p}`).join("\n"));
67
+ parts.push(JSON.stringify(result.compressedMessages));
68
+ return { content: [{ type: "text", text: parts.join("\n") }] };
69
+ }
70
+ /**
71
+ * Conversation Compress Tool Definition
72
+ */
73
+ export const conversationCompressTool = {
74
+ name: "conversation_compress",
75
+ description: "Compress chat history. Strategies: rolling-summary, key-extraction, hybrid.",
76
+ inputSchema: conversationCompressSchema,
77
+ execute: executeConversationCompress,
78
+ };
@@ -0,0 +1,75 @@
1
+ /**
2
+ * Conversation Memory Tool
3
+ *
4
+ * Manages long conversation context with decision extraction
5
+ * and context restoration capabilities.
6
+ */
7
+ import type { ToolDefinition } from "./registry.js";
8
+ import { type ConversationMemory } from "../compressors/conversation.js";
9
+ export declare const conversationMemorySchema: {
10
+ type: "object";
11
+ properties: {
12
+ action: {
13
+ type: string;
14
+ enum: string[];
15
+ description: string;
16
+ };
17
+ messages: {
18
+ type: string;
19
+ items: {
20
+ type: string;
21
+ properties: {
22
+ role: {
23
+ type: string;
24
+ enum: string[];
25
+ };
26
+ content: {
27
+ type: string;
28
+ };
29
+ };
30
+ required: string[];
31
+ };
32
+ description: string;
33
+ };
34
+ strategy: {
35
+ type: string;
36
+ enum: string[];
37
+ description: string;
38
+ };
39
+ maxTokens: {
40
+ type: string;
41
+ description: string;
42
+ };
43
+ preserveLastN: {
44
+ type: string;
45
+ description: string;
46
+ };
47
+ includeSummary: {
48
+ type: string;
49
+ description: string;
50
+ };
51
+ includeDecisions: {
52
+ type: string;
53
+ description: string;
54
+ };
55
+ includeCodeRefs: {
56
+ type: string;
57
+ description: string;
58
+ };
59
+ recentMessages: {
60
+ type: string;
61
+ description: string;
62
+ };
63
+ };
64
+ required: string[];
65
+ };
66
+ export declare const conversationMemoryTool: ToolDefinition;
67
+ /**
68
+ * Get current session memory (for SDK use)
69
+ */
70
+ export declare function getSessionMemory(): ConversationMemory | null;
71
+ /**
72
+ * Set session memory (for SDK use)
73
+ */
74
+ export declare function setSessionMemory(memory: ConversationMemory | null): void;
75
+ //# sourceMappingURL=conversation-memory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-memory.d.ts","sourceRoot":"","sources":["../../src/tools/conversation-memory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACpD,OAAO,EAOL,KAAK,kBAAkB,EACxB,MAAM,gCAAgC,CAAC;AAWxC,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmDpC,CAAC;AAyPF,eAAO,MAAM,sBAAsB,EAAE,cAMpC,CAAC;AAEF;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,kBAAkB,GAAG,IAAI,CAE5D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,GAAG,IAAI,CAExE"}