@bastani/atomic 0.9.18 → 0.9.19-alpha.10

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 (876) hide show
  1. package/CHANGELOG.md +206 -0
  2. package/README.md +2 -2
  3. package/dist/builtin/intercom/CHANGELOG.md +51 -0
  4. package/dist/builtin/intercom/README.md +28 -18
  5. package/dist/builtin/intercom/broker/broker.ts +81 -9
  6. package/dist/builtin/intercom/broker/client.ts +45 -1
  7. package/dist/builtin/intercom/broker/framing.ts +5 -2
  8. package/dist/builtin/intercom/broker/group-membership.ts +4 -2
  9. package/dist/builtin/intercom/broker/presence-handler.ts +14 -0
  10. package/dist/builtin/intercom/broker/send-handler.ts +61 -6
  11. package/dist/builtin/intercom/broker/terminal-questions.ts +29 -0
  12. package/dist/builtin/intercom/index.bundle.mjs +1120 -783
  13. package/dist/builtin/intercom/package.json +2 -2
  14. package/dist/builtin/intercom/recipient-purpose.ts +9 -0
  15. package/dist/builtin/intercom/recoverable-disconnect.ts +2 -3
  16. package/dist/builtin/intercom/retry-policy.ts +4 -2
  17. package/dist/builtin/intercom/skills/intercom/SKILL.md +8 -7
  18. package/dist/builtin/intercom/types.ts +18 -3
  19. package/dist/builtin/mcp/CHANGELOG.md +6 -0
  20. package/dist/builtin/mcp/README.md +2 -0
  21. package/dist/builtin/mcp/index.bundle.mjs +2201 -12000
  22. package/dist/builtin/mcp/package.json +2 -2
  23. package/dist/builtin/subagents/CHANGELOG.md +57 -0
  24. package/dist/builtin/subagents/README.md +46 -23
  25. package/dist/builtin/subagents/agents/code-simplifier.md +1 -1
  26. package/dist/builtin/subagents/agents/codebase-analyzer.md +1 -1
  27. package/dist/builtin/subagents/agents/codebase-locator.md +2 -2
  28. package/dist/builtin/subagents/agents/codebase-online-researcher.md +8 -8
  29. package/dist/builtin/subagents/agents/codebase-pattern-finder.md +2 -2
  30. package/dist/builtin/subagents/agents/codebase-research-analyzer.md +1 -1
  31. package/dist/builtin/subagents/agents/codebase-research-locator.md +2 -2
  32. package/dist/builtin/subagents/agents/debugger.md +2 -2
  33. package/dist/builtin/subagents/agents/worker.md +1 -1
  34. package/dist/builtin/subagents/package.json +2 -2
  35. package/dist/builtin/subagents/skills/herdr/LICENSE +201 -0
  36. package/dist/builtin/subagents/skills/herdr/SKILL.md +202 -0
  37. package/dist/builtin/subagents/skills/subagent/SKILL.md +41 -35
  38. package/dist/builtin/subagents/skills/tmux/SKILL.md +1 -1
  39. package/dist/builtin/subagents/src/extension/index.bundle.mjs +1414 -656
  40. package/dist/builtin/web-access/CHANGELOG.md +19 -0
  41. package/dist/builtin/web-access/README.md +31 -24
  42. package/dist/builtin/web-access/index.bundle.mjs +42723 -26674
  43. package/dist/builtin/web-access/package.json +3 -2
  44. package/dist/builtin/workflows/CHANGELOG.md +131 -0
  45. package/dist/builtin/workflows/README.md +15 -16
  46. package/dist/builtin/workflows/builtin/adversarial-verification.js +5 -7
  47. package/dist/builtin/workflows/builtin/{chunk-hqpe2cyx.js → chunk-1jth021m.js} +85 -85
  48. package/dist/builtin/workflows/builtin/{chunk-7430zyas.js → chunk-2377r57g.js} +5 -3
  49. package/dist/builtin/workflows/builtin/{chunk-79fjkcvh.js → chunk-31j2gs7h.js} +18 -18
  50. package/dist/builtin/workflows/builtin/{chunk-wgccch41.js → chunk-6w6cvk6b.js} +16 -16
  51. package/dist/builtin/workflows/builtin/{chunk-zbekjqew.js → chunk-a2kdsqn8.js} +4 -4
  52. package/dist/builtin/workflows/builtin/{chunk-ze5x3d1r.js → chunk-fg9esgkj.js} +7 -7
  53. package/dist/builtin/workflows/builtin/{chunk-n8h4yyew.js → chunk-g0csgs7w.js} +11 -11
  54. package/dist/builtin/workflows/builtin/{chunk-b0v2xab1.js → chunk-ngkqkzej.js} +221 -23
  55. package/dist/builtin/workflows/builtin/{chunk-ed4jfn5t.js → chunk-nkrafh9s.js} +61 -61
  56. package/dist/builtin/workflows/builtin/{chunk-reqr3sr3.js → chunk-wf741bv3.js} +22 -22
  57. package/dist/builtin/workflows/builtin/{chunk-42s7sw0b.js → chunk-yeee2jrc.js} +19 -19
  58. package/dist/builtin/workflows/builtin/{chunk-6fqs7c01.js → chunk-z0d03ktm.js} +1 -1
  59. package/dist/builtin/workflows/builtin/{chunk-k3w87x8y.js → chunk-z29qbehr.js} +10 -10
  60. package/dist/builtin/workflows/builtin/classify-and-act.js +5 -6
  61. package/dist/builtin/workflows/builtin/fan-out-and-synthesize.js +3 -4
  62. package/dist/builtin/workflows/builtin/generate-and-filter.js +5 -6
  63. package/dist/builtin/workflows/builtin/goal.js +7 -8
  64. package/dist/builtin/workflows/builtin/index.js +20 -22
  65. package/dist/builtin/workflows/builtin/loop-until-done.js +5 -6
  66. package/dist/builtin/workflows/builtin/open-claude-design.js +3 -3
  67. package/dist/builtin/workflows/builtin/ralph.js +7 -8
  68. package/dist/builtin/workflows/builtin/steering-context.js +3 -3
  69. package/dist/builtin/workflows/builtin/tournament.js +5 -7
  70. package/dist/builtin/workflows/package.json +6 -6
  71. package/dist/builtin/workflows/src/extension/index.bundle.mjs +57318 -25709
  72. package/dist/builtin/workflows/src/index.js +1413 -589
  73. package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +4 -1
  74. package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +1 -1
  75. package/dist/cli/config-selector.js.map +1 -1
  76. package/dist/cli/startup-ui.d.ts +1 -1
  77. package/dist/cli/startup-ui.js.map +1 -1
  78. package/dist/core/agent-session-auto-compaction.d.ts.map +1 -1
  79. package/dist/core/agent-session-auto-compaction.js +6 -5
  80. package/dist/core/agent-session-auto-compaction.js.map +1 -1
  81. package/dist/core/agent-session-bash.d.ts +1 -1
  82. package/dist/core/agent-session-bash.d.ts.map +1 -1
  83. package/dist/core/agent-session-bash.js +5 -1
  84. package/dist/core/agent-session-bash.js.map +1 -1
  85. package/dist/core/agent-session-compaction.d.ts +1 -1
  86. package/dist/core/agent-session-compaction.js +1 -1
  87. package/dist/core/agent-session-compaction.js.map +1 -1
  88. package/dist/core/agent-session-custom-message-commit.d.ts +1 -1
  89. package/dist/core/agent-session-custom-message-commit.d.ts.map +1 -1
  90. package/dist/core/agent-session-custom-message-commit.js +33 -2
  91. package/dist/core/agent-session-custom-message-commit.js.map +1 -1
  92. package/dist/core/agent-session-delivery-forwarding.d.ts +1 -1
  93. package/dist/core/agent-session-delivery-forwarding.js.map +1 -1
  94. package/dist/core/agent-session-events.d.ts.map +1 -1
  95. package/dist/core/agent-session-events.js +5 -0
  96. package/dist/core/agent-session-events.js.map +1 -1
  97. package/dist/core/agent-session-export.d.ts +1 -1
  98. package/dist/core/agent-session-export.js.map +1 -1
  99. package/dist/core/agent-session-extension-bindings.d.ts +8 -1
  100. package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
  101. package/dist/core/agent-session-extension-bindings.js +45 -3
  102. package/dist/core/agent-session-extension-bindings.js.map +1 -1
  103. package/dist/core/agent-session-message-queue.d.ts +2 -2
  104. package/dist/core/agent-session-message-queue.d.ts.map +1 -1
  105. package/dist/core/agent-session-message-queue.js +22 -8
  106. package/dist/core/agent-session-message-queue.js.map +1 -1
  107. package/dist/core/agent-session-methods.d.ts +21 -8
  108. package/dist/core/agent-session-methods.d.ts.map +1 -1
  109. package/dist/core/agent-session-methods.js.map +1 -1
  110. package/dist/core/agent-session-persistent-custom-messages.d.ts +1 -1
  111. package/dist/core/agent-session-persistent-custom-messages.d.ts.map +1 -1
  112. package/dist/core/agent-session-persistent-custom-messages.js +13 -3
  113. package/dist/core/agent-session-persistent-custom-messages.js.map +1 -1
  114. package/dist/core/agent-session-post-tool-compaction.js +1 -1
  115. package/dist/core/agent-session-post-tool-compaction.js.map +1 -1
  116. package/dist/core/agent-session-prompt.d.ts +2 -2
  117. package/dist/core/agent-session-prompt.d.ts.map +1 -1
  118. package/dist/core/agent-session-prompt.js +105 -18
  119. package/dist/core/agent-session-prompt.js.map +1 -1
  120. package/dist/core/agent-session-queue-pause.d.ts.map +1 -1
  121. package/dist/core/agent-session-queue-pause.js +11 -0
  122. package/dist/core/agent-session-queue-pause.js.map +1 -1
  123. package/dist/core/agent-session-runtime-auth.d.ts +1 -1
  124. package/dist/core/agent-session-runtime-auth.js.map +1 -1
  125. package/dist/core/agent-session-runtime.d.ts +13 -4
  126. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  127. package/dist/core/agent-session-runtime.js +27 -4
  128. package/dist/core/agent-session-runtime.js.map +1 -1
  129. package/dist/core/agent-session-services.d.ts +5 -1
  130. package/dist/core/agent-session-services.d.ts.map +1 -1
  131. package/dist/core/agent-session-services.js +44 -34
  132. package/dist/core/agent-session-services.js.map +1 -1
  133. package/dist/core/agent-session-state.d.ts +1 -1
  134. package/dist/core/agent-session-state.js.map +1 -1
  135. package/dist/core/agent-session-tasks.d.ts +14 -0
  136. package/dist/core/agent-session-tasks.d.ts.map +1 -0
  137. package/dist/core/agent-session-tasks.js +120 -0
  138. package/dist/core/agent-session-tasks.js.map +1 -0
  139. package/dist/core/agent-session-tool-hooks.d.ts.map +1 -1
  140. package/dist/core/agent-session-tool-hooks.js +2 -0
  141. package/dist/core/agent-session-tool-hooks.js.map +1 -1
  142. package/dist/core/agent-session-tool-registry.d.ts +1 -0
  143. package/dist/core/agent-session-tool-registry.d.ts.map +1 -1
  144. package/dist/core/agent-session-tool-registry.js +52 -5
  145. package/dist/core/agent-session-tool-registry.js.map +1 -1
  146. package/dist/core/agent-session-transfer.d.ts.map +1 -1
  147. package/dist/core/agent-session-transfer.js +7 -0
  148. package/dist/core/agent-session-transfer.js.map +1 -1
  149. package/dist/core/agent-session-tree.d.ts.map +1 -1
  150. package/dist/core/agent-session-tree.js +3 -0
  151. package/dist/core/agent-session-tree.js.map +1 -1
  152. package/dist/core/agent-session-types.d.ts +4 -2
  153. package/dist/core/agent-session-types.d.ts.map +1 -1
  154. package/dist/core/agent-session-types.js +2 -0
  155. package/dist/core/agent-session-types.js.map +1 -1
  156. package/dist/core/agent-session.d.ts +8 -1
  157. package/dist/core/agent-session.d.ts.map +1 -1
  158. package/dist/core/agent-session.js +29 -1
  159. package/dist/core/agent-session.js.map +1 -1
  160. package/dist/core/bash-executor.d.ts +1 -1
  161. package/dist/core/bash-executor.js.map +1 -1
  162. package/dist/core/export-html/index.js.map +1 -1
  163. package/dist/core/export-html/tool-renderer.d.ts +1 -1
  164. package/dist/core/export-html/tool-renderer.js.map +1 -1
  165. package/dist/core/extension-session-state.js.map +1 -1
  166. package/dist/core/extensions/agent-events.d.ts +4 -4
  167. package/dist/core/extensions/agent-events.d.ts.map +1 -1
  168. package/dist/core/extensions/agent-events.js.map +1 -1
  169. package/dist/core/extensions/api-types.d.ts +10 -2
  170. package/dist/core/extensions/api-types.d.ts.map +1 -1
  171. package/dist/core/extensions/api-types.js.map +1 -1
  172. package/dist/core/extensions/context-types.d.ts +15 -0
  173. package/dist/core/extensions/context-types.d.ts.map +1 -1
  174. package/dist/core/extensions/context-types.js.map +1 -1
  175. package/dist/core/extensions/event-results.d.ts +1 -1
  176. package/dist/core/extensions/event-results.js.map +1 -1
  177. package/dist/core/extensions/event-types.d.ts +2 -1
  178. package/dist/core/extensions/event-types.d.ts.map +1 -1
  179. package/dist/core/extensions/event-types.js.map +1 -1
  180. package/dist/core/extensions/index.d.ts +3 -2
  181. package/dist/core/extensions/index.d.ts.map +1 -1
  182. package/dist/core/extensions/index.js.map +1 -1
  183. package/dist/core/extensions/loader-api.d.ts +1 -1
  184. package/dist/core/extensions/loader-api.d.ts.map +1 -1
  185. package/dist/core/extensions/loader-api.js +10 -0
  186. package/dist/core/extensions/loader-api.js.map +1 -1
  187. package/dist/core/extensions/loader-core.d.ts +1 -1
  188. package/dist/core/extensions/loader-core.js.map +1 -1
  189. package/dist/core/extensions/loader-discovery.d.ts +1 -1
  190. package/dist/core/extensions/loader-discovery.js.map +1 -1
  191. package/dist/core/extensions/loader-host-modules.d.ts +1 -1
  192. package/dist/core/extensions/loader-host-modules.d.ts.map +1 -1
  193. package/dist/core/extensions/loader-host-modules.js +5 -2
  194. package/dist/core/extensions/loader-host-modules.js.map +1 -1
  195. package/dist/core/extensions/loader-runtime.d.ts.map +1 -1
  196. package/dist/core/extensions/loader-runtime.js +3 -0
  197. package/dist/core/extensions/loader-runtime.js.map +1 -1
  198. package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -1
  199. package/dist/core/extensions/loader-virtual-modules.js +6 -1
  200. package/dist/core/extensions/loader-virtual-modules.js.map +1 -1
  201. package/dist/core/extensions/loader.d.ts +1 -1
  202. package/dist/core/extensions/loader.js.map +1 -1
  203. package/dist/core/extensions/message-types.d.ts +1 -1
  204. package/dist/core/extensions/message-types.js.map +1 -1
  205. package/dist/core/extensions/reactive-widget.d.ts +6 -0
  206. package/dist/core/extensions/reactive-widget.d.ts.map +1 -1
  207. package/dist/core/extensions/reactive-widget.js +7 -1
  208. package/dist/core/extensions/reactive-widget.js.map +1 -1
  209. package/dist/core/extensions/runner-context.d.ts +12 -2
  210. package/dist/core/extensions/runner-context.d.ts.map +1 -1
  211. package/dist/core/extensions/runner-context.js +49 -4
  212. package/dist/core/extensions/runner-context.js.map +1 -1
  213. package/dist/core/extensions/runner-events.d.ts +1 -1
  214. package/dist/core/extensions/runner-events.d.ts.map +1 -1
  215. package/dist/core/extensions/runner-events.js +17 -2
  216. package/dist/core/extensions/runner-events.js.map +1 -1
  217. package/dist/core/extensions/runner-shortcuts.d.ts.map +1 -1
  218. package/dist/core/extensions/runner-shortcuts.js +32 -3
  219. package/dist/core/extensions/runner-shortcuts.js.map +1 -1
  220. package/dist/core/extensions/runner-ui.js.map +1 -1
  221. package/dist/core/extensions/runner.d.ts +17 -2
  222. package/dist/core/extensions/runner.d.ts.map +1 -1
  223. package/dist/core/extensions/runner.js +69 -19
  224. package/dist/core/extensions/runner.js.map +1 -1
  225. package/dist/core/extensions/runtime-types.d.ts +8 -1
  226. package/dist/core/extensions/runtime-types.d.ts.map +1 -1
  227. package/dist/core/extensions/runtime-types.js.map +1 -1
  228. package/dist/core/extensions/tool-types.d.ts +1 -1
  229. package/dist/core/extensions/tool-types.js.map +1 -1
  230. package/dist/core/extensions/types.d.ts +1 -0
  231. package/dist/core/extensions/types.d.ts.map +1 -1
  232. package/dist/core/extensions/types.js.map +1 -1
  233. package/dist/core/extensions/ui-types.d.ts +25 -1
  234. package/dist/core/extensions/ui-types.d.ts.map +1 -1
  235. package/dist/core/extensions/ui-types.js.map +1 -1
  236. package/dist/core/extensions/workflow-activity-hub.d.ts +25 -0
  237. package/dist/core/extensions/workflow-activity-hub.d.ts.map +1 -0
  238. package/dist/core/extensions/workflow-activity-hub.js +183 -0
  239. package/dist/core/extensions/workflow-activity-hub.js.map +1 -0
  240. package/dist/core/extensions/workflow-events.d.ts +118 -0
  241. package/dist/core/extensions/workflow-events.d.ts.map +1 -0
  242. package/dist/core/extensions/workflow-events.js +2 -0
  243. package/dist/core/extensions/workflow-events.js.map +1 -0
  244. package/dist/core/footer-data-provider.d.ts +8 -4
  245. package/dist/core/footer-data-provider.d.ts.map +1 -1
  246. package/dist/core/footer-data-provider.js +97 -11
  247. package/dist/core/footer-data-provider.js.map +1 -1
  248. package/dist/core/index.d.ts +3 -3
  249. package/dist/core/index.js.map +1 -1
  250. package/dist/core/keybinding-identity.d.ts +4 -0
  251. package/dist/core/keybinding-identity.d.ts.map +1 -0
  252. package/dist/core/keybinding-identity.js +10 -0
  253. package/dist/core/keybinding-identity.js.map +1 -0
  254. package/dist/core/keybindings.d.ts +37 -2
  255. package/dist/core/keybindings.d.ts.map +1 -1
  256. package/dist/core/keybindings.js +9 -2
  257. package/dist/core/keybindings.js.map +1 -1
  258. package/dist/core/mandatory-runtime-tools.d.ts +1 -1
  259. package/dist/core/mandatory-runtime-tools.js.map +1 -1
  260. package/dist/core/model-fallback-failures.js +2 -2
  261. package/dist/core/model-fallback-failures.js.map +1 -1
  262. package/dist/core/model-registry.d.ts +5 -1
  263. package/dist/core/model-registry.d.ts.map +1 -1
  264. package/dist/core/model-registry.js +8 -0
  265. package/dist/core/model-registry.js.map +1 -1
  266. package/dist/core/model-resolver-defaults.js +1 -1
  267. package/dist/core/model-resolver-defaults.js.map +1 -1
  268. package/dist/core/resource-loader-assets.js.map +1 -1
  269. package/dist/core/resource-loader-core.d.ts +1 -1
  270. package/dist/core/resource-loader-core.js.map +1 -1
  271. package/dist/core/resource-loader-internals.d.ts +2 -2
  272. package/dist/core/resource-loader-internals.js.map +1 -1
  273. package/dist/core/resource-loader-reload.d.ts +2 -0
  274. package/dist/core/resource-loader-reload.d.ts.map +1 -1
  275. package/dist/core/resource-loader-reload.js +231 -191
  276. package/dist/core/resource-loader-reload.js.map +1 -1
  277. package/dist/core/resource-loader-types.d.ts +4 -2
  278. package/dist/core/resource-loader-types.d.ts.map +1 -1
  279. package/dist/core/resource-loader-types.js.map +1 -1
  280. package/dist/core/retry-policy.d.ts +1 -0
  281. package/dist/core/retry-policy.d.ts.map +1 -1
  282. package/dist/core/retry-policy.js +2 -1
  283. package/dist/core/retry-policy.js.map +1 -1
  284. package/dist/core/sdk-exports.d.ts +3 -3
  285. package/dist/core/sdk-exports.d.ts.map +1 -1
  286. package/dist/core/sdk-exports.js +1 -1
  287. package/dist/core/sdk-exports.js.map +1 -1
  288. package/dist/core/sdk-types.d.ts +2 -2
  289. package/dist/core/sdk-types.js.map +1 -1
  290. package/dist/core/sdk.js.map +1 -1
  291. package/dist/core/settings-manager-basic-accessors.d.ts +6 -3
  292. package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -1
  293. package/dist/core/settings-manager-basic-accessors.js +25 -8
  294. package/dist/core/settings-manager-basic-accessors.js.map +1 -1
  295. package/dist/core/settings-manager-core.d.ts.map +1 -1
  296. package/dist/core/settings-manager-core.js +10 -4
  297. package/dist/core/settings-manager-core.js.map +1 -1
  298. package/dist/core/settings-manager.d.ts +1 -1
  299. package/dist/core/settings-manager.d.ts.map +1 -1
  300. package/dist/core/settings-manager.js.map +1 -1
  301. package/dist/core/settings-storage.d.ts +1 -0
  302. package/dist/core/settings-storage.d.ts.map +1 -1
  303. package/dist/core/settings-storage.js +18 -0
  304. package/dist/core/settings-storage.js.map +1 -1
  305. package/dist/core/settings-types.d.ts +17 -0
  306. package/dist/core/settings-types.d.ts.map +1 -1
  307. package/dist/core/settings-types.js.map +1 -1
  308. package/dist/core/slash-commands.d.ts.map +1 -1
  309. package/dist/core/slash-commands.js +6 -5
  310. package/dist/core/slash-commands.js.map +1 -1
  311. package/dist/core/system-prompt.d.ts.map +1 -1
  312. package/dist/core/system-prompt.js +5 -6
  313. package/dist/core/system-prompt.js.map +1 -1
  314. package/dist/core/tasks/agent-adapter.d.ts +44 -0
  315. package/dist/core/tasks/agent-adapter.d.ts.map +1 -0
  316. package/dist/core/tasks/agent-adapter.js +112 -0
  317. package/dist/core/tasks/agent-adapter.js.map +1 -0
  318. package/dist/core/tasks/command-output.d.ts +15 -0
  319. package/dist/core/tasks/command-output.d.ts.map +1 -0
  320. package/dist/core/tasks/command-output.js +29 -0
  321. package/dist/core/tasks/command-output.js.map +1 -0
  322. package/dist/core/tasks/completion-ordering.d.ts +11 -0
  323. package/dist/core/tasks/completion-ordering.d.ts.map +1 -0
  324. package/dist/core/tasks/completion-ordering.js +19 -0
  325. package/dist/core/tasks/completion-ordering.js.map +1 -0
  326. package/dist/core/tasks/completion.d.ts +36 -0
  327. package/dist/core/tasks/completion.d.ts.map +1 -0
  328. package/dist/core/tasks/completion.js +119 -0
  329. package/dist/core/tasks/completion.js.map +1 -0
  330. package/dist/core/tasks/contracts.d.ts +404 -0
  331. package/dist/core/tasks/contracts.d.ts.map +1 -0
  332. package/dist/core/tasks/contracts.js +2 -0
  333. package/dist/core/tasks/contracts.js.map +1 -0
  334. package/dist/core/tasks/execution-scope.d.ts +10 -0
  335. package/dist/core/tasks/execution-scope.d.ts.map +1 -0
  336. package/dist/core/tasks/execution-scope.js +27 -0
  337. package/dist/core/tasks/execution-scope.js.map +1 -0
  338. package/dist/core/tasks/owner-store.d.ts +53 -0
  339. package/dist/core/tasks/owner-store.d.ts.map +1 -0
  340. package/dist/core/tasks/owner-store.js +155 -0
  341. package/dist/core/tasks/owner-store.js.map +1 -0
  342. package/dist/core/tasks/pause.d.ts +4 -0
  343. package/dist/core/tasks/pause.d.ts.map +1 -0
  344. package/dist/core/tasks/pause.js +49 -0
  345. package/dist/core/tasks/pause.js.map +1 -0
  346. package/dist/core/tasks/supervisor.d.ts +123 -0
  347. package/dist/core/tasks/supervisor.d.ts.map +1 -0
  348. package/dist/core/tasks/supervisor.js +942 -0
  349. package/dist/core/tasks/supervisor.js.map +1 -0
  350. package/dist/core/tasks/transcript.d.ts +23 -0
  351. package/dist/core/tasks/transcript.d.ts.map +1 -0
  352. package/dist/core/tasks/transcript.js +74 -0
  353. package/dist/core/tasks/transcript.js.map +1 -0
  354. package/dist/core/tools/ask-user-question/ask-user-question.d.ts +2 -2
  355. package/dist/core/tools/ask-user-question/ask-user-question.d.ts.map +1 -1
  356. package/dist/core/tools/ask-user-question/ask-user-question.js +8 -4
  357. package/dist/core/tools/ask-user-question/ask-user-question.js.map +1 -1
  358. package/dist/core/tools/ask-user-question/state/build-questionnaire.d.ts +1 -1
  359. package/dist/core/tools/ask-user-question/state/build-questionnaire.js.map +1 -1
  360. package/dist/core/tools/ask-user-question/state/questionnaire-session.d.ts +1 -1
  361. package/dist/core/tools/ask-user-question/state/questionnaire-session.js.map +1 -1
  362. package/dist/core/tools/ask-user-question/view/components/multi-select-view.d.ts +1 -1
  363. package/dist/core/tools/ask-user-question/view/components/multi-select-view.js.map +1 -1
  364. package/dist/core/tools/ask-user-question/view/components/preview/markdown-content-cache.d.ts +1 -1
  365. package/dist/core/tools/ask-user-question/view/components/preview/markdown-content-cache.js.map +1 -1
  366. package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.d.ts +1 -1
  367. package/dist/core/tools/ask-user-question/view/components/preview/preview-block-renderer.js.map +1 -1
  368. package/dist/core/tools/ask-user-question/view/components/submit-picker.d.ts +1 -1
  369. package/dist/core/tools/ask-user-question/view/components/submit-picker.js.map +1 -1
  370. package/dist/core/tools/ask-user-question/view/components/tab-bar.d.ts +1 -1
  371. package/dist/core/tools/ask-user-question/view/components/tab-bar.js.map +1 -1
  372. package/dist/core/tools/ask-user-question/view/dialog-builder.d.ts +1 -1
  373. package/dist/core/tools/ask-user-question/view/dialog-builder.js.map +1 -1
  374. package/dist/core/tools/ask-user-question/view/tab-content-strategy.d.ts +1 -1
  375. package/dist/core/tools/ask-user-question/view/tab-content-strategy.js.map +1 -1
  376. package/dist/core/tools/bash-pty-native.d.ts +32 -3
  377. package/dist/core/tools/bash-pty-native.d.ts.map +1 -1
  378. package/dist/core/tools/bash-pty-native.js +198 -1
  379. package/dist/core/tools/bash-pty-native.js.map +1 -1
  380. package/dist/core/tools/bash.d.ts +25 -5
  381. package/dist/core/tools/bash.d.ts.map +1 -1
  382. package/dist/core/tools/bash.js +100 -10
  383. package/dist/core/tools/bash.js.map +1 -1
  384. package/dist/core/tools/edit.d.ts +3 -0
  385. package/dist/core/tools/edit.d.ts.map +1 -1
  386. package/dist/core/tools/edit.js +92 -14
  387. package/dist/core/tools/edit.js.map +1 -1
  388. package/dist/core/tools/file-mutation-coordinator.d.ts +255 -0
  389. package/dist/core/tools/file-mutation-coordinator.d.ts.map +1 -0
  390. package/dist/core/tools/file-mutation-coordinator.js +300 -0
  391. package/dist/core/tools/file-mutation-coordinator.js.map +1 -0
  392. package/dist/core/tools/file-mutation-queue.d.ts +14 -1
  393. package/dist/core/tools/file-mutation-queue.d.ts.map +1 -1
  394. package/dist/core/tools/file-mutation-queue.js +15 -3
  395. package/dist/core/tools/file-mutation-queue.js.map +1 -1
  396. package/dist/core/tools/find.js.map +1 -1
  397. package/dist/core/tools/grep.js.map +1 -1
  398. package/dist/core/tools/hashline.d.ts +9 -0
  399. package/dist/core/tools/hashline.d.ts.map +1 -1
  400. package/dist/core/tools/hashline.js +12 -1
  401. package/dist/core/tools/hashline.js.map +1 -1
  402. package/dist/core/tools/index.d.ts +15 -4
  403. package/dist/core/tools/index.d.ts.map +1 -1
  404. package/dist/core/tools/index.js +79 -12
  405. package/dist/core/tools/index.js.map +1 -1
  406. package/dist/core/tools/kill.d.ts +17 -0
  407. package/dist/core/tools/kill.d.ts.map +1 -0
  408. package/dist/core/tools/kill.js +49 -0
  409. package/dist/core/tools/kill.js.map +1 -0
  410. package/dist/core/tools/ls.js.map +1 -1
  411. package/dist/core/tools/non-minting-snapshot-store.d.ts +49 -0
  412. package/dist/core/tools/non-minting-snapshot-store.d.ts.map +1 -0
  413. package/dist/core/tools/non-minting-snapshot-store.js +64 -0
  414. package/dist/core/tools/non-minting-snapshot-store.js.map +1 -0
  415. package/dist/core/tools/powershell.d.ts +100 -34
  416. package/dist/core/tools/powershell.d.ts.map +1 -1
  417. package/dist/core/tools/powershell.js +41 -11
  418. package/dist/core/tools/powershell.js.map +1 -1
  419. package/dist/core/tools/read-document-extract.js.map +1 -1
  420. package/dist/core/tools/read.d.ts.map +1 -1
  421. package/dist/core/tools/read.js +1 -2
  422. package/dist/core/tools/read.js.map +1 -1
  423. package/dist/core/tools/render-utils.d.ts +1 -1
  424. package/dist/core/tools/render-utils.js.map +1 -1
  425. package/dist/core/tools/resource-selectors.d.ts +1 -1
  426. package/dist/core/tools/resource-selectors.d.ts.map +1 -1
  427. package/dist/core/tools/resource-selectors.js +21 -10
  428. package/dist/core/tools/resource-selectors.js.map +1 -1
  429. package/dist/core/tools/search.js.map +1 -1
  430. package/dist/core/tools/todos-render.d.ts +1 -1
  431. package/dist/core/tools/todos-render.js.map +1 -1
  432. package/dist/core/tools/write.d.ts +30 -1
  433. package/dist/core/tools/write.d.ts.map +1 -1
  434. package/dist/core/tools/write.js +98 -10
  435. package/dist/core/tools/write.js.map +1 -1
  436. package/dist/core/workflow-stage-admission.d.ts +24 -0
  437. package/dist/core/workflow-stage-admission.d.ts.map +1 -1
  438. package/dist/core/workflow-stage-admission.js +87 -3
  439. package/dist/core/workflow-stage-admission.js.map +1 -1
  440. package/dist/extensions/herdr/activity.d.ts +15 -0
  441. package/dist/extensions/herdr/activity.d.ts.map +1 -0
  442. package/dist/extensions/herdr/activity.js +24 -0
  443. package/dist/extensions/herdr/activity.js.map +1 -0
  444. package/dist/extensions/herdr/environment.d.ts +7 -0
  445. package/dist/extensions/herdr/environment.d.ts.map +1 -0
  446. package/dist/extensions/herdr/environment.js +6 -0
  447. package/dist/extensions/herdr/environment.js.map +1 -0
  448. package/dist/extensions/herdr/index.d.ts +9 -0
  449. package/dist/extensions/herdr/index.d.ts.map +1 -0
  450. package/dist/extensions/herdr/index.js +225 -0
  451. package/dist/extensions/herdr/index.js.map +1 -0
  452. package/dist/extensions/herdr/pane-owner.d.ts +30 -0
  453. package/dist/extensions/herdr/pane-owner.d.ts.map +1 -0
  454. package/dist/extensions/herdr/pane-owner.js +111 -0
  455. package/dist/extensions/herdr/pane-owner.js.map +1 -0
  456. package/dist/extensions/herdr/transport.d.ts +8 -0
  457. package/dist/extensions/herdr/transport.d.ts.map +1 -0
  458. package/dist/extensions/herdr/transport.js +28 -0
  459. package/dist/extensions/herdr/transport.js.map +1 -0
  460. package/dist/extensions/index.d.ts.map +1 -1
  461. package/dist/extensions/index.js +2 -0
  462. package/dist/extensions/index.js.map +1 -1
  463. package/dist/extensions/llama/huggingface-ui.d.ts +1 -1
  464. package/dist/extensions/llama/huggingface-ui.js.map +1 -1
  465. package/dist/extensions/llama/ui.js.map +1 -1
  466. package/dist/index-extensions.d.ts +3 -2
  467. package/dist/index-extensions.d.ts.map +1 -1
  468. package/dist/index-extensions.js.map +1 -1
  469. package/dist/index.d.ts +14 -5
  470. package/dist/index.d.ts.map +1 -1
  471. package/dist/index.js +10 -1
  472. package/dist/index.js.map +1 -1
  473. package/dist/main-session.js.map +1 -1
  474. package/dist/main.d.ts.map +1 -1
  475. package/dist/main.js +149 -69
  476. package/dist/main.js.map +1 -1
  477. package/dist/modes/interactive/components/armin.js.map +1 -1
  478. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  479. package/dist/modes/interactive/components/atomic-banner.d.ts +1 -1
  480. package/dist/modes/interactive/components/atomic-banner.js.map +1 -1
  481. package/dist/modes/interactive/components/atomic-working-status.js.map +1 -1
  482. package/dist/modes/interactive/components/bash-execution.js.map +1 -1
  483. package/dist/modes/interactive/components/bordered-loader.d.ts +1 -1
  484. package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
  485. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  486. package/dist/modes/interactive/components/chat-message-renderer.d.ts +12 -0
  487. package/dist/modes/interactive/components/chat-message-renderer.d.ts.map +1 -1
  488. package/dist/modes/interactive/components/chat-message-renderer.js +44 -0
  489. package/dist/modes/interactive/components/chat-message-renderer.js.map +1 -1
  490. package/dist/modes/interactive/components/chat-session-host-actions.d.ts +1 -1
  491. package/dist/modes/interactive/components/chat-session-host-actions.d.ts.map +1 -1
  492. package/dist/modes/interactive/components/chat-session-host-actions.js +43 -8
  493. package/dist/modes/interactive/components/chat-session-host-actions.js.map +1 -1
  494. package/dist/modes/interactive/components/chat-session-host-editor.d.ts +1 -1
  495. package/dist/modes/interactive/components/chat-session-host-editor.js.map +1 -1
  496. package/dist/modes/interactive/components/chat-session-host-events.d.ts +2 -2
  497. package/dist/modes/interactive/components/chat-session-host-events.js.map +1 -1
  498. package/dist/modes/interactive/components/chat-session-host-rendering.d.ts +2 -2
  499. package/dist/modes/interactive/components/chat-session-host-rendering.d.ts.map +1 -1
  500. package/dist/modes/interactive/components/chat-session-host-rendering.js +12 -3
  501. package/dist/modes/interactive/components/chat-session-host-rendering.js.map +1 -1
  502. package/dist/modes/interactive/components/chat-session-host-runtime.d.ts +4 -5
  503. package/dist/modes/interactive/components/chat-session-host-runtime.d.ts.map +1 -1
  504. package/dist/modes/interactive/components/chat-session-host-runtime.js +8 -6
  505. package/dist/modes/interactive/components/chat-session-host-runtime.js.map +1 -1
  506. package/dist/modes/interactive/components/chat-session-host-state.d.ts +7 -2
  507. package/dist/modes/interactive/components/chat-session-host-state.d.ts.map +1 -1
  508. package/dist/modes/interactive/components/chat-session-host-state.js +1 -0
  509. package/dist/modes/interactive/components/chat-session-host-state.js.map +1 -1
  510. package/dist/modes/interactive/components/chat-session-host-terminal-cleanup.d.ts +1 -1
  511. package/dist/modes/interactive/components/chat-session-host-terminal-cleanup.js.map +1 -1
  512. package/dist/modes/interactive/components/chat-session-host-types.d.ts +8 -3
  513. package/dist/modes/interactive/components/chat-session-host-types.d.ts.map +1 -1
  514. package/dist/modes/interactive/components/chat-session-host-types.js.map +1 -1
  515. package/dist/modes/interactive/components/chat-session-host-utils.d.ts +1 -1
  516. package/dist/modes/interactive/components/chat-session-host-utils.d.ts.map +1 -1
  517. package/dist/modes/interactive/components/chat-session-host-utils.js +2 -0
  518. package/dist/modes/interactive/components/chat-session-host-utils.js.map +1 -1
  519. package/dist/modes/interactive/components/chat-session-host.d.ts +17 -2
  520. package/dist/modes/interactive/components/chat-session-host.d.ts.map +1 -1
  521. package/dist/modes/interactive/components/chat-session-host.js +100 -3
  522. package/dist/modes/interactive/components/chat-session-host.js.map +1 -1
  523. package/dist/modes/interactive/components/chat-transcript.d.ts +1 -0
  524. package/dist/modes/interactive/components/chat-transcript.d.ts.map +1 -1
  525. package/dist/modes/interactive/components/chat-transcript.js +1 -1
  526. package/dist/modes/interactive/components/chat-transcript.js.map +1 -1
  527. package/dist/modes/interactive/components/compaction-boundary-message.js.map +1 -1
  528. package/dist/modes/interactive/components/config-selector-list.js.map +1 -1
  529. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  530. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  531. package/dist/modes/interactive/components/custom-entry.js.map +1 -1
  532. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  533. package/dist/modes/interactive/components/custom-message.js +12 -0
  534. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  535. package/dist/modes/interactive/components/daxnuts.js.map +1 -1
  536. package/dist/modes/interactive/components/diff.js.map +1 -1
  537. package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
  538. package/dist/modes/interactive/components/earendil-announcement.js.map +1 -1
  539. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  540. package/dist/modes/interactive/components/extension-input.js.map +1 -1
  541. package/dist/modes/interactive/components/extension-selector.js.map +1 -1
  542. package/dist/modes/interactive/components/first-time-setup.d.ts +1 -1
  543. package/dist/modes/interactive/components/first-time-setup.js.map +1 -1
  544. package/dist/modes/interactive/components/footer.d.ts +7 -6
  545. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  546. package/dist/modes/interactive/components/footer.js +27 -9
  547. package/dist/modes/interactive/components/footer.js.map +1 -1
  548. package/dist/modes/interactive/components/host-input-form-mount.js.map +1 -1
  549. package/dist/modes/interactive/components/host-input-form.d.ts +1 -1
  550. package/dist/modes/interactive/components/host-input-form.js.map +1 -1
  551. package/dist/modes/interactive/components/index.d.ts +2 -2
  552. package/dist/modes/interactive/components/index.js.map +1 -1
  553. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
  554. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  555. package/dist/modes/interactive/components/mermaid.d.ts +1 -1
  556. package/dist/modes/interactive/components/mermaid.js.map +1 -1
  557. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  558. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  559. package/dist/modes/interactive/components/reserved-bottom-overlay.js.map +1 -1
  560. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  561. package/dist/modes/interactive/components/scroll-widget.d.ts +23 -0
  562. package/dist/modes/interactive/components/scroll-widget.d.ts.map +1 -0
  563. package/dist/modes/interactive/components/scroll-widget.js +61 -0
  564. package/dist/modes/interactive/components/scroll-widget.js.map +1 -0
  565. package/dist/modes/interactive/components/session-selector-header.js.map +1 -1
  566. package/dist/modes/interactive/components/session-selector-list.js.map +1 -1
  567. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  568. package/dist/modes/interactive/components/settings-selector-items.js.map +1 -1
  569. package/dist/modes/interactive/components/settings-selector-submenus.d.ts +1 -1
  570. package/dist/modes/interactive/components/settings-selector-submenus.js.map +1 -1
  571. package/dist/modes/interactive/components/settings-selector-types.d.ts +1 -1
  572. package/dist/modes/interactive/components/settings-selector-types.js.map +1 -1
  573. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  574. package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
  575. package/dist/modes/interactive/components/skill-invocation-message.d.ts +1 -1
  576. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  577. package/dist/modes/interactive/components/task-completion-message.d.ts +13 -0
  578. package/dist/modes/interactive/components/task-completion-message.d.ts.map +1 -0
  579. package/dist/modes/interactive/components/task-completion-message.js +65 -0
  580. package/dist/modes/interactive/components/task-completion-message.js.map +1 -0
  581. package/dist/modes/interactive/components/task-detail.d.ts +27 -0
  582. package/dist/modes/interactive/components/task-detail.d.ts.map +1 -0
  583. package/dist/modes/interactive/components/task-detail.js +107 -0
  584. package/dist/modes/interactive/components/task-detail.js.map +1 -0
  585. package/dist/modes/interactive/components/task-inspector.d.ts +50 -0
  586. package/dist/modes/interactive/components/task-inspector.d.ts.map +1 -0
  587. package/dist/modes/interactive/components/task-inspector.js +599 -0
  588. package/dist/modes/interactive/components/task-inspector.js.map +1 -0
  589. package/dist/modes/interactive/components/task-list.d.ts +18 -0
  590. package/dist/modes/interactive/components/task-list.d.ts.map +1 -0
  591. package/dist/modes/interactive/components/task-list.js +59 -0
  592. package/dist/modes/interactive/components/task-list.js.map +1 -0
  593. package/dist/modes/interactive/components/task-live-transcript.d.ts +17 -0
  594. package/dist/modes/interactive/components/task-live-transcript.d.ts.map +1 -0
  595. package/dist/modes/interactive/components/task-live-transcript.js +41 -0
  596. package/dist/modes/interactive/components/task-live-transcript.js.map +1 -0
  597. package/dist/modes/interactive/components/task-navigation.d.ts +38 -0
  598. package/dist/modes/interactive/components/task-navigation.d.ts.map +1 -0
  599. package/dist/modes/interactive/components/task-navigation.js +93 -0
  600. package/dist/modes/interactive/components/task-navigation.js.map +1 -0
  601. package/dist/modes/interactive/components/task-row.d.ts +34 -0
  602. package/dist/modes/interactive/components/task-row.d.ts.map +1 -0
  603. package/dist/modes/interactive/components/task-row.js +165 -0
  604. package/dist/modes/interactive/components/task-row.js.map +1 -0
  605. package/dist/modes/interactive/components/theme-selector.js.map +1 -1
  606. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  607. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  608. package/dist/modes/interactive/components/transcript-follow-indicator.js.map +1 -1
  609. package/dist/modes/interactive/components/tree-selector-component.js.map +1 -1
  610. package/dist/modes/interactive/components/tree-selector-content.js.map +1 -1
  611. package/dist/modes/interactive/components/tree-selector-help.js.map +1 -1
  612. package/dist/modes/interactive/components/tree-selector-label-input.js.map +1 -1
  613. package/dist/modes/interactive/components/tree-selector-list.js.map +1 -1
  614. package/dist/modes/interactive/components/trust-selector.js.map +1 -1
  615. package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
  616. package/dist/modes/interactive/components/user-message.js.map +1 -1
  617. package/dist/modes/interactive/components/working-status.js.map +1 -1
  618. package/dist/modes/interactive/interactive-agent-events.js +8 -2
  619. package/dist/modes/interactive/interactive-agent-events.js.map +1 -1
  620. package/dist/modes/interactive/interactive-auth-login.js +3 -1
  621. package/dist/modes/interactive/interactive-auth-login.js.map +1 -1
  622. package/dist/modes/interactive/interactive-autocomplete.js +9 -30
  623. package/dist/modes/interactive/interactive-autocomplete.js.map +1 -1
  624. package/dist/modes/interactive/interactive-deferred-startup.js +2 -1
  625. package/dist/modes/interactive/interactive-deferred-startup.js.map +1 -1
  626. package/dist/modes/interactive/interactive-extension-context.js +14 -4
  627. package/dist/modes/interactive/interactive-extension-context.js.map +1 -1
  628. package/dist/modes/interactive/interactive-extension-custom-ui.js +52 -4
  629. package/dist/modes/interactive/interactive-extension-custom-ui.js.map +1 -1
  630. package/dist/modes/interactive/interactive-extension-runtime.js +11 -3
  631. package/dist/modes/interactive/interactive-extension-runtime.js.map +1 -1
  632. package/dist/modes/interactive/interactive-extension-widgets.js +9 -1
  633. package/dist/modes/interactive/interactive-extension-widgets.js.map +1 -1
  634. package/dist/modes/interactive/interactive-input-handling.d.ts.map +1 -1
  635. package/dist/modes/interactive/interactive-input-handling.js +19 -0
  636. package/dist/modes/interactive/interactive-input-handling.js.map +1 -1
  637. package/dist/modes/interactive/interactive-mode-base.d.ts +7 -1
  638. package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
  639. package/dist/modes/interactive/interactive-mode-base.js +10 -4
  640. package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
  641. package/dist/modes/interactive/interactive-mode-deps.d.ts +6 -6
  642. package/dist/modes/interactive/interactive-mode-deps.js.map +1 -1
  643. package/dist/modes/interactive/interactive-mode-surface.d.ts +3 -2
  644. package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
  645. package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
  646. package/dist/modes/interactive/interactive-mode.d.ts +1 -0
  647. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  648. package/dist/modes/interactive/interactive-mode.js +3 -0
  649. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  650. package/dist/modes/interactive/interactive-process-lifecycle.js +4 -1
  651. package/dist/modes/interactive/interactive-process-lifecycle.js.map +1 -1
  652. package/dist/modes/interactive/interactive-render-chat.js +30 -4
  653. package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
  654. package/dist/modes/interactive/interactive-session-routing.js +33 -23
  655. package/dist/modes/interactive/interactive-session-routing.js.map +1 -1
  656. package/dist/modes/interactive/interactive-session-runtime.js +1 -0
  657. package/dist/modes/interactive/interactive-session-runtime.js.map +1 -1
  658. package/dist/modes/interactive/interactive-slash-commands.js.map +1 -1
  659. package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
  660. package/dist/modes/interactive/interactive-startup.js +3 -0
  661. package/dist/modes/interactive/interactive-startup.js.map +1 -1
  662. package/dist/modes/interactive/interactive-summarization-retry-events.js +2 -2
  663. package/dist/modes/interactive/interactive-summarization-retry-events.js.map +1 -1
  664. package/dist/modes/interactive/interactive-task-projection.d.ts +13 -0
  665. package/dist/modes/interactive/interactive-task-projection.d.ts.map +1 -0
  666. package/dist/modes/interactive/interactive-task-projection.js +72 -0
  667. package/dist/modes/interactive/interactive-task-projection.js.map +1 -0
  668. package/dist/modes/interactive/interactive-tui.js.map +1 -1
  669. package/dist/modes/interactive/interactive-windows-subshell.d.ts +17 -0
  670. package/dist/modes/interactive/interactive-windows-subshell.d.ts.map +1 -0
  671. package/dist/modes/interactive/interactive-windows-subshell.js +92 -0
  672. package/dist/modes/interactive/interactive-windows-subshell.js.map +1 -0
  673. package/dist/modes/interactive/skill-command-autocomplete.d.ts +12 -0
  674. package/dist/modes/interactive/skill-command-autocomplete.d.ts.map +1 -0
  675. package/dist/modes/interactive/skill-command-autocomplete.js +69 -0
  676. package/dist/modes/interactive/skill-command-autocomplete.js.map +1 -0
  677. package/dist/modes/interactive/theme/theme-class.d.ts.map +1 -1
  678. package/dist/modes/interactive/theme/theme-class.js +4 -1
  679. package/dist/modes/interactive/theme/theme-class.js.map +1 -1
  680. package/dist/modes/interactive/theme/theme-controller.d.ts +1 -1
  681. package/dist/modes/interactive/theme/theme-controller.js.map +1 -1
  682. package/dist/modes/interactive-engine/activity-watchdog.d.ts +2 -2
  683. package/dist/modes/interactive-engine/activity-watchdog.d.ts.map +1 -1
  684. package/dist/modes/interactive-engine/activity-watchdog.js.map +1 -1
  685. package/dist/modes/interactive-engine/create-isolated-runtime.d.ts +1 -1
  686. package/dist/modes/interactive-engine/create-isolated-runtime.js.map +1 -1
  687. package/dist/modes/interactive-engine/engine-custom-ui.d.ts +9 -10
  688. package/dist/modes/interactive-engine/engine-custom-ui.d.ts.map +1 -1
  689. package/dist/modes/interactive-engine/engine-custom-ui.js +29 -12
  690. package/dist/modes/interactive-engine/engine-custom-ui.js.map +1 -1
  691. package/dist/modes/interactive-engine/engine-diagnostic-view.d.ts +3 -1
  692. package/dist/modes/interactive-engine/engine-diagnostic-view.d.ts.map +1 -1
  693. package/dist/modes/interactive-engine/engine-diagnostic-view.js +11 -0
  694. package/dist/modes/interactive-engine/engine-diagnostic-view.js.map +1 -1
  695. package/dist/modes/interactive-engine/engine-dialog-host.d.ts +2 -2
  696. package/dist/modes/interactive-engine/engine-dialog-host.d.ts.map +1 -1
  697. package/dist/modes/interactive-engine/engine-dialog-host.js +4 -1
  698. package/dist/modes/interactive-engine/engine-dialog-host.js.map +1 -1
  699. package/dist/modes/interactive-engine/engine-project-trust.d.ts +10 -0
  700. package/dist/modes/interactive-engine/engine-project-trust.d.ts.map +1 -0
  701. package/dist/modes/interactive-engine/engine-project-trust.js +28 -0
  702. package/dist/modes/interactive-engine/engine-project-trust.js.map +1 -0
  703. package/dist/modes/interactive-engine/engine-render-service.d.ts +1 -1
  704. package/dist/modes/interactive-engine/engine-render-service.js.map +1 -1
  705. package/dist/modes/interactive-engine/extension-ui-bridge.d.ts +3 -1
  706. package/dist/modes/interactive-engine/extension-ui-bridge.d.ts.map +1 -1
  707. package/dist/modes/interactive-engine/extension-ui-bridge.js +7 -1
  708. package/dist/modes/interactive-engine/extension-ui-bridge.js.map +1 -1
  709. package/dist/modes/interactive-engine/input-form-host.d.ts +2 -2
  710. package/dist/modes/interactive-engine/input-form-host.js.map +1 -1
  711. package/dist/modes/interactive-engine/isolated-auth.d.ts +1 -1
  712. package/dist/modes/interactive-engine/isolated-auth.js.map +1 -1
  713. package/dist/modes/interactive-engine/isolated-runtime.d.ts +5 -2
  714. package/dist/modes/interactive-engine/isolated-runtime.d.ts.map +1 -1
  715. package/dist/modes/interactive-engine/isolated-runtime.js +42 -4
  716. package/dist/modes/interactive-engine/isolated-runtime.js.map +1 -1
  717. package/dist/modes/interactive-engine/protocol.d.ts +21 -1
  718. package/dist/modes/interactive-engine/protocol.d.ts.map +1 -1
  719. package/dist/modes/interactive-engine/protocol.js +53 -2
  720. package/dist/modes/interactive-engine/protocol.js.map +1 -1
  721. package/dist/modes/interactive-engine/remote-component.d.ts +2 -2
  722. package/dist/modes/interactive-engine/remote-component.d.ts.map +1 -1
  723. package/dist/modes/interactive-engine/remote-component.js +19 -8
  724. package/dist/modes/interactive-engine/remote-component.js.map +1 -1
  725. package/dist/modes/interactive-engine/remote-model-catalog.d.ts +1 -1
  726. package/dist/modes/interactive-engine/remote-model-catalog.js.map +1 -1
  727. package/dist/modes/interactive-engine/remote-renderer.d.ts +1 -1
  728. package/dist/modes/interactive-engine/remote-renderer.js.map +1 -1
  729. package/dist/modes/interactive-engine/session-picker-host.d.ts +2 -2
  730. package/dist/modes/interactive-engine/session-picker-host.js.map +1 -1
  731. package/dist/modes/json-event.d.ts +1 -1
  732. package/dist/modes/json-event.js.map +1 -1
  733. package/dist/modes/print-mode.js.map +1 -1
  734. package/dist/modes/rpc/rpc-bash-request-owners.d.ts +2 -2
  735. package/dist/modes/rpc/rpc-bash-request-owners.js.map +1 -1
  736. package/dist/modes/rpc/rpc-client-api.d.ts +2 -2
  737. package/dist/modes/rpc/rpc-client-api.d.ts.map +1 -1
  738. package/dist/modes/rpc/rpc-client-api.js +2 -2
  739. package/dist/modes/rpc/rpc-client-api.js.map +1 -1
  740. package/dist/modes/rpc/rpc-client-process.d.ts +2 -0
  741. package/dist/modes/rpc/rpc-client-process.d.ts.map +1 -1
  742. package/dist/modes/rpc/rpc-client-process.js +23 -1
  743. package/dist/modes/rpc/rpc-client-process.js.map +1 -1
  744. package/dist/modes/rpc/rpc-client-waits.d.ts +1 -1
  745. package/dist/modes/rpc/rpc-client-waits.js.map +1 -1
  746. package/dist/modes/rpc/rpc-client.d.ts +3 -1
  747. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  748. package/dist/modes/rpc/rpc-client.js +40 -3
  749. package/dist/modes/rpc/rpc-client.js.map +1 -1
  750. package/dist/modes/rpc/rpc-command-handler.d.ts +4 -2
  751. package/dist/modes/rpc/rpc-command-handler.d.ts.map +1 -1
  752. package/dist/modes/rpc/rpc-command-handler.js +12 -4
  753. package/dist/modes/rpc/rpc-command-handler.js.map +1 -1
  754. package/dist/modes/rpc/rpc-extension-ui.d.ts +1 -1
  755. package/dist/modes/rpc/rpc-extension-ui.d.ts.map +1 -1
  756. package/dist/modes/rpc/rpc-extension-ui.js +2 -1
  757. package/dist/modes/rpc/rpc-extension-ui.js.map +1 -1
  758. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  759. package/dist/modes/rpc/rpc-mode.js +12 -2
  760. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  761. package/dist/modes/rpc/rpc-provider-auth.d.ts +1 -1
  762. package/dist/modes/rpc/rpc-provider-auth.js.map +1 -1
  763. package/dist/modes/rpc/rpc-session-binding.d.ts +4 -1
  764. package/dist/modes/rpc/rpc-session-binding.d.ts.map +1 -1
  765. package/dist/modes/rpc/rpc-session-binding.js +35 -1
  766. package/dist/modes/rpc/rpc-session-binding.js.map +1 -1
  767. package/dist/modes/rpc/rpc-types.d.ts +17 -1
  768. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  769. package/dist/modes/rpc/rpc-types.js.map +1 -1
  770. package/dist/modes/rpc/task-ui-bridge.d.ts +9 -0
  771. package/dist/modes/rpc/task-ui-bridge.d.ts.map +1 -0
  772. package/dist/modes/rpc/task-ui-bridge.js +146 -0
  773. package/dist/modes/rpc/task-ui-bridge.js.map +1 -0
  774. package/dist/self-update-plan.js.map +1 -1
  775. package/dist/utils/markit.d.ts +2 -0
  776. package/dist/utils/markit.d.ts.map +1 -1
  777. package/dist/utils/markit.js +65 -5
  778. package/dist/utils/markit.js.map +1 -1
  779. package/docs/background-tasks.md +232 -0
  780. package/docs/build.md +51 -0
  781. package/docs/changelog.mdx +8 -8
  782. package/docs/compaction/reference.md +267 -0
  783. package/docs/compaction.md +39 -200
  784. package/docs/computer-use.md +425 -0
  785. package/docs/containerization.md +9 -5
  786. package/docs/custom-provider/api-reference.md +145 -0
  787. package/docs/custom-provider/oauth.md +131 -0
  788. package/docs/custom-provider/override.md +34 -0
  789. package/docs/custom-provider/registration.md +163 -0
  790. package/docs/custom-provider/streaming.md +214 -0
  791. package/docs/custom-provider.md +43 -607
  792. package/docs/development.md +68 -30
  793. package/docs/docs.json +199 -73
  794. package/docs/environment-variables.md +2 -2
  795. package/docs/extensions/api-reference.md +1003 -0
  796. package/docs/extensions/authoring.md +676 -0
  797. package/docs/extensions/events.md +793 -0
  798. package/docs/extensions/examples.md +94 -0
  799. package/docs/extensions/ui.md +470 -0
  800. package/docs/extensions.md +241 -2623
  801. package/docs/getting-started/authentication.md +55 -0
  802. package/docs/getting-started/first-session.md +172 -0
  803. package/docs/getting-started/installation.md +154 -0
  804. package/docs/getting-started/project-instructions.md +43 -0
  805. package/docs/guides/configuration.md +65 -0
  806. package/docs/guides/intercom.md +24 -0
  807. package/docs/guides/non-interactive.md +33 -0
  808. package/docs/guides/subagents.md +24 -0
  809. package/docs/guides/workflows.md +27 -0
  810. package/docs/guides.md +41 -0
  811. package/docs/herdr.md +55 -0
  812. package/docs/index.md +13 -44
  813. package/docs/intercom/operations.md +178 -0
  814. package/docs/intercom/reference.md +150 -0
  815. package/docs/intercom.md +61 -251
  816. package/docs/json.md +17 -0
  817. package/docs/keybindings.md +36 -2
  818. package/docs/llama-cpp.md +5 -0
  819. package/docs/models/artificial-analysis-index.md +89 -0
  820. package/docs/models/evals.md +225 -148
  821. package/docs/models/model-selection.md +30 -21
  822. package/docs/models/pareto-efficiency.md +4 -4
  823. package/docs/models/reference.md +601 -0
  824. package/docs/models.md +45 -550
  825. package/docs/packages/authoring.md +88 -0
  826. package/docs/packages/reference.md +43 -0
  827. package/docs/packages.md +28 -107
  828. package/docs/programmatic.md +29 -0
  829. package/docs/prompt-templates.md +11 -0
  830. package/docs/providers/reference.md +23 -0
  831. package/docs/providers.md +59 -62
  832. package/docs/quickstart.md +45 -239
  833. package/docs/reference/cli.md +252 -0
  834. package/docs/reference.md +52 -0
  835. package/docs/rpc/examples.md +64 -0
  836. package/docs/rpc/extension-ui.md +198 -0
  837. package/docs/rpc/protocol.md +1341 -0
  838. package/docs/rpc.md +109 -1346
  839. package/docs/sdk/reference.md +1090 -0
  840. package/docs/sdk.md +64 -756
  841. package/docs/session-format.md +2 -0
  842. package/docs/sessions.md +6 -10
  843. package/docs/settings.md +45 -48
  844. package/docs/skills/authoring.md +95 -0
  845. package/docs/skills/reference.md +60 -0
  846. package/docs/skills.md +37 -117
  847. package/docs/subagents/authoring.md +37 -0
  848. package/docs/subagents/reference.md +60 -0
  849. package/docs/subagents.md +90 -78
  850. package/docs/terminal-setup.md +1 -1
  851. package/docs/themes/reference.md +176 -0
  852. package/docs/themes.md +25 -135
  853. package/docs/tmux.md +7 -0
  854. package/docs/tools/edit.md +5 -0
  855. package/docs/tools.md +67 -1
  856. package/docs/tui/reference.md +343 -0
  857. package/docs/tui.md +83 -285
  858. package/docs/usage.md +31 -210
  859. package/docs/web-access.md +50 -0
  860. package/docs/windows.md +6 -5
  861. package/docs/workflows/api-reference.md +31 -12
  862. package/docs/workflows/authoring.md +7 -5
  863. package/docs/workflows/builtins.md +11 -8
  864. package/docs/workflows/operations.md +117 -39
  865. package/docs/workflows/reliable-design.md +59 -10
  866. package/docs/workflows/verification.md +116 -32
  867. package/docs/workflows.md +7 -3
  868. package/examples/extensions/gondolin/index.ts +116 -148
  869. package/examples/extensions/gondolin/package.json +1 -1
  870. package/examples/extensions/ssh.ts +56 -34
  871. package/npm-shrinkwrap.json +798 -678
  872. package/package.json +11 -11
  873. /package/dist/builtin/workflows/builtin/{chunk-cg9tmks0.js → chunk-n1910xc4.js} +0 -0
  874. /package/dist/builtin/workflows/builtin/{chunk-wpckd35c.js → chunk-rc5ec5xx.js} +0 -0
  875. /package/dist/builtin/workflows/builtin/{chunk-7at6dnkr.js → chunk-tgt0s5e5.js} +0 -0
  876. /package/dist/builtin/workflows/builtin/{chunk-bfkmzv9h.js → chunk-xtxcq5tj.js} +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"settings-selector-submenus.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/settings-selector-submenus.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Component, SelectItem, SelectListLayoutOptions, SettingItem } from \"@earendil-works/pi-tui\";\nimport {\n\tContainer,\n\tfuzzyFilter,\n\tgetKeybindings,\n\tInput,\n\tSelectList,\n\tSettingsList,\n\tSpacer,\n\tText,\n} from \"@earendil-works/pi-tui\";\nimport type { WarningSettings } from \"../../../core/settings-manager.ts\";\nimport {\n\tgetSelectListTheme,\n\tgetSettingsListTheme,\n\tparseAutoThemeSetting,\n\ttype TerminalTheme,\n\ttheme,\n} from \"../theme/theme.ts\";\nimport type { SettingsCallbacks } from \"./settings-selector-types.ts\";\n\nconst SETTINGS_SUBMENU_SELECT_LIST_LAYOUT: SelectListLayoutOptions = {\n\tminPrimaryColumnWidth: 12,\n\tmaxPrimaryColumnWidth: 32,\n};\n\nconst AUTOMATIC_THEME_VALUE = \"/\";\n\n/**\n * A submenu component for selecting from a list of options.\n */\nexport class WarningSettingsSubmenu extends Container {\n\tprivate settingsList: SettingsList;\n\tprivate state: WarningSettings;\n\n\tconstructor(warnings: WarningSettings, onChange: (warnings: WarningSettings) => void, onCancel: () => void) {\n\t\tsuper();\n\n\t\tthis.state = { ...warnings };\n\n\t\tconst items: SettingItem[] = [\n\t\t\t{\n\t\t\t\tid: \"anthropic-extra-usage\",\n\t\t\t\tlabel: \"Anthropic extra usage\",\n\t\t\t\tdescription: \"Warn when Anthropic subscription auth may use paid extra usage\",\n\t\t\t\tcurrentValue: (this.state.anthropicExtraUsage ?? true) ? \"true\" : \"false\",\n\t\t\t\tvalues: [\"true\", \"false\"],\n\t\t\t},\n\t\t];\n\n\t\tthis.settingsList = new SettingsList(\n\t\t\titems,\n\t\t\tMath.min(items.length, 10),\n\t\t\tgetSettingsListTheme(),\n\t\t\t(id, newValue) => {\n\t\t\t\tswitch (id) {\n\t\t\t\t\tcase \"anthropic-extra-usage\":\n\t\t\t\t\t\tthis.state = { ...this.state, anthropicExtraUsage: newValue === \"true\" };\n\t\t\t\t\t\tonChange({ ...this.state });\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\tonCancel,\n\t\t);\n\n\t\tthis.addChild(this.settingsList);\n\t}\n\n\thandleInput(data: string): boolean {\n\t\tthis.settingsList.handleInput(data);\n\t\treturn true;\n\t}\n}\n\nexport class SelectSubmenu extends Container {\n\tprivate selectList: SelectList;\n\tprivate readonly allOptions: SelectItem[];\n\tprivate readonly currentValue: string;\n\tprivate readonly onSelectValue: (value: string) => void;\n\tprivate readonly onCancelValue: () => void;\n\tprivate searchInput?: Input;\n\tprivate listChildIndex = 0;\n\n\tconstructor(\n\t\ttitle: string,\n\t\tdescription: string,\n\t\toptions: SelectItem[],\n\t\tcurrentValue: string,\n\t\tonSelect: (value: string) => void,\n\t\tonCancel: () => void,\n\t\tonSelectionChange?: (value: string) => void,\n\t\tsearchable = false,\n\t) {\n\t\tsuper();\n\t\tthis.allOptions = options;\n\t\tthis.currentValue = currentValue;\n\t\tthis.onSelectValue = onSelect;\n\t\tthis.onCancelValue = onCancel;\n\n\t\tthis.addChild(new Text(theme.bold(theme.fg(\"accent\", title)), 0, 0));\n\n\t\tif (description) {\n\t\t\tthis.addChild(new Spacer(1));\n\t\t\tthis.addChild(new Text(theme.fg(\"muted\", description), 0, 0));\n\t\t}\n\n\t\tif (searchable) {\n\t\t\tthis.addChild(new Spacer(1));\n\t\t\tthis.searchInput = new Input();\n\t\t\tthis.addChild(this.searchInput);\n\t\t}\n\n\t\tthis.addChild(new Spacer(1));\n\n\t\tthis.selectList = new SelectList(\n\t\t\toptions,\n\t\t\tMath.min(options.length, 10),\n\t\t\tgetSelectListTheme(),\n\t\t\tSETTINGS_SUBMENU_SELECT_LIST_LAYOUT,\n\t\t);\n\n\t\tconst currentIndex = options.findIndex((o) => o.value === currentValue);\n\t\tif (currentIndex !== -1) {\n\t\t\tthis.selectList.setSelectedIndex(currentIndex);\n\t\t}\n\n\t\tthis.selectList.onSelect = (item) => {\n\t\t\tonSelect(item.value);\n\t\t};\n\n\t\tthis.selectList.onCancel = onCancel;\n\n\t\tif (onSelectionChange) {\n\t\t\tthis.selectList.onSelectionChange = (item) => {\n\t\t\t\tonSelectionChange(item.value);\n\t\t\t};\n\t\t}\n\n\t\tthis.listChildIndex = this.children.length;\n\t\tthis.addChild(this.selectList);\n\n\t\tthis.addChild(new Spacer(1));\n\t\tthis.addChild(new Text(theme.fg(\"dim\", \" enter select · esc back\"), 0, 0));\n\t}\n\n\thandleInput(data: string): boolean {\n\t\tif (!this.searchInput) {\n\t\t\tthis.selectList.handleInput(data);\n\t\t\treturn true;\n\t\t}\n\t\tconst kb = getKeybindings();\n\t\tif (\n\t\t\tkb.matches(data, \"tui.select.up\") ||\n\t\t\tkb.matches(data, \"tui.select.down\") ||\n\t\t\tkb.matches(data, \"tui.select.confirm\") ||\n\t\t\tkb.matches(data, \"tui.select.cancel\")\n\t\t) {\n\t\t\tthis.selectList.handleInput(data);\n\t\t\treturn true;\n\t\t}\n\t\tthis.searchInput.handleInput(data);\n\t\tconst query = this.searchInput.getValue();\n\t\tconst options = query\n\t\t\t? fuzzyFilter(this.allOptions, query, (item) => `${item.label} ${item.description ?? \"\"}`)\n\t\t\t: this.allOptions;\n\t\tconst list = new SelectList(\n\t\t\toptions,\n\t\t\tMath.min(options.length, 10),\n\t\t\tgetSelectListTheme(),\n\t\t\tSETTINGS_SUBMENU_SELECT_LIST_LAYOUT,\n\t\t);\n\t\tconst currentIndex = options.findIndex((item) => item.value === this.currentValue);\n\t\tif (currentIndex !== -1) list.setSelectedIndex(currentIndex);\n\t\tlist.onSelect = (item) => this.onSelectValue(item.value);\n\t\tlist.onCancel = this.onCancelValue;\n\t\tthis.children[this.listChildIndex] = list;\n\t\tthis.selectList = list;\n\t\treturn true;\n\t}\n}\n\nexport function themeItems(availableThemes: string[], currentTheme: string): SelectItem[] {\n\treturn availableThemes.map((name) => ({\n\t\tvalue: name,\n\t\tlabel: `${name === currentTheme ? \"✓ \" : \" \"}${name}`,\n\t}));\n}\n\nfunction singleModeThemeItems(availableThemes: string[], currentTheme: string): SelectItem[] {\n\treturn [\n\t\t{\n\t\t\tvalue: AUTOMATIC_THEME_VALUE,\n\t\t\tlabel: \" Automatic\",\n\t\t\tdescription: \"Use separate themes for light and dark terminal appearance\",\n\t\t},\n\t\t...themeItems(availableThemes, currentTheme),\n\t];\n}\n\nfunction preferredTheme(availableThemes: string[], preferred: string | undefined, fallback: string): string {\n\tif (preferred && availableThemes.includes(preferred)) return preferred;\n\tif (availableThemes.includes(fallback)) return fallback;\n\treturn availableThemes[0] ?? fallback;\n}\n\nfunction defaultAutomaticThemes(\n\tcurrentThemeSetting: string,\n\tavailableThemes: string[],\n): { lightTheme: string; darkTheme: string } {\n\tconst autoTheme = parseAutoThemeSetting(currentThemeSetting);\n\tif (autoTheme) return autoTheme;\n\n\tconst currentFixedTheme = currentThemeSetting.includes(\"/\") ? undefined : currentThemeSetting;\n\tconst themeName = preferredTheme(availableThemes, currentFixedTheme, \"dark\");\n\treturn { lightTheme: themeName, darkTheme: themeName };\n}\n\nexport class ThemeSubmenu extends Container {\n\tprivate inputComponent: Component | undefined;\n\tprivate readonly callbacks: SettingsCallbacks;\n\tprivate readonly availableThemes: string[];\n\tprivate readonly terminalTheme: TerminalTheme;\n\tprivate readonly onDone: (selectedValue?: string) => void;\n\tprivate readonly originalThemeSetting: string;\n\tprivate mode: \"single\" | \"automatic\";\n\tprivate singleTheme: string;\n\tprivate lightTheme: string;\n\tprivate darkTheme: string;\n\n\tconstructor(\n\t\tcurrentThemeSetting: string,\n\t\tterminalTheme: TerminalTheme,\n\t\tavailableThemes: string[],\n\t\tcallbacks: SettingsCallbacks,\n\t\tonDone: (selectedValue?: string) => void,\n\t) {\n\t\tsuper();\n\t\tthis.callbacks = callbacks;\n\t\tthis.availableThemes = availableThemes;\n\t\tthis.terminalTheme = terminalTheme;\n\t\tthis.onDone = onDone;\n\t\tthis.originalThemeSetting = currentThemeSetting;\n\t\tconst autoTheme = parseAutoThemeSetting(currentThemeSetting);\n\t\tconst automaticThemes = defaultAutomaticThemes(currentThemeSetting, availableThemes);\n\t\tconst fixedTheme = autoTheme || currentThemeSetting.includes(\"/\") ? undefined : currentThemeSetting;\n\t\tthis.mode = autoTheme ? \"automatic\" : \"single\";\n\t\tthis.lightTheme = automaticThemes.lightTheme;\n\t\tthis.darkTheme = automaticThemes.darkTheme;\n\t\tthis.singleTheme = preferredTheme(\n\t\t\tavailableThemes,\n\t\t\tfixedTheme ?? (autoTheme ? this.getActiveAutomaticTheme() : undefined),\n\t\t\t\"dark\",\n\t\t);\n\n\t\tif (this.mode === \"automatic\") {\n\t\t\tthis.showAutomaticMenu();\n\t\t} else {\n\t\t\tthis.showSingleMenu();\n\t\t}\n\t}\n\n\thandleInput(data: string): boolean {\n\t\tif (!this.inputComponent?.handleInput) return false;\n\t\tthis.inputComponent.handleInput(data);\n\t\treturn true;\n\t}\n\n\tprivate setContent(renderComponent: Component, inputComponent: Component = renderComponent): void {\n\t\tthis.clear();\n\t\tthis.addChild(renderComponent);\n\t\tthis.inputComponent = inputComponent;\n\t}\n\n\tprivate showSingleMenu(): void {\n\t\tthis.mode = \"single\";\n\t\tconst menu = new SelectSubmenu(\n\t\t\t\"Theme\",\n\t\t\t\"Select a theme, or choose Automatic to follow terminal appearance.\",\n\t\t\tsingleModeThemeItems(this.availableThemes, this.singleTheme),\n\t\t\tthis.singleTheme,\n\t\t\t(value) => {\n\t\t\t\tif (value === AUTOMATIC_THEME_VALUE) {\n\t\t\t\t\tthis.mode = \"automatic\";\n\t\t\t\t\tthis.callbacks.onThemePreview?.(this.getThemeSetting());\n\t\t\t\t\tthis.showAutomaticMenu();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.singleTheme = value;\n\t\t\t\tthis.apply(value);\n\t\t\t},\n\t\t\t() => this.cancel(),\n\t\t\t(value) => {\n\t\t\t\tthis.callbacks.onThemePreview?.(value === AUTOMATIC_THEME_VALUE ? this.getAutomaticThemeSetting() : value);\n\t\t\t},\n\t\t);\n\t\tthis.setContent(menu);\n\t}\n\n\tprivate showAutomaticMenu(): void {\n\t\tthis.mode = \"automatic\";\n\t\tconst content = new Container();\n\t\tcontent.addChild(new Text(theme.bold(theme.fg(\"accent\", \"Automatic Theme\")), 0, 0));\n\t\tcontent.addChild(new Spacer(1));\n\t\tcontent.addChild(new Text(theme.fg(\"muted\", \"Choose themes for terminal light and dark appearance.\"), 0, 0));\n\t\tcontent.addChild(new Text(theme.fg(\"muted\", \"Light/dark detection requires terminal support.\"), 0, 0));\n\t\tcontent.addChild(new Spacer(1));\n\n\t\tconst items: SettingItem[] = [\n\t\t\t{\n\t\t\t\tid: \"light-theme\",\n\t\t\t\tlabel: \"Light theme\",\n\t\t\t\tdescription: \"Theme to use in automatic mode when the terminal is light\",\n\t\t\t\tcurrentValue: this.lightTheme,\n\t\t\t\tsubmenu: (currentValue, done) =>\n\t\t\t\t\tthis.createThemeSelect(\n\t\t\t\t\t\t\"Light Theme\",\n\t\t\t\t\t\t\"Select the theme to use for light terminal appearance\",\n\t\t\t\t\t\tcurrentValue,\n\t\t\t\t\t\tdone,\n\t\t\t\t\t\t(value) => {\n\t\t\t\t\t\t\tthis.lightTheme = value;\n\t\t\t\t\t\t\tthis.callbacks.onThemePreview?.(this.getThemeSetting());\n\t\t\t\t\t\t\tdone(value);\n\t\t\t\t\t\t},\n\t\t\t\t\t),\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"dark-theme\",\n\t\t\t\tlabel: \"Dark theme\",\n\t\t\t\tdescription: \"Theme to use in automatic mode when the terminal is dark\",\n\t\t\t\tcurrentValue: this.darkTheme,\n\t\t\t\tsubmenu: (currentValue, done) =>\n\t\t\t\t\tthis.createThemeSelect(\n\t\t\t\t\t\t\"Dark Theme\",\n\t\t\t\t\t\t\"Select the theme to use for dark terminal appearance\",\n\t\t\t\t\t\tcurrentValue,\n\t\t\t\t\t\tdone,\n\t\t\t\t\t\t(value) => {\n\t\t\t\t\t\t\tthis.darkTheme = value;\n\t\t\t\t\t\t\tthis.callbacks.onThemePreview?.(this.getThemeSetting());\n\t\t\t\t\t\t\tdone(value);\n\t\t\t\t\t\t},\n\t\t\t\t\t),\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"apply\",\n\t\t\t\tlabel: \"Apply\",\n\t\t\t\tdescription: \"Save and go back\",\n\t\t\t\tcurrentValue: \"save and go back\",\n\t\t\t\tvalues: [\"save and go back\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"single-mode\",\n\t\t\t\tlabel: \"Change mode\",\n\t\t\t\tdescription: \"Switch to one theme for light and dark\",\n\t\t\t\tcurrentValue: \"switch to single theme\",\n\t\t\t\tvalues: [\"switch to single theme\"],\n\t\t\t},\n\t\t];\n\n\t\tconst settingsList = new SettingsList(\n\t\t\titems,\n\t\t\tMath.min(items.length, 10),\n\t\t\tgetSettingsListTheme(),\n\t\t\t(id) => {\n\t\t\t\tswitch (id) {\n\t\t\t\t\tcase \"single-mode\":\n\t\t\t\t\t\tthis.mode = \"single\";\n\t\t\t\t\t\tthis.singleTheme = this.getActiveAutomaticTheme();\n\t\t\t\t\t\tthis.callbacks.onThemePreview?.(this.singleTheme);\n\t\t\t\t\t\tthis.showSingleMenu();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"apply\":\n\t\t\t\t\t\tthis.apply(this.getAutomaticThemeSetting());\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\t() => this.cancel(),\n\t\t);\n\t\tcontent.addChild(settingsList);\n\t\tthis.setContent(content, settingsList);\n\t}\n\n\tprivate createThemeSelect(\n\t\ttitle: string,\n\t\tdescription: string,\n\t\tcurrentValue: string,\n\t\tdone: (selectedValue?: string) => void,\n\t\tonSelect: (value: string) => void,\n\t): SelectSubmenu {\n\t\treturn new SelectSubmenu(\n\t\t\ttitle,\n\t\t\tdescription,\n\t\t\tthemeItems(this.availableThemes, currentValue),\n\t\t\tcurrentValue,\n\t\t\tonSelect,\n\t\t\t() => {\n\t\t\t\tthis.callbacks.onThemePreview?.(this.getThemeSetting());\n\t\t\t\tdone();\n\t\t\t},\n\t\t\t(value) => this.callbacks.onThemePreview?.(value),\n\t\t);\n\t}\n\n\tprivate getThemeSetting(): string {\n\t\treturn this.mode === \"automatic\" ? this.getAutomaticThemeSetting() : this.singleTheme;\n\t}\n\n\tprivate getActiveAutomaticTheme(): string {\n\t\treturn this.terminalTheme === \"light\" ? this.lightTheme : this.darkTheme;\n\t}\n\n\tprivate getAutomaticThemeSetting(): string {\n\t\treturn `${this.lightTheme}/${this.darkTheme}`;\n\t}\n\n\tprivate apply(themeSetting: string): void {\n\t\tthis.onDone(themeSetting);\n\t}\n\n\tprivate cancel(): void {\n\t\tthis.callbacks.onThemePreview?.(this.originalThemeSetting);\n\t\tthis.onDone();\n\t}\n}\n"]}
