@kodax-ai/kodax 0.7.71 → 0.7.72
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 +602 -487
- package/README.md +46 -27
- package/README_CN.md +30 -13
- package/dist/chunks/agent-YKGU4USA.js +2 -0
- package/dist/chunks/argument-completer-QZETLNAB.js +2 -0
- package/dist/chunks/{chunk-SX2WFHIS.js → chunk-2RI252RN.js} +1 -1
- package/dist/chunks/chunk-CLFP6UGU.js +71 -0
- package/dist/chunks/chunk-E27LHEIP.js +37 -0
- package/dist/chunks/chunk-EDZ5KJFT.js +5 -0
- package/dist/chunks/chunk-GIK4SGAT.js +364 -0
- package/dist/chunks/chunk-GVWPHE23.js +310 -0
- package/dist/chunks/{chunk-A2TFSV5M.js → chunk-IR5KIK7E.js} +1 -1
- package/dist/chunks/chunk-JSDLBXME.js +755 -0
- package/dist/chunks/chunk-MVARIMQV.js +22 -0
- package/dist/chunks/chunk-PKQOEDHJ.js +628 -0
- package/dist/chunks/{chunk-64NQBOSN.js → chunk-SQODXBLX.js} +1 -1
- package/dist/chunks/chunk-VDGCGOQH.js +328 -0
- package/dist/chunks/chunk-VVE3UM4F.js +410 -0
- package/dist/chunks/chunk-WIBLZK4G.js +151 -0
- package/dist/chunks/{compaction-config-5KKKXYFT.js → compaction-config-TWCDFLX6.js} +1 -1
- package/dist/chunks/{construction-bootstrap-OXDDDW6O.js → construction-bootstrap-ZJPXUPXQ.js} +1 -1
- package/dist/chunks/dist-JT4ATXVM.js +2 -0
- package/dist/chunks/host-SVEDZUC5.js +2 -0
- package/dist/chunks/{run-manager-Z3W6MDO7.js → run-manager-RX42UNEM.js} +1 -1
- package/dist/chunks/{utils-CFOXDCB5.js → utils-OTT5CG5J.js} +1 -1
- package/dist/index.d.ts +13 -13
- package/dist/index.js +4 -4
- package/dist/kodax_bootstrap.js +28 -0
- package/dist/kodax_cli.js +1325 -1333
- package/dist/kodax_resume.js +44 -0
- package/dist/provider-capabilities.json +50 -48
- package/dist/runtime-worker.js +1322 -1330
- package/dist/sdk-a2a.d.ts +10 -9
- package/dist/sdk-a2a.js +1 -1
- package/dist/sdk-agent.d.ts +382 -206
- package/dist/sdk-agent.js +1 -1
- package/dist/sdk-coding.d.ts +80 -128
- package/dist/sdk-coding.js +1 -1
- package/dist/sdk-experimental-memory.js +1 -1
- package/dist/sdk-mcp.js +1 -1
- package/dist/sdk-media.d.ts +3 -0
- package/dist/sdk-media.js +1 -1
- package/dist/sdk-repl.d.ts +71 -23
- package/dist/sdk-repl.js +2 -2
- package/dist/sdk-runtime.d.ts +143 -31
- package/dist/sdk-runtime.js +1 -1
- package/dist/sdk-session.d.ts +6 -5
- package/dist/sdk-session.js +1 -1
- package/dist/sdk-skills.d.ts +5 -5
- package/dist/sdk-skills.js +1 -1
- package/dist/semantic-worker.js +14 -14
- package/dist/types-chunks/{bash-prefix-extractor.d-YoiZl5yt.d.ts → bash-prefix-extractor.d-CHJO5y94.d.ts} +107 -248
- package/dist/types-chunks/{capsule.d-CK5Pfz1k.d.ts → capsule.d-DxtdE-GD.d.ts} +24 -95
- package/dist/types-chunks/center-types.d-BBT122uJ.d.ts +91 -0
- package/dist/types-chunks/{commands.d-D6g2jq8V.d.ts → commands.d-DZxHzH5-.d.ts} +6 -4
- package/dist/types-chunks/{guardrail.d-DilYC1dh.d.ts → guardrail.d-DlpMnd-Y.d.ts} +1 -1
- package/dist/types-chunks/{guardrail.d-DdeDWnVu.d.ts → guardrail.d-auV61_h5.d.ts} +83 -10
- package/dist/types-chunks/public-api.d--IDNJsu1.d.ts +1342 -0
- package/dist/types-chunks/{run-manager.d-DxU3SSGR.d.ts → run-manager.d-Bh50OdVl.d.ts} +1 -1
- package/dist/types-chunks/sdk-session-Cfw6NFu-.d.ts +82 -0
- package/dist/types-chunks/{types.d-CEZZSY9s.d.ts → types.d-CNZgY52F.d.ts} +2 -2
- package/dist/types-chunks/{types.d-vJExiRje.d.ts → types.d-DCQVBqVn.d.ts} +10 -5
- package/dist/types-chunks/{types.d-CRCaLt_s.d.ts → types.d-DH1mvdcl.d.ts} +284 -164
- package/dist/types-chunks/{types.d-CzsLFqmf.d.ts → types.d-EqQmHztg.d.ts} +9 -10
- package/dist/types-chunks/{utils.d-Cb6vdvFM.d.ts → utils.d-gmn3c5U4.d.ts} +9 -12
- package/docs/SDK_EMBEDDER_GUIDE.md +171 -26
- package/package.json +4 -4
- package/scripts/kodax-bin.cjs +4 -2
- package/scripts/production-env.cjs +9 -0
- package/dist/chunks/agent-X2EWQADL.js +0 -2
- package/dist/chunks/argument-completer-BLNXDO2F.js +0 -2
- package/dist/chunks/chunk-4DY756KL.js +0 -70
- package/dist/chunks/chunk-52JSZ77P.js +0 -37
- package/dist/chunks/chunk-A574DBTV.js +0 -422
- package/dist/chunks/chunk-F7KGYHJ3.js +0 -624
- package/dist/chunks/chunk-GVTM4Z6O.js +0 -151
- package/dist/chunks/chunk-PHH4TRGF.js +0 -22
- package/dist/chunks/chunk-PVUXONQB.js +0 -366
- package/dist/chunks/chunk-T7LYK53M.js +0 -329
- package/dist/chunks/chunk-VRSVNU2Y.js +0 -7
- package/dist/chunks/chunk-Y5XKAN7C.js +0 -755
- package/dist/chunks/chunk-Z535BARK.js +0 -306
- package/dist/chunks/dist-IXJRJ27U.js +0 -2
- package/dist/chunks/host-VRKDAN26.js +0 -2
- package/dist/types-chunks/public-api.d-BvCp5VkW.d.ts +0 -601
- package/dist/types-chunks/sdk-session-wGpa7X_U.d.ts +0 -796
package/CHANGELOG.md
CHANGED
|
@@ -6,500 +6,615 @@ All notable changes to this project will be documented in this file.
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
-
## [0.7.
|
|
9
|
+
## [0.7.72] - 2026-07-19
|
|
10
10
|
|
|
11
11
|
### Added
|
|
12
12
|
|
|
13
|
-
- **
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
compatibility. A hot `agents.<name>.enabled` switch plus `kodax a2a
|
|
30
|
-
enable|disable` lets operators keep many configured third-party Agents while
|
|
31
|
-
controlling which ones admit new orchestration; in-flight tasks are not
|
|
32
|
-
cancelled.
|
|
13
|
+
- **Learning Center and learned-capability Runtime control plane
|
|
14
|
+
(FEATURE_266).** KodaX now owns learned capability lifecycle, notification
|
|
15
|
+
cursors, lower-precedence learned Skill discovery, F224 proposal projection,
|
|
16
|
+
promotion/rollback actions, and inline/Worker/daemon SDK parity through one
|
|
17
|
+
agent-layer service. `/learn`, status summaries, and the Ink learning segment
|
|
18
|
+
expose the same durable state without creating a second runtime engine.
|
|
19
|
+
- **Unified adaptive Actor/Turn control plane (FEATURE_270).** AMA collaboration
|
|
20
|
+
now uses one Runtime-owned actor tree and scheduler across native, recursive,
|
|
21
|
+
Workflow-owned, constructed, and external Agent work. The canonical
|
|
22
|
+
`spawn_agent`, `send_message`, `followup_task`, `wait_agent`,
|
|
23
|
+
`interrupt_agent`, `list_agents`, and `agent_output` surface supports reusable
|
|
24
|
+
Actor identities, durable Turn history, direct-parent completion, recursive
|
|
25
|
+
delegation, shared capacity, and SDK/daemon recovery. A manifest-first,
|
|
26
|
+
fail-closed behavioral eval driver freezes the released/current production
|
|
27
|
+
prompt and tool bytes, call graphs, budgets, raw evidence, and blind review
|
|
28
|
+
mapping before any separately authorized provider call.
|
|
33
29
|
|
|
34
30
|
### Changed
|
|
35
31
|
|
|
36
|
-
- **
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
32
|
+
- **Current coding-eval aliases and MiniMax default model.** Newly authored or
|
|
33
|
+
revised evals now route Zhipu through `zhipu/glm52` (`glm-5.2`) and MiniMax
|
|
34
|
+
through `mmx/m3` (`MiniMax-M3`). `minimax-coding` now defaults to M3 while
|
|
35
|
+
the old `zhipu/glm51` and `mmx/m27` aliases remain explicitly selectable for
|
|
36
|
+
historical replay; existing raw evidence and reports keep their original
|
|
37
|
+
route labels.
|
|
38
|
+
- **AMA and Workflow orchestration cutover.** AMAW and the old model-visible
|
|
39
|
+
child-task vocabulary are retired. Persisted `amaw`/`ama-workflow` settings
|
|
40
|
+
migrate once to AMA, while new inputs fail with a migration hint. Workflow
|
|
41
|
+
remains available for explicit natural-language, command, named-pattern, and
|
|
42
|
+
SDK requests, but its child Agents now use the unified Actor scheduler and
|
|
43
|
+
task complexity alone no longer activates Workflow.
|
|
44
44
|
|
|
45
45
|
### Fixed
|
|
46
46
|
|
|
47
|
-
- **
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
`migrateA2ALegacyTaskOwners()` SDK with exact mappings. Ambiguous or live-
|
|
53
|
-
store migration fails closed. Global task capacity now uses a synchronous
|
|
54
|
-
pending reservation, keeping slow workspace/session/run preparation outside
|
|
55
|
-
any global lock while preserving exact limits and per-principal ordering.
|
|
56
|
-
- **Bounded External Agent and daemon shutdown/startup.** Executor-plane close
|
|
57
|
-
now has a 30-second default upper bound (overrideable with `closeTimeoutMs`),
|
|
58
|
-
obsolete-executor cleanup runs outside the serialized registration mutation
|
|
59
|
-
lane, and revision tombstones are SHA-256 fingerprints capped at 4,096
|
|
60
|
-
entries. Current registrations and task snapshots continue to enforce exact
|
|
61
|
-
revision immutability after older, unreferenced tombstones age out. Daemon
|
|
62
|
-
auto-start now races health checks against the spawned child's exit, keeps
|
|
63
|
-
the child referenced until readiness, and terminates it on early exit,
|
|
64
|
-
timeout, identity mismatch, or when another daemon wins ownership. A startup
|
|
65
|
-
candidate that exits after losing the owner race now lets its SDK caller wait
|
|
66
|
-
for and attach to the competing owner instead of failing that caller.
|
|
67
|
-
- **Faster packaged-Electron gates.** Release jobs build once and reuse that
|
|
68
|
-
output for both the Windows Electron smoke and binary packaging. CI and
|
|
69
|
-
release jobs cache the version-pinned Electron smoke toolchain, whose local
|
|
70
|
-
directory is now explicitly ignored. Both paths explicitly materialize the
|
|
71
|
-
Electron binary after cache restore or dependency installation, preventing a
|
|
72
|
-
successful npm package install with a missing `electron/dist` from bypassing
|
|
73
|
-
the real packaged-daemon gate.
|
|
74
|
-
- **A2A authentication and reconciliation hardening.** Card-level and
|
|
75
|
-
Skill-level security requirements now fail closed unless one complete
|
|
76
|
-
alternative is satisfiable. Card, RPC, and token origins remain separate;
|
|
77
|
-
exact credentials used by active RPC/SSE requests remain retained through
|
|
78
|
-
response parsing and are redacted from errors and successful results;
|
|
79
|
-
concurrent rejected-token invalidation cannot discard a newer token and each
|
|
80
|
-
RPC retries at most once. Direct SDK and file configuration now share strict
|
|
81
|
-
issuer, endpoint, resource, and RFC 6749 scope validation. Task ownership
|
|
82
|
-
also requires a stable `securityRealm` and hashes the
|
|
83
|
-
`(realm, subject, tenant)` tuple: built-in Bearer/OAuth derive realms from the
|
|
84
|
-
token-env name/exact issuer, custom authentication must provide one, authority
|
|
85
|
-
switches and legacy pre-realm tasks fail closed, and same-realm restart
|
|
86
|
-
preserves new-format tasks. Authentication/effect changes participate in
|
|
87
|
-
executor revisions; registration persistence
|
|
88
|
-
precedes catalog mutation; first-class management ownership plus revision-
|
|
89
|
-
conditional mutations protects unrelated or concurrently replaced SDK
|
|
90
|
-
registrations, including same-revision owner takeovers; changed authority is
|
|
91
|
-
fenced before parallel discovery; live drift is repaired; and a final
|
|
92
|
-
post-preflight admission check closes disable/removal races without
|
|
93
|
-
rediscovering unchanged peers. Internal immutable route snapshots preserve
|
|
94
|
-
admitted task input/cancel/reconcile routing across registration update or
|
|
95
|
-
removal and Runtime restart without exposing secret material or expanding the
|
|
96
|
-
public task DTO. Admission now rechecks globally unique task IDs, task writes
|
|
97
|
-
publish to memory only after durable persistence, and terminal event-write
|
|
98
|
-
failures cannot strand waiters or route snapshots. Returned registration
|
|
99
|
-
summaries are detached, executor cache keys are unambiguous tuples, and one
|
|
100
|
-
ownership conflict or observer failure cannot abort unrelated Agent
|
|
101
|
-
reconciliation or leave unawaited activation work. Daemon A2A ownership is
|
|
102
|
-
now bound to the exact resolved config home—`<homeDir>/.kodax` when explicitly
|
|
103
|
-
selected, otherwise the possibly arbitrary `KODAX_HOME`—recorded in daemon
|
|
104
|
-
state, and checked across every local profile before mutation. Legacy
|
|
105
|
-
non-empty version-1 A2A files require an explicit stopped-owner migration,
|
|
106
|
-
while version-2 migration is a read-only idempotent no-op. Failed initial A2A
|
|
107
|
-
reconciliation also closes the newly created Runtime before releasing daemon
|
|
108
|
-
ownership.
|
|
109
|
-
- **A2A post-closure lifecycle and resource correctness.** Executor operations
|
|
110
|
-
and close now drain without disposal races; configured artifact references
|
|
111
|
-
and direct `a2a call` use a bounded reference-only/no-fetch policy. CLI task
|
|
112
|
-
RPC/SSE permits 32 MiB while Card/interface/OAuth/security metadata remains
|
|
113
|
-
capped at 2 MiB, and unsupported required Card extensions fail discovery.
|
|
114
|
-
Daemon mutation now requires independently owner-derived
|
|
115
|
-
`externalAgentAdmin: 1` and `a2aConfigReconciler: 1`; capability overrides
|
|
116
|
-
cannot forge them. Public `/a2a` config exports are read-only, with raw writers
|
|
117
|
-
retained inside the fenced CLI owner. Inbound serving now has a global
|
|
118
|
-
admission reservation, subscribe-first replay, authentication-before-body,
|
|
119
|
-
exact JSON/SSE media matching, an admitted-handler close barrier, and fixed
|
|
120
|
-
four-per-task/eight-per-server/24 MiB-per-stream SSE ceilings without
|
|
121
|
-
terminating the underlying task for one slow subscriber.
|
|
122
|
-
- **Public Kimi Open Platform parity and live coverage.** `kimi` now defaults to
|
|
123
|
-
`kimi-k2.7-code`, exposes the HighSpeed route and wire-legal K2.5 id, uses the
|
|
124
|
-
exact 262,144-token limits and current prices, and has gated real-key coverage
|
|
125
|
-
for credential verification, K2.7 thinking, forced-tool fallback, and K2.6
|
|
126
|
-
thinking disablement. K2.7 disable requests now fail locally instead of being
|
|
127
|
-
silently ignored, while K2.6 disable requests emit the required wire toggle.
|
|
47
|
+
- **Remote Runtime subscription readiness.** Daemon event/workflow
|
|
48
|
+
subscriptions now expose an awaitable `RuntimeSubscription.ready` handshake,
|
|
49
|
+
so hosts can establish cross-client ordering before starting work whose first
|
|
50
|
+
event must not be missed. Handshake failures remain observable to new callers
|
|
51
|
+
without creating unhandled rejections in legacy callers that ignore `ready`.
|
|
128
52
|
|
|
129
|
-
- **
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
lower-level `.kodax` path used by `KODAX_HOME`.
|
|
139
|
-
- **Cross-platform release template checks.** Generated configuration templates
|
|
140
|
-
now compare normalized line endings, so Windows CRLF checkouts no longer report
|
|
141
|
-
false drift during binary builds.
|
|
53
|
+
- **Detached daemon lifecycle cleanup.** CLI and SDK startup now retain the
|
|
54
|
+
exact candidate process until its PID is healthy and reclaim only that process
|
|
55
|
+
tree on early exit, timeout, identity mismatch, owner-race loss, or startup
|
|
56
|
+
cancellation. Vitest-owned daemons also shut down when a forcibly terminated
|
|
57
|
+
worker cannot run normal teardown; production daemons remain persistent after
|
|
58
|
+
ordinary client detach and have no idle reaper. A source daemon child now
|
|
59
|
+
carries only KodaX's production preload, explicit `tsx` support, and safe
|
|
60
|
+
Node engine flags instead of inheriting arbitrary parent loaders, preventing
|
|
61
|
+
test-runner hooks from parsing daemon CLI arguments.
|
|
142
62
|
|
|
143
|
-
|
|
63
|
+
- **Windows memory lifecycle lock contention.** Concurrent forget/archive
|
|
64
|
+
operations now retry short-lived Windows sharing denials within the existing
|
|
65
|
+
bounded lock deadline instead of failing immediately with `EPERM`; unrelated
|
|
66
|
+
filesystem errors remain fail-fast.
|
|
144
67
|
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
facades now expose revisioned management inspection and atomic
|
|
149
|
-
`stopForInline()`, plus public owner-fence queries and revision-free daemon
|
|
150
|
-
re-enable helpers for safe embedder rollback workflows.
|
|
151
|
-
|
|
152
|
-
### Changed
|
|
153
|
-
|
|
154
|
-
- **KAI-FCL licensing from v0.7.70.** Official KodaX source, binaries, and npm
|
|
155
|
-
packages now use the KodaX-AI Fair Core License 1.0: community use remains
|
|
156
|
-
available, while commercial or managed use requires KodaX-AI authorization.
|
|
157
|
-
Previously released Apache-2.0 copies retain their original grants.
|
|
158
|
-
|
|
159
|
-
### Fixed
|
|
160
|
-
|
|
161
|
-
- **A2A interoperability and execution boundaries.** Selected Card interfaces
|
|
162
|
-
remain bound to their trusted discovery origin and advertised Bearer scheme;
|
|
163
|
-
concrete recursive reads and child runs retain the parent policy ceiling;
|
|
164
|
-
pending input resumes the original Runtime run; task retention, history,
|
|
165
|
-
cleanup, stable cursor pagination, protocol correlation/version, authenticated
|
|
166
|
-
SSE, appended artifact chunks, and early-stream-EOF semantics are bounded;
|
|
167
|
-
and direct, staged, or successfully promoted admitted Skill outputs are
|
|
168
|
-
returned as negotiated artifacts without exposing ordinary workspace writes.
|
|
169
|
-
- **MCP multilingual zero-match efficiency.** Compact CJK queries now segment
|
|
170
|
-
into words, while cross-language lexical zero matches can return a lossless
|
|
171
|
-
shared-prefix exact-id inventory only when it is no more expensive than a
|
|
172
|
-
normal default search page and fits the real result capacity. Oversized
|
|
173
|
-
recovery emits one concise catalog-language retry with no biased partial list.
|
|
174
|
-
Fully unavailable catalogs no longer trigger a duplicate inventory attempt;
|
|
175
|
-
concurrent discovery is coalesced, in-flight invalidation cannot be overwritten,
|
|
176
|
-
and filtered cursor revisions ignore unrelated capability families.
|
|
177
|
-
- **Logical daemon client accounting.** Stop preflight now counts only live,
|
|
178
|
-
initialized SDK clients. Daemon self-connections and read-only health probes
|
|
179
|
-
are excluded, and awaited client close converges the count across processes.
|
|
180
|
-
Health probes also tolerate the daemon token disappearing during a concurrent
|
|
181
|
-
shutdown or owner transition instead of leaking an `ENOENT` race to clients.
|
|
182
|
-
- **Preflight/stop race.** Rollback commit gates new clients and mutations,
|
|
183
|
-
validates the same Runtime, management revision, owner-policy revision, and
|
|
184
|
-
blockers, and changes sticky inline policy while the verified daemon still
|
|
185
|
-
owns the profile fence. Stale commits fail with structured `conflict` and do
|
|
186
|
-
not stop or change policy.
|
|
187
|
-
- **Complete rollback draining and background-work blockers.** Credential and
|
|
188
|
-
Host Tool bridge state can no longer change after draining starts, while
|
|
189
|
-
running/paused Workflows and non-terminal or unknown External Agent tasks now
|
|
190
|
-
block stop and participate in the management revision. Reverse-result frames
|
|
191
|
-
remain outside the durable journal so credentials and Host Tool results are
|
|
192
|
-
not persisted. In-flight stop conflicts identify the active mutation methods
|
|
193
|
-
and counts so lifecycle stalls can be diagnosed without reproducing them.
|
|
194
|
-
|
|
195
|
-
## [0.7.69] - 2026-07-15
|
|
196
|
-
|
|
197
|
-
> Scope note: this release delivers **FEATURE_267**, **FEATURE_268**, and
|
|
198
|
-
> **FEATURE_269** as one bounded interoperability/runtime release: bidirectional
|
|
199
|
-
> A2A 1.0, split hot-reloadable integration configuration, and one authoritative
|
|
200
|
-
> shared Coder daemon with secure host bridges. It does not expose the daemon
|
|
201
|
-
> remotely, migrate Partner from its private embedded Runtime, or publish
|
|
202
|
-
> credentials/Host Tools outside their bound run.
|
|
203
|
-
|
|
204
|
-
### Added
|
|
205
|
-
|
|
206
|
-
- **Bidirectional A2A 1.0 interoperability (FEATURE_267).** Added the
|
|
207
|
-
`@kodax-ai/kodax/a2a` integration edge: allowlisted Agent Card discovery and
|
|
208
|
-
a JSON-RPC/SSE executor over the existing F258 plane, plus an authenticated,
|
|
209
|
-
caller-scoped, durable Runtime-backed KodaX Agent server with continuation,
|
|
210
|
-
cancellation, ordered replay/subscription, and restart reattachment.
|
|
211
|
-
- **No-code A2A product path and Runtime binding.** Added declarative
|
|
212
|
-
`a2a add/list/test/call/remove`, automatic `external:<name>` registration for
|
|
213
|
-
built-in Runtime owners, and explicit `a2a expose` / loopback-only `a2a
|
|
214
|
-
serve`. The inbound server can publish the Runtime default or one validated
|
|
215
|
-
user Markdown Agent with pinned Agent/Skill/tool/workspace revisions,
|
|
216
|
-
structured `toolPolicy`, `~/.agents/skills` discovery, and exact Skill-script
|
|
217
|
-
execution through the fail-closed ASRT adapter.
|
|
218
|
-
- **Split integration configuration and hot reload (FEATURE_268).** MCP, A2A,
|
|
219
|
-
and Extensions now use one user-level versioned file per domain, backed by
|
|
220
|
-
four canonical templates, explicit lossless migration, locked atomic writes,
|
|
221
|
-
last-known-good watchers with metadata fallback, whole-provider MCP draining,
|
|
222
|
-
entry-transactional Extension/outbound-A2A reconciliation, and explicit
|
|
223
|
-
restart-required handling for inbound execution/store authority changes.
|
|
224
|
-
- **A2A network and publication boundaries.** Outbound fetches enforce origin,
|
|
225
|
-
DNS/private-address, TLS, redirect, credential, timeout, content-type, and
|
|
226
|
-
size policy. The built-in server listener is loopback-only; public hosts use
|
|
227
|
-
`handle()` behind TLS. A2A 0.3, gRPC, HTTP+JSON, push notifications, automatic
|
|
228
|
-
public Agent exposure, and remote Runtime configuration are not advertised.
|
|
229
|
-
- **Authoritative shared Coder daemon (FEATURE_269).** Added atomic
|
|
230
|
-
`sessions.observe()` join/resync, durable operation identities and receipts,
|
|
231
|
-
stable same-session ordering, settings/grant CAS, transport-safe AskUser and
|
|
232
|
-
permission resolution, live run projection, structured restart outcomes, and
|
|
233
|
-
a truthful per-capability Coder compatibility matrix for CLI, Space, IDE, and
|
|
234
|
-
SDK clients.
|
|
235
|
-
- **Shared-daemon SDK completion.** Server-side Coder/Partner admission now
|
|
236
|
-
covers every session and run path; late-join snapshots include transcript
|
|
237
|
-
revision, managed tasks, queued continuation metadata, and reverse
|
|
238
|
-
requirements. The SDK adds prompt connection lifecycle signals, typed event
|
|
239
|
-
parsing with per-event degradation, daemon-safe run DTOs,
|
|
240
|
-
`agentMode`/`autoModeEngine` settings CAS, durable operation/Host Tool outcome
|
|
241
|
-
queries, and daemon stop/rollback preflight.
|
|
242
|
-
- **Secure host bridges and owner fencing.** Provider credentials are supplied
|
|
243
|
-
just in time through stable-client/run/provider-bound leases and never
|
|
244
|
-
persisted. A keychain-held stable client secret can reattach credential and
|
|
245
|
-
Host Tool handlers after Space reconnects; Host Tools remain immutable and
|
|
246
|
-
run-bound, with fsynced dispatch truth and explicit unknown outcomes rather
|
|
247
|
-
than blind replay. Daemon and inline Coder ownership share one revisioned
|
|
248
|
-
fence with sticky rollback, while Partner remains isolated.
|
|
249
|
-
|
|
250
|
-
### Changed
|
|
251
|
-
|
|
252
|
-
- **Tool-result delivery now optimizes end-to-end context use.** Tool handlers
|
|
253
|
-
collect complete results and one aggregate next-request capacity owner keeps
|
|
254
|
-
every result inline when the batch fits. Default Bash processing no longer
|
|
255
|
-
applies command-specific lossy filters; its former 512 KiB capture limit is
|
|
256
|
-
now only a memory-to-disk spool threshold. Capacity is solved against the
|
|
257
|
-
final input (`Pmax`), so the 3% uncertainty margin grows with the admitted
|
|
258
|
-
batch instead of being frozen at the smaller pre-batch request.
|
|
259
|
-
- **History compaction is physical-capacity driven.** Default automatic
|
|
260
|
-
compaction waits until the final provider envelope (system prompt, actual
|
|
261
|
-
tools, messages/framing, output reserve, and safety margin) cannot fit.
|
|
262
|
-
Default microcompaction and destructive pre-summary/fallback pruning are off;
|
|
263
|
-
pressure uses semantic summary first and stops as soon as the next request
|
|
264
|
-
fits. Static early percentages remain explicit opt-ins, and manual
|
|
265
|
-
`/compact` remains an explicit force operation.
|
|
266
|
-
- **Self-knowledge follows the v0.7.69 capability surface.** `kodax_manual`
|
|
267
|
-
now documents the three split integration files and migration/hot-reload
|
|
268
|
-
behavior, the `/a2a` SDK subpath, atomic shared-daemon observation, durable
|
|
269
|
-
controls, run-scoped credentials/Host Tools, and daemon/inline ownership.
|
|
270
|
-
|
|
271
|
-
### Fixed
|
|
272
|
-
|
|
273
|
-
- **Recoverable overflow and hidden output caps.** Overflow of the final
|
|
274
|
-
operational request budget saves the complete result and emits one explicit
|
|
275
|
-
incomplete marker. Long lines have exact continuation offsets, completed task
|
|
276
|
-
output is complete, and hidden caps were removed from grep, glob, code search,
|
|
277
|
-
and retrieval rendering.
|
|
278
|
-
- **Cache token accounting and history preservation.** Cache tokens are charged
|
|
279
|
-
once. Empty, failed, or insufficient summaries now surface a typed capacity
|
|
280
|
-
error while retaining the canonical transcript and immutable Worker prompt.
|
|
281
|
-
- **Tool-result completeness and retention edge cases.** No-usage accounting
|
|
282
|
-
includes the final system prompt, active schemas, and same-request recovery;
|
|
283
|
-
explicit limits use one-extra-item probes; delayed Bash drain remains
|
|
284
|
-
recoverable. Referenced result/image artifacts and fresh checkpoints are no
|
|
285
|
-
longer removed by age-only cleanup.
|
|
286
|
-
- **Post-review capacity correctness.** Trusted artifact metadata cannot be
|
|
287
|
-
forged by raw tool text; failures carry the last legal transcript; observers
|
|
288
|
-
see admitted content; child evidence uses the routed model's physical budget;
|
|
289
|
-
bounded acquisition exposes continuation instead of silent loss; direct Bash
|
|
290
|
-
artifacts remain canonical without nested spill markers.
|
|
291
|
-
- **Windows process-tree fallback.** A failed or timed-out `taskkill /t` now
|
|
292
|
-
triggers a native Toolhelp parent snapshot before direct escalation, with
|
|
293
|
-
CIM/WMIC retained only as fallback. Agent and LLM cleanup stay aligned and a
|
|
294
|
-
real nested-process regression proves descendants exit.
|
|
295
|
-
- **Windows lock deletion races.** Proposal and lifecycle lock probes treat
|
|
296
|
-
transient `EPERM`/`EACCES`/`EBUSY` as non-stale and retry, preserving the
|
|
297
|
-
fail-closed owner-token contract during concurrent removal.
|
|
298
|
-
- **Frozen FEATURE_259 eval inputs.** The pre-iteration dispatch schema is
|
|
299
|
-
reconstructed from its historical bytes, so later production tool-schema
|
|
300
|
-
improvements cannot mutate the baseline or invite a hash-only CI workaround.
|
|
301
|
-
- **Governed-memory Bash guard bypasses.** Commands that directly address
|
|
302
|
-
recognized scoped or legacy memory roots now permit only one simple read-only
|
|
303
|
-
inspection; command chaining, pipelines, redirects, home-relative paths, and
|
|
304
|
-
interpreter writes fail closed at the Bash tool boundary.
|
|
305
|
-
- **Memory proposal and review persistence integrity.** Invalid approval
|
|
306
|
-
metadata now produces a store warning and blocks rewrites; project-less review
|
|
307
|
-
drains no longer claim project-owned work; persisted outcome evidence receives
|
|
308
|
-
full shape validation; atomic writes clean temporary files on failure.
|
|
309
|
-
- **Memory store lock ownership.** Proposal and lifecycle locks now carry a PID
|
|
310
|
-
plus random owner token, avoid reclaiming stale locks held by a live process,
|
|
311
|
-
and remove a lock only when the releasing owner token still matches. Lifecycle
|
|
312
|
-
state writes now use temporary-file rename instead of direct truncating writes.
|
|
313
|
-
- **Interactive resume handoff and large-store startup.** Bare `kodax -r` now
|
|
314
|
-
keeps the selected session through the picker-to-TUI handoff instead of
|
|
315
|
-
exiting, and the picker uses bounded metadata paging instead of repeatedly
|
|
316
|
-
full-reading every matching session before it opens.
|
|
317
|
-
- **A2A/configuration release hardening.** Review gaps in remote execution,
|
|
318
|
-
Skill-script admission/isolation, hot reload, listener preparation, binding
|
|
319
|
-
pinning, last-known-good reconciliation, and redacted diagnostics now fail
|
|
320
|
-
closed or retain the prior healthy revision as specified. The public A2A
|
|
321
|
-
server type now exposes its existing readiness wait, validated DNS results
|
|
322
|
-
narrow explicitly to IPv4/IPv6, and safe request-body typing no longer
|
|
323
|
-
depends on an undeclared DOM global, keeping root TypeScript validation green.
|
|
324
|
-
|
|
325
|
-
## [0.7.68] - 2026-07-12
|
|
326
|
-
|
|
327
|
-
> Scope note: this release delivers **FEATURE_260**, the KodaX Memory Agent,
|
|
328
|
-
> as a thin experimental SDK and governed runtime extension over the existing
|
|
329
|
-
> F228 Memory Control Plane. It does not add a second memory database, a
|
|
330
|
-
> resident specialist agent, filesystem memory actions, or online self-modification.
|
|
331
|
-
|
|
332
|
-
### Added
|
|
333
|
-
|
|
334
|
-
- **Thin experimental Memory Agent SDK.** Added
|
|
335
|
-
`@kodax-ai/agent/experimental-memory` and the root `/experimental-memory`
|
|
336
|
-
entry with scoped `MemorySession` lifecycle, zero-wait passive recall,
|
|
337
|
-
read-only deliberate `query()`, bounded observations, and episode outcomes.
|
|
338
|
-
- **Deliberate governed recall for the Action LLM.** A session-bound
|
|
339
|
-
`memory_recall` tool exposes only one `need` field, returns prompt-safe
|
|
340
|
-
low-authority evidence from the same F228 plane, and keeps identity, scope,
|
|
341
|
-
revision, and sequence outside model input.
|
|
342
|
-
- **Auditable memory decisions and outcomes.** Trace-only
|
|
343
|
-
`MemoryDecisionReceipt` records candidate/selected/injected refs and policy
|
|
344
|
-
version; accepted Outcome Digests can conservatively link influence without
|
|
345
|
-
storing hidden reasoning or creating a second event store.
|
|
346
|
-
- **Bounded episode review and promotion.** Timed-out review work persists in a
|
|
347
|
-
scoped inbox for bounded next-session drain and revalidation. Promotion now
|
|
348
|
-
consults compatible claims before choosing create, evidence update,
|
|
349
|
-
condition refinement, conflict, no-action, reject, or quarantine.
|
|
350
|
-
|
|
351
|
-
### Changed
|
|
68
|
+
- **MiniMax M3 default media regression.** The media capability suite now
|
|
69
|
+
expects the current `minimax-coding` default, MiniMax M3, to support image
|
|
70
|
+
input while retaining fail-closed checks for unverified nearby routes.
|
|
352
71
|
|
|
353
|
-
- **
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
72
|
+
- **Bare resume cancellation terminal release.** Pressing Esc in `kodax -r`
|
|
73
|
+
now pauses and unreferences the picker-owned stdin path before the bootstrap
|
|
74
|
+
exits, so Windows PowerShell regains its prompt immediately without requiring
|
|
75
|
+
an extra keypress. The full CLI remains unloaded while listing sessions,
|
|
76
|
+
successful selection hands input to the REPL, and replay retains each
|
|
77
|
+
persisted event timestamp.
|
|
78
|
+
- **Auto[LLM] approval reliability.** The default classifier budget is now 20
|
|
79
|
+
seconds, pure readonly invocations bypass classification by invariant, and
|
|
80
|
+
SDK/daemon session settings can select the classifier model and timeout without
|
|
81
|
+
stale guardrail-cache reuse. Runtime advertises and requires
|
|
82
|
+
`runtimeAutoModeGuardrail:1` for auto-started daemon clients, owns the Session
|
|
83
|
+
guardrail ahead of the generic permission hook, persists LLM-to-rules
|
|
84
|
+
fallback, and creates a shared pending request only for an explicit
|
|
85
|
+
escalation. An older daemon is replaced only after a revision/owner-policy
|
|
86
|
+
fenced preflight proves that active/queued work and pending interactions are
|
|
87
|
+
absent; busy or unfenceable daemons return a typed recoverable error. The one
|
|
88
|
+
conditional readonly exception, `semantic_lookup(refresh:true)`, remains
|
|
89
|
+
classified because it rebuilds the on-disk derived index.
|
|
90
|
+
- **Runtime permission boundary correctness.** Relative operands resolve from
|
|
91
|
+
the validated execution directory while `gitRoot` remains a safety boundary;
|
|
92
|
+
Windows containment is case-insensitive, deterministic direct/nested-shell
|
|
93
|
+
writes to the user `.kodax` credential zone are Tier-0 denied, and quoted
|
|
94
|
+
Python/regexp source is not treated as a path. Permission previews use a
|
|
95
|
+
scan-bounded field whitelist, omit write/edit bodies, redact JSON/YAML/PEM
|
|
96
|
+
and command-line credentials, and remain valid size-limited JSON with that
|
|
97
|
+
directory. `exit_plan_mode` is absent without a real host approval bridge.
|
|
98
|
+
- **0.7.x SDK source compatibility.** Deprecated `amaw` input is accepted and
|
|
99
|
+
normalized to AMA without restoring retired behavior; formal `SkillSource`
|
|
100
|
+
remains exhaustive while `ResolvedSkillSource` adds `learned`; daemon
|
|
101
|
+
preflight normalizes canonical `activeAgentTurns` and deprecated
|
|
102
|
+
`activeAgentTasks` to the same required array across old and current wire
|
|
103
|
+
shapes.
|
|
104
|
+
- **Queued follow-up responsiveness.** REPL, AMA, and SA now share the same
|
|
105
|
+
Actor queue routing contract while SA retains its legacy unscoped queue. User
|
|
106
|
+
input wakes `wait_agent` and idle-yield through lossless subscriptions and
|
|
107
|
+
resumes at a safe turn boundary without canceling unrelated parallel tools.
|
|
108
|
+
SDK media follow-ups accept an explicit `sessionId`, preserve old single-Actor
|
|
109
|
+
calls through lifecycle-bound auto-routing, and reject ambiguous concurrent
|
|
110
|
+
calls instead of crossing sessions.
|
|
369
111
|
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
`
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
|
|
466
|
-
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
- **
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
112
|
+
## [0.7.72-hotfix.0] - 2026-07-17
|
|
113
|
+
|
|
114
|
+
### Fixed
|
|
115
|
+
|
|
116
|
+
- **Ark Coding image input routing.** The SDK now recognizes the five verified
|
|
117
|
+
Ark Coding routes (`doubao-seed-2.0-code`, `doubao-seed-2.0-pro`,
|
|
118
|
+
`kimi-k2.7-code`, `kimi-k2.6`, and `MiniMax-M3`) as image-capable instead of
|
|
119
|
+
raising `MODEL_INPUT_UNSUPPORTED` before provider dispatch. The change is
|
|
120
|
+
scoped to those exact provider/model pairs; other Ark models and all Ark
|
|
121
|
+
video input remain fail-closed. Capability, validation, final Anthropic
|
|
122
|
+
base64 serialization, and opt-in real-gateway regressions cover all five.
|
|
123
|
+
|
|
124
|
+
## [0.7.71] - 2026-07-17
|
|
125
|
+
|
|
126
|
+
### Added
|
|
127
|
+
|
|
128
|
+
- **Kimi Code K3 support.** The `kimi-code` subscription provider now exposes
|
|
129
|
+
`k3-256k` (Moderato) and `k3` (1,048,576 context tokens, Allegretto+) as
|
|
130
|
+
explicit catalog choices, alongside `kimi-for-coding-highspeed` and the
|
|
131
|
+
stable `kimi-for-coding` default. Both K3 choices send the upstream model id
|
|
132
|
+
`k3`, so users do not need to override compaction settings for their plan.
|
|
133
|
+
K3 sends its effort inside `thinking.effort` on both Anthropic- and
|
|
134
|
+
OpenAI-compatible transports, defaults omitted reasoning to `max`, and
|
|
135
|
+
preserves both legacy `reasoning=false` and explicit `effort=none` as disabled
|
|
136
|
+
thinking. Static capability, reasoning, media, cost-tracking, and opt-in
|
|
137
|
+
real-wire regressions cover the subscription routes and local context-tier
|
|
138
|
+
mapping.
|
|
139
|
+
- **Standards-based A2A authentication and Agent activation (FEATURE_267/268
|
|
140
|
+
closure).** Outbound A2A entries can use OAuth 2.0 Client Credentials with an
|
|
141
|
+
external Authorization Server, while inbound KodaX Agents can validate RFC
|
|
142
|
+
9068 JWT access tokens against an external issuer/JWKS as an OAuth Resource
|
|
143
|
+
Server. The fixed environment Bearer profile remains available for
|
|
144
|
+
compatibility. A hot `agents.<name>.enabled` switch plus `kodax a2a
|
|
145
|
+
enable|disable` lets operators keep many configured third-party Agents while
|
|
146
|
+
controlling which ones admit new orchestration; in-flight tasks are not
|
|
147
|
+
cancelled.
|
|
148
|
+
|
|
149
|
+
### Changed
|
|
150
|
+
|
|
151
|
+
- **External Agent SDK migration notes.** `AgentRegistrationService` now
|
|
152
|
+
requires `setEnabled`; custom implementations must add the same
|
|
153
|
+
revision/owner-conditional enablement operation. `executorConfig` and
|
|
154
|
+
executor-reference `metadata` are `AgentJsonObject` values and reject class
|
|
155
|
+
instances, accessors, circular references, and other non-JSON-safe data at
|
|
156
|
+
runtime. SDK daemon auto-start without an explicit `homeDir` now follows the
|
|
157
|
+
resolved `KODAX_HOME`; embedders that intentionally need the OS-home endpoint
|
|
158
|
+
must pass `homeDir`, while custom endpoints remain attach-only.
|
|
159
|
+
|
|
160
|
+
### Fixed
|
|
161
|
+
|
|
162
|
+
- **A2A durable-owner upgrade and admission concurrency.** New inbound tasks
|
|
163
|
+
persist a non-secret principal-key scheme marker. Pre-realm tasks remain
|
|
164
|
+
inaccessible during normal serving, but stopped operators can use
|
|
165
|
+
`kodax a2a migrate-tasks` to dry-run and explicitly apply the configured
|
|
166
|
+
owner mapping; custom hosts can use the public
|
|
167
|
+
`migrateA2ALegacyTaskOwners()` SDK with exact mappings. Ambiguous or live-
|
|
168
|
+
store migration fails closed. Global task capacity now uses a synchronous
|
|
169
|
+
pending reservation, keeping slow workspace/session/run preparation outside
|
|
170
|
+
any global lock while preserving exact limits and per-principal ordering.
|
|
171
|
+
- **Bounded External Agent and daemon shutdown/startup.** Executor-plane close
|
|
172
|
+
now has a 30-second default upper bound (overrideable with `closeTimeoutMs`),
|
|
173
|
+
obsolete-executor cleanup runs outside the serialized registration mutation
|
|
174
|
+
lane, and revision tombstones are SHA-256 fingerprints capped at 4,096
|
|
175
|
+
entries. Current registrations and task snapshots continue to enforce exact
|
|
176
|
+
revision immutability after older, unreferenced tombstones age out. Daemon
|
|
177
|
+
auto-start now races health checks against the spawned child's exit, keeps
|
|
178
|
+
the child referenced until readiness, and terminates it on early exit,
|
|
179
|
+
timeout, identity mismatch, or when another daemon wins ownership. A startup
|
|
180
|
+
candidate that exits after losing the owner race now lets its SDK caller wait
|
|
181
|
+
for and attach to the competing owner instead of failing that caller.
|
|
182
|
+
- **Faster packaged-Electron gates.** Release jobs build once and reuse that
|
|
183
|
+
output for both the Windows Electron smoke and binary packaging. CI and
|
|
184
|
+
release jobs cache the version-pinned Electron smoke toolchain, whose local
|
|
185
|
+
directory is now explicitly ignored. Both paths explicitly materialize the
|
|
186
|
+
Electron binary after cache restore or dependency installation, preventing a
|
|
187
|
+
successful npm package install with a missing `electron/dist` from bypassing
|
|
188
|
+
the real packaged-daemon gate.
|
|
189
|
+
- **A2A authentication and reconciliation hardening.** Card-level and
|
|
190
|
+
Skill-level security requirements now fail closed unless one complete
|
|
191
|
+
alternative is satisfiable. Card, RPC, and token origins remain separate;
|
|
192
|
+
exact credentials used by active RPC/SSE requests remain retained through
|
|
193
|
+
response parsing and are redacted from errors and successful results;
|
|
194
|
+
concurrent rejected-token invalidation cannot discard a newer token and each
|
|
195
|
+
RPC retries at most once. Direct SDK and file configuration now share strict
|
|
196
|
+
issuer, endpoint, resource, and RFC 6749 scope validation. Task ownership
|
|
197
|
+
also requires a stable `securityRealm` and hashes the
|
|
198
|
+
`(realm, subject, tenant)` tuple: built-in Bearer/OAuth derive realms from the
|
|
199
|
+
token-env name/exact issuer, custom authentication must provide one, authority
|
|
200
|
+
switches and legacy pre-realm tasks fail closed, and same-realm restart
|
|
201
|
+
preserves new-format tasks. Authentication/effect changes participate in
|
|
202
|
+
executor revisions; registration persistence
|
|
203
|
+
precedes catalog mutation; first-class management ownership plus revision-
|
|
204
|
+
conditional mutations protects unrelated or concurrently replaced SDK
|
|
205
|
+
registrations, including same-revision owner takeovers; changed authority is
|
|
206
|
+
fenced before parallel discovery; live drift is repaired; and a final
|
|
207
|
+
post-preflight admission check closes disable/removal races without
|
|
208
|
+
rediscovering unchanged peers. Internal immutable route snapshots preserve
|
|
209
|
+
admitted task input/cancel/reconcile routing across registration update or
|
|
210
|
+
removal and Runtime restart without exposing secret material or expanding the
|
|
211
|
+
public task DTO. Admission now rechecks globally unique task IDs, task writes
|
|
212
|
+
publish to memory only after durable persistence, and terminal event-write
|
|
213
|
+
failures cannot strand waiters or route snapshots. Returned registration
|
|
214
|
+
summaries are detached, executor cache keys are unambiguous tuples, and one
|
|
215
|
+
ownership conflict or observer failure cannot abort unrelated Agent
|
|
216
|
+
reconciliation or leave unawaited activation work. Daemon A2A ownership is
|
|
217
|
+
now bound to the exact resolved config home—`<homeDir>/.kodax` when explicitly
|
|
218
|
+
selected, otherwise the possibly arbitrary `KODAX_HOME`—recorded in daemon
|
|
219
|
+
state, and checked across every local profile before mutation. Legacy
|
|
220
|
+
non-empty version-1 A2A files require an explicit stopped-owner migration,
|
|
221
|
+
while version-2 migration is a read-only idempotent no-op. Failed initial A2A
|
|
222
|
+
reconciliation also closes the newly created Runtime before releasing daemon
|
|
223
|
+
ownership.
|
|
224
|
+
- **A2A post-closure lifecycle and resource correctness.** Executor operations
|
|
225
|
+
and close now drain without disposal races; configured artifact references
|
|
226
|
+
and direct `a2a call` use a bounded reference-only/no-fetch policy. CLI task
|
|
227
|
+
RPC/SSE permits 32 MiB while Card/interface/OAuth/security metadata remains
|
|
228
|
+
capped at 2 MiB, and unsupported required Card extensions fail discovery.
|
|
229
|
+
Daemon mutation now requires independently owner-derived
|
|
230
|
+
`externalAgentAdmin: 1` and `a2aConfigReconciler: 1`; capability overrides
|
|
231
|
+
cannot forge them. Public `/a2a` config exports are read-only, with raw writers
|
|
232
|
+
retained inside the fenced CLI owner. Inbound serving now has a global
|
|
233
|
+
admission reservation, subscribe-first replay, authentication-before-body,
|
|
234
|
+
exact JSON/SSE media matching, an admitted-handler close barrier, and fixed
|
|
235
|
+
four-per-task/eight-per-server/24 MiB-per-stream SSE ceilings without
|
|
236
|
+
terminating the underlying task for one slow subscriber.
|
|
237
|
+
- **Public Kimi Open Platform parity and live coverage.** `kimi` now defaults to
|
|
238
|
+
`kimi-k2.7-code`, exposes the HighSpeed route and wire-legal K2.5 id, uses the
|
|
239
|
+
exact 262,144-token limits and current prices, and has gated real-key coverage
|
|
240
|
+
for credential verification, K2.7 thinking, forced-tool fallback, and K2.6
|
|
241
|
+
thinking disablement. K2.7 disable requests now fail locally instead of being
|
|
242
|
+
silently ignored, while K2.6 disable requests emit the required wire toggle.
|
|
243
|
+
|
|
244
|
+
- **Packaged Electron shared-daemon auto-start.** Runtime SDK embedders running
|
|
245
|
+
from packaged/asar Electron applications now launch the detached daemon child
|
|
246
|
+
through a bootstrap-only Node execution boundary without changing the host or
|
|
247
|
+
long-lived daemon environment, leaking `ELECTRON_RUN_AS_NODE` to user child
|
|
248
|
+
processes, or opening a second GUI instance. Trusted internal JavaScript
|
|
249
|
+
children retain a bounded Electron-to-Node launch path. Missing packaged CLI
|
|
250
|
+
sidecars fail immediately, disabled `RunAsNode` fuses receive an actionable
|
|
251
|
+
timeout diagnostic, and a real Windows Electron 42.5.0 + asar smoke now gates
|
|
252
|
+
CI and releases. Public docs also distinguish CLI-style `homeDir` from the
|
|
253
|
+
lower-level `.kodax` path used by `KODAX_HOME`.
|
|
254
|
+
- **Cross-platform release template checks.** Generated configuration templates
|
|
255
|
+
now compare normalized line endings, so Windows CRLF checkouts no longer report
|
|
256
|
+
false drift during binary builds.
|
|
257
|
+
|
|
258
|
+
## [0.7.70] - 2026-07-15
|
|
259
|
+
|
|
260
|
+
### Added
|
|
261
|
+
|
|
262
|
+
- **Typed shared-daemon rollback management (FEATURE_269 patch).** Daemon
|
|
263
|
+
facades now expose revisioned management inspection and atomic
|
|
264
|
+
`stopForInline()`, plus public owner-fence queries and revision-free daemon
|
|
265
|
+
re-enable helpers for safe embedder rollback workflows.
|
|
266
|
+
|
|
267
|
+
### Changed
|
|
268
|
+
|
|
269
|
+
- **KAI-FCL licensing from v0.7.70.** Official KodaX source, binaries, and npm
|
|
270
|
+
packages now use the KodaX-AI Fair Core License 1.0: community use remains
|
|
271
|
+
available, while commercial or managed use requires KodaX-AI authorization.
|
|
272
|
+
Previously released Apache-2.0 copies retain their original grants.
|
|
273
|
+
|
|
274
|
+
### Fixed
|
|
275
|
+
|
|
276
|
+
- **A2A interoperability and execution boundaries.** Selected Card interfaces
|
|
277
|
+
remain bound to their trusted discovery origin and advertised Bearer scheme;
|
|
278
|
+
concrete recursive reads and child runs retain the parent policy ceiling;
|
|
279
|
+
pending input resumes the original Runtime run; task retention, history,
|
|
280
|
+
cleanup, stable cursor pagination, protocol correlation/version, authenticated
|
|
281
|
+
SSE, appended artifact chunks, and early-stream-EOF semantics are bounded;
|
|
282
|
+
and direct, staged, or successfully promoted admitted Skill outputs are
|
|
283
|
+
returned as negotiated artifacts without exposing ordinary workspace writes.
|
|
284
|
+
- **MCP multilingual zero-match efficiency.** Compact CJK queries now segment
|
|
285
|
+
into words, while cross-language lexical zero matches can return a lossless
|
|
286
|
+
shared-prefix exact-id inventory only when it is no more expensive than a
|
|
287
|
+
normal default search page and fits the real result capacity. Oversized
|
|
288
|
+
recovery emits one concise catalog-language retry with no biased partial list.
|
|
289
|
+
Fully unavailable catalogs no longer trigger a duplicate inventory attempt;
|
|
290
|
+
concurrent discovery is coalesced, in-flight invalidation cannot be overwritten,
|
|
291
|
+
and filtered cursor revisions ignore unrelated capability families.
|
|
292
|
+
- **Logical daemon client accounting.** Stop preflight now counts only live,
|
|
293
|
+
initialized SDK clients. Daemon self-connections and read-only health probes
|
|
294
|
+
are excluded, and awaited client close converges the count across processes.
|
|
295
|
+
Health probes also tolerate the daemon token disappearing during a concurrent
|
|
296
|
+
shutdown or owner transition instead of leaking an `ENOENT` race to clients.
|
|
297
|
+
- **Preflight/stop race.** Rollback commit gates new clients and mutations,
|
|
298
|
+
validates the same Runtime, management revision, owner-policy revision, and
|
|
299
|
+
blockers, and changes sticky inline policy while the verified daemon still
|
|
300
|
+
owns the profile fence. Stale commits fail with structured `conflict` and do
|
|
301
|
+
not stop or change policy.
|
|
302
|
+
- **Complete rollback draining and background-work blockers.** Credential and
|
|
303
|
+
Host Tool bridge state can no longer change after draining starts, while
|
|
304
|
+
running/paused Workflows and non-terminal or unknown External Agent tasks now
|
|
305
|
+
block stop and participate in the management revision. Reverse-result frames
|
|
306
|
+
remain outside the durable journal so credentials and Host Tool results are
|
|
307
|
+
not persisted. In-flight stop conflicts identify the active mutation methods
|
|
308
|
+
and counts so lifecycle stalls can be diagnosed without reproducing them.
|
|
309
|
+
|
|
310
|
+
## [0.7.69] - 2026-07-15
|
|
311
|
+
|
|
312
|
+
> Scope note: this release delivers **FEATURE_267**, **FEATURE_268**, and
|
|
313
|
+
> **FEATURE_269** as one bounded interoperability/runtime release: bidirectional
|
|
314
|
+
> A2A 1.0, split hot-reloadable integration configuration, and one authoritative
|
|
315
|
+
> shared Coder daemon with secure host bridges. It does not expose the daemon
|
|
316
|
+
> remotely, migrate Partner from its private embedded Runtime, or publish
|
|
317
|
+
> credentials/Host Tools outside their bound run.
|
|
318
|
+
|
|
319
|
+
### Added
|
|
320
|
+
|
|
321
|
+
- **Bidirectional A2A 1.0 interoperability (FEATURE_267).** Added the
|
|
322
|
+
`@kodax-ai/kodax/a2a` integration edge: allowlisted Agent Card discovery and
|
|
323
|
+
a JSON-RPC/SSE executor over the existing F258 plane, plus an authenticated,
|
|
324
|
+
caller-scoped, durable Runtime-backed KodaX Agent server with continuation,
|
|
325
|
+
cancellation, ordered replay/subscription, and restart reattachment.
|
|
326
|
+
- **No-code A2A product path and Runtime binding.** Added declarative
|
|
327
|
+
`a2a add/list/test/call/remove`, automatic `external:<name>` registration for
|
|
328
|
+
built-in Runtime owners, and explicit `a2a expose` / loopback-only `a2a
|
|
329
|
+
serve`. The inbound server can publish the Runtime default or one validated
|
|
330
|
+
user Markdown Agent with pinned Agent/Skill/tool/workspace revisions,
|
|
331
|
+
structured `toolPolicy`, `~/.agents/skills` discovery, and exact Skill-script
|
|
332
|
+
execution through the fail-closed ASRT adapter.
|
|
333
|
+
- **Split integration configuration and hot reload (FEATURE_268).** MCP, A2A,
|
|
334
|
+
and Extensions now use one user-level versioned file per domain, backed by
|
|
335
|
+
four canonical templates, explicit lossless migration, locked atomic writes,
|
|
336
|
+
last-known-good watchers with metadata fallback, whole-provider MCP draining,
|
|
337
|
+
entry-transactional Extension/outbound-A2A reconciliation, and explicit
|
|
338
|
+
restart-required handling for inbound execution/store authority changes.
|
|
339
|
+
- **A2A network and publication boundaries.** Outbound fetches enforce origin,
|
|
340
|
+
DNS/private-address, TLS, redirect, credential, timeout, content-type, and
|
|
341
|
+
size policy. The built-in server listener is loopback-only; public hosts use
|
|
342
|
+
`handle()` behind TLS. A2A 0.3, gRPC, HTTP+JSON, push notifications, automatic
|
|
343
|
+
public Agent exposure, and remote Runtime configuration are not advertised.
|
|
344
|
+
- **Authoritative shared Coder daemon (FEATURE_269).** Added atomic
|
|
345
|
+
`sessions.observe()` join/resync, durable operation identities and receipts,
|
|
346
|
+
stable same-session ordering, settings/grant CAS, transport-safe AskUser and
|
|
347
|
+
permission resolution, live run projection, structured restart outcomes, and
|
|
348
|
+
a truthful per-capability Coder compatibility matrix for CLI, Space, IDE, and
|
|
349
|
+
SDK clients.
|
|
350
|
+
- **Shared-daemon SDK completion.** Server-side Coder/Partner admission now
|
|
351
|
+
covers every session and run path; late-join snapshots include transcript
|
|
352
|
+
revision, managed tasks, queued continuation metadata, and reverse
|
|
353
|
+
requirements. The SDK adds prompt connection lifecycle signals, typed event
|
|
354
|
+
parsing with per-event degradation, daemon-safe run DTOs,
|
|
355
|
+
`agentMode`/`autoModeEngine` settings CAS, durable operation/Host Tool outcome
|
|
356
|
+
queries, and daemon stop/rollback preflight.
|
|
357
|
+
- **Secure host bridges and owner fencing.** Provider credentials are supplied
|
|
358
|
+
just in time through stable-client/run/provider-bound leases and never
|
|
359
|
+
persisted. A keychain-held stable client secret can reattach credential and
|
|
360
|
+
Host Tool handlers after Space reconnects; Host Tools remain immutable and
|
|
361
|
+
run-bound, with fsynced dispatch truth and explicit unknown outcomes rather
|
|
362
|
+
than blind replay. Daemon and inline Coder ownership share one revisioned
|
|
363
|
+
fence with sticky rollback, while Partner remains isolated.
|
|
364
|
+
|
|
365
|
+
### Changed
|
|
366
|
+
|
|
367
|
+
- **Tool-result delivery now optimizes end-to-end context use.** Tool handlers
|
|
368
|
+
collect complete results and one aggregate next-request capacity owner keeps
|
|
369
|
+
every result inline when the batch fits. Default Bash processing no longer
|
|
370
|
+
applies command-specific lossy filters; its former 512 KiB capture limit is
|
|
371
|
+
now only a memory-to-disk spool threshold. Capacity is solved against the
|
|
372
|
+
final input (`Pmax`), so the 3% uncertainty margin grows with the admitted
|
|
373
|
+
batch instead of being frozen at the smaller pre-batch request.
|
|
374
|
+
- **History compaction is physical-capacity driven.** Default automatic
|
|
375
|
+
compaction waits until the final provider envelope (system prompt, actual
|
|
376
|
+
tools, messages/framing, output reserve, and safety margin) cannot fit.
|
|
377
|
+
Default microcompaction and destructive pre-summary/fallback pruning are off;
|
|
378
|
+
pressure uses semantic summary first and stops as soon as the next request
|
|
379
|
+
fits. Static early percentages remain explicit opt-ins, and manual
|
|
380
|
+
`/compact` remains an explicit force operation.
|
|
381
|
+
- **Self-knowledge follows the v0.7.69 capability surface.** `kodax_manual`
|
|
382
|
+
now documents the three split integration files and migration/hot-reload
|
|
383
|
+
behavior, the `/a2a` SDK subpath, atomic shared-daemon observation, durable
|
|
384
|
+
controls, run-scoped credentials/Host Tools, and daemon/inline ownership.
|
|
385
|
+
|
|
386
|
+
### Fixed
|
|
387
|
+
|
|
388
|
+
- **Recoverable overflow and hidden output caps.** Overflow of the final
|
|
389
|
+
operational request budget saves the complete result and emits one explicit
|
|
390
|
+
incomplete marker. Long lines have exact continuation offsets, completed task
|
|
391
|
+
output is complete, and hidden caps were removed from grep, glob, code search,
|
|
392
|
+
and retrieval rendering.
|
|
393
|
+
- **Cache token accounting and history preservation.** Cache tokens are charged
|
|
394
|
+
once. Empty, failed, or insufficient summaries now surface a typed capacity
|
|
395
|
+
error while retaining the canonical transcript and immutable Worker prompt.
|
|
396
|
+
- **Tool-result completeness and retention edge cases.** No-usage accounting
|
|
397
|
+
includes the final system prompt, active schemas, and same-request recovery;
|
|
398
|
+
explicit limits use one-extra-item probes; delayed Bash drain remains
|
|
399
|
+
recoverable. Referenced result/image artifacts and fresh checkpoints are no
|
|
400
|
+
longer removed by age-only cleanup.
|
|
401
|
+
- **Post-review capacity correctness.** Trusted artifact metadata cannot be
|
|
402
|
+
forged by raw tool text; failures carry the last legal transcript; observers
|
|
403
|
+
see admitted content; child evidence uses the routed model's physical budget;
|
|
404
|
+
bounded acquisition exposes continuation instead of silent loss; direct Bash
|
|
405
|
+
artifacts remain canonical without nested spill markers.
|
|
406
|
+
- **Windows process-tree fallback.** A failed or timed-out `taskkill /t` now
|
|
407
|
+
triggers a native Toolhelp parent snapshot before direct escalation, with
|
|
408
|
+
CIM/WMIC retained only as fallback. Agent and LLM cleanup stay aligned and a
|
|
409
|
+
real nested-process regression proves descendants exit.
|
|
410
|
+
- **Windows lock deletion races.** Proposal and lifecycle lock probes treat
|
|
411
|
+
transient `EPERM`/`EACCES`/`EBUSY` as non-stale and retry, preserving the
|
|
412
|
+
fail-closed owner-token contract during concurrent removal.
|
|
413
|
+
- **Frozen FEATURE_259 eval inputs.** The pre-iteration dispatch schema is
|
|
414
|
+
reconstructed from its historical bytes, so later production tool-schema
|
|
415
|
+
improvements cannot mutate the baseline or invite a hash-only CI workaround.
|
|
416
|
+
- **Governed-memory Bash guard bypasses.** Commands that directly address
|
|
417
|
+
recognized scoped or legacy memory roots now permit only one simple read-only
|
|
418
|
+
inspection; command chaining, pipelines, redirects, home-relative paths, and
|
|
419
|
+
interpreter writes fail closed at the Bash tool boundary.
|
|
420
|
+
- **Memory proposal and review persistence integrity.** Invalid approval
|
|
421
|
+
metadata now produces a store warning and blocks rewrites; project-less review
|
|
422
|
+
drains no longer claim project-owned work; persisted outcome evidence receives
|
|
423
|
+
full shape validation; atomic writes clean temporary files on failure.
|
|
424
|
+
- **Memory store lock ownership.** Proposal and lifecycle locks now carry a PID
|
|
425
|
+
plus random owner token, avoid reclaiming stale locks held by a live process,
|
|
426
|
+
and remove a lock only when the releasing owner token still matches. Lifecycle
|
|
427
|
+
state writes now use temporary-file rename instead of direct truncating writes.
|
|
428
|
+
- **Interactive resume handoff and large-store startup.** Bare `kodax -r` now
|
|
429
|
+
keeps the selected session through the picker-to-TUI handoff instead of
|
|
430
|
+
exiting, and the picker uses bounded metadata paging instead of repeatedly
|
|
431
|
+
full-reading every matching session before it opens.
|
|
432
|
+
- **A2A/configuration release hardening.** Review gaps in remote execution,
|
|
433
|
+
Skill-script admission/isolation, hot reload, listener preparation, binding
|
|
434
|
+
pinning, last-known-good reconciliation, and redacted diagnostics now fail
|
|
435
|
+
closed or retain the prior healthy revision as specified. The public A2A
|
|
436
|
+
server type now exposes its existing readiness wait, validated DNS results
|
|
437
|
+
narrow explicitly to IPv4/IPv6, and safe request-body typing no longer
|
|
438
|
+
depends on an undeclared DOM global, keeping root TypeScript validation green.
|
|
439
|
+
|
|
440
|
+
## [0.7.68] - 2026-07-12
|
|
441
|
+
|
|
442
|
+
> Scope note: this release delivers **FEATURE_260**, the KodaX Memory Agent,
|
|
443
|
+
> as a thin experimental SDK and governed runtime extension over the existing
|
|
444
|
+
> F228 Memory Control Plane. It does not add a second memory database, a
|
|
445
|
+
> resident specialist agent, filesystem memory actions, or online self-modification.
|
|
446
|
+
|
|
447
|
+
### Added
|
|
448
|
+
|
|
449
|
+
- **Thin experimental Memory Agent SDK.** Added
|
|
450
|
+
`@kodax-ai/agent/experimental-memory` and the root `/experimental-memory`
|
|
451
|
+
entry with scoped `MemorySession` lifecycle, zero-wait passive recall,
|
|
452
|
+
read-only deliberate `query()`, bounded observations, and episode outcomes.
|
|
453
|
+
- **Deliberate governed recall for the Action LLM.** A session-bound
|
|
454
|
+
`memory_recall` tool exposes only one `need` field, returns prompt-safe
|
|
455
|
+
low-authority evidence from the same F228 plane, and keeps identity, scope,
|
|
456
|
+
revision, and sequence outside model input.
|
|
457
|
+
- **Auditable memory decisions and outcomes.** Trace-only
|
|
458
|
+
`MemoryDecisionReceipt` records candidate/selected/injected refs and policy
|
|
459
|
+
version; accepted Outcome Digests can conservatively link influence without
|
|
460
|
+
storing hidden reasoning or creating a second event store.
|
|
461
|
+
- **Bounded episode review and promotion.** Timed-out review work persists in a
|
|
462
|
+
scoped inbox for bounded next-session drain and revalidation. Promotion now
|
|
463
|
+
consults compatible claims before choosing create, evidence update,
|
|
464
|
+
condition refinement, conflict, no-action, reject, or quarantine.
|
|
465
|
+
|
|
466
|
+
### Changed
|
|
467
|
+
|
|
468
|
+
- **Memory applicability is exact and fail-closed.** Tenant, user, agent,
|
|
469
|
+
workspace, project, and branch identity participate in deterministic scope
|
|
470
|
+
checks; sibling/cross-user/cross-tenant fallback is prohibited.
|
|
471
|
+
- **Memory policy is source-versioned and cache-safe.** `f260-v0.7.68.2`
|
|
472
|
+
binds production reminder rules, evidence rendering, and deliberate-recall
|
|
473
|
+
tool bytes. Passive reminders only affect the dynamic suffix; deliberate
|
|
474
|
+
queries add a normal tool-call/result tail while preserving earlier provider
|
|
475
|
+
cache bytes.
|
|
476
|
+
- **Safety-critical boundaries remain deterministic.** Secret filtering,
|
|
477
|
+
memory-file mutation guards, poisoning/source-evidence checks, and governed
|
|
478
|
+
proposal/preview/fingerprint/apply remain zero-violation code gates rather
|
|
479
|
+
than probabilistic LLM recall thresholds.
|
|
480
|
+
- **Self-knowledge follows the v0.7.68 capability surface.** `kodax_manual`
|
|
481
|
+
now has a dedicated governed-memory topic, names all 43 built-in slash
|
|
482
|
+
commands under a two-way drift guard, and documents the current 10 SDK
|
|
483
|
+
subpaths plus Runtime and `/experimental-memory` ownership boundaries.
|
|
484
|
+
|
|
485
|
+
### Fixed
|
|
486
|
+
|
|
487
|
+
- **Post-review Memory Agent release hardening.** Repository identity now strips
|
|
488
|
+
Git remote userinfo/query credentials before scoped or legacy persistence;
|
|
489
|
+
managed-path guards are Windows-case-safe, protect governance sidecars, and
|
|
490
|
+
fail closed for non-read-only shell access to addressed memory roots. Episode
|
|
491
|
+
reviews use atomic processing claims with stale recovery, while proposal and
|
|
492
|
+
lifecycle stores serialize concurrent read-modify-write updates. Eval manifest
|
|
493
|
+
schema v2 binds untracked file bytes in addition to the tracked patch, corrupt
|
|
494
|
+
raw JSON fails loudly, and summary review state points to the separate
|
|
495
|
+
main-session review artifact instead of remaining permanently pending.
|
|
496
|
+
- **Runtime daemon state replacement is atomic.** Daemon lifecycle updates now
|
|
497
|
+
stage and rename `daemon.json` instead of truncating it in place, preventing
|
|
498
|
+
shutdown polling from mistaking a partial write for completed cleanup and
|
|
499
|
+
leaving an orphaned `stopping` process under full-suite load.
|
|
500
|
+
|
|
501
|
+
### Performance
|
|
502
|
+
|
|
503
|
+
- **The preregistered v2 memory-routing panel passes all release gates.** On
|
|
504
|
+
`ark/v4flash`, general immediate recall passed 59/60 (98.3%), high-value
|
|
505
|
+
recall 40/40, must-silent 200/200 (Wilson lower 98.1%), paired routing lift
|
|
506
|
+
was +73.3 percentage points with zero control regression, and bounded
|
|
507
|
+
two-decision recovery passed 20/20. The 520-cell panel represented 782,721
|
|
508
|
+
tokens and an estimated $0.004447 against the $0.02 cap. Main-session blinded
|
|
509
|
+
review recommends ship for routing value while documenting that the panel is
|
|
510
|
+
not an end-to-end task-completion claim.
|
|
511
|
+
|
|
512
|
+
## [0.7.67] - 2026-07-11
|
|
513
|
+
|
|
514
|
+
> Scope note: a stabilization and agent-efficiency release. **FEATURE_258**
|
|
515
|
+
> adds the protocol-neutral external-agent executor plane, **FEATURE_259**
|
|
516
|
+
> makes workflow/review orchestration more focused and cost-disciplined, and
|
|
517
|
+
> the bounded corrective **FEATURE_261** delivers searchable session resume
|
|
518
|
+
> plus safe ACP-session cleanup. GitHub source/binary release work is included;
|
|
519
|
+
> npm publication remains a separate operator step.
|
|
520
|
+
|
|
521
|
+
### Added
|
|
522
|
+
|
|
523
|
+
- **External Agent Executor Plane and dispatchable catalog.** Host-injected
|
|
524
|
+
executors now share a protocol-neutral registration/catalog/task contract,
|
|
525
|
+
redacted policy-filtered discovery, durable task ledger, recovery, and a
|
|
526
|
+
reference executor. Worker tools, Workflow, Embedded Runtime, and daemon
|
|
527
|
+
clients discover and dispatch the same canonical agent IDs.
|
|
528
|
+
- **External-agent SDK and daemon surfaces.** Runtime sessions expose catalog,
|
|
529
|
+
start/continue/cancel/reconcile, event, and task-result operations with
|
|
530
|
+
versioned schemas, configuration revisions, credential-presence checks, and
|
|
531
|
+
public in-process daemon-factory bootstrap support.
|
|
532
|
+
- **Focused scoped-review workflow.** `/review --workflow` now uses immutable
|
|
533
|
+
review packets, one primary per scope, an additional authoritative primary
|
|
534
|
+
only for risk-flagged packets, batched fresh verification for candidate
|
|
535
|
+
findings, stable finding IDs, capable synthesis, and an audit artifact.
|
|
536
|
+
- **Explicit model-tier intent and route telemetry.** Workflow and substantive
|
|
537
|
+
child briefs carry focused scope/constraints/evidence/output fields plus
|
|
538
|
+
explicit `fast` / `balanced` / `deep` intent. Runtime reports the resolved
|
|
539
|
+
source, fallback, effort, usage, duration, packet-read topology, and token
|
|
540
|
+
coverage without fabricating missing external usage.
|
|
541
|
+
- **Searchable session resume picker.** Running `kodax -r` without an ID now
|
|
542
|
+
opens an interactive TUI with incremental search, keyboard selection, title
|
|
543
|
+
completion, pagination, and the full selected session ID. An explicit value
|
|
544
|
+
resolves a complete ID first, then a unique exact title; duplicate titles
|
|
545
|
+
open a narrowed picker rather than silently selecting one.
|
|
546
|
+
- **Session listing filters and cursors.** SessionManager, Runtime SDK, and
|
|
547
|
+
daemon protocol listings now accept an exact `surface` filter and an opaque
|
|
548
|
+
continuation `cursor`, applied before the requested page limit.
|
|
549
|
+
|
|
550
|
+
### Changed
|
|
551
|
+
|
|
552
|
+
- **Resident workflow context is smaller and discoverable.** The turn-resident
|
|
553
|
+
`run_workflow` hint stays below the deferred-tool budget while the full
|
|
554
|
+
authoring contract remains available through `tool_search`. Recorded
|
|
555
|
+
workflow-shaped plans start directly instead of being expanded into duplicate
|
|
556
|
+
todo/dispatch scaffolding.
|
|
557
|
+
- **Review handoffs are structured and conservative.** Positive observations
|
|
558
|
+
are not findings; missing evidence remains `not-verifiable` rather than being
|
|
559
|
+
promoted into a defect; unreasoned severity overrides retain the original
|
|
560
|
+
severity instead of failing the review.
|
|
561
|
+
- **Eval execution is value-driven and bounded.** Main-session evidence review
|
|
562
|
+
determines whether a candidate has material value over baseline; executor
|
|
563
|
+
aliases are not reused as judge models. Raw reuse, per-call/round/token/cost
|
|
564
|
+
caps, one bounded structured repair, and provider/model concurrency lanes
|
|
565
|
+
prevent runaway panels.
|
|
566
|
+
- **SDK embedder documentation matches the v0.7.67 public surface.** The guide
|
|
567
|
+
now covers external-agent owner/consumer setup and safety boundaries, Runtime
|
|
568
|
+
registration/catalog/task services, exact-surface session pagination,
|
|
569
|
+
run-scoped workflow tiers, live route facts, and durable efficiency reports;
|
|
570
|
+
the English/Chinese subpath tables reflect all 10 published SDK entries.
|
|
571
|
+
|
|
572
|
+
### Fixed
|
|
573
|
+
|
|
574
|
+
- **Restricted Workflow scripts preserve the public Agent routing contract.**
|
|
575
|
+
`phase` and FEATURE_258 `target` values now cross the script host boundary
|
|
576
|
+
with fail-loud validation, so generated/saved workflows can route the same
|
|
577
|
+
canonical external Agent IDs as direct Workflow and Worker dispatch.
|
|
578
|
+
- **Executor-plane shutdown is terminal and waiter-safe.** Closing the plane is
|
|
579
|
+
idempotent, rejects pending task waits, and prevents later registration,
|
|
580
|
+
catalog, or task operations from recreating executors after owner shutdown.
|
|
581
|
+
- **Review/eval trust boundaries fail loudly without replacing real results.**
|
|
582
|
+
Built-in scoped-review outputs are validated against their declared schemas;
|
|
583
|
+
local ledger mirror failures retain the authoritative child result/error;
|
|
584
|
+
Feature 259 baseline reconstruction now requires every exact rewrite and no
|
|
585
|
+
longer leaks candidate-only briefing fields into the baseline.
|
|
586
|
+
- **Runtime tests no longer leave detached Node processes behind.** The config
|
|
587
|
+
suite explicitly shuts down its auto-started daemon owner before deleting
|
|
588
|
+
temporary state, and long-running process fixtures self-exit if an abnormal
|
|
589
|
+
test-runner termination prevents normal managed cleanup.
|
|
590
|
+
- **External tasks keep identity and terminal state across failures.** A remote
|
|
591
|
+
start followed by ledger failure preserves its executor reference as
|
|
592
|
+
`unknown`; in-flight tasks retain immutable executor bindings across catalog
|
|
593
|
+
updates; task-level mutation queues prevent late callbacks from overwriting a
|
|
594
|
+
terminal snapshot; Workflow external waits honor `timeoutMs`.
|
|
595
|
+
- **External task safety and policy boundaries fail closed.** Executor
|
|
596
|
+
availability, health, capability, concurrency, credential presence,
|
|
597
|
+
configuration revision, target side effects, and read-only intent are checked
|
|
598
|
+
before start without exposing secret values.
|
|
599
|
+
- **ACP tests no longer pollute real user sessions.** ACP harnesses now use an
|
|
600
|
+
isolated temporary runtime home and session store, with a guard that rejects
|
|
601
|
+
paths under the real user home. ACP sessions remain provisional until the
|
|
602
|
+
first valid prompt instead of persisting an empty `ACP Session` during
|
|
603
|
+
protocol setup.
|
|
604
|
+
- **Empty ACP pollution can be audited and recovered safely.**
|
|
605
|
+
`kodax -s cleanup-acp` previews only strict empty ACP matches; explicit
|
|
606
|
+
`--apply-session-cleanup` archives them reversibly instead of deleting data.
|
|
607
|
+
|
|
608
|
+
### Performance
|
|
609
|
+
|
|
610
|
+
- **Feature 259 controlled comparison validates the review optimization.** The
|
|
611
|
+
proposed topology passed 8/8 Layer-3 oracle cells versus 6/8 baseline, reduced
|
|
612
|
+
total model tokens 16.9% and output tokens 49.1%, and on standard reviews
|
|
613
|
+
reduced median tokens 57.2%, primary starts 75%, and duplicate packet reads
|
|
614
|
+
83.3%. High-risk multi-area reviews intentionally spend more calls for fresh
|
|
615
|
+
verification and explicit packet coverage.
|
|
616
|
+
|
|
617
|
+
## [0.7.66] - 2026-07-10
|
|
503
618
|
|
|
504
619
|
> Scope note: the runtime migration was developed across the v0.7.64-v0.7.66
|
|
505
620
|
> planning slots and is released as one v0.7.66 cut; v0.7.64 and v0.7.65 were
|
|
@@ -709,11 +824,11 @@ All notable changes to this project will be documented in this file.
|
|
|
709
824
|
stale wide-char or skipped-cell residue cannot remain after user-driven
|
|
710
825
|
transcript scrolling.
|
|
711
826
|
|
|
712
|
-
## [0.7.61] - 2026-07-06
|
|
713
|
-
|
|
714
|
-
> Historical release record: the command-aware lossy-filter behavior below is
|
|
715
|
-
> what v0.7.61 shipped, not the current default. The 2026-07-14 correction is
|
|
716
|
-
> recorded under Unreleased, ADR-050, and the FEATURE_251 design/test guide.
|
|
827
|
+
## [0.7.61] - 2026-07-06
|
|
828
|
+
|
|
829
|
+
> Historical release record: the command-aware lossy-filter behavior below is
|
|
830
|
+
> what v0.7.61 shipped, not the current default. The 2026-07-14 correction is
|
|
831
|
+
> recorded under Unreleased, ADR-050, and the FEATURE_251 design/test guide.
|
|
717
832
|
|
|
718
833
|
> Scope note: a token-efficiency + workflow-reliability release. **FEATURE_251** adds command-aware
|
|
719
834
|
> in-tool output compression (an rtk-style Token Killer port) inside KodaX's own `bash` tool layer,
|
|
@@ -727,7 +842,7 @@ All notable changes to this project will be documented in this file.
|
|
|
727
842
|
|
|
728
843
|
### Added
|
|
729
844
|
|
|
730
|
-
- **Historical implementation — tool-output semantic compression / command-aware in-tool Token Killer (FEATURE_251, ADR-050).** A new `packages/coding/src/tools/output-filters/` module compressed bash `stdout`/`stderr` **body** after decode, before the `Command:` / `Exit:` header was assembled, at the single `bash.ts` close-handler integration point (so both the SA and AMA dispatch paths were covered by one change). It shipped a lossless generic layer (ANSI strip), compiled stateful filters (`git-diff`, `git-log`, `git-status`, `test-runner` failure-focus, `lint` diagnostic grouping, `json-output` / NDJSON structural summary), and a built-in declarative long-tail table (package-manager / docker / infra CLI progress). Hard constraints at release time: the `Command:` / `Exit:` header was preserved verbatim (FEATURE_185 hits-ledger depends on it); the generic layer was lossless-by-construction with `never_worse` as a size-only backstop; and every lossy filter persisted raw decoded body before appending a recovery hint. Isolated Layer-1 fixtures measured shorter bodies, but did not measure recovery reads, extra inference rounds, or task-level evidence quality; they are historical measurements, not current release gates or end-to-end benefit claims. Current default behavior is the correction described above. Human test guide: `docs/test-guides/FEATURE_251_v0.7.61_TEST_GUIDE.md`.
|
|
845
|
+
- **Historical implementation — tool-output semantic compression / command-aware in-tool Token Killer (FEATURE_251, ADR-050).** A new `packages/coding/src/tools/output-filters/` module compressed bash `stdout`/`stderr` **body** after decode, before the `Command:` / `Exit:` header was assembled, at the single `bash.ts` close-handler integration point (so both the SA and AMA dispatch paths were covered by one change). It shipped a lossless generic layer (ANSI strip), compiled stateful filters (`git-diff`, `git-log`, `git-status`, `test-runner` failure-focus, `lint` diagnostic grouping, `json-output` / NDJSON structural summary), and a built-in declarative long-tail table (package-manager / docker / infra CLI progress). Hard constraints at release time: the `Command:` / `Exit:` header was preserved verbatim (FEATURE_185 hits-ledger depends on it); the generic layer was lossless-by-construction with `never_worse` as a size-only backstop; and every lossy filter persisted raw decoded body before appending a recovery hint. Isolated Layer-1 fixtures measured shorter bodies, but did not measure recovery reads, extra inference rounds, or task-level evidence quality; they are historical measurements, not current release gates or end-to-end benefit claims. Current default behavior is the correction described above. Human test guide: `docs/test-guides/FEATURE_251_v0.7.61_TEST_GUIDE.md`.
|
|
731
846
|
- **Deterministic workflow-quality preflight lint (FEATURE_252).** A new `packages/agent/src/workflow/quality-lint.ts` (`lintRestrictedWorkflowSource` / `assertRestrictedWorkflowQuality`, exported from the workflow package) runs inside restricted workflow module materialization (`script-runner.ts` `createRestrictedWorkflowModule`) and in the coding workflow host with host-policy `maxAgents`, so structural contract violations fail before a run can start — matching the existing inline-smoke hard-fail feedback loop. It hard-fails three deterministic contract classes only: (1) an unawaited workflow-command variable (`wf.runAgent` / `wf.spawnAgent` / `wf.wait` / `wf.synthesize` / `wf.workflow` / `wf.artifact`) used in a boolean position (`if (x)`, `!x`, ternary test, `x && …`, `x || …`, loop test) — a case a runtime Proxy cannot catch because object truthiness has no Proxy trap; (2) top-level structured-output field access (`result.findings`, `result.summary`, …) when the fields belong under `result.structured`; and (3) a literal `[...]`/`[...].map(...)` agent fanout whose static upper bound exceeds `manifest.maxAgents` or a known host cap. Review/verifier/generic quality heuristics are intentionally **not** emitted as model-visible warnings (a lightweight AST pass cannot distinguish a weak workflow from a valid optimized one, and surfacing them causes needless rewrite churn). Human test guide: `docs/test-guides/FEATURE_252_v0.7.61_TEST_GUIDE.md`.
|
|
732
847
|
|
|
733
848
|
### Changed
|
|
@@ -2614,7 +2729,7 @@ repl → coding, skills
|
|
|
2614
2729
|
### Tests
|
|
2615
2730
|
- Added / expanded tests for `task-engine`, `reasoning`, `tool-display`, `live-streaming`, `StatusBar`, `invocation-runtime`, `types-legacy`, and `InkREPL.interrupted`
|
|
2616
2731
|
|
|
2617
|
-
<!-- last-sync:
|
|
2732
|
+
<!-- last-sync: a8c9c283 -->
|
|
2618
2733
|
|
|
2619
2734
|
### Added
|
|
2620
2735
|
- **Repository intelligence substrate (FEATURE_018)**: Task-aware repository intelligence layer under `.agent/repo-intelligence/` with durable artifacts — `repo-overview.json`, `changed-scope.json`, `module-index.json`, `symbol-index.json`, `process-index.json`, `repo-intelligence-manifest.json` — supporting incremental refresh, freshness metadata, and language-tiered extraction (TS/JS via AST, Python, Go, Rust, Java, C++)
|