@bastani/atomic 0.9.26-alpha.4 → 0.9.26-alpha.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/builtin/intercom/package.json +2 -2
  3. package/dist/builtin/mcp/package.json +1 -1
  4. package/dist/builtin/subagents/package.json +3 -3
  5. package/dist/builtin/web-access/package.json +2 -2
  6. package/dist/builtin/workflows/CHANGELOG.md +17 -0
  7. package/dist/builtin/workflows/builtin/{chunk-73p2cm5s.js → chunk-9bhs02gm.js} +318 -52
  8. package/dist/builtin/workflows/builtin/{chunk-n95myjcg.js → chunk-gts8wgjr.js} +1 -1
  9. package/dist/builtin/workflows/builtin/{chunk-ycvg8y8k.js → chunk-gw7rghda.js} +1 -1
  10. package/dist/builtin/workflows/builtin/goal.js +2 -2
  11. package/dist/builtin/workflows/builtin/index.js +3 -3
  12. package/dist/builtin/workflows/builtin/ralph.js +2 -2
  13. package/dist/builtin/workflows/package.json +2 -2
  14. package/dist/builtin/workflows/src/extension/index.bundle.mjs +1383 -266
  15. package/dist/builtin/workflows/src/index.js +1129 -234
  16. package/dist/core/agent-session-export.js +1 -1
  17. package/dist/core/agent-session-export.js.map +1 -1
  18. package/dist/core/export-html/tool-renderer.d.ts +3 -3
  19. package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
  20. package/dist/core/export-html/tool-renderer.js +3 -3
  21. package/dist/core/export-html/tool-renderer.js.map +1 -1
  22. package/dist/core/extensions/api-types.d.ts +3 -1
  23. package/dist/core/extensions/api-types.d.ts.map +1 -1
  24. package/dist/core/extensions/api-types.js.map +1 -1
  25. package/dist/core/extensions/index.d.ts +1 -1
  26. package/dist/core/extensions/index.d.ts.map +1 -1
  27. package/dist/core/extensions/index.js.map +1 -1
  28. package/dist/core/extensions/loader-api.d.ts.map +1 -1
  29. package/dist/core/extensions/loader-api.js +5 -0
  30. package/dist/core/extensions/loader-api.js.map +1 -1
  31. package/dist/core/extensions/loader-bindings.d.ts +1 -1
  32. package/dist/core/extensions/loader-bindings.d.ts.map +1 -1
  33. package/dist/core/extensions/loader-bindings.js +1 -0
  34. package/dist/core/extensions/loader-bindings.js.map +1 -1
  35. package/dist/core/extensions/runner.d.ts +3 -1
  36. package/dist/core/extensions/runner.d.ts.map +1 -1
  37. package/dist/core/extensions/runner.js +6 -0
  38. package/dist/core/extensions/runner.js.map +1 -1
  39. package/dist/core/extensions/runtime-types.d.ts +2 -1
  40. package/dist/core/extensions/runtime-types.d.ts.map +1 -1
  41. package/dist/core/extensions/runtime-types.js.map +1 -1
  42. package/dist/core/extensions/tool-types.d.ts +3 -0
  43. package/dist/core/extensions/tool-types.d.ts.map +1 -1
  44. package/dist/core/extensions/tool-types.js.map +1 -1
  45. package/dist/core/extensions/ui-types.d.ts +2 -2
  46. package/dist/core/extensions/ui-types.d.ts.map +1 -1
  47. package/dist/core/extensions/ui-types.js.map +1 -1
  48. package/dist/core/extensions/workflow-run-control.d.ts +3 -0
  49. package/dist/core/extensions/workflow-run-control.d.ts.map +1 -1
  50. package/dist/core/extensions/workflow-run-control.js.map +1 -1
  51. package/dist/core/fast-model-routing.d.ts.map +1 -1
  52. package/dist/core/fast-model-routing.js +1 -5
  53. package/dist/core/fast-model-routing.js.map +1 -1
  54. package/dist/core/model-config.d.ts +36 -0
  55. package/dist/core/model-config.d.ts.map +1 -1
  56. package/dist/core/model-config.js +14 -2
  57. package/dist/core/model-config.js.map +1 -1
  58. package/dist/core/model-resolver-defaults.js +1 -1
  59. package/dist/core/model-resolver-defaults.js.map +1 -1
  60. package/dist/core/package-manager-auto-resources.d.ts.map +1 -1
  61. package/dist/core/package-manager-auto-resources.js +6 -2
  62. package/dist/core/package-manager-auto-resources.js.map +1 -1
  63. package/dist/core/package-manager-resolver.d.ts.map +1 -1
  64. package/dist/core/package-manager-resolver.js +4 -2
  65. package/dist/core/package-manager-resolver.js.map +1 -1
  66. package/dist/core/provider-composer-internal.d.ts +2 -1
  67. package/dist/core/provider-composer-internal.d.ts.map +1 -1
  68. package/dist/core/provider-composer-internal.js +13 -0
  69. package/dist/core/provider-composer-internal.js.map +1 -1
  70. package/dist/core/settings-manager-resource-accessors.js +7 -3
  71. package/dist/core/settings-manager-resource-accessors.js.map +1 -1
  72. package/dist/core/settings-merge.d.ts.map +1 -1
  73. package/dist/core/settings-merge.js +10 -0
  74. package/dist/core/settings-merge.js.map +1 -1
  75. package/dist/core/settings-types.d.ts +7 -1
  76. package/dist/core/settings-types.d.ts.map +1 -1
  77. package/dist/core/settings-types.js.map +1 -1
  78. package/dist/extensions/mcp/index.d.ts.map +1 -1
  79. package/dist/extensions/mcp/index.js +20 -1
  80. package/dist/extensions/mcp/index.js.map +1 -1
  81. package/dist/extensions/mcp/tools.d.ts +3 -1
  82. package/dist/extensions/mcp/tools.d.ts.map +1 -1
  83. package/dist/extensions/mcp/tools.js +19 -13
  84. package/dist/extensions/mcp/tools.js.map +1 -1
  85. package/dist/index.d.ts +2 -2
  86. package/dist/index.d.ts.map +1 -1
  87. package/dist/index.js.map +1 -1
  88. package/dist/modes/interactive/components/chat-message-renderer.d.ts +2 -3
  89. package/dist/modes/interactive/components/chat-message-renderer.d.ts.map +1 -1
  90. package/dist/modes/interactive/components/chat-message-renderer.js.map +1 -1
  91. package/dist/modes/interactive/components/config-selector-list.d.ts.map +1 -1
  92. package/dist/modes/interactive/components/config-selector-list.js +3 -1
  93. package/dist/modes/interactive/components/config-selector-list.js.map +1 -1
  94. package/dist/modes/interactive/components/config-selector-project-scope.d.ts.map +1 -1
  95. package/dist/modes/interactive/components/config-selector-project-scope.js +2 -1
  96. package/dist/modes/interactive/components/config-selector-project-scope.js.map +1 -1
  97. package/dist/modes/interactive/components/tool-execution.d.ts +2 -5
  98. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  99. package/dist/modes/interactive/components/tool-execution.js +14 -40
  100. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  101. package/dist/modes/interactive/interactive-mode-surface.d.ts +3 -3
  102. package/dist/modes/interactive/interactive-mode-surface.d.ts.map +1 -1
  103. package/dist/modes/interactive/interactive-mode-surface.js.map +1 -1
  104. package/dist/modes/interactive/interactive-session-runtime.js +6 -1
  105. package/dist/modes/interactive/interactive-session-runtime.js.map +1 -1
  106. package/dist/modes/interactive/interactive-startup.d.ts.map +1 -1
  107. package/dist/modes/interactive/interactive-startup.js +5 -0
  108. package/dist/modes/interactive/interactive-startup.js.map +1 -1
  109. package/dist/modes/interactive-engine/engine-custom-ui.d.ts.map +1 -1
  110. package/dist/modes/interactive-engine/engine-custom-ui.js +9 -0
  111. package/dist/modes/interactive-engine/engine-custom-ui.js.map +1 -1
  112. package/dist/modes/interactive-engine/engine-render-service.d.ts.map +1 -1
  113. package/dist/modes/interactive-engine/engine-render-service.js +10 -1
  114. package/dist/modes/interactive-engine/engine-render-service.js.map +1 -1
  115. package/dist/utils/image-convert.d.ts +5 -0
  116. package/dist/utils/image-convert.d.ts.map +1 -1
  117. package/dist/utils/image-convert.js +36 -6
  118. package/dist/utils/image-convert.js.map +1 -1
  119. package/docs/extensions.md +6 -0
  120. package/docs/models/reference.md +28 -1
  121. package/docs/models.md +4 -0
  122. package/docs/providers.md +10 -0
  123. package/docs/sdk.md +26 -2
  124. package/docs/settings.md +28 -1
  125. package/docs/workflows/operations.md +40 -4
  126. package/npm-shrinkwrap.json +71 -92
  127. package/package.json +8 -8
