@code-yeongyu/senpi 2026.7.10 → 2026.7.11

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 (311) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/README.md +4 -2
  3. package/dist/core/extensions/builtin/bash-timeout/timeout.js +2 -2
  4. package/dist/core/extensions/builtin/bash-timeout/timeout.js.map +1 -1
  5. package/dist/core/extensions/builtin/compaction/index.d.ts.map +1 -1
  6. package/dist/core/extensions/builtin/compaction/index.js +10 -1
  7. package/dist/core/extensions/builtin/compaction/index.js.map +1 -1
  8. package/dist/core/extensions/builtin/goal/store.d.ts.map +1 -1
  9. package/dist/core/extensions/builtin/goal/store.js +88 -3
  10. package/dist/core/extensions/builtin/goal/store.js.map +1 -1
  11. package/dist/core/extensions/builtin/prompt-preset/gpt-5.6.d.ts +3 -0
  12. package/dist/core/extensions/builtin/prompt-preset/gpt-5.6.d.ts.map +1 -0
  13. package/dist/core/extensions/builtin/prompt-preset/gpt-5.6.js +83 -0
  14. package/dist/core/extensions/builtin/prompt-preset/gpt-5.6.js.map +1 -0
  15. package/dist/core/extensions/builtin/prompt-preset/presets.d.ts.map +1 -1
  16. package/dist/core/extensions/builtin/prompt-preset/presets.js +6 -0
  17. package/dist/core/extensions/builtin/prompt-preset/presets.js.map +1 -1
  18. package/dist/core/extensions/builtin/prompt-preset/settings.d.ts +1 -1
  19. package/dist/core/extensions/builtin/prompt-preset/settings.d.ts.map +1 -1
  20. package/dist/core/extensions/builtin/prompt-preset/settings.js +1 -0
  21. package/dist/core/extensions/builtin/prompt-preset/settings.js.map +1 -1
  22. package/dist/core/extensions/builtin/terminal/notify.d.ts +3 -3
  23. package/dist/core/extensions/builtin/terminal/notify.d.ts.map +1 -1
  24. package/dist/core/extensions/builtin/terminal/notify.js +7 -4
  25. package/dist/core/extensions/builtin/terminal/notify.js.map +1 -1
  26. package/dist/core/extensions/builtin/terminal/runtime-session.d.ts +5 -3
  27. package/dist/core/extensions/builtin/terminal/runtime-session.d.ts.map +1 -1
  28. package/dist/core/extensions/builtin/terminal/runtime-session.js +32 -16
  29. package/dist/core/extensions/builtin/terminal/runtime-session.js.map +1 -1
  30. package/dist/core/extensions/builtin/terminal/tools/bash-output.d.ts +1 -1
  31. package/dist/core/extensions/builtin/terminal/tools/bash-output.d.ts.map +1 -1
  32. package/dist/core/extensions/builtin/terminal/tools/bash-output.js +10 -4
  33. package/dist/core/extensions/builtin/terminal/tools/bash-output.js.map +1 -1
  34. package/dist/core/extensions/builtin/todotools/tools/todowrite.d.ts.map +1 -1
  35. package/dist/core/extensions/builtin/todotools/tools/todowrite.js +5 -8
  36. package/dist/core/extensions/builtin/todotools/tools/todowrite.js.map +1 -1
  37. package/dist/core/extensions/runner.d.ts +1 -0
  38. package/dist/core/extensions/runner.d.ts.map +1 -1
  39. package/dist/core/extensions/runner.js +5 -0
  40. package/dist/core/extensions/runner.js.map +1 -1
  41. package/dist/core/extensions/types.d.ts +5 -8
  42. package/dist/core/extensions/types.d.ts.map +1 -1
  43. package/dist/core/extensions/types.js.map +1 -1
  44. package/dist/core/extensions/wrapper.d.ts.map +1 -1
  45. package/dist/core/extensions/wrapper.js +22 -3
  46. package/dist/core/extensions/wrapper.js.map +1 -1
  47. package/dist/core/keybindings.d.ts +8 -3
  48. package/dist/core/keybindings.d.ts.map +1 -1
  49. package/dist/core/keybindings.js +7 -3
  50. package/dist/core/keybindings.js.map +1 -1
  51. package/dist/core/model-registry.d.ts +1 -6
  52. package/dist/core/model-registry.d.ts.map +1 -1
  53. package/dist/core/model-registry.js +19 -6
  54. package/dist/core/model-registry.js.map +1 -1
  55. package/dist/core/settings-manager.d.ts +4 -3
  56. package/dist/core/settings-manager.d.ts.map +1 -1
  57. package/dist/core/settings-manager.js +2 -1
  58. package/dist/core/settings-manager.js.map +1 -1
  59. package/dist/index.d.ts +1 -0
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +1 -0
  62. package/dist/index.js.map +1 -1
  63. package/dist/modes/interactive/components/custom-editor.js +1 -1
  64. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  65. package/dist/modes/interactive/components/login-dialog.d.ts +4 -0
  66. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  67. package/dist/modes/interactive/components/login-dialog.js +9 -2
  68. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  69. package/dist/modes/interactive/components/settings-selector.js +1 -1
  70. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  71. package/dist/modes/interactive/components/thinking-selector.js +1 -1
  72. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  73. package/dist/modes/interactive/components/tool-execution-fallback.d.ts +6 -0
  74. package/dist/modes/interactive/components/tool-execution-fallback.d.ts.map +1 -0
  75. package/dist/modes/interactive/components/tool-execution-fallback.js +40 -0
  76. package/dist/modes/interactive/components/tool-execution-fallback.js.map +1 -0
  77. package/dist/modes/interactive/components/tool-execution-images.d.ts +23 -0
  78. package/dist/modes/interactive/components/tool-execution-images.d.ts.map +1 -0
  79. package/dist/modes/interactive/components/tool-execution-images.js +104 -0
  80. package/dist/modes/interactive/components/tool-execution-images.js.map +1 -0
  81. package/dist/modes/interactive/components/tool-execution-renderer.d.ts +28 -0
  82. package/dist/modes/interactive/components/tool-execution-renderer.d.ts.map +1 -0
  83. package/dist/modes/interactive/components/tool-execution-renderer.js +135 -0
  84. package/dist/modes/interactive/components/tool-execution-renderer.js.map +1 -0
  85. package/dist/modes/interactive/components/tool-execution-types.d.ts +23 -0
  86. package/dist/modes/interactive/components/tool-execution-types.d.ts.map +1 -0
  87. package/dist/modes/interactive/components/tool-execution-types.js +2 -0
  88. package/dist/modes/interactive/components/tool-execution-types.js.map +1 -0
  89. package/dist/modes/interactive/components/tool-execution.d.ts +13 -39
  90. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  91. package/dist/modes/interactive/components/tool-execution.js +51 -294
  92. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  93. package/dist/modes/interactive/components/tool-renderer-boundary.d.ts +17 -0
  94. package/dist/modes/interactive/components/tool-renderer-boundary.d.ts.map +1 -0
  95. package/dist/modes/interactive/components/tool-renderer-boundary.js +75 -0
  96. package/dist/modes/interactive/components/tool-renderer-boundary.js.map +1 -0
  97. package/dist/modes/interactive/components/tree-selector.d.ts +5 -0
  98. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
  99. package/dist/modes/interactive/components/tree-selector.js +50 -17
  100. package/dist/modes/interactive/components/tree-selector.js.map +1 -1
  101. package/dist/modes/interactive/interactive-mode.d.ts +1 -2
  102. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  103. package/dist/modes/interactive/interactive-mode.js +44 -40
  104. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  105. package/dist/modes/interactive/theme/dark.json +1 -0
  106. package/dist/modes/interactive/theme/light.json +1 -0
  107. package/dist/modes/interactive/theme/theme-schema.json +6 -2
  108. package/dist/modes/interactive/theme/theme.d.ts +3 -2
  109. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  110. package/dist/modes/interactive/theme/theme.js +11 -4
  111. package/dist/modes/interactive/theme/theme.js.map +1 -1
  112. package/dist/utils/clipboard-native.d.ts +1 -0
  113. package/dist/utils/clipboard-native.d.ts.map +1 -1
  114. package/dist/utils/clipboard-native.js.map +1 -1
  115. package/dist/utils/clipboard.d.ts +2 -0
  116. package/dist/utils/clipboard.d.ts.map +1 -1
  117. package/dist/utils/clipboard.js +13 -0
  118. package/dist/utils/clipboard.js.map +1 -1
  119. package/docs/custom-provider.md +4 -3
  120. package/docs/extensions.md +140 -1
  121. package/docs/keybindings.md +1 -0
  122. package/docs/models.md +45 -4
  123. package/docs/providers.md +3 -0
  124. package/docs/quickstart.md +1 -1
  125. package/docs/rpc.md +2 -2
  126. package/docs/sdk.md +1 -1
  127. package/docs/settings.md +3 -3
  128. package/docs/themes.md +5 -3
  129. package/docs/tui.md +1 -1
  130. package/docs/usage.md +2 -1
  131. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  132. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  133. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  134. package/examples/extensions/gondolin/package-lock.json +2 -2
  135. package/examples/extensions/gondolin/package.json +1 -1
  136. package/examples/extensions/sandbox/package-lock.json +2 -2
  137. package/examples/extensions/sandbox/package.json +1 -1
  138. package/examples/extensions/with-deps/package-lock.json +2 -2
  139. package/examples/extensions/with-deps/package.json +1 -1
  140. package/node_modules/@code-yeongyu/senpi-codemode/CHANGELOG.md +3 -0
  141. package/node_modules/@code-yeongyu/senpi-codemode/package.json +3 -3
  142. package/node_modules/@code-yeongyu/senpi-codemode/src/bridge/protocol.ts +7 -7
  143. package/node_modules/@code-yeongyu/senpi-codemode/src/completion/tool-bridge.ts +3 -0
  144. package/node_modules/@code-yeongyu/senpi-codemode/src/extension/session-manager.ts +69 -8
  145. package/node_modules/@code-yeongyu/senpi-codemode/src/index.ts +39 -13
  146. package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/js/context-manager.ts +191 -148
  147. package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/js/inline-worker-entry.js +23 -0
  148. package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/js/inline-worker.ts +4 -175
  149. package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/js/kernel-contract.ts +38 -0
  150. package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/js/run-queue.ts +82 -0
  151. package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/js/worker-core.js +7 -3
  152. package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/js/worker-host.ts +117 -0
  153. package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/py/kernel-contract.ts +32 -0
  154. package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/py/kernel.ts +231 -199
  155. package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/py/process.ts +119 -0
  156. package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/py/transport.ts +237 -0
  157. package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/shared/subprocess-contract.ts +22 -0
  158. package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/shared/subprocess-kernel.ts +214 -189
  159. package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/shared/subprocess-process.ts +174 -0
  160. package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/shared/subprocess-queue.ts +100 -0
  161. package/node_modules/@code-yeongyu/senpi-codemode/src/kernels/shared/subprocess-run.ts +98 -0
  162. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/cell-handler.ts +205 -0
  163. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/eval-tool.ts +208 -203
  164. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/render.ts +215 -25
  165. package/node_modules/@code-yeongyu/senpi-codemode/src/tool/types.ts +1 -0
  166. package/node_modules/@earendil-works/pi-agent-core/README.md +1 -1
  167. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js +2 -0
  168. package/node_modules/@earendil-works/pi-agent-core/dist/agent-loop.js.map +1 -1
  169. package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts +4 -3
  170. package/node_modules/@earendil-works/pi-agent-core/dist/types.d.ts.map +1 -1
  171. package/node_modules/@earendil-works/pi-agent-core/dist/types.js.map +1 -1
  172. package/node_modules/@earendil-works/pi-agent-core/package.json +2 -2
  173. package/node_modules/@earendil-works/pi-ai/README.md +4 -2
  174. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.d.ts.map +1 -1
  175. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.js +89 -40
  176. package/node_modules/@earendil-works/pi-ai/dist/api/anthropic-messages.js.map +1 -1
  177. package/node_modules/@earendil-works/pi-ai/dist/api/azure-openai-responses.d.ts +1 -1
  178. package/node_modules/@earendil-works/pi-ai/dist/api/azure-openai-responses.d.ts.map +1 -1
  179. package/node_modules/@earendil-works/pi-ai/dist/api/azure-openai-responses.js.map +1 -1
  180. package/node_modules/@earendil-works/pi-ai/dist/api/bedrock-converse-stream.d.ts.map +1 -1
  181. package/node_modules/@earendil-works/pi-ai/dist/api/bedrock-converse-stream.js +7 -7
  182. package/node_modules/@earendil-works/pi-ai/dist/api/bedrock-converse-stream.js.map +1 -1
  183. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.d.ts +1 -1
  184. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.d.ts.map +1 -1
  185. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.js +10 -3
  186. package/node_modules/@earendil-works/pi-ai/dist/api/openai-codex-responses.js.map +1 -1
  187. package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.d.ts +1 -1
  188. package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.d.ts.map +1 -1
  189. package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.js +5 -1
  190. package/node_modules/@earendil-works/pi-ai/dist/api/openai-completions.js.map +1 -1
  191. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses-shared.d.ts +3 -1
  192. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses-shared.d.ts.map +1 -1
  193. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses-shared.js +35 -4
  194. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses-shared.js.map +1 -1
  195. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.d.ts +1 -1
  196. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.d.ts.map +1 -1
  197. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js +7 -3
  198. package/node_modules/@earendil-works/pi-ai/dist/api/openai-responses.js.map +1 -1
  199. package/node_modules/@earendil-works/pi-ai/dist/api/simple-options.d.ts.map +1 -1
  200. package/node_modules/@earendil-works/pi-ai/dist/api/simple-options.js +8 -3
  201. package/node_modules/@earendil-works/pi-ai/dist/api/simple-options.js.map +1 -1
  202. package/node_modules/@earendil-works/pi-ai/dist/api/transform-messages.d.ts.map +1 -1
  203. package/node_modules/@earendil-works/pi-ai/dist/api/transform-messages.js +4 -3
  204. package/node_modules/@earendil-works/pi-ai/dist/api/transform-messages.js.map +1 -1
  205. package/node_modules/@earendil-works/pi-ai/dist/compat.d.ts.map +1 -1
  206. package/node_modules/@earendil-works/pi-ai/dist/compat.js +2 -1
  207. package/node_modules/@earendil-works/pi-ai/dist/compat.js.map +1 -1
  208. package/node_modules/@earendil-works/pi-ai/dist/models.d.ts.map +1 -1
  209. package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts +483 -61
  210. package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts.map +1 -1
  211. package/node_modules/@earendil-works/pi-ai/dist/models.js +13 -4
  212. package/node_modules/@earendil-works/pi-ai/dist/models.js.map +1 -1
  213. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.d.ts.map +1 -1
  214. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.js +5 -1
  215. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.js.map +1 -1
  216. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.models.d.ts +62 -5
  217. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.models.d.ts.map +1 -1
  218. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.models.js +32 -20
  219. package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.models.js.map +1 -1
  220. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.models.d.ts +11 -1
  221. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.models.d.ts.map +1 -1
  222. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.models.js +6 -4
  223. package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.models.js.map +1 -1
  224. package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.models.d.ts +7 -8
  225. package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.models.d.ts.map +1 -1
  226. package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.models.js +20 -21
  227. package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.models.js.map +1 -1
  228. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-ai-gateway.models.d.ts +11 -1
  229. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-ai-gateway.models.d.ts.map +1 -1
  230. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-ai-gateway.models.js +6 -4
  231. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-ai-gateway.models.js.map +1 -1
  232. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-auth.d.ts.map +1 -1
  233. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-auth.js +9 -6
  234. package/node_modules/@earendil-works/pi-ai/dist/providers/cloudflare-auth.js.map +1 -1
  235. package/node_modules/@earendil-works/pi-ai/dist/providers/deepseek.models.d.ts +2 -2
  236. package/node_modules/@earendil-works/pi-ai/dist/providers/deepseek.models.d.ts.map +1 -1
  237. package/node_modules/@earendil-works/pi-ai/dist/providers/deepseek.models.js +2 -2
  238. package/node_modules/@earendil-works/pi-ai/dist/providers/deepseek.models.js.map +1 -1
  239. package/node_modules/@earendil-works/pi-ai/dist/providers/fireworks.models.d.ts +2 -2
  240. package/node_modules/@earendil-works/pi-ai/dist/providers/fireworks.models.d.ts.map +1 -1
  241. package/node_modules/@earendil-works/pi-ai/dist/providers/fireworks.models.js +2 -2
  242. package/node_modules/@earendil-works/pi-ai/dist/providers/fireworks.models.js.map +1 -1
  243. package/node_modules/@earendil-works/pi-ai/dist/providers/github-copilot.models.d.ts +100 -2
  244. package/node_modules/@earendil-works/pi-ai/dist/providers/github-copilot.models.d.ts.map +1 -1
  245. package/node_modules/@earendil-works/pi-ai/dist/providers/github-copilot.models.js +64 -5
  246. package/node_modules/@earendil-works/pi-ai/dist/providers/github-copilot.models.js.map +1 -1
  247. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex.models.d.ts +56 -0
  248. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex.models.d.ts.map +1 -1
  249. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex.models.js +20 -9
  250. package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex.models.js.map +1 -1
  251. package/node_modules/@earendil-works/pi-ai/dist/providers/openai.models.d.ts +77 -8
  252. package/node_modules/@earendil-works/pi-ai/dist/providers/openai.models.d.ts.map +1 -1
  253. package/node_modules/@earendil-works/pi-ai/dist/providers/openai.models.js +37 -24
  254. package/node_modules/@earendil-works/pi-ai/dist/providers/openai.models.js.map +1 -1
  255. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode-go.models.d.ts +3 -3
  256. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode-go.models.d.ts.map +1 -1
  257. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode-go.models.js +3 -3
  258. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode-go.models.js.map +1 -1
  259. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode.models.d.ts +80 -4
  260. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode.models.d.ts.map +1 -1
  261. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode.models.js +64 -8
  262. package/node_modules/@earendil-works/pi-ai/dist/providers/opencode.models.js.map +1 -1
  263. package/node_modules/@earendil-works/pi-ai/dist/providers/openrouter.models.d.ts +25 -22
  264. package/node_modules/@earendil-works/pi-ai/dist/providers/openrouter.models.d.ts.map +1 -1
  265. package/node_modules/@earendil-works/pi-ai/dist/providers/openrouter.models.js +64 -79
  266. package/node_modules/@earendil-works/pi-ai/dist/providers/openrouter.models.js.map +1 -1
  267. package/node_modules/@earendil-works/pi-ai/dist/providers/vercel-ai-gateway.models.d.ts +45 -1
  268. package/node_modules/@earendil-works/pi-ai/dist/providers/vercel-ai-gateway.models.d.ts.map +1 -1
  269. package/node_modules/@earendil-works/pi-ai/dist/providers/vercel-ai-gateway.models.js +43 -7
  270. package/node_modules/@earendil-works/pi-ai/dist/providers/vercel-ai-gateway.models.js.map +1 -1
  271. package/node_modules/@earendil-works/pi-ai/dist/providers/zai-coding-cn.models.d.ts +1 -1
  272. package/node_modules/@earendil-works/pi-ai/dist/providers/zai-coding-cn.models.d.ts.map +1 -1
  273. package/node_modules/@earendil-works/pi-ai/dist/providers/zai-coding-cn.models.js +1 -1
  274. package/node_modules/@earendil-works/pi-ai/dist/providers/zai-coding-cn.models.js.map +1 -1
  275. package/node_modules/@earendil-works/pi-ai/dist/providers/zai.models.d.ts +1 -1
  276. package/node_modules/@earendil-works/pi-ai/dist/providers/zai.models.d.ts.map +1 -1
  277. package/node_modules/@earendil-works/pi-ai/dist/providers/zai.models.js +1 -1
  278. package/node_modules/@earendil-works/pi-ai/dist/providers/zai.models.js.map +1 -1
  279. package/node_modules/@earendil-works/pi-ai/dist/types.d.ts +30 -7
  280. package/node_modules/@earendil-works/pi-ai/dist/types.d.ts.map +1 -1
  281. package/node_modules/@earendil-works/pi-ai/dist/types.js.map +1 -1
  282. package/node_modules/@earendil-works/pi-ai/dist/utils/deferred-tools.d.ts +9 -0
  283. package/node_modules/@earendil-works/pi-ai/dist/utils/deferred-tools.d.ts.map +1 -0
  284. package/node_modules/@earendil-works/pi-ai/dist/utils/deferred-tools.js +36 -0
  285. package/node_modules/@earendil-works/pi-ai/dist/utils/deferred-tools.js.map +1 -0
  286. package/node_modules/@earendil-works/pi-ai/dist/utils/estimate.d.ts +3 -3
  287. package/node_modules/@earendil-works/pi-ai/dist/utils/estimate.d.ts.map +1 -1
  288. package/node_modules/@earendil-works/pi-ai/dist/utils/estimate.js +35 -14
  289. package/node_modules/@earendil-works/pi-ai/dist/utils/estimate.js.map +1 -1
  290. package/node_modules/@earendil-works/pi-ai/package.json +1 -1
  291. package/node_modules/@earendil-works/pi-pty/package.json +1 -1
  292. package/node_modules/@earendil-works/pi-tui/dist/components/image.d.ts.map +1 -1
  293. package/node_modules/@earendil-works/pi-tui/dist/components/image.js +2 -1
  294. package/node_modules/@earendil-works/pi-tui/dist/components/image.js.map +1 -1
  295. package/node_modules/@earendil-works/pi-tui/dist/index.d.ts +2 -1
  296. package/node_modules/@earendil-works/pi-tui/dist/index.d.ts.map +1 -1
  297. package/node_modules/@earendil-works/pi-tui/dist/index.js +2 -1
  298. package/node_modules/@earendil-works/pi-tui/dist/index.js.map +1 -1
  299. package/node_modules/@earendil-works/pi-tui/dist/keys.d.ts.map +1 -1
  300. package/node_modules/@earendil-works/pi-tui/dist/keys.js +6 -5
  301. package/node_modules/@earendil-works/pi-tui/dist/keys.js.map +1 -1
  302. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.d.ts +0 -1
  303. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.d.ts.map +1 -1
  304. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.js +0 -9
  305. package/node_modules/@earendil-works/pi-tui/dist/terminal-image.js.map +1 -1
  306. package/node_modules/@earendil-works/pi-tui/dist/terminal-text.d.ts +4 -0
  307. package/node_modules/@earendil-works/pi-tui/dist/terminal-text.d.ts.map +1 -0
  308. package/node_modules/@earendil-works/pi-tui/dist/terminal-text.js +18 -0
  309. package/node_modules/@earendil-works/pi-tui/dist/terminal-text.js.map +1 -0
  310. package/node_modules/@earendil-works/pi-tui/package.json +2 -2
  311. package/package.json +6 -6