1
+ {"version":3,"file":"settings-selector-submenus.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/settings-selector-submenus.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Component, SelectItem, SelectListLayoutOptions, SettingItem } from \"@earendil-works/pi-tui\";\nimport {\n\tContainer,\n\tfuzzyFilter,\n\tgetKeybindings,\n\tInput,\n\tSelectList,\n\tSettingsList,\n\tSpacer,\n\tText,\n} from \"@earendil-works/pi-tui\";\nimport type { WarningSettings } from \"../../../core/settings-manager.ts\";\nimport {\n\tgetSelectListTheme,\n\tgetSettingsListTheme,\n\tparseAutoThemeSetting,\n\ttype TerminalTheme,\n\ttheme,\n} from \"../theme/theme.js\";\nimport type { SettingsCallbacks } from \"./settings-selector-types.ts\";\n\nconst SETTINGS_SUBMENU_SELECT_LIST_LAYOUT: SelectListLayoutOptions = {\n\tminPrimaryColumnWidth: 12,\n\tmaxPrimaryColumnWidth: 32,\n};\n\nconst AUTOMATIC_THEME_VALUE = \"/\";\n\n/**\n * A submenu component for selecting from a list of options.\n */\nexport class WarningSettingsSubmenu extends Container {\n\tprivate settingsList: SettingsList;\n\tprivate state: WarningSettings;\n\n\tconstructor(warnings: WarningSettings, onChange: (warnings: WarningSettings) => void, onCancel: () => void) {\n\t\tsuper();\n\n\t\tthis.state = { ...warnings };\n\n\t\tconst items: SettingItem[] = [\n\t\t\t{\n\t\t\t\tid: \"anthropic-extra-usage\",\n\t\t\t\tlabel: \"Anthropic extra usage\",\n\t\t\t\tdescription: \"Warn when Anthropic subscription auth may use paid extra usage\",\n\t\t\t\tcurrentValue: (this.state.anthropicExtraUsage ?? true) ? \"true\" : \"false\",\n\t\t\t\tvalues: [\"true\", \"false\"],\n\t\t\t},\n\t\t];\n\n\t\tthis.settingsList = new SettingsList(\n\t\t\titems,\n\t\t\tMath.min(items.length, 10),\n\t\t\tgetSettingsListTheme(),\n\t\t\t(id, newValue) => {\n\t\t\t\tswitch (id) {\n\t\t\t\t\tcase \"anthropic-extra-usage\":\n\t\t\t\t\t\tthis.state = { ...this.state, anthropicExtraUsage: newValue === \"true\" };\n\t\t\t\t\t\tonChange({ ...this.state });\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\tonCancel,\n\t\t);\n\n\t\tthis.addChild(this.settingsList);\n\t}\n\n\thandleInput(data: string): boolean {\n\t\tthis.settingsList.handleInput(data);\n\t\treturn true;\n\t}\n}\n\nexport class SelectSubmenu extends Container {\n\tprivate selectList: SelectList;\n\tprivate readonly allOptions: SelectItem[];\n\tprivate readonly currentValue: string;\n\tprivate readonly onSelectValue: (value: string) => void;\n\tprivate readonly onCancelValue: () => void;\n\tprivate searchInput?: Input;\n\tprivate listChildIndex = 0;\n\n\tconstructor(\n\t\ttitle: string,\n\t\tdescription: string,\n\t\toptions: SelectItem[],\n\t\tcurrentValue: string,\n\t\tonSelect: (value: string) => void,\n\t\tonCancel: () => void,\n\t\tonSelectionChange?: (value: string) => void,\n\t\tsearchable = false,\n\t) {\n\t\tsuper();\n\t\tthis.allOptions = options;\n\t\tthis.currentValue = currentValue;\n\t\tthis.onSelectValue = onSelect;\n\t\tthis.onCancelValue = onCancel;\n\n\t\tthis.addChild(new Text(theme.bold(theme.fg(\"accent\", title)), 0, 0));\n\n\t\tif (description) {\n\t\t\tthis.addChild(new Spacer(1));\n\t\t\tthis.addChild(new Text(theme.fg(\"muted\", description), 0, 0));\n\t\t}\n\n\t\tif (searchable) {\n\t\t\tthis.addChild(new Spacer(1));\n\t\t\tthis.searchInput = new Input();\n\t\t\tthis.addChild(this.searchInput);\n\t\t}\n\n\t\tthis.addChild(new Spacer(1));\n\n\t\tthis.selectList = new SelectList(\n\t\t\toptions,\n\t\t\tMath.min(options.length, 10),\n\t\t\tgetSelectListTheme(),\n\t\t\tSETTINGS_SUBMENU_SELECT_LIST_LAYOUT,\n\t\t);\n\n\t\tconst currentIndex = options.findIndex((o) => o.value === currentValue);\n\t\tif (currentIndex !== -1) {\n\t\t\tthis.selectList.setSelectedIndex(currentIndex);\n\t\t}\n\n\t\tthis.selectList.onSelect = (item) => {\n\t\t\tonSelect(item.value);\n\t\t};\n\n\t\tthis.selectList.onCancel = onCancel;\n\n\t\tif (onSelectionChange) {\n\t\t\tthis.selectList.onSelectionChange = (item) => {\n\t\t\t\tonSelectionChange(item.value);\n\t\t\t};\n\t\t}\n\n\t\tthis.listChildIndex = this.children.length;\n\t\tthis.addChild(this.selectList);\n\n\t\tthis.addChild(new Spacer(1));\n\t\tthis.addChild(new Text(theme.fg(\"dim\", \" enter select · esc back\"), 0, 0));\n\t}\n\n\thandleInput(data: string): boolean {\n\t\tif (!this.searchInput) {\n\t\t\tthis.selectList.handleInput(data);\n\t\t\treturn true;\n\t\t}\n\t\tconst kb = getKeybindings();\n\t\tif (\n\t\t\tkb.matches(data, \"tui.select.up\") ||\n\t\t\tkb.matches(data, \"tui.select.down\") ||\n\t\t\tkb.matches(data, \"tui.select.confirm\") ||\n\t\t\tkb.matches(data, \"tui.select.cancel\")\n\t\t) {\n\t\t\tthis.selectList.handleInput(data);\n\t\t\treturn true;\n\t\t}\n\t\tthis.searchInput.handleInput(data);\n\t\tconst query = this.searchInput.getValue();\n\t\tconst options = query\n\t\t\t? fuzzyFilter(this.allOptions, query, (item) => `${item.label} ${item.description ?? \"\"}`)\n\t\t\t: this.allOptions;\n\t\tconst list = new SelectList(\n\t\t\toptions,\n\t\t\tMath.min(options.length, 10),\n\t\t\tgetSelectListTheme(),\n\t\t\tSETTINGS_SUBMENU_SELECT_LIST_LAYOUT,\n\t\t);\n\t\tconst currentIndex = options.findIndex((item) => item.value === this.currentValue);\n\t\tif (currentIndex !== -1) list.setSelectedIndex(currentIndex);\n\t\tlist.onSelect = (item) => this.onSelectValue(item.value);\n\t\tlist.onCancel = this.onCancelValue;\n\t\tthis.children[this.listChildIndex] = list;\n\t\tthis.selectList = list;\n\t\treturn true;\n\t}\n}\n\nexport function themeItems(availableThemes: string[], currentTheme: string): SelectItem[] {\n\treturn availableThemes.map((name) => ({\n\t\tvalue: name,\n\t\tlabel: `${name === currentTheme ? \"✓ \" : \" \"}${name}`,\n\t}));\n}\n\nfunction singleModeThemeItems(availableThemes: string[], currentTheme: string): SelectItem[] {\n\treturn [\n\t\t{\n\t\t\tvalue: AUTOMATIC_THEME_VALUE,\n\t\t\tlabel: \" Automatic\",\n\t\t\tdescription: \"Use separate themes for light and dark terminal appearance\",\n\t\t},\n\t\t...themeItems(availableThemes, currentTheme),\n\t];\n}\n\nfunction preferredTheme(availableThemes: string[], preferred: string | undefined, fallback: string): string {\n\tif (preferred && availableThemes.includes(preferred)) return preferred;\n\tif (availableThemes.includes(fallback)) return fallback;\n\treturn availableThemes[0] ?? fallback;\n}\n\nfunction defaultAutomaticThemes(\n\tcurrentThemeSetting: string,\n\tavailableThemes: string[],\n): { lightTheme: string; darkTheme: string } {\n\tconst autoTheme = parseAutoThemeSetting(currentThemeSetting);\n\tif (autoTheme) return autoTheme;\n\n\tconst currentFixedTheme = currentThemeSetting.includes(\"/\") ? undefined : currentThemeSetting;\n\tconst themeName = preferredTheme(availableThemes, currentFixedTheme, \"dark\");\n\treturn { lightTheme: themeName, darkTheme: themeName };\n}\n\nexport class ThemeSubmenu extends Container {\n\tprivate inputComponent: Component | undefined;\n\tprivate readonly callbacks: SettingsCallbacks;\n\tprivate readonly availableThemes: string[];\n\tprivate readonly terminalTheme: TerminalTheme;\n\tprivate readonly onDone: (selectedValue?: string) => void;\n\tprivate readonly originalThemeSetting: string;\n\tprivate mode: \"single\" | \"automatic\";\n\tprivate singleTheme: string;\n\tprivate lightTheme: string;\n\tprivate darkTheme: string;\n\n\tconstructor(\n\t\tcurrentThemeSetting: string,\n\t\tterminalTheme: TerminalTheme,\n\t\tavailableThemes: string[],\n\t\tcallbacks: SettingsCallbacks,\n\t\tonDone: (selectedValue?: string) => void,\n\t) {\n\t\tsuper();\n\t\tthis.callbacks = callbacks;\n\t\tthis.availableThemes = availableThemes;\n\t\tthis.terminalTheme = terminalTheme;\n\t\tthis.onDone = onDone;\n\t\tthis.originalThemeSetting = currentThemeSetting;\n\t\tconst autoTheme = parseAutoThemeSetting(currentThemeSetting);\n\t\tconst automaticThemes = defaultAutomaticThemes(currentThemeSetting, availableThemes);\n\t\tconst fixedTheme = autoTheme || currentThemeSetting.includes(\"/\") ? undefined : currentThemeSetting;\n\t\tthis.mode = autoTheme ? \"automatic\" : \"single\";\n\t\tthis.lightTheme = automaticThemes.lightTheme;\n\t\tthis.darkTheme = automaticThemes.darkTheme;\n\t\tthis.singleTheme = preferredTheme(\n\t\t\tavailableThemes,\n\t\t\tfixedTheme ?? (autoTheme ? this.getActiveAutomaticTheme() : undefined),\n\t\t\t\"dark\",\n\t\t);\n\n\t\tif (this.mode === \"automatic\") {\n\t\t\tthis.showAutomaticMenu();\n\t\t} else {\n\t\t\tthis.showSingleMenu();\n\t\t}\n\t}\n\n\thandleInput(data: string): boolean {\n\t\tif (!this.inputComponent?.handleInput) return false;\n\t\tthis.inputComponent.handleInput(data);\n\t\treturn true;\n\t}\n\n\tprivate setContent(renderComponent: Component, inputComponent: Component = renderComponent): void {\n\t\tthis.clear();\n\t\tthis.addChild(renderComponent);\n\t\tthis.inputComponent = inputComponent;\n\t}\n\n\tprivate showSingleMenu(): void {\n\t\tthis.mode = \"single\";\n\t\tconst menu = new SelectSubmenu(\n\t\t\t\"Theme\",\n\t\t\t\"Select a theme, or choose Automatic to follow terminal appearance.\",\n\t\t\tsingleModeThemeItems(this.availableThemes, this.singleTheme),\n\t\t\tthis.singleTheme,\n\t\t\t(value) => {\n\t\t\t\tif (value === AUTOMATIC_THEME_VALUE) {\n\t\t\t\t\tthis.mode = \"automatic\";\n\t\t\t\t\tthis.callbacks.onThemePreview?.(this.getThemeSetting());\n\t\t\t\t\tthis.showAutomaticMenu();\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tthis.singleTheme = value;\n\t\t\t\tthis.apply(value);\n\t\t\t},\n\t\t\t() => this.cancel(),\n\t\t\t(value) => {\n\t\t\t\tthis.callbacks.onThemePreview?.(value === AUTOMATIC_THEME_VALUE ? this.getAutomaticThemeSetting() : value);\n\t\t\t},\n\t\t);\n\t\tthis.setContent(menu);\n\t}\n\n\tprivate showAutomaticMenu(): void {\n\t\tthis.mode = \"automatic\";\n\t\tconst content = new Container();\n\t\tcontent.addChild(new Text(theme.bold(theme.fg(\"accent\", \"Automatic Theme\")), 0, 0));\n\t\tcontent.addChild(new Spacer(1));\n\t\tcontent.addChild(new Text(theme.fg(\"muted\", \"Choose themes for terminal light and dark appearance.\"), 0, 0));\n\t\tcontent.addChild(new Text(theme.fg(\"muted\", \"Light/dark detection requires terminal support.\"), 0, 0));\n\t\tcontent.addChild(new Spacer(1));\n\n\t\tconst items: SettingItem[] = [\n\t\t\t{\n\t\t\t\tid: \"light-theme\",\n\t\t\t\tlabel: \"Light theme\",\n\t\t\t\tdescription: \"Theme to use in automatic mode when the terminal is light\",\n\t\t\t\tcurrentValue: this.lightTheme,\n\t\t\t\tsubmenu: (currentValue, done) =>\n\t\t\t\t\tthis.createThemeSelect(\n\t\t\t\t\t\t\"Light Theme\",\n\t\t\t\t\t\t\"Select the theme to use for light terminal appearance\",\n\t\t\t\t\t\tcurrentValue,\n\t\t\t\t\t\tdone,\n\t\t\t\t\t\t(value) => {\n\t\t\t\t\t\t\tthis.lightTheme = value;\n\t\t\t\t\t\t\tthis.callbacks.onThemePreview?.(this.getThemeSetting());\n\t\t\t\t\t\t\tdone(value);\n\t\t\t\t\t\t},\n\t\t\t\t\t),\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"dark-theme\",\n\t\t\t\tlabel: \"Dark theme\",\n\t\t\t\tdescription: \"Theme to use in automatic mode when the terminal is dark\",\n\t\t\t\tcurrentValue: this.darkTheme,\n\t\t\t\tsubmenu: (currentValue, done) =>\n\t\t\t\t\tthis.createThemeSelect(\n\t\t\t\t\t\t\"Dark Theme\",\n\t\t\t\t\t\t\"Select the theme to use for dark terminal appearance\",\n\t\t\t\t\t\tcurrentValue,\n\t\t\t\t\t\tdone,\n\t\t\t\t\t\t(value) => {\n\t\t\t\t\t\t\tthis.darkTheme = value;\n\t\t\t\t\t\t\tthis.callbacks.onThemePreview?.(this.getThemeSetting());\n\t\t\t\t\t\t\tdone(value);\n\t\t\t\t\t\t},\n\t\t\t\t\t),\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"apply\",\n\t\t\t\tlabel: \"Apply\",\n\t\t\t\tdescription: \"Save and go back\",\n\t\t\t\tcurrentValue: \"save and go back\",\n\t\t\t\tvalues: [\"save and go back\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"single-mode\",\n\t\t\t\tlabel: \"Change mode\",\n\t\t\t\tdescription: \"Switch to one theme for light and dark\",\n\t\t\t\tcurrentValue: \"switch to single theme\",\n\t\t\t\tvalues: [\"switch to single theme\"],\n\t\t\t},\n\t\t];\n\n\t\tconst settingsList = new SettingsList(\n\t\t\titems,\n\t\t\tMath.min(items.length, 10),\n\t\t\tgetSettingsListTheme(),\n\t\t\t(id) => {\n\t\t\t\tswitch (id) {\n\t\t\t\t\tcase \"single-mode\":\n\t\t\t\t\t\tthis.mode = \"single\";\n\t\t\t\t\t\tthis.singleTheme = this.getActiveAutomaticTheme();\n\t\t\t\t\t\tthis.callbacks.onThemePreview?.(this.singleTheme);\n\t\t\t\t\t\tthis.showSingleMenu();\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"apply\":\n\t\t\t\t\t\tthis.apply(this.getAutomaticThemeSetting());\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t},\n\t\t\t() => this.cancel(),\n\t\t);\n\t\tcontent.addChild(settingsList);\n\t\tthis.setContent(content, settingsList);\n\t}\n\n\tprivate createThemeSelect(\n\t\ttitle: string,\n\t\tdescription: string,\n\t\tcurrentValue: string,\n\t\tdone: (selectedValue?: string) => void,\n\t\tonSelect: (value: string) => void,\n\t): SelectSubmenu {\n\t\treturn new SelectSubmenu(\n\t\t\ttitle,\n\t\t\tdescription,\n\t\t\tthemeItems(this.availableThemes, currentValue),\n\t\t\tcurrentValue,\n\t\t\tonSelect,\n\t\t\t() => {\n\t\t\t\tthis.callbacks.onThemePreview?.(this.getThemeSetting());\n\t\t\t\tdone();\n\t\t\t},\n\t\t\t(value) => this.callbacks.onThemePreview?.(value),\n\t\t);\n\t}\n\n\tprivate getThemeSetting(): string {\n\t\treturn this.mode === \"automatic\" ? this.getAutomaticThemeSetting() : this.singleTheme;\n\t}\n\n\tprivate getActiveAutomaticTheme(): string {\n\t\treturn this.terminalTheme === \"light\" ? this.lightTheme : this.darkTheme;\n\t}\n\n\tprivate getAutomaticThemeSetting(): string {\n\t\treturn `${this.lightTheme}/${this.darkTheme}`;\n\t}\n\n\tprivate apply(themeSetting: string): void {\n\t\tthis.onDone(themeSetting);\n\t}\n\n\tprivate cancel(): void {\n\t\tthis.callbacks.onThemePreview?.(this.originalThemeSetting);\n\t\tthis.onDone();\n\t}\n}\n"]}
@@ -2,7 +2,7 @@ import type { Api, Model, Transport } from "@bastani/pi-ai/compat";
2
2
  import type { ThinkingLevel } from "@earendil-works/pi-agent-core";
