@bastani/atomic 0.9.14-alpha.1 → 0.9.14-alpha.3

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 (736) hide show
  1. package/CHANGELOG.md +60 -0
  2. package/README.md +3 -3
  3. package/dist/builtin/intercom/package.json +2 -2
  4. package/dist/builtin/mcp/CHANGELOG.md +6 -0
  5. package/dist/builtin/mcp/package.json +4 -4
  6. package/dist/builtin/subagents/CHANGELOG.md +20 -0
  7. package/dist/builtin/subagents/README.md +6 -4
  8. package/dist/builtin/subagents/agents/code-simplifier.md +1 -1
  9. package/dist/builtin/subagents/agents/codebase-analyzer.md +1 -1
  10. package/dist/builtin/subagents/agents/codebase-locator.md +1 -1
  11. package/dist/builtin/subagents/agents/codebase-online-researcher.md +1 -1
  12. package/dist/builtin/subagents/agents/codebase-pattern-finder.md +1 -1
  13. package/dist/builtin/subagents/agents/codebase-research-analyzer.md +1 -1
  14. package/dist/builtin/subagents/agents/codebase-research-locator.md +1 -1
  15. package/dist/builtin/subagents/agents/debugger.md +1 -1
  16. package/dist/builtin/subagents/agents/worker.md +1 -1
  17. package/dist/builtin/subagents/package.json +6 -5
  18. package/dist/builtin/subagents/src/agents/agent-discovery.ts +17 -11
  19. package/dist/builtin/subagents/src/agents/agent-loaders.ts +115 -43
  20. package/dist/builtin/subagents/src/agents/agent-management-helpers.ts +10 -8
  21. package/dist/builtin/subagents/src/agents/agent-management.ts +8 -7
  22. package/dist/builtin/subagents/src/agents/agent-overrides.ts +2 -2
  23. package/dist/builtin/subagents/src/agents/agent-scope.ts +1 -1
  24. package/dist/builtin/subagents/src/agents/agent-selection.ts +1 -1
  25. package/dist/builtin/subagents/src/agents/agent-serializer.ts +24 -3
  26. package/dist/builtin/subagents/src/agents/agent-types.ts +3 -1
  27. package/dist/builtin/subagents/src/agents/agents.ts +7 -5
  28. package/dist/builtin/subagents/src/agents/frontmatter.ts +67 -22
  29. package/dist/builtin/subagents/src/agents/identity.ts +1 -1
  30. package/dist/builtin/subagents/src/agents/skills-paths.ts +1 -1
  31. package/dist/builtin/subagents/src/agents/skills.ts +64 -6
  32. package/dist/builtin/subagents/src/extension/config.ts +1 -1
  33. package/dist/builtin/subagents/src/extension/control-notices.ts +2 -2
  34. package/dist/builtin/subagents/src/extension/doctor.ts +15 -5
  35. package/dist/builtin/subagents/src/extension/fanout-child.ts +12 -12
  36. package/dist/builtin/subagents/src/extension/index.ts +23 -23
  37. package/dist/builtin/subagents/src/extension/notification-content.ts +1 -1
  38. package/dist/builtin/subagents/src/extension/schemas.ts +1 -1
  39. package/dist/builtin/subagents/src/extension/startup-maintenance.ts +3 -3
  40. package/dist/builtin/subagents/src/intercom/intercom-bridge.ts +3 -3
  41. package/dist/builtin/subagents/src/intercom/result-intercom.ts +1 -1
  42. package/dist/builtin/subagents/src/intercom/supervisor-authorization.ts +1 -1
  43. package/dist/builtin/subagents/src/runs/foreground/completion-notification.ts +2 -2
  44. package/dist/builtin/subagents/src/runs/foreground/execution-detach-reservations.ts +1 -1
  45. package/dist/builtin/subagents/src/runs/foreground/execution-intercom-detach.ts +3 -3
  46. package/dist/builtin/subagents/src/runs/foreground/execution-run-sync.ts +1 -1
  47. package/dist/builtin/subagents/src/runs/foreground/execution-updates.ts +2 -2
  48. package/dist/builtin/subagents/src/runs/foreground/execution-utils.ts +1 -1
  49. package/dist/builtin/subagents/src/runs/foreground/execution.ts +2 -2
  50. package/dist/builtin/subagents/src/runs/foreground/inprocess-run-sync.ts +27 -11
  51. package/dist/builtin/subagents/src/runs/foreground/notify.ts +3 -3
  52. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-context.ts +11 -11
  53. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-input.ts +3 -3
  54. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel-task.ts +15 -14
  55. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-parallel.ts +19 -19
  56. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-runtime.ts +2 -2
  57. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-single.ts +14 -13
  58. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-status.ts +9 -9
  59. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-types.ts +7 -7
  60. package/dist/builtin/subagents/src/runs/foreground/subagent-executor-worktree.ts +6 -6
  61. package/dist/builtin/subagents/src/runs/foreground/subagent-executor.ts +24 -23
  62. package/dist/builtin/subagents/src/runs/inprocess/control-registry.ts +1 -1
  63. package/dist/builtin/subagents/src/runs/inprocess/control-status.ts +3 -3
  64. package/dist/builtin/subagents/src/runs/inprocess/index.ts +3 -3
  65. package/dist/builtin/subagents/src/runs/inprocess/prompt-behavior.ts +17 -8
  66. package/dist/builtin/subagents/src/runs/inprocess/runner.ts +60 -12
  67. package/dist/builtin/subagents/src/runs/inprocess/runtime-support/nested-api.ts +8 -8
  68. package/dist/builtin/subagents/src/runs/inprocess/runtime-support/nested-control.ts +3 -3
  69. package/dist/builtin/subagents/src/runs/inprocess/runtime-support/nested-core.ts +4 -4
  70. package/dist/builtin/subagents/src/runs/inprocess/runtime-support/nested-projection.ts +4 -4
  71. package/dist/builtin/subagents/src/runs/inprocess/runtime-support/nested-registry.ts +5 -5
  72. package/dist/builtin/subagents/src/runs/inprocess/runtime-support/nested-rendering.ts +3 -3
  73. package/dist/builtin/subagents/src/runs/inprocess/runtime-support/nested-sanitize.ts +3 -3
  74. package/dist/builtin/subagents/src/runs/inprocess.ts +1 -1
  75. package/dist/builtin/subagents/src/runs/shared/long-running-guard.ts +1 -1
  76. package/dist/builtin/subagents/src/runs/shared/mcp-direct-tool-allowlist.ts +1 -1
  77. package/dist/builtin/subagents/src/runs/shared/model-candidate-filter.ts +3 -3
  78. package/dist/builtin/subagents/src/runs/shared/model-fallback.ts +2 -2
  79. package/dist/builtin/subagents/src/runs/shared/parallel-utils.ts +1 -1
  80. package/dist/builtin/subagents/src/runs/shared/single-output.ts +1 -1
  81. package/dist/builtin/subagents/src/runs/shared/subagent-control.ts +1 -1
  82. package/dist/builtin/subagents/src/shared/artifacts.ts +2 -2
  83. package/dist/builtin/subagents/src/shared/event-jsonl-writer.ts +1 -1
  84. package/dist/builtin/subagents/src/shared/fast-mode.ts +1 -1
  85. package/dist/builtin/subagents/src/shared/formatters.ts +2 -2
  86. package/dist/builtin/subagents/src/shared/jsonl-writer.ts +1 -1
  87. package/dist/builtin/subagents/src/shared/model-resolution.ts +1 -1
  88. package/dist/builtin/subagents/src/shared/session-tokens.ts +1 -1
  89. package/dist/builtin/subagents/src/shared/settings.ts +4 -4
  90. package/dist/builtin/subagents/src/shared/status-format.ts +1 -1
  91. package/dist/builtin/subagents/src/shared/types-config.ts +16 -4
  92. package/dist/builtin/subagents/src/shared/types-depth.ts +1 -1
  93. package/dist/builtin/subagents/src/shared/types-nested.ts +1 -1
  94. package/dist/builtin/subagents/src/shared/types-output.ts +1 -1
  95. package/dist/builtin/subagents/src/shared/types-results.ts +1 -1
  96. package/dist/builtin/subagents/src/shared/types-runtime.ts +1 -1
  97. package/dist/builtin/subagents/src/shared/types.ts +6 -6
  98. package/dist/builtin/subagents/src/shared/utils.ts +3 -3
  99. package/dist/builtin/subagents/src/slash/prompt-template-bridge.ts +1 -1
  100. package/dist/builtin/subagents/src/slash/slash-bridge.ts +3 -3
  101. package/dist/builtin/subagents/src/slash/slash-commands.ts +6 -6
  102. package/dist/builtin/subagents/src/slash/slash-live-state.ts +3 -3
  103. package/dist/builtin/subagents/src/tui/render-event-formatting.ts +2 -2
  104. package/dist/builtin/subagents/src/tui/render-layout.ts +1 -1
  105. package/dist/builtin/subagents/src/tui/render-progress.ts +2 -2
  106. package/dist/builtin/subagents/src/tui/render-result-compact.ts +7 -7
  107. package/dist/builtin/subagents/src/tui/render-result.ts +10 -10
  108. package/dist/builtin/subagents/src/tui/render-stable-output.ts +1 -1
  109. package/dist/builtin/subagents/src/tui/render-status-progress.ts +5 -5
  110. package/dist/builtin/subagents/src/tui/render.ts +4 -4
  111. package/dist/builtin/web-access/CHANGELOG.md +6 -0
  112. package/dist/builtin/web-access/package.json +3 -3
  113. package/dist/builtin/workflows/CHANGELOG.md +57 -0
  114. package/dist/builtin/workflows/README.md +31 -9
  115. package/dist/builtin/workflows/builtin/adversarial-verification-runner.ts +16 -5
  116. package/dist/builtin/workflows/builtin/generate-and-filter-runner.ts +12 -4
  117. package/dist/builtin/workflows/builtin/goal-models.ts +10 -10
  118. package/dist/builtin/workflows/builtin/index.d.ts +0 -4
  119. package/dist/builtin/workflows/builtin/loop-until-done-runner.ts +4 -2
  120. package/dist/builtin/workflows/builtin/open-claude-design-live-protocol.ts +305 -0
  121. package/dist/builtin/workflows/builtin/open-claude-design-phases.ts +115 -171
  122. package/dist/builtin/workflows/builtin/open-claude-design-runner.ts +10 -25
  123. package/dist/builtin/workflows/builtin/open-claude-design-setup.ts +19 -86
  124. package/dist/builtin/workflows/builtin/open-claude-design-utils.ts +0 -6
  125. package/dist/builtin/workflows/builtin/open-claude-design.d.ts +0 -5
  126. package/dist/builtin/workflows/builtin/open-claude-design.ts +7 -15
  127. package/dist/builtin/workflows/builtin/ralph-models.ts +29 -29
  128. package/dist/builtin/workflows/builtin/tournament-runner.ts +6 -3
  129. package/dist/builtin/workflows/package.json +2 -2
  130. package/dist/builtin/workflows/skills/impeccable/SKILL.md +3 -3
  131. package/dist/builtin/workflows/skills/impeccable/agents/impeccable_asset_producer.toml +25 -31
  132. package/dist/builtin/workflows/skills/impeccable/agents/impeccable_documenter.toml +1 -0
  133. package/dist/builtin/workflows/skills/impeccable/agents/impeccable_finish_reviewer.toml +16 -10
  134. package/dist/builtin/workflows/skills/impeccable/agents/impeccable_manual_edit_applier.toml +2 -2
  135. package/dist/builtin/workflows/skills/impeccable/reference/android.md +6 -0
  136. package/dist/builtin/workflows/skills/impeccable/reference/animate.md +3 -0
  137. package/dist/builtin/workflows/skills/impeccable/reference/bolder.md +3 -1
  138. package/dist/builtin/workflows/skills/impeccable/reference/craft-floor.md +6 -1
  139. package/dist/builtin/workflows/skills/impeccable/reference/critique.md +18 -2
  140. package/dist/builtin/workflows/skills/impeccable/reference/degraded/asset-producer.md +24 -30
  141. package/dist/builtin/workflows/skills/impeccable/reference/degraded/documenter.md +1 -0
  142. package/dist/builtin/workflows/skills/impeccable/reference/degraded/finish-reviewer.md +16 -10
  143. package/dist/builtin/workflows/skills/impeccable/reference/degraded/manual-edit-applier.md +2 -2
  144. package/dist/builtin/workflows/skills/impeccable/reference/distill.md +1 -1
  145. package/dist/builtin/workflows/skills/impeccable/reference/doctor.md +1 -0
  146. package/dist/builtin/workflows/skills/impeccable/reference/document.md +1 -1
  147. package/dist/builtin/workflows/skills/impeccable/reference/extract.md +1 -1
  148. package/dist/builtin/workflows/skills/impeccable/reference/hooks.md +12 -6
  149. package/dist/builtin/workflows/skills/impeccable/reference/init.md +12 -3
  150. package/dist/builtin/workflows/skills/impeccable/reference/ios.md +6 -0
  151. package/dist/builtin/workflows/skills/impeccable/reference/live-setup.md +102 -0
  152. package/dist/builtin/workflows/skills/impeccable/reference/live.md +113 -521
  153. package/dist/builtin/workflows/skills/impeccable/reference/new-work.md +39 -26
  154. package/dist/builtin/workflows/skills/impeccable/reference/overdrive.md +1 -1
  155. package/dist/builtin/workflows/skills/impeccable/reference/polish.md +3 -3
  156. package/dist/builtin/workflows/skills/impeccable/reference/quieter.md +1 -1
  157. package/dist/builtin/workflows/skills/impeccable/reference/visualize.md +25 -11
  158. package/dist/builtin/workflows/skills/impeccable/scripts/concept-seed.mjs +332 -221
  159. package/dist/builtin/workflows/skills/impeccable/scripts/context-signals.mjs +10 -19
  160. package/dist/builtin/workflows/skills/impeccable/scripts/context.mjs +91 -38
  161. package/dist/builtin/workflows/skills/impeccable/scripts/critique-storage.mjs +19 -10
  162. package/dist/builtin/workflows/skills/impeccable/scripts/detector/browser/injected/index.mjs +56 -6
  163. package/dist/builtin/workflows/skills/impeccable/scripts/detector/cli/main.mjs +10 -16
  164. package/dist/builtin/workflows/skills/impeccable/scripts/detector/design-system.mjs +140 -2
  165. package/dist/builtin/workflows/skills/impeccable/scripts/detector/detect-antipatterns-browser.js +1174 -694
  166. package/dist/builtin/workflows/skills/impeccable/scripts/detector/detect-antipatterns.mjs +1 -0
  167. package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/browser/detect-url.mjs +5 -1
  168. package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/regex/detect-text.mjs +431 -45
  169. package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/static-html/css-cascade.mjs +10 -1
  170. package/dist/builtin/workflows/skills/impeccable/scripts/detector/engines/static-html/detect-html.mjs +47 -6
  171. package/dist/builtin/workflows/skills/impeccable/scripts/detector/node/file-system.mjs +23 -22
  172. package/dist/builtin/workflows/skills/impeccable/scripts/detector/registry/antipatterns.mjs +0 -10
  173. package/dist/builtin/workflows/skills/impeccable/scripts/detector/rules/checks.mjs +384 -384
  174. package/dist/builtin/workflows/skills/impeccable/scripts/detector/shared/color.mjs +466 -2
  175. package/dist/builtin/workflows/skills/impeccable/scripts/doctor.mjs +2 -0
  176. package/dist/builtin/workflows/skills/impeccable/scripts/embed-prompt.mjs +270 -0
  177. package/dist/builtin/workflows/skills/impeccable/scripts/generate-image.mjs +51 -6
  178. package/dist/builtin/workflows/skills/impeccable/scripts/hook-admin.mjs +70 -10
  179. package/dist/builtin/workflows/skills/impeccable/scripts/hook-lib.mjs +336 -90
  180. package/dist/builtin/workflows/skills/impeccable/scripts/lib/composition-catalog.mjs +38 -3
  181. package/dist/builtin/workflows/skills/impeccable/scripts/lib/concept-catalog.mjs +77 -11
  182. package/dist/builtin/workflows/skills/impeccable/scripts/lib/design-parser.mjs +102 -19
  183. package/dist/builtin/workflows/skills/impeccable/scripts/lib/impeccable-config.mjs +44 -59
  184. package/dist/builtin/workflows/skills/impeccable/scripts/lib/is-generated.mjs +3 -0
  185. package/dist/builtin/workflows/skills/impeccable/scripts/lib/open-system-browser.mjs +57 -0
  186. package/dist/builtin/workflows/skills/impeccable/scripts/lib/roll-selection.mjs +369 -0
  187. package/dist/builtin/workflows/skills/impeccable/scripts/lib/staleness-deep.mjs +31 -3
  188. package/dist/builtin/workflows/skills/impeccable/scripts/lib/staleness.mjs +73 -2
  189. package/dist/builtin/workflows/skills/impeccable/scripts/live/accept-css.mjs +617 -0
  190. package/dist/builtin/workflows/skills/impeccable/scripts/live/accept-verify.mjs +71 -0
  191. package/dist/builtin/workflows/skills/impeccable/scripts/live/browser-script-parts.mjs +29 -2
  192. package/dist/builtin/workflows/skills/impeccable/scripts/live/event-validation.mjs +54 -7
  193. package/dist/builtin/workflows/skills/impeccable/scripts/live/frameworks/astro.mjs +47 -0
  194. package/dist/builtin/workflows/skills/impeccable/scripts/live/frameworks/detect-utils.mjs +157 -0
  195. package/dist/builtin/workflows/skills/impeccable/scripts/live/frameworks/index.mjs +143 -0
  196. package/dist/builtin/workflows/skills/impeccable/scripts/live/frameworks/journal.mjs +205 -0
  197. package/dist/builtin/workflows/skills/impeccable/scripts/live/frameworks/nextjs.mjs +49 -0
  198. package/dist/builtin/workflows/skills/impeccable/scripts/live/frameworks/nuxt.mjs +170 -0
  199. package/dist/builtin/workflows/skills/impeccable/scripts/live/frameworks/script-src.mjs +26 -0
  200. package/dist/builtin/workflows/skills/impeccable/scripts/live/frameworks/static-html.mjs +26 -0
  201. package/dist/builtin/workflows/skills/impeccable/scripts/live/frameworks/sveltekit.mjs +71 -0
  202. package/dist/builtin/workflows/skills/impeccable/scripts/live/frameworks/tag-strategy.mjs +247 -0
  203. package/dist/builtin/workflows/skills/impeccable/scripts/live/frameworks/tanstack-start.mjs +70 -0
  204. package/dist/builtin/workflows/skills/impeccable/scripts/live/frameworks/vite-generic.mjs +42 -0
  205. package/dist/builtin/workflows/skills/impeccable/scripts/live/instructions.mjs +169 -0
  206. package/dist/builtin/workflows/skills/impeccable/scripts/live/roots.mjs +670 -0
  207. package/dist/builtin/workflows/skills/impeccable/scripts/live/session-store.mjs +232 -35
  208. package/dist/builtin/workflows/skills/impeccable/scripts/live/svelte-ast.mjs +969 -0
  209. package/dist/builtin/workflows/skills/impeccable/scripts/live/svelte-component.mjs +621 -74
  210. package/dist/builtin/workflows/skills/impeccable/scripts/live/sveltekit-adapter.mjs +66 -28
  211. package/dist/builtin/workflows/skills/impeccable/scripts/live/tanstack-adapter.mjs +12 -12
  212. package/dist/builtin/workflows/skills/impeccable/scripts/live/ui-surfaces.mjs +75 -0
  213. package/dist/builtin/workflows/skills/impeccable/scripts/live/vocabulary.mjs +135 -0
  214. package/dist/builtin/workflows/skills/impeccable/scripts/live-accept.mjs +23 -37
  215. package/dist/builtin/workflows/skills/impeccable/scripts/live-browser.js +945 -115
  216. package/dist/builtin/workflows/skills/impeccable/scripts/live-complete.mjs +33 -1
  217. package/dist/builtin/workflows/skills/impeccable/scripts/live-copy-edit-agent.mjs +132 -15
  218. package/dist/builtin/workflows/skills/impeccable/scripts/live-inject.mjs +173 -425
  219. package/dist/builtin/workflows/skills/impeccable/scripts/live-insert.mjs +2 -0
  220. package/dist/builtin/workflows/skills/impeccable/scripts/live-poll.mjs +16 -3
  221. package/dist/builtin/workflows/skills/impeccable/scripts/live-resume.mjs +39 -10
  222. package/dist/builtin/workflows/skills/impeccable/scripts/live-server.mjs +194 -27
  223. package/dist/builtin/workflows/skills/impeccable/scripts/live-status.mjs +10 -4
  224. package/dist/builtin/workflows/skills/impeccable/scripts/live-wrap.mjs +50 -31
  225. package/dist/builtin/workflows/skills/impeccable/scripts/live.mjs +91 -28
  226. package/dist/builtin/workflows/skills/impeccable/scripts/pin.mjs +8 -5
  227. package/dist/builtin/workflows/skills/impeccable/scripts/serve-question.mjs +759 -109
  228. package/dist/builtin/workflows/src/durable/completed-catalog.ts +10 -0
  229. package/dist/builtin/workflows/src/durable/dbos-backend.ts +30 -17
  230. package/dist/builtin/workflows/src/durable/dbos-envelope.ts +14 -0
  231. package/dist/builtin/workflows/src/durable/dbos-lifecycle.ts +60 -57
  232. package/dist/builtin/workflows/src/durable/dbos-process-owner.ts +87 -0
  233. package/dist/builtin/workflows/src/durable/dbos-registration-diagnostics.ts +113 -0
  234. package/dist/builtin/workflows/src/durable/factory.ts +11 -8
  235. package/dist/builtin/workflows/src/durable/tool-failure-checkpoint.ts +5 -0
  236. package/dist/builtin/workflows/src/durable/tool-primitive.ts +186 -20
  237. package/dist/builtin/workflows/src/durable/types.ts +4 -0
  238. package/dist/builtin/workflows/src/engine/run-tool-control-registry.ts +9 -1
  239. package/dist/builtin/workflows/src/extension/adopt-session-run-state.ts +20 -0
  240. package/dist/builtin/workflows/src/extension/background-ui-adapter.ts +9 -30
  241. package/dist/builtin/workflows/src/extension/extension-factory.ts +3 -0
  242. package/dist/builtin/workflows/src/extension/extension-lifecycle.ts +28 -10
  243. package/dist/builtin/workflows/src/extension/index.bundle.mjs +2736 -1444
  244. package/dist/builtin/workflows/src/extension/workflow-prompts.ts +4 -1
  245. package/dist/builtin/workflows/src/extension/workflow-schema.ts +29 -5
  246. package/dist/builtin/workflows/src/extension/workflow-tool-send.ts +32 -1
  247. package/dist/builtin/workflows/src/runs/background/cancellation-registry.ts +10 -1
  248. package/dist/builtin/workflows/src/runs/background/job-tracker.ts +10 -1
  249. package/dist/builtin/workflows/src/runs/foreground/executor-hil.ts +32 -4
  250. package/dist/builtin/workflows/src/runs/foreground/executor-prompt-nodes.ts +19 -20
  251. package/dist/builtin/workflows/src/runs/foreground/executor-stage-call.ts +27 -20
  252. package/dist/builtin/workflows/src/runs/foreground/executor.ts +4 -0
  253. package/dist/builtin/workflows/src/runs/foreground/stage-control-registry.ts +31 -1
  254. package/dist/builtin/workflows/src/runs/foreground/stage-runner-context.ts +41 -10
  255. package/dist/builtin/workflows/src/runs/foreground/stage-runner-messages.ts +48 -0
  256. package/dist/builtin/workflows/src/runs/foreground/stage-runner-output.ts +4 -1
  257. package/dist/builtin/workflows/src/runs/foreground/stage-runner-structured-output.ts +45 -12
  258. package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +15 -1
  259. package/dist/builtin/workflows/src/shared/authoring-contract-ui.ts +15 -1
  260. package/dist/builtin/workflows/src/shared/graph-store-snapshot.ts +14 -2
  261. package/dist/builtin/workflows/src/shared/prompt-answer.ts +130 -0
  262. package/dist/builtin/workflows/src/shared/session-scoped-singleton.ts +98 -0
  263. package/dist/builtin/workflows/src/shared/stage-ui-broker.ts +9 -1
  264. package/dist/builtin/workflows/src/shared/store-factory.ts +9 -1
  265. package/dist/builtin/workflows/src/shared/store-public-types.ts +2 -1
  266. package/dist/builtin/workflows/src/shared/store-tool-node-methods.ts +7 -0
  267. package/dist/builtin/workflows/src/shared/store-types.ts +18 -1
  268. package/dist/builtin/workflows/src/shared/tool-payload-bounds.ts +576 -0
  269. package/dist/builtin/workflows/src/tui/graph-theme.ts +8 -1
  270. package/dist/builtin/workflows/src/tui/graph-view-constants.ts +11 -0
  271. package/dist/builtin/workflows/src/tui/graph-view-input.ts +100 -5
  272. package/dist/builtin/workflows/src/tui/graph-view-layout.ts +42 -11
  273. package/dist/builtin/workflows/src/tui/graph-view-render-helpers.ts +55 -6
  274. package/dist/builtin/workflows/src/tui/graph-view-render.ts +71 -6
  275. package/dist/builtin/workflows/src/tui/graph-view-state.ts +43 -0
  276. package/dist/builtin/workflows/src/tui/keybindings-adapter.ts +2 -0
  277. package/dist/builtin/workflows/src/tui/node-card.ts +5 -1
  278. package/dist/builtin/workflows/src/tui/stage-chat-view-archive-history.ts +11 -2
  279. package/dist/builtin/workflows/src/tui/stage-chat-view-custom-ui.ts +7 -8
  280. package/dist/builtin/workflows/src/tui/stage-chat-view.ts +36 -10
  281. package/dist/builtin/workflows/src/tui/switcher.ts +11 -4
  282. package/dist/builtin/workflows/src/tui/tool-detail.ts +348 -0
  283. package/dist/builtin/workflows/src/tui/workflow-status.ts +5 -2
  284. package/dist/cli/args.d.ts +1 -0
  285. package/dist/cli/args.d.ts.map +1 -1
  286. package/dist/cli/args.js +11 -0
  287. package/dist/cli/args.js.map +1 -1
  288. package/dist/cli/auth-check.d.ts +1 -1
  289. package/dist/cli/auth-check.js.map +1 -1
  290. package/dist/cli/credential-print.d.ts +1 -1
  291. package/dist/cli/credential-print.js.map +1 -1
  292. package/dist/cli/list-models.d.ts +1 -1
  293. package/dist/cli/list-models.js.map +1 -1
  294. package/dist/cli/startup-ui.d.ts +9 -0
  295. package/dist/cli/startup-ui.d.ts.map +1 -1
  296. package/dist/cli/startup-ui.js +7 -1
  297. package/dist/cli/startup-ui.js.map +1 -1
  298. package/dist/core/agent-session-custom-message-commit.js +2 -2
  299. package/dist/core/agent-session-custom-message-commit.js.map +1 -1
  300. package/dist/core/agent-session-export.d.ts +6 -1
  301. package/dist/core/agent-session-export.d.ts.map +1 -1
  302. package/dist/core/agent-session-export.js +6 -3
  303. package/dist/core/agent-session-export.js.map +1 -1
  304. package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
  305. package/dist/core/agent-session-extension-bindings.js +6 -4
  306. package/dist/core/agent-session-extension-bindings.js.map +1 -1
  307. package/dist/core/agent-session-methods.d.ts +5 -2
  308. package/dist/core/agent-session-methods.d.ts.map +1 -1
  309. package/dist/core/agent-session-methods.js.map +1 -1
  310. package/dist/core/agent-session-prompt.d.ts +12 -1
  311. package/dist/core/agent-session-prompt.d.ts.map +1 -1
  312. package/dist/core/agent-session-prompt.js +31 -10
  313. package/dist/core/agent-session-prompt.js.map +1 -1
  314. package/dist/core/agent-session-runtime-auth.js.map +1 -1
  315. package/dist/core/agent-session-services.d.ts +1 -1
  316. package/dist/core/agent-session-services.js.map +1 -1
  317. package/dist/core/agent-session-skill-block.d.ts +1 -0
  318. package/dist/core/agent-session-skill-block.d.ts.map +1 -1
  319. package/dist/core/agent-session-skill-block.js +18 -2
  320. package/dist/core/agent-session-skill-block.js.map +1 -1
  321. package/dist/core/agent-session-state.d.ts.map +1 -1
  322. package/dist/core/agent-session-state.js +2 -1
  323. package/dist/core/agent-session-state.js.map +1 -1
  324. package/dist/core/agent-session-types.d.ts +2 -1
  325. package/dist/core/agent-session-types.d.ts.map +1 -1
  326. package/dist/core/agent-session-types.js.map +1 -1
  327. package/dist/core/agent-session.d.ts +1 -1
  328. package/dist/core/agent-session.js.map +1 -1
  329. package/dist/core/atomic-guide-command.js +2 -2
  330. package/dist/core/atomic-guide-command.js.map +1 -1
  331. package/dist/core/builtin-packages.d.ts.map +1 -1
  332. package/dist/core/builtin-packages.js +0 -6
  333. package/dist/core/builtin-packages.js.map +1 -1
  334. package/dist/core/cloudflare-gateway-binding.d.ts +11 -0
  335. package/dist/core/cloudflare-gateway-binding.d.ts.map +1 -0
  336. package/dist/core/cloudflare-gateway-binding.js +11 -0
  337. package/dist/core/cloudflare-gateway-binding.js.map +1 -0
  338. package/dist/core/codex-fast-mode-transport.d.ts +12 -0
  339. package/dist/core/codex-fast-mode-transport.d.ts.map +1 -0
  340. package/dist/core/codex-fast-mode-transport.js +130 -0
  341. package/dist/core/codex-fast-mode-transport.js.map +1 -0
  342. package/dist/core/codex-fast-mode.d.ts +20 -6
  343. package/dist/core/codex-fast-mode.d.ts.map +1 -1
  344. package/dist/core/codex-fast-mode.js +111 -3
  345. package/dist/core/codex-fast-mode.js.map +1 -1
  346. package/dist/core/diagnostics.d.ts +4 -0
  347. package/dist/core/diagnostics.d.ts.map +1 -1
  348. package/dist/core/diagnostics.js.map +1 -1
  349. package/dist/core/event-bus.d.ts +12 -0
  350. package/dist/core/event-bus.d.ts.map +1 -1
  351. package/dist/core/event-bus.js +22 -0
  352. package/dist/core/event-bus.js.map +1 -1
  353. package/dist/core/experimental.d.ts +25 -0
  354. package/dist/core/experimental.d.ts.map +1 -1
  355. package/dist/core/experimental.js +24 -0
  356. package/dist/core/experimental.js.map +1 -1
  357. package/dist/core/export-html/template-js/tree-filter-render.js +4 -3
  358. package/dist/core/export-html/template.js +4 -3
  359. package/dist/core/extension-session-state.d.ts +28 -0
  360. package/dist/core/extension-session-state.d.ts.map +1 -0
  361. package/dist/core/extension-session-state.js +55 -0
  362. package/dist/core/extension-session-state.js.map +1 -0
  363. package/dist/core/extensions/api-types.d.ts +6 -0
  364. package/dist/core/extensions/api-types.d.ts.map +1 -1
  365. package/dist/core/extensions/api-types.js.map +1 -1
  366. package/dist/core/extensions/context-types.d.ts +4 -0
  367. package/dist/core/extensions/context-types.d.ts.map +1 -1
  368. package/dist/core/extensions/context-types.js.map +1 -1
  369. package/dist/core/extensions/loader-api.d.ts +1 -1
  370. package/dist/core/extensions/loader-api.d.ts.map +1 -1
  371. package/dist/core/extensions/loader-api.js +16 -10
  372. package/dist/core/extensions/loader-api.js.map +1 -1
  373. package/dist/core/extensions/loader-virtual-modules.d.ts.map +1 -1
  374. package/dist/core/extensions/loader-virtual-modules.js +12 -1
  375. package/dist/core/extensions/loader-virtual-modules.js.map +1 -1
  376. package/dist/core/extensions/runner-context.d.ts +2 -0
  377. package/dist/core/extensions/runner-context.d.ts.map +1 -1
  378. package/dist/core/extensions/runner-context.js +8 -0
  379. package/dist/core/extensions/runner-context.js.map +1 -1
  380. package/dist/core/extensions/runner.d.ts +1 -0
  381. package/dist/core/extensions/runner.d.ts.map +1 -1
  382. package/dist/core/extensions/runner.js +3 -0
  383. package/dist/core/extensions/runner.js.map +1 -1
  384. package/dist/core/extensions/runtime-types.d.ts +3 -0
  385. package/dist/core/extensions/runtime-types.d.ts.map +1 -1
  386. package/dist/core/extensions/runtime-types.js.map +1 -1
  387. package/dist/core/http-dispatcher.d.ts.map +1 -1
  388. package/dist/core/http-dispatcher.js +5 -0
  389. package/dist/core/http-dispatcher.js.map +1 -1
  390. package/dist/core/keybindings.d.ts +24 -0
  391. package/dist/core/keybindings.d.ts.map +1 -1
  392. package/dist/core/keybindings.js +6 -0
  393. package/dist/core/keybindings.js.map +1 -1
  394. package/dist/core/model-config.d.ts +5 -0
  395. package/dist/core/model-config.d.ts.map +1 -1
  396. package/dist/core/model-config.js +1 -0
  397. package/dist/core/model-config.js.map +1 -1
  398. package/dist/core/model-registry.d.ts +1 -1
  399. package/dist/core/model-registry.js.map +1 -1
  400. package/dist/core/model-resolver-cli.d.ts +1 -1
  401. package/dist/core/model-resolver-cli.js.map +1 -1
  402. package/dist/core/model-resolver-defaults.js +3 -3
  403. package/dist/core/model-resolver-defaults.js.map +1 -1
  404. package/dist/core/model-resolver-initial.d.ts +1 -1
  405. package/dist/core/model-resolver-initial.js.map +1 -1
  406. package/dist/core/model-resolver-scope.d.ts +1 -1
  407. package/dist/core/model-resolver-scope.js.map +1 -1
  408. package/dist/core/model-runtime.d.ts +54 -0
  409. package/dist/core/model-runtime.d.ts.map +1 -1
  410. package/dist/core/model-runtime.js +96 -13
  411. package/dist/core/model-runtime.js.map +1 -1
  412. package/dist/core/oauth-login.js.map +1 -1
  413. package/dist/core/project-trust.d.ts +10 -0
  414. package/dist/core/project-trust.d.ts.map +1 -1
  415. package/dist/core/project-trust.js +12 -0
  416. package/dist/core/project-trust.js.map +1 -1
  417. package/dist/core/resource-loader-assets.d.ts.map +1 -1
  418. package/dist/core/resource-loader-assets.js +14 -5
  419. package/dist/core/resource-loader-assets.js.map +1 -1
  420. package/dist/core/resource-loader-core.d.ts +3 -0
  421. package/dist/core/resource-loader-core.d.ts.map +1 -1
  422. package/dist/core/resource-loader-core.js +5 -0
  423. package/dist/core/resource-loader-core.js.map +1 -1
  424. package/dist/core/resource-loader-internals.d.ts +2 -0
  425. package/dist/core/resource-loader-internals.d.ts.map +1 -1
  426. package/dist/core/resource-loader-internals.js.map +1 -1
  427. package/dist/core/resource-loader-reload.d.ts.map +1 -1
  428. package/dist/core/resource-loader-reload.js +2 -0
  429. package/dist/core/resource-loader-reload.js.map +1 -1
  430. package/dist/core/resource-loader-types.d.ts +2 -0
  431. package/dist/core/resource-loader-types.d.ts.map +1 -1
  432. package/dist/core/resource-loader-types.js.map +1 -1
  433. package/dist/core/resource-loader.d.ts +2 -0
  434. package/dist/core/resource-loader.d.ts.map +1 -1
  435. package/dist/core/resource-loader.js +1 -0
  436. package/dist/core/resource-loader.js.map +1 -1
  437. package/dist/core/sdk-types.d.ts +7 -6
  438. package/dist/core/sdk-types.d.ts.map +1 -1
  439. package/dist/core/sdk-types.js.map +1 -1
  440. package/dist/core/sdk.d.ts.map +1 -1
  441. package/dist/core/sdk.js +17 -6
  442. package/dist/core/sdk.js.map +1 -1
  443. package/dist/core/session-manager-core.d.ts +7 -1
  444. package/dist/core/session-manager-core.d.ts.map +1 -1
  445. package/dist/core/session-manager-core.js +11 -2
  446. package/dist/core/session-manager-core.js.map +1 -1
  447. package/dist/core/session-manager-entries.d.ts +2 -2
  448. package/dist/core/session-manager-entries.d.ts.map +1 -1
  449. package/dist/core/session-manager-entries.js +6 -4
  450. package/dist/core/session-manager-entries.js.map +1 -1
  451. package/dist/core/session-manager-list.d.ts.map +1 -1
  452. package/dist/core/session-manager-list.js +5 -1
  453. package/dist/core/session-manager-list.js.map +1 -1
  454. package/dist/core/session-manager-types.d.ts +25 -2
  455. package/dist/core/session-manager-types.d.ts.map +1 -1
  456. package/dist/core/session-manager-types.js.map +1 -1
  457. package/dist/core/session-manager.d.ts +1 -1
  458. package/dist/core/session-manager.d.ts.map +1 -1
  459. package/dist/core/session-manager.js.map +1 -1
  460. package/dist/core/settings-manager-basic-accessors.d.ts +1 -0
  461. package/dist/core/settings-manager-basic-accessors.d.ts.map +1 -1
  462. package/dist/core/settings-manager-basic-accessors.js +8 -0
  463. package/dist/core/settings-manager-basic-accessors.js.map +1 -1
  464. package/dist/core/settings-manager-ui-accessors.d.ts +3 -1
  465. package/dist/core/settings-manager-ui-accessors.d.ts.map +1 -1
  466. package/dist/core/settings-manager-ui-accessors.js +9 -0
  467. package/dist/core/settings-manager-ui-accessors.js.map +1 -1
  468. package/dist/core/settings-manager.d.ts +1 -1
  469. package/dist/core/settings-manager.d.ts.map +1 -1
  470. package/dist/core/settings-manager.js.map +1 -1
  471. package/dist/core/settings-types.d.ts +4 -0
  472. package/dist/core/settings-types.d.ts.map +1 -1
  473. package/dist/core/settings-types.js.map +1 -1
  474. package/dist/core/skill-catalog.d.ts +35 -0
  475. package/dist/core/skill-catalog.d.ts.map +1 -0
  476. package/dist/core/skill-catalog.js +264 -0
  477. package/dist/core/skill-catalog.js.map +1 -0
  478. package/dist/core/skills-async.d.ts.map +1 -1
  479. package/dist/core/skills-async.js +12 -6
  480. package/dist/core/skills-async.js.map +1 -1
  481. package/dist/core/skills.d.ts +2 -0
  482. package/dist/core/skills.d.ts.map +1 -1
  483. package/dist/core/skills.js +8 -5
  484. package/dist/core/skills.js.map +1 -1
  485. package/dist/core/slash-commands.d.ts.map +1 -1
  486. package/dist/core/slash-commands.js +1 -5
  487. package/dist/core/slash-commands.js.map +1 -1
  488. package/dist/core/system-prompt.js +2 -2
  489. package/dist/core/system-prompt.js.map +1 -1
  490. package/dist/core/tools/ask-user-question/ask-user-question.d.ts +7 -3
  491. package/dist/core/tools/ask-user-question/ask-user-question.d.ts.map +1 -1
  492. package/dist/core/tools/ask-user-question/ask-user-question.js +15 -10
  493. package/dist/core/tools/ask-user-question/ask-user-question.js.map +1 -1
  494. package/dist/core/tools/ask-user-question/state/build-questionnaire.d.ts +1 -0
  495. package/dist/core/tools/ask-user-question/state/build-questionnaire.d.ts.map +1 -1
  496. package/dist/core/tools/ask-user-question/state/build-questionnaire.js +1 -0
  497. package/dist/core/tools/ask-user-question/state/build-questionnaire.js.map +1 -1
  498. package/dist/core/tools/ask-user-question/state/key-router.d.ts.map +1 -1
  499. package/dist/core/tools/ask-user-question/state/key-router.js +3 -1
  500. package/dist/core/tools/ask-user-question/state/key-router.js.map +1 -1
  501. package/dist/core/tools/ask-user-question/state/questionnaire-session.d.ts +3 -0
  502. package/dist/core/tools/ask-user-question/state/questionnaire-session.d.ts.map +1 -1
  503. package/dist/core/tools/ask-user-question/state/questionnaire-session.js +3 -0
  504. package/dist/core/tools/ask-user-question/state/questionnaire-session.js.map +1 -1
  505. package/dist/core/tools/ask-user-question/state/state-reducer.d.ts +1 -0
  506. package/dist/core/tools/ask-user-question/state/state-reducer.d.ts.map +1 -1
  507. package/dist/core/tools/ask-user-question/state/state-reducer.js +3 -1
  508. package/dist/core/tools/ask-user-question/state/state-reducer.js.map +1 -1
  509. package/dist/core/tools/ask-user-question/view/components/chat-row-view.d.ts +2 -0
  510. package/dist/core/tools/ask-user-question/view/components/chat-row-view.d.ts.map +1 -1
  511. package/dist/core/tools/ask-user-question/view/components/chat-row-view.js +1 -0
  512. package/dist/core/tools/ask-user-question/view/components/chat-row-view.js.map +1 -1
  513. package/dist/core/tools/ask-user-question/view/components/wrapping-select.d.ts +3 -0
  514. package/dist/core/tools/ask-user-question/view/components/wrapping-select.d.ts.map +1 -1
  515. package/dist/core/tools/ask-user-question/view/components/wrapping-select.js +2 -1
  516. package/dist/core/tools/ask-user-question/view/components/wrapping-select.js.map +1 -1
  517. package/dist/core/tools/bash.d.ts.map +1 -1
  518. package/dist/core/tools/bash.js +2 -0
  519. package/dist/core/tools/bash.js.map +1 -1
  520. package/dist/core/tools/edit-batch.d.ts +33 -0
  521. package/dist/core/tools/edit-batch.d.ts.map +1 -0
  522. package/dist/core/tools/edit-batch.js +89 -0
  523. package/dist/core/tools/edit-batch.js.map +1 -0
  524. package/dist/core/tools/edit.d.ts +1 -1
  525. package/dist/core/tools/edit.d.ts.map +1 -1
  526. package/dist/core/tools/edit.js +100 -42
  527. package/dist/core/tools/edit.js.map +1 -1
  528. package/dist/core/tools/find.d.ts.map +1 -1
  529. package/dist/core/tools/find.js +3 -1
  530. package/dist/core/tools/find.js.map +1 -1
  531. package/dist/core/tools/grep.js +1 -1
  532. package/dist/core/tools/grep.js.map +1 -1
  533. package/dist/core/tools/hashline-engine/format.d.ts +2 -0
  534. package/dist/core/tools/hashline-engine/format.d.ts.map +1 -1
  535. package/dist/core/tools/hashline-engine/format.js +4 -2
  536. package/dist/core/tools/hashline-engine/format.js.map +1 -1
  537. package/dist/core/tools/hashline-engine/messages.d.ts +2 -0
  538. package/dist/core/tools/hashline-engine/messages.d.ts.map +1 -1
  539. package/dist/core/tools/hashline-engine/messages.js +4 -2
  540. package/dist/core/tools/hashline-engine/messages.js.map +1 -1
  541. package/dist/core/tools/hashline-engine/parser.d.ts.map +1 -1
  542. package/dist/core/tools/hashline-engine/parser.js +16 -4
  543. package/dist/core/tools/hashline-engine/parser.js.map +1 -1
  544. package/dist/core/tools/hashline-engine/tokenizer.d.ts.map +1 -1
  545. package/dist/core/tools/hashline-engine/tokenizer.js +37 -27
  546. package/dist/core/tools/hashline-engine/tokenizer.js.map +1 -1
  547. package/dist/core/tools/hashline.d.ts.map +1 -1
  548. package/dist/core/tools/hashline.js +8 -2
  549. package/dist/core/tools/hashline.js.map +1 -1
  550. package/dist/core/tools/ls.d.ts.map +1 -1
  551. package/dist/core/tools/ls.js +2 -0
  552. package/dist/core/tools/ls.js.map +1 -1
  553. package/dist/core/tools/read.d.ts.map +1 -1
  554. package/dist/core/tools/read.js +8 -1
  555. package/dist/core/tools/read.js.map +1 -1
  556. package/dist/core/tools/search.d.ts.map +1 -1
  557. package/dist/core/tools/search.js +2 -0
  558. package/dist/core/tools/search.js.map +1 -1
  559. package/dist/core/tools/todos.d.ts +3 -12
  560. package/dist/core/tools/todos.d.ts.map +1 -1
  561. package/dist/core/tools/todos.js +19 -4
  562. package/dist/core/tools/todos.js.map +1 -1
  563. package/dist/core/tools/write.d.ts.map +1 -1
  564. package/dist/core/tools/write.js +2 -0
  565. package/dist/core/tools/write.js.map +1 -1
  566. package/dist/index.d.ts +8 -5
  567. package/dist/index.d.ts.map +1 -1
  568. package/dist/index.js +6 -2
  569. package/dist/index.js.map +1 -1
  570. package/dist/main-runtime-api-key.d.ts +1 -1
  571. package/dist/main-runtime-api-key.js.map +1 -1
  572. package/dist/main-session-options.d.ts +1 -1
  573. package/dist/main-session-options.js.map +1 -1
  574. package/dist/main.d.ts.map +1 -1
  575. package/dist/main.js +10 -2
  576. package/dist/main.js.map +1 -1
  577. package/dist/modes/interactive/components/chat-session-host-rendering.js +1 -1
  578. package/dist/modes/interactive/components/chat-session-host-rendering.js.map +1 -1
  579. package/dist/modes/interactive/components/chat-session-host-state.d.ts +8 -0
  580. package/dist/modes/interactive/components/chat-session-host-state.d.ts.map +1 -1
  581. package/dist/modes/interactive/components/chat-session-host-state.js +8 -0
  582. package/dist/modes/interactive/components/chat-session-host-state.js.map +1 -1
  583. package/dist/modes/interactive/components/chat-session-host.d.ts +26 -0
  584. package/dist/modes/interactive/components/chat-session-host.d.ts.map +1 -1
  585. package/dist/modes/interactive/components/chat-session-host.js +38 -0
  586. package/dist/modes/interactive/components/chat-session-host.js.map +1 -1
  587. package/dist/modes/interactive/components/chat-transcript.d.ts +37 -0
  588. package/dist/modes/interactive/components/chat-transcript.d.ts.map +1 -1
  589. package/dist/modes/interactive/components/chat-transcript.js +54 -1
  590. package/dist/modes/interactive/components/chat-transcript.js.map +1 -1
  591. package/dist/modes/interactive/components/fast-mode-selector.js +1 -1
  592. package/dist/modes/interactive/components/fast-mode-selector.js.map +1 -1
  593. package/dist/modes/interactive/components/model-selector.d.ts +1 -1
  594. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  595. package/dist/modes/interactive/components/model-selector.js +2 -1
  596. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  597. package/dist/modes/interactive/components/oauth-selector.d.ts +1 -1
  598. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  599. package/dist/modes/interactive/components/session-selector-search.d.ts +4 -0
  600. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
  601. package/dist/modes/interactive/components/session-selector-search.js +4 -0
  602. package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
  603. package/dist/modes/interactive/components/settings-selector-handlers.d.ts.map +1 -1
  604. package/dist/modes/interactive/components/settings-selector-handlers.js +3 -0
  605. package/dist/modes/interactive/components/settings-selector-handlers.js.map +1 -1
  606. package/dist/modes/interactive/components/settings-selector-items.d.ts.map +1 -1
  607. package/dist/modes/interactive/components/settings-selector-items.js +7 -0
  608. package/dist/modes/interactive/components/settings-selector-items.js.map +1 -1
  609. package/dist/modes/interactive/components/settings-selector-types.d.ts +3 -1
  610. package/dist/modes/interactive/components/settings-selector-types.d.ts.map +1 -1
  611. package/dist/modes/interactive/components/settings-selector-types.js.map +1 -1
  612. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  613. package/dist/modes/interactive/components/tool-execution.js +12 -1
  614. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  615. package/dist/modes/interactive/interactive-auth-login.js.map +1 -1
  616. package/dist/modes/interactive/interactive-auth-routing.js.map +1 -1
  617. package/dist/modes/interactive/interactive-autocomplete.js +5 -4
  618. package/dist/modes/interactive/interactive-autocomplete.js.map +1 -1
  619. package/dist/modes/interactive/interactive-bash-compact.d.ts.map +1 -1
  620. package/dist/modes/interactive/interactive-bash-compact.js +2 -2
  621. package/dist/modes/interactive/interactive-bash-compact.js.map +1 -1
  622. package/dist/modes/interactive/interactive-extension-custom-ui.js +2 -2
  623. package/dist/modes/interactive/interactive-extension-custom-ui.js.map +1 -1
  624. package/dist/modes/interactive/interactive-mode-base.d.ts +38 -3
  625. package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
  626. package/dist/modes/interactive/interactive-mode-base.js +75 -10
  627. package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
  628. package/dist/modes/interactive/interactive-mode-surface.d.ts +7 -1
  629. package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
  630. package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
  631. package/dist/modes/interactive/interactive-mode-types.d.ts +2 -0
  632. package/dist/modes/interactive/interactive-mode-types.d.ts.map +1 -1
  633. package/dist/modes/interactive/interactive-mode-types.js.map +1 -1
  634. package/dist/modes/interactive/interactive-model-catalog-startup.d.ts +8 -1
  635. package/dist/modes/interactive/interactive-model-catalog-startup.d.ts.map +1 -1
  636. package/dist/modes/interactive/interactive-model-catalog-startup.js +13 -3
  637. package/dist/modes/interactive/interactive-model-catalog-startup.js.map +1 -1
  638. package/dist/modes/interactive/interactive-model-routing.js +3 -4
  639. package/dist/modes/interactive/interactive-model-routing.js.map +1 -1
  640. package/dist/modes/interactive/interactive-render-chat.js +6 -0
  641. package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
  642. package/dist/modes/interactive/interactive-resource-disclosure.js +2 -2
  643. package/dist/modes/interactive/interactive-resource-disclosure.js.map +1 -1
  644. package/dist/modes/interactive/interactive-selectors.js +7 -3
  645. package/dist/modes/interactive/interactive-selectors.js.map +1 -1
  646. package/dist/modes/interactive/interactive-session-runtime.js +7 -1
  647. package/dist/modes/interactive/interactive-session-runtime.js.map +1 -1
  648. package/dist/modes/interactive/interactive-slash-commands.js +2 -2
  649. package/dist/modes/interactive/interactive-slash-commands.js.map +1 -1
  650. package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
  651. package/dist/modes/interactive/interactive-startup.js +34 -9
  652. package/dist/modes/interactive/interactive-startup.js.map +1 -1
  653. package/dist/modes/interactive/interactive-tui.d.ts +18 -1
  654. package/dist/modes/interactive/interactive-tui.d.ts.map +1 -1
  655. package/dist/modes/interactive/interactive-tui.js +126 -38
  656. package/dist/modes/interactive/interactive-tui.js.map +1 -1
  657. package/dist/modes/interactive/model-catalog-refresh.d.ts +17 -0
  658. package/dist/modes/interactive/model-catalog-refresh.d.ts.map +1 -0
  659. package/dist/modes/interactive/model-catalog-refresh.js +84 -0
  660. package/dist/modes/interactive/model-catalog-refresh.js.map +1 -0
  661. package/dist/modes/interactive/theme/dark.json +2 -0
  662. package/dist/modes/interactive/theme/light.json +2 -0
  663. package/dist/modes/interactive/theme/theme-class.d.ts +12 -3
  664. package/dist/modes/interactive/theme/theme-class.d.ts.map +1 -1
  665. package/dist/modes/interactive/theme/theme-class.js +6 -1
  666. package/dist/modes/interactive/theme/theme-class.js.map +1 -1
  667. package/dist/modes/interactive/theme/theme-controller.d.ts +10 -2
  668. package/dist/modes/interactive/theme/theme-controller.d.ts.map +1 -1
  669. package/dist/modes/interactive/theme/theme-controller.js +23 -10
  670. package/dist/modes/interactive/theme/theme-controller.js.map +1 -1
  671. package/dist/modes/interactive/theme/theme-loading.d.ts.map +1 -1
  672. package/dist/modes/interactive/theme/theme-loading.js +1 -0
  673. package/dist/modes/interactive/theme/theme-loading.js.map +1 -1
  674. package/dist/modes/interactive/theme/theme-schema.d.ts +8 -0
  675. package/dist/modes/interactive/theme/theme-schema.d.ts.map +1 -1
  676. package/dist/modes/interactive/theme/theme-schema.js +3 -1
  677. package/dist/modes/interactive/theme/theme-schema.js.map +1 -1
  678. package/dist/modes/interactive/theme/theme-schema.json +9 -1
  679. package/dist/modes/json-event.d.ts +6 -1
  680. package/dist/modes/json-event.d.ts.map +1 -1
  681. package/dist/modes/json-event.js +17 -2
  682. package/dist/modes/json-event.js.map +1 -1
  683. package/dist/modes/rpc/rpc-client.js.map +1 -1
  684. package/dist/modes/rpc/rpc-command-handler.d.ts.map +1 -1
  685. package/dist/modes/rpc/rpc-command-handler.js +5 -4
  686. package/dist/modes/rpc/rpc-command-handler.js.map +1 -1
  687. package/dist/modes/rpc/rpc-provider-auth.js.map +1 -1
  688. package/dist/modes/rpc/rpc-responses.js.map +1 -1
  689. package/dist/modes/rpc/rpc-types.d.ts +1 -1
  690. package/dist/modes/rpc/rpc-types.js.map +1 -1
  691. package/dist/package-manager-cli.js.map +1 -1
  692. package/dist/server/create-harness.d.ts.map +1 -1
  693. package/dist/server/create-harness.js +11 -0
  694. package/dist/server/create-harness.js.map +1 -1
  695. package/dist/utils/abort.d.ts +9 -0
  696. package/dist/utils/abort.d.ts.map +1 -0
  697. package/dist/utils/abort.js +19 -0
  698. package/dist/utils/abort.js.map +1 -0
  699. package/dist/utils/tools-manager.d.ts +16 -1
  700. package/dist/utils/tools-manager.d.ts.map +1 -1
  701. package/dist/utils/tools-manager.js +19 -19
  702. package/dist/utils/tools-manager.js.map +1 -1
  703. package/docs/custom-provider.md +9 -8
  704. package/docs/development.md +0 -1
  705. package/docs/docs.json +0 -1
  706. package/docs/environment-variables.md +3 -0
  707. package/docs/extensions.md +73 -2
  708. package/docs/json.md +3 -1
  709. package/docs/keybindings.md +7 -3
  710. package/docs/models/artificial-analysis-index.md +2 -2
  711. package/docs/models/model-selection.md +32 -23
  712. package/docs/models/pareto-efficiency.md +25 -24
  713. package/docs/providers.md +95 -2
  714. package/docs/quickstart.md +4 -2
  715. package/docs/rpc.md +21 -7
  716. package/docs/sdk.md +26 -1
  717. package/docs/session-format.md +5 -2
  718. package/docs/settings.md +34 -3
  719. package/docs/skills.md +16 -1
  720. package/docs/terminal-setup.md +15 -2
  721. package/docs/themes.md +22 -4
  722. package/docs/tools.md +4 -2
  723. package/docs/tui.md +2 -0
  724. package/docs/usage.md +5 -4
  725. package/docs/workflows.md +65 -22
  726. package/npm-shrinkwrap.json +247 -253
  727. package/package.json +11 -11
  728. package/dist/builtin/i-have-adhd/CHANGELOG.md +0 -30
  729. package/dist/builtin/i-have-adhd/LICENSE +0 -21
  730. package/dist/builtin/i-have-adhd/README.md +0 -18
  731. package/dist/builtin/i-have-adhd/index.ts +0 -238
  732. package/dist/builtin/i-have-adhd/package.json +0 -56
  733. package/dist/builtin/i-have-adhd/skills/i-have-adhd/SKILL.md +0 -140
  734. package/dist/builtin/workflows/builtin/open-claude-design-feedback.ts +0 -359
  735. package/dist/builtin/workflows/skills/impeccable/scripts/live/ui-core.mjs +0 -180
  736. package/docs/i-have-adhd.md +0 -36
