@bastani/atomic 0.9.26-alpha.6 → 0.9.27-alpha.1
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 +75 -0
- package/dist/builtin/intercom/CHANGELOG.md +12 -0
- package/dist/builtin/intercom/index.bundle.mjs +21 -6
- package/dist/builtin/intercom/package.json +1 -1
- package/dist/builtin/mcp/package.json +1 -1
- package/dist/builtin/subagents/CHANGELOG.md +8 -0
- package/dist/builtin/subagents/package.json +1 -1
- package/dist/builtin/subagents/src/extension/index.bundle.mjs +693 -642
- package/dist/builtin/web-access/package.json +1 -1
- package/dist/builtin/workflows/CHANGELOG.md +22 -0
- package/dist/builtin/workflows/package.json +1 -1
- package/dist/builtin/workflows/src/extension/index.bundle.mjs +71 -20
- package/dist/builtin/workflows/src/index.js +31 -10
- package/dist/codemode-worker.js +3309 -0
- package/dist/config.d.ts +7 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +38 -12
- package/dist/config.js.map +1 -1
- package/dist/core/agent-session-custom-message-commit.d.ts.map +1 -1
- package/dist/core/agent-session-custom-message-commit.js +6 -0
- package/dist/core/agent-session-custom-message-commit.js.map +1 -1
- package/dist/core/agent-session-extension-bindings.d.ts.map +1 -1
- package/dist/core/agent-session-extension-bindings.js +22 -6
- package/dist/core/agent-session-extension-bindings.js.map +1 -1
- package/dist/core/agent-session-services.d.ts.map +1 -1
- package/dist/core/agent-session-services.js +3 -1
- package/dist/core/agent-session-services.js.map +1 -1
- package/dist/core/agent-session-tasks.js +9 -4
- package/dist/core/agent-session-tasks.js.map +1 -1
- package/dist/core/auth-storage-backends.d.ts +3 -0
- package/dist/core/auth-storage-backends.d.ts.map +1 -1
- package/dist/core/auth-storage-backends.js +45 -1
- package/dist/core/auth-storage-backends.js.map +1 -1
- package/dist/core/auth-storage.d.ts.map +1 -1
- package/dist/core/auth-storage.js +14 -0
- package/dist/core/auth-storage.js.map +1 -1
- package/dist/core/extensions/provider-types.d.ts +3 -2
- package/dist/core/extensions/provider-types.d.ts.map +1 -1
- package/dist/core/extensions/provider-types.js.map +1 -1
- package/dist/core/extensions/runner-events.d.ts.map +1 -1
- package/dist/core/extensions/runner-events.js +10 -1
- package/dist/core/extensions/runner-events.js.map +1 -1
- package/dist/extensions/codemode/execute.d.ts.map +1 -1
- package/dist/extensions/codemode/execute.js +40 -6
- package/dist/extensions/codemode/execute.js.map +1 -1
- package/dist/extensions/codemode/tool.d.ts.map +1 -1
- package/dist/extensions/codemode/tool.js +1 -0
- package/dist/extensions/codemode/tool.js.map +1 -1
- package/dist/extensions/mcp/tools.d.ts.map +1 -1
- package/dist/extensions/mcp/tools.js +4 -9
- package/dist/extensions/mcp/tools.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/modes/interactive/interactive-agent-events.js +21 -0
- package/dist/modes/interactive/interactive-agent-events.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-base.d.ts +1 -0
- package/dist/modes/interactive/interactive-mode-base.d.ts.map +1 -1
- package/dist/modes/interactive/interactive-mode-base.js +1 -0
- package/dist/modes/interactive/interactive-mode-base.js.map +1 -1
- package/dist/modes/interactive/interactive-mode-helpers.js +1 -1
- package/dist/modes/interactive/interactive-mode-helpers.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-process-lifecycle.js +7 -4
- package/dist/modes/interactive/interactive-process-lifecycle.js.map +1 -1
- package/dist/utils/output-files.d.ts +7 -0
- package/dist/utils/output-files.d.ts.map +1 -0
- package/dist/utils/output-files.js +20 -0
- package/dist/utils/output-files.js.map +1 -0
- package/docs/codemode.md +3 -3
- package/docs/extensions/api-reference.md +3 -1
- package/docs/extensions.md +2 -0
- package/docs/sdk.md +2 -0
- package/docs/settings.md +2 -0
- package/docs/subagents.md +4 -0
- package/docs/workflows/api-reference.md +6 -2
- package/docs/workflows/operations.md +10 -10
- package/npm-shrinkwrap.json +32 -32
- package/package.json +6 -6
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,81 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [0.9.27-alpha.1] - 2026-10-04
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
|
|
9
|
+
- Codemode `image()` also saves each image to a private temp file and names its path before the image, so later turns can copy or move it ([#3429](https://github.com/bastani-inc/atomic/issues/3429)).
|
|
10
|
+
- Full codemode text output and binary MCP resources now use exclusively created, user-readable-only temp files ([#3429](https://github.com/bastani-inc/atomic/issues/3429)).
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
|
|
14
|
+
- Fixed subscription logins such as Sign in with ChatGPT losing rotated OAuth tokens when a request or model refresh was cancelled ([#3429](https://github.com/bastani-inc/atomic/issues/3429)).
|
|
15
|
+
- Fixed codemode failing after an update removed the running npm install, and added a restart hint when errors occur after the install changes ([#3429](https://github.com/bastani-inc/atomic/issues/3429)).
|
|
16
|
+
- Fixed dead terminal stdin errors such as `read EIO` and `setRawMode ENOTTY` being reported as crashes ([#3429](https://github.com/bastani-inc/atomic/issues/3429)).
|
|
17
|
+
- Fixed slow OAuth token rotation failing model refresh after the request-authentication waiting deadline ([#3429](https://github.com/bastani-inc/atomic/issues/3429)).
|
|
18
|
+
- Fixed unrelated extension and filesystem errors being mistaken for dead-terminal exits, restoring crash reports and extension hints ([#3429](https://github.com/bastani-inc/atomic/issues/3429)).
|
|
19
|
+
- Fixed slow OAuth rotation blocking logout and credential updates for unrelated providers. File-backed rotation now uses a provider-specific lock and preserves concurrent logout or credential replacement ([#3429](https://github.com/bastani-inc/atomic/issues/3429)).
|
|
20
|
+
- Fixed failed `/reload` retiring cleanup leaving in-flight workflows unreachable. The replacement extensions now finish starting, pending settings take effect, joined Intercom groups and workflow-stage targets by name or ID survive, and the error names the underlying cleanup exception. Successful reloads also preserve live, pending, and future workflow-stage routing ([#3425](https://github.com/bastani-inc/atomic/issues/3425)).
|
|
21
|
+
- Background subagent completions now reach workflow-stage chats as visible notices that trigger a parent turn before acknowledgment, even while other notices arrive ([#3427](https://github.com/bastani-inc/atomic/issues/3427)).
|
|
22
|
+
|
|
23
|
+
## [0.9.26] - 2026-10-04
|
|
24
|
+
|
|
25
|
+
### Breaking Changes
|
|
26
|
+
|
|
27
|
+
- MCP OAuth credentials are now stored per server name and URL, so MCP servers with the same URL can sign in with different accounts. Credentials stored by URL alone move to the first server that uses them ([#10252](https://github.com/earendil-works/pi/issues/10252)). SDK consumers of the exported `McpOAuthCredentialStore` must now pass the server name to `forServer`, `tokens`, `remove` and `removeAsync`.
|
|
28
|
+
|
|
29
|
+
### Added
|
|
30
|
+
|
|
31
|
+
- Added `samplingParamsByThinkingLevel` to `models.json` for per-thinking-level sampling parameter overrides on OpenAI-compatible APIs, including native fast routes. See [Sampling by Thinking Level](docs/models/reference.md#sampling-by-thinking-level) ([#9776](https://github.com/earendil-works/pi/pull/9776) by [@mrexodia](https://github.com/mrexodia))
|
|
32
|
+
- Added `pi.registerToolRenderer()` to choose renderers for any tool, including tools not yet registered ([#10285](https://github.com/earendil-works/pi/issues/10285)).
|
|
33
|
+
- OAuth sign-in screens now show a copy shortcut for the sign-in URL, including `/mcp login`. Use Ctrl+X or configure `app.auth.copyUrl`; existing message and workflow shortcuts are unchanged.
|
|
34
|
+
- Added project overrides for user-level MCP servers: a `.atomic/mcp.json` entry without `command`, `url`, or `type` sets only `enabled`, `exposure`, and `toolExposure` of the user-level server, and `/mcp` can enable or disable a server for the current project ([#10277](https://github.com/earendil-works/pi/issues/10277)).
|
|
35
|
+
- Added Cloudflare's Clef and Clef Flash classifier models to `cloudflare-workers-ai`, usable from codemode scripts and extensions ([#10316](https://github.com/earendil-works/pi/pull/10316) by [@ndisidore](https://github.com/ndisidore), [#10322](https://github.com/earendil-works/pi/pull/10322) by [@RealAlexandreAI](https://github.com/RealAlexandreAI)).
|
|
36
|
+
- Added `pi.registerProviderAlias({ id, provider, name })` for separate account logins that inherit a provider's model catalog and request behavior without copying its implementation. Existing credentials under the alias ID are preserved.
|
|
37
|
+
- Added `quietStartup: "header"`, which keeps the startup header but hides the model scope line. `/settings` offers it alongside `true` and `false`.
|
|
38
|
+
- Added `models.generateImages()` to codemode scripts. It runs image models such as OpenRouter's with the session's credentials and returns base64 image blocks that `image()` attaches to the result; usage counts toward the session cost like `models.classify()`. Extensions can call `ctx.modelRegistry.generateImages()`. See [Built-in tools](docs/tools.md#codemode).
|
|
39
|
+
|
|
40
|
+
### Changed
|
|
41
|
+
|
|
42
|
+
- Cancelling a login started from a `/login` menu now returns to that menu.
|
|
43
|
+
- The "Cloud Providers" section of the [Providers](docs/providers.md) docs page is now "Provider Specific Config".
|
|
44
|
+
- Codemode costs fewer prompt tokens. The `codemode` description points to the new [Codemode](docs/codemode.md) reference for the `models` API, which the model reads when it needs it, and declared tools say in one line how scripts call them and what the call resolves to instead of repeating their full declaration. The MCP server section of the system prompt only explains the ways of reaching tools that its servers use, and the system prompt points to the new reference.
|
|
45
|
+
- Codemode errors now say how to recover: reading a tool or `models` member that does not exist names the close matches (`tools.Bash` suggests `tools.bash`), `models.classify()` and `models.generateImages()` reject malformed arguments with the expected shape, an unknown model points to `models.getAvailableOfType()`, an oversized `store()` value explains what the store is for, and a script that generates images without showing them gets a note. Scripts that probed for a tool with `typeof tools.name` must use `"name" in tools`.
|
|
46
|
+
- `/login` and `/logout` now label providers without credentials as "not configured" instead of "unconfigured".
|
|
47
|
+
- OAuth browser pages now show the Atomic logo in color instead of white.
|
|
48
|
+
|
|
49
|
+
### Fixed
|
|
50
|
+
|
|
51
|
+
- Fixed fresh SDK sessions being unable to inspect or resume crashed durable workflow runs from another process. Hosts using `SessionManager.inMemory()` can recover by full run UUID in the original working directory and workflow database without reopening a session file. Database ownership fencing protects healthy connected owners, including across cloned VM identities, and rejects late durable writes after connection loss. Older unfenced runs support explicit controlled enrollment after their workers stop. Completed checkpoints are preserved; interrupted external effects still require idempotency ([#3419](https://github.com/bastani-inc/atomic/issues/3419)).
|
|
52
|
+
- Fixed managed workflow database monitoring timeouts unnecessarily dropping healthy run ownership. A persistent timeout now reports database unavailability without closing existing ownership connections ([#3419](https://github.com/bastani-inc/atomic/issues/3419)).
|
|
53
|
+
- Fixed managed workflow PostgreSQL staying down after shutdown when its old launch options were missing. Database-unavailable errors and workflow status now show the provider, credential-redacted endpoint, and retained recovery refusal or failure ([#3413](https://github.com/bastani-inc/atomic/issues/3413)).
|
|
54
|
+
- Fixed NVIDIA's built-in default pointing to a model missing from its current catalog. Automatic selection now prefers Nemotron 3 Ultra 550B A55B.
|
|
55
|
+
- Fixed MCP tool calls in resumed sessions and HTML exports rendering fully expanded before their server connects, or when it never connects ([#10285](https://github.com/earendil-works/pi/issues/10285)).
|
|
56
|
+
- Fixed JPEG, GIF, and WebP images rendered by extensions through `Image` not appearing on Kitty-protocol terminals ([#10292](https://github.com/earendil-works/pi/issues/10292)).
|
|
57
|
+
- Fixed fullscreen Kitty images collapsing after scrolling in WezTerm ([#10319](https://github.com/earendil-works/pi/issues/10319)).
|
|
58
|
+
- Fixed `codemode` scripts that print in a loop exhausting memory. Scripts now fail after exceeding 16 Mi characters or 100000 output items ([#10283](https://github.com/earendil-works/pi/issues/10283)).
|
|
59
|
+
- Fixed resumed MCP calls and HTML exports assigning the wrong server to ambiguous tool names. Calls without known renderers now retain their full identifier when the server/tool boundary cannot be recovered.
|
|
60
|
+
- Empty comma-separated entries in `--models` no longer add unintended models to the cycle ([#10334](https://github.com/earendil-works/pi/issues/10334)).
|
|
61
|
+
- Pinned `brace-expansion` to 5.0.12 so installations use the patched dependency ([#10288](https://github.com/earendil-works/pi/issues/10288)).
|
|
62
|
+
- MCP OAuth sign-in now rejects pasted redirect URLs whose origin or path differs from the current sign-in's redirect URI.
|
|
63
|
+
- Fixed `/login` hiding the redirect-URL paste field for native extension providers that declare `auth.oauth.usesCallbackServer`, including built-in OAuth flows cloned under custom provider IDs ([#3400](https://github.com/bastani-inc/atomic/issues/3400)).
|
|
64
|
+
- `/mcp login` now prints its sign-in URL as a clickable link in the terminal UI, even when the URL wraps ([#10186](https://github.com/earendil-works/pi/issues/10186)).
|
|
65
|
+
- `--provider` without `--model` now fails with an error instead of being silently ignored while the default model from another provider runs ([#10236](https://github.com/earendil-works/pi/issues/10236)).
|
|
66
|
+
- MCP servers that ask for more scope (`insufficient_scope`) no longer trigger repeated sign-in requests. The new sign-in now keeps the scopes granted earlier instead of requesting only the missing ones.
|
|
67
|
+
- User messages in the transcript now keep one copy of each rendered line instead of two full-width copies, with identical output.
|
|
68
|
+
- Deferred MCP tools that `tool_search` loaded are no longer dropped on resume and `/reload` when their server reconnects before the next prompt; the session restored its tools before the MCP servers reconnected.
|
|
69
|
+
- The `system` theme keeps pastel terminal palettes pastel instead of making their accent colors more saturated at the lightness the theme needs ([#10255](https://github.com/earendil-works/pi/issues/10255), [#10293](https://github.com/earendil-works/pi/pull/10293) by [@dgtlntv](https://github.com/dgtlntv)).
|
|
70
|
+
- `/login` and `/logout` no longer label every OAuth sign-in as a subscription. Only subscription-backed providers say "subscription"; other OAuth sign-ins say "account".
|
|
71
|
+
- The startup header logo no longer renders with gaps in Apple Terminal; it shows a text `∀ Atomic` wordmark with the version and session details instead.
|
|
72
|
+
- Slash command autocompletion now triggers when the input starts with whitespace ([#10218](https://github.com/earendil-works/pi/pull/10218) by [@haoqixu](https://github.com/haoqixu)).
|
|
73
|
+
- Color no longer bleeds past mouse selections in fullscreen mode when a styled token ends at the selection boundary ([#10169](https://github.com/earendil-works/pi/issues/10169)).
|
|
74
|
+
- The transcript retains less memory per rendered message; a long assistant message keeps about a fifth of the heap it kept before.
|
|
75
|
+
|
|
76
|
+
### Removed
|
|
77
|
+
|
|
78
|
+
- Removed the daxnuts easter egg shown when selecting `opencode/kimi-k2.5`.
|
|
79
|
+
|
|
5
80
|
## [0.9.26-alpha.6] - 2026-10-04
|
|
6
81
|
|
|
7
82
|
### Added
|
|
@@ -4,6 +4,18 @@ All notable changes to the `pi-intercom` extension will be documented in this fi
|
|
|
4
4
|
|
|
5
5
|
## [Unreleased]
|
|
6
6
|
|
|
7
|
+
## [0.9.27-alpha.1] - 2026-10-04
|
|
8
|
+
|
|
9
|
+
### Fixed
|
|
10
|
+
|
|
11
|
+
- Fixed joined workflow groups being lost when extensions reload, including when retiring cleanup fails ([#3425](https://github.com/bastani-inc/atomic/issues/3425)).
|
|
12
|
+
|
|
13
|
+
## [0.9.26] - 2026-10-04
|
|
14
|
+
|
|
15
|
+
### Fixed
|
|
16
|
+
|
|
17
|
+
- Fixed sticky workflow messages disappearing during stage startup, and added per-stage delivery and skip results to `intercom list` so retained future-message counts cannot be mistaken for receipt by every stage ([#3406](https://github.com/bastani-inc/atomic/issues/3406)).
|
|
18
|
+
|
|
7
19
|
## [0.9.26-alpha.4] - 2026-10-02
|
|
8
20
|
|
|
9
21
|
### Fixed
|
|
@@ -6392,7 +6392,7 @@ var exports_index_heavy = {};
|
|
|
6392
6392
|
__export(exports_index_heavy, {
|
|
6393
6393
|
default: () => piIntercomExtension
|
|
6394
6394
|
});
|
|
6395
|
-
import { APP_NAME } from "@bastani/atomic";
|
|
6395
|
+
import { APP_NAME, sessionScopedExtensionState } from "@bastani/atomic";
|
|
6396
6396
|
import { appendFileSync } from "node:fs";
|
|
6397
6397
|
function isPendingStageUndeliverableEvent(value) {
|
|
6398
6398
|
if (typeof value !== "object" || value === null)
|
|
@@ -6437,6 +6437,7 @@ function piIntercomExtension(pi, testOverrides = {}) {
|
|
|
6437
6437
|
let agentRunning = false;
|
|
6438
6438
|
let sessionHomeGroup = null;
|
|
6439
6439
|
let joinedGroups = null;
|
|
6440
|
+
const sessionMemberships = sessionScopedExtensionState(pi.lifecycleScope ?? pi.events ?? pi, "intercom:session-memberships:v1", () => new Map);
|
|
6440
6441
|
const activeTools = new Map;
|
|
6441
6442
|
let replyTracker = new ReplyTracker;
|
|
6442
6443
|
const replyWaiters = new ReplyWaiterRegistry(DEFAULT_REPLY_TIMEOUT_MS, config.maxPendingAsks);
|
|
@@ -6501,13 +6502,20 @@ function piIntercomExtension(pi, testOverrides = {}) {
|
|
|
6501
6502
|
function setJoinedGroups(groups) {
|
|
6502
6503
|
joinedGroups = normalizeGroups(groups);
|
|
6503
6504
|
const sessionId = currentSessionId;
|
|
6504
|
-
if (sessionId)
|
|
6505
|
-
|
|
6505
|
+
if (!sessionId)
|
|
6506
|
+
return;
|
|
6507
|
+
setRuntimeIntercomGroup(sessionId, currentIntercomGroup());
|
|
6508
|
+
sessionMemberships.set(sessionId, [...joinedGroups]);
|
|
6506
6509
|
}
|
|
6507
6510
|
function clearJoinedGroups() {
|
|
6511
|
+
if (currentSessionId)
|
|
6512
|
+
sessionMemberships.delete(currentSessionId);
|
|
6513
|
+
releaseJoinedGroups();
|
|
6514
|
+
}
|
|
6515
|
+
function releaseJoinedGroups() {
|
|
6508
6516
|
joinedGroups = null;
|
|
6509
6517
|
const sessionId = currentSessionId;
|
|
6510
|
-
if (sessionId)
|
|
6518
|
+
if (sessionId && !sessionMemberships.has(sessionId))
|
|
6511
6519
|
clearRuntimeIntercomGroup(sessionId);
|
|
6512
6520
|
}
|
|
6513
6521
|
function buildRegistration() {
|
|
@@ -7194,6 +7202,10 @@ function piIntercomExtension(pi, testOverrides = {}) {
|
|
|
7194
7202
|
resolveSessionTarget: resolveSessionTargetId,
|
|
7195
7203
|
homeGroup: currentIntercomGroup
|
|
7196
7204
|
});
|
|
7205
|
+
pi.on("session_shutdown", (event) => {
|
|
7206
|
+
if (event.reason !== "reload" && currentSessionId)
|
|
7207
|
+
sessionMemberships.delete(currentSessionId);
|
|
7208
|
+
});
|
|
7197
7209
|
registerIntercomLifecycle(pi, {
|
|
7198
7210
|
config,
|
|
7199
7211
|
client: () => client,
|
|
@@ -7223,7 +7235,7 @@ function piIntercomExtension(pi, testOverrides = {}) {
|
|
|
7223
7235
|
clearReconnectTimer,
|
|
7224
7236
|
setRuntimeContext: (value) => {
|
|
7225
7237
|
if (value === null) {
|
|
7226
|
-
|
|
7238
|
+
releaseJoinedGroups();
|
|
7227
7239
|
sessionHomeGroup = null;
|
|
7228
7240
|
} else {
|
|
7229
7241
|
sessionHomeGroup = resolveHomeGroup(config, value);
|
|
@@ -7259,7 +7271,10 @@ function piIntercomExtension(pi, testOverrides = {}) {
|
|
|
7259
7271
|
restoreIntercomSessionIdEnv,
|
|
7260
7272
|
currentStatus
|
|
7261
7273
|
});
|
|
7262
|
-
pi.on("session_start", async (
|
|
7274
|
+
pi.on("session_start", async (event, ctx) => {
|
|
7275
|
+
const retainedMemberships = event.reason === "reload" ? sessionMemberships.get(ctx.sessionManager.getSessionId()) : undefined;
|
|
7276
|
+
if (retainedMemberships)
|
|
7277
|
+
setJoinedGroups(retainedMemberships);
|
|
7263
7278
|
const pendingStageDelivery = ctx.orchestrationContext?.kind === "workflow-stage" ? ctx.orchestrationContext.pendingStageDelivery : undefined;
|
|
7264
7279
|
if (pendingStageDelivery === undefined) {
|
|
7265
7280
|
if (ctx.subagentPolicy?.intercom !== undefined)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bastani/intercom",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.27-alpha.1",
|
|
4
4
|
"private": true,
|
|
5
5
|
"description": "Atomic extension providing a private coordination channel between parent and child agent sessions. Fork of: https://github.com/nicobailon/pi-intercom",
|
|
6
6
|
"contributors": [
|
|
@@ -2,6 +2,14 @@
|
|
|
2
2
|
|
|
3
3
|
## [Unreleased]
|
|
4
4
|
|
|
5
|
+
## [0.9.27-alpha.1] - 2026-10-04
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
|
|
9
|
+
- Simultaneous subagent calls preserve each caller's wait policy and return only that caller's results instead of a shared parallel receipt ([#3427](https://github.com/bastani-inc/atomic/issues/3427)).
|
|
10
|
+
- Simultaneous subagent calls with mixed foreground and background waits now share the configured concurrency limit; returning a background receipt does not free a running child's slot ([#3427](https://github.com/bastani-inc/atomic/issues/3427)).
|
|
11
|
+
- Single-agent calls with mixed wait policies keep progress files isolated per run instead of overwriting an existing project `progress.md` ([#3427](https://github.com/bastani-inc/atomic/issues/3427)).
|
|
12
|
+
|
|
5
13
|
## [0.9.23] - 2026-09-27
|
|
6
14
|
|
|
7
15
|
### Fixed
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bastani/subagents",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.27-alpha.1",
|
|
4
4
|
"private": true,
|
|
5
5
|
"description": "Atomic extension for delegating tasks to subagents with parallel execution. Fork of: https://github.com/nicobailon/pi-subagents",
|
|
6
6
|
"contributors": [
|