@@ -0,0 +1,28 @@
1
+ import { Container } from "@earendil-works/pi-tui";
2
+ import type { ToolExecutionIdentity, ToolExecutionRenderState } from "./tool-execution-types.ts";
3
+ export declare class ToolExecutionRenderer extends Container {
4
+ private readonly identity;
5
+ private readonly builtInDefinition;
6
+ private readonly contentBox;
7
+ private readonly contentText;
8
+ private readonly selfRenderContainer;
9
+ private readonly rendererState;
10
+ private readonly onInvalidate;
11
+ private state;
12
+ private callRendererComponent?;
13
+ private resultRendererComponent?;
14
+ constructor(identity: ToolExecutionIdentity, state: ToolExecutionRenderState, onInvalidate: () => void);
15
+ get hasRendererDefinition(): boolean;
16
+ get hasResultRenderer(): boolean;
17
+ get renderShell(): "default" | "self";
18
+ update(state: ToolExecutionRenderState): void;
19
+ private getCallRenderer;
20
+ private getResultRenderer;
21
+ private getRenderContext;
22
+ private renderCall;
23
+ private renderResult;
24
+ private addRendererComponent;
25
+ private getRendererComponent;
26
+ private setRendererComponent;
27
+ }
28
+ //# sourceMappingURL=tool-execution-renderer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-execution-renderer.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/tool-execution-renderer.ts"],"names":[],"mappings":"AACA,OAAO,EAAuB,SAAS,EAAyB,MAAM,wBAAwB,CAAC;AAS/F,OAAO,KAAK,EAAE,qBAAqB,EAAE,wBAAwB,EAAuB,MAAM,2BAA2B,CAAC;AAMtH,qBAAa,qBAAsB,SAAQ,SAAS;IACnD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwB;IACjD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAsB;IACxD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAM;IACjC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAO;IACnC,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAmB;IACvD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA+B;IAC7D,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAa;IAC1C,OAAO,CAAC,KAAK,CAA2B;IACxC,OAAO,CAAC,qBAAqB,CAAC,CAAY;IAC1C,OAAO,CAAC,uBAAuB,CAAC,CAAY;IAE5C,YAAY,QAAQ,EAAE,qBAAqB,EAAE,KAAK,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,IAAI,EAerG;IAED,IAAI,qBAAqB,IAAI,OAAO,CAEnC;IAED,IAAI,iBAAiB,IAAI,OAAO,CAE/B;IAED,IAAI,WAAW,IAAI,SAAS,GAAG,MAAM,CAGpC;IAED,MAAM,CAAC,KAAK,EAAE,wBAAwB,GAAG,IAAI,CAqB5C;IAED,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,gBAAgB;IAmBxB,OAAO,CAAC,UAAU;IAgBlB,OAAO,CAAC,YAAY;IAsBpB,OAAO,CAAC,oBAAoB;IAmB5B,OAAO,CAAC,oBAAoB;IAI5B,OAAO,CAAC,oBAAoB;CAI5B"}
@@ -0,0 +1,135 @@
1
+ import { Box, Container, getCapabilities, Text } from "@earendil-works/pi-tui";
2
+ import { createAllToolDefinitions } from "../../../core/tools/index.js";
3
+ import { theme } from "../theme/theme.js";
4
+ import { createToolCallFallback, createToolResultFallback, formatToolExecutionFallback, } from "./tool-execution-fallback.js";
5
+ import { isComponent, ToolRendererBoundary } from "./tool-renderer-boundary.js";
6
+ export class ToolExecutionRenderer extends Container {
7
+ constructor(identity, state, onInvalidate) {
8
+ super();
9
+ this.selfRenderContainer = new Container();
10
+ this.rendererState = {};
11
+ this.identity = identity;
12
+ this.state = state;
13
+ this.onInvalidate = onInvalidate;
14
+ this.builtInDefinition = createAllToolDefinitions(identity.cwd)[identity.toolName];
15
+ this.contentBox = new Box(1, 1, (text) => theme.bg("toolPendingBg", text));
16
+ this.contentText = new Text("", 1, 1, (text) => theme.bg("toolPendingBg", text));
17
+ this.addChild(this.hasRendererDefinition
18
+ ? this.renderShell === "self"
19
+ ? this.selfRenderContainer
20
+ : this.contentBox
21
+ : this.contentText);
22
+ }
23
+ get hasRendererDefinition() {
24
+ return this.builtInDefinition !== undefined || this.identity.toolDefinition !== undefined;
25
+ }
26
+ get hasResultRenderer() {
27
+ return this.getResultRenderer() !== undefined;
28
+ }
29
+ get renderShell() {
30
+ const customShell = this.identity.toolDefinition?.renderShell;
31
+ return customShell ?? this.builtInDefinition?.renderShell ?? "default";
32
+ }
33
+ update(state) {
34
+ this.state = state;
35
+ const background = state.isPartial
36
+ ? (text) => theme.bg("toolPendingBg", text)
37
+ : state.result?.isError
38
+ ? (text) => theme.bg("toolErrorBg", text)
39
+ : (text) => theme.bg("toolSuccessBg", text);
40
+ if (!this.hasRendererDefinition) {
41
+ this.contentText.setCustomBgFn(background);
42
+ this.contentText.setText(formatToolExecutionFallback(this.identity.toolName, state.args, state.result, state.showImages));
43
+ return;
44
+ }
45
+ const container = this.renderShell === "self" ? this.selfRenderContainer : this.contentBox;
46
+ if (container instanceof Box)
47
+ container.setBgFn(background);
48
+ container.detachAll();
49
+ this.renderCall(container);
50
+ if (state.result)
51
+ this.renderResult(container, state.result);
52
+ }
53
+ getCallRenderer() {
54
+ return this.identity.toolDefinition?.renderCall ?? this.builtInDefinition?.renderCall;
55
+ }
56
+ getResultRenderer() {
57
+ return this.identity.toolDefinition?.renderResult ?? this.builtInDefinition?.renderResult;
58
+ }
59
+ getRenderContext(lastComponent) {
60
+ return {
61
+ args: this.state.args,
62
+ toolCallId: this.identity.toolCallId,
63
+ invalidate: this.onInvalidate,
64
+ lastComponent,
65
+ state: this.rendererState,
66
+ cwd: this.identity.cwd,
67
+ executionStarted: this.state.executionStarted,
68
+ argsComplete: this.state.argsComplete,
69
+ isPartial: this.state.isPartial,
70
+ expanded: this.state.expanded,
71
+ showImages: this.state.showImages,
72
+ imageProtocol: getCapabilities().images,
73
+ isError: this.state.result?.isError ?? false,
74
+ spinnerFrame: this.state.spinnerFrame,
75
+ };
76
+ }
77
+ renderCall(container) {
78
+ const fallback = createToolCallFallback(this.identity.toolName);
79
+ const renderer = this.getCallRenderer();
80
+ if (!renderer) {
81
+ container.addChild(fallback);
82
+ return;
83
+ }
84
+ try {
85
+ const component = renderer(this.state.args, theme, this.getRenderContext(this.callRendererComponent));
86
+ this.addRendererComponent(container, "call", component, fallback);
87
+ }
88
+ catch {
89
+ this.callRendererComponent = undefined;
90
+ container.addChild(fallback);
91
+ }
92
+ }
93
+ renderResult(container, result) {
94
+ const fallback = createToolResultFallback(result, this.state.showImages);
95
+ const renderer = this.getResultRenderer();
96
+ if (!renderer) {
97
+ if (fallback)
98
+ container.addChild(fallback);
99
+ return;
100
+ }
101
+ try {
102
+ const agentResult = { content: result.content, details: result.details };
103
+ const component = renderer(agentResult, { expanded: this.state.expanded, isPartial: this.state.isPartial }, theme, this.getRenderContext(this.resultRendererComponent));
104
+ this.addRendererComponent(container, "result", component, fallback);
105
+ }
106
+ catch {
107
+ this.resultRendererComponent = undefined;
108
+ if (fallback)
109
+ container.addChild(fallback);
110
+ }
111
+ }
112
+ addRendererComponent(container, slot, value, fallback) {
113
+ if (!isComponent(value)) {
114
+ this.setRendererComponent(slot, undefined);
115
+ if (fallback)
116
+ container.addChild(fallback);
117
+ return;
118
+ }
119
+ this.setRendererComponent(slot, value);
120
+ container.addChild(new ToolRendererBoundary(value, fallback, () => {
121
+ if (this.getRendererComponent(slot) === value)
122
+ this.setRendererComponent(slot, undefined);
123
+ }));
124
+ }
125
+ getRendererComponent(slot) {
126
+ return slot === "call" ? this.callRendererComponent : this.resultRendererComponent;
127
+ }
128
+ setRendererComponent(slot, component) {
129
+ if (slot === "call")
130
+ this.callRendererComponent = component;
131
+ else
132
+ this.resultRendererComponent = component;
133
+ }
134
+ }
135
+ //# sourceMappingURL=tool-execution-renderer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-execution-renderer.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/tool-execution-renderer.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AgentToolResult } from \"@earendil-works/pi-agent-core\";\nimport { Box, type Component, Container, getCapabilities, Text } from \"@earendil-works/pi-tui\";\nimport type { ToolRenderContext } from \"../../../core/extensions/types.ts\";\nimport { createAllToolDefinitions, type ToolDef, type ToolName } from \"../../../core/tools/index.ts\";\nimport { theme } from \"../theme/theme.ts\";\nimport {\n\tcreateToolCallFallback,\n\tcreateToolResultFallback,\n\tformatToolExecutionFallback,\n} from \"./tool-execution-fallback.ts\";\nimport type { ToolExecutionIdentity, ToolExecutionRenderState, ToolExecutionResult } from \"./tool-execution-types.ts\";\nimport { isComponent, ToolRendererBoundary } from \"./tool-renderer-boundary.ts\";\n\ntype RenderContainer = Box | Container;\ntype RendererSlot = \"call\" | \"result\";\n\nexport class ToolExecutionRenderer extends Container {\n\tprivate readonly identity: ToolExecutionIdentity;\n\tprivate readonly builtInDefinition: ToolDef | undefined;\n\tprivate readonly contentBox: Box;\n\tprivate readonly contentText: Text;\n\tprivate readonly selfRenderContainer = new Container();\n\tprivate readonly rendererState: Record<string, unknown> = {};\n\tprivate readonly onInvalidate: () => void;\n\tprivate state: ToolExecutionRenderState;\n\tprivate callRendererComponent?: Component;\n\tprivate resultRendererComponent?: Component;\n\n\tconstructor(identity: ToolExecutionIdentity, state: ToolExecutionRenderState, onInvalidate: () => void) {\n\t\tsuper();\n\t\tthis.identity = identity;\n\t\tthis.state = state;\n\t\tthis.onInvalidate = onInvalidate;\n\t\tthis.builtInDefinition = createAllToolDefinitions(identity.cwd)[identity.toolName as ToolName];\n\t\tthis.contentBox = new Box(1, 1, (text: string) => theme.bg(\"toolPendingBg\", text));\n\t\tthis.contentText = new Text(\"\", 1, 1, (text: string) => theme.bg(\"toolPendingBg\", text));\n\t\tthis.addChild(\n\t\t\tthis.hasRendererDefinition\n\t\t\t\t? this.renderShell === \"self\"\n\t\t\t\t\t? this.selfRenderContainer\n\t\t\t\t\t: this.contentBox\n\t\t\t\t: this.contentText,\n\t\t);\n\t}\n\n\tget hasRendererDefinition(): boolean {\n\t\treturn this.builtInDefinition !== undefined || this.identity.toolDefinition !== undefined;\n\t}\n\n\tget hasResultRenderer(): boolean {\n\t\treturn this.getResultRenderer() !== undefined;\n\t}\n\n\tget renderShell(): \"default\" | \"self\" {\n\t\tconst customShell = this.identity.toolDefinition?.renderShell;\n\t\treturn customShell ?? this.builtInDefinition?.renderShell ?? \"default\";\n\t}\n\n\tupdate(state: ToolExecutionRenderState): void {\n\t\tthis.state = state;\n\t\tconst background = state.isPartial\n\t\t\t? (text: string) => theme.bg(\"toolPendingBg\", text)\n\t\t\t: state.result?.isError\n\t\t\t\t? (text: string) => theme.bg(\"toolErrorBg\", text)\n\t\t\t\t: (text: string) => theme.bg(\"toolSuccessBg\", text);\n\n\t\tif (!this.hasRendererDefinition) {\n\t\t\tthis.contentText.setCustomBgFn(background);\n\t\t\tthis.contentText.setText(\n\t\t\t\tformatToolExecutionFallback(this.identity.toolName, state.args, state.result, state.showImages),\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\n\t\tconst container = this.renderShell === \"self\" ? this.selfRenderContainer : this.contentBox;\n\t\tif (container instanceof Box) container.setBgFn(background);\n\t\tcontainer.detachAll();\n\t\tthis.renderCall(container);\n\t\tif (state.result) this.renderResult(container, state.result);\n\t}\n\n\tprivate getCallRenderer(): ToolDef[\"renderCall\"] | undefined {\n\t\treturn this.identity.toolDefinition?.renderCall ?? this.builtInDefinition?.renderCall;\n\t}\n\n\tprivate getResultRenderer(): ToolDef[\"renderResult\"] | undefined {\n\t\treturn this.identity.toolDefinition?.renderResult ?? this.builtInDefinition?.renderResult;\n\t}\n\n\tprivate getRenderContext(lastComponent: Component | undefined): ToolRenderContext<Record<string, unknown>, unknown> {\n\t\treturn {\n\t\t\targs: this.state.args,\n\t\t\ttoolCallId: this.identity.toolCallId,\n\t\t\tinvalidate: this.onInvalidate,\n\t\t\tlastComponent,\n\t\t\tstate: this.rendererState,\n\t\t\tcwd: this.identity.cwd,\n\t\t\texecutionStarted: this.state.executionStarted,\n\t\t\targsComplete: this.state.argsComplete,\n\t\t\tisPartial: this.state.isPartial,\n\t\t\texpanded: this.state.expanded,\n\t\t\tshowImages: this.state.showImages,\n\t\t\timageProtocol: getCapabilities().images,\n\t\t\tisError: this.state.result?.isError ?? false,\n\t\t\tspinnerFrame: this.state.spinnerFrame,\n\t\t};\n\t}\n\n\tprivate renderCall(container: RenderContainer): void {\n\t\tconst fallback = createToolCallFallback(this.identity.toolName);\n\t\tconst renderer = this.getCallRenderer();\n\t\tif (!renderer) {\n\t\t\tcontainer.addChild(fallback);\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tconst component = renderer(this.state.args, theme, this.getRenderContext(this.callRendererComponent));\n\t\t\tthis.addRendererComponent(container, \"call\", component, fallback);\n\t\t} catch {\n\t\t\tthis.callRendererComponent = undefined;\n\t\t\tcontainer.addChild(fallback);\n\t\t}\n\t}\n\n\tprivate renderResult(container: RenderContainer, result: ToolExecutionResult): void {\n\t\tconst fallback = createToolResultFallback(result, this.state.showImages);\n\t\tconst renderer = this.getResultRenderer();\n\t\tif (!renderer) {\n\t\t\tif (fallback) container.addChild(fallback);\n\t\t\treturn;\n\t\t}\n\t\ttry {\n\t\t\tconst agentResult = { content: result.content, details: result.details } satisfies AgentToolResult<unknown>;\n\t\t\tconst component = renderer(\n\t\t\t\tagentResult,\n\t\t\t\t{ expanded: this.state.expanded, isPartial: this.state.isPartial },\n\t\t\t\ttheme,\n\t\t\t\tthis.getRenderContext(this.resultRendererComponent),\n\t\t\t);\n\t\t\tthis.addRendererComponent(container, \"result\", component, fallback);\n\t\t} catch {\n\t\t\tthis.resultRendererComponent = undefined;\n\t\t\tif (fallback) container.addChild(fallback);\n\t\t}\n\t}\n\n\tprivate addRendererComponent(\n\t\tcontainer: RenderContainer,\n\t\tslot: RendererSlot,\n\t\tvalue: unknown,\n\t\tfallback: Component | undefined,\n\t): void {\n\t\tif (!isComponent(value)) {\n\t\t\tthis.setRendererComponent(slot, undefined);\n\t\t\tif (fallback) container.addChild(fallback);\n\t\t\treturn;\n\t\t}\n\t\tthis.setRendererComponent(slot, value);\n\t\tcontainer.addChild(\n\t\t\tnew ToolRendererBoundary(value, fallback, () => {\n\t\t\t\tif (this.getRendererComponent(slot) === value) this.setRendererComponent(slot, undefined);\n\t\t\t}),\n\t\t);\n\t}\n\n\tprivate getRendererComponent(slot: RendererSlot): Component | undefined {\n\t\treturn slot === \"call\" ? this.callRendererComponent : this.resultRendererComponent;\n\t}\n\n\tprivate setRendererComponent(slot: RendererSlot, component: Component | undefined): void {\n\t\tif (slot === \"call\") this.callRendererComponent = component;\n\t\telse this.resultRendererComponent = component;\n\t}\n}\n"]}
@@ -0,0 +1,23 @@
1
+ import type { AgentToolResult } from "@earendil-works/pi-agent-core";
2
+ import type { ToolDef } from "../../../core/tools/index.ts";
3
+ export type ToolExecutionResult = Omit<AgentToolResult<unknown>, "details"> & {
4
+ readonly details?: unknown;
5
+ readonly isError: boolean;
6
+ };
7
+ export type ToolExecutionIdentity = {
8
+ readonly toolName: string;
9
+ readonly toolCallId: string;
10
+ readonly cwd: string;
11
+ readonly toolDefinition: ToolDef | undefined;
12
+ };
13
+ export type ToolExecutionRenderState = {
14
+ readonly args: unknown;
15
+ readonly executionStarted: boolean;
16
+ readonly argsComplete: boolean;
17
+ readonly isPartial: boolean;
18
+ readonly expanded: boolean;
19
+ readonly showImages: boolean;
20
+ readonly spinnerFrame: number | undefined;
21
+ readonly result: ToolExecutionResult | undefined;
22
+ };
23
+ //# sourceMappingURL=tool-execution-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-execution-types.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/tool-execution-types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAE5D,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,GAAG;IAC7E,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAAG;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,cAAc,EAAE,OAAO,GAAG,SAAS,CAAC;CAC7C,CAAC;AAEF,MAAM,MAAM,wBAAwB,GAAG;IACtC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,QAAQ,CAAC,MAAM,EAAE,mBAAmB,GAAG,SAAS,CAAC;CACjD,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tool-execution-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-execution-types.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/tool-execution-types.ts"],"names":[],"mappings":"","sourcesContent":["import type { AgentToolResult } from \"@earendil-works/pi-agent-core\";\nimport type { ToolDef } from \"../../../core/tools/index.ts\";\n\nexport type ToolExecutionResult = Omit<AgentToolResult<unknown>, \"details\"> & {\n\treadonly details?: unknown;\n\treadonly isError: boolean;\n};\n\nexport type ToolExecutionIdentity = {\n\treadonly toolName: string;\n\treadonly toolCallId: string;\n\treadonly cwd: string;\n\treadonly toolDefinition: ToolDef | undefined;\n};\n\nexport type ToolExecutionRenderState = {\n\treadonly args: unknown;\n\treadonly executionStarted: boolean;\n\treadonly argsComplete: boolean;\n\treadonly isPartial: boolean;\n\treadonly expanded: boolean;\n\treadonly showImages: boolean;\n\treadonly spinnerFrame: number | undefined;\n\treadonly result: ToolExecutionResult | undefined;\n};\n"]}
@@ -1,72 +1,46 @@
1
- import type { AgentToolResult } from "@earendil-works/pi-agent-core";
2
1
  import { Container, type TUI } from "@earendil-works/pi-tui";