@@ -21,20 +21,16 @@ export type OpenClaudeDesignOutputType = "prototype" | "wireframe" | "page" | "c
21
21
  export type OpenClaudeDesignWorkflowInputs = {
22
22
  readonly prompt: string;
23
23
  readonly discover_references: boolean;
24
- readonly max_refinements: number;
25
24
  };
26
25
  export type OpenClaudeDesignWorkflowRunInputs = {
27
26
  readonly prompt: string;
28
27
  readonly discover_references?: boolean;
29
- readonly max_refinements?: number;
30
28
  };
31
29
  export type OpenClaudeDesignWorkflowOutputs = WorkflowOutputValues & {
32
30
  readonly output_type?: string;
33
31
  readonly design_system?: string;
34
32
  readonly artifact?: string;
35
33
  readonly handoff?: string;
36
- readonly approved_for_export?: boolean;
37
- readonly refinements_completed?: number;
38
34
  readonly import_context?: string;
39
35
  readonly run_id?: string;
40
36
  readonly artifact_dir?: string;
@@ -129,10 +129,12 @@ export async function runLoopUntilDone(ctx: WorkflowRunContext<LoopInputs>) {
129
129
  context: "fresh",
130
130
  reads: [ledgerPath, iterationPath],
131
131
  schema: evaluationSchema,
132
- output: evaluationPath,
133
- outputMode: "file-only",
134
132
  });
