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,82 @@
1
+ /**
2
+ * Compressors Index
3
+ *
4
+ * Orchestrates content compression with auto-detection and routing.
5
+ */
6
+ export * from "./types.js";
7
+ import { detectContentType } from "../utils/content-detector.js";
8
+ import { logsCompressor } from "./logs.js";
9
+ import { stacktraceCompressor } from "./stacktrace.js";
10
+ import { configCompressor } from "./config.js";
11
+ import { genericCompressor } from "./generic.js";
12
+ // Registered compressors in priority order
13
+ const compressors = [
14
+ logsCompressor,
15
+ stacktraceCompressor,
16
+ configCompressor,
17
+ genericCompressor, // Fallback - always last
18
+ ];
19
+ /**
20
+ * Get the appropriate compressor for a content type
21
+ */
22
+ export function getCompressor(contentType) {
23
+ for (const compressor of compressors) {
24
+ if (compressor.supportedTypes.includes(contentType)) {
25
+ return compressor;
26
+ }
27
+ }
28
+ return genericCompressor;
29
+ }
30
+ /**
31
+ * Compress content with auto-detection
32
+ */
33
+ export function compressContent(content, options = {}) {
34
+ // Merge with defaults
35
+ const opts = {
36
+ detail: options.detail ?? "normal",
37
+ targetRatio: options.targetRatio,
38
+ preservePatterns: options.preservePatterns,
39
+ };
40
+ // Detect or use provided content type
41
+ const contentType = options.contentType ?? detectContentType(content);
42
+ // Get appropriate compressor
43
+ const compressor = getCompressor(contentType);
44
+ // Compress
45
+ const result = compressor.compress(content, opts);
46
+ // Add content type info to technique
47
+ result.stats.technique = `${contentType}:${result.stats.technique}`;
48
+ return result;
49
+ }
50
+ /**
51
+ * Analyze content and suggest compression approach
52
+ */
53
+ export function analyzeContent(content) {
54
+ const detectedType = detectContentType(content);
55
+ const compressor = getCompressor(detectedType);
56
+ // Estimate reduction based on content type
57
+ let estimatedReduction;
58
+ switch (detectedType) {
59
+ case "logs":
60
+ estimatedReduction = "70-90%";
61
+ break;
62
+ case "stacktrace":
63
+ estimatedReduction = "50-80%";
64
+ break;
65
+ case "config":
66
+ estimatedReduction = "30-60%";
67
+ break;
68
+ default:
69
+ estimatedReduction = "20-50%";
70
+ }
71
+ return {
72
+ detectedType,
73
+ suggestedCompressor: compressor.name,
74
+ estimatedReduction,
75
+ };
76
+ }
77
+ // Re-export individual compressors for direct use
78
+ export { logsCompressor } from "./logs.js";
79
+ export { stacktraceCompressor } from "./stacktrace.js";
80
+ export { configCompressor } from "./config.js";
81
+ export { genericCompressor } from "./generic.js";
82
+ export { semanticCompressor } from "./semantic.js";
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Logs Compressor
3
+ *
4
+ * Specialized compressor for application logs.
5
+ * Groups similar log entries and summarizes repetitive patterns.
6
+ */
7
+ import type { Compressor } from "./types.js";
8
+ export declare const logsCompressor: Compressor;
9
+ //# sourceMappingURL=logs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../../src/compressors/logs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAgD,MAAM,YAAY,CAAC;AA8N3F,eAAO,MAAM,cAAc,EAAE,UAuD5B,CAAC"}
@@ -0,0 +1,245 @@
1
+ /**
2
+ * Logs Compressor
3
+ *
4
+ * Specialized compressor for application logs.
5
+ * Groups similar log entries and summarizes repetitive patterns.
6
+ */
7
+ import { encodingForModel } from "js-tiktoken";
8
+ const encoding = encodingForModel("gpt-4");
9
+ function countTokens(text) {
10
+ return encoding.encode(text).length;
11
+ }
12
+ // Log level patterns
13
+ const LOG_LEVELS = ["TRACE", "DEBUG", "INFO", "WARN", "WARNING", "ERROR", "FATAL"];
14
+ /**
15
+ * Extract timestamp from log line
16
+ */
17
+ function extractTimestamp(line) {
18
+ // ISO format: 2024-01-15T10:00:01
19
+ const isoMatch = line.match(/\d{4}-\d{2}-\d{2}[T\s]\d{2}:\d{2}:\d{2}(?:\.\d+)?/);
20
+ if (isoMatch)
21
+ return isoMatch[0];
22
+ // Bracket format: [10:00:01]
23
+ const bracketMatch = line.match(/\[(\d{2}:\d{2}:\d{2})\]/);
24
+ if (bracketMatch)
25
+ return bracketMatch[1];
26
+ // Syslog format: Jan 15 10:00:01
27
+ const syslogMatch = line.match(/[A-Z][a-z]{2}\s+\d{1,2}\s+\d{2}:\d{2}:\d{2}/);
28
+ if (syslogMatch)
29
+ return syslogMatch[0];
30
+ return undefined;
31
+ }
32
+ /**
33
+ * Extract log level from line
34
+ */
35
+ function extractLogLevel(line) {
36
+ const upperLine = line.toUpperCase();
37
+ for (const level of LOG_LEVELS) {
38
+ if (upperLine.includes(`[${level}]`) || upperLine.includes(` ${level} `)) {
39
+ return level;
40
+ }
41
+ }
42
+ return undefined;
43
+ }
44
+ /**
45
+ * Normalize log message for grouping
46
+ */
47
+ function normalizeLogMessage(message) {
48
+ return message
49
+ .replace(/\d{4}-\d{2}-\d{2}[T\s]\d{2}:\d{2}:\d{2}(?:\.\d+)?/g, "TIMESTAMP") // Remove timestamps
50
+ .replace(/\[\d{2}:\d{2}:\d{2}\]/g, "[TIMESTAMP]")
51
+ .replace(/\d+\.\d+\.\d+\.\d+/g, "IP") // IP addresses
52
+ .replace(/\d+ms/g, "Nms") // Durations
53
+ .replace(/\d+/g, "N") // Numbers
54
+ .replace(/[a-f0-9]{8,}/gi, "HASH") // Hashes/IDs
55
+ .replace(/"[^"]*"/g, '"STR"') // Quoted strings
56
+ .replace(/'[^']*'/g, "'STR'")
57
+ .replace(/\s+/g, " ")
58
+ .trim();
59
+ }
60
+ /**
61
+ * Parse a log line into structured data
62
+ */
63
+ function parseLogLine(line) {
64
+ const timestamp = extractTimestamp(line);
65
+ const level = extractLogLevel(line);
66
+ // Remove timestamp and level to get message
67
+ let message = line;
68
+ if (timestamp) {
69
+ message = message.replace(timestamp, "").trim();
70
+ }
71
+ return {
72
+ raw: line,
73
+ timestamp,
74
+ level,
75
+ message,
76
+ normalizedMessage: normalizeLogMessage(message),
77
+ };
78
+ }
79
+ /**
80
+ * Group log lines by their normalized message
81
+ */
82
+ function groupLogLines(lines, preservePatterns) {
83
+ const groups = new Map();
84
+ for (const line of lines) {
85
+ if (!line.trim())
86
+ continue;
87
+ // Check if line should be preserved
88
+ const shouldPreserve = preservePatterns?.some((p) => p.test(line));
89
+ if (shouldPreserve) {
90
+ // Add as unique group
91
+ const key = `preserve_${groups.size}`;
92
+ groups.set(key, {
93
+ pattern: line,
94
+ sample: line,
95
+ lines: [line],
96
+ count: 1,
97
+ hasError: false,
98
+ hasWarning: false,
99
+ });
100
+ continue;
101
+ }
102
+ const parsed = parseLogLine(line);
103
+ const key = parsed.normalizedMessage;
104
+ const existing = groups.get(key);
105
+ if (existing) {
106
+ existing.lines.push(line);
107
+ existing.count++;
108
+ }
109
+ else {
110
+ const isError = parsed.level === "ERROR" || parsed.level === "FATAL";
111
+ const isWarning = parsed.level === "WARN" || parsed.level === "WARNING";
112
+ groups.set(key, {
113
+ pattern: parsed.normalizedMessage,
114
+ sample: line,
115
+ lines: [line],
116
+ count: 1,
117
+ hasError: isError,
118
+ hasWarning: isWarning,
119
+ });
120
+ }
121
+ }
122
+ return groups;
123
+ }
124
+ /**
125
+ * Generate compressed output from groups
126
+ */
127
+ function generateCompressedOutput(groups, detail) {
128
+ const output = [];
129
+ // Sort: errors first, then warnings, then by count (descending)
130
+ const sortedGroups = Array.from(groups.values()).sort((a, b) => {
131
+ if (a.hasError && !b.hasError)
132
+ return -1;
133
+ if (!a.hasError && b.hasError)
134
+ return 1;
135
+ if (a.hasWarning && !b.hasWarning)
136
+ return -1;
137
+ if (!a.hasWarning && b.hasWarning)
138
+ return 1;
139
+ return b.count - a.count;
140
+ });
141
+ const threshold = detail === "minimal" ? 2 : detail === "normal" ? 3 : 5;
142
+ for (const group of sortedGroups) {
143
+ // Always show errors and warnings
144
+ if (group.hasError || group.hasWarning) {
145
+ if (detail === "detailed") {
146
+ output.push(...group.lines);
147
+ }
148
+ else {
149
+ output.push(group.sample);
150
+ if (group.count > 1) {
151
+ output.push(` ... (${group.count - 1} similar entries)`);
152
+ }
153
+ }
154
+ continue;
155
+ }
156
+ // Regular logs
157
+ if (group.count <= threshold) {
158
+ if (detail === "detailed") {
159
+ output.push(...group.lines);
160
+ }
161
+ else {
162
+ output.push(group.sample);
163
+ if (group.count > 1) {
164
+ output.push(` ... (${group.count - 1} similar entries)`);
165
+ }
166
+ }
167
+ }
168
+ else {
169
+ output.push(group.sample);
170
+ output.push(` ... (${group.count - 1} similar entries omitted)`);
171
+ }
172
+ }
173
+ return output;
174
+ }
175
+ /**
176
+ * Generate summary statistics
177
+ */
178
+ function generateSummary(groups) {
179
+ let errorCount = 0;
180
+ let warnCount = 0;
181
+ let infoCount = 0;
182
+ for (const group of groups.values()) {
183
+ if (group.hasError) {
184
+ errorCount += group.count;
185
+ }
186
+ else if (group.hasWarning) {
187
+ warnCount += group.count;
188
+ }
189
+ else {
190
+ infoCount += group.count;
191
+ }
192
+ }
193
+ const parts = [];
194
+ parts.push("### Log Summary");
195
+ parts.push(`- **Errors:** ${errorCount}`);
196
+ parts.push(`- **Warnings:** ${warnCount}`);
197
+ parts.push(`- **Info/Other:** ${infoCount}`);
198
+ parts.push(`- **Unique patterns:** ${groups.size}`);
199
+ return parts.join("\n");
200
+ }
201
+ export const logsCompressor = {
202
+ name: "logs",
203
+ supportedTypes: ["logs"],
204
+ canCompress(content) {
205
+ // Check for log-like patterns
206
+ const logPatterns = [
207
+ /\[\s*(INFO|DEBUG|WARN|WARNING|ERROR|TRACE|FATAL)\s*\]/i,
208
+ /\d{4}-\d{2}-\d{2}[T\s]\d{2}:\d{2}:\d{2}/,
209
+ /^[A-Z][a-z]{2}\s+\d{1,2}\s+\d{2}:\d{2}:\d{2}/m,
210
+ ];
211
+ return logPatterns.some((pattern) => pattern.test(content));
212
+ },
213
+ compress(content, options) {
214
+ const lines = content.split("\n");
215
+ const originalTokens = countTokens(content);
216
+ // Group log lines
217
+ const groups = groupLogLines(lines, options.preservePatterns);
218
+ // Generate compressed output
219
+ const compressedLines = generateCompressedOutput(groups, options.detail);
220
+ // Add summary if not minimal
221
+ if (options.detail !== "minimal") {
222
+ compressedLines.push("");
223
+ compressedLines.push("---");
224
+ compressedLines.push(generateSummary(groups));
225
+ }
226
+ const compressed = compressedLines.join("\n");
227
+ const compressedTokens = countTokens(compressed);
228
+ const reductionPercent = originalTokens > 0 ? Math.round((1 - compressedTokens / originalTokens) * 100) : 0;
229
+ // Count omitted
230
+ const totalOriginal = Array.from(groups.values()).reduce((sum, g) => sum + g.count, 0);
231
+ const omittedCount = totalOriginal - compressedLines.filter((l) => l.trim() && !l.startsWith(" ...")).length;
232
+ return {
233
+ compressed,
234
+ stats: {
235
+ originalLines: lines.length,
236
+ compressedLines: compressedLines.length,
237
+ originalTokens,
238
+ compressedTokens,
239
+ reductionPercent,
240
+ technique: "log-grouping",
241
+ },
242
+ omittedInfo: omittedCount > 0 ? `${omittedCount} repetitive log entries summarized` : undefined,
243
+ };
244
+ },
245
+ };
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Multi-File Compressor
3
+ *
4
+ * Compresses multiple files with cross-file deduplication,
5
+ * dependency-aware skeleton extraction, and smart chunking.
6
+ */
7
+ /**
8
+ * File context for multi-file compression
9
+ */
10
+ export interface FileContext {
11
+ path: string;
12
+ content: string;
13
+ language?: string;
14
+ }
15
+ /**
16
+ * Import information extracted from files
17
+ */
18
+ export interface ExtractedImport {
19
+ source: string;
20
+ names: string[];
21
+ isDefault: boolean;
22
+ isNamespace: boolean;
23
+ raw: string;
24
+ }
25
+ /**
26
+ * Type/interface information extracted from files
27
+ */
28
+ export interface ExtractedType {
29
+ name: string;
30
+ kind: "type" | "interface" | "class" | "enum";
31
+ definition: string;
32
+ usedIn: string[];
33
+ }
34
+ /**
35
+ * Shared elements across files
36
+ */
37
+ export interface SharedElements {
38
+ imports: Array<{
39
+ source: string;
40
+ names: string[];
41
+ usedIn: string[];
42
+ }>;
43
+ types: ExtractedType[];
44
+ constants: Array<{
45
+ name: string;
46
+ value: string;
47
+ usedIn: string[];
48
+ }>;
49
+ }
50
+ /**
51
+ * Multi-file compression options
52
+ */
53
+ export interface MultiFileCompressOptions {
54
+ /** Maximum total tokens for output */
55
+ maxTokens?: number;
56
+ /** Compression strategy */
57
+ strategy: "deduplicate" | "skeleton" | "smart-chunk";
58
+ /** Patterns to preserve fully (glob patterns) */
59
+ preservePatterns?: string[];
60
+ /** Entry points for dependency analysis */
61
+ entryPoints?: string[];
62
+ /** Depth for dependency traversal */
63
+ dependencyDepth?: number;
64
+ }
65
+ /**
66
+ * Multi-file compression result
67
+ */
68
+ export interface MultiFileCompressResult {
69
+ /** Compressed context */
70
+ compressed: string;
71
+ /** Files included in output */
72
+ filesIncluded: string[];
73
+ /** Shared elements extracted */
74
+ sharedElements: SharedElements;
75
+ /** Compression statistics */
76
+ stats: {
77
+ originalTokens: number;
78
+ compressedTokens: number;
79
+ filesProcessed: number;
80
+ deduplicatedItems: number;
81
+ reductionPercent: number;
82
+ };
83
+ }
84
+ /**
85
+ * Chunk information for smart chunking
86
+ */
87
+ export interface ChunkInfo {
88
+ id: string;
89
+ files: string[];
90
+ tokens: number;
91
+ dependencies: string[];
92
+ content?: string;
93
+ }
94
+ /**
95
+ * Extract shared elements from files
96
+ */
97
+ export declare function extractSharedElements(files: FileContext[]): SharedElements;
98
+ /**
99
+ * Create chunks based on dependencies
100
+ */
101
+ export declare function createChunks(files: FileContext[], maxTokensPerChunk: number): ChunkInfo[];
102
+ /**
103
+ * Compress multiple files with cross-file deduplication
104
+ */
105
+ export declare function compressMultiFile(files: FileContext[], options: MultiFileCompressOptions): MultiFileCompressResult;
106
+ //# sourceMappingURL=multifile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multifile.d.ts","sourceRoot":"","sources":["../../src/compressors/multifile.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,GAAG,WAAW,GAAG,OAAO,GAAG,MAAM,CAAC;IAC9C,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IACtE,KAAK,EAAE,aAAa,EAAE,CAAC;IACvB,SAAS,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;CACrE;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,sCAAsC;IACtC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2BAA2B;IAC3B,QAAQ,EAAE,aAAa,GAAG,UAAU,GAAG,aAAa,CAAC;IACrD,iDAAiD;IACjD,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,2CAA2C;IAC3C,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,qCAAqC;IACrC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,yBAAyB;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,+BAA+B;IAC/B,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,gCAAgC;IAChC,cAAc,EAAE,cAAc,CAAC;IAC/B,6BAA6B;IAC7B,KAAK,EAAE;QACL,cAAc,EAAE,MAAM,CAAC;QACvB,gBAAgB,EAAE,MAAM,CAAC;QACzB,cAAc,EAAE,MAAM,CAAC;QACvB,iBAAiB,EAAE,MAAM,CAAC;QAC1B,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAqQD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,cAAc,CAkB1E;AAgKD;;GAEG;AACH,wBAAgB,YAAY,CAC1B,KAAK,EAAE,WAAW,EAAE,EACpB,iBAAiB,EAAE,MAAM,GACxB,SAAS,EAAE,CA0Db;AAMD;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,WAAW,EAAE,EACpB,OAAO,EAAE,wBAAwB,GAChC,uBAAuB,CA0GzB"}