@bastani/atomic 0.9.18-alpha.5 → 0.9.18-alpha.7

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 (376) hide show
  1. package/CHANGELOG.md +88 -0
  2. package/README.md +3 -3
  3. package/dist/builtin/intercom/CHANGELOG.md +39 -0
  4. package/dist/builtin/intercom/README.md +22 -2
  5. package/dist/builtin/intercom/broker/broker.ts +676 -128
  6. package/dist/builtin/intercom/broker/client.ts +151 -35
  7. package/dist/builtin/intercom/broker/delivered-message-cache.ts +497 -37
  8. package/dist/builtin/intercom/broker/framing.ts +4 -2
  9. package/dist/builtin/intercom/broker/paths.ts +10 -0
  10. package/dist/builtin/intercom/broker/pending-send-registry.ts +1 -2
  11. package/dist/builtin/intercom/broker/send-handler.ts +311 -52
  12. package/dist/builtin/intercom/broker/send-signature.ts +4 -2
  13. package/dist/builtin/intercom/broker/socket-writes.ts +103 -0
  14. package/dist/builtin/intercom/broker/spawn.ts +9 -4
  15. package/dist/builtin/intercom/index.bundle.mjs +1410 -212
  16. package/dist/builtin/intercom/package.json +2 -2
  17. package/dist/builtin/intercom/recoverable-disconnect.ts +52 -0
  18. package/dist/builtin/intercom/retry-policy.ts +8 -0
  19. package/dist/builtin/intercom/skills/intercom/SKILL.md +17 -9
  20. package/dist/builtin/intercom/types.ts +27 -8
  21. package/dist/builtin/intercom/workflow-stage-path-matching.ts +90 -0
  22. package/dist/builtin/intercom/workflow-stage-target.ts +57 -0
  23. package/dist/builtin/mcp/index.bundle.mjs +427 -126
  24. package/dist/builtin/mcp/package.json +2 -2
  25. package/dist/builtin/subagents/CHANGELOG.md +19 -0
  26. package/dist/builtin/subagents/README.md +3 -3
  27. package/dist/builtin/subagents/agents/code-simplifier.md +2 -2
  28. package/dist/builtin/subagents/agents/codebase-analyzer.md +2 -2
  29. package/dist/builtin/subagents/agents/codebase-locator.md +2 -2
  30. package/dist/builtin/subagents/agents/codebase-online-researcher.md +11 -11
  31. package/dist/builtin/subagents/agents/codebase-pattern-finder.md +2 -2
  32. package/dist/builtin/subagents/agents/codebase-research-analyzer.md +2 -2
  33. package/dist/builtin/subagents/agents/codebase-research-locator.md +2 -2
  34. package/dist/builtin/subagents/agents/debugger.md +3 -3
  35. package/dist/builtin/subagents/agents/worker.md +2 -2
  36. package/dist/builtin/subagents/package.json +3 -3
  37. package/dist/builtin/subagents/skills/qlty/SKILL.md +29 -101
  38. package/dist/builtin/subagents/skills/qlty/references/manual-configuration.md +52 -0
  39. package/dist/builtin/subagents/skills/subagent/SKILL.md +11 -11
  40. package/dist/builtin/subagents/src/extension/index.bundle.mjs +49 -132
  41. package/dist/builtin/web-access/package.json +2 -2
  42. package/dist/builtin/workflows/CHANGELOG.md +46 -0
  43. package/dist/builtin/workflows/README.md +7 -7
  44. package/dist/builtin/workflows/builtin/adversarial-verification.js +2 -2
  45. package/dist/builtin/workflows/builtin/{chunk-szz1ajz9.js → chunk-42s7sw0b.js} +9 -2
  46. package/dist/builtin/workflows/builtin/{chunk-2dqb5s2q.js → chunk-79fjkcvh.js} +1 -1
  47. package/dist/builtin/workflows/builtin/{chunk-n58a7v26.js → chunk-b0v2xab1.js} +181 -10
  48. package/dist/builtin/workflows/builtin/{chunk-fghhy2a5.js → chunk-ed4jfn5t.js} +23 -5
  49. package/dist/builtin/workflows/builtin/{chunk-h3r2vkzc.js → chunk-hqpe2cyx.js} +60 -21
  50. package/dist/builtin/workflows/builtin/{chunk-hzzn6adg.js → chunk-k3w87x8y.js} +1 -1
  51. package/dist/builtin/workflows/builtin/{chunk-82ha8p41.js → chunk-n8h4yyew.js} +1 -1
  52. package/dist/builtin/workflows/builtin/{chunk-qwzvgxnq.js → chunk-reqr3sr3.js} +1 -1
  53. package/dist/builtin/workflows/builtin/{chunk-c53y8bdh.js → chunk-wgccch41.js} +1 -1
  54. package/dist/builtin/workflows/builtin/{chunk-0x6e303p.js → chunk-zbekjqew.js} +20 -7
  55. package/dist/builtin/workflows/builtin/{chunk-29wrp38a.js → chunk-ze5x3d1r.js} +1 -1
  56. package/dist/builtin/workflows/builtin/classify-and-act.js +2 -2
  57. package/dist/builtin/workflows/builtin/fan-out-and-synthesize.js +2 -2
  58. package/dist/builtin/workflows/builtin/generate-and-filter.js +2 -2
  59. package/dist/builtin/workflows/builtin/goal.js +3 -3
  60. package/dist/builtin/workflows/builtin/index.js +11 -11
  61. package/dist/builtin/workflows/builtin/loop-until-done.js +2 -2
  62. package/dist/builtin/workflows/builtin/open-claude-design.js +2 -2
  63. package/dist/builtin/workflows/builtin/ralph.js +3 -3
  64. package/dist/builtin/workflows/builtin/steering-context.js +1 -1
  65. package/dist/builtin/workflows/builtin/tournament.js +2 -2
  66. package/dist/builtin/workflows/package.json +2 -2
  67. package/dist/builtin/workflows/skills/prompt-engineer/SKILL.md +39 -52
  68. package/dist/builtin/workflows/skills/prompt-engineer/references/advanced_patterns.md +9 -37
  69. package/dist/builtin/workflows/skills/prompt-engineer/references/claude_fable_5.md +49 -0
  70. package/dist/builtin/workflows/skills/prompt-engineer/references/claude_fable_5_1.md +57 -0
  71. package/dist/builtin/workflows/skills/prompt-engineer/references/claude_opus_4_8.md +57 -0
  72. package/dist/builtin/workflows/skills/prompt-engineer/references/claude_opus_5.md +47 -0
  73. package/dist/builtin/workflows/skills/prompt-engineer/references/claude_sonnet_5.md +57 -0
  74. package/dist/builtin/workflows/skills/prompt-engineer/references/gpt_5_5.md +60 -0
  75. package/dist/builtin/workflows/skills/prompt-engineer/references/gpt_5_6.md +58 -0
  76. package/dist/builtin/workflows/skills/prompt-engineer/references/gpt_6_astra.md +58 -0
  77. package/dist/builtin/workflows/skills/prompt-engineer/references/quality_improvement.md +18 -4
  78. package/dist/builtin/workflows/src/extension/index.bundle.mjs +3194 -737
  79. package/dist/builtin/workflows/src/index.js +899 -436
  80. package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +0 -10
  81. package/dist/cli/list-models.d.ts.map +1 -1
  82. package/dist/cli/list-models.js +4 -0
  83. package/dist/cli/list-models.js.map +1 -1
  84. package/dist/client/index.d.ts +1 -2
  85. package/dist/client/index.d.ts.map +1 -1
  86. package/dist/client/index.js +1 -2
  87. package/dist/client/index.js.map +1 -1
  88. package/dist/config.d.ts +0 -9
  89. package/dist/config.d.ts.map +1 -1
  90. package/dist/config.js +0 -45
  91. package/dist/config.js.map +1 -1
  92. package/dist/core/agent-session-compaction.d.ts.map +1 -1
  93. package/dist/core/agent-session-compaction.js +8 -6
  94. package/dist/core/agent-session-compaction.js.map +1 -1
  95. package/dist/core/agent-session-methods.d.ts +1 -0
  96. package/dist/core/agent-session-methods.d.ts.map +1 -1
  97. package/dist/core/agent-session-methods.js.map +1 -1
  98. package/dist/core/agent-session-models.d.ts.map +1 -1
  99. package/dist/core/agent-session-models.js +3 -4
  100. package/dist/core/agent-session-models.js.map +1 -1
  101. package/dist/core/agent-session-queue-pause.d.ts.map +1 -1
  102. package/dist/core/agent-session-queue-pause.js +6 -0
  103. package/dist/core/agent-session-queue-pause.js.map +1 -1
  104. package/dist/core/agent-session-runtime.d.ts.map +1 -1
  105. package/dist/core/agent-session-runtime.js +13 -5
  106. package/dist/core/agent-session-runtime.js.map +1 -1
  107. package/dist/core/agent-session-tool-hooks.js +1 -1
  108. package/dist/core/agent-session-tool-hooks.js.map +1 -1
  109. package/dist/core/agent-session-tree.d.ts.map +1 -1
  110. package/dist/core/agent-session-tree.js +8 -0
  111. package/dist/core/agent-session-tree.js.map +1 -1
  112. package/dist/core/agent-session.d.ts +2 -0
  113. package/dist/core/agent-session.d.ts.map +1 -1
  114. package/dist/core/agent-session.js +2 -0
  115. package/dist/core/agent-session.js.map +1 -1
  116. package/dist/core/compaction/branch-summarization.d.ts +2 -2
  117. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  118. package/dist/core/compaction/branch-summarization.js +4 -4
  119. package/dist/core/compaction/branch-summarization.js.map +1 -1
  120. package/dist/core/extensions/api-types.d.ts +8 -2
  121. package/dist/core/extensions/api-types.d.ts.map +1 -1
  122. package/dist/core/extensions/api-types.js.map +1 -1
  123. package/dist/core/extensions/context-types.d.ts +12 -0
  124. package/dist/core/extensions/context-types.d.ts.map +1 -1
  125. package/dist/core/extensions/context-types.js.map +1 -1
  126. package/dist/core/extensions/runner-shortcuts.d.ts.map +1 -1
  127. package/dist/core/extensions/runner-shortcuts.js +0 -1
  128. package/dist/core/extensions/runner-shortcuts.js.map +1 -1
  129. package/dist/core/fast-model-routing-transport.d.ts +12 -0
  130. package/dist/core/fast-model-routing-transport.d.ts.map +1 -0
  131. package/dist/core/{codex-fast-mode-transport.js → fast-model-routing-transport.js} +29 -29
  132. package/dist/core/fast-model-routing-transport.js.map +1 -0
  133. package/dist/core/fast-model-routing.d.ts +57 -0
  134. package/dist/core/fast-model-routing.d.ts.map +1 -0
  135. package/dist/core/fast-model-routing.js +201 -0
  136. package/dist/core/fast-model-routing.js.map +1 -0
  137. package/dist/core/fast-model-variants.d.ts +98 -0
  138. package/dist/core/fast-model-variants.d.ts.map +1 -0
  139. package/dist/core/fast-model-variants.js +148 -0
  140. package/dist/core/fast-model-variants.js.map +1 -0
  141. package/dist/core/http-dispatcher.d.ts.map +1 -1
  142. package/dist/core/http-dispatcher.js +4 -2
  143. package/dist/core/http-dispatcher.js.map +1 -1
  144. package/dist/core/keybindings.d.ts +0 -10
  145. package/dist/core/keybindings.d.ts.map +1 -1
  146. package/dist/core/keybindings.js +0 -8
  147. package/dist/core/keybindings.js.map +1 -1
  148. package/dist/core/messages.d.ts +1 -1
  149. package/dist/core/messages.d.ts.map +1 -1
  150. package/dist/core/messages.js.map +1 -1
  151. package/dist/core/model-config.d.ts +15 -0
  152. package/dist/core/model-config.d.ts.map +1 -1
  153. package/dist/core/model-config.js +3 -0
  154. package/dist/core/model-config.js.map +1 -1
  155. package/dist/core/model-resolver-initial.js +1 -1
  156. package/dist/core/model-resolver-initial.js.map +1 -1
  157. package/dist/core/model-runtime-streaming.d.ts +14 -1
  158. package/dist/core/model-runtime-streaming.d.ts.map +1 -1
  159. package/dist/core/model-runtime-streaming.js +25 -3
  160. package/dist/core/model-runtime-streaming.js.map +1 -1
  161. package/dist/core/model-runtime.d.ts +39 -2
  162. package/dist/core/model-runtime.d.ts.map +1 -1
  163. package/dist/core/model-runtime.js +91 -7
  164. package/dist/core/model-runtime.js.map +1 -1
  165. package/dist/core/provider-composer-internal.d.ts.map +1 -1
  166. package/dist/core/provider-composer-internal.js +8 -2
  167. package/dist/core/provider-composer-internal.js.map +1 -1
  168. package/dist/core/sdk.d.ts.map +1 -1
  169. package/dist/core/sdk.js +18 -18
  170. package/dist/core/sdk.js.map +1 -1
  171. package/dist/core/session-manager-archive.d.ts.map +1 -1
  172. package/dist/core/session-manager-archive.js +25 -2
  173. package/dist/core/session-manager-archive.js.map +1 -1
  174. package/dist/core/settings-manager-core.d.ts +0 -2
  175. package/dist/core/settings-manager-core.d.ts.map +1 -1
  176. package/dist/core/settings-manager-core.js +2 -9
  177. package/dist/core/settings-manager-core.js.map +1 -1
  178. package/dist/core/settings-manager-internals.d.ts +0 -1
  179. package/dist/core/settings-manager-internals.d.ts.map +1 -1
  180. package/dist/core/settings-manager-internals.js.map +1 -1
  181. package/dist/core/settings-manager-ui-accessors.d.ts +0 -8
  182. package/dist/core/settings-manager-ui-accessors.d.ts.map +1 -1
  183. package/dist/core/settings-manager-ui-accessors.js +0 -53
  184. package/dist/core/settings-manager-ui-accessors.js.map +1 -1
  185. package/dist/core/settings-manager.d.ts +1 -1
  186. package/dist/core/settings-manager.d.ts.map +1 -1
  187. package/dist/core/settings-manager.js.map +1 -1
  188. package/dist/core/settings-types.d.ts +0 -5
  189. package/dist/core/settings-types.d.ts.map +1 -1
  190. package/dist/core/settings-types.js.map +1 -1
  191. package/dist/core/skills.d.ts +1 -1
  192. package/dist/core/skills.d.ts.map +1 -1
  193. package/dist/core/skills.js +4 -2
  194. package/dist/core/skills.js.map +1 -1
  195. package/dist/core/slash-commands.d.ts.map +1 -1
  196. package/dist/core/slash-commands.js +0 -1
  197. package/dist/core/slash-commands.js.map +1 -1
  198. package/dist/core/system-prompt.js +7 -7
  199. package/dist/core/system-prompt.js.map +1 -1
  200. package/dist/core/tools/edit.d.ts +1 -1
  201. package/dist/core/tools/edit.d.ts.map +1 -1
  202. package/dist/core/tools/edit.js +128 -3
  203. package/dist/core/tools/edit.js.map +1 -1
  204. package/dist/core/tools/hashline.d.ts +2 -2
  205. package/dist/core/tools/hashline.d.ts.map +1 -1
  206. package/dist/core/tools/hashline.js +40 -10
  207. package/dist/core/tools/hashline.js.map +1 -1
  208. package/dist/core/tools/write.d.ts.map +1 -1
  209. package/dist/core/tools/write.js +8 -8
  210. package/dist/core/tools/write.js.map +1 -1
  211. package/dist/core/workflow-stage-admission.d.ts +6 -0
  212. package/dist/core/workflow-stage-admission.d.ts.map +1 -1
  213. package/dist/core/workflow-stage-admission.js +14 -0
  214. package/dist/core/workflow-stage-admission.js.map +1 -1
  215. package/dist/index-extensions.d.ts +1 -1
  216. package/dist/index-extensions.d.ts.map +1 -1
  217. package/dist/index-extensions.js.map +1 -1
  218. package/dist/index.d.ts +5 -5
  219. package/dist/index.d.ts.map +1 -1
  220. package/dist/index.js +4 -5
  221. package/dist/index.js.map +1 -1
  222. package/dist/modes/interactive/components/atomic-working-status.d.ts +4 -0
  223. package/dist/modes/interactive/components/atomic-working-status.d.ts.map +1 -1
  224. package/dist/modes/interactive/components/atomic-working-status.js +26 -1
  225. package/dist/modes/interactive/components/atomic-working-status.js.map +1 -1
  226. package/dist/modes/interactive/components/custom-editor.d.ts +7 -0
  227. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  228. package/dist/modes/interactive/components/custom-editor.js +43 -0
  229. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  230. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  231. package/dist/modes/interactive/components/footer.js +0 -6
  232. package/dist/modes/interactive/components/footer.js.map +1 -1
  233. package/dist/modes/interactive/components/index.d.ts +1 -2
  234. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  235. package/dist/modes/interactive/components/index.js +0 -1
  236. package/dist/modes/interactive/components/index.js.map +1 -1
  237. package/dist/modes/interactive/components/model-selector.d.ts +1 -1
  238. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  239. package/dist/modes/interactive/components/model-selector.js +6 -11
  240. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  241. package/dist/modes/interactive/components/scoped-models-selector.d.ts +2 -5
  242. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  243. package/dist/modes/interactive/components/scoped-models-selector.js +3 -19
  244. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  245. package/dist/modes/interactive/components/settings-selector-items.js +1 -1
  246. package/dist/modes/interactive/components/settings-selector-items.js.map +1 -1
  247. package/dist/modes/interactive/components/thinking-selector.d.ts +1 -2
  248. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  249. package/dist/modes/interactive/components/thinking-selector.js +4 -11
  250. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  251. package/dist/modes/interactive/components/transcript-follow-indicator.js +3 -3
  252. package/dist/modes/interactive/components/transcript-follow-indicator.js.map +1 -1
  253. package/dist/modes/interactive/interactive-agent-events.js +8 -8
  254. package/dist/modes/interactive/interactive-agent-events.js.map +1 -1
  255. package/dist/modes/interactive/interactive-autocomplete.js +5 -16
  256. package/dist/modes/interactive/interactive-autocomplete.js.map +1 -1
  257. package/dist/modes/interactive/interactive-bash-compact.js +2 -9
  258. package/dist/modes/interactive/interactive-bash-compact.js.map +1 -1
  259. package/dist/modes/interactive/interactive-deferred-startup.d.ts.map +1 -1
  260. package/dist/modes/interactive/interactive-deferred-startup.js +3 -0
  261. package/dist/modes/interactive/interactive-deferred-startup.js.map +1 -1
  262. package/dist/modes/interactive/interactive-editor-actions.js +2 -2
  263. package/dist/modes/interactive/interactive-editor-actions.js.map +1 -1
  264. package/dist/modes/interactive/interactive-extension-custom-ui.js +1 -0
  265. package/dist/modes/interactive/interactive-extension-custom-ui.js.map +1 -1
  266. package/dist/modes/interactive/interactive-extension-dialogs.js +7 -0
  267. package/dist/modes/interactive/interactive-extension-dialogs.js.map +1 -1
  268. package/dist/modes/interactive/interactive-extension-runtime.js +20 -10
  269. package/dist/modes/interactive/interactive-extension-runtime.js.map +1 -1
  270. package/dist/modes/interactive/interactive-hotkeys-debug.js +1 -5
  271. package/dist/modes/interactive/interactive-hotkeys-debug.js.map +1 -1
  272. package/dist/modes/interactive/interactive-initial-session-binding.d.ts.map +1 -1
  273. package/dist/modes/interactive/interactive-initial-session-binding.js +3 -0
  274. package/dist/modes/interactive/interactive-initial-session-binding.js.map +1 -1
  275. package/dist/modes/interactive/interactive-input-handling.js +0 -8
  276. package/dist/modes/interactive/interactive-input-handling.js.map +1 -1
  277. package/dist/modes/interactive/interactive-mode-base.d.ts +5 -1
  278. package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
  279. package/dist/modes/interactive/interactive-mode-base.js +15 -9
  280. package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
  281. package/dist/modes/interactive/interactive-mode-deps.d.ts +1 -3
  282. package/dist/modes/interactive/interactive-mode-deps.d.ts.map +1 -1
  283. package/dist/modes/interactive/interactive-mode-deps.js +1 -3
  284. package/dist/modes/interactive/interactive-mode-deps.js.map +1 -1
  285. package/dist/modes/interactive/interactive-mode-surface.d.ts +9 -12
  286. package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
  287. package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
  288. package/dist/modes/interactive/interactive-model-routing.js +10 -13
  289. package/dist/modes/interactive/interactive-model-routing.js.map +1 -1
  290. package/dist/modes/interactive/interactive-render-chat.js +29 -0
  291. package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
  292. package/dist/modes/interactive/interactive-selectors.js +2 -32
  293. package/dist/modes/interactive/interactive-selectors.js.map +1 -1
  294. package/dist/modes/interactive/interactive-session-routing.js +1 -5
  295. package/dist/modes/interactive/interactive-session-routing.js.map +1 -1
  296. package/dist/modes/interactive/interactive-session-runtime.js +1 -5
  297. package/dist/modes/interactive/interactive-session-runtime.js.map +1 -1
  298. package/dist/modes/interactive/interactive-slash-commands.js +6 -13
  299. package/dist/modes/interactive/interactive-slash-commands.js.map +1 -1
  300. package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
  301. package/dist/modes/interactive/interactive-startup.js +19 -13
  302. package/dist/modes/interactive/interactive-startup.js.map +1 -1
  303. package/dist/modes/interactive/interactive-tui.d.ts.map +1 -1
  304. package/dist/modes/interactive/interactive-tui.js +27 -3
  305. package/dist/modes/interactive/interactive-tui.js.map +1 -1
  306. package/dist/modes/interactive-engine/engine-custom-ui.d.ts.map +1 -1
  307. package/dist/modes/interactive-engine/engine-custom-ui.js +1 -0
  308. package/dist/modes/interactive-engine/engine-custom-ui.js.map +1 -1
  309. package/dist/modes/interactive-engine/isolated-runtime.d.ts.map +1 -1
  310. package/dist/modes/interactive-engine/isolated-runtime.js +4 -1
  311. package/dist/modes/interactive-engine/isolated-runtime.js.map +1 -1
  312. package/dist/utils/child-process.d.ts.map +1 -1
  313. package/dist/utils/child-process.js +13 -6
  314. package/dist/utils/child-process.js.map +1 -1
  315. package/dist/utils/exif-orientation.d.ts.map +1 -1
  316. package/dist/utils/exif-orientation.js +2 -3
  317. package/dist/utils/exif-orientation.js.map +1 -1
  318. package/dist/utils/tools-manager.d.ts +1 -0
  319. package/dist/utils/tools-manager.d.ts.map +1 -1
  320. package/dist/utils/tools-manager.js +33 -18
  321. package/dist/utils/tools-manager.js.map +1 -1
  322. package/docs/custom-provider.md +2 -0
  323. package/docs/development.md +17 -0
  324. package/docs/docs.json +14 -2
  325. package/docs/extensions.md +9 -4
  326. package/docs/intercom.md +41 -7
  327. package/docs/keybindings.md +8 -6
  328. package/docs/models/evals.md +394 -0
  329. package/docs/models/model-selection.md +54 -27
  330. package/docs/models/pareto-efficiency.md +33 -16
  331. package/docs/models.md +37 -1
  332. package/docs/packages.md +2 -2
  333. package/docs/providers.md +44 -20
  334. package/docs/quickstart.md +8 -6
  335. package/docs/rpc.md +3 -3
  336. package/docs/sdk.md +2 -16
  337. package/docs/settings.md +19 -22
  338. package/docs/skills.md +4 -2
  339. package/docs/subagents.md +9 -3
  340. package/docs/tools/edit.md +373 -0
  341. package/docs/tools.md +3 -7
  342. package/docs/tui.md +2 -1
  343. package/docs/usage.md +3 -5
  344. package/docs/workflows/api-reference.md +1395 -0
  345. package/docs/workflows/authoring.md +678 -0
  346. package/docs/workflows/builtins.md +245 -0
  347. package/docs/workflows/operations.md +811 -0
  348. package/docs/workflows/reliable-design.md +2099 -0
  349. package/docs/workflows/verification.md +62 -0
  350. package/docs/workflows.md +15 -5183
  351. package/npm-shrinkwrap.json +584 -69
  352. package/package.json +7 -7
  353. package/dist/client/remote-session.d.ts +0 -64
  354. package/dist/client/remote-session.d.ts.map +0 -1
  355. package/dist/client/remote-session.js +0 -351
  356. package/dist/client/remote-session.js.map +0 -1
  357. package/dist/client/transcript.d.ts +0 -12
  358. package/dist/client/transcript.d.ts.map +0 -1
  359. package/dist/client/transcript.js +0 -98
  360. package/dist/client/transcript.js.map +0 -1
  361. package/dist/core/codex-fast-mode-transport.d.ts +0 -12
  362. package/dist/core/codex-fast-mode-transport.d.ts.map +0 -1
  363. package/dist/core/codex-fast-mode-transport.js.map +0 -1
  364. package/dist/core/codex-fast-mode.d.ts +0 -53
  365. package/dist/core/codex-fast-mode.d.ts.map +0 -1
  366. package/dist/core/codex-fast-mode.js +0 -249
  367. package/dist/core/codex-fast-mode.js.map +0 -1
  368. package/dist/modes/interactive/components/fast-mode-selector.d.ts +0 -27
  369. package/dist/modes/interactive/components/fast-mode-selector.d.ts.map +0 -1
  370. package/dist/modes/interactive/components/fast-mode-selector.js +0 -107
  371. package/dist/modes/interactive/components/fast-mode-selector.js.map +0 -1
  372. package/dist/server/create-harness.d.ts +0 -53
  373. package/dist/server/create-harness.d.ts.map +0 -1
  374. package/dist/server/create-harness.js +0 -360
  375. package/dist/server/create-harness.js.map +0 -1
  376. package/docs/models/artificial-analysis-index.md +0 -83
