@bastani/atomic 0.9.4 → 0.9.5-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 (759) hide show
  1. package/CHANGELOG.md +136 -2
  2. package/README.md +2 -2
  3. package/dist/builtin/cursor/CHANGELOG.md +6 -0
  4. package/dist/builtin/cursor/package.json +3 -3
  5. package/dist/builtin/cursor/src/model-mapper.ts +6 -3
  6. package/dist/builtin/intercom/CHANGELOG.md +31 -0
  7. package/dist/builtin/intercom/README.md +29 -21
  8. package/dist/builtin/intercom/broker/broker.ts +9 -120
  9. package/dist/builtin/intercom/broker/client.ts +29 -54
  10. package/dist/builtin/intercom/broker/delivered-message-cache.ts +44 -0
  11. package/dist/builtin/intercom/broker/paths.ts +42 -5
  12. package/dist/builtin/intercom/broker/pending-send-registry.ts +142 -0
  13. package/dist/builtin/intercom/broker/send-handler.ts +106 -0
  14. package/dist/builtin/intercom/broker/send-signature.ts +37 -0
  15. package/dist/builtin/intercom/broker/spawn.ts +78 -10
  16. package/dist/builtin/intercom/config.ts +6 -3
  17. package/dist/builtin/intercom/contact-supervisor-tool.ts +6 -4
  18. package/dist/builtin/intercom/foreground-detach-handoff.ts +136 -0
  19. package/dist/builtin/intercom/index-heavy.ts +50 -54
  20. package/dist/builtin/intercom/index.ts +320 -272
  21. package/dist/builtin/intercom/intercom-tool.ts +9 -3
  22. package/dist/builtin/intercom/lazy-heavy-proxy.ts +114 -0
  23. package/dist/builtin/intercom/lazy-subagent-ack.ts +20 -0
  24. package/dist/builtin/intercom/lazy-tool-execution.ts +39 -0
  25. package/dist/builtin/intercom/lifecycle-lease.ts +51 -0
  26. package/dist/builtin/intercom/lifecycle.ts +37 -20
  27. package/dist/builtin/intercom/package.json +12 -6
  28. package/dist/builtin/intercom/reply-routing.ts +17 -0
  29. package/dist/builtin/intercom/result-renderers.ts +1 -1
  30. package/dist/builtin/intercom/subagent-relay.ts +58 -12
  31. package/dist/builtin/intercom/types.ts +3 -3
  32. package/dist/builtin/intercom/ui/compose.ts +2 -2
  33. package/dist/builtin/intercom/ui/inline-message.ts +2 -2
  34. package/dist/builtin/intercom/ui/session-list.ts +2 -2
  35. package/dist/builtin/mcp/CHANGELOG.md +23 -0
  36. package/dist/builtin/mcp/OAUTH.md +1 -0
  37. package/dist/builtin/mcp/README.md +10 -6
  38. package/dist/builtin/mcp/apps-cancellation.ts +32 -0
  39. package/dist/builtin/mcp/call-tool-result.ts +9 -0
  40. package/dist/builtin/mcp/caller-wait.ts +50 -0
  41. package/dist/builtin/mcp/command-registration.ts +82 -0
  42. package/dist/builtin/mcp/direct-tool-executor.ts +279 -0
  43. package/dist/builtin/mcp/direct-tools.ts +40 -255
  44. package/dist/builtin/mcp/host-html-template.ts +4 -2
  45. package/dist/builtin/mcp/index.ts +274 -239
  46. package/dist/builtin/mcp/init.ts +96 -126
  47. package/dist/builtin/mcp/mcp-auth-flow.ts +247 -237
  48. package/dist/builtin/mcp/mcp-callback-server.ts +89 -68
  49. package/dist/builtin/mcp/mcp-oauth-provider.ts +23 -1
  50. package/dist/builtin/mcp/metadata-hydration.ts +52 -0
  51. package/dist/builtin/mcp/package.json +3 -3
  52. package/dist/builtin/mcp/proxy-auth.ts +4 -4
  53. package/dist/builtin/mcp/proxy-call.ts +111 -40
  54. package/dist/builtin/mcp/proxy-connect.ts +35 -15
  55. package/dist/builtin/mcp/proxy-info-modes.ts +106 -23
  56. package/dist/builtin/mcp/proxy-modes.ts +3 -3
  57. package/dist/builtin/mcp/session-cleanup-barrier.ts +43 -0
  58. package/dist/builtin/mcp/startup-warmup.ts +98 -0
  59. package/dist/builtin/mcp/state-lease.ts +12 -0
  60. package/dist/builtin/mcp/tool-result-renderer.ts +3 -3
  61. package/dist/builtin/mcp/ui-server.ts +8 -8
  62. package/dist/builtin/mcp/ui-session.ts +9 -18
  63. package/dist/builtin/subagents/CHANGELOG.md +60 -0
  64. package/dist/builtin/subagents/README.md +30 -29
  65. package/dist/builtin/subagents/agents/code-simplifier.md +2 -2
  66. package/dist/builtin/subagents/agents/codebase-analyzer.md +2 -2
  67. package/dist/builtin/subagents/agents/codebase-locator.md +2 -2
  68. package/dist/builtin/subagents/agents/codebase-online-researcher.md +2 -2
  69. package/dist/builtin/subagents/agents/codebase-pattern-finder.md +2 -2
  70. package/dist/builtin/subagents/agents/codebase-research-analyzer.md +2 -2
  71. package/dist/builtin/subagents/agents/codebase-research-locator.md +2 -2
  72. package/dist/builtin/subagents/agents/debugger.md +2 -2
  73. package/dist/builtin/subagents/agents/worker.md +2 -2
  74. package/dist/builtin/subagents/package.json +5 -5
  75. package/dist/builtin/subagents/prompts/review-loop.md +1 -1
  76. package/dist/builtin/subagents/skills/subagent/SKILL.md +37 -36
  77. package/dist/builtin/subagents/src/extension/api-lifecycle.ts +64 -0
  78. package/dist/builtin/subagents/src/extension/fanout-child.ts +44 -51
  79. package/dist/builtin/subagents/src/extension/index.ts +289 -320
  80. package/dist/builtin/subagents/src/extension/prompt-guidance.ts +7 -10
  81. package/dist/builtin/subagents/src/extension/schemas.ts +22 -5
  82. package/dist/builtin/subagents/src/extension/startup-maintenance.ts +89 -0
  83. package/dist/builtin/subagents/src/extension/tool-description.ts +29 -0
  84. package/dist/builtin/subagents/src/intercom/intercom-bridge.ts +13 -2
  85. package/dist/builtin/subagents/src/intercom/result-intercom.ts +4 -4
  86. package/dist/builtin/subagents/src/runs/background/async-event-journal.ts +106 -0
  87. package/dist/builtin/subagents/src/runs/background/async-execution-common.ts +26 -20
  88. package/dist/builtin/subagents/src/runs/background/async-execution-single.ts +13 -2
  89. package/dist/builtin/subagents/src/runs/background/async-execution-types.ts +3 -0
  90. package/dist/builtin/subagents/src/runs/background/async-job-tracker.ts +1 -1
  91. package/dist/builtin/subagents/src/runs/background/completion-claims.ts +189 -0
  92. package/dist/builtin/subagents/src/runs/background/completion-dedupe.ts +44 -7
  93. package/dist/builtin/subagents/src/runs/background/completion-notification.ts +34 -0
  94. package/dist/builtin/subagents/src/runs/background/notify.ts +72 -22
  95. package/dist/builtin/subagents/src/runs/background/result-delivery-processor.ts +232 -0
  96. package/dist/builtin/subagents/src/runs/background/result-file-claims.ts +151 -0
  97. package/dist/builtin/subagents/src/runs/background/result-quarantine.ts +72 -0
  98. package/dist/builtin/subagents/src/runs/background/result-retry-scheduler.ts +48 -0
  99. package/dist/builtin/subagents/src/runs/background/result-status.ts +81 -0
  100. package/dist/builtin/subagents/src/runs/background/result-watcher-data.ts +59 -0
  101. package/dist/builtin/subagents/src/runs/background/result-watcher.ts +177 -233
  102. package/dist/builtin/subagents/src/runs/background/run-id-resolver.ts +3 -2
  103. package/dist/builtin/subagents/src/runs/background/stale-run-reconciler.ts +73 -14
  104. package/dist/builtin/subagents/src/runs/background/subagent-runner-streaming.ts +29 -15
  105. package/dist/builtin/subagents/src/runs/background/top-level-async.ts +1 -2
  106. package/dist/builtin/subagents/src/runs/foreground/chain-execution-dynamic-step.ts +1 -0
  107. package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-runner.ts +1 -0
  108. package/dist/builtin/subagents/src/runs/foreground/chain-execution-parallel-step.ts +1 -0
  109. package/dist/builtin/subagents/src/runs/foreground/chain-execution-sequential-step.ts +7 -9
  110. package/dist/builtin/subagents/src/runs/foreground/chain-execution-types.ts +3 -13
  111. package/dist/builtin/subagents/src/runs/foreground/chain-execution.ts +2 -15
  112. package/dist/builtin/subagents/src/runs/foreground/execution-attempt-finalize.ts +2 -2
  113. package/dist/builtin/subagents/src/runs/foreground/execution-attempt.ts +63 -46
  114. package/dist/builtin/subagents/src/runs/foreground/execution-detach-reservations.ts +48 -0
  115. package/dist/builtin/subagents/src/runs/foreground/execution-detach-route.ts +17 -0
  116. package/dist/builtin/subagents/src/runs/foreground/execution-run-sync.ts +39 -26
  117. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-async.ts +3 -1
  118. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-chain.ts +3 -51
  119. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-context.ts +6 -11
  120. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-input.ts +11 -2
  121. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel-task.ts +2 -0
  122. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel.ts +5 -112
  123. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-resume.ts +2 -0
  124. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-single.ts +68 -118
  125. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-status.ts +79 -7
  126. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-types.ts +2 -2
  127. package/dist/builtin/subagents/src/runs/foreground/subagent-executor.ts +3 -0
  128. package/dist/builtin/subagents/src/runs/shared/pi-args.ts +2 -2
  129. package/dist/builtin/subagents/src/runs/shared/pi-spawn.ts +55 -12
  130. package/dist/builtin/subagents/src/shared/artifacts.ts +22 -11
  131. package/dist/builtin/subagents/src/shared/event-jsonl-writer.ts +294 -0
  132. package/dist/builtin/subagents/src/shared/exclusive-file-publication.ts +44 -0
  133. package/dist/builtin/subagents/src/shared/jsonl-writer.ts +1 -0
  134. package/dist/builtin/subagents/src/shared/model-info.ts +2 -2
  135. package/dist/builtin/subagents/src/shared/settings.ts +20 -10
  136. package/dist/builtin/subagents/src/shared/types-async.ts +3 -1
  137. package/dist/builtin/subagents/src/shared/types-config.ts +2 -0
  138. package/dist/builtin/subagents/src/shared/types-runtime.ts +3 -2
  139. package/dist/builtin/subagents/src/slash/slash-commands.ts +9 -12
  140. package/dist/builtin/subagents/src/slash/slash-live-state.ts +63 -32
  141. package/dist/builtin/subagents/src/tui/render-event-formatting.ts +15 -48
  142. package/dist/builtin/subagents/src/tui/render-layout.ts +9 -0
  143. package/dist/builtin/subagents/src/tui/render-result.ts +7 -0
  144. package/dist/builtin/subagents/src/tui/render-stable-output.ts +1 -0
  145. package/dist/builtin/subagents/src/tui/render-widget-graph.ts +27 -25
  146. package/dist/builtin/subagents/src/tui/render-widget.ts +177 -132
  147. package/dist/builtin/subagents/src/tui/render.ts +1 -1
  148. package/dist/builtin/web-access/CHANGELOG.md +14 -0
  149. package/dist/builtin/web-access/README.md +4 -0
  150. package/dist/builtin/web-access/content-tools.ts +8 -3
  151. package/dist/builtin/web-access/index-heavy.ts +1 -1
  152. package/dist/builtin/web-access/index.ts +190 -46
  153. package/dist/builtin/web-access/lifecycle-lease.ts +38 -0
  154. package/dist/builtin/web-access/package.json +2 -2
  155. package/dist/builtin/web-access/result-renderers.ts +1 -1
  156. package/dist/builtin/web-access/summary-review.ts +1 -1
  157. package/dist/builtin/web-access/web-search-activity.ts +1 -1
  158. package/dist/builtin/web-access/web-search-return.ts +7 -0
  159. package/dist/builtin/web-access/web-search-summary.ts +1 -1
  160. package/dist/builtin/web-access/web-search-tool.ts +4 -2
  161. package/dist/builtin/workflows/CHANGELOG.md +98 -0
  162. package/dist/builtin/workflows/README.md +20 -16
  163. package/dist/builtin/workflows/builtin/deep-research-codebase-utils.ts +33 -9
  164. package/dist/builtin/workflows/builtin/goal-artifacts.ts +3 -1
  165. package/dist/builtin/workflows/builtin/goal-ledger.ts +3 -0
  166. package/dist/builtin/workflows/builtin/goal-prompts.ts +39 -5
  167. package/dist/builtin/workflows/builtin/goal-reducer.ts +21 -0
  168. package/dist/builtin/workflows/builtin/goal-reports.ts +23 -0
  169. package/dist/builtin/workflows/builtin/goal-review.ts +85 -6
  170. package/dist/builtin/workflows/builtin/goal-runner.ts +122 -49
  171. package/dist/builtin/workflows/builtin/goal-schemas.ts +22 -0
  172. package/dist/builtin/workflows/builtin/goal-types.ts +25 -1
  173. package/dist/builtin/workflows/builtin/goal.d.ts +5 -0
  174. package/dist/builtin/workflows/builtin/goal.ts +13 -2
  175. package/dist/builtin/workflows/builtin/index.d.ts +8 -0
  176. package/dist/builtin/workflows/builtin/open-claude-design-runner.ts +16 -5
  177. package/dist/builtin/workflows/builtin/ralph-core.ts +100 -15
  178. package/dist/builtin/workflows/builtin/ralph-models.ts +98 -66
  179. package/dist/builtin/workflows/builtin/ralph-review-gate.ts +37 -5
  180. package/dist/builtin/workflows/builtin/ralph-reviewer-prompt.ts +159 -0
  181. package/dist/builtin/workflows/builtin/ralph-runner.ts +75 -165
  182. package/dist/builtin/workflows/builtin/ralph.d.ts +3 -0
  183. package/dist/builtin/workflows/builtin/ralph.ts +4 -1
  184. package/dist/builtin/workflows/builtin/review-convergence.ts +111 -0
  185. package/dist/builtin/workflows/builtin/shared-prompts.ts +20 -1
  186. package/dist/builtin/workflows/package.json +2 -2
  187. package/dist/builtin/workflows/skills/create-spec/SKILL.md +2 -0
  188. package/dist/builtin/workflows/skills/impeccable/SKILL.md +16 -13
  189. package/dist/builtin/workflows/skills/impeccable/reference/adapt.md +1 -0
  190. package/dist/builtin/workflows/skills/impeccable/reference/adapt.native.md +58 -0
  191. package/dist/builtin/workflows/skills/impeccable/reference/android.md +40 -0
  192. package/dist/builtin/workflows/skills/impeccable/reference/animate.md +2 -0
  193. package/dist/builtin/workflows/skills/impeccable/reference/audit.md +2 -0
  194. package/dist/builtin/workflows/skills/impeccable/reference/audit.native.md +139 -0
  195. package/dist/builtin/workflows/skills/impeccable/reference/bolder.md +69 -62
  196. package/dist/builtin/workflows/skills/impeccable/reference/critique.md +21 -7
  197. package/dist/builtin/workflows/skills/impeccable/reference/document.md +1 -1
  198. package/dist/builtin/workflows/skills/impeccable/reference/hooks.md +92 -0
  199. package/dist/builtin/workflows/skills/impeccable/reference/init.md +29 -7
  200. package/dist/builtin/workflows/skills/impeccable/reference/ios.md +45 -0
  201. package/dist/builtin/workflows/skills/impeccable/reference/layout.md +25 -1
  202. package/dist/builtin/workflows/skills/impeccable/reference/typeset.md +23 -1
  203. package/dist/builtin/workflows/skills/impeccable/scripts/context-signals.mjs +2 -1
  204. package/dist/builtin/workflows/skills/impeccable/scripts/context.mjs +75 -14
  205. package/dist/builtin/workflows/skills/impeccable/scripts/detector/browser/injected/index.mjs +1 -1
  206. package/dist/builtin/workflows/skills/impeccable/scripts/detector/cli/main.mjs +31 -0
  207. package/dist/builtin/workflows/skills/impeccable/scripts/detector/design-system.mjs +64 -0
  208. package/dist/builtin/workflows/skills/impeccable/scripts/detector/detect-antipatterns-browser.js +118 -11
  209. package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/regex/detect-text.mjs +16 -11
  210. package/dist/builtin/workflows/skills/impeccable/scripts/detector/registry/antipatterns.mjs +66 -0
  211. package/dist/builtin/workflows/skills/impeccable/scripts/detector/rules/checks.mjs +42 -10
  212. package/dist/builtin/workflows/skills/impeccable/scripts/detector/shared/fonts.mjs +30 -0
  213. package/dist/builtin/workflows/skills/impeccable/scripts/detector/shared/page.mjs +4 -6
  214. package/dist/builtin/workflows/skills/impeccable/scripts/hook-admin.mjs +660 -0
  215. package/dist/builtin/workflows/skills/impeccable/scripts/hook-before-edit.mjs +516 -0
  216. package/dist/builtin/workflows/skills/impeccable/scripts/hook-lib.mjs +1764 -0
  217. package/dist/builtin/workflows/skills/impeccable/scripts/hook.mjs +61 -0
  218. package/dist/builtin/workflows/skills/impeccable/scripts/lib/impeccable-config.mjs +4 -2
  219. package/dist/builtin/workflows/skills/impeccable/scripts/lib/is-generated.mjs +2 -2
  220. package/dist/builtin/workflows/skills/impeccable/scripts/live/svelte-component.mjs +13 -16
  221. package/dist/builtin/workflows/skills/impeccable/scripts/live-accept.mjs +17 -11
  222. package/dist/builtin/workflows/skills/impeccable/scripts/live-browser.js +104 -37
  223. package/dist/builtin/workflows/skills/impeccable/scripts/live-wrap.mjs +9 -0
  224. package/dist/builtin/workflows/src/durable/backend.ts +12 -0
  225. package/dist/builtin/workflows/src/durable/child-primitive.ts +12 -8
  226. package/dist/builtin/workflows/src/durable/dbos-backend.ts +63 -2
  227. package/dist/builtin/workflows/src/durable/dbos-envelope.ts +28 -0
  228. package/dist/builtin/workflows/src/durable/resume-catalog.ts +12 -0
  229. package/dist/builtin/workflows/src/durable/resume-runtime.ts +5 -2
  230. package/dist/builtin/workflows/src/durable/stage-primitive.ts +167 -28
  231. package/dist/builtin/workflows/src/durable/types.ts +30 -1
  232. package/dist/builtin/workflows/src/engine/primitives/task.ts +3 -1
  233. package/dist/builtin/workflows/src/engine/run-durable-finalize.ts +1 -2
  234. package/dist/builtin/workflows/src/engine/run-returned-status.ts +50 -16
  235. package/dist/builtin/workflows/src/engine/run.ts +32 -32
  236. package/dist/builtin/workflows/src/engine/runtime.ts +5 -0
  237. package/dist/builtin/workflows/src/extension/extension-factory.ts +3 -0
  238. package/dist/builtin/workflows/src/extension/extension-lifecycle.ts +9 -2
  239. package/dist/builtin/workflows/src/extension/extension-runtime-state.ts +137 -27
  240. package/dist/builtin/workflows/src/extension/lifecycle-notifications.ts +22 -6
  241. package/dist/builtin/workflows/src/extension/public-types.ts +1 -1
  242. package/dist/builtin/workflows/src/extension/workflow-command-completions.ts +13 -1
  243. package/dist/builtin/workflows/src/extension/workflow-command-registration.ts +19 -4
  244. package/dist/builtin/workflows/src/extension/workflow-command-surfaces.ts +9 -0
  245. package/dist/builtin/workflows/src/extension/workflow-prompts.ts +17 -17
  246. package/dist/builtin/workflows/src/extension/workflow-run-control-command.ts +48 -23
  247. package/dist/builtin/workflows/src/extension/workflow-schema.ts +15 -2
  248. package/dist/builtin/workflows/src/extension/workflow-tool-control.ts +20 -8
  249. package/dist/builtin/workflows/src/extension/workflow-tool.ts +24 -8
  250. package/dist/builtin/workflows/src/runs/background/status.ts +4 -3
  251. package/dist/builtin/workflows/src/runs/foreground/executor-continuation.ts +13 -3
  252. package/dist/builtin/workflows/src/runs/foreground/executor-direct-helpers.ts +29 -8
  253. package/dist/builtin/workflows/src/runs/foreground/executor-hil.ts +1 -1
  254. package/dist/builtin/workflows/src/runs/foreground/executor-stage-control.ts +8 -0
  255. package/dist/builtin/workflows/src/runs/foreground/executor-stage-factory.ts +4 -3
  256. package/dist/builtin/workflows/src/runs/foreground/stage-control-registry.ts +2 -0
  257. package/dist/builtin/workflows/src/runs/foreground/stage-runner-controller.ts +18 -19
  258. package/dist/builtin/workflows/src/runs/foreground/stage-runner-unresolved-overflow.ts +38 -0
  259. package/dist/builtin/workflows/src/runs/foreground/stage-tool-execution-buffer.ts +47 -0
  260. package/dist/builtin/workflows/src/runs/shared/model-fallback-candidates.ts +1 -1
  261. package/dist/builtin/workflows/src/runs/shared/worktree-git.ts +155 -20
  262. package/dist/builtin/workflows/src/runs/shared/worktree-types.ts +6 -0
  263. package/dist/builtin/workflows/src/runs/shared/worktree.ts +2 -1
  264. package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +2 -2
  265. package/dist/builtin/workflows/src/shared/authoring-contract-stage.ts +2 -2
  266. package/dist/builtin/workflows/src/shared/persistence-restore-helpers.ts +18 -1
  267. package/dist/builtin/workflows/src/shared/persistence-restore.ts +23 -5
  268. package/dist/builtin/workflows/src/shared/persistence-session-entries.ts +4 -0
  269. package/dist/builtin/workflows/src/shared/resume-continuation.ts +2 -0
  270. package/dist/builtin/workflows/src/shared/returned-run-status.ts +116 -0
  271. package/dist/builtin/workflows/src/shared/workflow-failures-decisions.ts +2 -0
  272. package/dist/builtin/workflows/src/tui/graph-view-render-helpers.ts +21 -3
  273. package/dist/builtin/workflows/src/tui/graph-view-state.ts +3 -0
  274. package/dist/builtin/workflows/src/tui/graph-view-types.ts +3 -0
  275. package/dist/builtin/workflows/src/tui/stage-chat-view-archive-history.ts +1 -23
  276. package/dist/builtin/workflows/src/tui/stage-chat-view-footer-status.ts +54 -9
  277. package/dist/builtin/workflows/src/tui/stage-chat-view-pending-tools.ts +9 -0
  278. package/dist/builtin/workflows/src/tui/stage-chat-view-render-settings.ts +27 -0
  279. package/dist/builtin/workflows/src/tui/stage-chat-view-state.ts +5 -6
  280. package/dist/builtin/workflows/src/tui/stage-chat-view.ts +5 -2
  281. package/dist/builtin/workflows/src/tui/status-list.ts +22 -15
  282. package/dist/builtin/workflows/src/tui/workflow-attach-pane.ts +4 -4
  283. package/dist/bun/internal-intercom-broker.d.ts +6 -0
  284. package/dist/bun/internal-intercom-broker.d.ts.map +1 -0
  285. package/dist/bun/internal-intercom-broker.js +39 -0
  286. package/dist/bun/internal-intercom-broker.js.map +1 -0
  287. package/dist/bun/split-loader.d.ts +2 -0
  288. package/dist/bun/split-loader.d.ts.map +1 -0
  289. package/dist/bun/split-loader.js +50 -0
  290. package/dist/bun/split-loader.js.map +1 -0
  291. package/dist/cli/args.d.ts.map +1 -1
  292. package/dist/cli/args.js +2 -2
  293. package/dist/cli/args.js.map +1 -1
  294. package/dist/config.d.ts.map +1 -1
  295. package/dist/config.js +6 -4
  296. package/dist/config.js.map +1 -1
  297. package/dist/core/agent-session-auto-compaction.d.ts +26 -6
  298. package/dist/core/agent-session-auto-compaction.d.ts.map +1 -1
  299. package/dist/core/agent-session-auto-compaction.js +178 -19
  300. package/dist/core/agent-session-auto-compaction.js.map +1 -1
  301. package/dist/core/agent-session-compaction.d.ts.map +1 -1
  302. package/dist/core/agent-session-compaction.js +25 -4
  303. package/dist/core/agent-session-compaction.js.map +1 -1
  304. package/dist/core/agent-session-events.d.ts.map +1 -1
  305. package/dist/core/agent-session-events.js +12 -2
  306. package/dist/core/agent-session-events.js.map +1 -1
  307. package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
  308. package/dist/core/agent-session-extension-bindings.js +1 -1
  309. package/dist/core/agent-session-extension-bindings.js.map +1 -1
  310. package/dist/core/agent-session-message-queue.d.ts.map +1 -1
  311. package/dist/core/agent-session-message-queue.js +1 -1
  312. package/dist/core/agent-session-message-queue.js.map +1 -1
  313. package/dist/core/agent-session-methods.d.ts +13 -4
  314. package/dist/core/agent-session-methods.d.ts.map +1 -1
  315. package/dist/core/agent-session-methods.js.map +1 -1
  316. package/dist/core/agent-session-models.d.ts +2 -2
  317. package/dist/core/agent-session-models.d.ts.map +1 -1
  318. package/dist/core/agent-session-models.js.map +1 -1
  319. package/dist/core/agent-session-prompt.d.ts.map +1 -1
  320. package/dist/core/agent-session-prompt.js +2 -1
  321. package/dist/core/agent-session-prompt.js.map +1 -1
  322. package/dist/core/agent-session-retry.d.ts +2 -0
  323. package/dist/core/agent-session-retry.d.ts.map +1 -1
  324. package/dist/core/agent-session-retry.js +152 -4
  325. package/dist/core/agent-session-retry.js.map +1 -1
  326. package/dist/core/agent-session-services.d.ts +1 -0
  327. package/dist/core/agent-session-services.d.ts.map +1 -1
  328. package/dist/core/agent-session-services.js +4 -2
  329. package/dist/core/agent-session-services.js.map +1 -1
  330. package/dist/core/agent-session-types.d.ts +15 -1
  331. package/dist/core/agent-session-types.d.ts.map +1 -1
  332. package/dist/core/agent-session-types.js +1 -1
  333. package/dist/core/agent-session-types.js.map +1 -1
  334. package/dist/core/agent-session.d.ts +6 -0
  335. package/dist/core/agent-session.d.ts.map +1 -1
  336. package/dist/core/agent-session.js +6 -0
  337. package/dist/core/agent-session.js.map +1 -1
  338. package/dist/core/anthropic-thinking-guard.d.ts +5 -5
  339. package/dist/core/anthropic-thinking-guard.d.ts.map +1 -1
  340. package/dist/core/anthropic-thinking-guard.js +42 -32
  341. package/dist/core/anthropic-thinking-guard.js.map +1 -1
  342. package/dist/core/atomic-guide-command.d.ts.map +1 -1
  343. package/dist/core/atomic-guide-command.js +15 -15
  344. package/dist/core/atomic-guide-command.js.map +1 -1
  345. package/dist/core/auth-storage.d.ts.map +1 -1
  346. package/dist/core/auth-storage.js +14 -9
  347. package/dist/core/auth-storage.js.map +1 -1
  348. package/dist/core/builtin-packages.d.ts.map +1 -1
  349. package/dist/core/builtin-packages.js +8 -4
  350. package/dist/core/builtin-packages.js.map +1 -1
  351. package/dist/core/compaction/compaction.d.ts +2 -0
  352. package/dist/core/compaction/compaction.d.ts.map +1 -1
  353. package/dist/core/compaction/compaction.js +79 -46
  354. package/dist/core/compaction/compaction.js.map +1 -1
  355. package/dist/core/compaction/context-assistant-turns.d.ts +42 -0
  356. package/dist/core/compaction/context-assistant-turns.d.ts.map +1 -0
  357. package/dist/core/compaction/context-assistant-turns.js +87 -0
  358. package/dist/core/compaction/context-assistant-turns.js.map +1 -0
  359. package/dist/core/compaction/context-compaction-critical.d.ts +15 -0
  360. package/dist/core/compaction/context-compaction-critical.d.ts.map +1 -0
  361. package/dist/core/compaction/context-compaction-critical.js +57 -0
  362. package/dist/core/compaction/context-compaction-critical.js.map +1 -0
  363. package/dist/core/compaction/context-compaction-eviction-alternates.d.ts +18 -0
  364. package/dist/core/compaction/context-compaction-eviction-alternates.d.ts.map +1 -0
  365. package/dist/core/compaction/context-compaction-eviction-alternates.js +186 -0
  366. package/dist/core/compaction/context-compaction-eviction-alternates.js.map +1 -0
  367. package/dist/core/compaction/context-compaction-eviction.d.ts +12 -0
  368. package/dist/core/compaction/context-compaction-eviction.d.ts.map +1 -0
  369. package/dist/core/compaction/context-compaction-eviction.js +222 -0
  370. package/dist/core/compaction/context-compaction-eviction.js.map +1 -0
  371. package/dist/core/compaction/context-compaction-prompt.d.ts.map +1 -1
  372. package/dist/core/compaction/context-compaction-prompt.js +1 -1
  373. package/dist/core/compaction/context-compaction-prompt.js.map +1 -1
  374. package/dist/core/compaction/context-compaction-runner.d.ts +7 -1
  375. package/dist/core/compaction/context-compaction-runner.d.ts.map +1 -1
  376. package/dist/core/compaction/context-compaction-runner.js +113 -21
  377. package/dist/core/compaction/context-compaction-runner.js.map +1 -1
  378. package/dist/core/compaction/context-compaction-types.d.ts +2 -0
  379. package/dist/core/compaction/context-compaction-types.d.ts.map +1 -1
  380. package/dist/core/compaction/context-compaction-types.js.map +1 -1
  381. package/dist/core/compaction/context-deletion-application.d.ts +5 -4
  382. package/dist/core/compaction/context-deletion-application.d.ts.map +1 -1
  383. package/dist/core/compaction/context-deletion-application.js +17 -15
  384. package/dist/core/compaction/context-deletion-application.js.map +1 -1
  385. package/dist/core/compaction/context-deletion-store.d.ts.map +1 -1
  386. package/dist/core/compaction/context-deletion-store.js +1 -1
  387. package/dist/core/compaction/context-deletion-store.js.map +1 -1
  388. package/dist/core/compaction/context-deletion-targets.d.ts +2 -1
  389. package/dist/core/compaction/context-deletion-targets.d.ts.map +1 -1
  390. package/dist/core/compaction/context-deletion-targets.js +36 -31
  391. package/dist/core/compaction/context-deletion-targets.js.map +1 -1
  392. package/dist/core/compaction/context-deletion-tool-helpers.d.ts.map +1 -1
  393. package/dist/core/compaction/context-deletion-tool-helpers.js +116 -43
  394. package/dist/core/compaction/context-deletion-tool-helpers.js.map +1 -1
  395. package/dist/core/compaction/context-transcript-analysis.d.ts +4 -2
  396. package/dist/core/compaction/context-transcript-analysis.d.ts.map +1 -1
  397. package/dist/core/compaction/context-transcript-analysis.js +36 -40
  398. package/dist/core/compaction/context-transcript-analysis.js.map +1 -1
  399. package/dist/core/copilot-anthropic-sse-repair.d.ts +23 -0
  400. package/dist/core/copilot-anthropic-sse-repair.d.ts.map +1 -0
  401. package/dist/core/copilot-anthropic-sse-repair.js +340 -0
  402. package/dist/core/copilot-anthropic-sse-repair.js.map +1 -0
  403. package/dist/core/copilot-gemini-reasoning.d.ts +16 -8
  404. package/dist/core/copilot-gemini-reasoning.d.ts.map +1 -1
  405. package/dist/core/copilot-gemini-reasoning.js +27 -22
  406. package/dist/core/copilot-gemini-reasoning.js.map +1 -1
  407. package/dist/core/copilot-hosts.d.ts +12 -0
  408. package/dist/core/copilot-hosts.d.ts.map +1 -0
  409. package/dist/core/copilot-hosts.js +33 -0
  410. package/dist/core/copilot-hosts.js.map +1 -0
  411. package/dist/core/copilot-model-catalog.d.ts.map +1 -1
  412. package/dist/core/copilot-model-catalog.js +3 -2
  413. package/dist/core/copilot-model-catalog.js.map +1 -1
  414. package/dist/core/copilot-model-synthesis.d.ts.map +1 -1
  415. package/dist/core/copilot-model-synthesis.js +3 -1
  416. package/dist/core/copilot-model-synthesis.js.map +1 -1
  417. package/dist/core/extensions/agent-events.d.ts +1 -1
  418. package/dist/core/extensions/agent-events.d.ts.map +1 -1
  419. package/dist/core/extensions/agent-events.js.map +1 -1
  420. package/dist/core/extensions/loader-core.d.ts.map +1 -1
  421. package/dist/core/extensions/loader-core.js +6 -0
  422. package/dist/core/extensions/loader-core.js.map +1 -1
  423. package/dist/core/extensions/loader-virtual-modules.d.ts +8 -1
  424. package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -1
  425. package/dist/core/extensions/loader-virtual-modules.js +10 -4
  426. package/dist/core/extensions/loader-virtual-modules.js.map +1 -1
  427. package/dist/core/extensions/provider-types.d.ts +2 -7
  428. package/dist/core/extensions/provider-types.d.ts.map +1 -1
  429. package/dist/core/extensions/provider-types.js.map +1 -1
  430. package/dist/core/footer-data-provider.d.ts +6 -0
  431. package/dist/core/footer-data-provider.d.ts.map +1 -1
  432. package/dist/core/footer-data-provider.js +72 -29
  433. package/dist/core/footer-data-provider.js.map +1 -1
  434. package/dist/core/http-dispatcher.d.ts.map +1 -1
  435. package/dist/core/http-dispatcher.js +5 -5
  436. package/dist/core/http-dispatcher.js.map +1 -1
  437. package/dist/core/messages.d.ts +9 -0
  438. package/dist/core/messages.d.ts.map +1 -1
  439. package/dist/core/messages.js +100 -18
  440. package/dist/core/messages.js.map +1 -1
  441. package/dist/core/model-registry-builtins.d.ts.map +1 -1
  442. package/dist/core/model-registry-builtins.js +5 -0
  443. package/dist/core/model-registry-builtins.js.map +1 -1
  444. package/dist/core/model-registry-custom-loader.d.ts.map +1 -1
  445. package/dist/core/model-registry-custom-loader.js +49 -8
  446. package/dist/core/model-registry-custom-loader.js.map +1 -1
  447. package/dist/core/model-registry-dynamic.d.ts.map +1 -1
  448. package/dist/core/model-registry-dynamic.js +11 -5
  449. package/dist/core/model-registry-dynamic.js.map +1 -1
  450. package/dist/core/model-registry-loader.d.ts.map +1 -1
  451. package/dist/core/model-registry-loader.js +8 -0
  452. package/dist/core/model-registry-loader.js.map +1 -1
  453. package/dist/core/model-registry-schemas.d.ts +93 -8
  454. package/dist/core/model-registry-schemas.d.ts.map +1 -1
  455. package/dist/core/model-registry-schemas.js +24 -12
  456. package/dist/core/model-registry-schemas.js.map +1 -1
  457. package/dist/core/model-registry-types.d.ts +7 -6
  458. package/dist/core/model-registry-types.d.ts.map +1 -1
  459. package/dist/core/model-registry-types.js.map +1 -1
  460. package/dist/core/model-registry.d.ts +5 -0
  461. package/dist/core/model-registry.d.ts.map +1 -1
  462. package/dist/core/model-registry.js +23 -0
  463. package/dist/core/model-registry.js.map +1 -1
  464. package/dist/core/model-resolver-cli.d.ts.map +1 -1
  465. package/dist/core/model-resolver-cli.js +33 -5
  466. package/dist/core/model-resolver-cli.js.map +1 -1
  467. package/dist/core/model-resolver-initial.d.ts +6 -1
  468. package/dist/core/model-resolver-initial.d.ts.map +1 -1
  469. package/dist/core/model-resolver-initial.js +12 -7
  470. package/dist/core/model-resolver-initial.js.map +1 -1
  471. package/dist/core/model-resolver-scope.d.ts +9 -0
  472. package/dist/core/model-resolver-scope.d.ts.map +1 -1
  473. package/dist/core/model-resolver-scope.js +12 -4
  474. package/dist/core/model-resolver-scope.js.map +1 -1
  475. package/dist/core/model-resolver.d.ts +4 -3
  476. package/dist/core/model-resolver.d.ts.map +1 -1
  477. package/dist/core/model-resolver.js +2 -2
  478. package/dist/core/model-resolver.js.map +1 -1
  479. package/dist/core/openai-responses-payload-sanitizer.d.ts +7 -0
  480. package/dist/core/openai-responses-payload-sanitizer.d.ts.map +1 -0
  481. package/dist/core/openai-responses-payload-sanitizer.js +74 -0
  482. package/dist/core/openai-responses-payload-sanitizer.js.map +1 -0
  483. package/dist/core/package-manager-auto-resources.d.ts +2 -2
  484. package/dist/core/package-manager-auto-resources.d.ts.map +1 -1
  485. package/dist/core/package-manager-auto-resources.js +32 -52
  486. package/dist/core/package-manager-auto-resources.js.map +1 -1
  487. package/dist/core/package-manager-resolver.d.ts.map +1 -1
  488. package/dist/core/package-manager-resolver.js +23 -14
  489. package/dist/core/package-manager-resolver.js.map +1 -1
  490. package/dist/core/package-manager-resource-collector.d.ts +3 -3
  491. package/dist/core/package-manager-resource-collector.d.ts.map +1 -1
  492. package/dist/core/package-manager-resource-collector.js +76 -73
  493. package/dist/core/package-manager-resource-collector.js.map +1 -1
  494. package/dist/core/package-manager-resource-files.d.ts +9 -8
  495. package/dist/core/package-manager-resource-files.d.ts.map +1 -1
  496. package/dist/core/package-manager-resource-files.js +92 -81
  497. package/dist/core/package-manager-resource-files.js.map +1 -1
  498. package/dist/core/prompt-templates-async.d.ts +3 -0
  499. package/dist/core/prompt-templates-async.d.ts.map +1 -0
  500. package/dist/core/prompt-templates-async.js +118 -0
  501. package/dist/core/prompt-templates-async.js.map +1 -0
  502. package/dist/core/provider-context-usage.d.ts +11 -0
  503. package/dist/core/provider-context-usage.d.ts.map +1 -0
  504. package/dist/core/provider-context-usage.js +58 -0
  505. package/dist/core/provider-context-usage.js.map +1 -0
  506. package/dist/core/resource-loader-assets.d.ts +3 -3
  507. package/dist/core/resource-loader-assets.d.ts.map +1 -1
  508. package/dist/core/resource-loader-assets.js +66 -83
  509. package/dist/core/resource-loader-assets.js.map +1 -1
  510. package/dist/core/resource-loader-context-files.d.ts +1 -0
  511. package/dist/core/resource-loader-context-files.d.ts.map +1 -1
  512. package/dist/core/resource-loader-context-files.js +13 -10
  513. package/dist/core/resource-loader-context-files.js.map +1 -1
  514. package/dist/core/resource-loader-core.d.ts +1 -1
  515. package/dist/core/resource-loader-core.d.ts.map +1 -1
  516. package/dist/core/resource-loader-core.js +5 -5
  517. package/dist/core/resource-loader-core.js.map +1 -1
  518. package/dist/core/resource-loader-extensions.d.ts.map +1 -1
  519. package/dist/core/resource-loader-extensions.js +4 -0
  520. package/dist/core/resource-loader-extensions.js.map +1 -1
  521. package/dist/core/resource-loader-reload.d.ts.map +1 -1
  522. package/dist/core/resource-loader-reload.js +54 -7
  523. package/dist/core/resource-loader-reload.js.map +1 -1
  524. package/dist/core/resource-loader-types.d.ts +7 -1
  525. package/dist/core/resource-loader-types.d.ts.map +1 -1
  526. package/dist/core/resource-loader-types.js.map +1 -1
  527. package/dist/core/sdk-types.d.ts +2 -0
  528. package/dist/core/sdk-types.d.ts.map +1 -1
  529. package/dist/core/sdk-types.js.map +1 -1
  530. package/dist/core/sdk.d.ts.map +1 -1
  531. package/dist/core/sdk.js +9 -6
  532. package/dist/core/sdk.js.map +1 -1
  533. package/dist/core/session-entry-normalization.d.ts +7 -0
  534. package/dist/core/session-entry-normalization.d.ts.map +1 -0
  535. package/dist/core/session-entry-normalization.js +14 -0
  536. package/dist/core/session-entry-normalization.js.map +1 -0
  537. package/dist/core/session-manager-core.d.ts.map +1 -1
  538. package/dist/core/session-manager-core.js +1 -0
  539. package/dist/core/session-manager-core.js.map +1 -1
  540. package/dist/core/session-manager-history.d.ts +2 -2
  541. package/dist/core/session-manager-history.d.ts.map +1 -1
  542. package/dist/core/session-manager-history.js +127 -108
  543. package/dist/core/session-manager-history.js.map +1 -1
  544. package/dist/core/settings-manager-basic-accessors.d.ts +3 -2
  545. package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -1
  546. package/dist/core/settings-manager-basic-accessors.js +6 -0
  547. package/dist/core/settings-manager-basic-accessors.js.map +1 -1
  548. package/dist/core/settings-manager-core.d.ts.map +1 -1
  549. package/dist/core/settings-manager-core.js +3 -2
  550. package/dist/core/settings-manager-core.js.map +1 -1
  551. package/dist/core/settings-storage.d.ts.map +1 -1
  552. package/dist/core/settings-storage.js +2 -1
  553. package/dist/core/settings-storage.js.map +1 -1
  554. package/dist/core/settings-types.d.ts +2 -1
  555. package/dist/core/settings-types.d.ts.map +1 -1
  556. package/dist/core/settings-types.js.map +1 -1
  557. package/dist/core/skills-async.d.ts +3 -0
  558. package/dist/core/skills-async.d.ts.map +1 -0
  559. package/dist/core/skills-async.js +269 -0
  560. package/dist/core/skills-async.js.map +1 -0
  561. package/dist/core/slash-commands.d.ts +2 -0
  562. package/dist/core/slash-commands.d.ts.map +1 -1
  563. package/dist/core/slash-commands.js +141 -0
  564. package/dist/core/slash-commands.js.map +1 -1
  565. package/dist/core/tools/bash.d.ts.map +1 -1
  566. package/dist/core/tools/bash.js +11 -8
  567. package/dist/core/tools/bash.js.map +1 -1
  568. package/dist/core/trust-manager.d.ts +9 -0
  569. package/dist/core/trust-manager.d.ts.map +1 -1
  570. package/dist/core/trust-manager.js +44 -2
  571. package/dist/core/trust-manager.js.map +1 -1
  572. package/dist/index-extensions.d.ts +1 -1
  573. package/dist/index-extensions.d.ts.map +1 -1
  574. package/dist/index-extensions.js.map +1 -1
  575. package/dist/index.d.ts +2 -1
  576. package/dist/index.d.ts.map +1 -1
  577. package/dist/index.js +2 -1
  578. package/dist/index.js.map +1 -1
  579. package/dist/main-deferred-startup.d.ts +33 -0
  580. package/dist/main-deferred-startup.d.ts.map +1 -0
  581. package/dist/main-deferred-startup.js +44 -0
  582. package/dist/main-deferred-startup.js.map +1 -0
  583. package/dist/main-early-input.d.ts +41 -0
  584. package/dist/main-early-input.d.ts.map +1 -0
  585. package/dist/main-early-input.js +154 -0
  586. package/dist/main-early-input.js.map +1 -0
  587. package/dist/main-session.d.ts.map +1 -1
  588. package/dist/main-session.js +1 -0
  589. package/dist/main-session.js.map +1 -1
  590. package/dist/main.d.ts +0 -6
  591. package/dist/main.d.ts.map +1 -1
  592. package/dist/main.js +47 -39
  593. package/dist/main.js.map +1 -1
  594. package/dist/modes/interactive/components/chat-session-host-actions.d.ts.map +1 -1
  595. package/dist/modes/interactive/components/chat-session-host-actions.js +0 -1
  596. package/dist/modes/interactive/components/chat-session-host-actions.js.map +1 -1
  597. package/dist/modes/interactive/components/chat-session-host-events.d.ts.map +1 -1
  598. package/dist/modes/interactive/components/chat-session-host-events.js +15 -0
  599. package/dist/modes/interactive/components/chat-session-host-events.js.map +1 -1
  600. package/dist/modes/interactive/components/settings-selector-options.d.ts.map +1 -1
  601. package/dist/modes/interactive/components/settings-selector-options.js +3 -1
  602. package/dist/modes/interactive/components/settings-selector-options.js.map +1 -1
  603. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  604. package/dist/modes/interactive/components/thinking-selector.js +2 -1
  605. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  606. package/dist/modes/interactive/interactive-agent-events.d.ts.map +1 -1
  607. package/dist/modes/interactive/interactive-agent-events.js +37 -2
  608. package/dist/modes/interactive/interactive-agent-events.js.map +1 -1
  609. package/dist/modes/interactive/interactive-auth-login.d.ts.map +1 -1
  610. package/dist/modes/interactive/interactive-auth-login.js +0 -1
  611. package/dist/modes/interactive/interactive-auth-login.js.map +1 -1
  612. package/dist/modes/interactive/interactive-autocomplete.d.ts.map +1 -1
  613. package/dist/modes/interactive/interactive-autocomplete.js +21 -9
  614. package/dist/modes/interactive/interactive-autocomplete.js.map +1 -1
  615. package/dist/modes/interactive/interactive-child-ordering.d.ts +7 -0
  616. package/dist/modes/interactive/interactive-child-ordering.d.ts.map +1 -0
  617. package/dist/modes/interactive/interactive-child-ordering.js +26 -0
  618. package/dist/modes/interactive/interactive-child-ordering.js.map +1 -0
  619. package/dist/modes/interactive/interactive-deferred-startup.d.ts +8 -1
  620. package/dist/modes/interactive/interactive-deferred-startup.d.ts.map +1 -1
  621. package/dist/modes/interactive/interactive-deferred-startup.js +86 -26
  622. package/dist/modes/interactive/interactive-deferred-startup.js.map +1 -1
  623. package/dist/modes/interactive/interactive-editor-actions.d.ts.map +1 -1
  624. package/dist/modes/interactive/interactive-editor-actions.js +13 -13
  625. package/dist/modes/interactive/interactive-editor-actions.js.map +1 -1
  626. package/dist/modes/interactive/interactive-extension-runtime.d.ts.map +1 -1
  627. package/dist/modes/interactive/interactive-extension-runtime.js +16 -0
  628. package/dist/modes/interactive/interactive-extension-runtime.js.map +1 -1
  629. package/dist/modes/interactive/interactive-hotkeys-debug.d.ts.map +1 -1
  630. package/dist/modes/interactive/interactive-hotkeys-debug.js +4 -3
  631. package/dist/modes/interactive/interactive-hotkeys-debug.js.map +1 -1
  632. package/dist/modes/interactive/interactive-input-handling.d.ts.map +1 -1
  633. package/dist/modes/interactive/interactive-input-handling.js +360 -230
  634. package/dist/modes/interactive/interactive-input-handling.js.map +1 -1
  635. package/dist/modes/interactive/interactive-mode-base.d.ts +19 -4
  636. package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
  637. package/dist/modes/interactive/interactive-mode-base.js +46 -4
  638. package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
  639. package/dist/modes/interactive/interactive-mode-deps.d.ts +3 -3
  640. package/dist/modes/interactive/interactive-mode-deps.d.ts.map +1 -1
  641. package/dist/modes/interactive/interactive-mode-deps.js +3 -3
  642. package/dist/modes/interactive/interactive-mode-deps.js.map +1 -1
  643. package/dist/modes/interactive/interactive-mode-surface.d.ts +27 -17
  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-types.d.ts +8 -1
  647. package/dist/modes/interactive/interactive-mode-types.d.ts.map +1 -1
  648. package/dist/modes/interactive/interactive-mode-types.js.map +1 -1
  649. package/dist/modes/interactive/interactive-model-routing.d.ts.map +1 -1
  650. package/dist/modes/interactive/interactive-model-routing.js +14 -10
  651. package/dist/modes/interactive/interactive-model-routing.js.map +1 -1
  652. package/dist/modes/interactive/interactive-onboarding.d.ts +0 -9
  653. package/dist/modes/interactive/interactive-onboarding.d.ts.map +1 -1
  654. package/dist/modes/interactive/interactive-onboarding.js +24 -201
  655. package/dist/modes/interactive/interactive-onboarding.js.map +1 -1
  656. package/dist/modes/interactive/interactive-process-lifecycle.d.ts.map +1 -1
  657. package/dist/modes/interactive/interactive-process-lifecycle.js +43 -9
  658. package/dist/modes/interactive/interactive-process-lifecycle.js.map +1 -1
  659. package/dist/modes/interactive/interactive-render-chat.d.ts.map +1 -1
  660. package/dist/modes/interactive/interactive-render-chat.js +93 -10
  661. package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
  662. package/dist/modes/interactive/interactive-resource-disclosure.d.ts.map +1 -1
  663. package/dist/modes/interactive/interactive-resource-disclosure.js +3 -2
  664. package/dist/modes/interactive/interactive-resource-disclosure.js.map +1 -1
  665. package/dist/modes/interactive/interactive-resource-rendering.d.ts.map +1 -1
  666. package/dist/modes/interactive/interactive-resource-rendering.js +10 -8
  667. package/dist/modes/interactive/interactive-resource-rendering.js.map +1 -1
  668. package/dist/modes/interactive/interactive-session-routing.d.ts.map +1 -1
  669. package/dist/modes/interactive/interactive-session-routing.js +9 -5
  670. package/dist/modes/interactive/interactive-session-routing.js.map +1 -1
  671. package/dist/modes/interactive/interactive-session-runtime.d.ts.map +1 -1
  672. package/dist/modes/interactive/interactive-session-runtime.js +1 -1
  673. package/dist/modes/interactive/interactive-session-runtime.js.map +1 -1
  674. package/dist/modes/interactive/interactive-slash-commands.d.ts.map +1 -1
  675. package/dist/modes/interactive/interactive-slash-commands.js +1 -1
  676. package/dist/modes/interactive/interactive-slash-commands.js.map +1 -1
  677. package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
  678. package/dist/modes/interactive/interactive-startup.js +102 -98
  679. package/dist/modes/interactive/interactive-startup.js.map +1 -1
  680. package/dist/modes/interactive/theme/global-theme.d.ts.map +1 -1
  681. package/dist/modes/interactive/theme/global-theme.js +26 -2
  682. package/dist/modes/interactive/theme/global-theme.js.map +1 -1
  683. package/dist/modes/interactive/theme/theme-class.d.ts +1 -1
  684. package/dist/modes/interactive/theme/theme-class.d.ts.map +1 -1
  685. package/dist/modes/interactive/theme/theme-class.js +2 -0
  686. package/dist/modes/interactive/theme/theme-class.js.map +1 -1
  687. package/dist/modes/interactive/theme/theme-loading.d.ts +1 -0
  688. package/dist/modes/interactive/theme/theme-loading.d.ts.map +1 -1
  689. package/dist/modes/interactive/theme/theme-loading.js +3 -0
  690. package/dist/modes/interactive/theme/theme-loading.js.map +1 -1
  691. package/dist/modes/interactive/theme/theme.d.ts +1 -1
  692. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  693. package/dist/modes/interactive/theme/theme.js +1 -1
  694. package/dist/modes/interactive/theme/theme.js.map +1 -1
  695. package/dist/utils/child-process.d.ts +8 -1
  696. package/dist/utils/child-process.d.ts.map +1 -1
  697. package/dist/utils/child-process.js +39 -6
  698. package/dist/utils/child-process.js.map +1 -1
  699. package/dist/utils/clipboard-image.d.ts.map +1 -1
  700. package/dist/utils/clipboard-image.js +3 -0
  701. package/dist/utils/clipboard-image.js.map +1 -1
  702. package/dist/utils/event-loop.d.ts +7 -0
  703. package/dist/utils/event-loop.d.ts.map +1 -0
  704. package/dist/utils/event-loop.js +14 -0
  705. package/dist/utils/event-loop.js.map +1 -0
  706. package/dist/utils/fs-watch.d.ts +24 -1
  707. package/dist/utils/fs-watch.d.ts.map +1 -1
  708. package/dist/utils/fs-watch.js +60 -5
  709. package/dist/utils/fs-watch.js.map +1 -1
  710. package/dist/utils/json.d.ts +4 -0
  711. package/dist/utils/json.d.ts.map +1 -1
  712. package/dist/utils/json.js +8 -0
  713. package/dist/utils/json.js.map +1 -1
  714. package/dist/utils/module-require.d.ts +11 -0
  715. package/dist/utils/module-require.d.ts.map +1 -1
  716. package/dist/utils/module-require.js +14 -1
  717. package/dist/utils/module-require.js.map +1 -1
  718. package/dist/utils/split-launcher.d.ts +38 -0
  719. package/dist/utils/split-launcher.d.ts.map +1 -0
  720. package/dist/utils/split-launcher.js +63 -0
  721. package/dist/utils/split-launcher.js.map +1 -0
  722. package/docs/changelog.mdx +19 -0
  723. package/docs/compaction.md +100 -64
  724. package/docs/custom-provider.md +18 -5
  725. package/docs/development.md +4 -0
  726. package/docs/extensions.md +11 -2
  727. package/docs/json.md +3 -1
  728. package/docs/keybindings.md +2 -2
  729. package/docs/models.md +69 -10
  730. package/docs/providers.md +3 -2
  731. package/docs/quickstart.md +15 -11
  732. package/docs/rpc.md +5 -3
  733. package/docs/sdk.md +1 -1
  734. package/docs/settings.md +33 -3
  735. package/docs/subagents.md +40 -5
  736. package/docs/terminal-setup.md +4 -0
  737. package/docs/tools.md +1 -1
  738. package/docs/usage.md +8 -6
  739. package/docs/windows.md +4 -0
  740. package/docs/workflows.md +59 -36
  741. package/examples/extensions/preset.ts +2 -2
  742. package/examples/extensions/subagent/README.md +2 -2
  743. package/examples/extensions/subagent/index.ts +1 -2
  744. package/examples/extensions/subagent/schemas.ts +4 -1
  745. package/examples/sdk/12-full-control.ts +1 -1
  746. package/npm-shrinkwrap.json +538 -51
  747. package/package.json +10 -9
  748. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-behavior.ts +0 -75
  749. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-component.ts +0 -202
  750. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-edit.ts +0 -97
  751. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-editor.ts +0 -160
  752. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-frame.ts +0 -72
  753. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-render-modes.ts +0 -161
  754. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-render-selectors.ts +0 -203
  755. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-selectors.ts +0 -234
  756. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-state.ts +0 -103
  757. package/dist/builtin/subagents/src/runs/foreground/chain-clarify-types.ts +0 -29
  758. package/dist/builtin/subagents/src/runs/foreground/chain-clarify.ts +0 -9
  759. package/dist/builtin/subagents/src/runs/foreground/chain-execution-clarify.ts +0 -117