3
- import type { ToolDefinition } from "../../../core/extensions/types.ts";
2
+ import type { ToolDef } from "../../../core/tools/index.ts";
3
+ import type { ToolExecutionResult } from "./tool-execution-types.ts";
4
4
  export interface ToolExecutionOptions {
5
5
  showImages?: boolean;
6
6
  imageWidthCells?: number;
7
7
  }
8
- type ToolExecutionResult = Omit<AgentToolResult<unknown>, "details"> & {
9
- details?: unknown;
10
- isError: boolean;
11
- };
12
8
  export declare class ToolExecutionComponent extends Container {
13
- private cachedLines?;
14
- private cachedSignature?;
15
- private cachedWidth?;
16
- private contentBox;
17
- private contentText;
18
- private selfRenderContainer;
19
- private callRendererComponent?;
20
- private resultRendererComponent?;
21
- private rendererState;
22
- private imageComponents;
23
- private imageSpacers;
24
- private toolName;
25
- private toolCallId;
9
+ private readonly identity;
10
+ private readonly ui;
11
+ private readonly renderer;
12
+ private readonly images;
26
13
  private args;
27
14
  private expanded;
28
15
  private showImages;
29
16
  private imageWidthCells;
30
17
  private isPartial;
31
- private toolDefinition?;
32
- private builtInToolDefinition?;
33
- private ui;
34
- private cwd;
35
18
  private executionStarted;
36
19
  private argsComplete;
37
20
  private spinnerFrame?;
38
21
  private spinnerInterval?;
39
22
  private result?;
40
- private convertedImages;
41
- private hideComponent;
42
- constructor(toolName: string, toolCallId: string, args: any, options: ToolExecutionOptions | undefined, toolDefinition: ToolDefinition<any, any> | undefined, ui: TUI, cwd: string);
43
- private getCallRenderer;
44
- private getResultRenderer;
45
- private hasRendererDefinition;
46
- private getRenderShell;
47
- private getRenderContext;
48
- private createCallFallback;
49
- private createResultFallback;
50
- updateArgs(args: any): void;
23
+ private cachedLines?;
24
+ private cachedSignature?;
25
+ private cachedWidth?;
26
+ private lastDisplaySignature?;
27
+ constructor(toolName: string, toolCallId: string, args: unknown, options: ToolExecutionOptions | undefined, toolDefinition: ToolDef | undefined, ui: TUI, cwd: string);
28
+ updateArgs(args: unknown): void;
51
29
  markExecutionStarted(): void;
52
30
  setArgsComplete(): void;
53
31
  updateResult(result: ToolExecutionResult, isPartial?: boolean): void;
54
32
  stopAnimation(): void;
55
- private maybeConvertImagesForKitty;
56
33
  setExpanded(expanded: boolean): void;
57
34
  setShowImages(show: boolean): void;
58
35
  setImageWidthCells(width: number): void;
59
36
  invalidate(): void;
60
37
  render(width: number): string[];
61
- private lastDisplaySignature?;
62
38
  private updateDisplay;
63
- private getTextOutput;
64
- private formatToolExecution;
39
+ private createRenderState;
65
40
  private createRenderSignature;
66
41
  private updateSpinnerAnimation;
67
42
  private startSpinnerAnimation;
68
43
  private stopSpinnerAnimation;
69
44
  private invalidateRenderCache;
70
45
  }
