indusagi-coding-agent 0.1.38 → 0.1.40

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 (493) hide show
  1. package/CHANGELOG.md +22 -7
  2. package/{LICENSE.md → LICENSE} +0 -1
  3. package/README.md +2 -4
  4. package/dist/cli/args.d.ts +6 -128
  5. package/dist/cli/args.d.ts.map +1 -1
  6. package/dist/cli/args.js +277 -472
  7. package/dist/cli/args.js.map +1 -1
  8. package/dist/cli/config-selector.d.ts +9 -62
  9. package/dist/cli/config-selector.d.ts.map +1 -1
  10. package/dist/cli/config-selector.js +31 -146
  11. package/dist/cli/config-selector.js.map +1 -1
  12. package/dist/cli/file-processor.d.ts +1 -69
  13. package/dist/cli/file-processor.d.ts.map +1 -1
  14. package/dist/cli/file-processor.js +36 -267
  15. package/dist/cli/file-processor.js.map +1 -1
  16. package/dist/cli/list-models.d.ts +0 -60
  17. package/dist/cli/list-models.d.ts.map +1 -1
  18. package/dist/cli/list-models.js +53 -246
  19. package/dist/cli/list-models.js.map +1 -1
  20. package/dist/cli/session-picker.d.ts +1 -72
  21. package/dist/cli/session-picker.d.ts.map +1 -1
  22. package/dist/cli/session-picker.js +57 -231
  23. package/dist/cli/session-picker.js.map +1 -1
  24. package/dist/cli.js +25 -31
  25. package/dist/cli.js.map +1 -1
  26. package/dist/config.d.ts +0 -42
  27. package/dist/config.d.ts.map +1 -1
  28. package/dist/config.js +62 -97
  29. package/dist/config.js.map +1 -1
  30. package/dist/core/agent-session.d.ts +26 -2
  31. package/dist/core/agent-session.d.ts.map +1 -1
  32. package/dist/core/agent-session.js +78 -66
  33. package/dist/core/agent-session.js.map +1 -1
  34. package/dist/core/auth-storage.d.ts +4 -95
  35. package/dist/core/auth-storage.d.ts.map +1 -1
  36. package/dist/core/auth-storage.js +233 -288
  37. package/dist/core/auth-storage.js.map +1 -1
  38. package/dist/core/bash-executor.d.ts +0 -323
  39. package/dist/core/bash-executor.d.ts.map +1 -1
  40. package/dist/core/bash-executor.js +126 -359
  41. package/dist/core/bash-executor.js.map +1 -1
  42. package/dist/core/compaction/branch-summarization.d.ts +3 -3
  43. package/dist/core/compaction/branch-summarization.js +16 -16
  44. package/dist/core/compaction/branch-summarization.js.map +1 -1
  45. package/dist/core/compaction/compaction.d.ts +3 -3
  46. package/dist/core/compaction/compaction.js +40 -40
  47. package/dist/core/compaction/compaction.js.map +1 -1
  48. package/dist/core/compaction/index.d.ts +32 -4
  49. package/dist/core/compaction/index.d.ts.map +1 -1
  50. package/dist/core/compaction/index.js +30 -4
  51. package/dist/core/compaction/index.js.map +1 -1
  52. package/dist/core/compaction/utils.d.ts +1 -19
  53. package/dist/core/compaction/utils.d.ts.map +1 -1
  54. package/dist/core/compaction/utils.js +92 -113
  55. package/dist/core/compaction/utils.js.map +1 -1
  56. package/dist/core/discover-packages.d.ts +0 -4
  57. package/dist/core/discover-packages.d.ts.map +1 -1
  58. package/dist/core/discover-packages.js +41 -44
  59. package/dist/core/discover-packages.js.map +1 -1
  60. package/dist/core/event-bus.d.ts +1 -147
  61. package/dist/core/event-bus.d.ts.map +1 -1
  62. package/dist/core/event-bus.js +17 -106
  63. package/dist/core/event-bus.js.map +1 -1
  64. package/dist/core/exec.d.ts +0 -16
  65. package/dist/core/exec.d.ts.map +1 -1
  66. package/dist/core/exec.js +18 -27
  67. package/dist/core/exec.js.map +1 -1
  68. package/dist/core/export-html/ansi-to-html.ts +262 -0
  69. package/dist/core/export-html/index.ts +433 -0
  70. package/dist/core/export-html/template.html +48 -26
  71. package/dist/core/export-html/tool-renderer.d.ts +0 -21
  72. package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
  73. package/dist/core/export-html/tool-renderer.js +35 -51
  74. package/dist/core/export-html/tool-renderer.js.map +1 -1
  75. package/dist/core/export-html/tool-renderer.ts +80 -0
  76. package/dist/core/export-html/vendor/highlight.min.js +401 -370
  77. package/dist/core/export-html/vendor/marked.min.js +71 -3
  78. package/dist/core/extensions/index.d.ts +7 -4
  79. package/dist/core/extensions/index.d.ts.map +1 -1
  80. package/dist/core/extensions/index.js +17 -3
  81. package/dist/core/extensions/index.js.map +1 -1
  82. package/dist/core/extensions/loader.d.ts +0 -6
  83. package/dist/core/extensions/loader.d.ts.map +1 -1
  84. package/dist/core/extensions/loader.js +60 -56
  85. package/dist/core/extensions/loader.js.map +1 -1
  86. package/dist/core/extensions/runner.d.ts +3 -0
  87. package/dist/core/extensions/runner.d.ts.map +1 -1
  88. package/dist/core/extensions/runner.js +48 -80
  89. package/dist/core/extensions/runner.js.map +1 -1
  90. package/dist/core/extensions/types.d.ts +50 -23
  91. package/dist/core/extensions/types.d.ts.map +1 -1
  92. package/dist/core/footer-data-provider.d.ts +2 -15
  93. package/dist/core/footer-data-provider.d.ts.map +1 -1
  94. package/dist/core/footer-data-provider.js +21 -33
  95. package/dist/core/footer-data-provider.js.map +1 -1
  96. package/dist/core/hooks/loader.js +2 -2
  97. package/dist/core/hooks/loader.js.map +1 -1
  98. package/dist/core/index.d.ts +29 -10
  99. package/dist/core/index.d.ts.map +1 -1
  100. package/dist/core/index.js +29 -10
  101. package/dist/core/index.js.map +1 -1
  102. package/dist/core/keybindings.d.ts +2 -179
  103. package/dist/core/keybindings.d.ts.map +1 -1
  104. package/dist/core/keybindings.js +64 -238
  105. package/dist/core/keybindings.js.map +1 -1
  106. package/dist/core/model-registry.d.ts +26 -181
  107. package/dist/core/model-registry.d.ts.map +1 -1
  108. package/dist/core/model-registry.js +228 -407
  109. package/dist/core/model-registry.js.map +1 -1
  110. package/dist/core/model-resolver.d.ts +0 -139
  111. package/dist/core/model-resolver.d.ts.map +1 -1
  112. package/dist/core/model-resolver.js +34 -215
  113. package/dist/core/model-resolver.js.map +1 -1
  114. package/dist/core/package-manager.d.ts +25 -57
  115. package/dist/core/package-manager.d.ts.map +1 -1
  116. package/dist/core/package-manager.js +326 -964
  117. package/dist/core/package-manager.js.map +1 -1
  118. package/dist/core/prompt-templates.d.ts +2 -34
  119. package/dist/core/prompt-templates.d.ts.map +1 -1
  120. package/dist/core/prompt-templates.js +122 -170
  121. package/dist/core/prompt-templates.js.map +1 -1
  122. package/dist/core/resource-loader.d.ts +19 -12
  123. package/dist/core/resource-loader.d.ts.map +1 -1
  124. package/dist/core/resource-loader.js +353 -467
  125. package/dist/core/resource-loader.js.map +1 -1
  126. package/dist/core/sdk.d.ts +2 -61
  127. package/dist/core/sdk.d.ts.map +1 -1
  128. package/dist/core/sdk.js +184 -252
  129. package/dist/core/sdk.js.map +1 -1
  130. package/dist/core/session-manager.d.ts +447 -1
  131. package/dist/core/session-manager.d.ts.map +1 -1
  132. package/dist/core/session-manager.js +1176 -1
  133. package/dist/core/session-manager.js.map +1 -1
  134. package/dist/core/settings-manager.d.ts +9 -12
  135. package/dist/core/settings-manager.d.ts.map +1 -1
  136. package/dist/core/settings-manager.js +170 -398
  137. package/dist/core/settings-manager.js.map +1 -1
  138. package/dist/core/skills.d.ts +2 -27
  139. package/dist/core/skills.d.ts.map +1 -1
  140. package/dist/core/skills.js +149 -212
  141. package/dist/core/skills.js.map +1 -1
  142. package/dist/core/subagents.d.ts +2 -2
  143. package/dist/core/subagents.d.ts.map +1 -1
  144. package/dist/core/subagents.js +21 -14
  145. package/dist/core/subagents.js.map +1 -1
  146. package/dist/core/system-prompt.d.ts +0 -11
  147. package/dist/core/system-prompt.d.ts.map +1 -1
  148. package/dist/core/system-prompt.js +168 -139
  149. package/dist/core/system-prompt.js.map +1 -1
  150. package/dist/core/timings.d.ts +1 -4
  151. package/dist/core/timings.d.ts.map +1 -1
  152. package/dist/core/timings.js +34 -18
  153. package/dist/core/timings.js.map +1 -1
  154. package/dist/core/todo-store.d.ts +20 -0
  155. package/dist/core/todo-store.d.ts.map +1 -0
  156. package/dist/core/todo-store.js +60 -0
  157. package/dist/core/todo-store.js.map +1 -0
  158. package/dist/core/tools/bash.d.ts +2 -0
  159. package/dist/core/tools/bash.d.ts.map +1 -0
  160. package/dist/core/tools/bash.js +2 -0
  161. package/dist/core/tools/bash.js.map +1 -0
  162. package/dist/core/tools/bg-process.d.ts +1 -6
  163. package/dist/core/tools/bg-process.d.ts.map +1 -1
  164. package/dist/core/tools/bg-process.js +4 -18
  165. package/dist/core/tools/bg-process.js.map +1 -1
  166. package/dist/core/tools/edit-diff.d.ts +9 -0
  167. package/dist/core/tools/edit-diff.d.ts.map +1 -0
  168. package/dist/core/tools/edit-diff.js +2 -0
  169. package/dist/core/tools/edit-diff.js.map +1 -0
  170. package/dist/core/tools/edit.d.ts +2 -0
  171. package/dist/core/tools/edit.d.ts.map +1 -0
  172. package/dist/core/tools/edit.js +2 -0
  173. package/dist/core/tools/edit.js.map +1 -0
  174. package/dist/core/tools/find.d.ts +2 -0
  175. package/dist/core/tools/find.d.ts.map +1 -0
  176. package/dist/core/tools/find.js +2 -0
  177. package/dist/core/tools/find.js.map +1 -0
  178. package/dist/core/tools/grep.d.ts +2 -0
  179. package/dist/core/tools/grep.d.ts.map +1 -0
  180. package/dist/core/tools/grep.js +2 -0
  181. package/dist/core/tools/grep.js.map +1 -0
  182. package/dist/core/tools/index.d.ts +8 -2
  183. package/dist/core/tools/index.d.ts.map +1 -1
  184. package/dist/core/tools/ls.d.ts +2 -0
  185. package/dist/core/tools/ls.d.ts.map +1 -0
  186. package/dist/core/tools/ls.js +2 -0
  187. package/dist/core/tools/ls.js.map +1 -0
  188. package/dist/core/tools/memory.d.ts +50 -1
  189. package/dist/core/tools/memory.d.ts.map +1 -1
  190. package/dist/core/tools/memory.js +11 -7
  191. package/dist/core/tools/memory.js.map +1 -1
  192. package/dist/core/tools/path-utils.d.ts +2 -0
  193. package/dist/core/tools/path-utils.d.ts.map +1 -0
  194. package/dist/core/tools/path-utils.js +2 -0
  195. package/dist/core/tools/path-utils.js.map +1 -0
  196. package/dist/core/tools/read.d.ts +2 -0
  197. package/dist/core/tools/read.d.ts.map +1 -0
  198. package/dist/core/tools/read.js +2 -0
  199. package/dist/core/tools/read.js.map +1 -0
  200. package/dist/core/tools/registry.d.ts +0 -15
  201. package/dist/core/tools/registry.d.ts.map +1 -1
  202. package/dist/core/tools/registry.js +13 -37
  203. package/dist/core/tools/registry.js.map +1 -1
  204. package/dist/core/tools/task.d.ts +17 -23
  205. package/dist/core/tools/task.d.ts.map +1 -1
  206. package/dist/core/tools/task.js +43 -82
  207. package/dist/core/tools/task.js.map +1 -1
  208. package/dist/core/tools/todo.d.ts +17 -20
  209. package/dist/core/tools/todo.d.ts.map +1 -1
  210. package/dist/core/tools/todo.js +79 -58
  211. package/dist/core/tools/todo.js.map +1 -1
  212. package/dist/core/tools/truncate.d.ts +2 -0
  213. package/dist/core/tools/truncate.d.ts.map +1 -0
  214. package/dist/core/tools/truncate.js +2 -0
  215. package/dist/core/tools/truncate.js.map +1 -0
  216. package/dist/core/tools/webfetch.d.ts +2 -0
  217. package/dist/core/tools/webfetch.d.ts.map +1 -0
  218. package/dist/core/tools/webfetch.js +2 -0
  219. package/dist/core/tools/webfetch.js.map +1 -0
  220. package/dist/core/tools/websearch.d.ts +2 -0
  221. package/dist/core/tools/websearch.d.ts.map +1 -0
  222. package/dist/core/tools/websearch.js +2 -0
  223. package/dist/core/tools/websearch.js.map +1 -0
  224. package/dist/core/tools/write.d.ts +2 -0
  225. package/dist/core/tools/write.d.ts.map +1 -0
  226. package/dist/core/tools/write.js +2 -0
  227. package/dist/core/tools/write.js.map +1 -0
  228. package/dist/index.d.ts +35 -29
  229. package/dist/index.d.ts.map +1 -1
  230. package/dist/index.js +33 -41
  231. package/dist/index.js.map +1 -1
  232. package/dist/main.d.ts.map +1 -1
  233. package/dist/main.js +237 -225
  234. package/dist/main.js.map +1 -1
  235. package/dist/migrations.d.ts +0 -25
  236. package/dist/migrations.d.ts.map +1 -1
  237. package/dist/migrations.js +129 -180
  238. package/dist/migrations.js.map +1 -1
  239. package/dist/modes/index.d.ts +13 -6
  240. package/dist/modes/index.d.ts.map +1 -1
  241. package/dist/modes/index.js +11 -5
  242. package/dist/modes/index.js.map +1 -1
  243. package/dist/modes/interactive/components/armin.d.ts +8 -23
  244. package/dist/modes/interactive/components/armin.d.ts.map +1 -1
  245. package/dist/modes/interactive/components/armin.js +217 -266
  246. package/dist/modes/interactive/components/armin.js.map +1 -1
  247. package/dist/modes/interactive/components/assistant-message.d.ts +2 -168
  248. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  249. package/dist/modes/interactive/components/assistant-message.js +61 -216
  250. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  251. package/dist/modes/interactive/components/bash-execution.d.ts +6 -313
  252. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  253. package/dist/modes/interactive/components/bash-execution.js +86 -403
  254. package/dist/modes/interactive/components/bash-execution.js.map +1 -1
  255. package/dist/modes/interactive/components/bordered-loader.d.ts +1 -3
  256. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
  257. package/dist/modes/interactive/components/bordered-loader.js +59 -29
  258. package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
  259. package/dist/modes/interactive/components/branch-summary-message.d.ts +3 -3
  260. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
  261. package/dist/modes/interactive/components/branch-summary-message.js +30 -17
  262. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  263. package/dist/modes/interactive/components/compaction-summary-message.d.ts +3 -3
  264. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
  265. package/dist/modes/interactive/components/compaction-summary-message.js +35 -18
  266. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
  267. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  268. package/dist/modes/interactive/components/config-selector.js +60 -68
  269. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  270. package/dist/modes/interactive/components/countdown-timer.d.ts +2 -6
  271. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
  272. package/dist/modes/interactive/components/countdown-timer.js +32 -18
  273. package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
  274. package/dist/modes/interactive/components/custom-editor.d.ts +1 -5
  275. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  276. package/dist/modes/interactive/components/custom-editor.js +45 -37
  277. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  278. package/dist/modes/interactive/components/custom-message.d.ts +5 -6
  279. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  280. package/dist/modes/interactive/components/custom-message.js +43 -53
  281. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  282. package/dist/modes/interactive/components/diff.d.ts +0 -3
  283. package/dist/modes/interactive/components/diff.d.ts.map +1 -1
  284. package/dist/modes/interactive/components/diff.js +101 -108
  285. package/dist/modes/interactive/components/diff.js.map +1 -1
  286. package/dist/modes/interactive/components/dynamic-border.d.ts +7 -2
  287. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
  288. package/dist/modes/interactive/components/dynamic-border.js +24 -4
  289. package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
  290. package/dist/modes/interactive/components/extension-editor.d.ts +5 -9
  291. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  292. package/dist/modes/interactive/components/extension-editor.js +43 -46
  293. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  294. package/dist/modes/interactive/components/extension-input.d.ts +4 -9
  295. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
  296. package/dist/modes/interactive/components/extension-input.js +45 -28
  297. package/dist/modes/interactive/components/extension-input.js.map +1 -1
  298. package/dist/modes/interactive/components/extension-selector.d.ts +7 -12
  299. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
  300. package/dist/modes/interactive/components/extension-selector.js +54 -32
  301. package/dist/modes/interactive/components/extension-selector.js.map +1 -1
  302. package/dist/modes/interactive/components/footer.d.ts +2 -11
  303. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  304. package/dist/modes/interactive/components/footer.js +135 -183
  305. package/dist/modes/interactive/components/footer.js.map +1 -1
  306. package/dist/modes/interactive/components/index.d.ts +79 -30
  307. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  308. package/dist/modes/interactive/components/index.js +73 -31
  309. package/dist/modes/interactive/components/index.js.map +1 -1
  310. package/dist/modes/interactive/components/keybinding-hints.d.ts +0 -18
  311. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
  312. package/dist/modes/interactive/components/keybinding-hints.js +24 -31
  313. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
  314. package/dist/modes/interactive/components/login-dialog.d.ts +11 -24
  315. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  316. package/dist/modes/interactive/components/login-dialog.js +89 -86
  317. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  318. package/dist/modes/interactive/components/model-selector.d.ts +15 -19
  319. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  320. package/dist/modes/interactive/components/model-selector.js +104 -157
  321. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  322. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  323. package/dist/modes/interactive/components/oauth-selector.js +5 -5
  324. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  325. package/dist/modes/interactive/components/scoped-models-selector.d.ts +12 -22
  326. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  327. package/dist/modes/interactive/components/scoped-models-selector.js +111 -132
  328. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  329. package/dist/modes/interactive/components/session-selector-search.d.ts +3 -3
  330. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
  331. package/dist/modes/interactive/components/session-selector-search.js +92 -103
  332. package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
  333. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  334. package/dist/modes/interactive/components/session-selector.js +28 -39
  335. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  336. package/dist/modes/interactive/components/settings-selector.d.ts +1 -1
  337. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  338. package/dist/modes/interactive/components/settings-selector.js +111 -203
  339. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  340. package/dist/modes/interactive/components/show-images-selector.d.ts +1 -1
  341. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
  342. package/dist/modes/interactive/components/show-images-selector.js +17 -19
  343. package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
  344. package/dist/modes/interactive/components/skill-invocation-message.d.ts +3 -3
  345. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  346. package/dist/modes/interactive/components/skill-invocation-message.js +29 -19
  347. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  348. package/dist/modes/interactive/components/theme-selector.d.ts +2 -2
  349. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
  350. package/dist/modes/interactive/components/theme-selector.js +20 -25
  351. package/dist/modes/interactive/components/theme-selector.js.map +1 -1
  352. package/dist/modes/interactive/components/thinking-selector.d.ts +1 -1
  353. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  354. package/dist/modes/interactive/components/thinking-selector.js +19 -20
  355. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  356. package/dist/modes/interactive/components/tool-execution.d.ts +12 -10
  357. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  358. package/dist/modes/interactive/components/tool-execution.js +14 -8
  359. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  360. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
  361. package/dist/modes/interactive/components/tree-selector.js +53 -60
  362. package/dist/modes/interactive/components/tree-selector.js.map +1 -1
  363. package/dist/modes/interactive/components/user-message-selector.d.ts +3 -9
  364. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
  365. package/dist/modes/interactive/components/user-message-selector.js +57 -68
  366. package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
  367. package/dist/modes/interactive/components/visual-truncate.d.ts +0 -12
  368. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
  369. package/dist/modes/interactive/components/visual-truncate.js +14 -22
  370. package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
  371. package/dist/modes/interactive/interactive-mode.d.ts +6 -0
  372. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  373. package/dist/modes/interactive/interactive-mode.js +118 -113
  374. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  375. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  376. package/dist/modes/interactive/theme/theme.js +189 -39
  377. package/dist/modes/interactive/theme/theme.js.map +1 -1
  378. package/dist/modes/rpc/rpc-client.d.ts +8 -1
  379. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  380. package/dist/modes/rpc/rpc-client.js +88 -59
  381. package/dist/modes/rpc/rpc-client.js.map +1 -1
  382. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  383. package/dist/modes/rpc/rpc-mode.js +24 -46
  384. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  385. package/dist/modes/rpc/rpc-types.d.ts +75 -409
  386. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  387. package/dist/modes/rpc/rpc-types.js +21 -360
  388. package/dist/modes/rpc/rpc-types.js.map +1 -1
  389. package/dist/observability/core/config.d.ts +28 -0
  390. package/dist/observability/core/config.d.ts.map +1 -0
  391. package/dist/observability/core/config.js +150 -0
  392. package/dist/observability/core/config.js.map +1 -0
  393. package/dist/observability/core/event-bus.d.ts +15 -0
  394. package/dist/observability/core/event-bus.d.ts.map +1 -0
  395. package/dist/observability/core/event-bus.js +37 -0
  396. package/dist/observability/core/event-bus.js.map +1 -0
  397. package/dist/observability/core/index.d.ts +12 -0
  398. package/dist/observability/core/index.d.ts.map +1 -0
  399. package/dist/observability/core/index.js +14 -0
  400. package/dist/observability/core/index.js.map +1 -0
  401. package/dist/observability/core/observability.d.ts +63 -0
  402. package/dist/observability/core/observability.d.ts.map +1 -0
  403. package/dist/observability/core/observability.js +127 -0
  404. package/dist/observability/core/observability.js.map +1 -0
  405. package/dist/observability/core/span.d.ts +37 -0
  406. package/dist/observability/core/span.d.ts.map +1 -0
  407. package/dist/observability/core/span.js +90 -0
  408. package/dist/observability/core/span.js.map +1 -0
  409. package/dist/observability/core/tracer.d.ts +22 -0
  410. package/dist/observability/core/tracer.d.ts.map +1 -0
  411. package/dist/observability/core/tracer.js +79 -0
  412. package/dist/observability/core/tracer.js.map +1 -0
  413. package/dist/observability/core/types.d.ts +155 -0
  414. package/dist/observability/core/types.d.ts.map +1 -0
  415. package/dist/observability/core/types.js +38 -0
  416. package/dist/observability/core/types.js.map +1 -0
  417. package/dist/observability/exporters/base-exporter.d.ts +16 -0
  418. package/dist/observability/exporters/base-exporter.d.ts.map +1 -0
  419. package/dist/observability/exporters/base-exporter.js +26 -0
  420. package/dist/observability/exporters/base-exporter.js.map +1 -0
  421. package/dist/observability/exporters/console-exporter.d.ts +22 -0
  422. package/dist/observability/exporters/console-exporter.d.ts.map +1 -0
  423. package/dist/observability/exporters/console-exporter.js +80 -0
  424. package/dist/observability/exporters/console-exporter.js.map +1 -0
  425. package/dist/observability/exporters/file-exporter.d.ts +31 -0
  426. package/dist/observability/exporters/file-exporter.d.ts.map +1 -0
  427. package/dist/observability/exporters/file-exporter.js +120 -0
  428. package/dist/observability/exporters/file-exporter.js.map +1 -0
  429. package/dist/observability/exporters/index.d.ts +12 -0
  430. package/dist/observability/exporters/index.d.ts.map +1 -0
  431. package/dist/observability/exporters/index.js +11 -0
  432. package/dist/observability/exporters/index.js.map +1 -0
  433. package/dist/observability/exporters/langfuse-exporter.d.ts +27 -0
  434. package/dist/observability/exporters/langfuse-exporter.d.ts.map +1 -0
  435. package/dist/observability/exporters/langfuse-exporter.js +146 -0
  436. package/dist/observability/exporters/langfuse-exporter.js.map +1 -0
  437. package/dist/observability/exporters/sentry-exporter.d.ts +22 -0
  438. package/dist/observability/exporters/sentry-exporter.d.ts.map +1 -0
  439. package/dist/observability/exporters/sentry-exporter.js +121 -0
  440. package/dist/observability/exporters/sentry-exporter.js.map +1 -0
  441. package/dist/observability/index.d.ts +3 -0
  442. package/dist/observability/index.d.ts.map +1 -0
  443. package/dist/observability/index.js +3 -0
  444. package/dist/observability/index.js.map +1 -0
  445. package/dist/utils/changelog.d.ts +1 -2
  446. package/dist/utils/changelog.d.ts.map +1 -1
  447. package/dist/utils/changelog.js +53 -61
  448. package/dist/utils/changelog.js.map +1 -1
  449. package/dist/utils/clipboard-image.d.ts.map +1 -1
  450. package/dist/utils/clipboard-image.js +77 -83
  451. package/dist/utils/clipboard-image.js.map +1 -1
  452. package/dist/utils/clipboard.d.ts.map +1 -1
  453. package/dist/utils/clipboard.js +62 -49
  454. package/dist/utils/clipboard.js.map +1 -1
  455. package/dist/utils/image-convert.d.ts +6 -6
  456. package/dist/utils/image-convert.d.ts.map +1 -1
  457. package/dist/utils/image-convert.js +29 -23
  458. package/dist/utils/image-convert.js.map +1 -1
  459. package/dist/utils/image-resize.d.ts +0 -17
  460. package/dist/utils/image-resize.d.ts.map +1 -1
  461. package/dist/utils/image-resize.js +100 -138
  462. package/dist/utils/image-resize.js.map +1 -1
  463. package/dist/utils/mime.d.ts +1 -0
  464. package/dist/utils/mime.d.ts.map +1 -1
  465. package/dist/utils/mime.js +35 -15
  466. package/dist/utils/mime.js.map +1 -1
  467. package/dist/utils/photon.d.ts +4 -15
  468. package/dist/utils/photon.d.ts.map +1 -1
  469. package/dist/utils/photon.js +71 -60
  470. package/dist/utils/photon.js.map +1 -1
  471. package/dist/utils/shell.d.ts +4 -21
  472. package/dist/utils/shell.d.ts.map +1 -1
  473. package/dist/utils/shell.js +101 -124
  474. package/dist/utils/shell.js.map +1 -1
  475. package/dist/utils/sleep.d.ts +1 -1
  476. package/dist/utils/sleep.d.ts.map +1 -1
  477. package/dist/utils/sleep.js +32 -8
  478. package/dist/utils/sleep.js.map +1 -1
  479. package/dist/utils/tools-manager.d.ts +4 -2
  480. package/dist/utils/tools-manager.d.ts.map +1 -1
  481. package/dist/utils/tools-manager.js +96 -122
  482. package/dist/utils/tools-manager.js.map +1 -1
  483. package/docs/PI_MONO_MIT_REMOVAL_GUIDE.md +2132 -0
  484. package/docs/SAME_TO_SAME_PARITY_REPORT.md +312 -0
  485. package/examples/README.md +12 -0
  486. package/package.json +62 -88
  487. package/dist/modes/interactive/theme/dark.json +0 -85
  488. package/dist/modes/interactive/theme/light.json +0 -84
  489. package/dist/modes/interactive/theme/theme-schema.json +0 -335
  490. package/docs/FEATURES.md +0 -306
  491. package/docs/MCP.md +0 -341
  492. package/docs/MEMORY.md +0 -443
  493. package/examples/mcp-servers.example.json +0 -50
