@bastani/atomic 0.9.12-alpha.1 → 0.9.12

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 CHANGED
@@ -2,6 +2,20 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [0.9.12] - 2026-08-04
6
+
7
+ Cumulative release of the `0.9.12-alpha.1` prerelease. The summary below covers the user-visible outcome of that work; the per-change detail remains in the prerelease section below.
8
+
9
+ ### Added
10
+
11
+ - Compaction honors `<keepContext>` / `</keepContext>` tags. Wrap any part of a prompt you never want compressed, and every line of the span — tag lines included — is protected verbatim regardless of the compression ratio. The guarantee is mechanical rather than advisory: deletion ranges are split around protected lines after the planner responds. Because the tag lines are protected too, a span is re-detected on each subsequent boundary and stays protected for the life of the session. Detection is bounded on three sides, because the transcript it scans is untrusted: a tag must be the whole line after any role header, a span is scoped to one message so an unclosed tag stops at the end of its own message rather than running to the end of the region, and tags inside tool results are inert — user and assistant messages may both protect, so prompts, steering, and an agent's own pinned information all work, but file, page, or command output an agent reads cannot mark itself unreclaimable or persist through compaction ahead of real content. Protected lines count against the keep target rather than raising it, so the compression ratio stays a real bound on output size and the unprotected remainder compresses harder. Results report force-preserved ranges as `keptRanges` ([#2172](https://github.com/bastani-inc/atomic/issues/2172)).
12
+
13
+ ### Fixed
14
+
15
+ - The compaction relevance query is no longer truncated to 1,000 characters. Truncation made prompt section order the retention policy: for a long structured prompt only the leading section reached the planner, so a constraint stated later could not influence what was kept, while the objective it qualified survived and was acted on. Long queries are safe — an oversized planner request surfaces as an explicit provider-overflow failure rather than silent truncation ([#2172](https://github.com/bastani-inc/atomic/issues/2172)).
16
+ - Cleared three advisories in the shipped dependency tree. `undici` moves 8.5.0 → 8.9.0, which covers five advisories against 8.0.0–8.8.0 — response desynchronization via the retry interceptor, two cross-user cache-directive disclosures, CRLF injection through a blob body `type`, and cookie-attribute injection — and it is the dispatcher behind `fetch_url` and every agent HTTP request. Transitively under `@modelcontextprotocol/sdk`, `ip-address` is pinned to 10.3.1 for three SSRF and trust-boundary bypasses (octal-decoded leading-zero octets, CIDR suffixes suppressing special-use classification, and misclassified IPv4-mapped/NAT64 addresses), and `hono` to 4.12.34 for a CORS-middleware ReDoS. `npm audit` is clean.
17
+ - Fixed bundled builtin extensions failing to load on Windows when shared modules were evaluated twice, so bundled workflows and tools initialize correctly.
18
+
5
19
  ## [0.9.12-alpha.1] - 2026-08-04
6
20
 
7
21
  ### Added
@@ -4,6 +4,12 @@ All notable changes to the `pi-intercom` extension will be documented in this fi
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.9.12] - 2026-08-04
8
+
9
+ ### Fixed
10
+
11
+ - Fixed bundled Intercom resources failing to load on Windows when shared modules used mixed `.ts` and `.js` import spellings.
12
+
7
13
  ## [0.9.12-alpha.1] - 2026-08-04
8
14
 
9
15
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bastani/intercom",
3
- "version": "0.9.12-alpha.1",
3
+ "version": "0.9.12",
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": [
@@ -7,6 +7,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [0.9.12] - 2026-08-04
11
+
12
+ ### Fixed
13
+
14
+ - Fixed bundled MCP resources failing to load on Windows when shared modules used mixed `.ts` and `.js` import spellings.
15
+
10
16
  ## [0.9.12-alpha.1] - 2026-08-04
11
17
 
12
18
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bastani/mcp",
3
- "version": "0.9.12-alpha.1",
3
+ "version": "0.9.12",
4
4
  "private": true,
5
5
  "description": "Atomic extension that adapts MCP (Model Context Protocol) servers into the coding agent. Fork of: https://github.com/nicobailon/pi-mcp-adapter",
6
6
  "contributors": [
@@ -2,6 +2,12 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [0.9.12] - 2026-08-04
6
+
7
+ ### Fixed
8
+
9
+ - Fixed bundled subagent resources failing to load on Windows when shared modules used mixed `.ts` and `.js` import spellings.
10
+
5
11
  ## [0.9.12-alpha.1] - 2026-08-04
6
12
 
7
13
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bastani/subagents",
3
- "version": "0.9.12-alpha.1",
3
+ "version": "0.9.12",
4
4
  "private": true,
5
5
  "description": "Atomic extension for delegating tasks to subagents with chains, parallel execution, and background runs. Fork of: https://github.com/nicobailon/pi-subagents",
6
6
  "contributors": [
@@ -4,6 +4,12 @@ All notable changes to this project will be documented in this file.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.9.12] - 2026-08-04
8
+
9
+ ### Fixed
10
+
11
+ - Fixed bundled web-access resources failing to load on Windows when shared modules used mixed `.ts` and `.js` import spellings.
12
+
7
13
  ## [0.9.12-alpha.1] - 2026-08-04
8
14
 
9
15
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bastani/web-access",
3
- "version": "0.9.12-alpha.1",
3
+ "version": "0.9.12",
4
4
  "private": true,
5
5
  "description": "Atomic extension for web search, URL fetching, GitHub repo cloning, PDF/video extraction. Fork of: https://github.com/nicobailon/pi-web-access",
6
6
  "contributors": [
@@ -6,6 +6,19 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.9.12] - 2026-08-04
10
+
11
+ Cumulative release of the `0.9.12-alpha.1` prerelease. The summary below covers the user-visible outcome of that work; the per-change detail remains in the prerelease section below.
12
+
13
+ ### Added
14
+
15
+ - Added `keepContext` to the public authoring surface: `import { keepContext } from "@bastani/workflows"`. It wraps prompt text so compaction protects it verbatim regardless of the compression ratio, and is a pure, idempotent string helper rather than a `ctx.*` primitive — no graph node, no side effect, callable anywhere a prompt is assembled. `KEEP_CONTEXT_OPEN_TAG` and `KEEP_CONTEXT_CLOSE_TAG` are exported alongside it. Reserve it for text whose loss silently changes behavior — role constraints, acceptance criteria, explicit prohibitions, and identifiers a stage must not lose — and not for bulk context, since protected lines count against the keep target rather than raising it ([#2172](https://github.com/bastani-inc/atomic/issues/2172)).
16
+ - `<keepContext>` tags also work in the run inputs and steering messages sent through the `workflow` tool, not only in authored stage prompts. Workflows inject inputs into their stage prompts, so a tagged clause in `prompt` or `acceptance_criteria` is inherited and protected by every stage that receives it, and a tagged `send` amendment survives until the stage acts on it instead of competing with the whole transcript for retention. Because `keepContext` is idempotent, an already-tagged input is not double-wrapped by a workflow that protects the same field. The workflow tool description and agent guidance now say so, so an agent can decide per launch or per steering message which clauses to protect ([#2172](https://github.com/bastani-inc/atomic/issues/2172)).
17
+
18
+ ### Fixed
19
+
20
+ - Builtin workflows protect their own invariants with `keepContext`, so a long-running stage can no longer lose the rules that bound it: the steering propagation contract carried by every builtin stage prompt, the literal objective contract, scope discipline, worktree discipline, ralph's per-run acceptance criteria, ralph's research-only role constraint, and goal's reviewer "inspect and report; do not implement" constraint. Previously a research stage could be compacted past its own prohibition and start implementing, and a stage could lose the checkout it was bound to ([#2172](https://github.com/bastani-inc/atomic/issues/2172)).
21
+
9
22
  ## [0.9.12-alpha.1] - 2026-08-04
10
23
 
11
24
  ### Added
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bastani/workflows",
3
- "version": "0.9.12-alpha.1",
3
+ "version": "0.9.12",
4
4
  "private": true,
5
5
  "description": "Atomic extension for multi-stage workflow authoring and execution.",
6
6
  "contributors": [
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "name": "@bastani/atomic",
3
- "version": "0.9.12-alpha.1",
3
+ "version": "0.9.12",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@bastani/atomic",
9
- "version": "0.9.12-alpha.1",
9
+ "version": "0.9.12",
10
10
  "license": "MIT",
11
11
  "dependencies": {
12
- "@bastani/atomic-natives": "0.9.12-alpha.1",
12
+ "@bastani/atomic-natives": "0.9.12",
13
13
  "@dbos-inc/dbos-sdk": "4.24.16",
14
14
  "@earendil-works/pi-agent-core": "^0.83.0",
15
15
  "@earendil-works/pi-ai": "^0.83.0",
@@ -515,18 +515,18 @@
515
515
  }
516
516
  },
517
517
  "node_modules/@bastani/atomic-natives": {
518
- "version": "0.9.12-alpha.1",
519
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives/-/atomic-natives-0.9.12-alpha.1.tgz",
518
+ "version": "0.9.12",
519
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives/-/atomic-natives-0.9.12.tgz",
520
520
  "license": "MIT",
521
521
  "optionalDependencies": {
522
- "@bastani/atomic-natives-darwin-arm64": "0.9.12-alpha.1",
523
- "@bastani/atomic-natives-darwin-x64": "0.9.12-alpha.1",
524
- "@bastani/atomic-natives-linux-arm64-gnu": "0.9.12-alpha.1",
525
- "@bastani/atomic-natives-linux-arm64-musl": "0.9.12-alpha.1",
526
- "@bastani/atomic-natives-linux-x64-gnu": "0.9.12-alpha.1",
527
- "@bastani/atomic-natives-linux-x64-musl": "0.9.12-alpha.1",
528
- "@bastani/atomic-natives-win32-arm64-msvc": "0.9.12-alpha.1",
529
- "@bastani/atomic-natives-win32-x64-msvc": "0.9.12-alpha.1"
522
+ "@bastani/atomic-natives-darwin-arm64": "0.9.12",
523
+ "@bastani/atomic-natives-darwin-x64": "0.9.12",
524
+ "@bastani/atomic-natives-linux-arm64-gnu": "0.9.12",
525
+ "@bastani/atomic-natives-linux-arm64-musl": "0.9.12",
526
+ "@bastani/atomic-natives-linux-x64-gnu": "0.9.12",
527
+ "@bastani/atomic-natives-linux-x64-musl": "0.9.12",
528
+ "@bastani/atomic-natives-win32-arm64-msvc": "0.9.12",
529
+ "@bastani/atomic-natives-win32-x64-msvc": "0.9.12"
530
530
  },
531
531
  "engines": {
532
532
  "bun": ">=1.3.14",
@@ -534,8 +534,8 @@
534
534
  }
535
535
  },
536
536
  "node_modules/@bastani/atomic-natives-darwin-arm64": {
537
- "version": "0.9.12-alpha.1",
538
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-arm64/-/atomic-natives-darwin-arm64-0.9.12-alpha.1.tgz",
537
+ "version": "0.9.12",
538
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-arm64/-/atomic-natives-darwin-arm64-0.9.12.tgz",
539
539
  "license": "MIT",
540
540
  "os": [
541
541
  "darwin"
@@ -546,8 +546,8 @@
546
546
  "optional": true
547
547
  },
548
548
  "node_modules/@bastani/atomic-natives-darwin-x64": {
549
- "version": "0.9.12-alpha.1",
550
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-x64/-/atomic-natives-darwin-x64-0.9.12-alpha.1.tgz",
549
+ "version": "0.9.12",
550
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-darwin-x64/-/atomic-natives-darwin-x64-0.9.12.tgz",
551
551
  "license": "MIT",
552
552
  "os": [
553
553
  "darwin"
@@ -558,8 +558,8 @@
558
558
  "optional": true
559
559
  },
560
560
  "node_modules/@bastani/atomic-natives-linux-arm64-gnu": {
561
- "version": "0.9.12-alpha.1",
562
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-arm64-gnu/-/atomic-natives-linux-arm64-gnu-0.9.12-alpha.1.tgz",
561
+ "version": "0.9.12",
562
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-arm64-gnu/-/atomic-natives-linux-arm64-gnu-0.9.12.tgz",
563
563
  "license": "MIT",
564
564
  "os": [
565
565
  "linux"
@@ -573,8 +573,8 @@
573
573
  "optional": true
574
574
  },
575
575
  "node_modules/@bastani/atomic-natives-linux-arm64-musl": {
576
- "version": "0.9.12-alpha.1",
577
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-arm64-musl/-/atomic-natives-linux-arm64-musl-0.9.12-alpha.1.tgz",
576
+ "version": "0.9.12",
577
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-arm64-musl/-/atomic-natives-linux-arm64-musl-0.9.12.tgz",
578
578
  "license": "MIT",
579
579
  "os": [
580
580
  "linux"
@@ -588,8 +588,8 @@
588
588
  "optional": true
589
589
  },
590
590
  "node_modules/@bastani/atomic-natives-linux-x64-gnu": {
591
- "version": "0.9.12-alpha.1",
592
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-x64-gnu/-/atomic-natives-linux-x64-gnu-0.9.12-alpha.1.tgz",
591
+ "version": "0.9.12",
592
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-x64-gnu/-/atomic-natives-linux-x64-gnu-0.9.12.tgz",
593
593
  "license": "MIT",
594
594
  "os": [
595
595
  "linux"
@@ -603,8 +603,8 @@
603
603
  "optional": true
604
604
  },
605
605
  "node_modules/@bastani/atomic-natives-linux-x64-musl": {
606
- "version": "0.9.12-alpha.1",
607
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-x64-musl/-/atomic-natives-linux-x64-musl-0.9.12-alpha.1.tgz",
606
+ "version": "0.9.12",
607
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-linux-x64-musl/-/atomic-natives-linux-x64-musl-0.9.12.tgz",
608
608
  "license": "MIT",
609
609
  "os": [
610
610
  "linux"
@@ -618,8 +618,8 @@
618
618
  "optional": true
619
619
  },
620
620
  "node_modules/@bastani/atomic-natives-win32-arm64-msvc": {
621
- "version": "0.9.12-alpha.1",
622
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-arm64-msvc/-/atomic-natives-win32-arm64-msvc-0.9.12-alpha.1.tgz",
621
+ "version": "0.9.12",
622
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-arm64-msvc/-/atomic-natives-win32-arm64-msvc-0.9.12.tgz",
623
623
  "license": "MIT",
624
624
  "os": [
625
625
  "win32"
@@ -630,8 +630,8 @@
630
630
  "optional": true
631
631
  },
632
632
  "node_modules/@bastani/atomic-natives-win32-x64-msvc": {
633
- "version": "0.9.12-alpha.1",
634
- "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-x64-msvc/-/atomic-natives-win32-x64-msvc-0.9.12-alpha.1.tgz",
633
+ "version": "0.9.12",
634
+ "resolved": "https://registry.npmjs.org/@bastani/atomic-natives-win32-x64-msvc/-/atomic-natives-win32-x64-msvc-0.9.12.tgz",
635
635
  "license": "MIT",
636
636
  "os": [
637
637
  "win32"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bastani/atomic",
3
- "version": "0.9.12-alpha.1",
3
+ "version": "0.9.12",
4
4
  "description": "Atomic coding agent CLI with read, bash, edit, write tools and session management",
5
5
  "type": "module",
6
6
  "atomicConfig": {
@@ -78,7 +78,7 @@
78
78
  "prepublishOnly": "bun run clean && bun run build && bun run shrinkwrap"
79
79
  },
80
80
  "dependencies": {
81
- "@bastani/atomic-natives": "0.9.12-alpha.1",
81
+ "@bastani/atomic-natives": "0.9.12",
82
82
  "@dbos-inc/dbos-sdk": "4.24.16",
83
83
  "@earendil-works/pi-agent-core": "^0.83.0",
84
84
  "@earendil-works/pi-ai": "^0.83.0",