71
- export {};
72
46
  //# sourceMappingURL=tool-execution.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool-execution.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/tool-execution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-execution.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/tool-execution.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAU,KAAK,GAAG,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAC;AAI5D,OAAO,KAAK,EAAmD,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAEtH,MAAM,WAAW,oBAAoB;IACpC,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;CACzB;AAID,qBAAa,sBAAuB,SAAQ,SAAS;IACpD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwB;IACjD,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAM;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAwB;IACjD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;IAC7C,OAAO,CAAC,IAAI,CAAU;IACtB,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAAU;IAC5B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,eAAe,CAAC,CAAiB;IACzC,OAAO,CAAC,MAAM,CAAC,CAAsB;IACrC,OAAO,CAAC,WAAW,CAAC,CAAW;IAC/B,OAAO,CAAC,eAAe,CAAC,CAAS;IACjC,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,oBAAoB,CAAC,CAAS;IAEtC,YACC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,OAAO,EACb,OAAO,EAAE,oBAAoB,YAAK,EAClC,cAAc,EAAE,OAAO,GAAG,SAAS,EACnC,EAAE,EAAE,GAAG,EACP,GAAG,EAAE,MAAM,EAsBX;IAED,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAK9B;IAED,oBAAoB,IAAI,IAAI,CAK3B;IAED,eAAe,IAAI,IAAI,CAKtB;IAED,YAAY,CAAC,MAAM,EAAE,mBAAmB,EAAE,SAAS,UAAQ,GAAG,IAAI,CASjE;IAED,aAAa,IAAI,IAAI,CAEpB;IAED,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAGnC;IAED,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,CAGjC;IAED,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAGtC;IAEQ,UAAU,IAAI,IAAI,CAK1B;IAEQ,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAoBvC;IAED,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,iBAAiB;IAazB,OAAO,CAAC,qBAAqB;IAS7B,OAAO,CAAC,sBAAsB;IAO9B,OAAO,CAAC,qBAAqB;IAW7B,OAAO,CAAC,oBAAoB;IAQ5B,OAAO,CAAC,qBAAqB;CAK7B"}