@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.
- package/CHANGELOG.md +88 -0
- package/README.md +3 -3
- package/dist/builtin/intercom/CHANGELOG.md +39 -0
- package/dist/builtin/intercom/README.md +22 -2
- package/dist/builtin/intercom/broker/broker.ts +676 -128
- package/dist/builtin/intercom/broker/client.ts +151 -35
- package/dist/builtin/intercom/broker/delivered-message-cache.ts +497 -37
- package/dist/builtin/intercom/broker/framing.ts +4 -2
- package/dist/builtin/intercom/broker/paths.ts +10 -0
- package/dist/builtin/intercom/broker/pending-send-registry.ts +1 -2
- package/dist/builtin/intercom/broker/send-handler.ts +311 -52
- package/dist/builtin/intercom/broker/send-signature.ts +4 -2
- package/dist/builtin/intercom/broker/socket-writes.ts +103 -0
- package/dist/builtin/intercom/broker/spawn.ts +9 -4
- package/dist/builtin/intercom/index.bundle.mjs +1410 -212
- package/dist/builtin/intercom/package.json +2 -2
- package/dist/builtin/intercom/recoverable-disconnect.ts +52 -0
- package/dist/builtin/intercom/retry-policy.ts +8 -0
- package/dist/builtin/intercom/skills/intercom/SKILL.md +17 -9
- package/dist/builtin/intercom/types.ts +27 -8
- package/dist/builtin/intercom/workflow-stage-path-matching.ts +90 -0
- package/dist/builtin/intercom/workflow-stage-target.ts +57 -0
- package/dist/builtin/mcp/index.bundle.mjs +427 -126
- package/dist/builtin/mcp/package.json +2 -2
- package/dist/builtin/subagents/CHANGELOG.md +19 -0
- package/dist/builtin/subagents/README.md +3 -3
- package/dist/builtin/subagents/agents/code-simplifier.md +2 -2
- package/dist/builtin/subagents/agents/codebase-analyzer.md +2 -2
- package/dist/builtin/subagents/agents/codebase-locator.md +2 -2
- package/dist/builtin/subagents/agents/codebase-online-researcher.md +11 -11
- package/dist/builtin/subagents/agents/codebase-pattern-finder.md +2 -2
- package/dist/builtin/subagents/agents/codebase-research-analyzer.md +2 -2
- package/dist/builtin/subagents/agents/codebase-research-locator.md +2 -2
- package/dist/builtin/subagents/agents/debugger.md +3 -3
- package/dist/builtin/subagents/agents/worker.md +2 -2
- package/dist/builtin/subagents/package.json +3 -3
- package/dist/builtin/subagents/skills/qlty/SKILL.md +29 -101
- package/dist/builtin/subagents/skills/qlty/references/manual-configuration.md +52 -0
- package/dist/builtin/subagents/skills/subagent/SKILL.md +11 -11
- package/dist/builtin/subagents/src/extension/index.bundle.mjs +49 -132
- package/dist/builtin/web-access/package.json +2 -2
- package/dist/builtin/workflows/CHANGELOG.md +46 -0
- package/dist/builtin/workflows/README.md +7 -7
- package/dist/builtin/workflows/builtin/adversarial-verification.js +2 -2
- package/dist/builtin/workflows/builtin/{chunk-szz1ajz9.js → chunk-42s7sw0b.js} +9 -2
- package/dist/builtin/workflows/builtin/{chunk-2dqb5s2q.js → chunk-79fjkcvh.js} +1 -1
- package/dist/builtin/workflows/builtin/{chunk-n58a7v26.js → chunk-b0v2xab1.js} +181 -10
- package/dist/builtin/workflows/builtin/{chunk-fghhy2a5.js → chunk-ed4jfn5t.js} +23 -5
- package/dist/builtin/workflows/builtin/{chunk-h3r2vkzc.js → chunk-hqpe2cyx.js} +60 -21
- package/dist/builtin/workflows/builtin/{chunk-hzzn6adg.js → chunk-k3w87x8y.js} +1 -1
- package/dist/builtin/workflows/builtin/{chunk-82ha8p41.js → chunk-n8h4yyew.js} +1 -1
- package/dist/builtin/workflows/builtin/{chunk-qwzvgxnq.js → chunk-reqr3sr3.js} +1 -1
- package/dist/builtin/workflows/builtin/{chunk-c53y8bdh.js → chunk-wgccch41.js} +1 -1
- package/dist/builtin/workflows/builtin/{chunk-0x6e303p.js → chunk-zbekjqew.js} +20 -7
- package/dist/builtin/workflows/builtin/{chunk-29wrp38a.js → chunk-ze5x3d1r.js} +1 -1
- package/dist/builtin/workflows/builtin/classify-and-act.js +2 -2
- package/dist/builtin/workflows/builtin/fan-out-and-synthesize.js +2 -2
- package/dist/builtin/workflows/builtin/generate-and-filter.js +2 -2
- package/dist/builtin/workflows/builtin/goal.js +3 -3
- package/dist/builtin/workflows/builtin/index.js +11 -11
- package/dist/builtin/workflows/builtin/loop-until-done.js +2 -2
- package/dist/builtin/workflows/builtin/open-claude-design.js +2 -2
- package/dist/builtin/workflows/builtin/ralph.js +3 -3
- package/dist/builtin/workflows/builtin/steering-context.js +1 -1
- package/dist/builtin/workflows/builtin/tournament.js +2 -2
- package/dist/builtin/workflows/package.json +2 -2
- package/dist/builtin/workflows/skills/prompt-engineer/SKILL.md +39 -52
- package/dist/builtin/workflows/skills/prompt-engineer/references/advanced_patterns.md +9 -37
- package/dist/builtin/workflows/skills/prompt-engineer/references/claude_fable_5.md +49 -0
- package/dist/builtin/workflows/skills/prompt-engineer/references/claude_fable_5_1.md +57 -0
- package/dist/builtin/workflows/skills/prompt-engineer/references/claude_opus_4_8.md +57 -0
- package/dist/builtin/workflows/skills/prompt-engineer/references/claude_opus_5.md +47 -0
- package/dist/builtin/workflows/skills/prompt-engineer/references/claude_sonnet_5.md +57 -0
- package/dist/builtin/workflows/skills/prompt-engineer/references/gpt_5_5.md +60 -0
- package/dist/builtin/workflows/skills/prompt-engineer/references/gpt_5_6.md +58 -0
- package/dist/builtin/workflows/skills/prompt-engineer/references/gpt_6_astra.md +58 -0
- package/dist/builtin/workflows/skills/prompt-engineer/references/quality_improvement.md +18 -4
- package/dist/builtin/workflows/src/extension/index.bundle.mjs +3194 -737
- package/dist/builtin/workflows/src/index.js +899 -436
- package/dist/builtin/workflows/src/shared/authoring-contract-stage.d.ts +0 -10
- package/dist/cli/list-models.d.ts.map +1 -1
- package/dist/cli/list-models.js +4 -0
- package/dist/cli/list-models.js.map +1 -1
- package/dist/client/index.d.ts +1 -2
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +1 -2
- package/dist/client/index.js.map +1 -1
- package/dist/config.d.ts +0 -9
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +0 -45
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session-compaction.d.ts.map +1 -1
- package/dist/core/agent-session-compaction.js +8 -6
- package/dist/core/agent-session-compaction.js.map +1 -1
- package/dist/core/agent-session-methods.d.ts +1 -0
- package/dist/core/agent-session-methods.d.ts.map +1 -1
- package/dist/core/agent-session-methods.js.map +1 -1
- package/dist/core/agent-session-models.d.ts.map +1 -1
- package/dist/core/agent-session-models.js +3 -4
- package/dist/core/agent-session-models.js.map +1 -1
- package/dist/core/agent-session-queue-pause.d.ts.map +1 -1
- package/dist/core/agent-session-queue-pause.js +6 -0
- package/dist/core/agent-session-queue-pause.js.map +1 -1
- package/dist/core/agent-session-runtime.d.ts.map +1 -1
- package/dist/core/agent-session-runtime.js +13 -5
- package/dist/core/agent-session-runtime.js.map +1 -1
- package/dist/core/agent-session-tool-hooks.js +1 -1
- package/dist/core/agent-session-tool-hooks.js.map +1 -1
- package/dist/core/agent-session-tree.d.ts.map +1 -1
- package/dist/core/agent-session-tree.js +8 -0
- package/dist/core/agent-session-tree.js.map +1 -1
- package/dist/core/agent-session.d.ts +2 -0
- package/dist/core/agent-session.d.ts.map +1 -1
- package/dist/core/agent-session.js +2 -0
- package/dist/core/agent-session.js.map +1 -1
- package/dist/core/compaction/branch-summarization.d.ts +2 -2
- package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
- package/dist/core/compaction/branch-summarization.js +4 -4
- package/dist/core/compaction/branch-summarization.js.map +1 -1
- package/dist/core/extensions/api-types.d.ts +8 -2
- package/dist/core/extensions/api-types.d.ts.map +1 -1
- package/dist/core/extensions/api-types.js.map +1 -1
- package/dist/core/extensions/context-types.d.ts +12 -0
- package/dist/core/extensions/context-types.d.ts.map +1 -1
- package/dist/core/extensions/context-types.js.map +1 -1
- package/dist/core/extensions/runner-shortcuts.d.ts.map +1 -1
- package/dist/core/extensions/runner-shortcuts.js +0 -1
- package/dist/core/extensions/runner-shortcuts.js.map +1 -1
- package/dist/core/fast-model-routing-transport.d.ts +12 -0
- package/dist/core/fast-model-routing-transport.d.ts.map +1 -0
- package/dist/core/{codex-fast-mode-transport.js → fast-model-routing-transport.js} +29 -29
- package/dist/core/fast-model-routing-transport.js.map +1 -0
- package/dist/core/fast-model-routing.d.ts +57 -0
- package/dist/core/fast-model-routing.d.ts.map +1 -0
- package/dist/core/fast-model-routing.js +201 -0
- package/dist/core/fast-model-routing.js.map +1 -0
- package/dist/core/fast-model-variants.d.ts +98 -0
- package/dist/core/fast-model-variants.d.ts.map +1 -0
- package/dist/core/fast-model-variants.js +148 -0
- package/dist/core/fast-model-variants.js.map +1 -0
- package/dist/core/http-dispatcher.d.ts.map +1 -1
- package/dist/core/http-dispatcher.js +4 -2
- package/dist/core/http-dispatcher.js.map +1 -1
- package/dist/core/keybindings.d.ts +0 -10
- package/dist/core/keybindings.d.ts.map +1 -1
- package/dist/core/keybindings.js +0 -8
- package/dist/core/keybindings.js.map +1 -1
- package/dist/core/messages.d.ts +1 -1
- package/dist/core/messages.d.ts.map +1 -1
- package/dist/core/messages.js.map +1 -1
- package/dist/core/model-config.d.ts +15 -0
- package/dist/core/model-config.d.ts.map +1 -1
- package/dist/core/model-config.js +3 -0
- package/dist/core/model-config.js.map +1 -1
- package/dist/core/model-resolver-initial.js +1 -1
- package/dist/core/model-resolver-initial.js.map +1 -1
- package/dist/core/model-runtime-streaming.d.ts +14 -1
- package/dist/core/model-runtime-streaming.d.ts.map +1 -1
- package/dist/core/model-runtime-streaming.js +25 -3
- package/dist/core/model-runtime-streaming.js.map +1 -1
- package/dist/core/model-runtime.d.ts +39 -2
- package/dist/core/model-runtime.d.ts.map +1 -1
- package/dist/core/model-runtime.js +91 -7
- package/dist/core/model-runtime.js.map +1 -1
- package/dist/core/provider-composer-internal.d.ts.map +1 -1
- package/dist/core/provider-composer-internal.js +8 -2
- package/dist/core/provider-composer-internal.js.map +1 -1
- package/dist/core/sdk.d.ts.map +1 -1
- package/dist/core/sdk.js +18 -18
- package/dist/core/sdk.js.map +1 -1
- package/dist/core/session-manager-archive.d.ts.map +1 -1
- package/dist/core/session-manager-archive.js +25 -2
- package/dist/core/session-manager-archive.js.map +1 -1
- package/dist/core/settings-manager-core.d.ts +0 -2
- package/dist/core/settings-manager-core.d.ts.map +1 -1
- package/dist/core/settings-manager-core.js +2 -9
- package/dist/core/settings-manager-core.js.map +1 -1
- package/dist/core/settings-manager-internals.d.ts +0 -1
- package/dist/core/settings-manager-internals.d.ts.map +1 -1
- package/dist/core/settings-manager-internals.js.map +1 -1
- package/dist/core/settings-manager-ui-accessors.d.ts +0 -8
- package/dist/core/settings-manager-ui-accessors.d.ts.map +1 -1
- package/dist/core/settings-manager-ui-accessors.js +0 -53
- package/dist/core/settings-manager-ui-accessors.js.map +1 -1
- package/dist/core/settings-manager.d.ts +1 -1
- package/dist/core/settings-manager.d.ts.map +1 -1
- package/dist/core/settings-manager.js.map +1 -1
- package/dist/core/settings-types.d.ts +0 -5
- package/dist/core/settings-types.d.ts.map +1 -1
- package/dist/core/settings-types.js.map +1 -1
- package/dist/core/skills.d.ts +1 -1
- package/dist/core/skills.d.ts.map +1 -1
- package/dist/core/skills.js +4 -2
- package/dist/core/skills.js.map +1 -1
- package/dist/core/slash-commands.d.ts.map +1 -1
- package/dist/core/slash-commands.js +0 -1
- package/dist/core/slash-commands.js.map +1 -1
- package/dist/core/system-prompt.js +7 -7
- package/dist/core/system-prompt.js.map +1 -1
- package/dist/core/tools/edit.d.ts +1 -1
- package/dist/core/tools/edit.d.ts.map +1 -1
- package/dist/core/tools/edit.js +128 -3
- package/dist/core/tools/edit.js.map +1 -1
- package/dist/core/tools/hashline.d.ts +2 -2
- package/dist/core/tools/hashline.d.ts.map +1 -1
- package/dist/core/tools/hashline.js +40 -10
- package/dist/core/tools/hashline.js.map +1 -1
- package/dist/core/tools/write.d.ts.map +1 -1
- package/dist/core/tools/write.js +8 -8
- package/dist/core/tools/write.js.map +1 -1
- package/dist/core/workflow-stage-admission.d.ts +6 -0
- package/dist/core/workflow-stage-admission.d.ts.map +1 -1
- package/dist/core/workflow-stage-admission.js +14 -0
- package/dist/core/workflow-stage-admission.js.map +1 -1
- package/dist/index-extensions.d.ts +1 -1
- package/dist/index-extensions.d.ts.map +1 -1
- package/dist/index-extensions.js.map +1 -1
- package/dist/index.d.ts +5 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -5
- package/dist/index.js.map +1 -1
- package/dist/modes/interactive/components/atomic-working-status.d.ts +4 -0
- package/dist/modes/interactive/components/atomic-working-status.d.ts.map +1 -1
- package/dist/modes/interactive/components/atomic-working-status.js +26 -1
- package/dist/modes/interactive/components/atomic-working-status.js.map +1 -1
- package/dist/modes/interactive/components/custom-editor.d.ts +7 -0
- package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
- package/dist/modes/interactive/components/custom-editor.js +43 -0
- package/dist/modes/interactive/components/custom-editor.js.map +1 -1
- package/dist/modes/interactive/components/footer.d.ts.map +1 -1
- package/dist/modes/interactive/components/footer.js +0 -6
- package/dist/modes/interactive/components/footer.js.map +1 -1
- package/dist/modes/interactive/components/index.d.ts +1 -2
- package/dist/modes/interactive/components/index.d.ts.map +1 -1
- package/dist/modes/interactive/components/index.js +0 -1
- package/dist/modes/interactive/components/index.js.map +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts +1 -1
- package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/model-selector.js +6 -11
- package/dist/modes/interactive/components/model-selector.js.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.d.ts +2 -5
- package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/scoped-models-selector.js +3 -19
- package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
- package/dist/modes/interactive/components/settings-selector-items.js +1 -1
- package/dist/modes/interactive/components/settings-selector-items.js.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.d.ts +1 -2
- package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
- package/dist/modes/interactive/components/thinking-selector.js +4 -11
- package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
- package/dist/modes/interactive/components/transcript-follow-indicator.js +3 -3
- package/dist/modes/interactive/components/transcript-follow-indicator.js.map +1 -1
- package/dist/modes/interactive/interactive-agent-events.js +8 -8
- package/dist/modes/interactive/interactive-agent-events.js.map +1 -1
- package/dist/modes/interactive/interactive-autocomplete.js +5 -16
- package/dist/modes/interactive/interactive-autocomplete.js.map +1 -1
- package/dist/modes/interactive/interactive-bash-compact.js +2 -9
- package/dist/modes/interactive/interactive-bash-compact.js.map +1 -1
- package/dist/modes/interactive/interactive-deferred-startup.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-deferred-startup.js +3 -0
- package/dist/modes/interactive/interactive-deferred-startup.js.map +1 -1
- package/dist/modes/interactive/interactive-editor-actions.js +2 -2
- package/dist/modes/interactive/interactive-editor-actions.js.map +1 -1
- package/dist/modes/interactive/interactive-extension-custom-ui.js +1 -0
- package/dist/modes/interactive/interactive-extension-custom-ui.js.map +1 -1
- package/dist/modes/interactive/interactive-extension-dialogs.js +7 -0
- package/dist/modes/interactive/interactive-extension-dialogs.js.map +1 -1
- package/dist/modes/interactive/interactive-extension-runtime.js +20 -10
- package/dist/modes/interactive/interactive-extension-runtime.js.map +1 -1
- package/dist/modes/interactive/interactive-hotkeys-debug.js +1 -5
- package/dist/modes/interactive/interactive-hotkeys-debug.js.map +1 -1
- package/dist/modes/interactive/interactive-initial-session-binding.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-initial-session-binding.js +3 -0
- package/dist/modes/interactive/interactive-initial-session-binding.js.map +1 -1
- package/dist/modes/interactive/interactive-input-handling.js +0 -8
- package/dist/modes/interactive/interactive-input-handling.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-base.d.ts +5 -1
- package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-base.js +15 -9
- package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-deps.d.ts +1 -3
- package/dist/modes/interactive/interactive-mode-deps.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-deps.js +1 -3
- package/dist/modes/interactive/interactive-mode-deps.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-surface.d.ts +9 -12
- package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
- package/dist/modes/interactive/interactive-model-routing.js +10 -13
- package/dist/modes/interactive/interactive-model-routing.js.map +1 -1
- package/dist/modes/interactive/interactive-render-chat.js +29 -0
- package/dist/modes/interactive/interactive-render-chat.js.map +1 -1
- package/dist/modes/interactive/interactive-selectors.js +2 -32
- package/dist/modes/interactive/interactive-selectors.js.map +1 -1
- package/dist/modes/interactive/interactive-session-routing.js +1 -5
- package/dist/modes/interactive/interactive-session-routing.js.map +1 -1
- package/dist/modes/interactive/interactive-session-runtime.js +1 -5
- package/dist/modes/interactive/interactive-session-runtime.js.map +1 -1
- package/dist/modes/interactive/interactive-slash-commands.js +6 -13
- package/dist/modes/interactive/interactive-slash-commands.js.map +1 -1
- package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-startup.js +19 -13
- package/dist/modes/interactive/interactive-startup.js.map +1 -1
- package/dist/modes/interactive/interactive-tui.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-tui.js +27 -3
- package/dist/modes/interactive/interactive-tui.js.map +1 -1
- package/dist/modes/interactive-engine/engine-custom-ui.d.ts.map +1 -1
- package/dist/modes/interactive-engine/engine-custom-ui.js +1 -0
- package/dist/modes/interactive-engine/engine-custom-ui.js.map +1 -1
- package/dist/modes/interactive-engine/isolated-runtime.d.ts.map +1 -1
- package/dist/modes/interactive-engine/isolated-runtime.js +4 -1
- package/dist/modes/interactive-engine/isolated-runtime.js.map +1 -1
- package/dist/utils/child-process.d.ts.map +1 -1
- package/dist/utils/child-process.js +13 -6
- package/dist/utils/child-process.js.map +1 -1
- package/dist/utils/exif-orientation.d.ts.map +1 -1
- package/dist/utils/exif-orientation.js +2 -3
- package/dist/utils/exif-orientation.js.map +1 -1
- package/dist/utils/tools-manager.d.ts +1 -0
- package/dist/utils/tools-manager.d.ts.map +1 -1
- package/dist/utils/tools-manager.js +33 -18
- package/dist/utils/tools-manager.js.map +1 -1
- package/docs/custom-provider.md +2 -0
- package/docs/development.md +17 -0
- package/docs/docs.json +14 -2
- package/docs/extensions.md +9 -4
- package/docs/intercom.md +41 -7
- package/docs/keybindings.md +8 -6
- package/docs/models/evals.md +394 -0
- package/docs/models/model-selection.md +54 -27
- package/docs/models/pareto-efficiency.md +33 -16
- package/docs/models.md +37 -1
- package/docs/packages.md +2 -2
- package/docs/providers.md +44 -20
- package/docs/quickstart.md +8 -6
- package/docs/rpc.md +3 -3
- package/docs/sdk.md +2 -16
- package/docs/settings.md +19 -22
- package/docs/skills.md +4 -2
- package/docs/subagents.md +9 -3
- package/docs/tools/edit.md +373 -0
- package/docs/tools.md +3 -7
- package/docs/tui.md +2 -1
- package/docs/usage.md +3 -5
- package/docs/workflows/api-reference.md +1395 -0
- package/docs/workflows/authoring.md +678 -0
- package/docs/workflows/builtins.md +245 -0
- package/docs/workflows/operations.md +811 -0
- package/docs/workflows/reliable-design.md +2099 -0
- package/docs/workflows/verification.md +62 -0
- package/docs/workflows.md +15 -5183
- package/npm-shrinkwrap.json +584 -69
- package/package.json +7 -7
- package/dist/client/remote-session.d.ts +0 -64
- package/dist/client/remote-session.d.ts.map +0 -1
- package/dist/client/remote-session.js +0 -351
- package/dist/client/remote-session.js.map +0 -1
- package/dist/client/transcript.d.ts +0 -12
- package/dist/client/transcript.d.ts.map +0 -1
- package/dist/client/transcript.js +0 -98
- package/dist/client/transcript.js.map +0 -1
- package/dist/core/codex-fast-mode-transport.d.ts +0 -12
- package/dist/core/codex-fast-mode-transport.d.ts.map +0 -1
- package/dist/core/codex-fast-mode-transport.js.map +0 -1
- package/dist/core/codex-fast-mode.d.ts +0 -53
- package/dist/core/codex-fast-mode.d.ts.map +0 -1
- package/dist/core/codex-fast-mode.js +0 -249
- package/dist/core/codex-fast-mode.js.map +0 -1
- package/dist/modes/interactive/components/fast-mode-selector.d.ts +0 -27
- package/dist/modes/interactive/components/fast-mode-selector.d.ts.map +0 -1
- package/dist/modes/interactive/components/fast-mode-selector.js +0 -107
- package/dist/modes/interactive/components/fast-mode-selector.js.map +0 -1
- package/dist/server/create-harness.d.ts +0 -53
- package/dist/server/create-harness.d.ts.map +0 -1
- package/dist/server/create-harness.js +0 -360
- package/dist/server/create-harness.js.map +0 -1
- 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
|
-
|
|
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
|
|
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
|
-
| {
|
|
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
|
|
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
|
|
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
|
-
|
|
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({
|
|
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,
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
545
|
+
const { messageId, attemptId, target, position, notInKnownSet } = brokerMessage;
|
|
467
546
|
if (
|
|
468
547
|
typeof messageId !== "string" ||
|
|
469
548
|
(attemptId !== undefined && typeof attemptId !== "string") ||
|
|
470
|
-
|
|
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
|
-
|
|
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
|
|
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(), {
|
|
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
|
-
? {
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
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
|
-
|
|
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, {
|
|
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
|
}
|