@@ -12,11 +12,14 @@ import type {
12
12
  SessionDirectory,
13
13
  WorkflowStageRosterAnnouncement,
14
14
  WorkflowStageRosterEntry,
15
+ WorkflowFutureStageRosterEntry,
16
+ WorkflowPossibleStageAnnouncement,
15
17
  } from "../types.js";
16
18
  import { buildSendSignature, PendingSendRegistry } from "./pending-send-registry.js";
17
19
  import { readSubagentMessageSource } from "../source-ownership.js";
18
20
  import { isMessage, isSessionInfo } from "./client-message-validation.js";
19
21
  import { normalizeGroups } from "../group.js";
22
+ import { IntercomClientDisconnectedError } from "../recoverable-disconnect.js";
20
23
 
21
24
  const BROKER_SOCKET = getBrokerSocketPath();
22
25
  const GROUP_REQUEST_TIMEOUT_MS = 5000;
@@ -30,6 +33,10 @@ export interface SendOptions {
30
33
  expectsReply?: boolean;
31
34
  replyError?: string;
32
35
  messageId?: string;
36
+ /** Internal caller-issued target identity; transport still uses the `to` argument. */
37
+ logicalTarget?: string;
38
+ /** Public reply must use the broker's exact pending reverse question route. */
39
+ requirePendingReply?: true;
33
40
  }