@@ -1,59 +1,72 @@
1
1
  import { execSync, spawn } from "child_process";
2
2
  import { platform } from "os";
3
3
  import { isWaylandSession } from "./clipboard-image.js";
4
- export function copyToClipboard(text) {
5
- const p = platform();
6
- const options = { input: text, timeout: 5000 };
4
+ const CLIPBOARD_TIMEOUT_MS = 5000;
5
+ function writeWithExec(command, text) {
6
+ execSync(command, { input: text, timeout: CLIPBOARD_TIMEOUT_MS });
7
+ }
8
+ function writeWithSpawn(command, args, text) {
9
+ const processHandle = spawn(command, args, { stdio: ["pipe", "ignore", "ignore"] });
10
+ processHandle.stdin.on("error", () => {
11
+ // ignore broken pipe failures from short-lived clipboard utilities
12
+ });
13
+ processHandle.stdin.write(text);
14
+ processHandle.stdin.end();
15
+ processHandle.unref();
16
+ }
17
+ function commandAvailable(command) {
7
18
  try {
8
- if (p === "darwin") {
9
- execSync("pbcopy", options);
10
- }
11
- else if (p === "win32") {
12
- execSync("clip", options);
13
- }
14
- else {
15
- // Linux - try wl-copy for Wayland, fall back to xclip/xsel for X11
16
- const isWayland = isWaylandSession();
17
- if (isWayland) {
18
- try {
19
- // Verify wl-copy exists (spawn errors are async and won't be caught)
20
- execSync("which wl-copy", { stdio: "ignore" });
21
- // wl-copy with execSync hangs due to fork behavior; use spawn instead
22
- const proc = spawn("wl-copy", [], { stdio: ["pipe", "ignore", "ignore"] });
23
- proc.stdin.on("error", () => {
24
- // Ignore EPIPE errors if wl-copy exits early
25
- });
26
- proc.stdin.write(text);
27
- proc.stdin.end();
28
- proc.unref();
29
- }
30
- catch {
31
- // Fall back to xclip/xsel (works on XWayland)
32
- try {
33
- execSync("xclip -selection clipboard", options);
34
- }
35
- catch {
36
- execSync("xsel --clipboard --input", options);
37
- }
38
- }
39
- }
40
- else {
41
- try {
42
- execSync("xclip -selection clipboard", options);
43
- }
44
- catch {
45
- execSync("xsel --clipboard --input", options);
46
- }
47
- }
19
+ execSync(`which ${command}`, { stdio: "ignore", timeout: CLIPBOARD_TIMEOUT_MS });
20
+ return true;
21
+ }
22
+ catch {
23
+ return false;
24
+ }
25
+ }
26
+ function getLinuxClipboardWriters() {
27
+ const writers = [];
28
+ if (isWaylandSession()) {
29
+ if (commandAvailable("wl-copy")) {
30
+ writers.push((text) => writeWithSpawn("wl-copy", [], text));
48
31
  }
32
+ writers.push((text) => writeWithExec("xclip -selection clipboard", text));
33
+ writers.push((text) => writeWithExec("xsel --clipboard --input", text));
34
+ return writers;
49
35
  }
50
- catch (error) {
51
- const msg = error instanceof Error ? error.message : String(error);
52
- if (p === "linux") {
53
- const tools = isWaylandSession() ? "wl-copy, xclip, or xsel" : "xclip or xsel";
54
- throw new Error(`Failed to copy to clipboard. Install ${tools}: ${msg}`);
36
+ writers.push((text) => writeWithExec("xclip -selection clipboard", text));
37
+ writers.push((text) => writeWithExec("xsel --clipboard --input", text));
38
+ return writers;
39
+ }
40
+ function getClipboardWriters() {
41
+ const runtimePlatform = platform();
42
+ if (runtimePlatform === "darwin") {
43
+ return [(text) => writeWithExec("pbcopy", text)];
44
+ }
45
+ if (runtimePlatform === "win32") {
46
+ return [(text) => writeWithExec("clip", text)];
47
+ }
48
+ return getLinuxClipboardWriters();
49
+ }
50
+ function buildClipboardError(error) {
51
+ const runtimePlatform = platform();
52
+ const message = error instanceof Error ? error.message : String(error);
53
+ if (runtimePlatform === "linux") {
54
+ const requiredTools = isWaylandSession() ? "wl-copy, xclip, or xsel" : "xclip or xsel";
55
+ return new Error(`Failed to copy to clipboard. Install ${requiredTools}: ${message}`);
56
+ }
57
+ return new Error(`Failed to copy to clipboard: ${message}`);
58
+ }
59
+ export function copyToClipboard(text) {
60
+ let lastError;
61
+ for (const writer of getClipboardWriters()) {
62
+ try {
63
+ writer(text);
64
+ return;
65
+ }
66
+ catch (error) {
67
+ lastError = error;
55
68
  }
56
- throw new Error(`Failed to copy to clipboard: ${msg}`);
57
69
  }
70
+ throw buildClipboardError(lastError ?? new Error("No clipboard backend available"));
58
71
  }
59
72
  //# sourceMappingURL=clipboard.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../../src/utils/clipboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,MAAM,UAAU,eAAe,CAAC,IAAY;IAC3C,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAC;IACrB,MAAM,OAAO,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAE/C,IAAI,CAAC;QACJ,IAAI,CAAC,KAAK,QAAQ,EAAE,CAAC;YACpB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC7B,CAAC;aAAM,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC;YAC1B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC3B,CAAC;aAAM,CAAC;YACP,mEAAmE;YACnE,MAAM,SAAS,GAAG,gBAAgB,EAAE,CAAC;YACrC,IAAI,SAAS,EAAE,CAAC;gBACf,IAAI,CAAC;oBACJ,qEAAqE;oBACrE,QAAQ,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;oBAC/C,sEAAsE;oBACtE,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;oBAC3E,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;wBAC3B,6CAA6C;oBAC9C,CAAC,CAAC,CAAC;oBACH,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBACvB,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;oBACjB,IAAI,CAAC,KAAK,EAAE,CAAC;gBACd,CAAC;gBAAC,MAAM,CAAC;oBACR,8CAA8C;oBAC9C,IAAI,CAAC;wBACJ,QAAQ,CAAC,4BAA4B,EAAE,OAAO,CAAC,CAAC;oBACjD,CAAC;oBAAC,MAAM,CAAC;wBACR,QAAQ,CAAC,0BAA0B,EAAE,OAAO,CAAC,CAAC;oBAC/C,CAAC;gBACF,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,IAAI,CAAC;oBACJ,QAAQ,CAAC,4BAA4B,EAAE,OAAO,CAAC,CAAC;gBACjD,CAAC;gBAAC,MAAM,CAAC;oBACR,QAAQ,CAAC,0BAA0B,EAAE,OAAO,CAAC,CAAC;gBAC/C,CAAC;YACF,CAAC;QACF,CAAC;IACF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,GAAG,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnE,IAAI,CAAC,KAAK,OAAO,EAAE,CAAC;YACnB,MAAM,KAAK,GAAG,gBAAgB,EAAE,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,eAAe,CAAC;YAC/E,MAAM,IAAI,KAAK,CAAC,wCAAwC,KAAK,KAAK,GAAG,EAAE,CAAC,CAAC;QAC1E,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,EAAE,CAAC,CAAC;IACxD,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../../src/utils/clipboard.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,9 @@
1
- /**
2
- * Convert image to PNG format for terminal display.
3
- * Kitty graphics protocol requires PNG format (f=100).
4
- */
5
- export declare function convertToPng(base64Data: string, mimeType: string): Promise<{
1
+ export interface ConvertedImage {
6
2
  data: string;
7
3
  mimeType: string;
8
- } | null>;
4
+ }
5
+ /**
6
+ * Convert image data to PNG for terminal rendering backends that require it.
7
+ */
8
+ export declare function convertToPng(base64Data: string, mimeType: string): Promise<ConvertedImage | null>;
9
9
  //# sourceMappingURL=image-convert.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"image-convert.d.ts","sourceRoot":"","sources":["../../src/utils/image-convert.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAsB,YAAY,CACjC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAAC,CA4BpD"}
1
+ {"version":3,"file":"image-convert.d.ts","sourceRoot":"","sources":["../../src/utils/image-convert.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CACjB;AAmCD;;GAEG;AACH,wBAAsB,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAMvG"}
@@ -1,35 +1,41 @@
1
1
  import { loadPhoton } from "./photon.js";
2
- /**
3
- * Convert image to PNG format for terminal display.
4
- * Kitty graphics protocol requires PNG format (f=100).
5
- */
6
- export async function convertToPng(base64Data, mimeType) {
7
- // Already PNG, no conversion needed
8
- if (mimeType === "image/png") {
9
- return { data: base64Data, mimeType };
10
- }
2
+ function isPngMimeType(mimeType) {
3
+ return mimeType.trim().toLowerCase() === "image/png";
4
+ }
5
+ function decodeBase64Image(base64Data) {
6
+ return new Uint8Array(Buffer.from(base64Data, "base64"));
7
+ }
8
+ function encodeBase64Image(bytes) {
9
+ return Buffer.from(bytes).toString("base64");
10
+ }
11
+ async function convertBytesToPng(bytes) {
11
12
  const photon = await loadPhoton();
12
13
  if (!photon) {
13
- // Photon not available, can't convert
14
14
  return null;
15
15
  }
16
+ let image;
16
17
  try {
17
- const bytes = new Uint8Array(Buffer.from(base64Data, "base64"));
18
- const image = photon.PhotonImage.new_from_byteslice(bytes);
19
- try {
20
- const pngBuffer = image.get_bytes();
21
- return {
22
- data: Buffer.from(pngBuffer).toString("base64"),
23
- mimeType: "image/png",
24
- };
25
- }
26
- finally {
27
- image.free();
28
- }
18
+ image = photon.PhotonImage.new_from_byteslice(bytes);
19
+ const pngBytes = image.get_bytes();
20
+ return {
21
+ data: encodeBase64Image(pngBytes),
22
+ mimeType: "image/png",
23
+ };
29
24
  }
30
25
  catch {
31
- // Conversion failed
32
26
  return null;
33
27
  }
28
+ finally {
29
+ image?.free();
30
+ }
31
+ }
32
+ /**
33
+ * Convert image data to PNG for terminal rendering backends that require it.
34
+ */
35
+ export async function convertToPng(base64Data, mimeType) {
36
+ if (isPngMimeType(mimeType)) {
37
+ return { data: base64Data, mimeType: "image/png" };
38
+ }
39
+ return convertBytesToPng(decodeBase64Image(base64Data));
34
40
  }
35
41
  //# sourceMappingURL=image-convert.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"image-convert.js","sourceRoot":"","sources":["../../src/utils/image-convert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CACjC,UAAkB,EAClB,QAAgB;IAEhB,oCAAoC;IACpC,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;QAC9B,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;IACvC,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;IAClC,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,sCAAsC;QACtC,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,CAAC;QACJ,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;QAChE,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QAC3D,IAAI,CAAC;YACJ,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;YACpC,OAAO;gBACN,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAC/C,QAAQ,EAAE,WAAW;aACrB,CAAC;QACH,CAAC;gBAAS,CAAC;YACV,KAAK,CAAC,IAAI,EAAE,CAAC;QACd,CAAC;IACF,CAAC;IAAC,MAAM,CAAC;QACR,oBAAoB;QACpB,OAAO,IAAI,CAAC;IACb,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"image-convert.js","sourceRoot":"","sources":["../../src/utils/image-convert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAOzC,SAAS,aAAa,CAAC,QAAgB;IACtC,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,WAAW,CAAC;AACtD,CAAC;AAED,SAAS,iBAAiB,CAAC,UAAkB;IAC5C,OAAO,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAiB;IAC3C,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC9C,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,KAAiB;IACjD,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;IAClC,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACb,CAAC;IAED,IAAI,KAA2E,CAAC;IAChF,IAAI,CAAC;QACJ,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QACnC,OAAO;YACN,IAAI,EAAE,iBAAiB,CAAC,QAAQ,CAAC;YACjC,QAAQ,EAAE,WAAW;SACrB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,IAAI,CAAC;IACb,CAAC;YAAS,CAAC;QACV,KAAK,EAAE,IAAI,EAAE,CAAC;IACf,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,UAAkB,EAAE,QAAgB;IACtE,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;IACpD,CAAC;IAED,OAAO,iBAAiB,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC,CAAC;AACzD,CAAC"}
@@ -14,23 +14,6 @@ export interface ResizedImage {
14
14
  height: number;
15
15
  wasResized: boolean;
16
16
  }
17
- /**
18
- * Resize an image to fit within the specified max dimensions and file size.
19
- * Returns the original image if it already fits within the limits.
20
- *
21
- * Uses Photon (Rust/WASM) for image processing. If Photon is not available,
22
- * returns the original image unchanged.
23
- *
24
- * Strategy for staying under maxBytes:
25
- * 1. First resize to maxWidth/maxHeight
26
- * 2. Try both PNG and JPEG formats, pick the smaller one
27
- * 3. If still too large, try JPEG with decreasing quality
28
- * 4. If still too large, progressively reduce dimensions
29
- */
30
17
  export declare function resizeImage(img: ImageContent, options?: ImageResizeOptions): Promise<ResizedImage>;
31
- /**
32
- * Format a dimension note for resized images.
33
- * This helps the model understand the coordinate mapping.
34
- */
35
18
  export declare function formatDimensionNote(result: ResizedImage): string | undefined;
36
19
  //# sourceMappingURL=image-resize.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"image-resize.d.ts","sourceRoot":"","sources":["../../src/utils/image-resize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;CACpB;AAoBD;;;;;;;;;;;;GAYG;AACH,wBAAsB,WAAW,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAsKxG;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,GAAG,SAAS,CAO5E"}
1
+ {"version":3,"file":"image-resize.d.ts","sourceRoot":"","sources":["../../src/utils/image-resize.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;CACpB;AA8KD,wBAAsB,WAAW,CAAC,GAAG,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAExG;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,GAAG,SAAS,CAM5E"}
@@ -1,57 +1,95 @@
1
1
  import { loadPhoton } from "./photon.js";
2
- // 4.5MB - provides headroom below Anthropic's 5MB limit
3
- const DEFAULT_MAX_BYTES = 4.5 * 1024 * 1024;
4
- const DEFAULT_OPTIONS = {
2
+ const DEFAULT_RESIZE_BUDGET = {
5
3
  maxWidth: 2000,
6
4
  maxHeight: 2000,
7
- maxBytes: DEFAULT_MAX_BYTES,
5
+ maxBytes: 4.5 * 1024 * 1024,
8
6
  jpegQuality: 80,
9
7
  };
10
- /** Helper to pick the smaller of two buffers */
11
- function pickSmaller(a, b) {
8
+ const QUALITY_STEPS = [85, 70, 55, 40];
9
+ const SCALE_STEPS = [1, 0.75, 0.5, 0.35, 0.25];
10
+ function mergeResizeBudget(options) {
11
+ return { ...DEFAULT_RESIZE_BUDGET, ...options };
12
+ }
13
+ function createPassthroughResult(img) {
14
+ return {
15
+ data: img.data,
16
+ mimeType: img.mimeType,
17
+ originalWidth: 0,
18
+ originalHeight: 0,
19
+ width: 0,
20
+ height: 0,
21
+ wasResized: false,
22
+ };
23
+ }
24
+ function decodeImageContent(img) {
25
+ return new Uint8Array(Buffer.from(img.data, "base64"));
26
+ }
27
+ function computeTargetDimensions(width, height, budget) {
28
+ let nextWidth = width;
29
+ let nextHeight = height;
30
+ if (nextWidth > budget.maxWidth) {
31
+ nextHeight = Math.round((nextHeight * budget.maxWidth) / nextWidth);
32
+ nextWidth = budget.maxWidth;
33
+ }
34
+ if (nextHeight > budget.maxHeight) {
35
+ nextWidth = Math.round((nextWidth * budget.maxHeight) / nextHeight);
36
+ nextHeight = budget.maxHeight;
37
+ }
38
+ return { width: nextWidth, height: nextHeight };
39
+ }
40
+ function pickSmallerVariant(a, b) {
12
41
  return a.buffer.length <= b.buffer.length ? a : b;
13
42
  }
14
- /**
15
- * Resize an image to fit within the specified max dimensions and file size.
16
- * Returns the original image if it already fits within the limits.
17
- *
18
- * Uses Photon (Rust/WASM) for image processing. If Photon is not available,
19
- * returns the original image unchanged.
20
- *
21
- * Strategy for staying under maxBytes:
22
- * 1. First resize to maxWidth/maxHeight
23
- * 2. Try both PNG and JPEG formats, pick the smaller one
24
- * 3. If still too large, try JPEG with decreasing quality
25
- * 4. If still too large, progressively reduce dimensions
26
- */
27
- export async function resizeImage(img, options) {
28
- const opts = { ...DEFAULT_OPTIONS, ...options };
29
- const inputBuffer = Buffer.from(img.data, "base64");
30
- const photon = await loadPhoton();
31
- if (!photon) {
32
- // Photon not available, return original image
33
- return {
34
- data: img.data,
35
- mimeType: img.mimeType,
36
- originalWidth: 0,
37
- originalHeight: 0,
38
- width: 0,
39
- height: 0,
40
- wasResized: false,
43
+ function encodeBestVariant(photon, image, width, height, jpegQuality) {
44
+ const resized = photon.resize(image, width, height, photon.SamplingFilter.Lanczos3);
45
+ try {
46
+ const pngVariant = {
47
+ buffer: resized.get_bytes(),
48
+ mimeType: "image/png",
49
+ width,
50
+ height,
51
+ };
52
+ const jpegVariant = {
53
+ buffer: resized.get_bytes_jpeg(jpegQuality),
54
+ mimeType: "image/jpeg",
55
+ width,
56
+ height,
41
57
  };
58
+ return pickSmallerVariant(pngVariant, jpegVariant);
59
+ }
60
+ finally {
61
+ resized.free();
62
+ }
63
+ }
64
+ function toResizedImage(variant, originalWidth, originalHeight) {
65
+ return {
66
+ data: Buffer.from(variant.buffer).toString("base64"),
67
+ mimeType: variant.mimeType,
68
+ originalWidth,
69
+ originalHeight,
70
+ width: variant.width,
71
+ height: variant.height,
72
+ wasResized: true,
73
+ };
74
+ }
75
+ async function resizeWithBudget(img, budget) {
76
+ const loadedPhoton = await loadPhoton();
77
+ if (!loadedPhoton) {
78
+ return createPassthroughResult(img);
42
79
  }
80
+ const photon = loadedPhoton;
43
81
  let image;
44
82
  try {
45
- image = photon.PhotonImage.new_from_byteslice(new Uint8Array(inputBuffer));
83
+ image = photon.PhotonImage.new_from_byteslice(decodeImageContent(img));
46
84
  const originalWidth = image.get_width();
47
85
  const originalHeight = image.get_height();
48
- const format = img.mimeType?.split("/")[1] ?? "png";
49
- // Check if already within all limits (dimensions AND size)
50
- const originalSize = inputBuffer.length;
51
- if (originalWidth <= opts.maxWidth && originalHeight <= opts.maxHeight && originalSize <= opts.maxBytes) {
86
+ const originalBytes = Buffer.from(img.data, "base64").length;
87
+ if (originalWidth <= budget.maxWidth &&
88
+ originalHeight <= budget.maxHeight &&
89
+ originalBytes <= budget.maxBytes) {
52
90
  return {
53
91
  data: img.data,
54
- mimeType: img.mimeType ?? `image/${format}`,
92
+ mimeType: img.mimeType,
55
93
  originalWidth,
56
94
  originalHeight,
57
95
  width: originalWidth,
@@ -59,120 +97,44 @@ export async function resizeImage(img, options) {
59
97
  wasResized: false,
60
98
  };
61
99
  }
62
- // Calculate initial dimensions respecting max limits
63
- let targetWidth = originalWidth;
64
- let targetHeight = originalHeight;
65
- if (targetWidth > opts.maxWidth) {
66
- targetHeight = Math.round((targetHeight * opts.maxWidth) / targetWidth);
67
- targetWidth = opts.maxWidth;
100
+ const target = computeTargetDimensions(originalWidth, originalHeight, budget);
101
+ let bestVariant = encodeBestVariant(photon, image, target.width, target.height, budget.jpegQuality);
102
+ if (bestVariant.buffer.length <= budget.maxBytes) {
103
+ return toResizedImage(bestVariant, originalWidth, originalHeight);
68
104
  }
69
- if (targetHeight > opts.maxHeight) {
70
- targetWidth = Math.round((targetWidth * opts.maxHeight) / targetHeight);
71
- targetHeight = opts.maxHeight;
72
- }
73
- // Helper to resize and encode in both formats, returning the smaller one
74
- function tryBothFormats(width, height, jpegQuality) {
75
- const resized = photon.resize(image, width, height, photon.SamplingFilter.Lanczos3);
76
- try {
77
- const pngBuffer = resized.get_bytes();
78
- const jpegBuffer = resized.get_bytes_jpeg(jpegQuality);
79
- return pickSmaller({ buffer: pngBuffer, mimeType: "image/png" }, { buffer: jpegBuffer, mimeType: "image/jpeg" });
80
- }
81
- finally {
82
- resized.free();
83
- }
84
- }
85
- // Try to produce an image under maxBytes
86
- const qualitySteps = [85, 70, 55, 40];
87
- const scaleSteps = [1.0, 0.75, 0.5, 0.35, 0.25];
88
- let best;
89
- let finalWidth = targetWidth;
90
- let finalHeight = targetHeight;
91
- // First attempt: resize to target dimensions, try both formats
92
- best = tryBothFormats(targetWidth, targetHeight, opts.jpegQuality);
93
- if (best.buffer.length <= opts.maxBytes) {
94
- return {
95
- data: Buffer.from(best.buffer).toString("base64"),
96
- mimeType: best.mimeType,
97
- originalWidth,
98
- originalHeight,
99
- width: finalWidth,
100
- height: finalHeight,
101
- wasResized: true,
102
- };
103
- }
104
- // Still too large - try JPEG with decreasing quality
105
- for (const quality of qualitySteps) {
106
- best = tryBothFormats(targetWidth, targetHeight, quality);
107
- if (best.buffer.length <= opts.maxBytes) {
108
- return {
109
- data: Buffer.from(best.buffer).toString("base64"),
110
- mimeType: best.mimeType,
111
- originalWidth,
112
- originalHeight,
113
- width: finalWidth,
114
- height: finalHeight,
115
- wasResized: true,
116
- };
105
+ for (const quality of QUALITY_STEPS) {
106
+ bestVariant = encodeBestVariant(photon, image, target.width, target.height, quality);
107
+ if (bestVariant.buffer.length <= budget.maxBytes) {
108
+ return toResizedImage(bestVariant, originalWidth, originalHeight);
117
109
  }
118
110
  }
119
- // Still too large - reduce dimensions progressively
120
- for (const scale of scaleSteps) {
121
- finalWidth = Math.round(targetWidth * scale);
122
- finalHeight = Math.round(targetHeight * scale);
123
- if (finalWidth < 100 || finalHeight < 100) {
111
+ for (const scale of SCALE_STEPS) {
112
+ const width = Math.round(target.width * scale);
113
+ const height = Math.round(target.height * scale);
114
+ if (width < 100 || height < 100) {
124
115
  break;
125
116
  }
126
- for (const quality of qualitySteps) {
127
- best = tryBothFormats(finalWidth, finalHeight, quality);
128
- if (best.buffer.length <= opts.maxBytes) {
129
- return {
130
- data: Buffer.from(best.buffer).toString("base64"),
131
- mimeType: best.mimeType,
132
- originalWidth,
133
- originalHeight,
134
- width: finalWidth,
135
- height: finalHeight,
136
- wasResized: true,
137
- };
117
+ for (const quality of QUALITY_STEPS) {
118
+ bestVariant = encodeBestVariant(photon, image, width, height, quality);
119
+ if (bestVariant.buffer.length <= budget.maxBytes) {
120
+ return toResizedImage(bestVariant, originalWidth, originalHeight);
138
121
  }
139
122
  }
140
123
  }
141
- // Last resort: return smallest version we produced
142
- return {
143
- data: Buffer.from(best.buffer).toString("base64"),
144
- mimeType: best.mimeType,
145
- originalWidth,
146
- originalHeight,
147
- width: finalWidth,
148
- height: finalHeight,
149
- wasResized: true,
150
- };
124
+ return toResizedImage(bestVariant, originalWidth, originalHeight);
151
125
  }
152
126
  catch {
153
- // Failed to load image
154
- return {
155
- data: img.data,
156
- mimeType: img.mimeType,
157
- originalWidth: 0,
158
- originalHeight: 0,
159
- width: 0,
160
- height: 0,
161
- wasResized: false,
162
- };
127
+ return createPassthroughResult(img);
163
128
  }
164
129
  finally {
165
- if (image) {
166
- image.free();
167
- }
130
+ image?.free();
168
131
  }
169
132
  }
170
- /**
171
- * Format a dimension note for resized images.
172
- * This helps the model understand the coordinate mapping.
173
- */
133
+ export async function resizeImage(img, options) {
134
+ return resizeWithBudget(img, mergeResizeBudget(options));
135
+ }
174
136
  export function formatDimensionNote(result) {
175
- if (!result.wasResized) {
137
+ if (!result.wasResized || result.width === 0) {
176
138
  return undefined;
177
139
  }
178
140
  const scale = result.originalWidth / result.width;
@@ -1 +1 @@
1
- {"version":3,"file":"image-resize.js","sourceRoot":"","sources":["../../src/utils/image-resize.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAmBzC,wDAAwD;AACxD,MAAM,iBAAiB,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC;AAE5C,MAAM,eAAe,GAAiC;IACrD,QAAQ,EAAE,IAAI;IACd,SAAS,EAAE,IAAI;IACf,QAAQ,EAAE,iBAAiB;IAC3B,WAAW,EAAE,EAAE;CACf,CAAC;AAEF,gDAAgD;AAChD,SAAS,WAAW,CACnB,CAA2C,EAC3C,CAA2C;IAE3C,OAAO,CAAC,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,GAAiB,EAAE,OAA4B;IAChF,MAAM,IAAI,GAAG,EAAE,GAAG,eAAe,EAAE,GAAG,OAAO,EAAE,CAAC;IAChD,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAEpD,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;IAClC,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,8CAA8C;QAC9C,OAAO;YACN,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,aAAa,EAAE,CAAC;YAChB,cAAc,EAAE,CAAC;YACjB,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;YACT,UAAU,EAAE,KAAK;SACjB,CAAC;IACH,CAAC;IAED,IAAI,KAA2E,CAAC;IAChF,IAAI,CAAC;QACJ,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,kBAAkB,CAAC,IAAI,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC;QAE3E,MAAM,aAAa,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;QACxC,MAAM,cAAc,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;QAC1C,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC;QAEpD,2DAA2D;QAC3D,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC;QACxC,IAAI,aAAa,IAAI,IAAI,CAAC,QAAQ,IAAI,cAAc,IAAI,IAAI,CAAC,SAAS,IAAI,YAAY,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACzG,OAAO;gBACN,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,SAAS,MAAM,EAAE;gBAC3C,aAAa;gBACb,cAAc;gBACd,KAAK,EAAE,aAAa;gBACpB,MAAM,EAAE,cAAc;gBACtB,UAAU,EAAE,KAAK;aACjB,CAAC;QACH,CAAC;QAED,qDAAqD;QACrD,IAAI,WAAW,GAAG,aAAa,CAAC;QAChC,IAAI,YAAY,GAAG,cAAc,CAAC;QAElC,IAAI,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;YACjC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC,CAAC;YACxE,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC7B,CAAC;QACD,IAAI,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;YACnC,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,YAAY,CAAC,CAAC;YACxE,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC;QAC/B,CAAC;QAED,yEAAyE;QACzE,SAAS,cAAc,CACtB,KAAa,EACb,MAAc,EACd,WAAmB;YAEnB,MAAM,OAAO,GAAG,MAAO,CAAC,MAAM,CAAC,KAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;YAEvF,IAAI,CAAC;gBACJ,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;gBACtC,MAAM,UAAU,GAAG,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;gBAEvD,OAAO,WAAW,CACjB,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,EAC5C,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,CAC9C,CAAC;YACH,CAAC;oBAAS,CAAC;gBACV,OAAO,CAAC,IAAI,EAAE,CAAC;YAChB,CAAC;QACF,CAAC;QAED,yCAAyC;QACzC,MAAM,YAAY,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;QACtC,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QAEhD,IAAI,IAA8C,CAAC;QACnD,IAAI,UAAU,GAAG,WAAW,CAAC;QAC7B,IAAI,WAAW,GAAG,YAAY,CAAC;QAE/B,+DAA+D;QAC/D,IAAI,GAAG,cAAc,CAAC,WAAW,EAAE,YAAY,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAEnE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACzC,OAAO;gBACN,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBACjD,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,aAAa;gBACb,cAAc;gBACd,KAAK,EAAE,UAAU;gBACjB,MAAM,EAAE,WAAW;gBACnB,UAAU,EAAE,IAAI;aAChB,CAAC;QACH,CAAC;QAED,qDAAqD;QACrD,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;YACpC,IAAI,GAAG,cAAc,CAAC,WAAW,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;YAE1D,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACzC,OAAO;oBACN,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;oBACjD,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,aAAa;oBACb,cAAc;oBACd,KAAK,EAAE,UAAU;oBACjB,MAAM,EAAE,WAAW;oBACnB,UAAU,EAAE,IAAI;iBAChB,CAAC;YACH,CAAC;QACF,CAAC;QAED,oDAAoD;QACpD,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;YAChC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC,CAAC;YAC7C,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,KAAK,CAAC,CAAC;YAE/C,IAAI,UAAU,GAAG,GAAG,IAAI,WAAW,GAAG,GAAG,EAAE,CAAC;gBAC3C,MAAM;YACP,CAAC;YAED,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;gBACpC,IAAI,GAAG,cAAc,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;gBAExD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACzC,OAAO;wBACN,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;wBACjD,QAAQ,EAAE,IAAI,CAAC,QAAQ;wBACvB,aAAa;wBACb,cAAc;wBACd,KAAK,EAAE,UAAU;wBACjB,MAAM,EAAE,WAAW;wBACnB,UAAU,EAAE,IAAI;qBAChB,CAAC;gBACH,CAAC;YACF,CAAC;QACF,CAAC;QAED,mDAAmD;QACnD,OAAO;YACN,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC;YACjD,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,aAAa;YACb,cAAc;YACd,KAAK,EAAE,UAAU;YACjB,MAAM,EAAE,WAAW;YACnB,UAAU,EAAE,IAAI;SAChB,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACR,uBAAuB;QACvB,OAAO;YACN,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,aAAa,EAAE,CAAC;YAChB,cAAc,EAAE,CAAC;YACjB,KAAK,EAAE,CAAC;YACR,MAAM,EAAE,CAAC;YACT,UAAU,EAAE,KAAK;SACjB,CAAC;IACH,CAAC;YAAS,CAAC;QACV,IAAI,KAAK,EAAE,CAAC;YACX,KAAK,CAAC,IAAI,EAAE,CAAC;QACd,CAAC;IACF,CAAC;AACF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAAoB;IACvD,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IAClB,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC;IAClD,OAAO,oBAAoB,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,cAAc,kBAAkB,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,MAAM,6BAA6B,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,6BAA6B,CAAC;AACnM,CAAC"}
1
+ {"version":3,"file":"image-resize.js","sourceRoot":"","sources":["../../src/utils/image-resize.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,3 @@
1
+ export declare function isSupportedImageMimeType(mimeType: string | null | undefined): mimeType is string;
1
2
  export declare function detectSupportedImageMimeTypeFromFile(filePath: string): Promise<string | null>;
2
3
  //# sourceMappingURL=mime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mime.d.ts","sourceRoot":"","sources":["../../src/utils/mime.ts"],"names":[],"mappings":"AAOA,wBAAsB,oCAAoC,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAsBnG"}
1
+ {"version":3,"file":"mime.d.ts","sourceRoot":"","sources":["../../src/utils/mime.ts"],"names":[],"mappings":"AAkCA,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,QAAQ,IAAI,MAAM,CAEhG;AAMD,wBAAsB,oCAAoC,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAUnG"}