135
133
  const decision = evaluationFrom(evaluator);
134
+ // Evaluation reports are declared workflow outputs consumed as data: the
135
+ // runner persists the structured decision itself so evaluation-N.json
136
+ // stays schema-shaped JSON rather than stage prose.
137
+ await writeFile(evaluationPath, `${JSON.stringify(evaluator.structured, null, 2)}\n`);
136
138
  entries.push({
137
139
  iteration,
138
140
  artifact_path: iterationPath,
@@ -0,0 +1,305 @@
1
+ /**
2
+ * open-claude-design ⇄ impeccable live protocol.
3
+ *
4
+ * In a chat session the agent owns the live poll loop, and "the review is over"
5
+ * needs no ceremony because the user simply keeps talking. A workflow stage
6
+ * boundary is a commit point, and the live contract's `"timeout" -> LOOP` is an
7
+ * instruction to a model rather than a constraint: a stage that concludes on a
8
+ * poll timeout would end a review the user never finished.
9
+ *
10
+ * So the workflow drives the protocol instead. Polling and replying are durable
11
+ * `ctx.tool` nodes; the model is invoked only for the events that need it
12
+ * (`generate`, `steer`, `manual_edit_apply`, and mount failures). Termination
13
+ * stops being a judgment and becomes the helper's own `exit` event.
14
+ *
15
+ * `timeout` is absorbed here rather than surfaced, so an idle hour costs no
16
+ * graph nodes. Every poll/reply invocation must, however, exit successfully;
17
+ * helper failures are surfaced instead of being mistaken for another timeout.
18
+ */
19
+
20
+ import { spawn } from "node:child_process";
21
+ import { fileURLToPath } from "node:url";
22
+
23
+ /** JSON values emitted by the live helper. */
24
+ export type JsonValue = string | number | boolean | null | readonly JsonValue[] | { readonly [key: string]: JsonValue };
25
+
26
+ /** Events the live helper delivers. Anything unknown is treated as ignorable. */
27
+ export type LiveEventType =
28
+ | "generate"
29
+ | "steer"
30
+ | "accept"
31
+ | "discard"
32
+ | "prefetch"
33
+ | "manual_edit_apply"
34
+ | "variant_mounted"
35
+ | "variant_mount_failed"
36
+ | "timeout"
37
+ | "exit";
38
+
39
+ export type LiveEvent = {
40
+ readonly type: LiveEventType | string;
41
+ readonly id?: string;
42
+ readonly variant?: number;
43
+ readonly variantId?: string;
44
+ readonly url?: string;
45
+ readonly pageUrl?: string;
46
+ readonly error?: string;
47
+ readonly file?: string;
48
+ readonly sourceFile?: string;
49
+ readonly message?: string;
50
+ readonly data?: JsonValue;
51
+ readonly screenshot?: string;
52
+ readonly raw: string;
53
+ /** Preserve additional upstream event fields without narrowing their JSON shape. */
54
+ readonly [key: string]: JsonValue | undefined;
55
+ };
56
+
57
+ /** Events the model must handle before the loop may reply and poll again. */
58
+ const MODEL_EVENTS = new Set<string>(["generate", "steer", "manual_edit_apply", "variant_mount_failed"]);
59
+
60
+ export function needsModel(event: LiveEvent): boolean {
61
+ return MODEL_EVENTS.has(event.type);
62
+ }
63
+
64
+ /** Reply status the helper expects for each model-handled event. */
65
+ export function replyTokenFor(event: LiveEvent): string {
66
+ if (event.type === "steer") return "steer_done";
67
+ return "done";
68
+ }
69
+
70
+ const LEGACY_REPLY_STATUSES = new Set(["done", "error", "complete", "discard", "discarded"]);
71
+
72
+ function isJsonObject(value: JsonValue): value is { readonly [key: string]: JsonValue } {
73
+ return typeof value === "object" && value !== null && !Array.isArray(value);
74
+ }
75
+
76
+ /** Last JSON object printed by a live script, which is the event payload. */
77
+ export function parseLiveEvent(stdout: string): LiveEvent {
78
+ const lines = stdout.split(/\r?\n/).filter((line) => line.trim().startsWith("{"));
79
+ for (const line of [...lines].reverse()) {
80
+ try {
81
+ const parsed = JSON.parse(line) as JsonValue;
82
+ if (!isJsonObject(parsed) || typeof parsed.type !== "string") continue;
83
+ // Keep the complete JSON event, not only the fields known by the old
84
+ // protocol. 4.1.1 adds mount diagnostics and structured reply data.
85
+ return { ...parsed, type: parsed.type, raw: line } as LiveEvent;
86
+ } catch {
87
+ /* not the event line */
88
+ }
89
+ }
90
+ // An unreadable poll is not an ending. Treat it as a timeout so the caller
91
+ // polls again rather than concluding a review nobody finished.
92
+ return { type: "timeout", raw: stdout };
93
+ }
94
+
95
+ export type LivePollDeps = {
96
+ readonly run?: (scriptPath: string, args: readonly string[], cwd: string, signal?: AbortSignal) => Promise<ScriptResult>;
97
+ };
98
+
99
+ export type LiveReplyInput = {
100
+ readonly workflowCwd: string;
101
+ readonly event: LiveEvent;
102
+ readonly status?: string;
103
+ /** Source/manifest path accepted by generate and mount-failure replies. */
104
+ readonly file?: string;
105
+ /** The helper's positional message argument (there is no --message flag). */
106
+ readonly message?: string;
107
+ /** Structured result accepted by manual_edit_apply replies. */
108
+ readonly data?: JsonValue;
109
+ readonly signal?: AbortSignal;
110
+ readonly deps?: LivePollDeps;
111
+ };
112
+
113
+ function assertSuccessfulScript(result: ScriptResult, operation: string): ScriptResult {
114
+ if (result.code !== 0) {
115
+ const details = result.stderr.length > 0 ? `: ${result.stderr}` : "";
116
+ throw new Error(`${operation} failed with exit code ${result.code}${details}`);
117
+ }
118
+ return result;
119
+ }
120
+
121
+ /**
122
+ * Poll until the helper delivers an event that matters. `timeout` events and
123
+ * unreadable output loop internally, so callers only ever see substantive
124
+ * events or `exit`.
125
+ */
126
+ export async function pollLiveEvent(input: {
127
+ readonly workflowCwd: string;
128
+ readonly signal?: AbortSignal;
129
+ readonly deps?: LivePollDeps;
130
+ }): Promise<LiveEvent> {
131
+ const script = liveScriptPath("live-poll.mjs");
132
+ const run = input.deps?.run ?? runNodeScript;
133
+ for (;;) {
134
+ if (input.signal?.aborted === true) return { type: "exit", raw: "aborted" };
135
+ const result = assertSuccessfulScript(await run(script, [], input.workflowCwd, input.signal), "live poll");
136
+ const event = parseLiveEvent(result.stdout);
137
+ if (event.type !== "timeout") return event;
138
+ }
139
+ }
140
+
141
+ /** Acknowledge a model-handled event so the helper unblocks the overlay. */
142
+ export async function replyLiveEvent(input: LiveReplyInput): Promise<ScriptResult> {
143
+ const id = input.event.id;
144
+ if (typeof id !== "string" || id.length === 0 || id.startsWith("--")) {
145
+ throw new Error(`Cannot reply to ${input.event.type}: live event id is missing`);
146
+ }
147
+ if (LEGACY_REPLY_STATUSES.has(id)) {
148
+ throw new Error(`Cannot reply to live event ${id}: expected an event id before the reply status`);
149
+ }
150
+ const status = input.status ?? replyTokenFor(input.event);
151
+ if (status.length === 0 || status.startsWith("--")) {
152
+ throw new Error(`Cannot reply to live event ${id}: reply status is missing`);
153
+ }
154
+ const args = ["--reply", id, status];
155
+ const file = input.file ?? input.event.file;
156
+ const message = input.message ?? input.event.message;
157
+ const data = input.data ?? input.event.data;
158
+ if (file !== undefined) args.push("--file", file);
159
+ if (data !== undefined) args.push("--data", JSON.stringify(data));
160
+ if (message !== undefined) args.push(message);
161
+ const script = liveScriptPath("live-poll.mjs");
162
+ const run = input.deps?.run ?? runNodeScript;
163
+ return assertSuccessfulScript(await run(script, args, input.workflowCwd, input.signal), "live reply");
164
+ }
165
+
166
+ /**
167
+ * Absolute path to one of the impeccable live scripts.
168
+ *
169
+ * Always the copy that ships inside this package — `packages/workflows/skills`
170
+ * in the repository, `dist/builtin/workflows/skills` once bundled — which sits
171
+ * one level up from this module in both layouts, so `import.meta.url` finds it
172
+ * without the host naming a path.
173
+ *
174
+ * A project-vendored copy is deliberately NOT consulted. The workflow drives
175
+ * this protocol directly: it depends on `live-poll.mjs`'s CLI surface, its
176
+ * `--reply` tokens, and its JSON event vocabulary. The bundled scripts ship and
177
+ * are tested with this code, so they cannot drift from it; a forked copy in a
178
+ * project could, and would break the loop in ways no test here would catch.
179
+ */
180
+ export function liveScriptPath(script: string): string {
181
+ return fileURLToPath(new URL(`../skills/impeccable/scripts/${script}`, import.meta.url));
182
+ }
183
+
184
+ export type ScriptResult = { readonly code: number; readonly stdout: string; readonly stderr: string };
185
+
186
+ function runNodeScript(
187
+ scriptPath: string,
188
+ args: readonly string[],
189
+ cwd: string,
190
+ signal?: AbortSignal,
191
+ ): Promise<ScriptResult> {
192
+ return new Promise((resolve, reject) => {
193
+ const child = spawn(process.execPath, [scriptPath, ...args], {
194
+ cwd,
195
+ env: { ...process.env, GH_PAGER: "cat" },
196
+ stdio: ["ignore", "pipe", "pipe"],
197
+ });
198
+ let stdout = "";
199
+ let stderr = "";
200
+ let settled = false;
201
+ const onAbort = () => child.kill("SIGTERM");
202
+ signal?.addEventListener("abort", onAbort, { once: true });
203
+ child.stdout.on("data", (chunk: Buffer) => {
204
+ stdout += chunk.toString();
205
+ });
206
+ child.stderr.on("data", (chunk: Buffer) => {
207
+ stderr += chunk.toString();
208
+ });
209
+ child.on("error", (error) => {
210
+ if (settled) return;
211
+ settled = true;
212
+ signal?.removeEventListener("abort", onAbort);
213
+ reject(error);
214
+ });
215
+ child.on("close", (code) => {
216
+ if (settled) return;
217
+ settled = true;
218
+ signal?.removeEventListener("abort", onAbort);
219
+ resolve({ code: code ?? -1, stdout: stdout.trim(), stderr: stderr.trim() });
220
+ });
221
+ });
222
+ }
223
+ /** Prompt for the stage that handles one live event. */
224
+ export function buildLiveEventPrompt(input: {
225
+ readonly event: LiveEvent;
226
+ readonly previewPath: string;
227
+ }): string {
228
+ const shared = [
229
+ `<live_event>\n${input.event.raw}\n</live_event>`,
230
+ `<preview_path>${input.previewPath}</preview_path>`,
231
+ "<role>You are an opinionated staff design engineer inside an impeccable `live` session. The workflow owns the poll loop; handle exactly this one event and stop.</role>",
232
+ ];
233
+ if (input.event.type === "generate") {
234
+ return [
235
+ ...shared,
236
+ [
237
+ "<instructions>",
238
+ "Follow the live contract for a `generate` event:",
239
+ "1. Reuse `event.scaffold` when present and read the annotation screenshot when one is attached.",
240
+ "2. Extract the page identity FIRST, then produce three DISTINCT on-brand variants and publish them for the user to preview.",
241
+ "3. Apply the craft floors by construction as you write. Do not screenshot, re-render, or QA between generate and accept; the overlay preview is the verification channel.",
242
+ "Do not poll, do not reply, and do not exit the session: the workflow does that. Stop as soon as the variants are published.",
243
+ "</instructions>",
244
+ ].join("\n"),
245
+ ].join("\n\n");
246
+ }
247
+ if (input.event.type === "steer") {
248
+ return [
249
+ ...shared,
250
+ [
251
+ "<instructions>",
252
+ "Follow the live contract for a `steer` event: read the message and pageUrl, then do the work — page edits, navigation help, or a short answer.",
253
+ "Do not poll, do not reply, and do not exit the session: the workflow does that. Stop when the steer is handled.",
254
+ "</instructions>",
255
+ ].join("\n"),
256
+ ].join("\n\n");
257
+ }
258
+ if (input.event.type === "variant_mount_failed") {
259
+ return [
260
+ ...shared,
261
+ [
262
+ "<instructions>",
263
+ "The browser could not mount the published variant. Inspect the reported variant source/module, fix the compile or runtime failure, and stop after the repair.",
264
+ "Do not poll, do not reply, and do not exit the session: the workflow does that.",
265
+ ].join("\n"),
266
+ ].join("\n\n");
267
+ }
268
+ return [
269
+ ...shared,
270
+ [
271
+ "<instructions>",
272
+ "Apply this manual edit event per the live contract, then stop. Do not poll, reply, or exit; the workflow does that.",
273
+ "</instructions>",
274
+ ].join("\n"),
275
+ ].join("\n\n");
276
+ }
277
+
278
+ /** Prompt for the stage that boots the session and hands the loop back to the workflow. */
279
+ export function buildLiveSessionStartPrompt(input: {
280
+ readonly previewPath: string;
281
+ readonly previewFileUrl: string;
282
+ readonly browserBootstrapRules: string;
283
+ readonly round: number;
284
+ }): string {
285
+ return [
286
+ `<preview_path>${input.previewPath}</preview_path>`,
287
+ `<preview_file_url>${input.previewFileUrl}</preview_file_url>`,
288
+ `<browser_use_guidelines>${input.browserBootstrapRules}</browser_use_guidelines>`,
289
+ "<role>You are an opinionated staff design engineer opening an impeccable `live` review session.</role>",
290
+ [
291
+ "<objective>",
292
+ `Start review session ${input.round}: boot live against the static preview and open it in the user's browser. Then STOP.`,
293
+ "</objective>",
294
+ ].join("\n"),
295
+ [
296
+ "<instructions>",
297
+ "1. Drive `/skill:impeccable live` against the static preview: run `live.mjs` with `--target` pointed at the preview file, or the equivalent `.impeccable/live/config.json` entry, and open the URL that serves it.",
298
+ "2. Print the live `http://` review URL in plain text, plus the preview file URL as the manual fallback, so anyone attaching to this run can find the review.",
299
+ "3. Directly under the URL, print how the user ends the review, in plain text: click exit in the Impeccable overlay, close the browser tab, or say `exit live`. State that the review waits indefinitely until they do, and that ending it exports the design as it then stands, with no further round.",
300
+ "4. Do NOT start a poll loop. The workflow owns polling and will call you back for each event that needs you. Ending your turn does not end the review.",
301
+ "</instructions>",
302
+ ].join("\n"),
303
+ "<output_format>Under 150 words: the live review URL, the manual fallback path, how to end the review, and whether the browser opened.</output_format>",
304
+ ].join("\n\n");
305
+ }