@tomsun28/pizza 0.0.9 → 0.1.1

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 (382) hide show
  1. package/README.md +20 -143
  2. package/README.zh-CN.md +36 -0
  3. package/dist/bun/cli.d.ts +2 -0
  4. package/dist/bun/cli.js +6 -0
  5. package/dist/bun/register-bedrock.d.ts +1 -0
  6. package/dist/bun/register-bedrock.js +3 -0
  7. package/dist/cli/args.d.ts +48 -0
  8. package/dist/cli/args.js +330 -0
  9. package/dist/cli/config-selector.d.ts +13 -0
  10. package/dist/cli/config-selector.js +30 -0
  11. package/dist/cli/file-processor.d.ts +14 -0
  12. package/dist/cli/file-processor.js +82 -0
  13. package/dist/cli/initial-message.d.ts +17 -0
  14. package/dist/cli/initial-message.js +21 -0
  15. package/dist/cli/list-models.d.ts +8 -0
  16. package/dist/cli/list-models.js +96 -0
  17. package/dist/cli.d.ts +2 -0
  18. package/dist/cli.js +68 -0
  19. package/dist/config.d.ts +79 -0
  20. package/dist/config.js +223 -0
  21. package/dist/core/agent/index.d.ts +6 -0
  22. package/dist/core/agent/index.js +6 -0
  23. package/dist/core/agent/types.d.ts +202 -0
  24. package/dist/core/agent/types.js +51 -0
  25. package/dist/core/auth-storage.d.ts +135 -0
  26. package/dist/core/auth-storage.js +417 -0
  27. package/dist/core/bash-executor.d.ts +31 -0
  28. package/dist/core/bash-executor.js +107 -0
  29. package/dist/core/compaction/branch-summarization.d.ts +87 -0
  30. package/dist/core/compaction/branch-summarization.js +242 -0
  31. package/dist/core/compaction/compaction-engine.d.ts +40 -0
  32. package/dist/core/compaction/compaction-engine.js +292 -0
  33. package/dist/core/compaction/compaction.d.ts +106 -0
  34. package/dist/core/compaction/compaction.js +295 -0
  35. package/dist/core/compaction/index.d.ts +7 -0
  36. package/dist/core/compaction/index.js +7 -0
  37. package/dist/core/compaction/utils.d.ts +37 -0
  38. package/dist/core/compaction/utils.js +152 -0
  39. package/dist/core/defaults.d.ts +2 -0
  40. package/dist/core/defaults.js +1 -0
  41. package/dist/core/diagnostics.d.ts +14 -0
  42. package/dist/core/diagnostics.js +1 -0
  43. package/dist/core/event-bus.d.ts +8 -0
  44. package/dist/core/event-bus.js +24 -0
  45. package/dist/core/event-store/events.d.ts +465 -0
  46. package/dist/core/event-store/events.js +6 -0
  47. package/dist/core/event-store/index.d.ts +10 -0
  48. package/dist/core/event-store/index.js +10 -0
  49. package/dist/core/event-store/sqlite-store.d.ts +27 -0
  50. package/dist/core/event-store/sqlite-store.js +275 -0
  51. package/dist/core/event-store/store.d.ts +91 -0
  52. package/dist/core/event-store/store.js +7 -0
  53. package/dist/core/event-store/thread-scoped-store.d.ts +29 -0
  54. package/dist/core/event-store/thread-scoped-store.js +50 -0
  55. package/dist/core/event-store/types.d.ts +70 -0
  56. package/dist/core/event-store/types.js +7 -0
  57. package/dist/core/event-store/workspace.d.ts +37 -0
  58. package/dist/core/event-store/workspace.js +71 -0
  59. package/dist/core/exec.d.ts +28 -0
  60. package/dist/core/exec.js +74 -0
  61. package/dist/core/export-html/ansi-to-html.d.ts +21 -0
  62. package/dist/core/export-html/ansi-to-html.js +248 -0
  63. package/dist/core/export-html/index.d.ts +29 -0
  64. package/dist/core/export-html/index.js +186 -0
  65. package/dist/core/export-html/template.css +1017 -0
  66. package/dist/core/export-html/template.html +55 -0
  67. package/dist/core/export-html/template.js +1742 -0
  68. package/dist/core/export-html/tool-renderer.d.ts +39 -0
  69. package/dist/core/export-html/tool-renderer.js +94 -0
  70. package/dist/core/export-html/vendor/highlight.min.js +1213 -0
  71. package/dist/core/export-html/vendor/marked.min.js +6 -0
  72. package/dist/core/extensions/index.d.ts +12 -0
  73. package/dist/core/extensions/index.js +9 -0
  74. package/dist/core/extensions/loader.d.ts +24 -0
  75. package/dist/core/extensions/loader.js +492 -0
  76. package/dist/core/extensions/runner.d.ts +167 -0
  77. package/dist/core/extensions/runner.js +898 -0
  78. package/dist/core/extensions/session-context.d.ts +67 -0
  79. package/dist/core/extensions/session-context.js +272 -0
  80. package/dist/core/extensions/types.d.ts +1147 -0
  81. package/dist/core/extensions/types.js +44 -0
  82. package/dist/core/extensions/wrapper.d.ts +19 -0
  83. package/dist/core/extensions/wrapper.js +21 -0
  84. package/dist/core/footer-data-provider.d.ts +47 -0
  85. package/dist/core/footer-data-provider.js +321 -0
  86. package/dist/core/goal/index.d.ts +3 -0
  87. package/dist/core/goal/index.js +1 -0
  88. package/dist/core/goal/scheduler.d.ts +83 -0
  89. package/dist/core/goal/scheduler.js +154 -0
  90. package/dist/core/goal/types.d.ts +182 -0
  91. package/dist/core/goal/types.js +11 -0
  92. package/dist/core/index.d.ts +8 -0
  93. package/dist/core/index.js +8 -0
  94. package/dist/core/intent/classifier.d.ts +53 -0
  95. package/dist/core/intent/classifier.js +353 -0
  96. package/dist/core/intent/index.d.ts +8 -0
  97. package/dist/core/intent/index.js +8 -0
  98. package/dist/core/intent/tool-adapter.d.ts +31 -0
  99. package/dist/core/intent/tool-adapter.js +168 -0
  100. package/dist/core/intent/types.d.ts +71 -0
  101. package/dist/core/intent/types.js +6 -0
  102. package/dist/core/keybindings.d.ts +297 -0
  103. package/dist/core/keybindings.js +250 -0
  104. package/dist/core/messages.d.ts +30 -0
  105. package/dist/core/messages.js +134 -0
  106. package/dist/core/model-registry.d.ts +131 -0
  107. package/dist/core/model-registry.js +634 -0
  108. package/dist/core/model-resolver.d.ts +109 -0
  109. package/dist/core/model-resolver.js +486 -0
  110. package/dist/core/output-guard.d.ts +5 -0
  111. package/dist/core/output-guard.js +58 -0
  112. package/dist/core/package-manager.d.ts +196 -0
  113. package/dist/core/package-manager.js +1873 -0
  114. package/dist/core/projection/boundary-inferrer.d.ts +58 -0
  115. package/dist/core/projection/boundary-inferrer.js +122 -0
  116. package/dist/core/projection/event-to-message.d.ts +35 -0
  117. package/dist/core/projection/event-to-message.js +253 -0
  118. package/dist/core/projection/goal-projection.d.ts +67 -0
  119. package/dist/core/projection/goal-projection.js +339 -0
  120. package/dist/core/projection/index.d.ts +13 -0
  121. package/dist/core/projection/index.js +13 -0
  122. package/dist/core/projection/session-manager.d.ts +100 -0
  123. package/dist/core/projection/session-manager.js +331 -0
  124. package/dist/core/projection/session-projection.d.ts +58 -0
  125. package/dist/core/projection/session-projection.js +257 -0
  126. package/dist/core/projection/task-history.d.ts +13 -0
  127. package/dist/core/projection/task-history.js +61 -0
  128. package/dist/core/projection/timeline-projection.d.ts +82 -0
  129. package/dist/core/projection/timeline-projection.js +276 -0
  130. package/dist/core/projection/types.d.ts +69 -0
  131. package/dist/core/projection/types.js +6 -0
  132. package/dist/core/prompt-templates.d.ts +51 -0
  133. package/dist/core/prompt-templates.js +249 -0
  134. package/dist/core/resolve-config-value.d.ts +22 -0
  135. package/dist/core/resolve-config-value.js +125 -0
  136. package/dist/core/resource-loader.d.ts +193 -0
  137. package/dist/core/resource-loader.js +685 -0
  138. package/dist/core/runtime/ai-client.d.ts +12 -0
  139. package/dist/core/runtime/ai-client.js +153 -0
  140. package/dist/core/runtime/checkpoint.d.ts +12 -0
  141. package/dist/core/runtime/checkpoint.js +78 -0
  142. package/dist/core/runtime/index.d.ts +12 -0
  143. package/dist/core/runtime/index.js +12 -0
  144. package/dist/core/runtime/llm-types.d.ts +99 -0
  145. package/dist/core/runtime/llm-types.js +6 -0
  146. package/dist/core/runtime/local-runtime.d.ts +23 -0
  147. package/dist/core/runtime/local-runtime.js +59 -0
  148. package/dist/core/runtime/policies.d.ts +72 -0
  149. package/dist/core/runtime/policies.js +37 -0
  150. package/dist/core/runtime/reactor.d.ts +213 -0
  151. package/dist/core/runtime/reactor.js +992 -0
  152. package/dist/core/runtime/runtime.d.ts +191 -0
  153. package/dist/core/runtime/runtime.js +449 -0
  154. package/dist/core/runtime/types.d.ts +42 -0
  155. package/dist/core/runtime/types.js +1 -0
  156. package/dist/core/sdk.d.ts +12 -0
  157. package/dist/core/sdk.js +10 -0
  158. package/dist/core/session-context-builder.d.ts +9 -0
  159. package/dist/core/session-context-builder.js +87 -0
  160. package/dist/core/session-cwd.d.ts +18 -0
  161. package/dist/core/session-cwd.js +36 -0
  162. package/dist/core/session-facade-factory.d.ts +79 -0
  163. package/dist/core/session-facade-factory.js +460 -0
  164. package/dist/core/session-facade.d.ts +57 -0
  165. package/dist/core/session-facade.js +91 -0
  166. package/dist/core/session-listing.d.ts +30 -0
  167. package/dist/core/session-listing.js +168 -0
  168. package/dist/core/session-reader.d.ts +19 -0
  169. package/dist/core/session-reader.js +101 -0
  170. package/dist/core/session-ref.d.ts +7 -0
  171. package/dist/core/session-ref.js +25 -0
  172. package/dist/core/session-services.d.ts +51 -0
  173. package/dist/core/session-services.js +90 -0
  174. package/dist/core/session-stats.d.ts +43 -0
  175. package/dist/core/session-stats.js +41 -0
  176. package/dist/core/settings-manager.d.ts +236 -0
  177. package/dist/core/settings-manager.js +706 -0
  178. package/dist/core/skill-block-parser.d.ts +12 -0
  179. package/dist/core/skill-block-parser.js +15 -0
  180. package/dist/core/skills.d.ts +59 -0
  181. package/dist/core/skills.js +408 -0
  182. package/dist/core/slash-commands.d.ts +13 -0
  183. package/dist/core/slash-commands.js +17 -0
  184. package/dist/core/source-info.d.ts +17 -0
  185. package/dist/core/source-info.js +18 -0
  186. package/dist/core/system-prompt.d.ts +27 -0
  187. package/dist/core/system-prompt.js +179 -0
  188. package/dist/core/timings.d.ts +7 -0
  189. package/dist/core/timings.js +30 -0
  190. package/dist/core/tools/bash.d.ts +95 -0
  191. package/dist/core/tools/bash.js +513 -0
  192. package/dist/core/tools/builtin-commands.d.ts +75 -0
  193. package/dist/core/tools/builtin-commands.js +503 -0
  194. package/dist/core/tools/compat-commands.d.ts +12 -0
  195. package/dist/core/tools/compat-commands.js +1280 -0
  196. package/dist/core/tools/edit-diff.d.ts +59 -0
  197. package/dist/core/tools/edit-diff.js +263 -0
  198. package/dist/core/tools/edit.d.ts +49 -0
  199. package/dist/core/tools/edit.js +340 -0
  200. package/dist/core/tools/file-mutation-queue.d.ts +5 -0
  201. package/dist/core/tools/file-mutation-queue.js +36 -0
  202. package/dist/core/tools/find.d.ts +34 -0
  203. package/dist/core/tools/find.js +459 -0
  204. package/dist/core/tools/grep.d.ts +36 -0
  205. package/dist/core/tools/grep.js +422 -0
  206. package/dist/core/tools/index.d.ts +70 -0
  207. package/dist/core/tools/index.js +129 -0
  208. package/dist/core/tools/line-anchors.d.ts +33 -0
  209. package/dist/core/tools/line-anchors.js +151 -0
  210. package/dist/core/tools/ls.d.ts +36 -0
  211. package/dist/core/tools/ls.js +268 -0
  212. package/dist/core/tools/path-utils.d.ts +7 -0
  213. package/dist/core/tools/path-utils.js +80 -0
  214. package/dist/core/tools/read.d.ts +35 -0
  215. package/dist/core/tools/read.js +244 -0
  216. package/dist/core/tools/render-utils.d.ts +20 -0
  217. package/dist/core/tools/render-utils.js +48 -0
  218. package/dist/core/tools/session-split.d.ts +9 -0
  219. package/dist/core/tools/session-split.js +77 -0
  220. package/dist/core/tools/tool-definition-wrapper.d.ts +13 -0
  221. package/dist/core/tools/tool-definition-wrapper.js +32 -0
  222. package/dist/core/tools/truncate.d.ts +69 -0
  223. package/dist/core/tools/truncate.js +204 -0
  224. package/dist/core/tools/write.d.ts +25 -0
  225. package/dist/core/tools/write.js +211 -0
  226. package/dist/core/types/session-types.d.ts +123 -0
  227. package/dist/core/types/session-types.js +8 -0
  228. package/dist/index.d.ts +27 -0
  229. package/dist/index.js +38 -0
  230. package/dist/main.d.ts +11 -2
  231. package/dist/main.js +577 -149
  232. package/dist/modes/event-mapper.d.ts +115 -0
  233. package/dist/modes/event-mapper.js +200 -0
  234. package/dist/modes/gui/server.d.ts +14 -0
  235. package/dist/modes/gui/server.js +1032 -0
  236. package/dist/modes/index.d.ts +10 -0
  237. package/dist/modes/index.js +9 -0
  238. package/dist/modes/interactive/assets/clankolas.png +0 -0
  239. package/dist/modes/interactive/components/armin.d.ts +33 -0
  240. package/dist/modes/interactive/components/armin.js +328 -0
  241. package/dist/modes/interactive/components/assistant-message.d.ts +19 -0
  242. package/dist/modes/interactive/components/assistant-message.js +115 -0
  243. package/dist/modes/interactive/components/bash-execution.d.ts +33 -0
  244. package/dist/modes/interactive/components/bash-execution.js +169 -0
  245. package/dist/modes/interactive/components/bordered-loader.d.ts +15 -0
  246. package/dist/modes/interactive/components/bordered-loader.js +50 -0
  247. package/dist/modes/interactive/components/branch-summary-message.d.ts +15 -0
  248. package/dist/modes/interactive/components/branch-summary-message.js +41 -0
  249. package/dist/modes/interactive/components/brand-header.d.ts +33 -0
  250. package/dist/modes/interactive/components/brand-header.js +235 -0
  251. package/dist/modes/interactive/components/compaction-summary-message.d.ts +15 -0
  252. package/dist/modes/interactive/components/compaction-summary-message.js +42 -0
  253. package/dist/modes/interactive/components/config-selector.d.ts +70 -0
  254. package/dist/modes/interactive/components/config-selector.js +469 -0
  255. package/dist/modes/interactive/components/countdown-timer.d.ts +13 -0
  256. package/dist/modes/interactive/components/countdown-timer.js +27 -0
  257. package/dist/modes/interactive/components/custom-editor.d.ts +27 -0
  258. package/dist/modes/interactive/components/custom-editor.js +94 -0
  259. package/dist/modes/interactive/components/custom-message.d.ts +19 -0
  260. package/dist/modes/interactive/components/custom-message.js +73 -0
  261. package/dist/modes/interactive/components/daxnuts.d.ts +22 -0
  262. package/dist/modes/interactive/components/daxnuts.js +137 -0
  263. package/dist/modes/interactive/components/diff.d.ts +11 -0
  264. package/dist/modes/interactive/components/diff.js +132 -0
  265. package/dist/modes/interactive/components/dynamic-border.d.ts +14 -0
  266. package/dist/modes/interactive/components/dynamic-border.js +19 -0
  267. package/dist/modes/interactive/components/earendil-announcement.d.ts +4 -0
  268. package/dist/modes/interactive/components/earendil-announcement.js +39 -0
  269. package/dist/modes/interactive/components/extension-editor.d.ts +19 -0
  270. package/dist/modes/interactive/components/extension-editor.js +105 -0
  271. package/dist/modes/interactive/components/extension-input.d.ts +22 -0
  272. package/dist/modes/interactive/components/extension-input.js +54 -0
  273. package/dist/modes/interactive/components/extension-selector.d.ts +23 -0
  274. package/dist/modes/interactive/components/extension-selector.js +70 -0
  275. package/dist/modes/interactive/components/footer.d.ts +55 -0
  276. package/dist/modes/interactive/components/footer.js +207 -0
  277. package/dist/modes/interactive/components/index.d.ts +31 -0
  278. package/dist/modes/interactive/components/index.js +32 -0
  279. package/dist/modes/interactive/components/keybinding-hints.d.ts +7 -0
  280. package/dist/modes/interactive/components/keybinding-hints.js +21 -0
  281. package/dist/modes/interactive/components/login-dialog.d.ts +41 -0
  282. package/dist/modes/interactive/components/login-dialog.js +138 -0
  283. package/dist/modes/interactive/components/model-selector.d.ts +32 -0
  284. package/dist/modes/interactive/components/model-selector.js +209 -0
  285. package/dist/modes/interactive/components/oauth-selector.d.ts +18 -0
  286. package/dist/modes/interactive/components/oauth-selector.js +91 -0
  287. package/dist/modes/interactive/components/settings-selector.d.ts +57 -0
  288. package/dist/modes/interactive/components/settings-selector.js +299 -0
  289. package/dist/modes/interactive/components/show-images-selector.d.ts +9 -0
  290. package/dist/modes/interactive/components/show-images-selector.js +37 -0
  291. package/dist/modes/interactive/components/skill-invocation-message.d.ts +16 -0
  292. package/dist/modes/interactive/components/skill-invocation-message.js +44 -0
  293. package/dist/modes/interactive/components/theme-selector.d.ts +10 -0
  294. package/dist/modes/interactive/components/theme-selector.js +47 -0
  295. package/dist/modes/interactive/components/thinking-selector.d.ts +10 -0
  296. package/dist/modes/interactive/components/thinking-selector.js +50 -0
  297. package/dist/modes/interactive/components/timeline-view.d.ts +31 -0
  298. package/dist/modes/interactive/components/timeline-view.js +81 -0
  299. package/dist/modes/interactive/components/tool-execution.d.ts +64 -0
  300. package/dist/modes/interactive/components/tool-execution.js +305 -0
  301. package/dist/modes/interactive/components/tree-selector.d.ts +88 -0
  302. package/dist/modes/interactive/components/tree-selector.js +1072 -0
  303. package/dist/modes/interactive/components/user-message-selector.d.ts +29 -0
  304. package/dist/modes/interactive/components/user-message-selector.js +110 -0
  305. package/dist/modes/interactive/components/user-message.d.ts +9 -0
  306. package/dist/modes/interactive/components/user-message.js +27 -0
  307. package/dist/modes/interactive/components/visual-truncate.d.ts +23 -0
  308. package/dist/modes/interactive/components/visual-truncate.js +32 -0
  309. package/dist/modes/interactive/interactive-mode.d.ts +394 -0
  310. package/dist/modes/interactive/interactive-mode.js +4116 -0
  311. package/dist/modes/interactive/theme/dark.json +85 -0
  312. package/dist/modes/interactive/theme/light.json +84 -0
  313. package/dist/modes/interactive/theme/theme-schema.json +335 -0
  314. package/dist/modes/interactive/theme/theme.d.ts +80 -0
  315. package/dist/modes/interactive/theme/theme.js +973 -0
  316. package/dist/modes/print-mode.d.ts +27 -0
  317. package/dist/modes/print-mode.js +102 -0
  318. package/dist/modes/rpc/jsonl.d.ts +16 -0
  319. package/dist/modes/rpc/jsonl.js +48 -0
  320. package/dist/modes/rpc/rpc-client.d.ts +219 -0
  321. package/dist/modes/rpc/rpc-client.js +405 -0
  322. package/dist/modes/rpc/rpc-mode.d.ts +19 -0
  323. package/dist/modes/rpc/rpc-mode.js +381 -0
  324. package/dist/modes/rpc/rpc-types.d.ts +406 -0
  325. package/dist/modes/rpc/rpc-types.js +7 -0
  326. package/dist/package-manager-cli.d.ts +3 -0
  327. package/dist/package-manager-cli.js +233 -0
  328. package/dist/utils/changelog.d.ts +20 -0
  329. package/dist/utils/changelog.js +86 -0
  330. package/dist/utils/child-process.d.ts +10 -0
  331. package/dist/utils/child-process.js +77 -0
  332. package/dist/utils/clipboard-image.d.ts +10 -0
  333. package/dist/utils/clipboard-image.js +244 -0
  334. package/dist/utils/clipboard-native.d.ts +7 -0
  335. package/dist/utils/clipboard-native.js +13 -0
  336. package/dist/utils/clipboard.d.ts +1 -0
  337. package/dist/utils/clipboard.js +77 -0
  338. package/dist/utils/exif-orientation.d.ts +4 -0
  339. package/dist/utils/exif-orientation.js +157 -0
  340. package/dist/utils/frontmatter.d.ts +7 -0
  341. package/dist/utils/frontmatter.js +25 -0
  342. package/dist/utils/git.d.ts +25 -0
  343. package/dist/utils/git.js +162 -0
  344. package/dist/utils/image-convert.d.ts +8 -0
  345. package/dist/utils/image-convert.js +38 -0
  346. package/dist/utils/image-resize.d.ts +35 -0
  347. package/dist/utils/image-resize.js +136 -0
  348. package/dist/utils/mime.d.ts +1 -0
  349. package/dist/utils/mime.js +25 -0
  350. package/dist/utils/path-shims.d.ts +1 -0
  351. package/dist/utils/path-shims.js +90 -0
  352. package/dist/utils/paths.d.ts +6 -0
  353. package/dist/utils/paths.js +18 -0
  354. package/dist/utils/photon.d.ts +20 -0
  355. package/dist/utils/photon.js +120 -0
  356. package/dist/utils/shell.d.ts +29 -0
  357. package/dist/utils/shell.js +189 -0
  358. package/dist/utils/sleep.d.ts +4 -0
  359. package/dist/utils/sleep.js +16 -0
  360. package/dist/utils/tools-manager.d.ts +3 -0
  361. package/dist/utils/tools-manager.js +101 -0
  362. package/dist/vendor/bin/darwin-arm64/fd +0 -0
  363. package/dist/vendor/bin/darwin-arm64/rg +0 -0
  364. package/dist/vendor/bin/darwin-x64/fd +0 -0
  365. package/dist/vendor/bin/darwin-x64/rg +0 -0
  366. package/dist/vendor/bin/linux-arm64/fd +0 -0
  367. package/dist/vendor/bin/linux-arm64/rg +0 -0
  368. package/dist/vendor/bin/linux-x64/fd +0 -0
  369. package/dist/vendor/bin/linux-x64/rg +0 -0
  370. package/dist/vendor/bin/win32-arm64/fd.exe +0 -0
  371. package/dist/vendor/bin/win32-arm64/rg.exe +0 -0
  372. package/dist/vendor/bin/win32-x64/fd.exe +0 -0
  373. package/dist/vendor/bin/win32-x64/rg.exe +0 -0
  374. package/package.json +90 -26
  375. package/dist/extension/core.d.ts +0 -69
  376. package/dist/extension/core.js +0 -270
  377. package/dist/extension/core.js.map +0 -1
  378. package/dist/extension/index.d.ts +0 -25
  379. package/dist/extension/index.js +0 -303
  380. package/dist/extension/index.js.map +0 -1
  381. package/dist/main.js.map +0 -1
  382. package/themes/pizza.json +0 -87
