@kodax-ai/kodax 0.7.96-alpha.3 → 0.7.96-alpha.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +348 -0
- package/README.md +139 -84
- package/README_CN.md +91 -62
- package/config-templates/config.example.jsonc +9 -16
- package/config-templates/integrations/a2a.example.jsonc +2 -0
- package/dist/chunks/{agent-5ZEPHAVF.js → agent-SV3OH5VR.js} +1 -1
- package/dist/chunks/argument-completer-TTUEXPZ4.js +2 -0
- package/dist/chunks/chunk-2O2HZCBH.js +298 -0
- package/dist/chunks/chunk-4IH2OTLC.js +471 -0
- package/dist/chunks/{chunk-2AQU5SIH.js → chunk-52FEJJMH.js} +15 -20
- package/dist/chunks/chunk-5XD3D47Z.js +429 -0
- package/dist/chunks/{chunk-M2KUA6A7.js → chunk-BRZO5ZGS.js} +1 -1
- package/dist/chunks/{chunk-NEJ7DGCG.js → chunk-IDEPSEPH.js} +2 -2
- package/dist/chunks/{chunk-ZBCKH4V5.js → chunk-N5VUIPXE.js} +265 -271
- package/dist/chunks/chunk-RNJPYIXJ.js +319 -0
- package/dist/chunks/chunk-UQJOGEDC.js +2 -0
- package/dist/chunks/chunk-UTUAC7YQ.js +351 -0
- package/dist/chunks/chunk-W4QOFCVD.js +2 -0
- package/dist/chunks/{chunk-Q5WV7TGR.js → chunk-YYPZCZ6O.js} +1 -1
- package/dist/chunks/chunk-Z64NI33Q.js +384 -0
- package/dist/chunks/{chunk-J5LGM6Y5.js → chunk-ZXNXMFXJ.js} +231 -230
- package/dist/chunks/client-452BLUKG.js +2 -0
- package/dist/chunks/{construction-bootstrap-XH4OQNMS.js → construction-bootstrap-3ITEEWHD.js} +1 -1
- package/dist/chunks/dist-QSSK3PCI.js +2 -0
- package/dist/chunks/{host-HFBR7PBR.js → host-4QGM5DQ7.js} +1 -1
- package/dist/chunks/{run-manager-R6KEKTL5.js → run-manager-CVR6JPLK.js} +1 -1
- package/dist/chunks/{utils-MYA6ONBB.js → utils-GYD2CE2X.js} +1 -1
- package/dist/index.d.ts +43 -56
- package/dist/index.js +6 -6
- package/dist/kodax_bootstrap.js +1 -1
- package/dist/kodax_cli.js +1725 -1755
- package/dist/kodax_resume.js +34 -34
- package/dist/native/win32-x64/kodax-windows-sandbox.exe +0 -0
- package/dist/native/win32-x64/kodax-windows-text-transaction.node +0 -0
- package/dist/native/win32-x64/manifest.json +3 -3
- package/dist/runtime-worker.js +1571 -1609
- package/dist/sandbox-network-broker.js +137 -162
- package/dist/sdk-a2a.d.ts +9 -9
- package/dist/sdk-a2a.js +1 -1
- package/dist/sdk-agent.d.ts +12 -12
- package/dist/sdk-coding.d.ts +40 -113
- package/dist/sdk-coding.js +1 -1
- package/dist/sdk-experimental-memory.d.ts +3 -3
- package/dist/sdk-llm.d.ts +1 -1
- package/dist/sdk-repl.d.ts +33 -55
- package/dist/sdk-repl.js +2 -2
- package/dist/sdk-runtime.d.ts +39 -20
- package/dist/sdk-runtime.js +1 -1
- package/dist/sdk-sandbox.d.ts +15 -9
- package/dist/sdk-sandbox.js +1 -1
- package/dist/sdk-session.d.ts +5 -5
- package/dist/sdk-session.js +1 -1
- package/dist/semantic-worker.js +74 -82
- package/dist/types-chunks/{bash-prefix-extractor.d-Dw5B6gAT.d.ts → bash-prefix-extractor.d-C_D7FK95.d.ts} +65 -26
- package/dist/types-chunks/{capsule.d-DndFb-BH.d.ts → capsule.d-DxNgcs9n.d.ts} +2 -2
- package/dist/types-chunks/{controller.d-CrN5_ZYb.d.ts → controller.d-BGNtJc05.d.ts} +1 -1
- package/dist/types-chunks/{controller.d-BTtyIIC1.d.ts → controller.d-ClFvfenm.d.ts} +1 -1
- package/dist/types-chunks/{guardrail.d-DMcQr2bP.d.ts → exec-policy.d-D5a3OUjN.d.ts} +223 -265
- package/dist/types-chunks/{history-retrieval.d-CHnL99S7.d.ts → history-retrieval.d-hJix1cJV.d.ts} +1 -1
- package/dist/types-chunks/{public-api.d-BzBt6b7A.d.ts → public-api.d-WT1wNQz9.d.ts} +29 -26
- package/dist/types-chunks/{resolver.d-DlXPjeyx.d.ts → resolver.d-BAHV5zRk.d.ts} +1 -1
- package/dist/types-chunks/{review-inbox.d-WDSe1nze.d.ts → review-inbox.d-DZavlaKF.d.ts} +1 -1
- package/dist/types-chunks/{run-manager.d-CfFQsHnW.d.ts → run-manager.d-T6uxxiWl.d.ts} +1 -1
- package/dist/types-chunks/{sdk-session-gBlp3OLT.d.ts → sdk-session-D5fn3-IW.d.ts} +2 -2
- package/dist/types-chunks/{shell-command-sets.d-DapzsTB5.d.ts → shell-command-sets.d-PnzbcF4X.d.ts} +8 -8
- package/dist/types-chunks/{repl.d-BC8nBhBW.d.ts → trusted-repl-entry-BLTJoxdD.d.ts} +20 -16
- package/dist/types-chunks/{types.d-BbZjR0Wr.d.ts → types.d-D1wEkn4h.d.ts} +2 -0
- package/dist/types-chunks/{types.d-DBTr8zrq.d.ts → types.d-DXS_I8Yw.d.ts} +1 -1
- package/dist/types-chunks/{types.d-DxYleXfT.d.ts → types.d-Duj2w9bT.d.ts} +2 -2
- package/dist/types-chunks/{utils.d-C4JLl8Ux.d.ts → utils.d-thZMKPNO.d.ts} +17 -46
- package/package.json +6 -2
- package/public_docs/README.md +11 -5
- package/public_docs/configuration/config-files.md +127 -0
- package/public_docs/configuration/custom-providers.md +161 -0
- package/public_docs/configuration/permissions.md +77 -0
- package/public_docs/configuration/providers.md +117 -0
- package/public_docs/configuration/sandbox.md +139 -80
- package/public_docs/getting-started/installation.md +65 -0
- package/public_docs/getting-started/overview.md +69 -0
- package/public_docs/getting-started/quickstart.md +57 -0
- package/public_docs/sdk/embedder-guide.md +342 -365
- package/dist/chunks/argument-completer-FV4X7SUI.js +0 -2
- package/dist/chunks/chunk-3525WMQA.js +0 -319
- package/dist/chunks/chunk-AFF2XNU4.js +0 -407
- package/dist/chunks/chunk-DJWOZYVF.js +0 -251
- package/dist/chunks/chunk-MEEXYL4N.js +0 -501
- package/dist/chunks/chunk-T4E45MXM.js +0 -2
- package/dist/chunks/chunk-TWPGKDW6.js +0 -384
- package/dist/chunks/chunk-YULEX54I.js +0 -418
- package/dist/chunks/client-U3CCJUKS.js +0 -2
- package/dist/chunks/dist-DYKUO5JZ.js +0 -2
package/CHANGELOG.md
CHANGED
|
@@ -4,6 +4,354 @@ All notable changes to this project will be documented in this file.
|
|
|
4
4
|
|
|
5
5
|
> Full history for versions prior to v0.7.0: [CHANGELOG_ARCHIVE.md](docs/CHANGELOG_ARCHIVE.md)
|
|
6
6
|
|
|
7
|
+
## [Unreleased]
|
|
8
|
+
|
|
9
|
+
## [0.7.96-alpha.7] - 2026-09-03
|
|
10
|
+
|
|
11
|
+
### Fixed
|
|
12
|
+
|
|
13
|
+
- Clarified the sandbox diagnostic boundary across the CLI, setup guide,
|
|
14
|
+
`kodax_manual`, and public documentation: run `kodax sandbox doctor` directly
|
|
15
|
+
in a host terminal or use `/sandbox` inside the REPL, rather than invoking the
|
|
16
|
+
host control-plane doctor through the sandbox-first Bash tool. This prevents a
|
|
17
|
+
healthy Windows sandbox from being misreported when its restricted account is
|
|
18
|
+
correctly denied access to host-owned ASRT state; shell routing and sandbox
|
|
19
|
+
permissions are unchanged.
|
|
20
|
+
- Added cold-start self-healing for stale Windows sandbox setup generations.
|
|
21
|
+
A bare interactive CLI startup, including `kodax -r`, now checks the
|
|
22
|
+
installed generation before creating the REPL Runtime and reuses the existing
|
|
23
|
+
setup-only UAC boundary when migration is required. Concurrent startups
|
|
24
|
+
converge on one setup operation; followers recheck the completed generation
|
|
25
|
+
instead of installing again. Current state stays silent, and print-mode,
|
|
26
|
+
daemon, SDK, and ordinary tool execution never elevate automatically or wait
|
|
27
|
+
on the setup lock. A current marker now takes the same coarse fast path as
|
|
28
|
+
Codex; when recovery is actually required, the unchanged setup operation runs
|
|
29
|
+
in a child process while `kodax -r` and new-session startup display a live
|
|
30
|
+
elapsed-time indicator instead of freezing the last picker frame.
|
|
31
|
+
- Require the setup/onboarding boundary to complete one no-side-effect native
|
|
32
|
+
target-start/exit probe before reporting Windows sandbox recovery as ready.
|
|
33
|
+
The released setup-generation-9 marker migrates in place to generation 10,
|
|
34
|
+
retaining a healthy account SID and filesystem capability nonce. This closes
|
|
35
|
+
the state where verify-only metadata looked ready while real Bash still fell
|
|
36
|
+
back to host execution, without adding a command-path lock, queue, or retry.
|
|
37
|
+
|
|
38
|
+
## [0.7.96-alpha.6] - 2026-09-02
|
|
39
|
+
|
|
40
|
+
### Fixed
|
|
41
|
+
|
|
42
|
+
- Aligned the universal npm release audit with Windows native shell protocol
|
|
43
|
+
10. The release workflow now validates the same manifest contract emitted by
|
|
44
|
+
`build:native`, so a valid protocol-10 Windows artifact is not rejected as an
|
|
45
|
+
incompatible protocol-9 package during GitHub pre-release assembly.
|
|
46
|
+
- Current native protocol 10 keeps isolated Skill Script execution POSIX-only
|
|
47
|
+
on Windows because per-command denyRead remains unsupported.
|
|
48
|
+
- Moved broad Windows profile-root ACL convergence fully into versioned setup.
|
|
49
|
+
Protocol/setup generation 10 marks those roots as setup-owned; ordinary
|
|
50
|
+
admission only verifies their stable capability ACEs and returns a typed
|
|
51
|
+
setup-required error when one is missing. Command-specific small roots retain
|
|
52
|
+
additive convergence. This removes recursive `AppData` DACL propagation from
|
|
53
|
+
target start without adding a lock, queue, per-root timeout, or command retry.
|
|
54
|
+
- Expanded the existing ASRT Windows proxy range to 64 ports and removed KodaX's
|
|
55
|
+
process-local broker-capacity/idle-eviction gate. Up to 32 exact network
|
|
56
|
+
authorities now rely on OS bind arbitration across Runtime processes; broker
|
|
57
|
+
pooling, reference ownership, and bounded idle cleanup remain unchanged.
|
|
58
|
+
- Made explicit CLI and public SDK sandbox doctor execute one no-side-effect
|
|
59
|
+
identity probe with host fallback disabled. `ready: true` now proves a real
|
|
60
|
+
target start and successful exit, while internal startup/admission readiness
|
|
61
|
+
remains verify-only. The explicit probe can republish a missing exact-hash
|
|
62
|
+
native cache object from its pinned packaged bytes, but never runs setup or
|
|
63
|
+
repairs ACL policy. Native request diagnostics retain protocol, setup/broker
|
|
64
|
+
generation, artifact hashes, failure phase, and final sandbox failure evidence.
|
|
65
|
+
- Kept unlowerable nested shell commands opaque, matching Codex's host-policy
|
|
66
|
+
boundary. Recognized `cmd` and PowerShell forms are still recursively checked,
|
|
67
|
+
explicit outer/interpreter rules still apply, and concrete critical effects
|
|
68
|
+
remain fail-closed. Command complexity never changes sandbox selection: these
|
|
69
|
+
calls remain sandbox-first, and parser uncertainty is considered by Edits or
|
|
70
|
+
Auto[LLM] only after a genuine sandbox pre-start failure reaches the host
|
|
71
|
+
boundary instead of becoming a synthetic non-overridable forbid.
|
|
72
|
+
- Pinned every loaded embedded Windows native manifest to its exact immutable
|
|
73
|
+
protected-cache generation. A long-lived npm-linked CLI or SDK process now
|
|
74
|
+
reuses the already verified executable for its embedded hash before consulting
|
|
75
|
+
a mutable rebuilt `dist/native` source, so overlapping builds cannot mix a
|
|
76
|
+
TypeScript host with another native evidence generation. A genuinely new hash
|
|
77
|
+
is still published atomically, without a command lock, queue, or retry loop.
|
|
78
|
+
- Stopped per-command Windows cleanup from deleting the shared private-Temp
|
|
79
|
+
parent. The native command's lifecycle/Job-drain result is now authoritative
|
|
80
|
+
before its unique Temp leaf is removed; a bounded leaf cleanup failure emits
|
|
81
|
+
a diagnostic instead of turning an already proven exit into a Tool Error.
|
|
82
|
+
This fixes the intermittent `rmdir ...\\kodax-sandbox\\<root>: EPERM` seen
|
|
83
|
+
under concurrent packaged Electron smoke without adding a lock, queue, or
|
|
84
|
+
command replay.
|
|
85
|
+
- Removed the two remaining Codex-alignment gaps that could make Bash unusable.
|
|
86
|
+
Windows roots use stable read/write/deny capability ACEs, while each command
|
|
87
|
+
token activates only its authorized capabilities. Setup owns broad profile
|
|
88
|
+
grants; admission accepts already-effective setup grants read-only and never
|
|
89
|
+
downgrades or clears a capability installed for another command. Windows
|
|
90
|
+
shell `%TEMP%`/`%TMP%`/`%TMPDIR%` now point to one empty private directory per
|
|
91
|
+
command under the system temporary directory, so ordinary admission never
|
|
92
|
+
recursively rewrites the shared system Temp/AppData tree. No lock, queue, or
|
|
93
|
+
command retry was added.
|
|
94
|
+
- Restored SDK/daemon host-boundary fallback by forwarding
|
|
95
|
+
`authorizeShellHostExecution` through the Coding tool-execution context. A
|
|
96
|
+
cleanup-proven pre-start sandbox failure can therefore reach the existing
|
|
97
|
+
Auto[LLM]/Exec Policy decision instead of stopping at the misleading
|
|
98
|
+
"requires a new permission decision" message.
|
|
99
|
+
- Advanced the Windows SDK/daemon sandbox contract to `sandboxRuntime:11`.
|
|
100
|
+
An idle same-version daemon from an earlier npm-link build is now replaced
|
|
101
|
+
through the existing authenticated upgrade path instead of silently reusing
|
|
102
|
+
its older admission behavior; busy daemons remain fail-closed and untouched.
|
|
103
|
+
- Retire a shared Windows network-broker generation when a started native host
|
|
104
|
+
proves runner/controller-path loss. Existing holders remain untouched, while
|
|
105
|
+
the next command creates a fresh generation instead of reusing a controller
|
|
106
|
+
that is already exiting and waiting for target-start attestation to time out.
|
|
107
|
+
- Preserved terminal input across bare `kodax -r` session selection in the
|
|
108
|
+
compiled Bun/Windows release. A successful picker hands raw-mode ownership to
|
|
109
|
+
the next owned renderer; cancellation, preparation failure, classic REPL, and
|
|
110
|
+
final terminal cleanup retain their existing behavior.
|
|
111
|
+
- Closed two portable Bash lifecycle gaps without adding a command lock or
|
|
112
|
+
retry loop. Broker-control close/error/overflow now still runs the prepared
|
|
113
|
+
request cleanup before reporting failure, and background execution is not
|
|
114
|
+
reported as started until the wrapper has an OS PID; asynchronous spawn
|
|
115
|
+
rejection therefore cannot return `PID: undefined` or leak prepared state.
|
|
116
|
+
Process settlement and output capture are attached immediately after spawn,
|
|
117
|
+
so a fast target that exits during start attestation cannot lose its output,
|
|
118
|
+
completion footer, or request cleanup.
|
|
119
|
+
|
|
120
|
+
## [0.7.96-alpha.5] - 2026-09-01
|
|
121
|
+
|
|
122
|
+
### Fixed
|
|
123
|
+
|
|
124
|
+
- Completed the Windows sandbox concurrency correction without adding a
|
|
125
|
+
machine-global command lock or queue. Every command owns its runner pipes,
|
|
126
|
+
exact process handle, creation-time kill-on-close Job, cancellation state,
|
|
127
|
+
and terminal evidence; cancellation is observed before synchronous launch
|
|
128
|
+
preparation and all abort paths finish Job drainage before host exit.
|
|
129
|
+
- Removed the remaining startup/termination race: a command that has not
|
|
130
|
+
published a nonce-bound Resume record may use the one-second pre-start
|
|
131
|
+
cleanup path, while a Resume discovered during that window extends the wait
|
|
132
|
+
to the normal terminal-attestation budget instead of being killed early.
|
|
133
|
+
- Restored fail-closed admission ordering in the Windows native host: policy
|
|
134
|
+
boundary validation (protected control-state overlap, restricted-account,
|
|
135
|
+
and terminal-record checks) runs before the host consumes controller
|
|
136
|
+
bootstrap input, so a forged or policy-opaque request is rejected with its
|
|
137
|
+
structured error instead of stalling until the operation deadline. Valid
|
|
138
|
+
commands still observe termination control before setup and launch.
|
|
139
|
+
- Treated the Runtime daemon `0.0.0` development sentinel as having no
|
|
140
|
+
provable SemVer ordering. Such an owner attaches in place instead of being
|
|
141
|
+
classified as an older daemon for the version boundary, so SDK test and
|
|
142
|
+
development harnesses reconnect without a forced replacement, while every
|
|
143
|
+
documented versioned-capability boundary, the never-downgrade guard, and
|
|
144
|
+
the non-SemVer fail-closed path are unchanged.
|
|
145
|
+
- Restored the portable shell adapter's protected-read gate that the
|
|
146
|
+
sandbox-first routing restructure dropped: on POSIX, a model Bash read
|
|
147
|
+
carve-back that targets the trusted text native state roots fails
|
|
148
|
+
preparation with the structured protected-state error before any broker
|
|
149
|
+
spawn, matching the SDK executor and Windows control-state gates.
|
|
150
|
+
- Made content-addressed Windows native artifacts self-healing on execution.
|
|
151
|
+
A missing new-version artifact is published atomically, concurrent publishers
|
|
152
|
+
converge without a global mutex, and ordinary commands verify stable file
|
|
153
|
+
identity, physical cache containment, and content hash without launching a
|
|
154
|
+
PowerShell verifier. Owner/DACL construction remains part of atomic
|
|
155
|
+
publication; `sandbox doctor` remains verify-only.
|
|
156
|
+
- Made Runtime daemon upgrades version-safe. An alpha.5 execution client
|
|
157
|
+
replaces an idle older daemon on first connection, leaves a busy older daemon
|
|
158
|
+
running with a recoverable error, never downgrades a newer daemon, and never
|
|
159
|
+
mutates an owner whose version is not comparable SemVer.
|
|
160
|
+
- Completed sandbox self-healing at the process facts that own it. Failed
|
|
161
|
+
target-start/controller generations roll out of reuse without stopping live
|
|
162
|
+
holders; an unconfirmed process remains in fixed-port capacity accounting
|
|
163
|
+
until `close`, while spawn failure without an OS process cannot leak capacity.
|
|
164
|
+
Native-host bootstrap delivery failure does not blame or retire a healthy
|
|
165
|
+
shared broker. No command lock, queue, or new permission restriction was
|
|
166
|
+
introduced.
|
|
167
|
+
- Made simultaneous and staggered npm-linked/`kodax -r` upgrade clients
|
|
168
|
+
converge on one idle incompatible-daemon replacement, including a peer that
|
|
169
|
+
attaches between preflight and settlement or after the durable prepared
|
|
170
|
+
ticket but before its revision CAS. One authenticated follower resumes that
|
|
171
|
+
exact durable ticket after detaching while the first client and any other
|
|
172
|
+
followers only observe the owner change; active or untrusted work remains untouched.
|
|
173
|
+
## [0.7.96-alpha.4] - 2026-08-30
|
|
174
|
+
|
|
175
|
+
### Changed
|
|
176
|
+
|
|
177
|
+
- Replaced the legacy Plan/Edits/Auto[RULES]/Auto[LLM] permission shape with
|
|
178
|
+
four canonical profiles: Plan, Edits, Auto[LLM], and Full Access. Legacy
|
|
179
|
+
`auto-in-project` and Rules selections migrate to Auto[LLM]; `/auto-engine`
|
|
180
|
+
and auto-rules loading are removed.
|
|
181
|
+
- Made shell containment sandbox-first. Successful sandbox execution is silent;
|
|
182
|
+
only a proven pre-start denial or unavailable backend reaches Exec Policy and
|
|
183
|
+
the Edits user boundary or Auto reviewer. Started or uncertain commands are
|
|
184
|
+
never replayed, and an approved boundary has at most one host attempt.
|
|
185
|
+
- Added JSONC Exec Policy (`~/.kodax/exec-policy.jsonc`, plus explicitly trusted
|
|
186
|
+
repository policy) with deterministic `allow`/`prompt`/`forbidden` prefix
|
|
187
|
+
rules, strictest-match evaluation, administrator forbids, narrow critical
|
|
188
|
+
fallbacks, and the non-executing `kodax execpolicy check` command.
|
|
189
|
+
- Auto review now runs only at an exact host boundary, uses fixed 90-second and
|
|
190
|
+
one 180-second retry deadlines, fails closed on reviewer infrastructure
|
|
191
|
+
errors, stops a turn after the bounded denial thresholds, and never opens an
|
|
192
|
+
automatic approval prompt. A later informed natural-language instruction is
|
|
193
|
+
reviewed again.
|
|
194
|
+
- Aligned the workspace sandbox with normal development use: inherit the host
|
|
195
|
+
environment except fixed KodaX/Electron execution controls, allow external
|
|
196
|
+
network and system temporary writes, permit broad reads including Agent Home,
|
|
197
|
+
credentials, and global Git configuration, and stop disabling global Git.
|
|
198
|
+
The obsolete `sandbox.envPass` input is inert.
|
|
199
|
+
- Advanced the public Runtime contract to `runtimeAutoModeGuardrail:5` and
|
|
200
|
+
`sharedSessionSettings:2`, with exact canonical/input permission types,
|
|
201
|
+
host-owned Exec Policy/Auto-review options, ACP mode exports, and safe daemon
|
|
202
|
+
replacement so an alpha.4 client cannot silently attach to alpha.3 routing.
|
|
203
|
+
An idle older daemon is replaced automatically; a busy older daemon is left
|
|
204
|
+
intact and reported as a recoverable upgrade boundary, while a newer daemon
|
|
205
|
+
is never downgraded by an older client. A non-SemVer/unknown daemon version is
|
|
206
|
+
likewise left untouched because its ordering cannot be proven.
|
|
207
|
+
- Synchronized README, PRD/HLD/DD/ADR, feature and release records, public
|
|
208
|
+
configuration/SDK guides, config templates, package contents, test guide,
|
|
209
|
+
and `kodax_manual` with the same sandbox-first contract.
|
|
210
|
+
|
|
211
|
+
### Fixed
|
|
212
|
+
|
|
213
|
+
- Removed the shell-tool fallback that could execute unsandboxed after native
|
|
214
|
+
sandbox bootstrap and termination both failed. The boundary is now explicit,
|
|
215
|
+
policy-reviewed, and single-attempt.
|
|
216
|
+
- Closed administrator Exec Policy bypasses through recognized nested Windows shells.
|
|
217
|
+
`cmd /C` and `/K`, PowerShell command selectors/abbreviations, and strict
|
|
218
|
+
UTF-16LE `EncodedCommand` payloads are recursively evaluated. Unlowerable
|
|
219
|
+
bodies remain opaque full-argv operations for exact outer policy and the
|
|
220
|
+
normal Edits/Auto[LLM] boundary; only explicit matched forbids and concrete
|
|
221
|
+
critical effects are non-bypassable.
|
|
222
|
+
- Corrected the Windows shell concurrency regression at its setup/admission
|
|
223
|
+
boundary. Protocol 9/setup generation 9 removes every machine-global ACL
|
|
224
|
+
mutex from ordinary admission. Each canonical root receives one
|
|
225
|
+
policy-independent stable ACE set for `AllowRead`, `AllowWrite`, and
|
|
226
|
+
`DenyWrite`; the command token activates only its exact capabilities. Missing
|
|
227
|
+
ACEs converge additively with `SET_ACCESS` plus DACL readback, without
|
|
228
|
+
revocation, a cross-process target mutex, or a serialized command lifetime.
|
|
229
|
+
This removes both the observed 240-second global-mutex stall and the
|
|
230
|
+
deterministic 75-second failure caused by applying a separate five-second
|
|
231
|
+
mutex wait to each of 15 roots. Generation 8 remains the proof boundary for
|
|
232
|
+
the one-time legacy ACL removal; generation 9 upgrades a healthy account in
|
|
233
|
+
place, preserving its SID/group and filesystem nonce without replaying that
|
|
234
|
+
cleanup. Setup first publishes a protected non-ready `installing` marker; the
|
|
235
|
+
elevated parent validates that exact digest-bound marker and synchronously
|
|
236
|
+
converges NUL compatibility plus profile read capabilities. The caller
|
|
237
|
+
publishes the ready marker only after the parent succeeds. No helper or
|
|
238
|
+
migration overlaps ordinary admission, system TMP is not prewarmed, and
|
|
239
|
+
native protocol/setup advance to `9`, while the published Runtime capability
|
|
240
|
+
is `sandboxRuntime:10`;
|
|
241
|
+
so a newly linked CLI replaces an idle daemon that still carries the setup-8
|
|
242
|
+
ACL behavior and refuses a busy one instead of mixing generations.
|
|
243
|
+
- Fixed first-launch policy construction when a custom `KODAX_HOME` is below the
|
|
244
|
+
system temporary write root. KodaX now creates only its fixed protected
|
|
245
|
+
`sandbox-runtime`, `native-text-state-v1`, `runtime`, `processes`, and `learned`
|
|
246
|
+
directories before passing them as Windows deny-write roots, so native
|
|
247
|
+
validation never rejects a missing host-owned root. This adds no lock, queue,
|
|
248
|
+
ACL mutation, or command-lifetime coordination.
|
|
249
|
+
- Preserved failed managed-turn history across `kodax -r`. The run-end failure
|
|
250
|
+
path now commits the already-rendered Assistant summary, Sidecar Verifier
|
|
251
|
+
verdict, and terminal error in their original order. The JSON load guard also
|
|
252
|
+
accepts the typed `sidecar` item, including a save/load/save/load round trip;
|
|
253
|
+
a first failed turn containing only this presentation history remains
|
|
254
|
+
resumable and visible in the session index. If its first durable write fails,
|
|
255
|
+
the retry reuses the already-staged snapshot instead of appending the
|
|
256
|
+
Assistant/Sidecar/error batch a second time.
|
|
257
|
+
Sessions already overwritten by an older build cannot reconstruct text that
|
|
258
|
+
was never committed to their session file.
|
|
259
|
+
- Moved control-directory provisioning and legacy ACL recovery out of the
|
|
260
|
+
command hot path. Setup owns those machine changes. Native executable images
|
|
261
|
+
use a content-addressed self-healing boundary instead: ordinary admission
|
|
262
|
+
verifies stable file identity, physical cache containment, and the protected
|
|
263
|
+
hash locally, without a PowerShell subprocess. A newly installed or
|
|
264
|
+
`npm link`ed hash is atomically published once if and only if its destination
|
|
265
|
+
is missing; publication constructs and verifies owner/DACL state. Concurrent
|
|
266
|
+
publishers share the immutable winner without a global mutex, and corrupted
|
|
267
|
+
content remains fail-closed rather than being silently repaired. Protocol 9
|
|
268
|
+
requires a hash-bound protected
|
|
269
|
+
setup marker, and the native host holds its non-delete-sharing handle until
|
|
270
|
+
the target's `Started` record is durable. Setup therefore cannot rotate a
|
|
271
|
+
generation across an admitted target-start window. Protocol-8 and older marker
|
|
272
|
+
retirement is setup-only and does not impose the former 301-second admission
|
|
273
|
+
drain; a healthy fixed account is reused so existing sessions keep their
|
|
274
|
+
identity while the new protected marker is published.
|
|
275
|
+
- Closed the remaining native-host termination gaps. The host consumes its
|
|
276
|
+
bootstrap and begins cancellation observation before synchronous ACL/desktop
|
|
277
|
+
preparation, binds the runner process handle before protocol decoding, and
|
|
278
|
+
waits for the winning abort path to durably publish Job-drain evidence before
|
|
279
|
+
exiting. Before the nonce-bound Resume record exists, confirmed host-tree
|
|
280
|
+
termination proves that no target ran and avoids an extra 12-second terminal
|
|
281
|
+
attestation wait.
|
|
282
|
+
- Removed the cross-process command-lifetime filesystem-effect coordinator from
|
|
283
|
+
Bash, trusted text tools, and worktree lifecycle. Same-file text mutations
|
|
284
|
+
retain their narrow kernel/CAS ordering; same-path worktree calls retain a
|
|
285
|
+
process-local queue, while different worktrees and Runtime processes use
|
|
286
|
+
Git's own locks. Deprecated lease exports remain inert for source/ABI
|
|
287
|
+
migration and old coordinator files are ignored, so stale alpha state cannot
|
|
288
|
+
block a new KodaX process.
|
|
289
|
+
- Made each native shell independently own its request, pipes, restricted
|
|
290
|
+
token, Job, resume/started records, and terminal proof. Windows per-command
|
|
291
|
+
`denyRead` now fails closed as structured `unsupported_policy` before doctor,
|
|
292
|
+
setup, DACL mutation, or target start: `WRITE_RESTRICTED` does not enforce a
|
|
293
|
+
restricting capability SID for reads, so claiming containment was incorrect.
|
|
294
|
+
Consequently, isolated Skill Script execution on current native protocol 9
|
|
295
|
+
is POSIX-only; `createAsrtSkillScriptRunner` rejects Windows as unavailable
|
|
296
|
+
instead of weakening its required per-command `denyRead` policy.
|
|
297
|
+
The field remains wire/API compatible, and setup alone can retire legacy
|
|
298
|
+
execution receipts and ACEs.
|
|
299
|
+
Terminal/termination proof failures now propagate through cleanup instead of
|
|
300
|
+
being reported as a successful command. Crash-left atomic-publication staging
|
|
301
|
+
files are removed only after an exact dead-PID and age proof. Network brokers
|
|
302
|
+
are reused by exact authority, retire failed readiness attempts, and use the
|
|
303
|
+
bounded five-broker pool without a one-second idle teardown race. A broker
|
|
304
|
+
remains referenced while starting or leased and detaches from the Node event
|
|
305
|
+
loop only when idle, preventing independent Runtime processes from exiting
|
|
306
|
+
with an unsettled top-level command.
|
|
307
|
+
- Closed the controller-loss reuse race without waiting for unrelated commands.
|
|
308
|
+
Any broker generation implicated by target-start or terminal-proof failure is
|
|
309
|
+
removed from the reusable map immediately; existing leases finish on that old
|
|
310
|
+
generation, while the next same-authority command creates a fresh generation.
|
|
311
|
+
Detached generations remain in live-capacity accounting until their process
|
|
312
|
+
exits, so rolling replacement cannot overrun ASRT's fixed proxy ports. No
|
|
313
|
+
holder is stopped and no lock or queue is added. A caller-local timeout or
|
|
314
|
+
abort still leaves a healthy shared startup intact.
|
|
315
|
+
- Capped each Windows native startup/control phase at 15 seconds without
|
|
316
|
+
replacing the caller's command deadline, matching Codex's phase-local runner
|
|
317
|
+
startup bound. If termination then proves that the nonce-bound Resume record never
|
|
318
|
+
existed, Bash reports pre-start unavailability through the existing permission
|
|
319
|
+
boundary; started or uncertain commands remain non-replayable.
|
|
320
|
+
- Made simultaneous npm-linked clients self-heal one idle incompatible daemon.
|
|
321
|
+
Token-authenticated temporary upgrade identities elect one inventory leader;
|
|
322
|
+
followers detach and reconnect after the existing fenced replacement. This
|
|
323
|
+
adds no ordinary command lock, queue, permission restriction, or daemon kill
|
|
324
|
+
of active work.
|
|
325
|
+
- Closed prepared-invocation leaks in foreground Bash and the public sandbox
|
|
326
|
+
SDK. Generation validation now runs immediately before native host spawn;
|
|
327
|
+
synchronous spawn failure and other proven pre-start exits remove the native
|
|
328
|
+
request and release the broker lease exactly once. Git Job-binding failure
|
|
329
|
+
keeps durable child tracking until process-tree drain is proved by background
|
|
330
|
+
recovery instead of unregistering an unknown tree.
|
|
331
|
+
- Preserved an already wrapped Windows `cmd /S /C` command tail across the
|
|
332
|
+
native runner boundary. The runner no longer adds a third quote layer that
|
|
333
|
+
made a successfully attested background shell immediately exit with “path
|
|
334
|
+
not found” before running its requested program, including when a quoted
|
|
335
|
+
executable is followed by an unquoted final argument.
|
|
336
|
+
- Legacy execution-scoped denyRead receipts are read only by explicit setup for
|
|
337
|
+
one-time migration. Ordinary admission never scans or repairs them.
|
|
338
|
+
- Native requests also stop adding the protected artifact cache as a redundant
|
|
339
|
+
`denyWrite` root; setup generation 8 removes only provable obsolete
|
|
340
|
+
sandbox-account guards and preserves ambiguous administrator ACLs. Real
|
|
341
|
+
Windows coverage holds one command active for up to 120 seconds while a
|
|
342
|
+
second Runtime must start and complete in under 15 seconds, and exercises
|
|
343
|
+
stale control staging, broker pressure, timeout/Job drain, and parallel
|
|
344
|
+
workspace writes.
|
|
345
|
+
|
|
346
|
+
### Removed
|
|
347
|
+
|
|
348
|
+
- Removed the public `/repl` export `allowsAcceptEditsClassifierFallback` with
|
|
349
|
+
no replacement. The Runtime now owns the only shell-boundary route;
|
|
350
|
+
embedders must not install a second Accept Edits classifier fallback.
|
|
351
|
+
- Removed the stale public `createAgentHomeShellBoundaryGuardrail` helper and
|
|
352
|
+
its options type. It imposed a second Agent Home/opaque-shell block outside
|
|
353
|
+
the Runtime-owned sandbox-first route and has no replacement.
|
|
354
|
+
|
|
7
355
|
## [0.7.96-alpha.3] - 2026-08-29
|
|
8
356
|
|
|
9
357
|
### Added
|