34
41
 
35
42
  export interface SendResult {
@@ -37,23 +44,32 @@ export interface SendResult {
37
44
  delivered: boolean;
38
45
  queued?: boolean;
39
46
  reason?: string;
40
- reasonCode?: "message_id_conflict";
41
- runId?: string;
42
- stageKey?: string;
47
+ reasonCode?: "message_id_conflict" | "session_not_found";
48
+ target?: string;
43
49
  position?: number;
50
+ /** D4 speculative accept: the sticky target is not in the run's persisted possible-stage set. */
51
+ notInKnownSet?: true;
44
52
  }
45
53
 
46
54
  export interface PendingStageMessageRequest {
47
55
  readonly requestId: string;
48
56
  readonly from: SessionInfo;
49
57
  readonly runId: string;
50
- readonly stageKey: string;
58
+ readonly target: string;
51
59
  readonly message: Message;
52
60
  readonly senderRegistrationName?: string;
53
61
  readonly senderReturnAddress?: string;
54
62
  readonly live?: boolean;
55
63
  }
56
64
 
65
+ /** Broker → route owner: the live stage targets a sticky broadcast was actually written to. */
66
+ export interface StickyLiveDeliveredNotice {
67
+ readonly runId: string;
68
+ readonly messageId: string;
69
+ readonly target: string;
70
+ readonly deliveredTargets: readonly string[];
71
+ }
72
+
57
73
  export interface PendingStageNotificationRequest {
58
74
  readonly requestId: string;
59
75
  readonly from: SessionInfo;
@@ -61,9 +77,14 @@ export interface PendingStageNotificationRequest {
61
77
  }
62
78
 
63
79
  export type PendingStageMessageResult =
64
- | { readonly outcome: "queued"; readonly position: number }
80
+ | {
81
+ readonly outcome: "queued";
82
+ readonly position: number;
83
+ readonly notInKnownSet?: true;
84
+ readonly forwardTargets?: readonly string[];
85
+ }
65
86
  | { readonly outcome: "delivered" }
66
- | { readonly outcome: "forward" }
87
+ | { readonly outcome: "forward"; readonly target: string }
67
88
  | { readonly outcome: "refused"; readonly reason: string; readonly reasonCode?: "message_id_conflict" };
68
89
  export interface PresenceUpdates {
69
90
  name?: string;
@@ -83,6 +104,24 @@ function toError(error: unknown): Error {
83
104
  }
84
105
 
85
106
 
107
+
108
+ function isWorkflowFutureStageRosterEntries(value: unknown): value is WorkflowFutureStageRosterEntry[] {
109
+ return (
110
+ Array.isArray(value) &&
111
+ value.every(
112
+ (entry) =>
113
+ typeof entry === "object" &&
114
+ entry !== null &&
115
+ (entry as WorkflowFutureStageRosterEntry).kind === "workflow-future-stage" &&
116
+ typeof (entry as WorkflowFutureStageRosterEntry).runId === "string" &&
117
+ typeof (entry as WorkflowFutureStageRosterEntry).target === "string" &&
118
+ typeof (entry as WorkflowFutureStageRosterEntry).queuedCount === "number" &&
119
+ Number.isInteger((entry as WorkflowFutureStageRosterEntry).queuedCount) &&
120
+ (entry as WorkflowFutureStageRosterEntry).queuedCount >= 0 &&
121
+ typeof (entry as WorkflowFutureStageRosterEntry).group === "string",
122
+ )
123
+ );
124
+ }
86
125
  function isWorkflowStageRosterEntries(value: unknown): value is WorkflowStageRosterEntry[] {
87
126
  return (
88
127
  Array.isArray(value) &&
@@ -181,7 +220,7 @@ export class IntercomClient extends EventEmitter {
181
220
  }
182
221
 
183
222
  if (socket.destroyed || socket.writableEnded || !socket.writable) {
184
- throw new Error("Client disconnected");
223
+ throw new IntercomClientDisconnectedError();
185
224
  }
186
225
 
187
226
  return socket;
@@ -192,6 +231,7 @@ export class IntercomClient extends EventEmitter {
192
231
  supervisor?: SupervisorRegistration,
193
232
  supervisorOwnerToken?: string,
194
233
  messageSource?: Message["source"],
234
+ registrationGroup?: string,
195
235
  ): Promise<void> {
196
236
  if (this.socket) {
197
237
  return Promise.reject(new Error("Already connected"));
@@ -240,7 +280,7 @@ export class IntercomClient extends EventEmitter {
240
280
  const onClose = () => {
241
281
  const wasConnecting = !settled && !this._sessionId;
242
282
  const wasDisconnecting = this.disconnecting;
243
- const disconnectError = this.disconnectError ?? new Error("Client disconnected");
283
+ const disconnectError = this.disconnectError ?? new IntercomClientDisconnectedError();
244
284
  this.disconnecting = false;
245
285
  cleanupConnectionAttempt();
246
286
  cleanupSocketListeners();
@@ -262,7 +302,21 @@ export class IntercomClient extends EventEmitter {
262
302
 
263
303
  const onSocketError = (err: Error) => {
264
304
  if (connectionEstablished) {
265
- this.disconnectError = err;
305
+ // A transport error on an already-registered socket (ECONNRESET, EPIPE,
306
+ // ETIMEDOUT, or a write-after-end from our own write) is a *recoverable*
307
+ // disconnect: the broker connection is gone, and the lightweight wrapper
308
+ // re-imports and reconnects on the next call. Record it as the typed
309
+ // recoverable error so `onClose` rejects pending work and emits
310
+ // `disconnected` with something the classifier recognizes, and keep the
311
+ // raw transport error as `cause` so the code is still diagnosable.
312
+ //
313
+ // `??=`, not `=`: `onReaderError` records a protocol error and then
314
+ // destroys the socket, and a socket 'error' can still follow. Overwriting
315
+ // would silently downgrade a non-recoverable protocol failure into a
316
+ // recoverable one. First error recorded wins.
317
+ this.disconnectError ??= new IntercomClientDisconnectedError({ cause: err });
318
+ // The raw error keeps flowing to `error` listeners: that channel exists for
319
+ // diagnosis, and the transport code is what a debugger wants to see.
266
320
  this.emit("error", err);
267
321
  }
268
322
  };
@@ -307,6 +361,7 @@ export class IntercomClient extends EventEmitter {
307
361
  writeMessage(socket, {
308
362
  type: "register",
309
363
  session,
364
+ ...(registrationGroup !== undefined ? { registrationGroup } : {}),
310
365
  returnAddress: this.returnAddress,
311
366
  ...(supervisor ? { supervisor } : {}),
312
367
  ...(supervisorOwnerToken ? { supervisorOwnerToken } : {}),
@@ -359,19 +414,24 @@ export class IntercomClient extends EventEmitter {
359
414
  break;
360
415
  }
361
416
  case "sessions": {
362
- const { requestId, sessions, workflowStages } = brokerMessage;
417
+ const { requestId, sessions, workflowStages, workflowFutureStages } = brokerMessage;
363
418
  if (
364
419
  typeof requestId !== "string" ||
365
420
  !Array.isArray(sessions) ||
366
421
  !sessions.every(isSessionInfo) ||
367
- (workflowStages !== undefined && !isWorkflowStageRosterEntries(workflowStages))
422
+ (workflowStages !== undefined && !isWorkflowStageRosterEntries(workflowStages)) ||
423
+ (workflowFutureStages !== undefined && !isWorkflowFutureStageRosterEntries(workflowFutureStages))
368
424
  ) {
369
425
  throw new Error("Invalid sessions message");
370
426
  }
371
427
  const pending = this.pendingLists.get(requestId);
372
428
  if (!pending) return;
373
429
  this.pendingLists.delete(requestId);
374
- pending.resolve({ sessions, workflowStages: workflowStages ?? [] });
430
+ pending.resolve({
431
+ sessions,
432
+ workflowStages: workflowStages ?? [],
433
+ workflowFutureStages: workflowFutureStages ?? [],
434
+ });
375
435
  break;
376
436
  }
377
437
  case "groups": {
@@ -416,14 +476,14 @@ export class IntercomClient extends EventEmitter {
416
476
  break;
417
477
  }
418
478
  case "pending_stage_message": {
419
- const { requestId, from, senderRegistrationName, senderReturnAddress, runId, stageKey, message, live } = brokerMessage;
479
+ const { requestId, from, senderRegistrationName, senderReturnAddress, runId, target, message, live } = brokerMessage;
420
480
  if (
421
481
  typeof requestId !== "string" ||
422
482
  !isSessionInfo(from) ||
423
483
  (senderRegistrationName !== undefined && typeof senderRegistrationName !== "string") ||
424
484
  (senderReturnAddress !== undefined && typeof senderReturnAddress !== "string") ||
425
485
  typeof runId !== "string" ||
426
- typeof stageKey !== "string" ||
486
+ typeof target !== "string" ||
427
487
  !isMessage(message) ||
428
488
  (live !== undefined && typeof live !== "boolean")
429
489
  ) {
@@ -435,7 +495,7 @@ export class IntercomClient extends EventEmitter {
435
495
  ...(senderRegistrationName === undefined ? {} : { senderRegistrationName }),
436
496
  ...(senderReturnAddress === undefined ? {} : { senderReturnAddress }),
437
497
  runId,
438
- stageKey,
498
+ target,
439
499
  message,
440
500
  ...(live === true ? { live: true } : {}),
441
501
  } satisfies PendingStageMessageRequest);
@@ -453,6 +513,25 @@ export class IntercomClient extends EventEmitter {
453
513
  } satisfies PendingStageNotificationRequest);
454
514
  break;
455
515
  }
516
+ case "sticky_live_delivered": {
517
+ const { runId, messageId, target, deliveredTargets } = brokerMessage;
518
+ if (
519
+ typeof runId !== "string" ||
520
+ typeof messageId !== "string" ||
521
+ typeof target !== "string" ||
522
+ !Array.isArray(deliveredTargets) ||
523
+ !deliveredTargets.every((entry) => typeof entry === "string")
524
+ ) {
525
+ throw new Error("Invalid sticky live-delivery event");
526
+ }
527
+ this.emit("sticky_live_delivered", {
528
+ runId,
529
+ messageId,
530
+ target,
531
+ deliveredTargets,
532
+ } satisfies StickyLiveDeliveredNotice);
533
+ break;
534
+ }
456
535
  case "live_workflow_stage_route_registered": {
457
536
  const { requestId } = brokerMessage;
458
537
  if (typeof requestId !== "string") throw new Error("Invalid live workflow-stage route registration");
@@ -463,18 +542,25 @@ export class IntercomClient extends EventEmitter {
463
542
  break;
464
543
  }
465
544
  case "queued": {
466
- const { messageId, attemptId, runId, stageKey, position } = brokerMessage;
545
+ const { messageId, attemptId, target, position, notInKnownSet } = brokerMessage;
467
546
  if (
468
547
  typeof messageId !== "string" ||
469
548
  (attemptId !== undefined && typeof attemptId !== "string") ||
470
- typeof runId !== "string" ||
471
- typeof stageKey !== "string" ||
549
+ typeof target !== "string" ||
472
550
  typeof position !== "number" ||
473
- position < 1
551
+ position < 1 ||
552
+ (notInKnownSet !== undefined && notInKnownSet !== true)
474
553
  ) {
475
554
  throw new Error("Invalid queued message");
476
555
  }
477
- const result = { id: messageId, delivered: false, queued: true, runId, stageKey, position } as const;
556
+ const result = {
557
+ id: messageId,
558
+ delivered: false,
559
+ queued: true,
560
+ target,
561
+ position,
562
+ ...(notInKnownSet === true ? { notInKnownSet: true as const } : {}),
563
+ } as const;
478
564
  if (attemptId === undefined) this.pendingSends.resolveLegacy(messageId, result);
479
565
  else this.pendingSends.resolve(messageId, attemptId, result);
480
566
  break;
@@ -495,7 +581,7 @@ export class IntercomClient extends EventEmitter {
495
581
  typeof messageId !== "string" ||
496
582
  (attemptId !== undefined && typeof attemptId !== "string") ||
497
583
  typeof reason !== "string" ||
498
- (reasonCode !== undefined && reasonCode !== "message_id_conflict")
584
+ (reasonCode !== undefined && reasonCode !== "message_id_conflict" && reasonCode !== "session_not_found")
499
585
  ) {
500
586
  throw new Error("Invalid delivery_failed message");
501
587
  }
@@ -603,7 +689,7 @@ export class IntercomClient extends EventEmitter {
603
689
  }
604
690
  this.disconnecting = true;
605
691
  this.disconnectError = null;
606
- this.failPending(new Error("Client disconnected"));
692
+ this.failPending(new IntercomClientDisconnectedError());
607
693
  await new Promise<void>((resolve) => {
608
694
  let settled = false;
609
695
  const finish = () => {
@@ -768,8 +854,16 @@ export class IntercomClient extends EventEmitter {
768
854
  group: string,
769
855
  capability: string,
770
856
  stages?: WorkflowStageRosterAnnouncement[],
857
+ possibleStages?: WorkflowPossibleStageAnnouncement[],
771
858
  ): void {
772
- writeMessage(this.requireActiveSocket(), { type: "register_pending_stage_route", runId, group, capability, stages });
859
+ writeMessage(this.requireActiveSocket(), {
860
+ type: "register_pending_stage_route",
861
+ runId,
862
+ group,
863
+ capability,
864
+ stages,
865
+ possibleStages,
866
+ });
773
867
  }
774
868
 
775
869
  registerLiveWorkflowStageRoute(runId: string, stageKeys: readonly string[], capability: string): Promise<void> {
@@ -802,16 +896,25 @@ export class IntercomClient extends EventEmitter {
802
896
  writeMessage(
803
897
  socket,
804
898
  result.outcome === "queued"
805
- ? { type: "pending_stage_message_result", requestId, outcome: "queued", position: result.position }
806
- : result.outcome === "refused"
807
- ? {
808
- type: "pending_stage_message_result",
809
- requestId,
810
- outcome: "refused",
811
- reason: result.reason,
812
- ...(result.reasonCode === undefined ? {} : { reasonCode: result.reasonCode }),
813
- }
814
- : { type: "pending_stage_message_result", requestId, outcome: result.outcome },
899
+ ? {
900
+ type: "pending_stage_message_result",
901
+ requestId,
902
+ outcome: "queued",
903
+ position: result.position,
904
+ ...(result.notInKnownSet === true ? { notInKnownSet: true as const } : {}),
905
+ ...(result.forwardTargets === undefined ? {} : { forwardTargets: [...result.forwardTargets] }),
906
+ }
907
+ : result.outcome === "forward"
908
+ ? { type: "pending_stage_message_result", requestId, outcome: "forward", target: result.target }
909
+ : result.outcome === "refused"
910
+ ? {
911
+ type: "pending_stage_message_result",
912
+ requestId,
913
+ outcome: "refused",
914
+ reason: result.reason,
915
+ ...(result.reasonCode === undefined ? {} : { reasonCode: result.reasonCode }),
916
+ }
917
+ : { type: "pending_stage_message_result", requestId, outcome: result.outcome },
815
918
  );
816
919
  }
817
920
 
@@ -863,7 +966,12 @@ export class IntercomClient extends EventEmitter {
863
966
  const messageId = options.messageId ?? randomUUID();
864
967
  let acquired;
865
968
  try {
866
- acquired = this.pendingSends.acquire(messageId, buildSendSignature(to, options), 10000);
969
+ const pendingSignature = JSON.stringify({
970
+ transportTarget: to,
971
+ logicalSignature: buildSendSignature(options.logicalTarget ?? to, options),
972
+ requirePendingReply: options.requirePendingReply ?? false,
973
+ });
974
+ acquired = this.pendingSends.acquire(messageId, pendingSignature, 10000);
867
975
  } catch (error) {
868
976
  return Promise.reject(toError(error));
869
977
  }
@@ -878,7 +986,15 @@ export class IntercomClient extends EventEmitter {
878
986
  content: { text: options.text, attachments: options.attachments },
879
987
  };
880
988
  try {
881
- writeMessage(socket, { type, to, message, attemptId: acquired.attempt.attemptId, ...extra });
989
+ writeMessage(socket, {
990
+ type,
991
+ to,
992
+ ...(options.logicalTarget === undefined ? {} : { logicalTarget: options.logicalTarget }),
993
+ ...(options.requirePendingReply === undefined ? {} : { requirePendingReply: options.requirePendingReply }),
994
+ message,
995
+ attemptId: acquired.attempt.attemptId,
996
+ ...extra,
997
+ });
882
998
  } catch (error) {
883
999
  this.pendingSends.reject(acquired.attempt, toError(error));
884
1000
  }