@bastani/atomic 0.9.45 → 0.9.46
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 +79 -0
- package/dist/builtin/intercom/CHANGELOG.md +22 -0
- package/dist/builtin/intercom/broker/broker.ts +124 -10
- package/dist/builtin/intercom/broker/client.ts +177 -25
- package/dist/builtin/intercom/broker/multinode-router.ts +228 -27
- package/dist/builtin/intercom/broker/multinode-state-store.ts +10 -0
- package/dist/builtin/intercom/broker/recipient-receipts.ts +38 -4
- package/dist/builtin/intercom/broker/send-handler.ts +9 -2
- package/dist/builtin/intercom/broker/sql-outbox-store.ts +29 -4
- package/dist/builtin/intercom/group.ts +25 -0
- package/dist/builtin/intercom/index.bundle.mjs +177 -35
- package/dist/builtin/intercom/package.json +1 -1
- package/dist/builtin/intercom/retry-policy.ts +7 -0
- package/dist/builtin/intercom/types.ts +21 -0
- package/dist/builtin/mcp/package.json +1 -1
- package/dist/builtin/subagents/CHANGELOG.md +21 -0
- package/dist/builtin/subagents/package.json +1 -1
- package/dist/builtin/subagents/src/extension/index.bundle.mjs +152 -56
- package/dist/builtin/web-access/package.json +1 -1
- package/dist/builtin/workflows/CHANGELOG.md +79 -0
- package/dist/builtin/workflows/builtin/{chunk-6901nsd6.js → chunk-6jpwc09k.js} +1 -1
- package/dist/builtin/workflows/builtin/{chunk-vwx023ge.js → chunk-qhm35ntx.js} +1 -1
- package/dist/builtin/workflows/builtin/{chunk-jvna28mq.js → chunk-zhyqnf5g.js} +331 -68
- package/dist/builtin/workflows/builtin/goal.js +2 -2
- package/dist/builtin/workflows/builtin/index.js +3 -3
- package/dist/builtin/workflows/builtin/ralph.js +2 -2
- package/dist/builtin/workflows/package.json +1 -1
- package/dist/builtin/workflows/skills/prompt-engineer/SKILL.md +1 -0
- package/dist/builtin/workflows/skills/prompt-engineer/references/gpt_6.md +2 -2
- package/dist/builtin/workflows/skills/prompt-engineer/references/gpt_6_1_sol.md +2 -2
- package/dist/builtin/workflows/skills/prompt-engineer/references/gpt_6_1_terra.md +77 -0
- package/dist/builtin/workflows/src/authoring.d.ts +1 -1
- package/dist/builtin/workflows/src/durable/journal/internal.d.ts +2 -0
- package/dist/builtin/workflows/src/extension/index.bundle.mjs +7104 -3387
- package/dist/builtin/workflows/src/extension/local-worker-entry.mjs +11105 -7264
- package/dist/builtin/workflows/src/index.js +6796 -3606
- package/dist/builtin/workflows/src/local-worker-entry.mjs +11105 -7264
- package/dist/builtin/workflows/src/shared/authoring-contract-ui.d.ts +19 -0
- package/dist/core/agent-session-boundaries.d.ts.map +1 -1
- package/dist/core/agent-session-boundaries.js +1 -0
- package/dist/core/agent-session-boundaries.js.map +1 -1
- package/dist/core/agent-session-events.d.ts.map +1 -1
- package/dist/core/agent-session-events.js +2 -1
- package/dist/core/agent-session-events.js.map +1 -1
- package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
- package/dist/core/agent-session-extension-bindings.js +15 -2
- package/dist/core/agent-session-extension-bindings.js.map +1 -1
- package/dist/core/agent-session-methods.d.ts +3 -2
- 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-prompt.d.ts +4 -2
- package/dist/core/agent-session-prompt.d.ts.map +1 -1
- package/dist/core/agent-session-prompt.js +13 -8
- package/dist/core/agent-session-prompt.js.map +1 -1
- package/dist/core/agent-session-recovery.d.ts.map +1 -1
- package/dist/core/agent-session-recovery.js +92 -1
- package/dist/core/agent-session-recovery.js.map +1 -1
- package/dist/core/agent-session-tasks.d.ts.map +1 -1
- package/dist/core/agent-session-tasks.js +8 -1
- package/dist/core/agent-session-tasks.js.map +1 -1
- package/dist/core/agent-session-transfer.d.ts.map +1 -1
- package/dist/core/agent-session-transfer.js +5 -0
- package/dist/core/agent-session-transfer.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/copilot-errors.d.ts +6 -0
- package/dist/core/copilot-errors.d.ts.map +1 -0
- package/dist/core/copilot-errors.js +17 -0
- package/dist/core/copilot-errors.js.map +1 -0
- package/dist/core/execution-model-router.d.ts.map +1 -1
- package/dist/core/execution-model-router.js +12 -2
- package/dist/core/execution-model-router.js.map +1 -1
- package/dist/core/extensions/context-types.d.ts +7 -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-context.d.ts.map +1 -1
- package/dist/core/extensions/runner-context.js +6 -0
- package/dist/core/extensions/runner-context.js.map +1 -1
- package/dist/core/extensions/ui-types.d.ts +9 -1
- package/dist/core/extensions/ui-types.d.ts.map +1 -1
- package/dist/core/extensions/ui-types.js.map +1 -1
- package/dist/core/extensions/workflow-activity-hub.d.ts +4 -0
- package/dist/core/extensions/workflow-activity-hub.d.ts.map +1 -1
- package/dist/core/extensions/workflow-activity-hub.js +26 -5
- package/dist/core/extensions/workflow-activity-hub.js.map +1 -1
- package/dist/core/extensions/workflow-events.d.ts +5 -0
- package/dist/core/extensions/workflow-events.d.ts.map +1 -1
- package/dist/core/extensions/workflow-events.js.map +1 -1
- package/dist/core/messages.d.ts +5 -0
- package/dist/core/messages.d.ts.map +1 -1
- package/dist/core/messages.js +1 -1
- package/dist/core/messages.js.map +1 -1
- package/dist/core/model-fallback-failures.d.ts +1 -1
- package/dist/core/model-fallback-failures.d.ts.map +1 -1
- package/dist/core/model-fallback-failures.js +37 -3
- package/dist/core/model-fallback-failures.js.map +1 -1
- package/dist/core/model-resolver-defaults.js +2 -2
- package/dist/core/model-resolver-defaults.js.map +1 -1
- package/dist/core/model-runtime-streaming.js +2 -2
- package/dist/core/model-runtime-streaming.js.map +1 -1
- package/dist/core/package-manager-npm.d.ts.map +1 -1
- package/dist/core/package-manager-npm.js +7 -3
- package/dist/core/package-manager-npm.js.map +1 -1
- package/dist/core/provider-composer.d.ts.map +1 -1
- package/dist/core/provider-composer.js +19 -11
- package/dist/core/provider-composer.js.map +1 -1
- package/dist/core/provider-rate-limits.d.ts +55 -6
- package/dist/core/provider-rate-limits.d.ts.map +1 -1
- package/dist/core/provider-rate-limits.js +182 -29
- package/dist/core/provider-rate-limits.js.map +1 -1
- package/dist/core/provider-request-admission.d.ts.map +1 -1
- package/dist/core/provider-request-admission.js +42 -18
- package/dist/core/provider-request-admission.js.map +1 -1
- package/dist/core/storage/node-sqlite.d.ts.map +1 -1
- package/dist/core/storage/node-sqlite.js +176 -19
- package/dist/core/storage/node-sqlite.js.map +1 -1
- package/dist/core/storage/provider.d.ts +4 -2
- package/dist/core/storage/provider.d.ts.map +1 -1
- package/dist/core/storage/provider.js +94 -5
- package/dist/core/storage/provider.js.map +1 -1
- package/dist/core/structured-output/index.d.ts.map +1 -1
- package/dist/core/structured-output/index.js +15 -8
- package/dist/core/structured-output/index.js.map +1 -1
- package/dist/core/structured-output/provider-failure.d.ts +17 -0
- package/dist/core/structured-output/provider-failure.d.ts.map +1 -0
- package/dist/core/structured-output/provider-failure.js +28 -0
- package/dist/core/structured-output/provider-failure.js.map +1 -0
- package/dist/core/tasks/completion.d.ts +6 -1
- package/dist/core/tasks/completion.d.ts.map +1 -1
- package/dist/core/tasks/completion.js +33 -18
- package/dist/core/tasks/completion.js.map +1 -1
- package/dist/core/tasks/pause.d.ts +2 -1
- package/dist/core/tasks/pause.d.ts.map +1 -1
- package/dist/core/tasks/pause.js +3 -2
- package/dist/core/tasks/pause.js.map +1 -1
- package/dist/core/tools/bash.d.ts.map +1 -1
- package/dist/core/tools/bash.js +13 -7
- package/dist/core/tools/bash.js.map +1 -1
- package/dist/core/tools/grep.d.ts.map +1 -1
- package/dist/core/tools/grep.js +6 -4
- package/dist/core/tools/grep.js.map +1 -1
- package/dist/core/tools/shell-task-render.d.ts +1 -0
- package/dist/core/tools/shell-task-render.d.ts.map +1 -1
- package/dist/core/tools/shell-task-render.js +7 -2
- package/dist/core/tools/shell-task-render.js.map +1 -1
- package/dist/core/tools/shell-task-status.d.ts.map +1 -1
- package/dist/core/tools/shell-task-status.js +2 -1
- package/dist/core/tools/shell-task-status.js.map +1 -1
- package/dist/extensions/tool-search/tool.d.ts +5 -0
- package/dist/extensions/tool-search/tool.d.ts.map +1 -1
- package/dist/extensions/tool-search/tool.js +38 -5
- package/dist/extensions/tool-search/tool.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
- package/dist/modes/interactive/components/assistant-message.js +20 -12
- package/dist/modes/interactive/components/assistant-message.js.map +1 -1
- package/dist/modes/interactive/components/chat-session-host-actions.js +3 -2
- package/dist/modes/interactive/components/chat-session-host-actions.js.map +1 -1
- package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
- package/dist/modes/interactive/components/login-dialog.js +42 -14
- package/dist/modes/interactive/components/login-dialog.js.map +1 -1
- package/dist/modes/interactive/interactive-extension-context.js +2 -1
- package/dist/modes/interactive/interactive-extension-context.js.map +1 -1
- package/dist/modes/interactive/interactive-extension-custom-ui.js +1 -1
- package/dist/modes/interactive/interactive-extension-custom-ui.js.map +1 -1
- package/dist/modes/interactive/interactive-extension-dialogs.js +10 -4
- package/dist/modes/interactive/interactive-extension-dialogs.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-surface.d.ts +1 -0
- 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-startup.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-startup.js +5 -6
- package/dist/modes/interactive/interactive-startup.js.map +1 -1
- package/dist/modes/interactive-engine/engine-custom-ui.d.ts +3 -0
- 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/protocol.d.ts +6 -0
- package/dist/modes/interactive-engine/protocol.d.ts.map +1 -1
- package/dist/modes/interactive-engine/protocol.js +9 -0
- package/dist/modes/interactive-engine/protocol.js.map +1 -1
- package/dist/modes/interactive-engine/remote-component.d.ts.map +1 -1
- package/dist/modes/interactive-engine/remote-component.js +3 -2
- package/dist/modes/interactive-engine/remote-component.js.map +1 -1
- package/dist/modes/rpc/rpc-client-process.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client-process.js +8 -1
- package/dist/modes/rpc/rpc-client-process.js.map +1 -1
- package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
- package/dist/modes/rpc/rpc-client.js +7 -1
- package/dist/modes/rpc/rpc-client.js.map +1 -1
- package/dist/utils/ansi.d.ts +2 -0
- package/dist/utils/ansi.d.ts.map +1 -1
- package/dist/utils/ansi.js +5 -0
- package/dist/utils/ansi.js.map +1 -1
- package/docs/codemode.md +1 -1
- package/docs/intercom/reference.md +3 -3
- package/docs/llama-cpp.md +25 -14
- package/docs/models/evals.md +31 -12
- package/docs/models/reference.md +23 -51
- package/docs/models.md +3 -4
- package/docs/providers.md +5 -15
- package/docs/settings.md +1 -1
- package/docs/storage.md +2 -2
- package/docs/tools.md +1 -1
- package/docs/tui.md +2 -0
- package/docs/workflows/api-reference.md +20 -1
- package/docs/workflows/operations.md +17 -4
- package/npm-shrinkwrap.json +64 -44
- package/package.json +4 -4
package/docs/models/reference.md
CHANGED
|
@@ -115,57 +115,29 @@ Atomic advertises PDF only where its runtime can serialize a document block: Ant
|
|
|
115
115
|
|
|
116
116
|
`"pdf"` means PDF specifically. A document block's media type must be `application/pdf`; other values are rejected by name.
|
|
117
117
|
|
|
118
|
-
###
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
|
125
|
-
|
|
|
126
|
-
|
|
|
127
|
-
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
| Above 272,000 | $120 | $12 | $150 | $450 |
|
|
142
|
-
|
|
143
|
-
GPT-6 Astra and GPT-6.1 Sol have an Ultrafast choice on Codex and the OpenAI API; GPT-5.6 Sol has one on the OpenAI API only. Auto routing requires an Ultrafast choice's exact ID in `modelConstraints.allowedModels`. Base-model evaluations are reused through explicit route metadata, with no separate Ultrafast benchmark or latency score. See [Fast and Ultrafast tiers](/providers#fast-and-ultrafast-tiers).
|
|
144
|
-
|
|
145
|
-
Amazon Bedrock exposes `openai.gpt-6-astra`, `global.openai.gpt-6-astra`, and `us.openai.gpt-6-astra` through the `amazon-bedrock` provider. These entries keep the same 272,000 input and 128,000 output limits, text and image input, and five reasoning levels; Atomic sends the selected effort as Bedrock's OpenAI `reasoning_effort` field. They do not get Fast or OpenAI tool-search metadata. Atomic sends each Bedrock ID unchanged and records all four price fields as zero because AWS had not published Astra pricing. Zero means unknown here, not free.
|
|
146
|
-
|
|
147
|
-
Atomic does not synthesize Azure OpenAI Astra entries. Live-provider catalogs remain authoritative: the current OpenRouter catalog publishes `openai/gpt-6-astra` and `openai/gpt-6-astra-pro`, while the Vercel AI Gateway publishes `openai/gpt-6-astra` and `openai/gpt-6-astra-fast`. Atomic imports those exact IDs and their request-wide long-context prices. Vercel owns its suffixed ID, so it remains route-less and does not gain Atomic's first-party fast-route behavior.
|
|
148
|
-
|
|
149
|
-
On OpenAI Responses, Astra uses the newer prompt-cache payload. `cacheRetention: "long"` sends `prompt_cache_options.ttl: "30m"` instead of the legacy `prompt_cache_retention: "24h"`; `none` sends explicit mode without a cache key, and `short` sends neither cache option. Earlier Responses models keep the 24-hour field for long retention.
|
|
150
|
-
|
|
151
|
-
<a id="gpt-6-1-sol" />
|
|
152
|
-
|
|
153
|
-
### GPT-6.1 Sol
|
|
154
|
-
|
|
155
|
-
Select `openai/gpt-6.1-sol` with either API-key authentication or ChatGPT subscription sign-in, or `openai-codex/gpt-6.1-sol` with a ChatGPT subscription. Both accept text and images and support `low`, `medium`, `high`, `xhigh`, and `max`. Reasoning cannot be turned off. Codex also offers a `minimal` UI alias that sends `low`, not a separate API effort.
|
|
156
|
-
|
|
157
|
-
With ChatGPT subscription sign-in, `openai/gpt-6.1-sol` and `openai-codex/gpt-6.1-sol` use a 500,000-token context and a 128,000-token output limit. Account aliases inherit the limits for their own login method. Subscription usage has no long-context price tier on Standard, Fast, or Ultrafast.
|
|
158
|
-
|
|
159
|
-
With API-key authentication, `openai/gpt-6.1-sol` and `openai-api/gpt-6.1-sol` use a 272,000-token default context and a 128,000-token output limit. Increase `contextWindow` through a model override only when you intend to use the larger API window and its whole-request long-context prices:
|
|
160
|
-
|
|
161
|
-
| Aggregate input | Input | Cached input | Cache write | Output |
|
|
162
|
-
| --- | ---: | ---: | ---: | ---: |
|
|
163
|
-
| Up to 272,000 | $2 | $0.10 | $2.50 | $10 |
|
|
164
|
-
| Above 272,000 | $4 | $0.20 | $5 | $15 |
|
|
165
|
-
|
|
166
|
-
Rates are per million tokens. Derived `openai/gpt-6.1-sol-fast` and `openai-codex/gpt-6.1-sol-fast` choices send the same upstream model with priority routing. Fast costs twice the applicable rates; do not pre-multiply catalog costs. [Published evaluations](/models/evals) describe base-model results and measured efforts, not separate Fast measurements.
|
|
167
|
-
|
|
168
|
-
`openai/gpt-6.1-sol-ultrafast` (also `openai-api/` and `openai-codex/`) sends `service_tier: "ultrafast"`. It uses OpenAI's published Ultrafast rates of $12 input and $60 output per million tokens. OpenAI has not listed Sol Ultrafast cache rates, so Atomic derives them at the same six-times-Standard ratio: $0.60 cached input and $15 cache write. With an API key, the usual long-context multipliers apply above 272,000 input tokens. Subscription sign-in keeps flat rates across the 500,000-token window. See [provider tier caveats](/providers#fast-models).
|
|
118
|
+
### OpenAI Built-in Models
|
|
119
|
+
|
|
120
|
+
Prices are in dollars per million tokens, as input / cached input / cache write / output. An empty cell means the fact does not apply or OpenAI has not published it.
|
|
121
|
+
|
|
122
|
+
| Model | Provider IDs | Context window | Standard, up to 272,000 input | Standard, above 272,000 input | Fast | Ultrafast | Reasoning levels | `off` | `minimal` | Tool search | Additional tools | Mid-conversation effort |
|
|
123
|
+
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
|
124
|
+
| GPT-6 Astra | `openai/gpt-6-astra`, `openai-api/gpt-6-astra`, `openai-codex/gpt-6-astra`, `github-copilot/gpt-6-astra` | 272,000 on `openai`, `openai-api` and `openai-codex`; 1,000,000 on `github-copilot` | $10 / $1 / $12.50 / $50 | $20 / $2 / $25 / $75 | `-fast` on `openai`, `openai-api` and `openai-codex`: $20 / $2 / $25 / $100, above 272,000 $40 / $4 / $50 / $150 | `-ultrafast` on `openai`, `openai-api` and `openai-codex`: $60 / $6 / $75 / $300, above 272,000 $120 / $12 / $150 / $450 | `low`, `medium`, `high`, `xhigh`, `max` | No | No | `openai`, `openai-api`, `openai-codex` | `openai`, `openai-api`, `openai-codex`, `github-copilot` | `openai` and `openai-api` with an API key |
|
|
125
|
+
| GPT-6 Astra on Amazon Bedrock | `amazon-bedrock/openai.gpt-6-astra`, `amazon-bedrock/global.openai.gpt-6-astra`, `amazon-bedrock/us.openai.gpt-6-astra` | 1,050,000 | `global.`: $10 / $1 / $12.50 / $50; `openai.` and `us.`: $11 / $1.10 / $13.75 / $55 | `global.`: $20 / $2 / $25 / $75; `openai.` and `us.`: $22 / $2.20 / $27.50 / $82.50 | | | `low`, `medium`, `high`, `xhigh`, `max` | No | No | No | No | No |
|
|
126
|
+
| GPT-6.1 Sol | `openai/gpt-6.1-sol`, `openai-api/gpt-6.1-sol`, `openai-codex/gpt-6.1-sol`, `azure/gpt-6.1-sol`, `github-copilot/gpt-6.1-sol` | 500,000 on `openai-codex` and on `openai` with ChatGPT sign-in; 272,000 on `openai` and `openai-api` with an API key, and on `azure`; 1,050,000 on `github-copilot` (922,000 input) | $2 / $0.10 / $2.50 / $10 | $4 / $0.20 / $5 / $15 with an API key; none with ChatGPT sign-in | `-fast` on `openai`, `openai-api` and `openai-codex`: $4 / $0.20 / $5 / $20, above 272,000 with an API key $8 / $0.40 / $10 / $30 | `-ultrafast` on `openai`, `openai-api` and `openai-codex`: $12 / $0.60 / $15 / $60, above 272,000 with an API key $24 / $1.20 / $30 / $90 | `low`, `medium`, `high`, `xhigh`, `max` | No | Codex UI alias that sends `low`; no elsewhere | `openai`, `openai-api`, `openai-codex` | `openai`, `openai-api`, `openai-codex`, `github-copilot` | `openai` and `openai-api` with an API key |
|
|
127
|
+
| GPT-6.1 Terra | `openai/gpt-6.1-terra`, `openai-api/gpt-6.1-terra`, `openai-codex/gpt-6.1-terra`, `azure/gpt-6.1-terra` | 500,000 on `openai-codex`; 272,000 on `openai`, `openai-api` and `azure` with either sign-in method | $1 / $0.05 / $1.25 / $5 | $2 / $0.10 / $2.50 / $7.50, including on Codex | `-fast` on `openai` and `openai-api`: $2 / $0.10 / $2.50 / $10, above 272,000 $4 / $0.20 / $5 / $15 | | `off`, `low`, `medium`, `high`, `xhigh`, `max` | Yes, sends `none` | Codex UI alias that sends `low`; no elsewhere | `openai`, `openai-api`, `openai-codex` | `openai`, `openai-api`, `openai-codex` | `openai` and `openai-api` with an API key |
|
|
128
|
+
|
|
129
|
+
Notes for every row:
|
|
130
|
+
|
|
131
|
+
- All entries accept text and image input and have a 128,000-token output limit.
|
|
132
|
+
- Above 272,000 aggregate input tokens, the long-context price applies to the whole request. OpenAI documents a 1,050,000-token API maximum for Astra and Terra. Increase `contextWindow` through a model override only when you intend to use the larger window and its prices.
|
|
133
|
+
- With ChatGPT subscription sign-in, GPT-6.1 Sol has no long-context price on Standard, Fast, or Ultrafast. Account aliases inherit the limits for their own login method.
|
|
134
|
+
- A `-fast` choice sends the base upstream ID with `service_tier: priority`, and an `-ultrafast` choice sends it with `service_tier: "ultrafast"`; Atomic records the suffixed ID. Do not pre-multiply catalog costs. Ultrafast is 6× Standard for input, cached input, cache write and output, following OpenAI's published Ultrafast pattern; the [OpenAI API pricing](https://developers.openai.com/api/docs/pricing?latest-pricing=ultrafast) page lists these GPT-6 Astra and GPT-6.1 Sol rates. Codex does not list a Fast tier for Terra yet. Auto routing requires an Ultrafast choice's exact ID in `modelConstraints.allowedModels`. [Published evaluations](/models/evals) describe base-model results and measured efforts, not separate Fast or Ultrafast measurements. See [Fast and Ultrafast tiers](/providers#fast-and-ultrafast-tiers) and [provider tier caveats](/providers#fast-models).
|
|
135
|
+
- Codex's `minimal` UI alias is not a separate API effort, and Codex's client-side `ultra` orchestration preset is not an API reasoning level; neither appears as its own effort in Atomic's selector.
|
|
136
|
+
- Mid-conversation effort changes are explained in [Changing GPT-6 thinking levels](#changing-gpt-6-thinking-levels).
|
|
137
|
+
- On Amazon Bedrock, Atomic sends each ID unchanged and sends the selected effort as Bedrock's OpenAI `reasoning_effort` field.
|
|
138
|
+
- On GitHub Copilot, requests use Copilot's Responses endpoint, and account policy controls availability. Copilot Fast choices require exact account advertisement, and Codex's Ultrafast tier does not apply. The table lists no Copilot rates.
|
|
139
|
+
- Atomic does not synthesize Azure OpenAI Astra entries. Other catalogs are imported as published: OpenRouter publishes `openai/gpt-6-astra` and `openai/gpt-6-astra-pro`, and the Vercel AI Gateway publishes `openai/gpt-6-astra` and `openai/gpt-6-astra-fast`, with their request-wide long-context prices. Vercel owns its suffixed ID, so it remains route-less and does not gain Atomic's first-party fast-route behavior.
|
|
140
|
+
- On OpenAI Responses, these models use the newer prompt-cache payload. `cacheRetention: "long"` sends `prompt_cache_options.ttl: "30m"` instead of the legacy `prompt_cache_retention: "24h"`; `none` sends explicit mode without a cache key, and `short` sends neither cache option. Earlier Responses models keep the 24-hour field for long retention.
|
|
169
141
|
|
|
170
142
|
### Image Input Limits
|
|
171
143
|
|
package/docs/models.md
CHANGED
|
@@ -42,8 +42,7 @@ Each System One service takes images in its own request format, which the model'
|
|
|
42
42
|
- [Supported APIs](/models/reference#supported-apis)
|
|
43
43
|
- [Provider Configuration](/models/reference#provider-configuration)
|
|
44
44
|
- [Model Configuration](/models/reference#model-configuration)
|
|
45
|
-
- [
|
|
46
|
-
- [GPT-6.1 Sol](/models/reference#gpt-6-1-sol)
|
|
45
|
+
- [OpenAI Built-in Models](/models/reference#openai-built-in-models)
|
|
47
46
|
- [Request-wide Cost Tiers](/models/reference#request-wide-cost-tiers)
|
|
48
47
|
- [Overriding Built-in Providers](/models/reference#overriding-built-in-providers)
|
|
49
48
|
- [Per-model Overrides](/models/reference#per-model-overrides)
|
|
@@ -241,6 +240,6 @@ Moved to [Model configuration reference](/models/reference#constrained-tool-samp
|
|
|
241
240
|
|
|
242
241
|
Moved to [Model configuration reference](/models/reference#catalog-freshness-and-precedence).
|
|
243
242
|
|
|
244
|
-
##
|
|
243
|
+
## OpenAI Built-in Models
|
|
245
244
|
|
|
246
|
-
Moved to [Model configuration reference](/models/reference#
|
|
245
|
+
Moved to [Model configuration reference](/models/reference#openai-built-in-models).
|
package/docs/providers.md
CHANGED
|
@@ -92,28 +92,22 @@ If the Codex backend reports that an OAuth/auth token was invalidated or revoked
|
|
|
92
92
|
|
|
93
93
|
For Codex requests, `models.json` headers or per-request SDK headers can override `originator` and `User-Agent`. The transport still supplies the authenticated bearer token and ChatGPT account ID.
|
|
94
94
|
|
|
95
|
-
GPT-6
|
|
95
|
+
GPT-6 Astra, GPT-6.1 Sol and GPT-6.1 Terra are compared in one table, covering provider IDs, context windows by sign-in method, Standard, Fast and Ultrafast prices, and reasoning levels: see [OpenAI built-in models](/models/reference#openai-built-in-models). GPT-6 Sol and GPT-6 Luna are selectable as `openai/gpt-6-sol`, `openai/gpt-6-luna`, `openai-codex/gpt-6-sol`, and `openai-codex/gpt-6-luna`. Each of these models has a derived `-fast` choice where the table lists one, such as `openai-codex/gpt-6.1-sol-fast`, that sends the base upstream model with `service_tier: priority` and keeps the first-party Codex transport identity described below. For example, `atomic --model openai-codex/gpt-6.1-sol-fast:high` selects priority routing at high effort. Access can still depend on the account, rollout, and minimum client policy even though Atomic lists a model.
|
|
96
96
|
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
GPT-6.1 Sol is selectable as `openai/gpt-6.1-sol` and `openai-codex/gpt-6.1-sol`, with derived `-fast` siblings. For example, `atomic --model openai-codex/gpt-6.1-sol-fast:high` selects priority routing at high effort. Sol 6.1 supports `low`, `medium`, `high`, `xhigh`, and `max`; Codex's `minimal` UI alias also sends `low`. `off` is unavailable. See [Sol 6.1 limits and pricing](/models/reference#gpt-6-1-sol).
|
|
100
|
-
|
|
101
|
-
GPT-6.1 Sol also has an `-ultrafast` choice on `openai/*`, `openai-api/*` and `openai-codex/*`, for example `openai/gpt-6.1-sol-ultrafast`.
|
|
102
|
-
|
|
103
|
-
ChatGPT sign-in through either `openai` or `openai-codex` gives GPT-6.1 Sol a 500,000-token context on Standard, Fast, and Ultrafast, without long-context fees. API-key sign-in through `openai` or `openai-api` keeps the 272,000-token default and API long-context pricing. Account aliases follow their own authentication method. Fast and Ultrafast choices work with either authentication method when the account supports the requested tier.
|
|
97
|
+
Account aliases follow their own authentication method. Fast and Ultrafast choices work with either authentication method when the account supports the requested tier.
|
|
104
98
|
|
|
105
99
|
#### Fast and Ultrafast tiers
|
|
106
100
|
|
|
107
101
|
Atomic offers a tier only for the models that advertise it, following Codex's per-model catalog and OpenAI's published API pricing:
|
|
108
102
|
|
|
109
|
-
- **Fast** (`service_tier: priority`): every Codex model, and the `openai/*` models listed on OpenAI's [Fast pricing](https://developers.openai.com/api/docs/pricing) tab. For example, `openai/gpt-5-nano`, `openai/gpt-5-pro`, and `openai/o1` have no `-fast` choice.
|
|
103
|
+
- **Fast** (`service_tier: priority`): every Codex model except GPT-6.1 Terra, and the `openai/*` models listed on OpenAI's [Fast pricing](https://developers.openai.com/api/docs/pricing) tab. For example, `openai/gpt-5-nano`, `openai/gpt-5-pro`, and `openai/o1` have no `-fast` choice.
|
|
110
104
|
- **Ultrafast** (`service_tier: "ultrafast"`): GPT-6 Astra and GPT-6.1 Sol, as `openai/gpt-6-astra-ultrafast` and `openai/gpt-6.1-sol-ultrafast` (also under `openai-api/` and `openai-codex/`), plus GPT-5.6 Sol on the OpenAI API, as `openai/gpt-5.6-sol-ultrafast` (also under `openai-api/`). For example, `atomic --model openai-codex/gpt-6-astra-ultrafast:high`. Each keeps the base upstream model, following [Codex's tier-switching protocol](https://github.com/openai/codex/blob/17a9df60e420b58e3edc55efb1bb052e39492bbc/codex-rs/core/tests/suite/agent_websocket.rs#L518-L605). GPT-5.6 Sol Ultrafast is a limited preview, so most accounts get the fallback below.
|
|
111
105
|
|
|
112
106
|
Listing a choice does not establish that your account has access. Ultrafast needs an eligible plan: Pro $500 or an eligible Enterprise or Edu workspace with ChatGPT sign-in. With an API key, it is available at low default rate limits. If the OpenAI API or the Codex backend rejects the tier of a Fast or Ultrafast choice you selected (for example `400 Invalid service_tier argument`), Atomic retries once at the default tier and warns that the choice ran at default instead of failing the turn. Other providers still fail the request. With an OpenAI API key, Atomic also warns when the response reports a slower tier than the one you chose. With ChatGPT sign-in, on `openai/*` or `openai-codex/*`, it does not, because the ChatGPT backend reports `default` for every tier, including Fast and Ultrafast requests it ran at that tier. The warning, for example `ultrafast isn't available for gpt-5.6-sol on this account; ran at default`, appears under the response in interactive sessions, on stderr in print mode, and in the message `diagnostics` in JSON mode.
|
|
113
107
|
|
|
114
108
|
A tier the model does not advertise is left out of the request, which then runs at standard processing instead of failing. `flex` is always passed through. With Codex, an explicit `default` sends no tier, as in Codex. With the OpenAI API, `default` is sent as requested.
|
|
115
109
|
|
|
116
|
-
Usage is priced at the tier that served the request, using OpenAI's published per-model rates. Fast is usually twice Standard but varies by model: GPT-5.5 is 2.5x and GPT-4o is 1.7x. GPT-6 Astra
|
|
110
|
+
Usage is priced at the tier that served the request, using OpenAI's published per-model rates. Fast is usually twice Standard but varies by model: GPT-5.5 is 2.5x and GPT-4o is 1.7x. GPT-6 Astra and GPT-6.1 Sol Ultrafast rates are in [OpenAI built-in models](/models/reference#openai-built-in-models) ([OpenAI API pricing](https://developers.openai.com/api/docs/pricing?latest-pricing=ultrafast)). GPT-5.6 Sol Ultrafast has no published rates, so Atomic prices it at six times Standard ($24 input, $120 output). With an API key, if OpenAI reports a Fast request as served at Standard, the usage is priced at Standard; with ChatGPT sign-in it is priced at the tier you chose. With ChatGPT sign-in, [Codex](https://developers.openai.com/codex/speed) counts Fast against included limits at 2.5x and Astra Ultrafast at 8x, and bills purchased credits at 2x and 6x. Atomic's displayed cost uses the API rates.
|
|
117
111
|
|
|
118
112
|
Auto routing excludes Ultrafast unless `modelConstraints.allowedModels` explicitly lists its exact provider/model ID. When explicitly allowed, it uses base-model benchmark evidence without an additional latency bonus. Normal and Fast choices keep their existing automatic selection behavior. Pick a fast identity only when the latency reduction is worth the higher usage and price.
|
|
119
113
|
|
|
@@ -171,11 +165,7 @@ Keys, `ANTHROPIC_AUTH_TOKEN`, and custom authorization headers take precedence.
|
|
|
171
165
|
- Models come from the bundled `pi-ai` GitHub Copilot catalog; an OAuth credential narrows the list to the ids your account can actually use
|
|
172
166
|
- If you get "model not supported", enable it in VS Code: Copilot Chat → model selector → select model → "Enable"
|
|
173
167
|
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
Copilot metadata lists a 1,050,000-token context, 922,000-token input limit, and 128,000-token output limit; account policy still controls availability. Copilot Fast choices require exact account advertisement. Codex's Ultrafast service tier does not apply to Copilot.
|
|
177
|
-
|
|
178
|
-
Atomic includes a provisional `github-copilot/gpt-6-astra` entry routed through Copilot's Responses endpoint. Until Copilot publishes metadata, it uses Astra's known text/image capabilities, 272,000 default context, 128,000 output limit, and `low` through `max` reasoning. Zero catalog costs mean Copilot pricing is unknown, not free. Copilot metadata takes precedence when present, and the OAuth account catalog still controls availability. This entry does not guarantee that Copilot has enabled Astra for your account.
|
|
168
|
+
Copilot includes `github-copilot/gpt-6.1-sol` and `github-copilot/gpt-6-astra`, for example `atomic --model github-copilot/gpt-6.1-sol:high`. Their context windows and reasoning levels are in [OpenAI built-in models](/models/reference#openai-built-in-models). The OAuth account catalog still controls availability, so a listed model does not guarantee that Copilot has enabled it for your account.
|
|
179
169
|
|
|
180
170
|
`github-copilot/gpt-6-astra-fast` appears only when the OAuth account catalog advertises that exact fast ID. It sends `gpt-6-astra-fast` unchanged with no `service_tier`, unlike first-party OpenAI's priority route. A raw `COPILOT_GITHUB_TOKEN` cannot supply that fast entitlement.
|
|
181
171
|
|
package/docs/settings.md
CHANGED
|
@@ -344,7 +344,7 @@ Both fields must be non-negative safe integers, including ordinary settings. Inv
|
|
|
344
344
|
| `retry.provider.maxRetries` | number | `0` | Provider/SDK retry attempts. Leave unset/`0` to let Atomic's agent-level retry handle transient failures |
|
|
345
345
|
| `retry.provider.maxRetryDelayMs` | number | `60000` | Max server-requested delay before failing (60s); also caps how long an agent-level retry waits for a server retry hint |
|
|
346
346
|
|
|
347
|
-
Agent-level retries use exponential backoff capped by `retry.maxAgentDelayMs`, including the shared main-chat and workflow retry policy and summary calls. When a failed response carries a server retry hint (`Retry-After-Ms` or `Retry-After` header,
|
|
347
|
+
Agent-level retries use exponential backoff capped by `retry.maxAgentDelayMs`, including the shared main-chat and workflow retry policy and summary calls. When a failed response carries a server retry hint (`Retry-After-Ms` or `Retry-After` header, a Cloudflare 5xx `retry_after` body field, or a Google `RetryInfo.retryDelay` in the error body), Atomic waits as long as the server asks instead, up to `retry.provider.maxRetryDelayMs`. OpenAI, OpenAI-compatible, ChatGPT (Codex), Anthropic, Azure OpenAI, Mistral, Google (Generative AI and Vertex) and Amazon Bedrock providers report these hints. `retry.maxRetries` still limits the number of retries, so with the defaults a hinted outage can take up to about 3 × 60s before the turn fails or switches to a configured `fallbackModels` entry. Cloudflare 520-524 responses and connection resets count as transient errors; non-retryable 4xx and quota errors still stop immediately. This is independent of provider retry limits. Legacy `retry.maxDelayMs` still migrates to `retry.provider.maxRetryDelayMs`, not the agent cap.
|
|
348
348
|
|
|
349
349
|
When a provider requests a retry delay longer than `retry.provider.maxRetryDelayMs` (e.g., Google's "quota will reset after 5h"), the request fails immediately with an informative error instead of waiting silently. Set to `0` to disable the cap.
|
|
350
350
|
|
package/docs/storage.md
CHANGED
|
@@ -249,9 +249,9 @@ export default {
|
|
|
249
249
|
|
|
250
250
|
Select it with `sessions.storage: { "adapter": "./storage/libsql-adapter.ts" }`, `workflows.journal`, or shared top-level `storage` in [settings](/settings#workflow-storage). SDK sessions accept `sessionStore: { kind: "adapter", module, options, secrets, prefix }`; workflow runs accept `journal: { adapter, options, secrets, prefix }`. Relative module paths resolve from the agent directory, normally `~/.atomic/agent`; absolute module paths also work. A package name selects an adapter from an [installed Atomic package](#adapters-from-atomic-packages), or otherwise resolves from the agent directory. Project settings follow the same trust boundary as project extensions. A module executes with Atomic's privileges.
|
|
251
251
|
|
|
252
|
-
Adapter modules import `@bastani/atomic/storage` and `@bastani/atomic` from the running Atomic, in the npm package and the standalone binary alike, exactly as extensions do.
|
|
252
|
+
Adapter modules import `@bastani/atomic/storage` and `@bastani/atomic` from the running Atomic, in the npm package and the standalone binary alike, exactly as extensions do. This covers the adapter's entry file and the ES module and TypeScript files it imports by relative path, including `.mjs` files and `.js` files in a `"type": "module"` package. CommonJS files other than the entry file, such as a `.cjs` file or a `.js` file outside a `"type": "module"` package, resolve these specifiers from `node_modules` instead. Import the module in an ES module file and pass it to them. Adapters need no installed or linked copy of Atomic, and Atomic recognizes the storage errors they throw. List `@bastani/atomic` in an adapter package's `peerDependencies`, not its `dependencies`.
|
|
253
253
|
|
|
254
|
-
When Atomic loads an adapter to open a workflow journal, the adapter can also import `@bastani/atomic/workflows` and
|
|
254
|
+
When Atomic loads an adapter to open a workflow journal, the adapter's files can also import `@bastani/atomic/workflows` and get the running Atomic's workflows module. An `openRunJournal` hook can build on `SqlRunJournal`, and errors such as `StaleLeaseError` pass Atomic's `instanceof` checks. This holds when the same adapter module also serves sessions, for example through `sessions.storage` and `workflows.journal`. Adapters loaded only for sessions or Intercom do not get this module.
|
|
255
255
|
|
|
256
256
|
`options` is an object of SQLite scalar values or booleans. In JSON settings use strings, numbers, booleans, or null. `secrets` maps option names to `{ env }` or `{ file }`, and resolved values override same-named options. A `{ file }` secret is read as written, except that one trailing line ending (`\n` or `\r\n`) is removed, so a token saved with `turso db tokens create <db> > token` works as is. Other whitespace is kept. Keep credentials out of `options` and database descriptors. `context` contains `agentDir`, `domain: "sessions" | "journal" | "intercom"`, and an optional `signal`. Intercom brokers open the top-level `storage` selection with `domain: "intercom"` through `openDatabase`.
|
|
257
257
|
|
package/docs/tools.md
CHANGED
|
@@ -61,7 +61,7 @@ Set [codemode settings](/settings#tools) to control inline declaration size and
|
|
|
61
61
|
|
|
62
62
|
Deferred tools and their namespaces are omitted from codemode's inline catalog. Discover them with `searchTools()`, `describeNamespace()`, or `ALL_TOOLS`; `tool_search` can load matching registered tools for direct calls.
|
|
63
63
|
|
|
64
|
-
`tool_search` is inactive by default. Enable it with `"defaultTools": ["+tool_search"]` or include it in `--tools`. It ranks currently registered `codemode` and `deferred` tools by their metadata and activates matching tools for the next model call. It does not bypass session tool restrictions or replace MCP server discovery.
|
|
64
|
+
`tool_search` is inactive by default. Enable it with `"defaultTools": ["+tool_search"]` or include it in `--tools`. It ranks currently registered `codemode` and `deferred` tools by their metadata and activates matching tools for the next model call. A query that is a tool's name, or the part after a `__` separator such as `thread_read` for `mcp__app__thread_read`, ranks that tool first. It does not bypass session tool restrictions or replace MCP server discovery.
|
|
65
65
|
|
|
66
66
|
## `code_search`
|
|
67
67
|
|
package/docs/tui.md
CHANGED
|
@@ -46,6 +46,8 @@ For inspection or navigation, pass `{ purpose: "navigation" }`. Atomic then moun
|
|
|
46
46
|
|
|
47
47
|
Navigation still owns keyboard focus. In `getHostCustomUiState()` and its change listener, `blockingInlineCustomUiActive` counts all inline mounts. When navigation is present, `blockingInlineCustomUiNeedsInput` distinguishes real pending prompts from navigation-only mounts; when omitted, use `blockingInlineCustomUiActive`. This distinction is preserved across the isolated-engine bridge.
|
|
48
48
|
|
|
49
|
+
Custom components do not report Atomic as waiting for you through [program status](/terminal-setup#program-status), because `ctx.ui.custom()` also hosts loaders and other non-blocking UI. When an inline component waits for an answer, pass `blocked: { kind: "question", message: "Pick a color" }` so supporting terminals show Atomic as blocked while the component is visible. `kind` is `"question"`, `"permission"`, or `"auth"`. Overlays ignore this option.
|
|
50
|
+
|
|
49
51
|
Main-chat inline custom UIs share the editor slot. Completing or canceling an older mount leaves the current one visible; closing the current mount restores the most recently mounted UI that is still pending, including task navigation or an approval. The main editor returns only after the last inline owner closes. A foreground workflow graph keeps focus until you hide or close it, then the surviving inline UI is visible and receives input.
|
|
50
52
|
|
|
51
53
|
Reserving bottom prompts (`reserveTranscriptRows`, including `ask_user_question`) also wait out of view while inline navigation or an overlay's `deferInlineCustomUiFocus` owns input. Leaving navigation restores the same pending prompt, not a new questionnaire. Escape belongs exclusively to the active navigation view until then; once the questionnaire returns, its ordinary Escape cancellation applies.
|
|
@@ -1165,8 +1165,18 @@ interface RunResult<
|
|
|
1165
1165
|
readonly error?: string;
|
|
1166
1166
|
readonly exited?: boolean;
|
|
1167
1167
|
readonly exitReason?: string;
|
|
1168
|
+
readonly failure?: RunFailureClassification;
|
|
1168
1169
|
readonly stages: readonly StageSnapshot[];
|
|
1169
1170
|
}
|
|
1171
|
+
interface RunFailureClassification extends WorkflowSerializableObject {
|
|
1172
|
+
readonly kind: "auth" | "rate_limit" | "provider" | "cancelled" | "unknown";
|
|
1173
|
+
readonly code?: string;
|
|
1174
|
+
readonly retryable: boolean;
|
|
1175
|
+
readonly resumable: boolean;
|
|
1176
|
+
readonly recoverability?: "recoverable" | "non_recoverable" | "unknown";
|
|
1177
|
+
readonly disposition?: "active_blocked" | "terminal_killed" | "terminal_failed";
|
|
1178
|
+
readonly retryAfterMs?: number;
|
|
1179
|
+
}
|
|
1170
1180
|
interface StageSnapshot extends WorkflowSerializableObject {
|
|
1171
1181
|
readonly id: string;
|
|
1172
1182
|
readonly name: string;
|
|
@@ -1185,6 +1195,15 @@ interface StageSnapshot extends WorkflowSerializableObject {
|
|
|
1185
1195
|
|
|
1186
1196
|
Programmatic `run(...)` returns this type. `exited` identifies `ctx.exit(...)` termination, and `stages` contains the final stage snapshots.
|
|
1187
1197
|
|
|
1198
|
+
`failure` describes how a run that failed, or blocked on a failure, was classified. It is absent for runs that did not fail, and for results recorded before this field existed.
|
|
1199
|
+
- `kind` and `code` say what failed.
|
|
1200
|
+
- `retryable` says whether retrying the same work can succeed, as for a rate limit or an outage.
|
|
1201
|
+
- `resumable` says whether the run can be resumed.
|
|
1202
|
+
- `disposition` says whether the run failed (`terminal_failed`), was stopped (`terminal_killed`), or stays `running` and blocked until a resume (`active_blocked`). It is absent when the run failed outside any stage.
|
|
1203
|
+
- `retryAfterMs` is the server's retry hint, when it sent one.
|
|
1204
|
+
|
|
1205
|
+
When a child workflow fails, its parent classifies the failure from the child's `failure`, never from workflow or stage names in the error text. An ordinary child failure fails the parent; a child blocked on a rate limit blocks the parent for resume. A child result without `failure` is classified from the child's own error text.
|
|
1206
|
+
|
|
1188
1207
|
Each stage snapshot carries its graph position: `parentIds` lists the stages it depends on, and `executionOrder` is its admission order among the run's stages and tool nodes. `model` is the effective model after fallback resolution; `routerSelection` is the automatic routing choice: `model` and `effort`, ranked `fallbacks`, and `candidates`, the full IDs of every model the router could choose from after [`modelRouting`](/settings#modelrouting) and `modelConstraints` filtering. Selections recorded before `candidates` existed omit it. Timestamps are epoch milliseconds and are absent until the stage starts or ends. The runtime may replace `parentIds` before a stage starts, so read it from the latest snapshot rather than caching it.
|
|
1189
1208
|
|
|
1190
1209
|
## Programmatic usage
|
|
@@ -1253,7 +1272,7 @@ The option is off by default. Without it, Atomic creates no pool tables, worker
|
|
|
1253
1272
|
|
|
1254
1273
|
The pool runs children once any worker is ready and fails only when no worker starts. A worker that dies while it runs a child is replaced, and the child replays from its last committed checkpoint. Each worker's standard error is written to `worker-logs/<root run ID>/<worker ID>.log` in the journal's directory; worker failure errors name that file and include the end of its output. See [Worker startup and failures](/workflows/operations#worker-startup-and-failures).
|
|
1255
1274
|
|
|
1256
|
-
Workers are supported only on Linux and macOS hosts with native process identity and boot identity. Windows and hosts without those capabilities refuse activation, including when no process cap is configured. Remote hosts are not supported. Pooled SDK runs reject process-bound adapters, UI, persistence, and similar runtime overrides before worker launch. The CLI keeps its host-specific bindings at the root and gives worker sessions their own adapters.
|
|
1275
|
+
Workers are supported only on Linux and macOS hosts with native process identity and boot identity. Windows and hosts without those capabilities refuse activation, including when no process cap is configured. Remote hosts are not supported. Pooled SDK runs reject process-bound adapters, UI, persistence, and similar runtime overrides before worker launch. `ui` is accepted: it answers the `ctx.ui` prompts (`input`, `confirm`, `select`, `editor`) of children on local workers, and each answer is sent to the worker that asked. If a `ui` call rejects, the prompt fails in that child with the same error. `stageUiBroker` is accepted: a stage on a local worker that asks `ask_user_question` raises the same form there, and its answer is sent to the worker that asked. A `ctx.ui.custom` prompt in a child on a local worker fails that child with an error, since its component cannot be shown outside the worker. `stageControlRegistry` is accepted: while a stage runs on a worker, the registry holds a handle for it whose `sendUserMessage`, `steer`, `followUp` and `subscribe` reach that stage and report the same delivery actions as an in-process stage. The handle streams the stage's events only while something subscribes or a message is on its way. The CLI keeps its host-specific bindings at the root and gives worker sessions their own adapters.
|
|
1257
1276
|
|
|
1258
1277
|
Admission limits count actual resources: a session from creation through disposal, including fallback and delegated sessions, and a managed tool process until confirmed cleanup. Yielding an observation wait does not free a process permit. Subprocesses started outside Atomic's managed APIs are not counted. Host load and free-memory thresholds are launch gates, not hard OS limits. `userLimits` are reliable only when every participating run uses the configured canonical database path; they are local-user coordination, not a tenant security boundary.
|
|
1259
1278
|
|
|
@@ -178,7 +178,7 @@ Graph node cards show each model stage's effective model and thinking level abov
|
|
|
178
178
|
/workflow <name> [key=value ...]
|
|
179
179
|
/workflow connect [run-id]
|
|
180
180
|
/workflow attach [run-id] [stage-id-or-name]
|
|
181
|
-
/workflow pause [run-id|--all]
|
|
181
|
+
/workflow pause [run-id|--all] [stage-id-or-name]
|
|
182
182
|
/workflow status [run-id]
|
|
183
183
|
/workflow status --all
|
|
184
184
|
/workflow quit <run-id|--all>
|
|
@@ -194,6 +194,7 @@ Common controls:
|
|
|
194
194
|
/workflow connect <run-id> # graph viewer, including terminal runs
|
|
195
195
|
/workflow attach <run-id> <stage> # chat with a single stage
|
|
196
196
|
/workflow pause <run-id> # pause resumably
|
|
197
|
+
/workflow pause <run-id> <stage> # pause one stage; the others keep running
|
|
197
198
|
/workflow resume <run-id> [stage] msg # forward a steer message and resume
|
|
198
199
|
/workflow quit <run-id> # pause gracefully and keep the run resumable
|
|
199
200
|
/workflows [run-id] # retained alias for /workflow resume (history picker)
|
|
@@ -213,7 +214,7 @@ Surface behavior:
|
|
|
213
214
|
- **Footer context** - An attached live stage chat shows its own current folder and Git branch and mirrors live extension status lines such as the MCP server indicator. Branch changes trigger a repaint through the host's cached footer provider. The compact `/tasks` picker retains this context and the stage's model and reasoning level even while its foreground turn streams; detail, transcript, input, and confirmation pages remain fullscreen.
|
|
214
215
|
- **Working indicator** - Stage chat shows `∀` during accepted prompt startup and active work, including retained-session follow-ups. Retry, fallback, compaction, cancellation, and errors take precedence. `NO_COLOR` removes foreground colors; `ATOMIC_REDUCED_MOTION=1` makes the indicator static.
|
|
215
216
|
- **Subagent statusline** - If a subagent is running while the fullscreen workflow graph is open, the graph statusline mirrors its summary so the run remains visible; hide the graph with `h`, leave it with `ctrl+x`, or reconnect later to return to the full below-editor widget.
|
|
216
|
-
- **Run control** - Use `pause` and `resume` for resumable live work. Pause holds a stage's queued steering and follow-up items in place without dequeuing them or starting continuation; `resume` releases those items once in their existing per-queue order, but queue release alone does not start a model turn. `resume` on a non-paused run reopens the saved snapshot or overlay. Use `quit` to pause a live run gracefully while preserving it for `/workflow resume`. `/workflow pause` selects the active run by default, accepts a full run id or `--all`, and does not open a stage picker.
|
|
217
|
+
- **Run control** - Use `pause` and `resume` for resumable live work. Pause holds a stage's queued steering and follow-up items in place without dequeuing them or starting continuation; `resume` releases those items once in their existing per-queue order, but queue release alone does not start a model turn. `resume` on a non-paused run reopens the saved snapshot or overlay. Use `quit` to pause a live run gracefully while preserving it for `/workflow resume`. `/workflow pause` selects the active run by default, accepts a full run id or `--all`, and does not open a stage picker. `/workflow pause <run-id> <stage>` pauses only that stage, named by id, name or unique prefix as `/workflow attach` resolves it, and `/workflow resume <run-id> <stage>` resumes it. The workflow tool's `stageId` does the same and also targets tool nodes.
|
|
217
218
|
- **Rediscovery** - Use `/workflow reload` after adding, editing, installing, or removing workflow resources or package manifest workflow entries and you want Atomic to rediscover them in-process ([Reloading workflow resources](/workflows/operations#reloading-workflow-resources)).
|
|
218
219
|
- **Status listing** - `/workflow status` lists all retained active and terminal top-level runs by default; implementation-owned nested child runs are flattened into their parent workflow rather than listed separately. `/workflow status --all` is retained as a compatibility alias.
|
|
219
220
|
- **Status times** - `/workflow status <run-id>` displays `started` and `ended` in the system local timezone as `HH:mm:ss`. If they differ from your expected clock, check the timezone of the machine or container running Atomic and any inherited `TZ` environment setting. Elapsed durations and raw timestamps in structured results are unchanged.
|
|
@@ -322,7 +323,7 @@ Use slash commands for graph connect and stage attach because those are interact
|
|
|
322
323
|
|
|
323
324
|
### Diagnosing a stage with an empty history
|
|
324
325
|
|
|
325
|
-
The run display shows stage execution durations without extra startup rows. To inspect startup diagnostics, use the workflow tool's `stage` / `stages` output. Live stages report `startup` with the current phase, total startup age, and seconds on the current step, for example `startup reload-active (45s total, 45s on current step; active)`. Phases are model resolution, route authority, resource preparation, queued/active resource reload, SDK creation, extension binding, attachment, delivery readiness, and first dispatch. An allocated session ID is not proof of attachment; first dispatch is not proof of a provider response or reviewer approval.
|
|
326
|
+
The run display shows stage execution durations without extra startup rows. To inspect startup diagnostics, use the workflow tool's `stage` / `stages` output. Live stages report `startup` with the current phase, total startup age, and seconds on the current step, for example `startup reload-active (45s total, 45s on current step; active)`. Phases are model resolution, route authority, resource preparation, queued/active resource reload, SDK creation, extension binding, attachment, delivery readiness, and first dispatch. Once the stage sends its first prompt, the line stops tracking steps and reads `startup complete (dispatched after 2s)`, with the seconds from stage start to dispatch; it does not change again while the stage runs or after it finishes, so it does not mean the stage is stuck. An allocated session ID is not proof of attachment; first dispatch is not proof of a provider response or reviewer approval.
|
|
326
327
|
|
|
327
328
|
Resource discovery allows up to four stage reloads at a time per Atomic process. `reload-queued` means the stage is waiting for a reload slot; `reload-active` means it has started loading resources. A slow active reload holds one slot, not the entire queue. This limit is separate from the workflow's stage concurrency setting.
|
|
328
329
|
|
|
@@ -883,13 +884,25 @@ The supported placement is multiple local processes on Linux or macOS. Windows a
|
|
|
883
884
|
|
|
884
885
|
The root's existing `/workflow status`, `/workflow stages`, steering, pause, quit, and resume controls still address one root. A worker failure can replay an unfinished child from its last committed checkpoint. This is at-least-once recovery. An external effect that happens before its checkpoint can happen again; use stable logical idempotency keys for effects that must not duplicate.
|
|
885
886
|
|
|
887
|
+
### Watching stages on local workers
|
|
888
|
+
|
|
889
|
+
A stage that runs on a local worker opens from the workflow graph or `/workflow attach` like any other stage. While it runs, its chat shows the transcript so far and the reply as it streams, with tool calls. The chat header reads `on local worker`. Enter steers the running turn and Ctrl+F queues a follow-up, as for any stage. Queued messages show on the stage's graph node (`✉ N queued`) even when its chat is closed. `/workflow pause <run> <stage>` and the stage chat's pause and resume hold and release just that stage; other stages, including ones on other workers, keep running, and the paused stage keeps its worker. While the whole pool is paused, a single stage cannot be paused or resumed on its own; resume the run first.
|
|
890
|
+
|
|
891
|
+
If the worker running an open stage dies or loses its lease, the chat header shows `RECONNECTING` until the stage runs again on a replacement worker. The chat then reloads from the replacement's transcript and sends again, once each, in the order and the mode you sent them (a steer still steers the running turn, a follow-up still waits for it), the messages the replacement does not have, such as messages that were still queued. The header then shows how many were redelivered. Messages you sent stay queued for the stage even if you close its chat before they arrive, and they are delivered when the stage runs again. If the stage or its run ends first, the header shows how many messages were not delivered.
|
|
892
|
+
|
|
893
|
+
A child on a local worker can ask for input. A `ctx.ui` prompt (`input`, `confirm`, `select`, `editor`) shows on its stage like any workflow prompt: answer it in the stage chat or with the workflow tool's `answer` action, and the answer goes to the worker. A question a stage asks with `ask_user_question` shows the same form in its stage chat as for any stage; answer it there or with the workflow tool's `answer` action. A `ctx.ui.custom` prompt cannot be shown outside the worker that raised it: in a child on a local worker it fails the child with an error saying so. Use `input`, `confirm`, `select` or `editor` there, or run that child in process. If the worker dies while a `ctx.ui` prompt waits for its answer, the prompt shows again once the replacement worker reaches it; answer that one. Prompts answered before the worker died are not asked again. An `ask_user_question` form still waiting when the worker died shows again in the stage chat once the replacement worker resumes the stage, and your answer goes to the stage as that question's answer. A stage chat you keep open meanwhile shows the question the replacement asks, so you can answer there without reopening the stage. An answer you give after the worker died but before the replacement asks again is kept and given to that same question, so you are not asked twice. If the replacement asks a different question at that point (for example, one whose text depends on data), that question replaces the old one, an open stage chat shows it, and the kept answer is dropped.
|
|
894
|
+
|
|
895
|
+
Only the stages you have open stream to the root process. A pool with many workers sends nothing extra for stages nobody is watching.
|
|
896
|
+
|
|
897
|
+
When the stage finishes, close the chat and open the stage again to continue in post-mortem chat. A finished stage that ran on a local worker reopens for post-mortem chat in the same session and after a restart.
|
|
898
|
+
|
|
886
899
|
### Worker startup and failures
|
|
887
900
|
|
|
888
901
|
Each worker process must report that it is ready within `localWorkers.startupTimeoutMs` milliseconds. By default the deadline is 30000 ms, scaled up when the pool has more workers than the machine has CPU cores or the machine is already busy: it is 30000 ms times (worker count + 1-minute load average) ÷ CPU cores, at least 30000 ms and at most 600000 ms. When a pool starts, it runs children as soon as one worker is ready. A worker that exits or times out during that startup is left out of the pool, and the run fails only when no worker starts. A replacement worker that cannot start fails the run. `startupTimeoutMs` is not saved with the root, so you can change it before resuming. If a run fails with `Local worker startup timed out after … ms: workers were too slow to start`, the machine could not start the workers in time; set `workflows.localWorkers.startupTimeoutMs` (or `localWorkers.startupTimeoutMs` in the SDK) to a higher value, or use fewer workers.
|
|
889
902
|
|
|
890
903
|
A worker that exits is detected immediately, and its child is replayed from its last committed checkpoint on a replacement worker. A worker that is still running keeps its child as long as it keeps responding, even when the pool is briefly too busy to process its heartbeats. Only a running worker that has not responded for `localWorkers.leaseMs` milliseconds (30000 by default) is stopped and its child replayed. When a root is resumed after its process crashed, children that were held by the crashed process's workers are replayed on the new workers right away.
|
|
891
904
|
|
|
892
|
-
A worker that exits or is killed while it runs a child does not stop the root. The root fences that worker's attempt and replays the child from its last committed checkpoint on a replacement worker, up to three attempts per child.
|
|
905
|
+
A worker that exits or is killed while it runs a child does not stop the root. The root fences that worker's attempt and replays the child from its last committed checkpoint on a replacement worker, up to three attempts per child. A child that loses its third worker fails alone with `worker_retry_limit`; the pool and the root's other children keep running.
|
|
893
906
|
|
|
894
907
|
If the root process exits, even when it is killed, the pool's coordinator and workers exit with it. Resume the root to continue its children. If the coordinator process itself dies, its workers exit with it, and each pooled child the root is waiting on fails with the retryable `worker_lost` fault and the message `Local worker pool coordinator exited (…)`.
|
|
895
908
|
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bastani/atomic",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.46",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@bastani/atomic",
|
|
9
|
-
"version": "0.9.
|
|
9
|
+
"version": "0.9.46",
|
|
10
10
|
"license": "MIT",
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@bastani/atomic-natives": "0.9.
|
|
13
|
-
"@bastani/pi-ai": "0.9.
|
|
12
|
+
"@bastani/atomic-natives": "0.9.46",
|
|
13
|
+
"@bastani/pi-ai": "0.9.46",
|
|
14
14
|
"@earendil-works/pi-agent-core": "1.4.0",
|
|
15
15
|
"@earendil-works/pi-codemode": "1.4.0",
|
|
16
16
|
"@earendil-works/pi-tui": "1.4.0",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"open": "^11.0.1",
|
|
37
37
|
"p-limit": "^7.3.2",
|
|
38
38
|
"proper-lockfile": "4.1.2",
|
|
39
|
-
"quickjs-wasi": "3.6.
|
|
39
|
+
"quickjs-wasi": "3.6.3",
|
|
40
40
|
"semver": "7.8.5",
|
|
41
41
|
"turndown": "^7.2.0",
|
|
42
42
|
"typebox": "1.3.27",
|
|
@@ -427,18 +427,18 @@
|
|
|
427
427
|
}
|
|
428
428
|
},
|
|
429
429
|
"node_modules/@bastani/atomic-natives": {
|
|
430
|
-
"version": "0.9.
|
|
431
|
-
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives/-/atomic-natives-0.9.
|
|
430
|
+
"version": "0.9.46",
|
|
431
|
+
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives/-/atomic-natives-0.9.46.tgz",
|
|
432
432
|
"license": "MIT",
|
|
433
433
|
"optionalDependencies": {
|
|
434
|
-
"@bastani/atomic-natives-darwin-arm64": "0.9.
|
|
435
|
-
"@bastani/atomic-natives-darwin-x64": "0.9.
|
|
436
|
-
"@bastani/atomic-natives-linux-arm64-gnu": "0.9.
|
|
437
|
-
"@bastani/atomic-natives-linux-arm64-musl": "0.9.
|
|
438
|
-
"@bastani/atomic-natives-linux-x64-gnu": "0.9.
|
|
439
|
-
"@bastani/atomic-natives-linux-x64-musl": "0.9.
|
|
440
|
-
"@bastani/atomic-natives-win32-arm64-msvc": "0.9.
|
|
441
|
-
"@bastani/atomic-natives-win32-x64-msvc": "0.9.
|
|
434
|
+
"@bastani/atomic-natives-darwin-arm64": "0.9.46",
|
|
435
|
+
"@bastani/atomic-natives-darwin-x64": "0.9.46",
|
|
436
|
+
"@bastani/atomic-natives-linux-arm64-gnu": "0.9.46",
|
|
437
|
+
"@bastani/atomic-natives-linux-arm64-musl": "0.9.46",
|
|
438
|
+
"@bastani/atomic-natives-linux-x64-gnu": "0.9.46",
|
|
439
|
+
"@bastani/atomic-natives-linux-x64-musl": "0.9.46",
|
|
440
|
+
"@bastani/atomic-natives-win32-arm64-msvc": "0.9.46",
|
|
441
|
+
"@bastani/atomic-natives-win32-x64-msvc": "0.9.46"
|
|
442
442
|
},
|
|
443
443
|
"engines": {
|
|
444
444
|
"bun": ">=1.4.2",
|
|
@@ -446,8 +446,8 @@
|
|
|
446
446
|
}
|
|
447
447
|
},
|
|
448
448
|
"node_modules/@bastani/atomic-natives-darwin-arm64": {
|
|
449
|
-
"version": "0.9.
|
|
450
|
-
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-arm64/-/atomic-natives-darwin-arm64-0.9.
|
|
449
|
+
"version": "0.9.46",
|
|
450
|
+
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-arm64/-/atomic-natives-darwin-arm64-0.9.46.tgz",
|
|
451
451
|
"license": "MIT",
|
|
452
452
|
"os": [
|
|
453
453
|
"darwin"
|
|
@@ -458,8 +458,8 @@
|
|
|
458
458
|
"optional": true
|
|
459
459
|
},
|
|
460
460
|
"node_modules/@bastani/atomic-natives-darwin-x64": {
|
|
461
|
-
"version": "0.9.
|
|
462
|
-
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-x64/-/atomic-natives-darwin-x64-0.9.
|
|
461
|
+
"version": "0.9.46",
|
|
462
|
+
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-x64/-/atomic-natives-darwin-x64-0.9.46.tgz",
|
|
463
463
|
"license": "MIT",
|
|
464
464
|
"os": [
|
|
465
465
|
"darwin"
|
|
@@ -470,8 +470,8 @@
|
|
|
470
470
|
"optional": true
|
|
471
471
|
},
|
|
472
472
|
"node_modules/@bastani/atomic-natives-linux-arm64-gnu": {
|
|
473
|
-
"version": "0.9.
|
|
474
|
-
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-arm64-gnu/-/atomic-natives-linux-arm64-gnu-0.9.
|
|
473
|
+
"version": "0.9.46",
|
|
474
|
+
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-arm64-gnu/-/atomic-natives-linux-arm64-gnu-0.9.46.tgz",
|
|
475
475
|
"license": "MIT",
|
|
476
476
|
"os": [
|
|
477
477
|
"linux"
|
|
@@ -485,8 +485,8 @@
|
|
|
485
485
|
"optional": true
|
|
486
486
|
},
|
|
487
487
|
"node_modules/@bastani/atomic-natives-linux-arm64-musl": {
|
|
488
|
-
"version": "0.9.
|
|
489
|
-
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-arm64-musl/-/atomic-natives-linux-arm64-musl-0.9.
|
|
488
|
+
"version": "0.9.46",
|
|
489
|
+
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-arm64-musl/-/atomic-natives-linux-arm64-musl-0.9.46.tgz",
|
|
490
490
|
"license": "MIT",
|
|
491
491
|
"os": [
|
|
492
492
|
"linux"
|
|
@@ -500,8 +500,8 @@
|
|
|
500
500
|
"optional": true
|
|
501
501
|
},
|
|
502
502
|
"node_modules/@bastani/atomic-natives-linux-x64-gnu": {
|
|
503
|
-
"version": "0.9.
|
|
504
|
-
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-x64-gnu/-/atomic-natives-linux-x64-gnu-0.9.
|
|
503
|
+
"version": "0.9.46",
|
|
504
|
+
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-x64-gnu/-/atomic-natives-linux-x64-gnu-0.9.46.tgz",
|
|
505
505
|
"license": "MIT",
|
|
506
506
|
"os": [
|
|
507
507
|
"linux"
|
|
@@ -515,8 +515,8 @@
|
|
|
515
515
|
"optional": true
|
|
516
516
|
},
|
|
517
517
|
"node_modules/@bastani/atomic-natives-linux-x64-musl": {
|
|
518
|
-
"version": "0.9.
|
|
519
|
-
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-x64-musl/-/atomic-natives-linux-x64-musl-0.9.
|
|
518
|
+
"version": "0.9.46",
|
|
519
|
+
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-x64-musl/-/atomic-natives-linux-x64-musl-0.9.46.tgz",
|
|
520
520
|
"license": "MIT",
|
|
521
521
|
"os": [
|
|
522
522
|
"linux"
|
|
@@ -530,8 +530,8 @@
|
|
|
530
530
|
"optional": true
|
|
531
531
|
},
|
|
532
532
|
"node_modules/@bastani/atomic-natives-win32-arm64-msvc": {
|
|
533
|
-
"version": "0.9.
|
|
534
|
-
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-arm64-msvc/-/atomic-natives-win32-arm64-msvc-0.9.
|
|
533
|
+
"version": "0.9.46",
|
|
534
|
+
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-arm64-msvc/-/atomic-natives-win32-arm64-msvc-0.9.46.tgz",
|
|
535
535
|
"license": "MIT",
|
|
536
536
|
"os": [
|
|
537
537
|
"win32"
|
|
@@ -542,8 +542,8 @@
|
|
|
542
542
|
"optional": true
|
|
543
543
|
},
|
|
544
544
|
"node_modules/@bastani/atomic-natives-win32-x64-msvc": {
|
|
545
|
-
"version": "0.9.
|
|
546
|
-
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-x64-msvc/-/atomic-natives-win32-x64-msvc-0.9.
|
|
545
|
+
"version": "0.9.46",
|
|
546
|
+
"resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-x64-msvc/-/atomic-natives-win32-x64-msvc-0.9.46.tgz",
|
|
547
547
|
"license": "MIT",
|
|
548
548
|
"os": [
|
|
549
549
|
"win32"
|
|
@@ -554,15 +554,15 @@
|
|
|
554
554
|
"optional": true
|
|
555
555
|
},
|
|
556
556
|
"node_modules/@bastani/pi-ai": {
|
|
557
|
-
"version": "0.9.
|
|
558
|
-
"resolved": "https://registry.npmjs.org/@bastani/pi-ai/-/pi-ai-0.9.
|
|
557
|
+
"version": "0.9.46",
|
|
558
|
+
"resolved": "https://registry.npmjs.org/@bastani/pi-ai/-/pi-ai-0.9.46.tgz",
|
|
559
559
|
"license": "MIT",
|
|
560
560
|
"dependencies": {
|
|
561
561
|
"@anthropic-ai/sdk": "0.129.0",
|
|
562
562
|
"@aws-sdk/client-bedrock-runtime": "3.1127.0",
|
|
563
563
|
"@earendil-works/pi-telemetry": "1.4.0",
|
|
564
564
|
"@google/genai": "2.21.0",
|
|
565
|
-
"@smithy/node-http-handler": "4.
|
|
565
|
+
"@smithy/node-http-handler": "4.13.0",
|
|
566
566
|
"http-proxy-agent": "9.1.0",
|
|
567
567
|
"https-proxy-agent": "9.1.0",
|
|
568
568
|
"openai": "7.19.0",
|
|
@@ -576,6 +576,20 @@
|
|
|
576
576
|
"node": ">=22.19.0"
|
|
577
577
|
}
|
|
578
578
|
},
|
|
579
|
+
"node_modules/@bastani/pi-ai/node_modules/@smithy/node-http-handler": {
|
|
580
|
+
"version": "4.13.0",
|
|
581
|
+
"resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.13.0.tgz",
|
|
582
|
+
"integrity": "sha512-/GGcPoNJ2nzGytdAanpbx7mpp9Coa8LP+/Rpmbktr8YeLuIXs9B0SEz+X3AeonHdyzOIFJdKbN7jOZ+Tj+pMGw==",
|
|
583
|
+
"license": "Apache-2.0",
|
|
584
|
+
"dependencies": {
|
|
585
|
+
"@smithy/core": "^3.37.0",
|
|
586
|
+
"@smithy/types": "^4.19.0",
|
|
587
|
+
"tslib": "^2.6.2"
|
|
588
|
+
},
|
|
589
|
+
"engines": {
|
|
590
|
+
"node": ">=18.0.0"
|
|
591
|
+
}
|
|
592
|
+
},
|
|
579
593
|
"node_modules/@bastani/pi-ai/node_modules/agent-base": {
|
|
580
594
|
"version": "9.0.0",
|
|
581
595
|
"resolved": "https://registry.npmjs.org/agent-base/-/agent-base-9.0.0.tgz",
|
|
@@ -681,6 +695,12 @@
|
|
|
681
695
|
"node": ">=22.19.0"
|
|
682
696
|
}
|
|
683
697
|
},
|
|
698
|
+
"node_modules/@earendil-works/pi-codemode/node_modules/quickjs-wasi": {
|
|
699
|
+
"version": "3.6.2",
|
|
700
|
+
"resolved": "https://registry.npmjs.org/quickjs-wasi/-/quickjs-wasi-3.6.2.tgz",
|
|
701
|
+
"integrity": "sha512-FCqGtGOrMgzUiIrMNMA2YnsOxCNwo31dzqXvclXUC6xeT35NJLKXQJsvbeCTjvoFAwZgEAPg8U6+KAPDGXn8Mg==",
|
|
702
|
+
"license": "MIT"
|
|
703
|
+
},
|
|
684
704
|
"node_modules/@earendil-works/pi-telemetry": {
|
|
685
705
|
"version": "1.4.0",
|
|
686
706
|
"resolved": "https://registry.npmjs.org/@earendil-works/pi-telemetry/-/pi-telemetry-1.4.0.tgz",
|
|
@@ -1079,12 +1099,12 @@
|
|
|
1079
1099
|
"license": "Apache-2.0"
|
|
1080
1100
|
},
|
|
1081
1101
|
"node_modules/@smithy/core": {
|
|
1082
|
-
"version": "3.
|
|
1083
|
-
"resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.
|
|
1084
|
-
"integrity": "sha512-
|
|
1102
|
+
"version": "3.37.0",
|
|
1103
|
+
"resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.37.0.tgz",
|
|
1104
|
+
"integrity": "sha512-97imTcCyiPd8k0e9+ts/Sp0W65Dn9Ti357J7M09Ov4tI8Q1JDJVFSoAJtjEVKqfHEr3Pdo2jfolqKCaaiszH0g==",
|
|
1085
1105
|
"license": "Apache-2.0",
|
|
1086
1106
|
"dependencies": {
|
|
1087
|
-
"@smithy/types": "^4.
|
|
1107
|
+
"@smithy/types": "^4.19.0",
|
|
1088
1108
|
"tslib": "^2.6.2"
|
|
1089
1109
|
},
|
|
1090
1110
|
"engines": {
|
|
@@ -1148,9 +1168,9 @@
|
|
|
1148
1168
|
}
|
|
1149
1169
|
},
|
|
1150
1170
|
"node_modules/@smithy/types": {
|
|
1151
|
-
"version": "4.
|
|
1152
|
-
"resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.
|
|
1153
|
-
"integrity": "sha512-
|
|
1171
|
+
"version": "4.19.0",
|
|
1172
|
+
"resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.19.0.tgz",
|
|
1173
|
+
"integrity": "sha512-r7jh49VJxGerfAcTQA6gXcKc+98zOp/tqRwzYjgOE+iSQsP6cEU1hq2QzbuipmP68QtYdY9wKEhiCQZIzHgZ4Q==",
|
|
1154
1174
|
"license": "Apache-2.0",
|
|
1155
1175
|
"dependencies": {
|
|
1156
1176
|
"tslib": "^2.6.2"
|
|
@@ -3453,9 +3473,9 @@
|
|
|
3453
3473
|
}
|
|
3454
3474
|
},
|
|
3455
3475
|
"node_modules/quickjs-wasi": {
|
|
3456
|
-
"version": "3.6.
|
|
3457
|
-
"resolved": "https://registry.npmjs.org/quickjs-wasi/-/quickjs-wasi-3.6.
|
|
3458
|
-
"integrity": "sha512-
|
|
3476
|
+
"version": "3.6.3",
|
|
3477
|
+
"resolved": "https://registry.npmjs.org/quickjs-wasi/-/quickjs-wasi-3.6.3.tgz",
|
|
3478
|
+
"integrity": "sha512-gDXhV2yi6oyVcGPYnACIzVbMNsmMlwjryhh3vAk8K589Xk/J06fb2SGbx8GJQnxyJv43pdrNbfP815dTkSYb9g==",
|
|
3459
3479
|
"license": "MIT"
|
|
3460
3480
|
},
|
|
3461
3481
|
"node_modules/range-parser": {
|