@@ -0,0 +1,64 @@
1
+ import { Container, type TUI } from "@earendil-works/pi-tui";
2
+ import type { ToolDefinition } from "../../../core/extensions/types.js";
3
+ export interface ToolExecutionOptions {
4
+ showImages?: boolean;
5
+ imageWidthCells?: number;
6
+ }
7
+ export declare class ToolExecutionComponent extends Container {
8
+ private contentBox;
9
+ private contentText;
10
+ private selfRenderContainer;
11
+ private callRendererComponent?;
12
+ private resultRendererComponent?;
13
+ private rendererState;
14
+ private imageComponents;
15
+ private imageSpacers;
16
+ private toolName;
17
+ private toolCallId;
18
+ private args;
19
+ private expanded;
20
+ private showImages;
21
+ private imageWidthCells;
22
+ private isPartial;
23
+ private toolDefinition?;
24
+ private builtInToolDefinition?;
25
+ private ui;
26
+ private cwd;
27
+ private executionStarted;
28
+ private argsComplete;
29
+ private result?;
30
+ private convertedImages;
31
+ private hideComponent;
32
+ constructor(toolName: string, toolCallId: string, args: any, options: ToolExecutionOptions | undefined, toolDefinition: ToolDefinition<any, any> | undefined, ui: TUI, cwd: string);
33
+ private attachRenderShell;
34
+ private getCallRenderer;
35
+ private getResultRenderer;
36
+ private hasRendererDefinition;
37
+ private getRenderShell;
38
+ private getRenderContext;
39
+ private createCallFallback;
40
+ private createResultFallback;
41
+ updateArgs(args: any): void;
42
+ updateToolCall(toolName: string, args: any, toolDefinition: ToolDefinition<any, any> | undefined): void;
43
+ markExecutionStarted(): void;
44
+ setArgsComplete(): void;
45
+ updateResult(result: {
46
+ content: Array<{
47
+ type: string;
48
+ text?: string;
49
+ data?: string;
50
+ mimeType?: string;
51
+ }>;
52
+ details?: any;
53
+ isError: boolean;
54
+ }, isPartial?: boolean): void;
55
+ private maybeConvertImagesForKitty;
56
+ setExpanded(expanded: boolean): void;
57
+ setShowImages(show: boolean): void;
58
+ setImageWidthCells(width: number): void;
59
+ invalidate(): void;
60
+ render(width: number): string[];
61
+ private updateDisplay;
62
+ private getTextOutput;
63
+ private formatToolExecution;
64
+ }
@@ -0,0 +1,305 @@
1
+ import { Box, Container, getCapabilities, Image, Spacer, Text } from "@earendil-works/pi-tui";
2
+ import { createAllToolDefinitions } from "../../../core/tools/index.js";
3
+ import { getTextOutput as getRenderedTextOutput } from "../../../core/tools/render-utils.js";
4
+ import { convertToPng } from "../../../utils/image-convert.js";
5
+ import { theme } from "../theme/theme.js";
6
+ export class ToolExecutionComponent extends Container {
7
+ constructor(toolName, toolCallId, args, options = {}, toolDefinition, ui, cwd) {
8
+ super();
9
+ this.rendererState = {};
10
+ this.imageComponents = [];
11
+ this.imageSpacers = [];
12
+ this.expanded = false;
13
+ this.isPartial = true;
14
+ this.executionStarted = false;
15
+ this.argsComplete = false;
16
+ this.convertedImages = new Map();
17
+ this.hideComponent = false;
18
+ this.toolName = toolName;
19
+ this.toolCallId = toolCallId;
20
+ this.args = args;
21
+ this.toolDefinition = toolDefinition;
22
+ this.builtInToolDefinition = createAllToolDefinitions(cwd)[toolName];
23
+ this.showImages = options.showImages ?? true;
24
+ this.imageWidthCells = options.imageWidthCells ?? 60;
25
+ this.ui = ui;
26
+ this.cwd = cwd;
27
+ this.addChild(new Spacer(1));
28
+ // Always create all shell variants. contentBox is used for default renderer-based composition.
29
+ // selfRenderContainer is used when the tool renders its own framing.
30
+ // contentText is reserved for generic fallback rendering when no tool definition exists.
31
+ this.contentBox = new Box(1, 1, (text) => theme.bg("toolPendingBg", text));
32
+ this.contentText = new Text("", 1, 1, (text) => theme.bg("toolPendingBg", text));
33
+ this.selfRenderContainer = new Container();
34
+ this.attachRenderShell();
35
+ this.updateDisplay();
36
+ }
37
+ attachRenderShell() {
38
+ this.clear();
39
+ this.addChild(new Spacer(1));
40
+ if (this.hasRendererDefinition()) {
41
+ this.addChild(this.getRenderShell() === "self" ? this.selfRenderContainer : this.contentBox);
42
+ }
43
+ else {
44
+ this.addChild(this.contentText);
45
+ }
46
+ }
47
+ getCallRenderer() {
48
+ if (!this.builtInToolDefinition) {
49
+ return this.toolDefinition?.renderCall;
50
+ }
51
+ if (!this.toolDefinition) {
52
+ return this.builtInToolDefinition.renderCall;
53
+ }
54
+ return this.toolDefinition.renderCall ?? this.builtInToolDefinition.renderCall;
55
+ }
56
+ getResultRenderer() {
57
+ if (!this.builtInToolDefinition) {
58
+ return this.toolDefinition?.renderResult;
59
+ }
60
+ if (!this.toolDefinition) {
61
+ return this.builtInToolDefinition.renderResult;
62
+ }
63
+ return this.toolDefinition.renderResult ?? this.builtInToolDefinition.renderResult;
64
+ }
65
+ hasRendererDefinition() {
66
+ return this.builtInToolDefinition !== undefined || this.toolDefinition !== undefined;
67
+ }
68
+ getRenderShell() {
69
+ if (!this.builtInToolDefinition) {
70
+ return this.toolDefinition?.renderShell ?? "default";
71
+ }
72
+ if (!this.toolDefinition) {
73
+ return this.builtInToolDefinition.renderShell ?? "default";
74
+ }
75
+ return this.toolDefinition.renderShell ?? this.builtInToolDefinition.renderShell ?? "default";
76
+ }
77
+ getRenderContext(lastComponent) {
78
+ return {
79
+ args: this.args,
80
+ toolCallId: this.toolCallId,
81
+ invalidate: () => {
82
+ this.invalidate();
83
+ this.ui.requestRender();
84
+ },
85
+ lastComponent,
86
+ state: this.rendererState,
87
+ cwd: this.cwd,
88
+ executionStarted: this.executionStarted,
89
+ argsComplete: this.argsComplete,
90
+ isPartial: this.isPartial,
91
+ expanded: this.expanded,
92
+ showImages: this.showImages,
93
+ isError: this.result?.isError ?? false,
94
+ };
95
+ }
96
+ createCallFallback() {
97
+ return new Text(theme.fg("toolTitle", theme.bold(this.toolName)), 0, 0);
98
+ }
99
+ createResultFallback() {
100
+ const output = this.getTextOutput();
101
+ if (!output) {
102
+ return undefined;
103
+ }
104
+ return new Text(theme.fg("toolOutput", output), 0, 0);
105
+ }
106
+ updateArgs(args) {
107
+ this.args = args;
108
+ this.updateDisplay();
109
+ }
110
+ updateToolCall(toolName, args, toolDefinition) {
111
+ const previousToolName = this.toolName;
112
+ const previousToolDefinition = this.toolDefinition;
113
+ const hadRendererDefinition = this.hasRendererDefinition();
114
+ const previousRenderShell = hadRendererDefinition ? this.getRenderShell() : undefined;
115
+ this.toolName = toolName;
116
+ this.args = args;
117
+ this.toolDefinition = toolDefinition;
118
+ this.builtInToolDefinition = createAllToolDefinitions(this.cwd)[toolName];
119
+ if (previousToolName !== toolName || previousToolDefinition !== toolDefinition) {
120
+ this.callRendererComponent = undefined;
121
+ this.resultRendererComponent = undefined;
122
+ this.rendererState = {};
123
+ }
124
+ const hasRendererDefinition = this.hasRendererDefinition();
125
+ const renderShell = hasRendererDefinition ? this.getRenderShell() : undefined;
126
+ if (hadRendererDefinition !== hasRendererDefinition || previousRenderShell !== renderShell) {
127
+ this.attachRenderShell();
128
+ }
129
+ this.updateDisplay();
130
+ }
131
+ markExecutionStarted() {
132
+ this.executionStarted = true;
133
+ this.updateDisplay();
134
+ this.ui.requestRender();
135
+ }
136
+ setArgsComplete() {
137
+ this.argsComplete = true;
138
+ this.updateDisplay();
139
+ this.ui.requestRender();
140
+ }
141
+ updateResult(result, isPartial = false) {
142
+ this.result = result;
143
+ this.isPartial = isPartial;
144
+ this.updateDisplay();
145
+ this.maybeConvertImagesForKitty();
146
+ }
147
+ maybeConvertImagesForKitty() {
148
+ const caps = getCapabilities();
149
+ if (caps.images !== "kitty")
150
+ return;
151
+ if (!this.result)
152
+ return;
153
+ const imageBlocks = this.result.content.filter((c) => c.type === "image");
154
+ for (let i = 0; i < imageBlocks.length; i++) {
155
+ const img = imageBlocks[i];
156
+ if (!img.data || !img.mimeType)
157
+ continue;
158
+ if (img.mimeType === "image/png")
159
+ continue;
160
+ if (this.convertedImages.has(i))
161
+ continue;
162
+ const index = i;
163
+ convertToPng(img.data, img.mimeType).then((converted) => {
164
+ if (converted) {
165
+ this.convertedImages.set(index, converted);
166
+ this.updateDisplay();
167
+ this.ui.requestRender();
168
+ }
169
+ });
170
+ }
171
+ }
172
+ setExpanded(expanded) {
173
+ this.expanded = expanded;
174
+ this.updateDisplay();
175
+ }
176
+ setShowImages(show) {
177
+ this.showImages = show;
178
+ this.updateDisplay();
179
+ }
180
+ setImageWidthCells(width) {
181
+ this.imageWidthCells = Math.max(1, Math.floor(width));
182
+ this.updateDisplay();
183
+ }
184
+ invalidate() {
185
+ super.invalidate();
186
+ this.updateDisplay();
187
+ }
188
+ render(width) {
189
+ if (this.hideComponent) {
190
+ return [];
191
+ }
192
+ return super.render(width);
193
+ }
194
+ updateDisplay() {
195
+ const bgFn = this.isPartial
196
+ ? (text) => theme.bg("toolPendingBg", text)
197
+ : this.result?.isError
198
+ ? (text) => theme.bg("toolErrorBg", text)
199
+ : (text) => theme.bg("toolSuccessBg", text);
200
+ let hasContent = false;
201
+ this.hideComponent = false;
202
+ if (this.hasRendererDefinition()) {
203
+ const renderContainer = this.getRenderShell() === "self" ? this.selfRenderContainer : this.contentBox;
204
+ if (renderContainer instanceof Box) {
205
+ renderContainer.setBgFn(bgFn);
206
+ }
207
+ renderContainer.clear();
208
+ const callRenderer = this.getCallRenderer();
209
+ if (!callRenderer) {
210
+ renderContainer.addChild(this.createCallFallback());
211
+ hasContent = true;
212
+ }
213
+ else {
214
+ try {
215
+ const component = callRenderer(this.args, theme, this.getRenderContext(this.callRendererComponent));
216
+ this.callRendererComponent = component;
217
+ renderContainer.addChild(component);
218
+ hasContent = true;
219
+ }
220
+ catch {
221
+ this.callRendererComponent = undefined;
222
+ renderContainer.addChild(this.createCallFallback());
223
+ hasContent = true;
224
+ }
225
+ }
226
+ if (this.result) {
227
+ const resultRenderer = this.getResultRenderer();
228
+ if (!resultRenderer) {
229
+ const component = this.createResultFallback();
230
+ if (component) {
231
+ renderContainer.addChild(component);
232
+ hasContent = true;
233
+ }
234
+ }
235
+ else {
236
+ try {
237
+ const component = resultRenderer({ content: this.result.content, details: this.result.details }, { expanded: this.expanded, isPartial: this.isPartial }, theme, this.getRenderContext(this.resultRendererComponent));
238
+ this.resultRendererComponent = component;
239
+ renderContainer.addChild(component);
240
+ hasContent = true;
241
+ }
242
+ catch {
243
+ this.resultRendererComponent = undefined;
244
+ const component = this.createResultFallback();
245
+ if (component) {
246
+ renderContainer.addChild(component);
247
+ hasContent = true;
248
+ }
249
+ }
250
+ }
251
+ }
252
+ }
253
+ else {
254
+ this.contentText.setCustomBgFn(bgFn);
255
+ this.contentText.setText(this.formatToolExecution());
256
+ hasContent = true;
257
+ }
258
+ for (const img of this.imageComponents) {
259
+ this.removeChild(img);
260
+ }
261
+ this.imageComponents = [];
262
+ for (const spacer of this.imageSpacers) {
263
+ this.removeChild(spacer);
264
+ }
265
+ this.imageSpacers = [];
266
+ if (this.result) {
267
+ const imageBlocks = this.result.content.filter((c) => c.type === "image");
268
+ const caps = getCapabilities();
269
+ for (let i = 0; i < imageBlocks.length; i++) {
270
+ const img = imageBlocks[i];
271
+ if (caps.images && this.showImages && img.data && img.mimeType) {
272
+ const converted = this.convertedImages.get(i);
273
+ const imageData = converted?.data ?? img.data;
274
+ const imageMimeType = converted?.mimeType ?? img.mimeType;
275
+ if (caps.images === "kitty" && imageMimeType !== "image/png")
276
+ continue;
277
+ const spacer = new Spacer(1);
278
+ this.addChild(spacer);
279
+ this.imageSpacers.push(spacer);
280
+ const imageComponent = new Image(imageData, imageMimeType, { fallbackColor: (s) => theme.fg("toolOutput", s) }, { maxWidthCells: this.imageWidthCells });
281
+ this.imageComponents.push(imageComponent);
282
+ this.addChild(imageComponent);
283
+ }
284
+ }
285
+ }
286
+ if (this.hasRendererDefinition() && !hasContent && this.imageComponents.length === 0) {
287
+ this.hideComponent = true;
288
+ }
289
+ }
290
+ getTextOutput() {
291
+ return getRenderedTextOutput(this.result, this.showImages);
292
+ }
293
+ formatToolExecution() {
294
+ let text = theme.fg("toolTitle", theme.bold(this.toolName));
295
+ const content = JSON.stringify(this.args, null, 2);
296
+ if (content) {
297
+ text += `\n\n${content}`;
298
+ }
299
+ const output = this.getTextOutput();
300
+ if (output) {
301
+ text += `\n${output}`;
302
+ }
303
+ return text;
304
+ }
305
+ }
@@ -0,0 +1,88 @@
1
+ import { type Component, Container, type Focusable } from "@earendil-works/pi-tui";
2
+ import type { SessionTreeNode } from "../../../core/types/session-types.js";
3
+ /** Filter mode for tree display */
4
+ export type FilterMode = "default" | "no-tools" | "user-only" | "labeled-only" | "all";
5
+ declare class TreeList implements Component {
6
+ private flatNodes;
7
+ private filteredNodes;
8
+ private selectedIndex;
9
+ private currentLeafId;
10
+ private maxVisibleLines;
11
+ private filterMode;
12
+ private searchQuery;
13
+ private toolCallMap;
14
+ private multipleRoots;
15
+ private showLabelTimestamps;
16
+ private activePathIds;
17
+ private visibleParentMap;
18
+ private visibleChildrenMap;
19
+ private lastSelectedId;
20
+ private foldedNodes;
21
+ onSelect?: (entryId: string) => void;
22
+ onCancel?: () => void;
23
+ onLabelEdit?: (entryId: string, currentLabel: string | undefined) => void;
24
+ constructor(tree: SessionTreeNode[], currentLeafId: string | null, maxVisibleLines: number, initialSelectedId?: string, initialFilterMode?: FilterMode);
25
+ /**
26
+ * Find the index of the nearest visible entry, walking up the parent chain if needed.
27
+ * Returns the index in filteredNodes, or the last index as fallback.
28
+ */
29
+ private findNearestVisibleIndex;
30
+ /** Build the set of entry IDs on the path from root to current leaf */
31
+ private buildActivePath;
32
+ private flattenTree;
33
+ private applyFilter;
34
+ /**
35
+ * Recompute indentation/connectors for the filtered view
36
+ *
37
+ * Filtering can hide intermediate entries; descendants attach to the nearest visible ancestor.
38
+ * Keep indentation semantics aligned with flattenTree() so single-child chains don't drift right.
39
+ */
40
+ private recalculateVisualStructure;
41
+ /** Get searchable text content from a node */
42
+ private getSearchableText;
43
+ invalidate(): void;
44
+ getSearchQuery(): string;
45
+ getSelectedNode(): SessionTreeNode | undefined;
46
+ updateNodeLabel(entryId: string, label: string | undefined, labelTimestamp?: string): void;
47
+ private getStatusLabels;
48
+ render(width: number): string[];
49
+ private getEntryDisplayText;
50
+ private formatLabelTimestamp;
51
+ private extractContent;
52
+ private hasTextContent;
53
+ private formatToolCall;
54
+ handleInput(keyData: string): void;
55
+ /**
56
+ * Whether a node can be folded. A node is foldable if it has visible children
57
+ * and is either a root (no visible parent) or a segment start (visible parent
58
+ * has multiple visible children).
59
+ */
60
+ private isFoldable;
61
+ /**
62
+ * Find the index of the next branch segment start in the given direction.
63
+ * A segment start is the first child of a branch point.
64
+ *
65
+ * "up" walks the visible parent chain; "down" walks visible children
66
+ * (always following the first child).
67
+ */
68
+ private findBranchSegmentStart;
69
+ }
70
+ /**
71
+ * Component that renders a session tree selector for navigation
72
+ */
73
+ export declare class TreeSelectorComponent extends Container implements Focusable {
74
+ private treeList;
75
+ private labelInput;
76
+ private labelInputContainer;
77
+ private treeContainer;
78
+ private onLabelChangeCallback?;
79
+ private _focused;
80
+ get focused(): boolean;
81
+ set focused(value: boolean);
82
+ constructor(tree: SessionTreeNode[], currentLeafId: string | null, terminalHeight: number, onSelect: (entryId: string) => void, onCancel: () => void, onLabelChange?: (entryId: string, label: string | undefined) => void, initialSelectedId?: string, initialFilterMode?: FilterMode);
83
+ private showLabelInput;
84
+ private hideLabelInput;
85
+ handleInput(keyData: string): void;
86
+ getTreeList(): TreeList;
87
+ }
88
+ export {};