3
3
  import type { ScrollViewScrollbar } from "@earendil-works/pi-tui";
4
4
  import type { DefaultProjectTrust, FullscreenExitOutput, MermaidRenderingMode, WarningSettings } from "../../../core/settings-manager.ts";
5
- import type { TerminalTheme } from "../theme/theme.ts";
5
+ import type { TerminalTheme } from "../theme/theme.js";
6
6
  export type QueueDeliveryMode = "all" | "one-at-a-time";
7
7
  export type DoubleEscapeAction = "fork" | "tree" | "none";
8
8
  export type TreeFilterMode = "default" | "no-tools" | "user-only" | "labeled-only" | "all";
@@ -1 +1 @@
1
- {"version":3,"file":"settings-selector-types.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/settings-selector-types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Api, Model, Transport } from \"@bastani/pi-ai/compat\";\nimport type { ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport type { ScrollViewScrollbar } from \"@earendil-works/pi-tui\";\nimport type {\n\tDefaultProjectTrust,\n\tFullscreenExitOutput,\n\tMermaidRenderingMode,\n\tWarningSettings,\n} from \"../../../core/settings-manager.ts\";\nimport type { TerminalTheme } from \"../theme/theme.ts\";\n\nexport type QueueDeliveryMode = \"all\" | \"one-at-a-time\";\nexport type DoubleEscapeAction = \"fork\" | \"tree\" | \"none\";\nexport type TreeFilterMode = \"default\" | \"no-tools\" | \"user-only\" | \"labeled-only\" | \"all\";\n\nexport interface SettingsConfig {\n\tautoCompact: boolean;\n\tshowImages: boolean;\n\timageWidthCells: number;\n\tautoResizeImages: boolean;\n\tblockImages: boolean;\n\tenableSkillCommands: boolean;\n\tsteeringMode: QueueDeliveryMode;\n\tfollowUpMode: QueueDeliveryMode;\n\ttransport: Transport;\n\thttpIdleTimeoutMs: number;\n\tbashInterceptorEnabled: boolean;\n\tthinkingLevel: ThinkingLevel;\n\tavailableThinkingLevels: ThinkingLevel[];\n\tavailableDefaultModels?: Model<Api>[];\n\tmodelThinkingLevels?: Record<string, ThinkingLevel>;\n\tcurrentTheme: string;\n\tterminalTheme: TerminalTheme;\n\tavailableThemes: string[];\n\thideThinkingBlock: boolean;\n\tmermaidRenderingMode: MermaidRenderingMode;\n\tlatexRenderingEnabled: boolean;\n\tcollapseChangelog: boolean;\n\tenableInstallTelemetry: boolean;\n\tdoubleEscapeAction: DoubleEscapeAction;\n\ttreeFilterMode: TreeFilterMode;\n\tshowHardwareCursor: boolean;\n\tfullscreenScrollbar: ScrollViewScrollbar;\n\tfullscreenExitOutput: FullscreenExitOutput;\n\tfullscreenCopyOnSelect: boolean;\n\teditorPaddingX: number;\n\toutputPad: 0 | 1;\n\tshowCacheMissNotices: boolean;\n\tautocompleteMaxVisible: number;\n\tquietStartup: boolean;\n\tdefaultProjectTrust: DefaultProjectTrust;\n\tclearOnShrink: boolean;\n\tshowTerminalProgress: boolean;\n\twarnings: WarningSettings;\n}\n\nexport interface SettingsCallbacks {\n\tonAutoCompactChange: (enabled: boolean) => void;\n\tonShowImagesChange: (enabled: boolean) => void;\n\tonImageWidthCellsChange: (width: number) => void;\n\tonAutoResizeImagesChange: (enabled: boolean) => void;\n\tonBlockImagesChange: (blocked: boolean) => void;\n\tonEnableSkillCommandsChange: (enabled: boolean) => void;\n\tonSteeringModeChange: (mode: QueueDeliveryMode) => void;\n\tonFollowUpModeChange: (mode: QueueDeliveryMode) => void;\n\tonTransportChange: (transport: Transport) => void;\n\tonHttpIdleTimeoutChange: (timeoutMs: number) => void;\n\tonBashInterceptorEnabledChange: (enabled: boolean) => void;\n\tonThinkingLevelChange: (level: ThinkingLevel) => void;\n\tonModelThinkingLevelChange?: (provider: string, modelId: string, level: ThinkingLevel) => void;\n\tonModelThinkingLevelRemove?: (provider: string, modelId: string) => void;\n\tonThemeChange: (theme: string) => void;\n\tonThemePreview?: (theme: string) => void;\n\tonHideThinkingBlockChange: (hidden: boolean) => void;\n\tonMermaidRenderingModeChange: (mode: MermaidRenderingMode) => void;\n\tonLatexRenderingEnabledChange: (enabled: boolean) => void;\n\tonCollapseChangelogChange: (collapsed: boolean) => void;\n\tonEnableInstallTelemetryChange: (enabled: boolean) => void;\n\tonDoubleEscapeActionChange: (action: DoubleEscapeAction) => void;\n\tonTreeFilterModeChange: (mode: TreeFilterMode) => void;\n\tonShowHardwareCursorChange: (enabled: boolean) => void;\n\tonFullscreenScrollbarChange: (mode: ScrollViewScrollbar) => void;\n\tonFullscreenExitOutputChange: (output: FullscreenExitOutput) => void;\n\tonFullscreenCopyOnSelectChange: (enabled: boolean) => void;\n\tonEditorPaddingXChange: (padding: number) => void;\n\tonOutputPadChange: (padding: 0 | 1) => void;\n\tonShowCacheMissNoticesChange: (enabled: boolean) => void;\n\tonAutocompleteMaxVisibleChange: (maxVisible: number) => void;\n\tonQuietStartupChange: (enabled: boolean) => void;\n\tonDefaultProjectTrustChange: (defaultProjectTrust: DefaultProjectTrust) => void;\n\tonClearOnShrinkChange: (enabled: boolean) => void;\n\tonShowTerminalProgressChange: (enabled: boolean) => void;\n\tonWarningsChange: (warnings: WarningSettings) => void;\n\tonCancel: () => void;\n}\n"]}
1
+ {"version":3,"file":"settings-selector-types.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/settings-selector-types.ts"],"names":[],"mappings":"","sourcesContent":["import type { Api, Model, Transport } from \"@bastani/pi-ai/compat\";\nimport type { ThinkingLevel } from \"@earendil-works/pi-agent-core\";\nimport type { ScrollViewScrollbar } from \"@earendil-works/pi-tui\";\nimport type {\n\tDefaultProjectTrust,\n\tFullscreenExitOutput,\n\tMermaidRenderingMode,\n\tWarningSettings,\n} from \"../../../core/settings-manager.ts\";\nimport type { TerminalTheme } from \"../theme/theme.js\";\n\nexport type QueueDeliveryMode = \"all\" | \"one-at-a-time\";\nexport type DoubleEscapeAction = \"fork\" | \"tree\" | \"none\";\nexport type TreeFilterMode = \"default\" | \"no-tools\" | \"user-only\" | \"labeled-only\" | \"all\";\n\nexport interface SettingsConfig {\n\tautoCompact: boolean;\n\tshowImages: boolean;\n\timageWidthCells: number;\n\tautoResizeImages: boolean;\n\tblockImages: boolean;\n\tenableSkillCommands: boolean;\n\tsteeringMode: QueueDeliveryMode;\n\tfollowUpMode: QueueDeliveryMode;\n\ttransport: Transport;\n\thttpIdleTimeoutMs: number;\n\tbashInterceptorEnabled: boolean;\n\tthinkingLevel: ThinkingLevel;\n\tavailableThinkingLevels: ThinkingLevel[];\n\tavailableDefaultModels?: Model<Api>[];\n\tmodelThinkingLevels?: Record<string, ThinkingLevel>;\n\tcurrentTheme: string;\n\tterminalTheme: TerminalTheme;\n\tavailableThemes: string[];\n\thideThinkingBlock: boolean;\n\tmermaidRenderingMode: MermaidRenderingMode;\n\tlatexRenderingEnabled: boolean;\n\tcollapseChangelog: boolean;\n\tenableInstallTelemetry: boolean;\n\tdoubleEscapeAction: DoubleEscapeAction;\n\ttreeFilterMode: TreeFilterMode;\n\tshowHardwareCursor: boolean;\n\tfullscreenScrollbar: ScrollViewScrollbar;\n\tfullscreenExitOutput: FullscreenExitOutput;\n\tfullscreenCopyOnSelect: boolean;\n\teditorPaddingX: number;\n\toutputPad: 0 | 1;\n\tshowCacheMissNotices: boolean;\n\tautocompleteMaxVisible: number;\n\tquietStartup: boolean;\n\tdefaultProjectTrust: DefaultProjectTrust;\n\tclearOnShrink: boolean;\n\tshowTerminalProgress: boolean;\n\twarnings: WarningSettings;\n}\n\nexport interface SettingsCallbacks {\n\tonAutoCompactChange: (enabled: boolean) => void;\n\tonShowImagesChange: (enabled: boolean) => void;\n\tonImageWidthCellsChange: (width: number) => void;\n\tonAutoResizeImagesChange: (enabled: boolean) => void;\n\tonBlockImagesChange: (blocked: boolean) => void;\n\tonEnableSkillCommandsChange: (enabled: boolean) => void;\n\tonSteeringModeChange: (mode: QueueDeliveryMode) => void;\n\tonFollowUpModeChange: (mode: QueueDeliveryMode) => void;\n\tonTransportChange: (transport: Transport) => void;\n\tonHttpIdleTimeoutChange: (timeoutMs: number) => void;\n\tonBashInterceptorEnabledChange: (enabled: boolean) => void;\n\tonThinkingLevelChange: (level: ThinkingLevel) => void;\n\tonModelThinkingLevelChange?: (provider: string, modelId: string, level: ThinkingLevel) => void;\n\tonModelThinkingLevelRemove?: (provider: string, modelId: string) => void;\n\tonThemeChange: (theme: string) => void;\n\tonThemePreview?: (theme: string) => void;\n\tonHideThinkingBlockChange: (hidden: boolean) => void;\n\tonMermaidRenderingModeChange: (mode: MermaidRenderingMode) => void;\n\tonLatexRenderingEnabledChange: (enabled: boolean) => void;\n\tonCollapseChangelogChange: (collapsed: boolean) => void;\n\tonEnableInstallTelemetryChange: (enabled: boolean) => void;\n\tonDoubleEscapeActionChange: (action: DoubleEscapeAction) => void;\n\tonTreeFilterModeChange: (mode: TreeFilterMode) => void;\n\tonShowHardwareCursorChange: (enabled: boolean) => void;\n\tonFullscreenScrollbarChange: (mode: ScrollViewScrollbar) => void;\n\tonFullscreenExitOutputChange: (output: FullscreenExitOutput) => void;\n\tonFullscreenCopyOnSelectChange: (enabled: boolean) => void;\n\tonEditorPaddingXChange: (padding: number) => void;\n\tonOutputPadChange: (padding: 0 | 1) => void;\n\tonShowCacheMissNoticesChange: (enabled: boolean) => void;\n\tonAutocompleteMaxVisibleChange: (maxVisible: number) => void;\n\tonQuietStartupChange: (enabled: boolean) => void;\n\tonDefaultProjectTrustChange: (defaultProjectTrust: DefaultProjectTrust) => void;\n\tonClearOnShrinkChange: (enabled: boolean) => void;\n\tonShowTerminalProgressChange: (enabled: boolean) => void;\n\tonWarningsChange: (warnings: WarningSettings) => void;\n\tonCancel: () => void;\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"settings-selector.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/settings-selector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAKlE;;GAEG;AACH,MAAM,OAAO,yBAA0B,SAAQ,SAAS;IAGvD,YAAY,MAAsB,EAAE,SAA4B;QAC/D,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;QAEnC,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CACnC,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,EACrC,EAAE,EACF,oBAAoB,EAAE,EACtB,2BAA2B,CAAC,SAAS,CAAC,EACtC,SAAS,CAAC,QAAQ,EAClB,EAAE,YAAY,EAAE,IAAI,EAAE,CACtB,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,eAAe;QACd,OAAO,IAAI,CAAC,YAAY,CAAC;IAC1B,CAAC;CACD","sourcesContent":["import { Container, SettingsList } from \"@earendil-works/pi-tui\";\nimport { getSettingsListTheme } from \"../theme/theme.ts\";\nimport { DynamicBorder } from \"./dynamic-border.ts\";\nimport { createSettingsChangeHandler } from \"./settings-selector-handlers.ts\";\nimport { buildSettingsItems } from \"./settings-selector-items.ts\";\nimport type { SettingsCallbacks, SettingsConfig } from \"./settings-selector-types.ts\";\n\nexport type { SettingsCallbacks, SettingsConfig } from \"./settings-selector-types.ts\";\n\n/**\n * Main settings selector component.\n */\nexport class SettingsSelectorComponent extends Container {\n\tprivate settingsList: SettingsList;\n\n\tconstructor(config: SettingsConfig, callbacks: SettingsCallbacks) {\n\t\tsuper();\n\n\t\tthis.addChild(new DynamicBorder());\n\n\t\tthis.settingsList = new SettingsList(\n\t\t\tbuildSettingsItems(config, callbacks),\n\t\t\t10,\n\t\t\tgetSettingsListTheme(),\n\t\t\tcreateSettingsChangeHandler(callbacks),\n\t\t\tcallbacks.onCancel,\n\t\t\t{ enableSearch: true },\n\t\t);\n\n\t\tthis.addChild(this.settingsList);\n\t\tthis.addChild(new DynamicBorder());\n\t}\n\n\tgetSettingsList(): SettingsList {\n\t\treturn this.settingsList;\n\t}\n}\n"]}
1
+ {"version":3,"file":"settings-selector.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/settings-selector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAKlE;;GAEG;AACH,MAAM,OAAO,yBAA0B,SAAQ,SAAS;IAGvD,YAAY,MAAsB,EAAE,SAA4B;QAC/D,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;QAEnC,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CACnC,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,EACrC,EAAE,EACF,oBAAoB,EAAE,EACtB,2BAA2B,CAAC,SAAS,CAAC,EACtC,SAAS,CAAC,QAAQ,EAClB,EAAE,YAAY,EAAE,IAAI,EAAE,CACtB,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,eAAe;QACd,OAAO,IAAI,CAAC,YAAY,CAAC;IAC1B,CAAC;CACD","sourcesContent":["import { Container, SettingsList } from \"@earendil-works/pi-tui\";\nimport { getSettingsListTheme } from \"../theme/theme.js\";\nimport { DynamicBorder } from \"./dynamic-border.ts\";\nimport { createSettingsChangeHandler } from \"./settings-selector-handlers.ts\";\nimport { buildSettingsItems } from \"./settings-selector-items.ts\";\nimport type { SettingsCallbacks, SettingsConfig } from \"./settings-selector-types.ts\";\n\nexport type { SettingsCallbacks, SettingsConfig } from \"./settings-selector-types.ts\";\n\n/**\n * Main settings selector component.\n */\nexport class SettingsSelectorComponent extends Container {\n\tprivate settingsList: SettingsList;\n\n\tconstructor(config: SettingsConfig, callbacks: SettingsCallbacks) {\n\t\tsuper();\n\n\t\tthis.addChild(new DynamicBorder());\n\n\t\tthis.settingsList = new SettingsList(\n\t\t\tbuildSettingsItems(config, callbacks),\n\t\t\t10,\n\t\t\tgetSettingsListTheme(),\n\t\t\tcreateSettingsChangeHandler(callbacks),\n\t\t\tcallbacks.onCancel,\n\t\t\t{ enableSearch: true },\n\t\t);\n\n\t\tthis.addChild(this.settingsList);\n\t\tthis.addChild(new DynamicBorder());\n\t}\n\n\tgetSettingsList(): SettingsList {\n\t\treturn this.settingsList;\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"show-images-selector.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/show-images-selector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAmB,UAAU,EAAgC,MAAM,wBAAwB,CAAC;AAC9G,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,MAAM,8BAA8B,GAA4B;IAC/D,qBAAqB,EAAE,EAAE;IACzB,qBAAqB,EAAE,EAAE;CACzB,CAAC;AAEF;;GAEG;AACH,MAAM,OAAO,2BAA4B,SAAQ,SAAS;IAGzD,YAAY,YAAqB,EAAE,QAAiC,EAAE,QAAoB;QACzF,KAAK,EAAE,CAAC;QAER,MAAM,KAAK,GAAiB;YAC3B,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,gCAAgC,EAAE;YAC7E,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,+BAA+B,EAAE;SAC1E,CAAC;QAEF,iBAAiB;QACjB,IAAI,CAAC,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;QAEnC,kBAAkB;QAClB,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,kBAAkB,EAAE,EAAE,8BAA8B,CAAC,CAAC;QAEjG,0BAA0B;QAC1B,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEvD,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,IAAI,EAAE,EAAE;YACnC,QAAQ,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;QAChC,CAAC,CAAC;QAEF,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,GAAG,EAAE;YAC/B,QAAQ,EAAE,CAAC;QACZ,CAAC,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE/B,oBAAoB;QACpB,IAAI,CAAC,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,aAAa;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC;IACxB,CAAC;CACD","sourcesContent":["import { Container, type SelectItem, SelectList, type SelectListLayoutOptions } from \"@earendil-works/pi-tui\";\nimport { getSelectListTheme } from \"../theme/theme.ts\";\nimport { DynamicBorder } from \"./dynamic-border.ts\";\n\nconst SHOW_IMAGES_SELECT_LIST_LAYOUT: SelectListLayoutOptions = {\n\tminPrimaryColumnWidth: 12,\n\tmaxPrimaryColumnWidth: 32,\n};\n\n/**\n * Component that renders a show images selector with borders\n */\nexport class ShowImagesSelectorComponent extends Container {\n\tprivate selectList: SelectList;\n\n\tconstructor(currentValue: boolean, onSelect: (show: boolean) => void, onCancel: () => void) {\n\t\tsuper();\n\n\t\tconst items: SelectItem[] = [\n\t\t\t{ value: \"yes\", label: \"Yes\", description: \"Show images inline in terminal\" },\n\t\t\t{ value: \"no\", label: \"No\", description: \"Show text placeholder instead\" },\n\t\t];\n\n\t\t// Add top border\n\t\tthis.addChild(new DynamicBorder());\n\n\t\t// Create selector\n\t\tthis.selectList = new SelectList(items, 5, getSelectListTheme(), SHOW_IMAGES_SELECT_LIST_LAYOUT);\n\n\t\t// Preselect current value\n\t\tthis.selectList.setSelectedIndex(currentValue ? 0 : 1);\n\n\t\tthis.selectList.onSelect = (item) => {\n\t\t\tonSelect(item.value === \"yes\");\n\t\t};\n\n\t\tthis.selectList.onCancel = () => {\n\t\t\tonCancel();\n\t\t};\n\n\t\tthis.addChild(this.selectList);\n\n\t\t// Add bottom border\n\t\tthis.addChild(new DynamicBorder());\n\t}\n\n\tgetSelectList(): SelectList {\n\t\treturn this.selectList;\n\t}\n}\n"]}
1
+ {"version":3,"file":"show-images-selector.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/show-images-selector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAmB,UAAU,EAAgC,MAAM,wBAAwB,CAAC;AAC9G,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,MAAM,8BAA8B,GAA4B;IAC/D,qBAAqB,EAAE,EAAE;IACzB,qBAAqB,EAAE,EAAE;CACzB,CAAC;AAEF;;GAEG;AACH,MAAM,OAAO,2BAA4B,SAAQ,SAAS;IAGzD,YAAY,YAAqB,EAAE,QAAiC,EAAE,QAAoB;QACzF,KAAK,EAAE,CAAC;QAER,MAAM,KAAK,GAAiB;YAC3B,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,gCAAgC,EAAE;YAC7E,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,+BAA+B,EAAE;SAC1E,CAAC;QAEF,iBAAiB;QACjB,IAAI,CAAC,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;QAEnC,kBAAkB;QAClB,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,CAAC,KAAK,EAAE,CAAC,EAAE,kBAAkB,EAAE,EAAE,8BAA8B,CAAC,CAAC;QAEjG,0BAA0B;QAC1B,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEvD,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,CAAC,IAAI,EAAE,EAAE;YACnC,QAAQ,CAAC,IAAI,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;QAChC,CAAC,CAAC;QAEF,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,GAAG,EAAE;YAC/B,QAAQ,EAAE,CAAC;QACZ,CAAC,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE/B,oBAAoB;QACpB,IAAI,CAAC,QAAQ,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,aAAa;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC;IACxB,CAAC;CACD","sourcesContent":["import { Container, type SelectItem, SelectList, type SelectListLayoutOptions } from \"@earendil-works/pi-tui\";\nimport { getSelectListTheme } from \"../theme/theme.js\";\nimport { DynamicBorder } from \"./dynamic-border.ts\";\n\nconst SHOW_IMAGES_SELECT_LIST_LAYOUT: SelectListLayoutOptions = {\n\tminPrimaryColumnWidth: 12,\n\tmaxPrimaryColumnWidth: 32,\n};\n\n/**\n * Component that renders a show images selector with borders\n */\nexport class ShowImagesSelectorComponent extends Container {\n\tprivate selectList: SelectList;\n\n\tconstructor(currentValue: boolean, onSelect: (show: boolean) => void, onCancel: () => void) {\n\t\tsuper();\n\n\t\tconst items: SelectItem[] = [\n\t\t\t{ value: \"yes\", label: \"Yes\", description: \"Show images inline in terminal\" },\n\t\t\t{ value: \"no\", label: \"No\", description: \"Show text placeholder instead\" },\n\t\t];\n\n\t\t// Add top border\n\t\tthis.addChild(new DynamicBorder());\n\n\t\t// Create selector\n\t\tthis.selectList = new SelectList(items, 5, getSelectListTheme(), SHOW_IMAGES_SELECT_LIST_LAYOUT);\n\n\t\t// Preselect current value\n\t\tthis.selectList.setSelectedIndex(currentValue ? 0 : 1);\n\n\t\tthis.selectList.onSelect = (item) => {\n\t\t\tonSelect(item.value === \"yes\");\n\t\t};\n\n\t\tthis.selectList.onCancel = () => {\n\t\t\tonCancel();\n\t\t};\n\n\t\tthis.addChild(this.selectList);\n\n\t\t// Add bottom border\n\t\tthis.addChild(new DynamicBorder());\n\t}\n\n\tgetSelectList(): SelectList {\n\t\treturn this.selectList;\n\t}\n}\n"]}
@@ -1,5 +1,5 @@
1
1
  import { Box, type MarkdownTheme } from "@earendil-works/pi-tui";