@@ -15,7 +15,7 @@ import {
15
15
 
16
16
  import type { Store } from "./store.js";
17
17
  import type { RunSnapshot } from "./store-types.js";
18
- import type { WorkflowInputValues } from "./types.js";
18
+ import type { WorkflowInputValues, WorkflowSerializableValue } from "./types.js";
19
19
 
20
20
  // ---------------------------------------------------------------------------
21
21
  // Config option
@@ -32,7 +32,25 @@ export type ResumeInFlight = "ask" | "auto" | "never";
32
32
  export interface SessionEntry {
33
33
  readonly id: string;
34
34
  readonly type: string;
35
- readonly payload: Record<string, unknown>;
35
+ readonly payload?: Record<string, WorkflowSerializableValue>;
36
+ readonly customType?: string;
37
+ readonly data?: Record<string, WorkflowSerializableValue>;
38
+ }
39
+
40
+ export interface NormalizedSessionEntry {
41
+ readonly id: string;
42
+ readonly type: string;
43
+ readonly payload: Record<string, WorkflowSerializableValue>;
44
+ }
45
+
46
+ export function normalizeSessionEntries(entries: readonly SessionEntry[]): readonly NormalizedSessionEntry[] {
47
+ return entries.flatMap((entry): readonly NormalizedSessionEntry[] => {
48
+ if (entry.type === "custom" && typeof entry.customType === "string" && entry.data !== undefined) {
49
+ return [{ id: entry.id, type: entry.customType, payload: entry.data }];
50
+ }
51
+ if (entry.payload !== undefined) return [{ id: entry.id, type: entry.type, payload: entry.payload }];
52
+ return [];
53
+ });
36
54
  }
37
55
 
38
56
  /** Structural type for pi's sessionManager (optional — degrades gracefully). */
@@ -69,7 +87,7 @@ export function scanInFlightRuns(entries: readonly SessionEntry[]): InFlightRun[
69
87
  const started = new Map<string, { name: string; inputs: WorkflowInputValues; startTs: number; stageIds: string[] }>();
70
88
  const ended = new Set<string>();
71
89
 
72
- for (const entry of entries) {
90
+ for (const entry of normalizeSessionEntries(entries)) {
73
91
  if (entry.type === "workflow.run.start") {
74
92
  const runId = entry.payload["runId"];
75
93
  const name = entry.payload["name"];
@@ -168,8 +186,8 @@ export function restoreOnSessionStart(
168
186
  const getEntries = sessionManager.getEntries;
169
187
  if (typeof getEntries !== "function") return;
170
188
 
171
- const entries = getEntries.call(sessionManager);
172
- const sessionEntries = entries as readonly SessionEntry[];
189
+ const entries = getEntries.call(sessionManager) as readonly SessionEntry[];
190
+ const sessionEntries = normalizeSessionEntries(entries);
173
191
  restoreTerminalRuns(sessionEntries, store);
174
192
  const inFlight = scanInFlightRuns(sessionEntries);
175
193
  if (inFlight.length === 0) return;
@@ -112,6 +112,8 @@ export interface RunEndPayload {
112
112
  readonly failedStageId?: string;
113
113
  readonly resumable?: boolean;
114
114
  readonly retryAfterMs?: number;
115
+ readonly endedAt?: number;
116
+ readonly durationMs?: number;
115
117
  readonly ts: number;
116
118
  }
117
119
 
@@ -254,6 +256,8 @@ export function appendRunEnd(api: PersistenceAPI, payload: RunEndPayload): void
254
256
  ...(terminalPayload.failedStageId !== undefined ? { failedStageId: terminalPayload.failedStageId } : {}),
255
257
  ...(terminalPayload.resumable !== undefined ? { resumable: terminalPayload.resumable } : {}),
256
258
  ...(terminalPayload.retryAfterMs !== undefined ? { retryAfterMs: terminalPayload.retryAfterMs } : {}),
259
+ ...(terminalPayload.endedAt !== undefined ? { endedAt: terminalPayload.endedAt } : {}),
260
+ ...(terminalPayload.durationMs !== undefined ? { durationMs: terminalPayload.durationMs } : {}),
257
261
  ts: terminalPayload.ts,
258
262
  });
259
263
  }
@@ -0,0 +1,2 @@
1
+ export const RESUME_CONTINUATION_PROMPT =
2
+ "Continue where you left off. If you believe you are finished with your original task (or a redefined task if the user told you), stop.";
@@ -0,0 +1,116 @@
1
+ import type { RunEndMetadata } from "./store-public-types.js";
2
+ import type { RunSnapshot, RunStatus, StageSnapshot, WorkflowFailureKind } from "./store-types.js";
3
+ import type { WorkflowOutputValues } from "./types.js";
4
+
5
+ const RETURNED_BLOCKED_STATUSES = new Set([
6
+ "blocked",
7
+ "needs_human",
8
+ "incomplete",
9
+ "auth_blocked",
10
+ "active",
11
+ ]);
12
+
13
+ export interface StructuredRecoverableWorkflowFailure {
14
+ readonly error: string;
15
+ readonly metadata: RunEndMetadata;
16
+ }
17
+
18
+ export function normalizeReturnedWorkflowStatus(status: unknown): string | undefined {
19
+ if (typeof status !== "string") return undefined;
20
+ const normalized = status.trim().toLowerCase().replace(/[^a-z0-9]+/g, "_").replace(/^_+|_+$/g, "");
21
+ return normalized.length > 0 ? normalized : undefined;
22
+ }
23
+
24
+ export function isReturnedBlockedWorkflowStatus(status: string): boolean {
25
+ return RETURNED_BLOCKED_STATUSES.has(status);
26
+ }
27
+
28
+ export function isReturnedResumableBlockedWorkflowStatus(status: string): boolean {
29
+ return status !== "blocked" && isReturnedBlockedWorkflowStatus(status);
30
+ }
31
+
32
+ export function actionableReturnedStatusText(result: WorkflowOutputValues | undefined): string | undefined {
33
+ return stringResultField(result, "summary") ?? stringResultField(result, "remaining_work") ?? stringResultField(result, "result");
34
+ }
35
+
36
+ export function structuredRecoverableWorkflowFailure(
37
+ run: Pick<RunSnapshot,
38
+ | "error"
39
+ | "failureKind"
40
+ | "failureCode"
41
+ | "failureRecoverability"
42
+ | "failureDisposition"
43
+ | "failureMessage"
44
+ | "failedStageId"
45
+ | "retryAfterMs"
46
+ | "stages"
47
+ >,
48
+ ): StructuredRecoverableWorkflowFailure | undefined {
49
+ const runFailure = structuredRecoverableFailureFromSnapshot(run);
50
+ if (runFailure !== undefined) return runFailure;
51
+ if (run.failedStageId === undefined) return undefined;
52
+
53
+ const failedStage = run.stages.find((stage) => stage.id === run.failedStageId);
54
+ return failedStage === undefined
55
+ ? undefined
56
+ : structuredRecoverableFailureFromSnapshot(failedStage, failedStage.id);
57
+ }
58
+
59
+ export function structuredRecoverableWorkflowFailureText(
60
+ run: Pick<RunSnapshot,
61
+ | "error"
62
+ | "failureKind"
63
+ | "failureCode"
64
+ | "failureRecoverability"
65
+ | "failureDisposition"
66
+ | "failureMessage"
67
+ | "failedStageId"
68
+ | "retryAfterMs"
69
+ | "stages"
70
+ >,
71
+ ): string | undefined {
72
+ return structuredRecoverableWorkflowFailure(run)?.error;
73
+ }
74
+
75
+ export function effectiveRunStatus(run: RunSnapshot): RunStatus {
76
+ if (run.status !== "completed") return run.status;
77
+ if (structuredRecoverableWorkflowFailure(run) !== undefined) return "blocked";
78
+ const returnedStatus = normalizeReturnedWorkflowStatus(run.result?.["status"]);
79
+ if (returnedStatus === "failed") return "failed";
80
+ if (returnedStatus !== undefined && isReturnedBlockedWorkflowStatus(returnedStatus)) return "blocked";
81
+ return run.status;
82
+ }
83
+
84
+ function structuredRecoverableFailureFromSnapshot(
85
+ snapshot: Pick<RunSnapshot | StageSnapshot, "error" | "failureKind" | "failureCode" | "failureRecoverability" | "failureDisposition" | "failureMessage" | "retryAfterMs">,
86
+ failedStageId?: string,
87
+ ): StructuredRecoverableWorkflowFailure | undefined {
88
+ if (snapshot.failureDisposition !== "active_blocked") return undefined;
89
+ if (snapshot.failureRecoverability !== "recoverable") return undefined;
90
+ if (!isRecoverableProviderFailureKind(snapshot.failureKind)) return undefined;
91
+ const error = snapshot.error ?? snapshot.failureMessage ?? "Workflow is blocked by a recoverable provider failure.";
92
+ return {
93
+ error,
94
+ metadata: {
95
+ failureKind: snapshot.failureKind,
96
+ ...(snapshot.failureCode !== undefined ? { failureCode: snapshot.failureCode } : {}),
97
+ failureRecoverability: snapshot.failureRecoverability,
98
+ failureDisposition: snapshot.failureDisposition,
99
+ failureMessage: snapshot.failureMessage ?? error,
100
+ ...(failedStageId !== undefined ? { failedStageId } : {}),
101
+ resumable: true,
102
+ ...(snapshot.retryAfterMs !== undefined ? { retryAfterMs: snapshot.retryAfterMs } : {}),
103
+ },
104
+ };
105
+ }
106
+
107
+ function isRecoverableProviderFailureKind(kind: WorkflowFailureKind | undefined): kind is "auth" | "rate_limit" | "provider" {
108
+ return kind === "auth" || kind === "rate_limit" || kind === "provider";
109
+ }
110
+
111
+
112
+
113
+ function stringResultField(result: WorkflowOutputValues | undefined, key: string): string | undefined {
114
+ const value = result?.[key];
115
+ return typeof value === "string" && value.trim().length > 0 ? value.trim() : undefined;
116
+ }
@@ -186,6 +186,8 @@ const PROVIDER_UNAVAILABLE_PHRASES: readonly TokenMatch[] = [
186
186
  ["provider", "error"],
187
187
  ["model", "unavailable"],
188
188
  ["503"],
189
+ ["git", "command", "timed", "out"],
190
+ ["spawnsync", "git", "etimedout"],
189
191
  ];
190
192
 
191
193
  const AUTH_CONTEXT = new Set([
@@ -5,6 +5,7 @@ import {
5
5
  OVERLAY_LINE_COUNT,
6
6
  OVERLAY_VERTICAL_MARGIN_ROWS,
7
7
  } from "./graph-view-constants.js";
8
+ import { WORKFLOW_STATUS_KEY } from "./workflow-status.js";
8
9
  import { GraphViewState } from "./graph-view-state.js";
9
10
  import { renderOutlinePill } from "./header.js";
10
11
  import { NODE_H, NODE_W } from "./layout.js";
@@ -78,12 +79,25 @@ export abstract class GraphViewRenderHelpers extends GraphViewState {
78
79
  * the header band: `backgroundPanel` chrome, outlined accent pill
79
80
  * flush-left, hints flowing right on the centre row.
80
81
  */
82
+ protected _externalStatusText(): string | null {
83
+ const entries = Array.from(this.footerData?.getExtensionStatuses() ?? [])
84
+ .filter(([key, value]) => (
85
+ value.trim().length > 0 &&
86
+ key !== WORKFLOW_STATUS_KEY &&
87
+ !key.startsWith(`${WORKFLOW_STATUS_KEY}:`)
88
+ ))
89
+ .sort(([a], [b]) => a.localeCompare(b));
90
+ if (entries.length === 0) return null;
91
+ return entries.map(([, value]) => value.trim()).join(" · ");
92
+ }
93
+
81
94
  protected _renderStatusline(width: number): string[] {
82
95
  const t = this.graphTheme;
83
96
  const chromeBg = hexBg(t.backgroundPanel);
84
97
  const text = hexToAnsi(t.text);
85
98
  const muted = hexToAnsi(t.textMuted);
86
99
  const dim = hexToAnsi(t.dim);
100
+ const accent = hexToAnsi(t.accent);
87
101
 
88
102
  const {
89
103
  top,
@@ -92,13 +106,17 @@ export abstract class GraphViewRenderHelpers extends GraphViewState {
92
106
  visibleWidth: pillW,
93
107
  } = renderOutlinePill(MODE_PILL_LABEL, t.accent, chromeBg);
94
108
 
95
- // Hints — `<key> <label>` separated by ` · `.
109
+ // Hints — `<key> <label>` separated by ` · `. When other extensions
110
+ // publish status text (for example the async subagent widget), include it
111
+ // ahead of the controls so fullscreen workflow overlays do not hide it.
96
112
  const sep = `${chromeBg} ${dim}·${RESET}${chromeBg} `;
97
- const segments = HINT_KEYS.map(
113
+ const statusText = this._externalStatusText();
114
+ const statusSegment = statusText ? [`${accent}${statusText}${RESET}${chromeBg}`] : [];
115
+ const hintSegments = HINT_KEYS.map(
98
116
  ({ key, label }) =>
99
117
  `${text}${BOLD}${key}${RESET}${chromeBg} ${muted}${label}${RESET}${chromeBg}`,
100
118
  );
101
- const hintsStyledRaw = segments.join(sep);
119
+ const hintsStyledRaw = [...statusSegment, ...hintSegments].join(sep);
102
120
 
103
121
  const leftEdgePad = 1;
104
122
  const rightEdgePad = 2;
@@ -1,3 +1,4 @@
1
+ import type { ReadonlyFooterDataProvider } from "@bastani/atomic";
1
2
  import type { Store } from "../shared/store.js";
2
3
  import type {
3
4
  PendingPrompt,
@@ -63,6 +64,7 @@ export abstract class GraphViewState {
63
64
  protected getViewportRows?: () => number | undefined;
64
65
  protected requestRender?: () => void;
65
66
  protected piKeybindings?: unknown;
67
+ protected footerData?: ReadonlyFooterDataProvider;
66
68
 
67
69
  /** Active HIL prompt state, set when `_rebuildLayout` sees a new prompt id. */
68
70
  protected promptState: PromptCardState | null = null;
@@ -102,6 +104,7 @@ export abstract class GraphViewState {
102
104
  this.getViewportRows = opts.getViewportRows;
103
105
  this.requestRender = opts.requestRender;
104
106
  this.piKeybindings = opts.piKeybindings;
107
+ this.footerData = opts.footerData;
105
108
 
106
109
  this._unsubscribe = this.store.subscribe((snap) => {
107
110
  this.currentSnapshot = snap;
@@ -1,3 +1,4 @@
1
+ import type { ReadonlyFooterDataProvider } from "@bastani/atomic";
1
2
  import type { Store } from "../shared/store.js";
2
3
  import type { GraphTheme } from "./graph-theme.js";
3
4
 
@@ -66,4 +67,6 @@ export interface GraphViewOpts {
66
67
  requestRender?: () => void;
67
68
  /** Host Pi keybindings manager used by run-level prompt cards. */
68
69
  piKeybindings?: unknown;
70
+ /** Host footer/status provider used to surface non-workflow extension statuses inside the fullscreen graph overlay. */
71
+ footerData?: ReadonlyFooterDataProvider;
69
72
  }
@@ -24,7 +24,7 @@ export function renderReadOnlyArchiveBody(
24
24
  }
25
25
 
26
26
  const t = ctx.theme;
27
- const calloutRows = 6;
27
+ const calloutRows = 5;
28
28
  const transcriptBudget = Math.max(1, budget - calloutRows);
29
29
  const lines = ctx.chatHost.renderBody(width, transcriptBudget);
30
30
  const callout: string[] = [];
@@ -46,17 +46,6 @@ export function renderReadOnlyArchiveBody(
46
46
  0,
47
47
  ).render(width),
48
48
  );
49
- callout.push(
50
- ...new Text(
51
- paint("esc", t.accent, { bold: true }) +
52
- paint(" close", t.textMuted) +
53
- paint(" · ", t.dim) +
54
- paint("ctrl+d", t.accent, { bold: true }) +
55
- paint(" return to graph", t.textMuted),
56
- 2,
57
- 0,
58
- ).render(width),
59
- );
60
49
  lines.push(...callout);
61
50
  while (lines.length < budget) lines.push(blankLine(width));
62
51
  if (lines.length > budget) lines.length = budget;
@@ -111,17 +100,6 @@ function renderReadOnlyPromptArchiveBody(
111
100
  bodyLines.push(...new Text(paint("your response", t.textMuted, { bold: true }), 2, 0).render(innerWidth));
112
101
  bodyLines.push(...new Text(paint(answer, answer.startsWith("(") ? t.dim : t.text), 4, 0).render(innerWidth));
113
102
  bodyLines.push("");
114
- bodyLines.push(
115
- ...new Text(
116
- paint("esc", t.accent, { bold: true }) +
117
- paint(" close", t.textMuted) +
118
- paint(" · ", t.dim) +
119
- paint("ctrl+d", t.accent, { bold: true }) +
120
- paint(" return to graph", t.textMuted),
121
- 2,
122
- 0,
123
- ).render(innerWidth),
124
- );
125
103
 
126
104
  const title = stage.status === "skipped" ? "QUESTION SKIPPED" : "QUESTION ASKED";
127
105
  const cardLines = renderRoundedBoxLines({
@@ -78,6 +78,19 @@ export function renderFooterWithOrchestratorReturnHint(
78
78
  );
79
79
  return lines;
80
80
  }
81
+ export function renderReadOnlyArchiveFooter(
82
+ ctx: StageChatViewContext,
83
+ width: number,
84
+ ): string[] {
85
+ const closeHint =
86
+ paint("esc", ctx.theme.text, { bold: true }) +
87
+ paint(" to close", ctx.theme.textMuted);
88
+ return [
89
+ mergeOrchestratorReturnHintIntoLine(ctx, closeHint, width, {
90
+ minimumPrefixWidth: visibleWidth(closeHint) + 1,
91
+ }),
92
+ ];
93
+ }
81
94
 
82
95
  export function embedOrchestratorReturnHintInWidget(
83
96
  ctx: StageChatViewContext,
@@ -102,21 +115,45 @@ function mergeOrchestratorReturnHintIntoLine(
102
115
  ctx: StageChatViewContext,
103
116
  line: string,
104
117
  width: number,
105
- options: { preserveTrailingBorder?: boolean; rightMargin?: number } = {},
118
+ options: {
119
+ preserveTrailingBorder?: boolean;
120
+ rightMargin?: number;
121
+ minimumPrefixWidth?: number;
122
+ } = {},
106
123
  ): string {
107
124
  const copyModeState = ctx.mouseScrollCaptureEnabled ? "off" : "on";
108
- const plain = `ctrl+d graph · ${STAGE_CHAT_MOUSE_SCROLL_TOGGLE_LABEL} copy mode ${copyModeState}`;
109
- const styled =
110
- paint("ctrl+d", ctx.theme.text, { bold: true }) +
111
- paint(" graph · ", ctx.theme.textMuted) +
112
- paint(STAGE_CHAT_MOUSE_SCROLL_TOGGLE_LABEL, ctx.theme.text, { bold: true }) +
113
- paint(` copy mode ${copyModeState}`, ctx.theme.textMuted);
125
+ const fullHint = {
126
+ plain: `ctrl+d graph · ${STAGE_CHAT_MOUSE_SCROLL_TOGGLE_LABEL} copy mode ${copyModeState}`,
127
+ styled:
128
+ paint("ctrl+d", ctx.theme.text, { bold: true }) +
129
+ paint(" graph · ", ctx.theme.textMuted) +
130
+ paint(STAGE_CHAT_MOUSE_SCROLL_TOGGLE_LABEL, ctx.theme.text, { bold: true }) +
131
+ paint(` copy mode ${copyModeState}`, ctx.theme.textMuted),
132
+ };
133
+ const compactHint = {
134
+ plain: `ctrl+d · ${STAGE_CHAT_MOUSE_SCROLL_TOGGLE_LABEL} ${copyModeState}`,
135
+ styled:
136
+ paint("ctrl+d", ctx.theme.text, { bold: true }) +
137
+ paint(" · ", ctx.theme.textMuted) +
138
+ paint(STAGE_CHAT_MOUSE_SCROLL_TOGGLE_LABEL, ctx.theme.text, { bold: true }) +
139
+ paint(` ${copyModeState}`, ctx.theme.textMuted),
140
+ };
114
141
  const trailingBorder = options.preserveTrailingBorder === true
115
142
  ? trailingWidgetBorderChar(line)
116
143
  : "";
117
144
  const suffixWidth = visibleWidth(trailingBorder);
118
- const hintWidth = visibleWidth(plain);
119
145
  const requestedRightMargin = Math.max(0, Math.floor(options.rightMargin ?? 0));
146
+ const minimumPrefixWidth = Math.max(
147
+ 0,
148
+ Math.floor(options.minimumPrefixWidth ?? 0),
149
+ );
150
+ const fullRequiredWidth =
151
+ suffixWidth +
152
+ requestedRightMargin +
153
+ minimumPrefixWidth +
154
+ visibleWidth(fullHint.plain);
155
+ const hint = fullRequiredWidth <= width ? fullHint : compactHint;
156
+ const hintWidth = visibleWidth(hint.plain);
120
157
  const rightMargin = Math.min(
121
158
  requestedRightMargin,
122
159
  Math.max(0, width - suffixWidth - hintWidth),
@@ -124,7 +161,13 @@ function mergeOrchestratorReturnHintIntoLine(
124
161
  const hintStart = Math.max(0, width - suffixWidth - rightMargin - hintWidth);
125
162
  const prefix = truncateToWidth(line, hintStart, "", true);
126
163
  const gap = Math.max(0, hintStart - visibleWidth(prefix));
127
- return prefix + " ".repeat(gap) + styled + " ".repeat(rightMargin) + trailingBorder;
164
+ return (
165
+ prefix +
166
+ " ".repeat(gap) +
167
+ hint.styled +
168
+ " ".repeat(rightMargin) +
169
+ trailingBorder
170
+ );
128
171
  }
129
172
 
130
173
  export function banner(
@@ -186,6 +229,8 @@ export function editorRuleColor(
186
229
  return ctx.theme.mauve;
187
230
  case "xhigh":
188
231
  return ctx.theme.error;
232
+ case "max":
233
+ return ctx.theme.error;
189
234
  case "off":
190
235
  default:
191
236
  return ctx.theme.border;
@@ -0,0 +1,9 @@
1
+ import type { AgentSessionEvent } from "@bastani/atomic";
2
+ import type { StageChatViewContext } from "./stage-chat-view-types.js";
3
+
4
+ export function replayPendingToolExecutions(ctx: StageChatViewContext): void {
5
+ const events = ctx.handle?.isDisposed === true
6
+ ? []
7
+ : ctx.handle?.pendingToolExecutionEvents?.() ?? [];
8
+ for (const event of events) ctx.chatHost.applyAgentEvent(event as AgentSessionEvent);
9
+ }
@@ -0,0 +1,27 @@
1
+ import type { ChatMessageRenderOptions } from "@bastani/atomic";
2
+ import type { StageChatViewContext, StageChatViewOpts } from "./stage-chat-view-types.js";
3
+
4
+ type StageChatRenderSettings = Partial<Omit<ChatMessageRenderOptions, "ui" | "cwd">>;
5
+
6
+ type MessageRendererHost = {
7
+ extensionRunner?: {
8
+ getMessageRenderer?: (customType: string) => ReturnType<NonNullable<StageChatRenderSettings["getCustomMessageRenderer"]>>;
9
+ };
10
+ };
11
+
12
+ export function stageChatRenderSettings(
13
+ ctx: StageChatViewContext,
14
+ opts: StageChatViewOpts,
15
+ ): StageChatRenderSettings | undefined {
16
+ const inherited = opts.getChatRenderSettings?.();
17
+ const stageSession = ctx.handle?.isDisposed === true ? undefined : ctx.handle?.agentSession;
18
+ if (!stageSession) return inherited;
19
+ const rendererHost = stageSession as MessageRendererHost;
20
+ return {
21
+ ...inherited,
22
+ getToolDefinition: (toolName) =>
23
+ stageSession.getToolDefinition(toolName) ?? inherited?.getToolDefinition?.(toolName),
24
+ getCustomMessageRenderer: (customType) =>
25
+ rendererHost.extensionRunner?.getMessageRenderer?.(customType) ?? inherited?.getCustomMessageRenderer?.(customType),
26
+ };
27
+ }
@@ -4,11 +4,7 @@ import type { PendingPrompt, RunSnapshot, StageSnapshot } from "../shared/store-
4
4
  import { stageUiBroker } from "../shared/stage-ui-broker.js";
5
5
  import { resolveStageChatViewportRows } from "./stage-chat-layout.js";
6
6
  import { createPromptCardState } from "./prompt-card.js";
7
- import {
8
- hideMountedCustomUi,
9
- releaseMountedCustomUi,
10
- showCustomUi,
11
- } from "./stage-chat-view-custom-ui.js";
7
+ import { hideMountedCustomUi, releaseMountedCustomUi, showCustomUi } from "./stage-chat-view-custom-ui.js";
12
8
  import { editorRuleColor } from "./stage-chat-view-footer-status.js";
13
9
  import {
14
10
  blankLine,
@@ -30,6 +26,8 @@ import {
30
26
  } from "./stage-chat-view-types.js";
31
27
  import { noticeRow, noticeSummary } from "./stage-chat-view-transcript.js";
32
28
  import { applyStageChatLiveHandleEvent } from "./stage-chat-view-live-events.js";
29
+ import { replayPendingToolExecutions } from "./stage-chat-view-pending-tools.js";
30
+ import { stageChatRenderSettings } from "./stage-chat-view-render-settings.js";
33
31
  import { hexToAnsi, RESET } from "./color-utils.js";
34
32
  import {
35
33
  isTerminalOrNonStreamingStageChatStatus,
@@ -89,6 +87,7 @@ export function initializeStageChatView(
89
87
  });
90
88
 
91
89
  snapshotMessagesFromHandle(ctx);
90
+ replayPendingToolExecutions(ctx);
92
91
  const initialRun = currentRun(ctx);
93
92
  const initialStage = initialRun?.stages.find((s) => s.id === ctx.stageId);
94
93
  ctx.lastObservedRunStatus = initialRun?.status;
@@ -187,7 +186,7 @@ function createChatHost(
187
186
  keybindings: opts.piKeybindings,
188
187
  editorFactory: opts.piEditorFactory,
189
188
  editorTheme: editorThemeFromGraphTheme(ctx.theme),
190
- getChatRenderSettings: opts.getChatRenderSettings,
189
+ getChatRenderSettings: () => stageChatRenderSettings(ctx, opts),
191
190
  footerData: opts.footerData,
192
191
  renderExtraEntry: (entry) => noticeRow(entry, ctx.theme),
193
192
  });
@@ -35,6 +35,7 @@ import { renderCustomUi } from "./stage-chat-view-custom-ui.js";
35
35
  import {
36
36
  renderFooterWithOrchestratorReturnHint,
37
37
  renderHeader,
38
+ renderReadOnlyArchiveFooter,
38
39
  sepRule,
39
40
  } from "./stage-chat-view-footer-status.js";
40
41
  import { handleStageChatInput } from "./stage-chat-view-input.js";
@@ -127,9 +128,11 @@ export class StageChatView implements Component, Focusable {
127
128
  const workingLines = chatChromeHidden ? [] : this.chatHost.renderWorkingStatus(w);
128
129
  const usageLines = chatChromeHidden ? [] : this.chatHost.renderUsage(w);
129
130
  const editorLines = chatChromeHidden ? [] : this.chatHost.renderEditor(w);
130
- const footerLines = chatChromeHidden
131
+ const footerLines = customUiActive || promptActive
131
132
  ? []
132
- : renderFooterWithOrchestratorReturnHint(ctx, w, this.chatHost.renderFooter(w));
133
+ : readOnlyArchive
134
+ ? renderReadOnlyArchiveFooter(ctx, w)
135
+ : renderFooterWithOrchestratorReturnHint(ctx, w, this.chatHost.renderFooter(w));
133
136
 
134
137
  const totalRows = viewLineCount(ctx);
135
138
  const plan = planStageChatFrame({
@@ -27,6 +27,7 @@
27
27
  */
28
28
 
29
29
  import type { RunSnapshot, StageSnapshot, StageStatus } from "../shared/store-types.js";
30
+ import { effectiveRunStatus } from "../shared/returned-run-status.js";
30
31
  import { elapsedRunMs, elapsedStageMs } from "../shared/timing.js";
31
32
  import type { GraphTheme } from "./graph-theme.js";
32
33
  import { fmtDuration } from "./status-helpers.js";
@@ -162,7 +163,7 @@ function renderRunEntry(
162
163
  function runAccent(run: RunSnapshot, theme?: GraphTheme): string {
163
164
  if (!theme) return "#000000";
164
165
  if (isQuitRun(run)) return theme.warning;
165
- switch (run.status) {
166
+ switch (effectiveRunStatus(run)) {
166
167
  case "completed": return theme.success;
167
168
  case "running": return theme.warning;
168
169
  case "paused": return theme.warning;
@@ -178,7 +179,7 @@ function runAccent(run: RunSnapshot, theme?: GraphTheme): string {
178
179
 
179
180
  function runTrailing(run: RunSnapshot, theme?: GraphTheme): { text: string; fg?: string } | undefined {
180
181
  if (isQuitRun(run)) return { text: "○ quit", fg: theme?.warning };
181
- switch (run.status) {
182
+ switch (effectiveRunStatus(run)) {
182
183
  case "completed": return { text: "✓ completed", fg: theme?.success };
183
184
  case "running": return { text: "● running", fg: theme?.warning };
184
185
  case "paused": return { text: "❚❚ paused", fg: theme?.warning };
@@ -212,7 +213,7 @@ function runCardMeta(run: RunSnapshot, now: number): string {
212
213
  : undefined;
213
214
 
214
215
  if (isQuitRun(run)) return "resumable via /workflow resume";
215
- if (run.status === "running") {
216
+ if (effectiveRunStatus(run) === "running") {
216
217
  if (isChain) parts.push(`${done}/${total}`);
217
218
  const labels = runningStageLabels(run);
218
219
  if (labels) parts.push(labels);
@@ -220,7 +221,7 @@ function runCardMeta(run: RunSnapshot, now: number): string {
220
221
  return parts.join(" · ");
221
222
  }
222
223
 
223
- if (run.status === "paused") {
224
+ if (effectiveRunStatus(run) === "paused") {
224
225
  if (isChain) parts.push(`${done}/${total}`);
225
226
  const labels = pausedStageLabels(run);
226
227
  if (labels) parts.push(labels);
@@ -228,7 +229,7 @@ function runCardMeta(run: RunSnapshot, now: number): string {
228
229
  return parts.join(" · ");
229
230
  }
230
231
 
231
- if (run.status === "failed" || run.status === "killed") {
232
+ if (effectiveRunStatus(run) === "failed" || effectiveRunStatus(run) === "killed") {
232
233
  const failed = run.stages.find((s) => s.status === "failed");
233
234
  if (failed && isChain) parts.push(`failed at ${failed.name}`);
234
235
  else if (failed) parts.push(failed.name);
@@ -239,7 +240,7 @@ function runCardMeta(run: RunSnapshot, now: number): string {
239
240
  return parts.join(" · ");
240
241
  }
241
242
 
242
- if (run.status === "completed" || run.status === "skipped" || run.status === "cancelled" || run.status === "blocked") {
243
+ if (["completed", "skipped", "cancelled", "blocked"].includes(effectiveRunStatus(run))) {
243
244
  if (run.exitReason !== undefined && run.exitReason.length > 0) parts.push(run.exitReason);
244
245
  if (!isChain && run.stages[0]) parts.push(run.stages[0].name);
245
246
  const dur = lastStageDuration(run, now);
@@ -292,7 +293,7 @@ function stageCells(run: RunSnapshot): Array<{ status: StageStatus }> {
292
293
  }
293
294
 
294
295
  function stageStatusFromRun(run: RunSnapshot): StageStatus {
295
- switch (run.status) {
296
+ switch (effectiveRunStatus(run)) {
296
297
  case "completed": return "completed";
297
298
  case "skipped": return "skipped";
298
299
  case "cancelled": return "skipped";
@@ -324,22 +325,26 @@ interface Counts {
324
325
  paused: number;
325
326
  quit: number;
326
327
  completed: number;
328
+ blocked: number;
327
329
  failed: number;
328
330
  pending: number;
329
331
  }
330
332
 
331
333
  function countBuckets(runs: readonly RunSnapshot[]): Counts {
332
- const c: Counts = { active: 0, paused: 0, quit: 0, completed: 0, failed: 0, pending: 0 };
334
+ const c: Counts = { active: 0, paused: 0, quit: 0, completed: 0, blocked: 0, failed: 0, pending: 0 };
333
335
  for (const r of runs) {
336
+ const status = effectiveRunStatus(r);
334
337
  if (isQuitRun(r)) c.quit++;
335
338
  else if (r.endedAt === undefined) {
336
- if (r.status === "pending") c.pending++;
337
- else if (r.status === "paused") c.paused++;
338
- else if (r.status === "running") c.active++;
339
- else if (r.status === "completed") c.completed++;
339
+ if (status === "pending") c.pending++;
340
+ else if (status === "paused") c.paused++;
341
+ else if (status === "running") c.active++;
342
+ else if (status === "completed") c.completed++;
343
+ else if (status === "blocked") c.blocked++;
340
344
  else c.failed++;
341
- } else if (r.status === "completed") c.completed++;
342
- else if (r.status === "skipped" || r.status === "cancelled" || r.status === "blocked") c.completed++;
345
+ } else if (status === "completed") c.completed++;
346
+ else if (status === "blocked") c.blocked++;
347
+ else if (status === "skipped" || status === "cancelled") c.completed++;
343
348
  else c.failed++;
344
349
  }
345
350
  return c;
@@ -348,6 +353,7 @@ function countBuckets(runs: readonly RunSnapshot[]): Counts {
348
353
  function themedBadges(c: Counts, theme: GraphTheme): FlatBandBadge[] {
349
354
  const out: FlatBandBadge[] = [];
350
355
  if (c.completed > 0) out.push({ text: `✓ ${c.completed}`, fg: theme.success });
356
+ if (c.blocked > 0) out.push({ text: `↑ ${c.blocked} blocked`, fg: theme.warning });
351
357
  if (c.active > 0) out.push({ text: `● ${c.active}`, fg: theme.warning });
352
358
  // Keep the word label: the pause glyph is less familiar than the other
353
359
  // status glyphs, so this intentional asymmetry improves scanability.
@@ -361,6 +367,7 @@ function themedBadges(c: Counts, theme: GraphTheme): FlatBandBadge[] {
361
367
  function plainBadges(c: Counts): FlatBandBadge[] {
362
368
  const out: FlatBandBadge[] = [];
363
369
  if (c.completed > 0) out.push({ text: `✓ ${c.completed}` });
370
+ if (c.blocked > 0) out.push({ text: `↑ ${c.blocked} blocked` });
364
371
  if (c.active > 0) out.push({ text: `● ${c.active}` });
365
372
  // Keep the word label: the pause glyph is less familiar than the other
366
373
  // status glyphs, so this intentional asymmetry improves scanability.
@@ -393,7 +400,7 @@ function emptyStateLine(theme?: GraphTheme): string {
393
400
 
394
401
  function statusIconForRun(run: RunSnapshot): string {
395
402
  if (isQuitRun(run)) return "○";
396
- switch (run.status) {
403
+ switch (effectiveRunStatus(run)) {
397
404
  case "completed": return "✓";
398
405
  case "skipped": return "⊘";
399
406
  case "cancelled": return "⊘";