@@ -458,7 +458,7 @@ The readiness prompt can be answered in the attached stage UI or with `workflow(
458
458
 
459
459
  ## Durable Workflows and Cross-Session Resume
460
460
 
461
- Atomic workflows use **DBOS/Postgres as their sole persistent workflow backend**. Atomic configures and launches DBOS lazily on the first workflow action, reuses that process-wide instance, and awaits readiness before workflow execution, resume, inspection, or deletion can access durable state. `DBOS_SYSTEM_DATABASE_URL` may select an existing database. Once DBOS is ready, query and write failures fail the workflow action and never switch backends.
461
+ Atomic workflows use **DBOS/Postgres as their sole persistent workflow backend**. Atomic configures and launches DBOS lazily on the first workflow action, reuses that process-wide instance, and awaits readiness before workflow execution, resume, inspection, or deletion can access durable state. `DBOS_SYSTEM_DATABASE_URL` or `workflows.durability` in settings may select an existing database. Once DBOS is ready, query and write failures fail the workflow action and never switch backends.
462
462
 
463
463
  SDK callers can choose the backend and database for each `run()` call, and require durable state so a run fails fast instead of using the in-memory fallback; see [Choosing the durable backend](/workflows/api-reference#choosing-the-durable-backend).
464
464
 
@@ -484,7 +484,7 @@ Awaited checkpoint writes also have a 10-second database deadline. If a checkpoi
484
484
 
485
485
  If recovery reports `Workflow definition not found`, restore the matching workflow definition and run `/workflow reload`, then retry resume with the same full run ID. A failed resume preparation does not discard the recovery target or saved receipts. Do not start a new run to bypass the missing definition.
486
486
 
487
- **Zero-configuration local database.** Without `DBOS_SYSTEM_DATABASE_URL`, Atomic uses its own embedded Postgres for DBOS. It requires no Docker daemon, system Postgres install, install lifecycle script, or first-run download.
487
+ **Zero-configuration local database.** Without an explicit database URL from the environment or settings, Atomic uses its own embedded Postgres for DBOS. It requires no Docker daemon, system Postgres install, install lifecycle script, or first-run download.
488
488
 
489
489
  Supported targets are Linux x64/ARM64 with glibc or musl, macOS x64/ARM64, and Windows x64/ARM64 using x64 emulation. Linux musl uses PostgreSQL 18.6; other targets use 18.4. Both use the compatible major-version-18 cluster at `~/.atomic/postgres/v18`, with preferred port `5439`.
490
490
 
@@ -514,6 +514,8 @@ Atomic checks PostgreSQL readiness and matches the server to the managed data an
514
514
 
515
515
  After attachment, Atomic checks the managed server's SQL and process identity before borrowing database connections and every five seconds while idle. Lost health discards old connections. One elected process may restart the existing managed cluster under the shared setup lock; other sessions reconnect to its verified, persisted port. Recovery never initializes missing data, signals an unrelated listener, switches to Docker, or restarts the DBOS executor.
516
516
 
517
+ If the managed server has stopped, the next workflow database action can restart the existing cluster even when `postmaster.opts` is missing. Atomic still requires trusted ownership records, the original cluster identity, and a verified runtime. A hard identity, ownership, or filesystem failure refuses recovery rather than guessing which server or data to use.
518
+
517
519
  Each process makes at most three recovery attempts per check, with short
518
520
  backoffs. Later health checks retry after a cooldown if the problem persists.
519
521
  If the retained PostgreSQL runtime is damaged or missing, reinstall a complete
@@ -546,7 +548,21 @@ New Docker fallback containers publish PostgreSQL on `127.0.0.1` at `PGPORT`, or
546
548
 
547
549
  Fallback starts only after failed DBOS initialization has been cleaned up. If Atomic reports `Workflow backend cleanup failed`, workflow startup stops rather than starting another backend alongside an unconfirmed executor. Correct the reported shutdown problem and restart Atomic; do not delete database data to bypass it.
548
550
 
549
- **Multiple concurrent Atomic sessions.** A workflow running in another process is not a resume target. Fresh-heartbeat rows are hidden from resume pickers and refused by direct resume. After a crash, the heartbeat becomes stale in about two minutes and inspection reports `crashed`. Concurrent attempts to resume the same run admit one executor; a stale request reports that the run changed.
551
+ **Multiple concurrent Atomic sessions.** A workflow with a healthy connected owner is not a resume target. Fresh progress and database ownership are checked independently, so a quiet long-running tool stays protected. After the owning connection is lost and progress becomes stale in about two minutes, inspection reports `crashed`. Concurrent attempts to resume the same run admit one executor; a stale request reports that the run changed.
552
+
553
+ For SDK crash recovery, save the full run UUID and create a fresh authorized session with the original working directory and workflow database configuration. `session.workflows.getRun(runId)` and `getStages(runId)` inspect its durable state without taking ownership. Once `getRun()` reports `crashed`, `session.workflows.resume(runId)` can adopt the root after the database excludes its previous owner and unfinished database writes. A healthy connected owner stays protected despite stale tool progress or copied VM boot/PID identity. This works with `SessionManager.inMemory()` without reopening a session file. Competing adopters cannot both claim the same generation. Missing ownership metadata, another working directory, or unavailable ownership verification keeps the run read-only; older unfenced runs cannot use distributed adoption.
554
+
555
+ For live-cloned SDK hosts, configure one shared authoritative PostgreSQL server/database. A copied managed PostgreSQL directory in another VM is a separate coordinator, not a shared database, even when its `localhost` connection URL is identical. Independent database copies cannot coordinate ownership across VMs.
556
+
557
+ The workflow database endpoint must preserve database sessions. Use direct PostgreSQL connections or session-mode pooling, not transaction-mode or statement-mode pooling. Ownership locks and write authorization depend on that session affinity.
558
+
559
+ Ownership fencing prevents a disconnected executor from saving later checkpoints or workflow metadata. It does not stop arbitrary external code already running in that executor. After connection loss, the replacement may retry an unfinished `ctx.tool` while the old callback is still active. Use idempotent external effects and stable operation keys; do not assume exactly-once callback execution. Completed durable checkpoints still replay without executing those callbacks again.
560
+
561
+ If Atomic reports that its database ownership connection was lost, restore database availability, inspect the retained run UUID, and resume explicitly. Recovery uses a fresh execution generation; it does not restore the disconnected executor's mutation authority. Preserve the workflow database and completed checkpoints.
562
+
563
+ Older unfenced runs require controlled enrollment rather than automatic foreign-owner adoption. Stop all older Atomic workers using that workflow database, upgrade the recovery host, and keep the original database and workflow definition. In an authorized SDK session with the original working directory, use the full UUID with `session.workflows.resume(runId, { legacyRecovery: { olderWorkersStopped: true } })`. This explicit assertion enrolls the legacy root and preserves its completed checkpoints; it does not stop workers itself. Do not use it while an older worker may still be running. Reads and existing owner-scoped controls do not require enrollment. See [SDK run control](/sdk#workflow-run-control) for the recovery example.
564
+
565
+ If the recovery host crashes between enrollment and execution, inspect the full UUID and retry that explicit SDK option from a fresh session after its database ownership connection is gone. Only an interrupted enrollment is eligible for this retry; healthy owners and other fenced paused or blocked runs remain protected.
550
566
 
551
567
  Independent root workflows persist independently. Nested workflows share their root's ordering.
552
568
 
@@ -559,6 +575,8 @@ effect succeeded. Inspect `/workflow status <full-run-uuid>` for the original ru
559
575
  and explicitly resume it when eligible. Do not start a duplicate run or delete
560
576
  `v18` or `v18.shared` to bypass an identity or availability error.
561
577
 
578
+ Database-unavailable admission errors and status `dependencyError` include the selected database provider, its endpoint without credentials or URL options, and the last retained health-probe or recovery failure. A cooldown error keeps the recovery failure visible. Use that reason to repair a missing runtime or configuration; preserve data and ownership records when identity or filesystem checks fail. After repair, inspect and explicitly resume the original run ID.
579
+
562
580
  For an explicit `DBOS_SYSTEM_DATABASE_URL`, Atomic does not manage the external
563
581
  database. Restore that endpoint or correct its credentials and TLS settings,
564
582
  then inspect and resume the original workflow. If the Docker fallback is in use,
@@ -733,13 +751,31 @@ That history does not authorize any live release action.
733
751
 
734
752
  ### Configuring DBOS/Postgres
735
753
 
754
+ Choose a hosted or separately managed database persistently in `~/.atomic/agent/settings.json` or trusted project `.atomic/settings.json`:
755
+
756
+ ```json
757
+ {
758
+ "workflows": {
759
+ "durability": {
760
+ "systemDatabaseUrlFile": "~/.atomic/neon/direct.url"
761
+ }
762
+ }
763
+ }
764
+ ```
765
+
766
+ The file contains only the PostgreSQL connection URL; surrounding whitespace and a trailing newline are trimmed. Use `systemDatabaseUrl` instead for an inline URL, but do not set both. Relative file paths resolve beside the settings file that declares them, such as the global agent directory or project `.atomic` directory. Protect the file from other accounts and keep credentials out of version control. Existing workflow path arrays remain supported; when using the object form, put resource paths in `workflows.paths`.
767
+
768
+ `DBOS_SYSTEM_DATABASE_URL` overrides settings. A trusted project `durability` object replaces the global selection. Without either, Atomic provisions managed PostgreSQL, then tries Docker if provisioning fails. An explicit URL uses only its chosen endpoint, even on connection failure. Invalid settings, including unrecognized `durability` keys, and unreadable or empty credential files stop initialization rather than choosing another database. Restart Atomic to change the selection; existing runs stay in their original database and are not migrated.
769
+
770
+ On first database initialization, interactive and RPC sessions display the selected provider and host without credentials or URL options. A Docker selection is labelled `Docker fallback`. Headless sessions, including SDK hosts without a UI, write only the Docker fallback notice to stderr; managed and configured selections stay silent there. In-memory degradation retains its existing warning. See [Workflow database settings](/settings#workflow-database).
771
+
736
772
  **Linux musl and Windows ARM64.** Musl installations include Alpine/musl PostgreSQL 18.6. Windows ARM64 runs PostgreSQL 18.4 x64 through emulation and requires Windows 11 plus the Microsoft Visual C++ x64 v14 Redistributable. This is not native PostgreSQL ARM64; Windows 10 on ARM is unsupported.
737
773
 
738
774
  Set `ATOMIC_POSTGRES_RUNTIME_DIR` to a complete extracted runtime containing `bin/initdb`, `bin/pg_ctl`, and `bin/postgres` to override packaged runtime discovery, including in air-gapped deployments. Otherwise DBOS/Postgres durability requires no setup on supported local platforms. To use an existing Postgres database, set `DBOS_SYSTEM_DATABASE_URL` before starting Atomic; that explicit URL retains precedence over embedded provisioning. Atomic provisions embedded Postgres next (with drop-privilege support when running as root on Linux), then Docker as a platform fallback. The DBOS SDK ships with `@bastani/atomic`. If no durable backend can be provisioned, workflows run on a process-local in-memory backend with a loud non-durable warning — never on the legacy per-workflow file store under `~/.atomic/workflow-durable` — and cross-process resume is unavailable until Postgres provisioning is fixed. Interactive and RPC actions show the warning as a display-only notification that is not added to agent/model context. Print and other headless actions, where no usable UI exists, write the actionable diagnostic to the console instead.
739
775
 
740
776
  Keep the complete extracted archive, not only the `atomic` executable. `ATOMIC_POSTGRES_RUNTIME_DIR` accepts complete legacy runtimes without provenance; an incomplete override falls through to installed candidates. Packaging failures do not require deleting or reinitializing the v18 cluster.
741
777
 
742
- If starting workflows reports a missing PostgreSQL executable or library, such as `libzstd.1.dylib` on macOS, download a repaired release and reinstall the complete archive. The installers do not check the bundled PostgreSQL runtime, so the problem shows up the first time Atomic starts its embedded database. With `DBOS_SYSTEM_DATABASE_URL` set, Atomic never uses the bundled runtime. If embedded startup fails and the Docker fallback succeeds, workflows run on Docker without reporting the embedded failure. Check `~/.atomic/postgres/v18.log` if the managed database never starts. Do not copy libraries from another version or delete your PostgreSQL data directory: this is an installation problem, not database corruption. An already-running server does not prove that the new installation is usable.
778
+ If starting workflows reports a missing PostgreSQL executable or library, such as `libzstd.1.dylib` on macOS, download a repaired release and reinstall the complete archive. The installers do not check the bundled PostgreSQL runtime, so the problem shows up the first time Atomic starts its embedded database. With an explicit database URL from the environment or settings, Atomic never uses the bundled runtime. If embedded startup fails and the Docker fallback succeeds, workflows run on Docker and the backend notice identifies that fallback. Check `~/.atomic/postgres/v18.log` if the managed database never starts. Do not copy libraries from another version or delete your PostgreSQL data directory: this is an installation problem, not database corruption. An already-running server does not prove that the new installation is usable.
743
779
 
744
780
  To check an archive runtime, set `runtime` to its `node_modules/@bastani/atomic-natives/postgres-runtime`, then run `"$runtime/bin/postgres" --version` and `"$runtime/bin/pg_ctl" --version`. On Windows use the corresponding `.exe` files in PowerShell. Both must succeed. If a library-link or copy error is reported, repair the complete installation instead of mixing libraries from different releases.
745
781
 
@@ -1,22 +1,22 @@
1
1
  {
2
2
  "name": "@bastani/atomic",
3
- "version": "0.9.26-alpha.4",
3
+ "version": "0.9.26-alpha.6",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@bastani/atomic",
9
- "version": "0.9.26-alpha.4",
9
+ "version": "0.9.26-alpha.6",
10
10
  "license": "MIT",
11
11
  "dependencies": {
12
- "@bastani/atomic-natives": "0.9.26-alpha.4",
13
- "@bastani/pi-ai": "0.9.26-alpha.4",
12
+ "@bastani/atomic-natives": "0.9.26-alpha.6",
13
+ "@bastani/pi-ai": "0.9.26-alpha.6",
14
14
  "@dbos-inc/dbos-sdk": "4.25.14",
15
- "@earendil-works/pi-agent-core": "1.0.0",
16
- "@earendil-works/pi-client": "1.0.0",
17
- "@earendil-works/pi-codemode": "1.0.0",
18
- "@earendil-works/pi-protocol": "1.0.0",
19
- "@earendil-works/pi-tui": "1.0.0",
15
+ "@earendil-works/pi-agent-core": "1.0.2",
16
+ "@earendil-works/pi-client": "1.0.2",
17
+ "@earendil-works/pi-codemode": "1.0.2",
18
+ "@earendil-works/pi-protocol": "1.0.2",
19
+ "@earendil-works/pi-tui": "1.0.2",
20
20
  "@modelcontextprotocol/ext-apps": "^1.7.5",
21
21
  "@modelcontextprotocol/sdk": "1.30.0",
22
22
  "@mozilla/readability": "^0.6.0",
@@ -61,9 +61,9 @@
61
61
  }
62
62
  },
63
63
  "node_modules/@anthropic-ai/sdk": {
64
- "version": "0.124.0",
65
- "resolved": "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.124.0.tgz",
66
- "integrity": "sha512-cN5O8i9UVxHeOQAzj/XjshWXG8KiibJDw9OGpH2Z/eR3n/RBxdoLxDJOcfqAJWvjaMDFfHTBADU04hWRJVkDyA==",
64
+ "version": "0.129.0",
65
+ "resolved": "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.129.0.tgz",
66
+ "integrity": "sha512-MH7LB20kNpGLUpPTe2OG5XvL/KhX8HUO9XyBaFjgFk6TLS4Xjt0VPIuMKywe7POKKPslX+QxSlVok9e+8kG5Nw==",
67
67
  "license": "MIT",
68
68
  "dependencies": {
69
69
  "json-schema-to-ts": "^3.1.1",
@@ -432,18 +432,18 @@
432
432
  }
433
433
  },
434
434
  "node_modules/@bastani/atomic-natives": {
435
- "version": "0.9.26-alpha.4",
436
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives/-/atomic-natives-0.9.26-alpha.4.tgz",
435
+ "version": "0.9.26-alpha.6",
436
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives/-/atomic-natives-0.9.26-alpha.6.tgz",
437
437
  "license": "MIT",
438
438
  "optionalDependencies": {
439
- "@bastani/atomic-natives-darwin-arm64": "0.9.26-alpha.4",
440
- "@bastani/atomic-natives-darwin-x64": "0.9.26-alpha.4",
441
- "@bastani/atomic-natives-linux-arm64-gnu": "0.9.26-alpha.4",
442
- "@bastani/atomic-natives-linux-arm64-musl": "0.9.26-alpha.4",
443
- "@bastani/atomic-natives-linux-x64-gnu": "0.9.26-alpha.4",
444
- "@bastani/atomic-natives-linux-x64-musl": "0.9.26-alpha.4",
445
- "@bastani/atomic-natives-win32-arm64-msvc": "0.9.26-alpha.4",
446
- "@bastani/atomic-natives-win32-x64-msvc": "0.9.26-alpha.4"
439
+ "@bastani/atomic-natives-darwin-arm64": "0.9.26-alpha.6",
440
+ "@bastani/atomic-natives-darwin-x64": "0.9.26-alpha.6",
441
+ "@bastani/atomic-natives-linux-arm64-gnu": "0.9.26-alpha.6",
442
+ "@bastani/atomic-natives-linux-arm64-musl": "0.9.26-alpha.6",
443
+ "@bastani/atomic-natives-linux-x64-gnu": "0.9.26-alpha.6",
444
+ "@bastani/atomic-natives-linux-x64-musl": "0.9.26-alpha.6",
445
+ "@bastani/atomic-natives-win32-arm64-msvc": "0.9.26-alpha.6",
446
+ "@bastani/atomic-natives-win32-x64-msvc": "0.9.26-alpha.6"
447
447
  },
448
448
  "engines": {
449
449
  "bun": ">=1.4.2",
@@ -451,8 +451,8 @@
451
451
  }
452
452
  },
453
453
  "node_modules/@bastani/atomic-natives-darwin-arm64": {
454
- "version": "0.9.26-alpha.4",
455
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-arm64/-/atomic-natives-darwin-arm64-0.9.26-alpha.4.tgz",
454
+ "version": "0.9.26-alpha.6",
455
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-arm64/-/atomic-natives-darwin-arm64-0.9.26-alpha.6.tgz",
456
456
  "license": "MIT",
457
457
  "os": [
458
458
  "darwin"
@@ -463,8 +463,8 @@
463
463
  "optional": true
464
464
  },
465
465
  "node_modules/@bastani/atomic-natives-darwin-x64": {
466
- "version": "0.9.26-alpha.4",
467
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-x64/-/atomic-natives-darwin-x64-0.9.26-alpha.4.tgz",
466
+ "version": "0.9.26-alpha.6",
467
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-x64/-/atomic-natives-darwin-x64-0.9.26-alpha.6.tgz",
468
468
  "license": "MIT",
469
469
  "os": [
470
470
  "darwin"
@@ -475,8 +475,8 @@
475
475
  "optional": true
476
476
  },
477
477
  "node_modules/@bastani/atomic-natives-linux-arm64-gnu": {
478
- "version": "0.9.26-alpha.4",
479
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-arm64-gnu/-/atomic-natives-linux-arm64-gnu-0.9.26-alpha.4.tgz",
478
+ "version": "0.9.26-alpha.6",
479
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-arm64-gnu/-/atomic-natives-linux-arm64-gnu-0.9.26-alpha.6.tgz",
480
480
  "license": "MIT",
481
481
  "os": [
482
482
  "linux"
@@ -490,8 +490,8 @@
490
490
  "optional": true
491
491
  },
492
492
  "node_modules/@bastani/atomic-natives-linux-arm64-musl": {
493
- "version": "0.9.26-alpha.4",
494
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-arm64-musl/-/atomic-natives-linux-arm64-musl-0.9.26-alpha.4.tgz",
493
+ "version": "0.9.26-alpha.6",
494
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-arm64-musl/-/atomic-natives-linux-arm64-musl-0.9.26-alpha.6.tgz",
495
495
  "license": "MIT",
496
496
  "os": [
497
497
  "linux"
@@ -505,8 +505,8 @@
505
505
  "optional": true
506
506
  },
507
507
  "node_modules/@bastani/atomic-natives-linux-x64-gnu": {
508
- "version": "0.9.26-alpha.4",
509
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-x64-gnu/-/atomic-natives-linux-x64-gnu-0.9.26-alpha.4.tgz",
508
+ "version": "0.9.26-alpha.6",
509
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-x64-gnu/-/atomic-natives-linux-x64-gnu-0.9.26-alpha.6.tgz",
510
510
  "license": "MIT",
511
511
  "os": [
512
512
  "linux"
@@ -520,8 +520,8 @@
520
520
  "optional": true
521
521
  },
522
522
  "node_modules/@bastani/atomic-natives-linux-x64-musl": {
523
- "version": "0.9.26-alpha.4",
524
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-x64-musl/-/atomic-natives-linux-x64-musl-0.9.26-alpha.4.tgz",
523
+ "version": "0.9.26-alpha.6",
524
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-x64-musl/-/atomic-natives-linux-x64-musl-0.9.26-alpha.6.tgz",
525
525
  "license": "MIT",
526
526
  "os": [
527
527
  "linux"
@@ -535,8 +535,8 @@
535
535
  "optional": true
536
536
  },
537
537
  "node_modules/@bastani/atomic-natives-win32-arm64-msvc": {
538
- "version": "0.9.26-alpha.4",
539
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-arm64-msvc/-/atomic-natives-win32-arm64-msvc-0.9.26-alpha.4.tgz",
538
+ "version": "0.9.26-alpha.6",
539
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-arm64-msvc/-/atomic-natives-win32-arm64-msvc-0.9.26-alpha.6.tgz",
540
540
  "license": "MIT",
541
541
  "os": [
542
542
  "win32"
@@ -547,8 +547,8 @@
547
547
  "optional": true
548
548
  },
549
549
  "node_modules/@bastani/atomic-natives-win32-x64-msvc": {
550
- "version": "0.9.26-alpha.4",
551
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-x64-msvc/-/atomic-natives-win32-x64-msvc-0.9.26-alpha.4.tgz",
550
+ "version": "0.9.26-alpha.6",
551
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-x64-msvc/-/atomic-natives-win32-x64-msvc-0.9.26-alpha.6.tgz",
552
552
  "license": "MIT",
553
553
  "os": [
554
554
  "win32"
@@ -559,13 +559,13 @@
559
559
  "optional": true
560
560
  },
561
561
  "node_modules/@bastani/pi-ai": {
562
- "version": "0.9.26-alpha.4",
563
- "resolved": "https://registry.npmjs.org/@bastani/pi-ai/-/pi-ai-0.9.26-alpha.4.tgz",
562
+ "version": "0.9.26-alpha.6",
563
+ "resolved": "https://registry.npmjs.org/@bastani/pi-ai/-/pi-ai-0.9.26-alpha.6.tgz",
564
564
  "license": "MIT",
565
565
  "dependencies": {
566
566
  "@anthropic-ai/sdk": "0.129.0",
567
567
  "@aws-sdk/client-bedrock-runtime": "3.1127.0",
568
- "@earendil-works/pi-telemetry": "1.0.0",
568
+ "@earendil-works/pi-telemetry": "1.0.2",
569
569
  "@google/genai": "2.21.0",
570
570
  "@smithy/node-http-handler": "4.12.1",
571
571
  "http-proxy-agent": "9.1.0",
@@ -581,27 +581,6 @@
581
581
  "node": ">=22.19.0"
582
582
  }
583
583
  },
584
- "node_modules/@bastani/pi-ai/node_modules/@anthropic-ai/sdk": {
585
- "version": "0.129.0",
586
- "resolved": "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.129.0.tgz",
587
- "integrity": "sha512-MH7LB20kNpGLUpPTe2OG5XvL/KhX8HUO9XyBaFjgFk6TLS4Xjt0VPIuMKywe7POKKPslX+QxSlVok9e+8kG5Nw==",
588
- "license": "MIT",
589
- "dependencies": {
590
- "json-schema-to-ts": "^3.1.1",
591
- "standardwebhooks": "^1.0.0"
592
- },
593
- "peerDependencies": {
594
- "zod": "^3.25.0 || ^4.0.0"
595
- },
596
- "peerDependenciesMeta": {
597
- "zod": {
598
- "optional": true
599
- }
600
- },
601
- "bin": {
602
- "anthropic-ai-sdk": "bin/cli"
603
- }
604
- },
605
584
  "node_modules/@bastani/pi-ai/node_modules/agent-base": {
606
585
  "version": "9.0.0",
607
586
  "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-9.0.0.tgz",
@@ -687,9 +666,9 @@
687
666
  }
688
667
  },
689
668
  "node_modules/@earendil-works/chord": {
690
- "version": "1.0.0",
691
- "resolved": "https://registry.npmjs.org/@earendil-works/chord/-/chord-1.0.0.tgz",
692
- "integrity": "sha512-BIfWfrByM0pKq6tfKYXuwx0ed2CvaqIM3EDA7Dps+fP+d3CiPWdlHi1cDsJC05llqKJoRz5//G0hz0yQwwjISQ==",
669
+ "version": "1.0.2",
670
+ "resolved": "https://registry.npmjs.org/@earendil-works/chord/-/chord-1.0.2.tgz",
671
+ "integrity": "sha512-eUXGZjigyEQsFiT/oBJUOaCrzYZRmqf8AgLrlbyuS4u02hjSVhLYRi3xqk1o4UERCgRfjRegqwj/oucawIR7YQ==",
693
672
  "license": "MIT",
694
673
  "dependencies": {
695
674
  "esbuild": "0.28.2"
@@ -699,12 +678,12 @@
699
678
  }
700
679
  },
701
680
  "node_modules/@earendil-works/pi-agent-core": {
702
- "version": "1.0.0",
703
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-agent-core/-/pi-agent-core-1.0.0.tgz",
704
- "integrity": "sha512-bHFONjtEBDqiV+g1DmmtkSlfAaqHELr+XO+6I5Nah4gswwZrLJO4yZB/JjsnlI4AKWTayBLfgS6DCbeBBz9e2Q==",
681
+ "version": "1.0.2",
682
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-agent-core/-/pi-agent-core-1.0.2.tgz",
683
+ "integrity": "sha512-VRfewY1R5mbedJzlm01PxdCmqU8QrSXjXXhV50bp6rvVuT8YYQv1inTXRY4YzssmGAYpkC2rXipJKP5BpBFXew==",
705
684
  "license": "MIT",
706
685
  "dependencies": {
707
- "@earendil-works/pi-ai": "^1.0.0",
686
+ "@earendil-works/pi-ai": "^1.0.2",
708
687
  "typebox": "1.3.27"
709
688
  },
710
689
  "engines": {
@@ -712,14 +691,14 @@
712
691
  }
713
692
  },
714
693
  "node_modules/@earendil-works/pi-ai": {
715
- "version": "1.0.0",
716
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-1.0.0.tgz",
717
- "integrity": "sha512-3/W1vdDaVtpeMd23ElvJC12HLA5yS/BGqqcXF+0SK082dN7cbgNcCwguTBRBC258Ke8SzSvUW1B75iAf8w8IxA==",
694
+ "version": "1.0.2",
695
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-ai/-/pi-ai-1.0.2.tgz",
696
+ "integrity": "sha512-JP59xGlSAQ/HhQ6EHN5qmneBlWfDyu6FPPryAvAaSo8A38ubAsEpS9YisCM5Jbbns0srrDffLZonE0OXorHI5A==",
718
697
  "license": "MIT",
719
698
  "dependencies": {
720
- "@anthropic-ai/sdk": "0.124.0",
699
+ "@anthropic-ai/sdk": "0.129.0",
721
700
  "@aws-sdk/client-bedrock-runtime": "3.1127.0",
722
- "@earendil-works/pi-telemetry": "^1.0.0",
701
+ "@earendil-works/pi-telemetry": "^1.0.2",
723
702
  "@google/genai": "2.21.0",
724
703
  "@smithy/node-http-handler": "4.12.1",
725
704
  "http-proxy-agent": "9.1.0",
@@ -759,22 +738,22 @@
759
738
  }
760
739
  },
761
740
  "node_modules/@earendil-works/pi-client": {
762
- "version": "1.0.0",
763
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-client/-/pi-client-1.0.0.tgz",
764
- "integrity": "sha512-vK7v5eyD+e0JWk8UWWwTRATXVxjqL811cDjoqfXcd2mhe8rC8eHoRQw6d4Zfh857KrWVLNSR0v7snPX3Gu8FSQ==",
741
+ "version": "1.0.2",
742
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-client/-/pi-client-1.0.2.tgz",
743
+ "integrity": "sha512-KwznnEx24irb2pBIMeha6iIVyoYtrfpbtKkgw31xVn2Q/yzCbTtMe81a5Ep0BAN001iLn5D+aALjQ9vQDpSnGw==",
765
744
  "license": "MIT",
766
745
  "dependencies": {
767
- "@earendil-works/chord": "^1.0.0",
768
- "@earendil-works/pi-protocol": "^1.0.0"
746
+ "@earendil-works/chord": "^1.0.2",
747
+ "@earendil-works/pi-protocol": "^1.0.2"
769
748
  },
770
749
  "engines": {
771
750
  "node": ">=22.19.0"
772
751
  }
773
752
  },
774
753
  "node_modules/@earendil-works/pi-codemode": {
775
- "version": "1.0.0",
776
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-codemode/-/pi-codemode-1.0.0.tgz",
777
- "integrity": "sha512-LPpFI4+T9NzDnhBDs15izWAolaoM8xnwqdziRd6Zx8BQeoEPvzefD2vMMzSyF0rOtq34TfQqkZ0ki16f6cGdMg==",
754
+ "version": "1.0.2",
755
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-codemode/-/pi-codemode-1.0.2.tgz",
756
+ "integrity": "sha512-tvfDSVz984ra/4y/hIFmYGpP5ojC+C6/ey+DNbjTzfJvbXviW4JYTXwVcm33KAceI0xcOuE+P1yRGLtQgis0/w==",
778
757
  "license": "MIT",
779
758
  "dependencies": {
780
759
  "quickjs-wasi": "3.6.2"
@@ -784,12 +763,12 @@
784
763
  }
785
764
  },
786
765
  "node_modules/@earendil-works/pi-protocol": {
787
- "version": "1.0.0",
788
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-protocol/-/pi-protocol-1.0.0.tgz",
789
- "integrity": "sha512-RzBfALctfmvVE7IyZy4tr5N0GgHDSt+U4opzPbbcqunZxB7V6MG8HT1wsKRX6/KphXh39NddG1A5Z/Xjf3zrGg==",
766
+ "version": "1.0.2",
767
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-protocol/-/pi-protocol-1.0.2.tgz",
768
+ "integrity": "sha512-VT3/ha2XDDP6mesDVbsv2W7AQDnJFbNSdmCezmpaod6Jcq8KnV/2EPzDPtQ7qYntPq2Esx67M/4/c1YbhmkPag==",
790
769
  "license": "MIT",
791
770
  "dependencies": {
792
- "@earendil-works/chord": "^1.0.0",
771
+ "@earendil-works/chord": "^1.0.2",
793
772
  "typebox": "1.3.27"
794
773
  },
795
774
  "engines": {
@@ -797,18 +776,18 @@
797
776
  }
798
777
  },
799
778
  "node_modules/@earendil-works/pi-telemetry": {
800
- "version": "1.0.0",
801
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-telemetry/-/pi-telemetry-1.0.0.tgz",
802
- "integrity": "sha512-WjNBj5TYIiPZFQEz2WlULcDwPLaKwIlmsKjVeYM+LJSbnSp38kWsHUJysIDGnu23IcLbKoPtywsvYfUJCeZePA==",
779
+ "version": "1.0.2",
780
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-telemetry/-/pi-telemetry-1.0.2.tgz",
781
+ "integrity": "sha512-Ev5h9TE8nEXHCfRKhWj0qpUFhQgVqNteS95vsM2KNGRGm533vOO2ruDPaEwImBKPMBKXy4omz3D6V2cm41gLOQ==",
803
782
  "license": "MIT",
804
783
  "engines": {
805
784
  "node": ">=22.19.0"
806
785
  }
807
786
  },
808
787
  "node_modules/@earendil-works/pi-tui": {
809
- "version": "1.0.0",
810
- "resolved": "https://registry.npmjs.org/@earendil-works/pi-tui/-/pi-tui-1.0.0.tgz",
811
- "integrity": "sha512-JsT7kXnpZA2YOtQu6RyriyxEO0eJIzPyfiH09bH+OLN5+s18HYkwaUD/tBkjhnSfMu6/50CQPRYJagzSP6HdPw==",
788
+ "version": "1.0.2",
789
+ "resolved": "https://registry.npmjs.org/@earendil-works/pi-tui/-/pi-tui-1.0.2.tgz",
790
+ "integrity": "sha512-ElfzjnckohEjzHK5Q5iOpqLpQ1YbM/c/XmjBdPVR5k4uoorQPnny5BtT+rvC0cAjVVCUOHWAWppust7FAaEsOQ==",
812
791
  "license": "MIT",
813
792
  "dependencies": {
814
793
  "get-east-asian-width": "1.6.0",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bastani/atomic",
3
- "version": "0.9.26-alpha.4",
3
+ "version": "0.9.26-alpha.6",
4
4
  "description": "Atomic coding agent CLI with read, bash, edit, write tools and session management",
5
5
  "type": "module",
6
6
  "atomicConfig": {
@@ -80,14 +80,14 @@
80
80
  "prepublishOnly": "bun run clean && bun run build && bun run shrinkwrap"
81
81
  },
82
82
  "dependencies": {
83
- "@bastani/atomic-natives": "0.9.26-alpha.4",
84
- "@bastani/pi-ai": "0.9.26-alpha.4",
83
+ "@bastani/atomic-natives": "0.9.26-alpha.6",
84
+ "@bastani/pi-ai": "0.9.26-alpha.6",
85
85
  "@dbos-inc/dbos-sdk": "4.25.14",
86
- "@earendil-works/pi-agent-core": "1.0.0",
87
- "@earendil-works/pi-client": "1.0.0",
88
- "@earendil-works/pi-codemode": "1.0.0",
89
- "@earendil-works/pi-protocol": "1.0.0",
90
- "@earendil-works/pi-tui": "1.0.0",
86
+ "@earendil-works/pi-agent-core": "1.0.2",
87
+ "@earendil-works/pi-client": "1.0.2",
88
+ "@earendil-works/pi-codemode": "1.0.2",
89
+ "@earendil-works/pi-protocol": "1.0.2",
90
+ "@earendil-works/pi-tui": "1.0.2",
91
91
  "@modelcontextprotocol/ext-apps": "^1.7.5",
92
92
  "@modelcontextprotocol/sdk": "1.30.0",
93
93
  "@mozilla/readability": "^0.6.0",