2
- import type { ParsedSkillBlock } from "../../../core/agent-session.ts";
2
+ import type { ParsedSkillBlock } from "../../../core/agent-session.js";
3
3
  /**
4
4
  * Component that renders a skill invocation message with collapsed/expanded state.
5
5
  * Uses same background color as custom messages for visual consistency.
@@ -1 +1 @@
1
- {"version":3,"file":"skill-invocation-message.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/skill-invocation-message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAsB,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAEjF,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D;;;;GAIG;AACH,MAAM,OAAO,+BAAgC,SAAQ,GAAG;IAMvD,YAAY,UAA4B,EAAE,aAAa,GAAkB,gBAAgB,EAAE,EAAE,WAAW,GAAG,IAAI;QAC9G,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC;QAN5C,aAAQ,GAAG,KAAK,CAAC;QAOxB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,aAAa,EAAE,CAAC;IACtB,CAAC;IAED,WAAW,CAAC,QAAiB;QAC5B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,aAAa,EAAE,CAAC;IACtB,CAAC;IAEQ,UAAU;QAClB,KAAK,CAAC,UAAU,EAAE,CAAC;QACnB,IAAI,CAAC,aAAa,EAAE,CAAC;IACtB,CAAC;IAEO,aAAa;QACpB,IAAI,CAAC,KAAK,EAAE,CAAC;QAEb,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,qDAAqD;YACrD,MAAM,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC,oBAAoB,EAAE,wBAAwB,CAAC,CAAC;YACvE,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,MAAM,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,QAAQ,CAAC;YACjD,IAAI,CAAC,QAAQ,CACZ,IAAI,QAAQ,CACX,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAChC,CAAC,EACD,CAAC,EACD,IAAI,CAAC,aAAa,EAClB;gBACC,KAAK,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,mBAAmB,EAAE,IAAI,CAAC;aAC5D,EACD,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CACjC,CACD,CAAC;QACH,CAAC;aAAM,CAAC;YACP,sDAAsD;YACtD,MAAM,IAAI,GAAG,oBAAoB,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;YAChE,MAAM,IAAI,GACT,KAAK,CAAC,EAAE,CAAC,oBAAoB,EAAE,yBAAyB,CAAC;gBACzD,KAAK,CAAC,EAAE,CAAC,mBAAmB,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBACnD,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC1B,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;IACF,CAAC;CACD","sourcesContent":["import { Box, Markdown, type MarkdownTheme, Text } from \"@earendil-works/pi-tui\";\nimport type { ParsedSkillBlock } from \"../../../core/agent-session.ts\";\nimport { getMarkdownTheme, theme } from \"../theme/theme.ts\";\nimport { parenthesizedKeyHint } from \"./keybinding-hints.ts\";\n\n/**\n * Component that renders a skill invocation message with collapsed/expanded state.\n * Uses same background color as custom messages for visual consistency.\n * Only renders the skill block itself - user message is rendered separately.\n */\nexport class SkillInvocationMessageComponent extends Box {\n\tprivate expanded = false;\n\tprivate skillBlock: ParsedSkillBlock;\n\tprivate markdownTheme: MarkdownTheme;\n\tprivate renderLatex: boolean;\n\n\tconstructor(skillBlock: ParsedSkillBlock, markdownTheme: MarkdownTheme = getMarkdownTheme(), renderLatex = true) {\n\t\tsuper(1, 1, (t) => theme.bg(\"customMessageBg\", t));\n\t\tthis.skillBlock = skillBlock;\n\t\tthis.markdownTheme = markdownTheme;\n\t\tthis.renderLatex = renderLatex;\n\t\tthis.updateDisplay();\n\t}\n\n\tsetExpanded(expanded: boolean): void {\n\t\tthis.expanded = expanded;\n\t\tthis.updateDisplay();\n\t}\n\n\toverride invalidate(): void {\n\t\tsuper.invalidate();\n\t\tthis.updateDisplay();\n\t}\n\n\tprivate updateDisplay(): void {\n\t\tthis.clear();\n\n\t\tif (this.expanded) {\n\t\t\t// Expanded: label + skill name header + full content\n\t\t\tconst label = theme.fg(\"customMessageLabel\", `\\x1b[1m[skill]\\x1b[22m`);\n\t\t\tthis.addChild(new Text(label, 0, 0));\n\t\t\tconst header = `**${this.skillBlock.name}**\\n\\n`;\n\t\t\tthis.addChild(\n\t\t\t\tnew Markdown(\n\t\t\t\t\theader + this.skillBlock.content,\n\t\t\t\t\t0,\n\t\t\t\t\t0,\n\t\t\t\t\tthis.markdownTheme,\n\t\t\t\t\t{\n\t\t\t\t\t\tcolor: (text: string) => theme.fg(\"customMessageText\", text),\n\t\t\t\t\t},\n\t\t\t\t\t{ renderLatex: this.renderLatex },\n\t\t\t\t),\n\t\t\t);\n\t\t} else {\n\t\t\t// Collapsed: single line - [skill] name (expand hint)\n\t\t\tconst hint = parenthesizedKeyHint(\"app.tools.expand\", \"Expand\");\n\t\t\tconst line =\n\t\t\t\ttheme.fg(\"customMessageLabel\", `\\x1b[1m[skill]\\x1b[22m `) +\n\t\t\t\ttheme.fg(\"customMessageText\", this.skillBlock.name) +\n\t\t\t\t(hint ? ` ${hint}` : \"\");\n\t\t\tthis.addChild(new Text(line, 0, 0));\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"file":"skill-invocation-message.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/skill-invocation-message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAsB,IAAI,EAAE,MAAM,wBAAwB,CAAC;AAEjF,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D;;;;GAIG;AACH,MAAM,OAAO,+BAAgC,SAAQ,GAAG;IAMvD,YAAY,UAA4B,EAAE,aAAa,GAAkB,gBAAgB,EAAE,EAAE,WAAW,GAAG,IAAI;QAC9G,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,CAAC;QAN5C,aAAQ,GAAG,KAAK,CAAC;QAOxB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,aAAa,EAAE,CAAC;IACtB,CAAC;IAED,WAAW,CAAC,QAAiB;QAC5B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,aAAa,EAAE,CAAC;IACtB,CAAC;IAEQ,UAAU;QAClB,KAAK,CAAC,UAAU,EAAE,CAAC;QACnB,IAAI,CAAC,aAAa,EAAE,CAAC;IACtB,CAAC;IAEO,aAAa;QACpB,IAAI,CAAC,KAAK,EAAE,CAAC;QAEb,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,qDAAqD;YACrD,MAAM,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC,oBAAoB,EAAE,wBAAwB,CAAC,CAAC;YACvE,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACrC,MAAM,MAAM,GAAG,KAAK,IAAI,CAAC,UAAU,CAAC,IAAI,QAAQ,CAAC;YACjD,IAAI,CAAC,QAAQ,CACZ,IAAI,QAAQ,CACX,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAChC,CAAC,EACD,CAAC,EACD,IAAI,CAAC,aAAa,EAClB;gBACC,KAAK,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,mBAAmB,EAAE,IAAI,CAAC;aAC5D,EACD,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CACjC,CACD,CAAC;QACH,CAAC;aAAM,CAAC;YACP,sDAAsD;YACtD,MAAM,IAAI,GAAG,oBAAoB,CAAC,kBAAkB,EAAE,QAAQ,CAAC,CAAC;YAChE,MAAM,IAAI,GACT,KAAK,CAAC,EAAE,CAAC,oBAAoB,EAAE,yBAAyB,CAAC;gBACzD,KAAK,CAAC,EAAE,CAAC,mBAAmB,EAAE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;gBACnD,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC1B,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC;IACF,CAAC;CACD","sourcesContent":["import { Box, Markdown, type MarkdownTheme, Text } from \"@earendil-works/pi-tui\";\nimport type { ParsedSkillBlock } from \"../../../core/agent-session.js\";\nimport { getMarkdownTheme, theme } from \"../theme/theme.js\";\nimport { parenthesizedKeyHint } from \"./keybinding-hints.js\";\n\n/**\n * Component that renders a skill invocation message with collapsed/expanded state.\n * Uses same background color as custom messages for visual consistency.\n * Only renders the skill block itself - user message is rendered separately.\n */\nexport class SkillInvocationMessageComponent extends Box {\n\tprivate expanded = false;\n\tprivate skillBlock: ParsedSkillBlock;\n\tprivate markdownTheme: MarkdownTheme;\n\tprivate renderLatex: boolean;\n\n\tconstructor(skillBlock: ParsedSkillBlock, markdownTheme: MarkdownTheme = getMarkdownTheme(), renderLatex = true) {\n\t\tsuper(1, 1, (t) => theme.bg(\"customMessageBg\", t));\n\t\tthis.skillBlock = skillBlock;\n\t\tthis.markdownTheme = markdownTheme;\n\t\tthis.renderLatex = renderLatex;\n\t\tthis.updateDisplay();\n\t}\n\n\tsetExpanded(expanded: boolean): void {\n\t\tthis.expanded = expanded;\n\t\tthis.updateDisplay();\n\t}\n\n\toverride invalidate(): void {\n\t\tsuper.invalidate();\n\t\tthis.updateDisplay();\n\t}\n\n\tprivate updateDisplay(): void {\n\t\tthis.clear();\n\n\t\tif (this.expanded) {\n\t\t\t// Expanded: label + skill name header + full content\n\t\t\tconst label = theme.fg(\"customMessageLabel\", `\\x1b[1m[skill]\\x1b[22m`);\n\t\t\tthis.addChild(new Text(label, 0, 0));\n\t\t\tconst header = `**${this.skillBlock.name}**\\n\\n`;\n\t\t\tthis.addChild(\n\t\t\t\tnew Markdown(\n\t\t\t\t\theader + this.skillBlock.content,\n\t\t\t\t\t0,\n\t\t\t\t\t0,\n\t\t\t\t\tthis.markdownTheme,\n\t\t\t\t\t{\n\t\t\t\t\t\tcolor: (text: string) => theme.fg(\"customMessageText\", text),\n\t\t\t\t\t},\n\t\t\t\t\t{ renderLatex: this.renderLatex },\n\t\t\t\t),\n\t\t\t);\n\t\t} else {\n\t\t\t// Collapsed: single line - [skill] name (expand hint)\n\t\t\tconst hint = parenthesizedKeyHint(\"app.tools.expand\", \"Expand\");\n\t\t\tconst line =\n\t\t\t\ttheme.fg(\"customMessageLabel\", `\\x1b[1m[skill]\\x1b[22m `) +\n\t\t\t\ttheme.fg(\"customMessageText\", this.skillBlock.name) +\n\t\t\t\t(hint ? ` ${hint}` : \"\");\n\t\t\tthis.addChild(new Text(line, 0, 0));\n\t\t}\n\t}\n}\n"]}
@@ -0,0 +1,13 @@
1
+ import { type Component } from "@earendil-works/pi-tui";
2
+ import type { TaskCompletionNotice } from "../../../core/tasks/completion.js";
3
+ export declare function completionNoticeFromDetails(details: unknown): TaskCompletionNotice | undefined;
4
+ /** Same persisted completion message in main and workflow chats; no model reply required. */
5
+ export declare class TaskCompletionMessage implements Component {
6
+ private readonly notice;
7
+ private readonly expanded;
8
+ constructor(notice: TaskCompletionNotice, expanded: boolean);
9
+ invalidate(): void;
10
+ render(width: number): string[];
11
+ private renderContent;
12
+ }
13
+ //# sourceMappingURL=task-completion-message.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-completion-message.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/task-completion-message.ts"],"names":[],"mappings":"AACA,OAAO,EAAO,KAAK,SAAS,EAAqC,MAAM,wBAAwB,CAAC;AAChG,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAK9E,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,oBAAoB,GAAG,SAAS,CAuB9F;AAED,6FAA6F;AAC7F,qBAAa,qBAAsB,YAAW,SAAS;IACtD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAuB;IAC9C,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,YAAY,MAAM,EAAE,oBAAoB,EAAE,QAAQ,EAAE,OAAO,EAG1D;IACD,UAAU,IAAI,IAAI,CAAG;IACrB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAQ9B;IACD,OAAO,CAAC,aAAa;CA0BrB"}
@@ -0,0 +1,65 @@
1
+ import { stripVTControlCharacters } from "node:util";
2
+ import { Box, truncateToWidth, wrapTextWithAnsi } from "@earendil-works/pi-tui";
3
+ import { theme } from "../theme/theme.js";
4
+ import { keyHintIfBound } from "./keybinding-hints.js";
5
+ import { taskModelText } from "./task-row.js";
6
+ export function completionNoticeFromDetails(details) {
7
+ if (!details || typeof details !== "object" || !("notification" in details))
8
+ return undefined;
9
+ const notice = details.notification;
10
+ if (!notice || typeof notice !== "object")
11
+ return undefined;
12
+ if (!("title" in notice) ||
13
+ typeof notice.title !== "string" ||
14
+ !("preview" in notice) ||
15
+ typeof notice.preview !== "string" ||
16
+ !("taskId" in notice) ||
17
+ typeof notice.taskId !== "string" ||
18
+ !("status" in notice))
19
+ return undefined;
20
+ if (notice.status !== "completed" && notice.status !== "failed" && notice.status !== "cancelled")
21
+ return undefined;
22
+ return {
23
+ title: notice.title,
24
+ preview: notice.preview,
25
+ taskId: notice.taskId,
26
+ status: notice.status,
27
+ ...("model" in notice && typeof notice.model === "string" ? { model: notice.model } : {}),
28
+ ...("thinking" in notice && typeof notice.thinking === "string" ? { thinking: notice.thinking } : {}),
29
+ };
30
+ }
31
+ /** Same persisted completion message in main and workflow chats; no model reply required. */
32
+ export class TaskCompletionMessage {
33
+ constructor(notice, expanded) {
34
+ this.notice = notice;
35
+ this.expanded = expanded;
36
+ }
37
+ invalidate() { }
38
+ render(width) {
39
+ if (width < 1)
40
+ return [];
41
+ const card = new Box(width >= 3 ? 1 : 0, 1, (line) => theme.bg("customMessageBg", line));
42
+ card.addChild({
43
+ invalidate() { },
44
+ render: (innerWidth) => this.renderContent(innerWidth),
45
+ });
46
+ return card.render(width);
47
+ }
48
+ renderContent(width) {
49
+ const clean = (value) => stripVTControlCharacters(value).replace(/[\x00-\x08\x0b-\x1f\x7f-\x9f]/g, " ");
50
+ const color = this.notice.status === "completed" ? "success" : this.notice.status === "failed" ? "error" : "warning";
51
+ const icon = this.notice.status === "completed" ? "✓" : "✗";
52
+ const preview = wrapTextWithAnsi(clean(this.notice.preview), Math.max(1, width - 2));
53
+ const limit = this.expanded ? 20 : 3;
54
+ const expand = !this.expanded && preview.length > limit ? keyHintIfBound("app.tools.expand", "Expand") : "";
55
+ return [
56
+ theme.fg(color, theme.bold(`${icon} ${clean(this.notice.title).replace(/\n/g, " ")}`)),
57
+ ...(this.notice.model !== undefined || this.notice.thinking !== undefined
58
+ ? wrapTextWithAnsi(theme.fg("dim", taskModelText({ kind: "agent", model: this.notice.model, thinking: this.notice.thinking })), Math.max(1, width))
59
+ : []),
60
+ ...(this.notice.preview ? preview.slice(0, limit).map((line) => theme.fg("muted", ` ${line}`)) : []),
61
+ theme.fg("dim", `${expand ? `(${expand}) · ` : ""}/tasks to inspect${this.expanded ? ` · ${this.notice.taskId}` : ""}`),
62
+ ].map((line) => truncateToWidth(line, Math.max(1, width)));
63
+ }
64
+ }
65
+ //# sourceMappingURL=task-completion-message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-completion-message.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/task-completion-message.ts"],"names":[],"mappings":"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","sourcesContent":["import { stripVTControlCharacters } from \"node:util\";\nimport { Box, type Component, truncateToWidth, wrapTextWithAnsi } from \"@earendil-works/pi-tui\";\nimport type { TaskCompletionNotice } from \"../../../core/tasks/completion.js\";\nimport { theme } from \"../theme/theme.js\";\nimport { keyHintIfBound } from \"./keybinding-hints.js\";\nimport { taskModelText } from \"./task-row.js\";\n\nexport function completionNoticeFromDetails(details: unknown): TaskCompletionNotice | undefined {\n\tif (!details || typeof details !== \"object\" || !(\"notification\" in details)) return undefined;\n\tconst notice = details.notification;\n\tif (!notice || typeof notice !== \"object\") return undefined;\n\tif (\n\t\t!(\"title\" in notice) ||\n\t\ttypeof notice.title !== \"string\" ||\n\t\t!(\"preview\" in notice) ||\n\t\ttypeof notice.preview !== \"string\" ||\n\t\t!(\"taskId\" in notice) ||\n\t\ttypeof notice.taskId !== \"string\" ||\n\t\t!(\"status\" in notice)\n\t)\n\t\treturn undefined;\n\tif (notice.status !== \"completed\" && notice.status !== \"failed\" && notice.status !== \"cancelled\") return undefined;\n\treturn {\n\t\ttitle: notice.title,\n\t\tpreview: notice.preview,\n\t\ttaskId: notice.taskId,\n\t\tstatus: notice.status,\n\t\t...(\"model\" in notice && typeof notice.model === \"string\" ? { model: notice.model } : {}),\n\t\t...(\"thinking\" in notice && typeof notice.thinking === \"string\" ? { thinking: notice.thinking } : {}),\n\t};\n}\n\n/** Same persisted completion message in main and workflow chats; no model reply required. */\nexport class TaskCompletionMessage implements Component {\n\tprivate readonly notice: TaskCompletionNotice;\n\tprivate readonly expanded: boolean;\n\tconstructor(notice: TaskCompletionNotice, expanded: boolean) {\n\t\tthis.notice = notice;\n\t\tthis.expanded = expanded;\n\t}\n\tinvalidate(): void {}\n\trender(width: number): string[] {\n\t\tif (width < 1) return [];\n\t\tconst card = new Box(width >= 3 ? 1 : 0, 1, (line) => theme.bg(\"customMessageBg\", line));\n\t\tcard.addChild({\n\t\t\tinvalidate() {},\n\t\t\trender: (innerWidth) => this.renderContent(innerWidth),\n\t\t});\n\t\treturn card.render(width);\n\t}\n\tprivate renderContent(width: number): string[] {\n\t\tconst clean = (value: string) => stripVTControlCharacters(value).replace(/[\\x00-\\x08\\x0b-\\x1f\\x7f-\\x9f]/g, \" \");\n\t\tconst color =\n\t\t\tthis.notice.status === \"completed\" ? \"success\" : this.notice.status === \"failed\" ? \"error\" : \"warning\";\n\t\tconst icon = this.notice.status === \"completed\" ? \"✓\" : \"✗\";\n\t\tconst preview = wrapTextWithAnsi(clean(this.notice.preview), Math.max(1, width - 2));\n\t\tconst limit = this.expanded ? 20 : 3;\n\t\tconst expand = !this.expanded && preview.length > limit ? keyHintIfBound(\"app.tools.expand\", \"Expand\") : \"\";\n\t\treturn [\n\t\t\ttheme.fg(color, theme.bold(`${icon} ${clean(this.notice.title).replace(/\\n/g, \" \")}`)),\n\t\t\t...(this.notice.model !== undefined || this.notice.thinking !== undefined\n\t\t\t\t? wrapTextWithAnsi(\n\t\t\t\t\t\ttheme.fg(\n\t\t\t\t\t\t\t\"dim\",\n\t\t\t\t\t\t\ttaskModelText({ kind: \"agent\", model: this.notice.model, thinking: this.notice.thinking }),\n\t\t\t\t\t\t),\n\t\t\t\t\t\tMath.max(1, width),\n\t\t\t\t\t)\n\t\t\t\t: []),\n\t\t\t...(this.notice.preview ? preview.slice(0, limit).map((line) => theme.fg(\"muted\", ` ${line}`)) : []),\n\t\t\ttheme.fg(\n\t\t\t\t\"dim\",\n\t\t\t\t`${expand ? `(${expand}) · ` : \"\"}/tasks to inspect${this.expanded ? ` · ${this.notice.taskId}` : \"\"}`,\n\t\t\t),\n\t\t].map((line) => truncateToWidth(line, Math.max(1, width)));\n\t}\n}\n"]}
@@ -0,0 +1,27 @@
1
+ import { type Component } from "@earendil-works/pi-tui";
2
+ import type { Attention, Execution, TaskRecord } from "../../../core/tasks/contracts.js";
3
+ import type { TaskActivity } from "../../../core/tasks/owner-store.js";
4
+ export type TaskDetailAction = "transcript" | "foreground" | "cancel" | "input" | "question";
5
+ export declare function taskDetailActions(execution: Execution, attention: Attention, stdinAvailable: boolean): TaskDetailAction[];
6
+ export declare const taskDetailLabels: Record<TaskDetailAction, string>;
7
+ export type TaskDetailContent = {
8
+ prompt?: string;
9
+ output?: string;
10
+ outputOmitted?: boolean;
11
+ stdinAvailable: boolean;
12
+ activity?: readonly TaskActivity[];
13
+ activityOmitted?: boolean;
14
+ };
15
+ export declare function taskDetailSummary(task: TaskRecord): string;
16
+ /** A focused view of the same record, never another lifecycle transcript anchor. */
17
+ export declare class TaskDetail implements Component {
18
+ private task;
19
+ private content;
20
+ constructor(task: TaskRecord, content: TaskDetailContent);
21
+ update(task: TaskRecord, content?: TaskDetailContent): void;
22
+ invalidate(): void;
23
+ render(width: number): string[];
24
+ /** Body only: viewport owners pin identity, status and actions outside scrolling content. */
25
+ renderContent(width: number): string[];
26
+ }
27
+ //# sourceMappingURL=task-detail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-detail.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/task-detail.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAA2C,MAAM,wBAAwB,CAAC;AACjG,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,kCAAkC,CAAC;AACzF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAKvE,MAAM,MAAM,gBAAgB,GAAG,YAAY,GAAG,YAAY,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC;AAE7F,wBAAgB,iBAAiB,CAChC,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,SAAS,EACpB,cAAc,EAAE,OAAO,GACrB,gBAAgB,EAAE,CASpB;AAED,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAM7D,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IACnC,eAAe,CAAC,EAAE,OAAO,CAAC;CAC1B,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM,CAW1D;AAKD,oFAAoF;AACpF,qBAAa,UAAW,YAAW,SAAS;IAC3C,OAAO,CAAC,IAAI,CAAa;IACzB,OAAO,CAAC,OAAO,CAAoB;IACnC,YAAY,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,iBAAiB,EAGvD;IAED,MAAM,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,oBAAe,GAAG,IAAI,CAGrD;IAED,UAAU,IAAI,IAAI,CAAG;IAErB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAe9B;IAED,6FAA6F;IAC7F,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CA+DrC;CACD"}
@@ -0,0 +1,107 @@
1
+ import { stripVTControlCharacters } from "node:util";
2
+ import { Text, truncateToWidth, wrapTextWithAnsi } from "@earendil-works/pi-tui";
3
+ import { theme } from "../theme/theme.js";
4
+ import { keyHintIfBound } from "./keybinding-hints.js";
5
+ import { taskDisplayText, taskMetricsText, taskModelText, taskStatusAppearance } from "./task-row.js";
6
+ export function taskDetailActions(execution, attention, stdinAvailable) {
7
+ if (execution.kind === "settled")
8
+ return ["transcript"];
9
+ return [
10
+ "transcript",
11
+ "foreground",
12
+ "cancel",
13
+ ...(stdinAvailable ? ["input"] : []),
14
+ ...(attention.kind === "input-needed" ? ["question"] : []),
15
+ ];
16
+ }
17
+ export const taskDetailLabels = {
18
+ transcript: "Inspect transcript",
19
+ foreground: "Foreground wait",
20
+ cancel: "Cancel task…",
21
+ input: "Input",
22
+ question: "Open question",
23
+ };
24
+ export function taskDetailSummary(task) {
25
+ const status = taskStatusAppearance(task);
26
+ const metrics = taskMetricsText(task);
27
+ const exit = task.execution.kind === "settled" && task.execution.result.kind !== "cancelled"
28
+ ? task.execution.result.exitCode
29
+ : undefined;
30
+ return (theme.fg(status.color, `${status.icon} ${status.label}`) +
31
+ theme.fg("dim", `${metrics ? ` · ${metrics}` : ""}${exit === undefined ? "" : ` · exit ${exit}`}`));
32
+ }
33
+ const displayMultiline = (text) => stripVTControlCharacters(text).replace(/[\x00-\x08\x0b-\x1f\x7f-\x9f]/g, " ");
34
+ /** A focused view of the same record, never another lifecycle transcript anchor. */
35
+ export class TaskDetail {
36
+ constructor(task, content) {
37
+ this.task = task;
38
+ this.content = content;
39
+ }
40
+ update(task, content = this.content) {
41
+ this.task = task;
42
+ this.content = content;
43
+ }
44
+ invalidate() { }
45
+ render(width) {
46
+ const lines = [
47
+ theme.bold(taskDisplayText(this.task.title)),
48
+ taskDetailSummary(this.task),
49
+ ...this.renderContent(width),
50
+ ];
51
+ lines.push("", theme.fg("muted", theme.bold("Actions")));
52
+ for (const action of taskDetailActions(this.task.execution, this.task.attention, this.content.stdinAvailable)) {
53
+ const hint = action === "foreground" || action === "cancel" || action === "input"
54
+ ? keyHintIfBound(`app.tasks.${action}`, taskDetailLabels[action])
55
+ : "";
56
+ lines.push(hint || taskDetailLabels[action]);
57
+ }
58
+ return new Text(lines.join("\n"), 0, 0).render(width);
59
+ }
60
+ /** Body only: viewport owners pin identity, status and actions outside scrolling content. */
61
+ renderContent(width) {
62
+ const task = this.task;
63
+ const lines = [];
64
+ if (task.kind === "agent")
65
+ lines.push(...wrapTextWithAnsi(theme.fg("dim", taskModelText(task)), Math.max(1, width)));
66
+ const section = (label, text, limit, tail = false) => {
67
+ const wrapped = wrapTextWithAnsi(displayMultiline(text), Math.max(1, width));
68
+ lines.push("", theme.fg("muted", theme.bold(label)), ...(tail ? wrapped.slice(-limit) : wrapped.slice(0, limit)));
69
+ if (wrapped.length > limit || (tail && this.content.outputOmitted))
70
+ lines.push(theme.fg("dim", tail ? "Earlier output omitted · retained tail shown" : "… Inspect transcript for the full text"));
71
+ };
72
+ if (task.execution.kind === "settled" && task.execution.result.kind === "failed") {
73
+ lines.push(theme.fg("error", theme.bold("Error")));
74
+ lines.push(...wrapTextWithAnsi(theme.fg("error", displayMultiline(task.execution.result.message)), Math.max(1, width)));
75
+ }
76
+ if (task.execution.kind !== "settled" && task.attention.kind === "input-needed")
77
+ section("Input needed", task.attention.prompt, 5);
78
+ if (task.execution.kind !== "settled" && task.attention.kind === "no-recent-activity")
79
+ lines.push(theme.fg("warning", "No recent activity reported"));
80
+ const activities = (this.content.activity ?? []).flatMap(({ report }) => report.change.kind === "action" ? [`${report.change.tool} ${report.change.text}`] : []);
81
+ if (task.currentAction) {
82
+ const current = `${task.currentAction.tool} ${task.currentAction.text}`;
83
+ if (activities[activities.length - 1] !== current)
84
+ activities.push(current);
85
+ }
86
+ if (activities.length) {
87
+ lines.push("", theme.fg("muted", theme.bold("Recent activity")));
88
+ if (this.content.activityOmitted || activities.length > 5)
89
+ lines.push(theme.fg("dim", "Earlier activity omitted"));
90
+ const recent = activities.slice(-5);
91
+ lines.push(...recent.map((text, index) => theme.fg(index === recent.length - 1 ? "muted" : "dim", truncateToWidth(`${index === recent.length - 1 ? "›" : " "} ${taskDisplayText(text)}`, width))));
92
+ }
93
+ if (task.kind === "command") {
94
+ section("Command", this.content.prompt ?? task.title, 3);
95
+ section("Output", this.content.output || "No output available", 10, true);
96
+ }
97
+ else {
98
+ if (this.content.prompt !== undefined)
99
+ section("Prompt", this.content.prompt, 3);
100
+ if (this.content.output)
101
+ section("Latest response", this.content.output, 5);
102
+ }
103
+ lines.push("", theme.fg("dim", `Owner ${taskDisplayText(task.ref.ownerId)} · Task ${taskDisplayText(task.ref.taskId)}`));
104
+ return new Text(lines.join("\n"), 0, 0).render(width);
105
+ }
106
+ }
107
+ //# sourceMappingURL=task-detail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-detail.js","sourceRoot":"","sources":["../../../../src/modes/interactive/components/task-detail.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAC;AACrD,OAAO,EAAkB,IAAI,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAGjG,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAItG,MAAM,UAAU,iBAAiB,CAChC,SAAoB,EACpB,SAAoB,EACpB,cAAuB;IAEvB,IAAI,SAAS,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IACxD,OAAO;QACN,YAAY;QACZ,YAAY;QACZ,QAAQ;QACR,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,OAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,GAAG,CAAC,SAAS,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC,CAAC,UAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACnE,CAAC;AACH,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAqC;IACjE,UAAU,EAAE,oBAAoB;IAChC,UAAU,EAAE,iBAAiB;IAC7B,MAAM,EAAE,cAAc;IACtB,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,eAAe;CACzB,CAAC;AAWF,MAAM,UAAU,iBAAiB,CAAC,IAAgB;IACjD,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,eAAe,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,IAAI,GACT,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,KAAK,WAAW;QAC9E,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ;QAChC,CAAC,CAAC,SAAS,CAAC;IACd,OAAO,CACN,KAAK,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACxD,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC,CAClG,CAAC;AACH,CAAC;AAED,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,EAAE,CACzC,wBAAwB,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAC;AAE/E,oFAAoF;AACpF,MAAM,OAAO,UAAU;IAGtB,YAAY,IAAgB,EAAE,OAA0B;QACvD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACxB,CAAC;IAED,MAAM,CAAC,IAAgB,EAAE,OAAO,GAAG,IAAI,CAAC,OAAO;QAC9C,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACxB,CAAC;IAED,UAAU,KAAU,CAAC;IAErB,MAAM,CAAC,KAAa;QACnB,MAAM,KAAK,GAAG;YACb,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5C,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC;YAC5B,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;SAC5B,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;QACzD,KAAK,MAAM,MAAM,IAAI,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;YAC/G,MAAM,IAAI,GACT,MAAM,KAAK,YAAY,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,OAAO;gBACnE,CAAC,CAAC,cAAc,CAAC,aAAa,MAAM,EAAE,EAAE,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBACjE,CAAC,CAAC,EAAE,CAAC;YACP,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9C,CAAC;QACD,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvD,CAAC;IAED,6FAA6F;IAC7F,aAAa,CAAC,KAAa;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;YACxB,KAAK,CAAC,IAAI,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3F,MAAM,OAAO,GAAG,CAAC,KAAa,EAAE,IAAY,EAAE,KAAa,EAAE,IAAI,GAAG,KAAK,EAAE,EAAE;YAC5E,MAAM,OAAO,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;YAC7E,KAAK,CAAC,IAAI,CACT,EAAE,EACF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EACpC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAC3D,CAAC;YACF,IAAI,OAAO,CAAC,MAAM,GAAG,KAAK,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC;gBACjE,KAAK,CAAC,IAAI,CACT,KAAK,CAAC,EAAE,CACP,KAAK,EACL,IAAI,CAAC,CAAC,CAAC,8CAA8C,CAAC,CAAC,CAAC,wCAAwC,CAChG,CACD,CAAC;QACJ,CAAC,CAAC;QACF,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAClF,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACnD,KAAK,CAAC,IAAI,CACT,GAAG,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,gBAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAC3G,CAAC;QACH,CAAC;QACD,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,cAAc;YAC9E,OAAO,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACnD,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,KAAK,oBAAoB;YACpF,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,SAAS,EAAE,6BAA6B,CAAC,CAAC,CAAC;QAChE,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CACvE,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CACtF,CAAC;QACF,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;YACxE,IAAI,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,OAAO;gBAAE,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7E,CAAC;QACD,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC;YACjE,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;gBACxD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,0BAA0B,CAAC,CAAC,CAAC;YACzD,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YACpC,KAAK,CAAC,IAAI,CACT,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAC7B,KAAK,CAAC,EAAE,CACP,KAAK,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAC7C,eAAe,CAAC,GAAG,KAAK,KAAK,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,CAAC,CAC7F,CACD,CACD,CAAC;QACH,CAAC;QACD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YACzD,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,qBAAqB,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;QAC3E,CAAC;aAAM,CAAC;YACP,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS;gBAAE,OAAO,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACjF,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM;gBAAE,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC7E,CAAC;QACD,KAAK,CAAC,IAAI,CACT,EAAE,EACF,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CACxG,CAAC;QACF,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACvD,CAAC;CACD","sourcesContent":["import { stripVTControlCharacters } from \"node:util\";\nimport { type Component, Text, truncateToWidth, wrapTextWithAnsi } from \"@earendil-works/pi-tui\";\nimport type { Attention, Execution, TaskRecord } from \"../../../core/tasks/contracts.js\";\nimport type { TaskActivity } from \"../../../core/tasks/owner-store.js\";\nimport { theme } from \"../theme/theme.js\";\nimport { keyHintIfBound } from \"./keybinding-hints.js\";\nimport { taskDisplayText, taskMetricsText, taskModelText, taskStatusAppearance } from \"./task-row.js\";\n\nexport type TaskDetailAction = \"transcript\" | \"foreground\" | \"cancel\" | \"input\" | \"question\";\n\nexport function taskDetailActions(\n\texecution: Execution,\n\tattention: Attention,\n\tstdinAvailable: boolean,\n): TaskDetailAction[] {\n\tif (execution.kind === \"settled\") return [\"transcript\"];\n\treturn [\n\t\t\"transcript\",\n\t\t\"foreground\",\n\t\t\"cancel\",\n\t\t...(stdinAvailable ? [\"input\" as const] : []),\n\t\t...(attention.kind === \"input-needed\" ? [\"question\" as const] : []),\n\t];\n}\n\nexport const taskDetailLabels: Record<TaskDetailAction, string> = {\n\ttranscript: \"Inspect transcript\",\n\tforeground: \"Foreground wait\",\n\tcancel: \"Cancel task…\",\n\tinput: \"Input\",\n\tquestion: \"Open question\",\n};\n\nexport type TaskDetailContent = {\n\tprompt?: string;\n\toutput?: string;\n\toutputOmitted?: boolean;\n\tstdinAvailable: boolean;\n\tactivity?: readonly TaskActivity[];\n\tactivityOmitted?: boolean;\n};\n\nexport function taskDetailSummary(task: TaskRecord): string {\n\tconst status = taskStatusAppearance(task);\n\tconst metrics = taskMetricsText(task);\n\tconst exit =\n\t\ttask.execution.kind === \"settled\" && task.execution.result.kind !== \"cancelled\"\n\t\t\t? task.execution.result.exitCode\n\t\t\t: undefined;\n\treturn (\n\t\ttheme.fg(status.color, `${status.icon} ${status.label}`) +\n\t\ttheme.fg(\"dim\", `${metrics ? ` · ${metrics}` : \"\"}${exit === undefined ? \"\" : ` · exit ${exit}`}`)\n\t);\n}\n\nconst displayMultiline = (text: string) =>\n\tstripVTControlCharacters(text).replace(/[\\x00-\\x08\\x0b-\\x1f\\x7f-\\x9f]/g, \" \");\n\n/** A focused view of the same record, never another lifecycle transcript anchor. */\nexport class TaskDetail implements Component {\n\tprivate task: TaskRecord;\n\tprivate content: TaskDetailContent;\n\tconstructor(task: TaskRecord, content: TaskDetailContent) {\n\t\tthis.task = task;\n\t\tthis.content = content;\n\t}\n\n\tupdate(task: TaskRecord, content = this.content): void {\n\t\tthis.task = task;\n\t\tthis.content = content;\n\t}\n\n\tinvalidate(): void {}\n\n\trender(width: number): string[] {\n\t\tconst lines = [\n\t\t\ttheme.bold(taskDisplayText(this.task.title)),\n\t\t\ttaskDetailSummary(this.task),\n\t\t\t...this.renderContent(width),\n\t\t];\n\t\tlines.push(\"\", theme.fg(\"muted\", theme.bold(\"Actions\")));\n\t\tfor (const action of taskDetailActions(this.task.execution, this.task.attention, this.content.stdinAvailable)) {\n\t\t\tconst hint =\n\t\t\t\taction === \"foreground\" || action === \"cancel\" || action === \"input\"\n\t\t\t\t\t? keyHintIfBound(`app.tasks.${action}`, taskDetailLabels[action])\n\t\t\t\t\t: \"\";\n\t\t\tlines.push(hint || taskDetailLabels[action]);\n\t\t}\n\t\treturn new Text(lines.join(\"\\n\"), 0, 0).render(width);\n\t}\n\n\t/** Body only: viewport owners pin identity, status and actions outside scrolling content. */\n\trenderContent(width: number): string[] {\n\t\tconst task = this.task;\n\t\tconst lines: string[] = [];\n\t\tif (task.kind === \"agent\")\n\t\t\tlines.push(...wrapTextWithAnsi(theme.fg(\"dim\", taskModelText(task)), Math.max(1, width)));\n\t\tconst section = (label: string, text: string, limit: number, tail = false) => {\n\t\t\tconst wrapped = wrapTextWithAnsi(displayMultiline(text), Math.max(1, width));\n\t\t\tlines.push(\n\t\t\t\t\"\",\n\t\t\t\ttheme.fg(\"muted\", theme.bold(label)),\n\t\t\t\t...(tail ? wrapped.slice(-limit) : wrapped.slice(0, limit)),\n\t\t\t);\n\t\t\tif (wrapped.length > limit || (tail && this.content.outputOmitted))\n\t\t\t\tlines.push(\n\t\t\t\t\ttheme.fg(\n\t\t\t\t\t\t\"dim\",\n\t\t\t\t\t\ttail ? \"Earlier output omitted · retained tail shown\" : \"… Inspect transcript for the full text\",\n\t\t\t\t\t),\n\t\t\t\t);\n\t\t};\n\t\tif (task.execution.kind === \"settled\" && task.execution.result.kind === \"failed\") {\n\t\t\tlines.push(theme.fg(\"error\", theme.bold(\"Error\")));\n\t\t\tlines.push(\n\t\t\t\t...wrapTextWithAnsi(theme.fg(\"error\", displayMultiline(task.execution.result.message)), Math.max(1, width)),\n\t\t\t);\n\t\t}\n\t\tif (task.execution.kind !== \"settled\" && task.attention.kind === \"input-needed\")\n\t\t\tsection(\"Input needed\", task.attention.prompt, 5);\n\t\tif (task.execution.kind !== \"settled\" && task.attention.kind === \"no-recent-activity\")\n\t\t\tlines.push(theme.fg(\"warning\", \"No recent activity reported\"));\n\t\tconst activities = (this.content.activity ?? []).flatMap(({ report }) =>\n\t\t\treport.change.kind === \"action\" ? [`${report.change.tool} ${report.change.text}`] : [],\n\t\t);\n\t\tif (task.currentAction) {\n\t\t\tconst current = `${task.currentAction.tool} ${task.currentAction.text}`;\n\t\t\tif (activities[activities.length - 1] !== current) activities.push(current);\n\t\t}\n\t\tif (activities.length) {\n\t\t\tlines.push(\"\", theme.fg(\"muted\", theme.bold(\"Recent activity\")));\n\t\t\tif (this.content.activityOmitted || activities.length > 5)\n\t\t\t\tlines.push(theme.fg(\"dim\", \"Earlier activity omitted\"));\n\t\t\tconst recent = activities.slice(-5);\n\t\t\tlines.push(\n\t\t\t\t...recent.map((text, index) =>\n\t\t\t\t\ttheme.fg(\n\t\t\t\t\t\tindex === recent.length - 1 ? \"muted\" : \"dim\",\n\t\t\t\t\t\ttruncateToWidth(`${index === recent.length - 1 ? \"›\" : \" \"} ${taskDisplayText(text)}`, width),\n\t\t\t\t\t),\n\t\t\t\t),\n\t\t\t);\n\t\t}\n\t\tif (task.kind === \"command\") {\n\t\t\tsection(\"Command\", this.content.prompt ?? task.title, 3);\n\t\t\tsection(\"Output\", this.content.output || \"No output available\", 10, true);\n\t\t} else {\n\t\t\tif (this.content.prompt !== undefined) section(\"Prompt\", this.content.prompt, 3);\n\t\t\tif (this.content.output) section(\"Latest response\", this.content.output, 5);\n\t\t}\n\t\tlines.push(\n\t\t\t\"\",\n\t\t\ttheme.fg(\"dim\", `Owner ${taskDisplayText(task.ref.ownerId)} · Task ${taskDisplayText(task.ref.taskId)}`),\n\t\t);\n\t\treturn new Text(lines.join(\"\\n\"), 0, 0).render(width);\n\t}\n}\n"]}
@@ -0,0 +1,50 @@
1
+ import { type Component } from "@earendil-works/pi-tui";
2
+ import type { PromptRoute, TaskId } from "../../../core/tasks/contracts.js";
3
+ import type { OwnerTaskStore } from "../../../core/tasks/owner-store.js";
4
+ import { TaskNavigation } from "./task-navigation.js";
5
+ /** Focused view only. The store and original session remain the authorities. */
6
+ export declare class TaskInspector implements Component {
7
+ readonly navigation: TaskNavigation;
8
+ private actionIndex;
9
+ private confirmation?;
10
+ private transcript?;
11
+ private liveTranscript?;
12
+ private transcriptRefreshPending;
13
+ private transcriptRequested;
14
+ private transcriptLoading;
15
+ private transcriptHistorical;
16
+ private transcriptPageRows;
17
+ private cursor?;
18
+ private status;
19
+ private scroll;
20
+ private detailContent;
21
+ private detailTaskId?;
22
+ private detailGeneration;
23
+ private disposed;
24
+ private readonly input;
25
+ private readonly unsubscribe;
26
+ constructor(privateStore: OwnerTaskStore, privateRender: () => void, privateClose: () => void, openQuestion?: (route: PromptRoute) => void);
27
+ private readonly store;
28
+ private readonly requestRender;
29
+ private readonly close;
30
+ open(id?: TaskId): void;
31
+ dispose(): void;
32
+ invalidate(): void;
33
+ private selected;
34
+ private stdinAvailable;
35
+ private sendInput;
36
+ private releaseLiveTranscript;
37
+ private refreshTranscript;
38
+ private loadTranscript;
39
+ private loadDetail;
40
+ handleInput(data: string): boolean;
41
+ private configuredTaskKey;
42
+ /** Only the task picker stays inline; drill-down and confirmation own the screen. */
43
+ get fullscreen(): boolean;
44
+ renderPicker(width: number, availableRows: number): string[];
45
+ render(width: number): string[];
46
+ private renderTranscriptViewport;
47
+ renderViewport(width: number, budget: number): string[];
48
+ private renderAll;
49
+ }
50
+ //# sourceMappingURL=task-inspector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"task-inspector.d.ts","sourceRoot":"","sources":["../../../../src/modes/interactive/components/task-inspector.ts"],"names":[],"mappings":"AAGA,OAAO,EACN,KAAK,SAAS,EAOd,MAAM,wBAAwB,CAAC;AAGhC,OAAO,KAAK,EAAe,WAAW,EAAE,MAAM,EAAE,MAAM,kCAAkC,CAAC;AACzF,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAgBzE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAGtD,gFAAgF;AAChF,qBAAa,aAAc,YAAW,SAAS;IAC9C,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;IACpC,OAAO,CAAC,WAAW,CAAK;IACxB,OAAO,CAAC,YAAY,CAAC,CAA4B;IACjD,OAAO,CAAC,UAAU,CAAC,CAAc;IACjC,OAAO,CAAC,cAAc,CAAC,CAAqB;IAC5C,OAAO,CAAC,wBAAwB,CAAS;IACzC,OAAO,CAAC,mBAAmB,CAAS;IACpC,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,oBAAoB,CAAS;IACrC,OAAO,CAAC,kBAAkB,CAAK;IAC/B,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,MAAM,CAAM;IACpB,OAAO,CAAC,MAAM,CAAK;IACnB,OAAO,CAAC,aAAa,CAAiD;IACtE,OAAO,CAAC,YAAY,CAAC,CAAS;IAC9B,OAAO,CAAC,gBAAgB,CAAK;IAC7B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAa;IACzC,YACC,YAAY,EAAE,cAAc,EAC5B,aAAa,EAAE,MAAM,IAAI,EACzB,YAAY,EAAE,MAAM,IAAI,EACxB,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,IAAI,EAgE3C;IACD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiB;IACvC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAa;IAC3C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAa;IACnC,IAAI,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAEtB;IACD,OAAO,IAAI,IAAI,CAKd;IACD,UAAU,IAAI,IAAI,CAEjB;IACD,OAAO,CAAC,QAAQ;IAGhB,OAAO,CAAC,cAAc;YAMR,SAAS;IAkBvB,OAAO,CAAC,qBAAqB;IAK7B,OAAO,CAAC,iBAAiB;YAWX,cAAc;YAyGd,UAAU;IA8DxB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAwFjC;IACD,OAAO,CAAC,iBAAiB;IAKzB,qFAAqF;IACrF,IAAI,UAAU,IAAI,OAAO,CAMxB;IACD,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,EAAE,CAE3D;IACD,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAE9B;IACD,OAAO,CAAC,wBAAwB;IAkChC,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAmEtD;IACD,OAAO,CAAC,SAAS;CAsDjB"}