@kodax-ai/kodax 0.7.76 → 0.7.78

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/CHANGELOG.md +758 -371
  2. package/LICENSE +158 -158
  3. package/README.md +1702 -1508
  4. package/README_CN.md +1019 -869
  5. package/config-templates/config.example.jsonc +86 -4
  6. package/config-templates/integrations/a2a.example.jsonc +98 -98
  7. package/config-templates/integrations/extensions.example.jsonc +7 -7
  8. package/config-templates/integrations/mcp.example.jsonc +16 -16
  9. package/dist/builtin/code-review/SKILL.md +22 -22
  10. package/dist/builtin/skill-creator/scripts/aggregate-benchmark.d.ts +46 -46
  11. package/dist/builtin/skill-creator/scripts/analyze-benchmark.d.ts +46 -46
  12. package/dist/builtin/skill-creator/scripts/compare-runs.d.ts +62 -62
  13. package/dist/builtin/skill-creator/scripts/generate-review.d.ts +33 -33
  14. package/dist/builtin/skill-creator/scripts/grade-evals.d.ts +73 -73
  15. package/dist/builtin/skill-creator/scripts/improve-description.d.ts +23 -23
  16. package/dist/builtin/skill-creator/scripts/init-skill.d.ts +14 -14
  17. package/dist/builtin/skill-creator/scripts/install-skill.d.ts +29 -29
  18. package/dist/builtin/skill-creator/scripts/package-skill.d.ts +38 -38
  19. package/dist/builtin/skill-creator/scripts/quick-validate.d.ts +8 -8
  20. package/dist/builtin/skill-creator/scripts/run-eval.d.ts +66 -66
  21. package/dist/builtin/skill-creator/scripts/run-loop.d.ts +49 -49
  22. package/dist/builtin/skill-creator/scripts/run-trigger-eval.d.ts +58 -58
  23. package/dist/chunks/agent-ASP4MS3X.js +2 -0
  24. package/dist/chunks/argument-completer-JYQ7FX3W.js +2 -0
  25. package/dist/chunks/chunk-2CFHBKRE.js +5 -0
  26. package/dist/chunks/chunk-35PPHOQ2.js +292 -0
  27. package/dist/chunks/chunk-43QNNDHR.js +29 -0
  28. package/dist/chunks/chunk-5BNQXXGY.js +1 -0
  29. package/dist/chunks/chunk-5GO6FH7L.js +458 -0
  30. package/dist/chunks/chunk-5NDCSFOP.js +78 -0
  31. package/dist/chunks/chunk-6FOJVETH.js +22 -0
  32. package/dist/chunks/chunk-6XM4B6K2.js +48 -0
  33. package/dist/chunks/chunk-6YZUE6NC.js +240 -0
  34. package/dist/chunks/{chunk-RDXRM3UI.js → chunk-7OEBJGHK.js} +1 -1
  35. package/dist/chunks/chunk-KQLQYHWU.js +386 -0
  36. package/dist/chunks/chunk-NXO6GWSY.js +46 -0
  37. package/dist/chunks/chunk-T2XZTLYE.js +316 -0
  38. package/dist/chunks/chunk-TQDBTTIM.js +348 -0
  39. package/dist/chunks/{chunk-SMT2JSM3.js → chunk-UID7BLAB.js} +9 -9
  40. package/dist/chunks/chunk-VAT2QYXM.js +765 -0
  41. package/dist/chunks/chunk-YAZQTC2L.js +5 -0
  42. package/dist/chunks/chunk-YVRYHC4C.js +655 -0
  43. package/dist/chunks/{chunk-PXKSE54E.js → chunk-Z3KFRTSB.js} +1 -1
  44. package/dist/chunks/compaction-config-BQSSIWK5.js +2 -0
  45. package/dist/chunks/{construction-bootstrap-5F5KF2BZ.js → construction-bootstrap-VQLQGWPY.js} +1 -1
  46. package/dist/chunks/dist-BFT5YIGU.js +2 -0
  47. package/dist/chunks/dist-PCFE24YP.js +2 -0
  48. package/dist/chunks/host-UTFXCYYM.js +2 -0
  49. package/dist/chunks/run-manager-PJU3WIFJ.js +2 -0
  50. package/dist/chunks/utils-SID4HW2Q.js +2 -0
  51. package/dist/index.d.ts +21 -19
  52. package/dist/index.js +6 -6
  53. package/dist/kodax_bootstrap.js +25 -25
  54. package/dist/kodax_cli.js +1787 -1341
  55. package/dist/kodax_resume.js +17 -17
  56. package/dist/provider-capabilities.json +392 -362
  57. package/dist/runtime-worker.js +1707 -1279
  58. package/dist/sandbox-workspace-session.js +563 -0
  59. package/dist/sdk-a2a.d.ts +18 -17
  60. package/dist/sdk-a2a.js +8 -8
  61. package/dist/sdk-agent.d.ts +320 -70
  62. package/dist/sdk-agent.js +1 -1
  63. package/dist/sdk-coding.d.ts +135 -168
  64. package/dist/sdk-coding.js +1 -1
  65. package/dist/sdk-experimental-memory.d.ts +14 -597
  66. package/dist/sdk-experimental-memory.js +1 -1
  67. package/dist/sdk-llm.d.ts +219 -6
  68. package/dist/sdk-llm.js +1 -1
  69. package/dist/sdk-mcp.js +1 -1
  70. package/dist/sdk-media.d.ts +1 -1
  71. package/dist/sdk-media.js +1 -1
  72. package/dist/sdk-repl.d.ts +70 -27
  73. package/dist/sdk-repl.js +2 -2
  74. package/dist/sdk-runtime.d.ts +212 -149
  75. package/dist/sdk-runtime.js +1 -1
  76. package/dist/sdk-sandbox.d.ts +93 -0
  77. package/dist/sdk-sandbox.js +2 -0
  78. package/dist/sdk-session.d.ts +8 -8
  79. package/dist/sdk-session.js +1 -1
  80. package/dist/sdk-skills.d.ts +2 -2
  81. package/dist/sdk-skills.js +1 -1
  82. package/dist/semantic-worker.js +15 -15
  83. package/dist/types-chunks/{base.d-ChvpaKjZ.d.ts → base.d-4e74xDdy.d.ts} +13 -1
  84. package/dist/types-chunks/{bash-prefix-extractor.d-r1beOESM.d.ts → bash-prefix-extractor.d-uAe2Oqda.d.ts} +319 -9
  85. package/dist/types-chunks/{capability-learning.d-DPrYxRjF.d.ts → capability-learning.d-CVsdHw4j.d.ts} +1 -1
  86. package/dist/types-chunks/{capsule.d-zeqV4IQX.d.ts → capsule.d-BlSv9l3V.d.ts} +2 -2
  87. package/dist/types-chunks/{guardrail.d-CWYD1bdL.d.ts → guardrail.d-BRE_ErEj.d.ts} +1 -1
  88. package/dist/types-chunks/{guardrail.d-qjuKJZ31.d.ts → guardrail.d-CXDYRgZ3.d.ts} +201 -35
  89. package/dist/types-chunks/{history-retrieval.d-BKTJIrVd.d.ts → history-retrieval.d-DtCy7x64.d.ts} +2 -2
  90. package/dist/types-chunks/{integration-config.d-ojG4swOP.d.ts → integration-config.d-BNowXE8k.d.ts} +23 -8
  91. package/dist/types-chunks/{public-api.d-CX4B11qY.d.ts → public-api.d-B3AohsxN.d.ts} +37 -8
  92. package/dist/types-chunks/{commands.d-DUxnK2TU.d.ts → repl.d-Ie_ZXb_U.d.ts} +89 -78
  93. package/dist/types-chunks/{side-query.d-DWTMsndP.d.ts → resolver.d-iAQ9ocLB.d.ts} +23 -74
  94. package/dist/types-chunks/{run-manager.d-B9fEIjZk.d.ts → run-manager.d-D1twIhF9.d.ts} +1 -1
  95. package/dist/types-chunks/{sdk-session-B0fhAOPa.d.ts → sdk-session-DB9KksIx.d.ts} +3 -3
  96. package/dist/types-chunks/side-query.d-DTuLPcC5.d.ts +77 -0
  97. package/dist/types-chunks/types-D3g6XUQr.d.ts +662 -0
  98. package/dist/types-chunks/{types.d-sRLugmjy.d.ts → types.d-BA-Jwpfs.d.ts} +506 -11
  99. package/dist/types-chunks/{types.d-DEctY20M.d.ts → types.d-BH0ZkTGf.d.ts} +2 -2
  100. package/dist/types-chunks/{types.d-DCQVBqVn.d.ts → types.d-BbtGlKZu.d.ts} +25 -3
  101. package/dist/types-chunks/{types.d-CSmF0t0n.d.ts → types.d-DIpZJKUl.d.ts} +15 -0
  102. package/dist/types-chunks/{types.d-Bm_y6YuM.d.ts → types.d-DVDTIfB_.d.ts} +4 -4
  103. package/dist/types-chunks/{utils.d-D0wPxz8y.d.ts → utils.d-CVp6bFl9.d.ts} +23 -7
  104. package/docs/SDK_EMBEDDER_GUIDE.md +592 -119
  105. package/package.json +9 -1
  106. package/scripts/kodax-bin.cjs +28 -28
  107. package/scripts/production-env.cjs +25 -25
  108. package/dist/chunks/agent-7X5CFET2.js +0 -2
  109. package/dist/chunks/argument-completer-3NHIKB4N.js +0 -2
  110. package/dist/chunks/chunk-4PWPNCNK.js +0 -158
  111. package/dist/chunks/chunk-7FJNLJLF.js +0 -369
  112. package/dist/chunks/chunk-COQYLD4U.js +0 -5
  113. package/dist/chunks/chunk-D3T24FJW.js +0 -78
  114. package/dist/chunks/chunk-EI4JBQKL.js +0 -46
  115. package/dist/chunks/chunk-HGT6WQ24.js +0 -321
  116. package/dist/chunks/chunk-HS3XHF3R.js +0 -622
  117. package/dist/chunks/chunk-IDCGNQ4H.js +0 -5
  118. package/dist/chunks/chunk-KAY2XLCP.js +0 -74
  119. package/dist/chunks/chunk-OD6LVXU6.js +0 -329
  120. package/dist/chunks/chunk-OSF3H4RR.js +0 -22
  121. package/dist/chunks/chunk-TGMBHGZO.js +0 -427
  122. package/dist/chunks/chunk-VWSLC2WO.js +0 -770
  123. package/dist/chunks/chunk-Y3AMP22L.js +0 -37
  124. package/dist/chunks/compaction-config-7J2XE35D.js +0 -2
  125. package/dist/chunks/dist-2RA7LSH3.js +0 -2
  126. package/dist/chunks/dist-URKXBOC6.js +0 -2
  127. package/dist/chunks/host-RKZ2OGFT.js +0 -2
  128. package/dist/chunks/run-manager-7RM4HEH6.js +0 -2
  129. package/dist/chunks/utils-X3TEH6IO.js +0 -2
  130. package/dist/types-chunks/center-types.d-BBT122uJ.d.ts +0 -91
package/CHANGELOG.md CHANGED
@@ -6,398 +6,785 @@ All notable changes to this project will be documented in this file.
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
- ## [0.7.76] - 2026-07-25
10
-
11
- > Git tag and GitHub Release are published by the release workflow. npm
12
- > publication remains the operator's final manual step.
13
-
14
- ### Changed
15
-
16
- - **Kimi Code defaults to the official K3 256K route.** The `kimi-code`
17
- provider now defaults to `k3-256k` and sends that exact upstream model ID.
18
- `kimi-for-coding` remains selectable for K2.7 Code, alongside
19
- `kimi-for-coding-highspeed` and the 1M `k3` tier. K3 now exposes the
20
- documented `low` / `high` / `max` reasoning levels with `high` as default;
21
- media metadata marks `k3-256k` as image-capable but not video-capable, and
22
- nominal subscription accounting reflects the 1M `k3` route's roughly 2x
23
- quota consumption.
24
-
25
- ### Verification
26
-
27
- - Added direct live-wire smoke coverage for all four Kimi Code subscription
28
- routes: `k3-256k`, `k3`, `kimi-for-coding`, and
29
- `kimi-for-coding-highspeed`.
30
-
31
- ## [0.7.75] - 2026-07-24
32
-
33
- > The npm package was published manually. The `v0.7.75` Git tag and GitHub
34
- > Release were skipped; the binary-release changes roll into `v0.7.76`.
35
-
36
- ### Changed
37
-
38
- - **Exact audited npm candidate bytes.** The release script now packs first,
39
- audits the generated Sidecar prompt and budget bridge, and publishes that
40
- exact tarball so SDK validation and registry publication cannot drift.
41
- - **Windows GUI background-process hardening.** Runtime
42
- Worker-reachable non-interactive child processes now request hidden Windows
43
- consoles across memory/Git metadata, provider CLI and ACP, LSP, clipboard,
44
- worktree, review, extension-command, checkpoint, and sandbox paths. Explicit
45
- editor, terminal, and PTY interaction remains unchanged.
46
- - **Published Runtime Worker audit and packaged-host regression.** The bundle
47
- build now audits statically identifiable child-process calls in the published
48
- Runtime Worker, and the packaged Electron daemon smoke runs 20 ordinary
49
- queries with a Win32 console-visibility probe. Packaged KodaX Space validation
50
- on Windows 10 and Windows 11 remains a non-blocking product follow-up; it does
51
- not gate the tag, package build, or npm publication.
52
-
53
- ### Fixed
54
-
55
- - **Sidecar completion and Runtime terminal semantics.** Optional work offered
56
- after the current request is complete is accepted rather than reported as
57
- blocked; only clarification required to finish the current request remains
58
- blocked. Budget-approval state is emitted only for an eligible `revise`, and
59
- structured blocked codes and reasons survive live events, persistence,
60
- daemon round trips, and restart recovery.
61
-
62
- ### Documentation
63
-
64
- - Updated the release guide, current architecture/design baselines, SDK
65
- embedder guidance, feature index, roadmap, issue tracker, English/Chinese
66
- READMEs, and the v0.7.75 regression guide for the SDK validation candidate.
67
- - Rescheduled FEATURE_263 from v0.7.75 to v0.7.77 and then to v0.7.78; moved
68
- FEATURE_274 from v0.7.76 to v0.7.77. v0.7.75 and v0.7.76 remain feature-free
69
- stabilization releases.
70
-
71
- ## [0.7.74] - 2026-07-23
72
-
73
- > Git tag and GitHub Release are published by the release workflow. npm
74
- > publication remains a separate manual operator step.
9
+ ## [0.7.78] - 2026-07-29
75
10
 
76
11
  ### Added
77
12
 
78
- - **Absolute automatic-compaction threshold (FEATURE_272).** SDK, Runtime
79
- Session settings, daemon protocol, REPL, and KodaX Space now expose an
80
- optional token threshold. Missing/zero is inactive; otherwise the smaller of
81
- the absolute limit, bounded percentage policy, and physical provider capacity
82
- triggers compaction. Percentage defaults to 75% and clamps to 15-90%, while
83
- automatic large compaction remains always enabled.
84
- - **Context-owned compaction telemetry and transcript paging.** Root and child
85
- turns now carry stable `contextId`/revision ownership. The canonical
86
- `context.compaction.finished` event reports committed before/after and
87
- component metrics. Runtime observations use bounded transcript slices,
88
- revision-bound pages, and lossless chunks for oversized entries; clients can
89
- require `contextCompaction:3`, `transcriptPaging:1`, and
90
- `transcriptSearch:1`.
91
- - **Durable exact-history recovery.** The root host now persists and flushes
92
- exact pre-compaction lineage before evicting raw bodies. Island sidecars are
93
- committed before the slim main Session, stable entry IDs deduplicate overlap,
94
- and failures preserve the last exact live or persisted copy. Root Agents gain
95
- bounded `session_history_search` / `session_history_read`; SDK and daemon
96
- clients gain revision-bound `sessions.transcriptSearch()`.
97
- - **Runtime active-run interrupt input.** Embedded Runtime and the shared daemon
98
- now advertise `interruptInput:1`. `runtime.runs.submitInput()` queues cloned,
99
- ordered input for the current active Actor Run, delivers one FIFO batch as
100
- separate user messages at the next safe Runner boundary, and exposes durable
101
- queued/delivered lifecycle facts without creating a continuation Run or
102
- leaking terminalized input into a later Run.
13
+ - **Evidence-Gated Background Skill Learning (FEATURE_263).** Completed the
14
+ Memory-first learning loop with durable non-blocking review, immutable
15
+ project-scoped learned Skill revisions, canonical record/fingerprint-gated
16
+ discovery, exact-use outcome attribution, bounded three-use canaries,
17
+ independently verified project activation, and full `/learn`/Runtime Learning
18
+ Center controls. Protected/formal Skills, global promotion, and Extension
19
+ authoring remain explicit user actions.
20
+ - **Complete First-Run Split Configuration (FEATURE_276).** `kodax setup`,
21
+ first-run onboarding, and `--custom` now create and validate the core, MCP,
22
+ Extensions, and A2A active files plus annotated templates without
23
+ overwriting existing configuration or collecting secrets. Legacy integration
24
+ declarations are preserved and all cooperating writers share the same
25
+ lock/revision boundary.
26
+ - **Standalone Sandbox SDK.** Added the `@kodax-ai/kodax/sandbox` subpath with
27
+ typed capability, doctor, setup/activation guidance, and explicit
28
+ host-owned contained command execution. The generic API reports structured
29
+ unavailability and never silently executes without containment.
30
+ - Added read-only `/sandbox` diagnostics and optional `tool.sandbox` Runtime
31
+ events. Ordinary startup, history, and command cards remain quiet.
103
32
 
104
33
  ### Changed
105
34
 
106
- - **Mailbox-driven Agent coordination (FEATURE_273).** Model-visible
107
- `wait_agent` now accepts only a bounded timeout and yields on the caller's
108
- mailbox, root user input, interruption, or expiry. Progress remains available
109
- through Actor snapshots, event replay, and SDK long-poll without waking and
110
- resampling the parent model. The tool returns only a wake acknowledgement;
111
- authenticated Agent messages and structured completion metadata enter the
112
- transcript once at the next safe boundary. `list_agents` owns tree-state
113
- inspection and `agent_output` owns targeted result reads.
114
- - **Resident Goal lifecycle contracts.** `get_goal`, `create_goal`, and
115
- `update_goal` keep their complete descriptions on both SA and managed AMA
116
- paths. This removes an avoidable discovery round trip while preserving the
117
- explicit-create and three-turn blocked-state rules. The remaining deferred
118
- set stays at exactly 11 tools; schemas, handlers, permissions, Goal state, and
119
- compaction-protected receipts are unchanged.
35
+ - **Intent-Aligned Auto[LLM] Permission and ASRT Execution (FEATURE_277).**
36
+ Precisely modeled ordinary reads and workspace/system-temp mutations bypass
37
+ classifier latency independently of sandbox readiness. Other actions are
38
+ reviewed against bounded user intent and exact side effects; approval timeout
39
+ cancels only the current operation. ASRT is optional execution containment,
40
+ not permission authority, and admitted commands reuse a workspace-scoped
41
+ session instead of paying initialization/reset per command.
42
+ - The published bundle now exposes 12 SDK subpaths (13 entries including the
43
+ root), adding `/sandbox`; README, README_CN, the SDK embedder guide, and
44
+ `kodax_manual` describe the same surface.
120
45
 
121
46
  ### Fixed
122
47
 
123
- - **Large compaction coverage and protected-tail basis.** Major compaction now
124
- protects 20% of the effective trigger rather than 20% of the model maximum,
125
- summarizes the complete eligible prefix in one transaction, and uses
126
- map-once/reduce-once only for physical overflow. Exact main-request prefix
127
- reuse preserves prompt/KV cache on both ordinary and managed-task paths while
128
- explicitly excluding the protected raw tail from the summary.
129
- - **User intent retention across repeated and degraded compaction.** Genuine
130
- user queries are mechanically retained in a stable JSONL checkpoint ledger,
131
- including text carried beside tool results. A query is represented exactly
132
- once: raw while it remains in the protected tail, then in the ledger when its
133
- prefix is compacted. The explicit emergency-pruning fallback installs query
134
- recovery before removing old raw evidence.
135
- - **SDK/UI accounting and daemon frame safety.** The legacy compact callback now
136
- reports post-compact tokens on both execution paths, and automatic managed
137
- compaction emits the same post-commit canonical event/report as the standard
138
- agent path. Persisted anchors include admitted post-compact attachments.
139
- Space ignores child context metrics for the root gauge/activity/cost display,
140
- displays the last root transition, labels active model input separately from
141
- complete visible history, and reads transcripts directly through bounded
142
- page/chunk calls. The legacy full-transcript daemon method rejects responses
143
- above 512 KiB instead of risking the 8 MiB frame.
144
- - **Compacted-history loss and maintenance replay.** Full-lineage loads now
145
- merge exact sidecar entries over slim placeholders, compaction writes use a
146
- durable-before-evict boundary, child compaction cannot overwrite root
147
- lineage, and maintenance preserves its append watermark instead of archiving
148
- the same island entries again.
149
- - **Agent completion delivery and resumed transcripts.** Unacknowledged root
150
- completions persist an explicit pending-delivery set and are republished after
151
- a hard restart; same-process Runtime reconstruction deduplicates the projected
152
- queue by child turn ID, while acknowledged and legacy historical completions
153
- are not replayed. Completion acknowledgement remains after authoritative
154
- transcript persistence. Session restore also deduplicates and canonically
155
- repositions tool groups by tool-use ID and binds repeated text to the latest
156
- persisted suffix.
157
- - **Deterministic reads, bounded tool attention, and compaction round exits.**
158
- Auto Mode now handles complete risk-free static reads deterministically while
159
- sensitive paths, credential stores, process environments, and named secret
160
- variables require confirmation. Grep clips pathological lines and exposes
161
- bounded offset continuation; one batch-admission owner separates physical
162
- capacity from tool-attention spill. Current user-shaped and legacy compaction
163
- checkpoints no longer cause a compacted query/final pair to be appended twice.
164
- - **Release-review boundary fixes.** Emergency compaction fallback accounts for
165
- system/tool overhead and response reserve before pruning and reports no
166
- success for unchanged or still-oversized candidates. Runtime-backed REPL paths
167
- use one Session writer, first-run headless compaction seeds Session metadata,
168
- persistence failure rolls back tentative context revision, and history search
169
- consistently excludes system/hidden/checkpoint/placeholder content. Auto
170
- permission analysis samples the middle of long operation lists, POSIX paths
171
- are not mistaken for Windows switches, and continuation errors identify
172
- `runtime.runs.submitInput` accurately.
173
- - **Release-candidate checkpoint and PowerShell boundary closure.** Session
174
- lineage now consumes and re-renders the exact compaction checkpoint bytes,
175
- including recovery guidance, so the compaction entry, first-kept pointer, and
176
- post-compact attachments remain on the active path; legacy suffix-free
177
- checkpoints still resume. Auto Mode treats bracket wildcards on PowerShell
178
- path parameters as incomplete and escalates them, while exact `LiteralPath`
179
- filenames containing brackets remain supported.
180
- - **Reliable continue-most-recent selection.** `kodax -c`, classic/Ink startup,
181
- one-shot CLI execution, and coding-runtime auto-resume now scan beyond the
182
- legacy ten-session window, skip zero-message ACP/bootstrap placeholders, and
183
- preserve an explicit session ID. Interactive resume restores the saved
184
- workspace runtime together with messages, UI history, lineage, artifacts,
185
- extensions, title, tag, and session identity before the next turn.
186
- - **Deterministic Auto mode switching.** Entering Auto now displays the resolved
187
- configured engine immediately instead of a transient bare `Auto`, and Runtime
188
- setting writes are serialized per Session so rapid shortcut cycling is
189
- last-action-wins. Persisted or automatic `Auto[RULES]` fallback remains sticky
190
- by design and can be changed explicitly with `/auto-engine llm`.
191
- - **Release-review debt closure.** Imperative manual compaction now reconciles
192
- the exact flat Session history into lineage before creating the compaction
193
- island. A failed durable interrupt-delivery event leaves the input queued,
194
- rethrows the persistence error, and emits a bounded `runtime.warning` without
195
- copying user input content into diagnostics.
48
+ - The v0.7.78 semantic release gates now use frozen, resumable current-policy
49
+ runners instead of absent or historical fixtures. F263 revision
50
+ `f263-v0.7.78.4` freezes production learning-review and downstream action
51
+ bytes; F277 revision `f277-v0.7.78.4` freezes the intent-aligned permission
52
+ prompt and exact action evidence. Both default to zero provider calls, require
53
+ explicit owner authorization plus a feature-specific generation flag, keep
54
+ raw/blind-review evidence outside the repository, and fail closed on
55
+ case/prompt/scorer drift.
56
+ - The first F263 paid validity pilot (`f263-v0.7.78.2`) correctly stopped after
57
+ 4 calls: three outputs were rejected by the production normalizer and neither
58
+ positive sample produced a project canary. The production report contract now
59
+ requires `memoryPlan` and `capabilityDecision` as top-level siblings and
60
+ states the governed `requiresApproval=true` invariant without weakening the
61
+ strict normalizer or changing Skill admission policy.
62
+ - The subsequent F263 `.3` safety panel found no credible high-severity harm:
63
+ no negative case normalized to a project canary and all nine positive raw
64
+ decisions selected `project_canary`. It also exposed one systematic utility
65
+ mismatch: six human-readable Skill names failed the production slug
66
+ invariant, leaving only 3/9 normalized positive canaries. The production
67
+ prompt/tool schema now state the existing lowercase hyphenated-slug and
68
+ 64-character constraints. Strict validation, evidence thresholds, scope,
69
+ canary admission, and promotion policy remain unchanged; downstream expansion
70
+ stopped and fresh `.4` revisions bind the corrected bytes to one exact
71
+ candidate.
72
+ - Runtime Actor trees now persist one exclusive owner per Session. A second live
73
+ Runtime can no longer recover another Runtime's active child turns; stale
74
+ controllers self-fence on CAS conflict, physically abort local executors,
75
+ refresh durable state and mailbox events, and expose actionable
76
+ `actor_owner_conflict` diagnostics. Runtime close and Session deletion release
77
+ ownership safely; archive/delete retain the owner through the filesystem
78
+ operation, while deletion quiesces executors before removing the file and
79
+ then performs a no-write local dispose. A per-Session gate closes Run/Agent
80
+ admission races with archive/delete, and SA root Runs now claim the same
81
+ owner fence. A Runtime-scoped loopback identity challenge now distinguishes
82
+ a live owner from an unrelated process that reused its PID: refused or
83
+ completed mismatched challenges prove stale, while timeouts and unknown
84
+ failures stay fail-closed. Legacy snapshots without an identity challenge
85
+ remain fail-closed because their live owner cannot be proven. Archived Sessions
86
+ reject Run/Agent execution and in-place mutation until unarchived, and
87
+ archived Actor CAS writes stay in the exact archived file instead of
88
+ recreating an active duplicate. Failed deletion retains its authoritative
89
+ snapshot and owner for retry, paired archive moves roll back on sidecar
90
+ failure, and external task aborts cover queued, preflight, pending, and
91
+ ambiguous start admission with a prompt `AbortSignal`, A2A request-level
92
+ propagation, retained per-Agent start ordering, coalesced reference-aware
93
+ cancellation, and bounded Actor-turn convergence.
94
+ Actor recovery preflight is byte-for-byte read-only, and Session recovery re-reads under the
95
+ cross-process lock without bypassing Actor ownership or moving archived data.
96
+ Stale full Session saves cannot replace the Actor CAS sub-snapshot, and all
97
+ full rewrites/island maintenance retain the resolved archived path.
98
+ Failed initialization releases a newly claimed fence and supports
99
+ same-instance/double-failure cleanup. Raw maintenance and retention reject
100
+ owned/non-terminal trees, complete Session file sets delete through
101
+ rollback-safe staging, and cross-process append revalidates and merges stale
102
+ watermarks plus same-length identity rewrites on the exact resolved path.
103
+ Runtime client, Worker, hosted-daemon, host, lease, and executor-plane close
104
+ attempts are shared and retryable after partial failure or timeout.
105
+ - SDK daemon auto-start accepts an opt-in `daemonOrphanExitMs` lifecycle
106
+ contract. A newly ready daemon arms bootstrap grace even if its launching
107
+ client crashes before initialize; attach cancels the timer, and loss of the
108
+ final logical client starts a fresh full grace period. Other clients cancel
109
+ it, governed active work defers shutdown until terminal/idle state, and only
110
+ then does the daemon release its endpoint, state, and owner lock. Ordinary
111
+ CLI persistent daemons remain unchanged. The dedicated
112
+ `daemonOrphanExit:1` capability reports that the current host actually has
113
+ the policy enabled, and both Runtime facades safely replace an idle
114
+ persistent owner before relying on it.
115
+ - Invalid optional MCP, A2A, or Extension configuration no longer aborts
116
+ daemon cold start. Each domain fails independently to a visible safe-empty
117
+ state, retains last-known-good data on later invalid edits, watches legacy
118
+ `config.json` fallbacks, and hot-recovers without mutating user files.
119
+ Detached bootstrap output is retained in continuously bounded logs, and the
120
+ daemon advertises the versioned `integrationConfigResilience` contract.
121
+ - Auto[LLM] now retries classifier timeout/provider/contract failures once,
122
+ enforces its deadline even when a provider ignores cancellation, exposes
123
+ bounded prompt-size and TTFT phase diagnostics, and then degrades at the
124
+ Accept-edits boundary without switching to Auto[rules]. Classifier
125
+ concerns request user confirmation instead of hard-blocking. Exact,
126
+ explicitly requested workspace copy/move/rename/delete/write/create shell
127
+ calls can proceed without an LLM round trip independently of sandbox
128
+ readiness. ASRT adds optional execution containment; unavailable or
129
+ pre-launch-failed local containment falls back to the ordinary path without
130
+ another classifier/approval. Admitted commands in one workspace reuse a
131
+ long-lived ASRT session, so session-level initialization/reset is not paid
132
+ on every command. Normal history stays quiet, while `/sandbox` provides
133
+ explicit diagnostics and SDK hosts can opt into structured events.
134
+ - Runtime Auto capability negotiation now requires
135
+ `runtimeAutoModeGuardrail:4` for daemon auto-start and consistently reports
136
+ `fallbackPersistsEngine:false` from embedded, Worker, and daemon hosts. An
137
+ idle v3 daemon is replaced before a v0.7.78 client relies on the
138
+ intent-preserving, non-Rules fallback contract.
139
+ - The built-in A2A listener now rejects explicit Fetch-blocked ports and
140
+ retries ephemeral allocation when the operating system selects one, so a
141
+ successfully returned loopback URL is usable by Fetch-compatible clients.
142
+ - `/learn promote` now has dedicated help, strict `--scope user` validation,
143
+ name/slug/capability-ID disambiguation, command completion, v2 learned-record
144
+ transport across inline/Worker/daemon, reviewed `ready` or `active_learned`
145
+ admission, and atomic non-overwriting publication with symlink/junction
146
+ containment and idempotent repeat behavior.
147
+ - Learned Skill canaries now remain in `testing` until all three exact-revision
148
+ outcomes settle, activate only with at least one independently verified
149
+ success, and revalidate revision/fingerprint inside the second locked
150
+ invocation mutation. A stale artifact identity cannot consume a canary slot
151
+ or be attributed to the current revision.
152
+ - Root AMA runs now execute the same governed MemorySession lifecycle as the
153
+ standard Agent path. The new root-only `memory_intent` signal binds an exact
154
+ current-user quote, distinguishes captured/queued/applied states, retains
155
+ durable review evidence, serializes review drains, and prevents generated
156
+ resume text or child Agents from authorizing Memory writes. Explicit
157
+ host-bound intent survives a later root cancellation without preserving
158
+ observations or lessons from the cancelled task; foreground completion still
159
+ stops at durable review enqueue rather than waiting for semantic review.
160
+ - Workspace ASRT shell containment now denies reads from sensitive home
161
+ credential paths and the complete resolved agent home. Home-local executable
162
+ search paths cannot carve access back into a denied subtree; ordinary
163
+ external reads, workspace/temp writes, bootstrap execution, and the existing
164
+ network policy remain unchanged.
165
+ - Edit mode no longer sends already-allowed static Skill loading to the client
166
+ permission broker, and Plan mode can load static instructions without
167
+ authorizing their later side effects. Dynamic Skill commands are blocked
168
+ live in Plan and otherwise require an explicit host-controlled executor;
169
+ protected writes and non-read-only shell actions keep their normal gates.
170
+ - Managed Workflow Actor waits no longer turn the Actor API's internal
171
+ 30-second polling window into a misleading `undefinedms` failure when the
172
+ workflow has no explicit timeout. Explicit deadlines remain authoritative,
173
+ and terminal Actor output closes event-delivery races.
174
+ - The resume Session picker now renders stored timestamps in the host's local
175
+ timezone instead of presenting UTC values without a timezone marker.
176
+ - The Windows ordinary-query regression now gives temporary recursive removal
177
+ a bounded native retry window for the intentionally non-blocking governed
178
+ Memory review queue. The release gate no longer fails with transient
179
+ `ENOTEMPTY`, without making background review block foreground completion.
196
180
 
197
- ### Documentation
198
-
199
- - Root and generated JSONC templates, both READMEs, architecture/design docs,
200
- the SDK embedder guide, feature/issue trackers, release verification guide,
201
- package READMEs, and `kodax_manual` now describe the complete v0.7.74
202
- compaction, mailbox-wait, active-run input, Goal-tool, resume, Auto-switch,
203
- and recovery contracts.
181
+ ## [0.7.77] - 2026-07-27
204
182
 
205
- ## [0.7.73] - 2026-07-20
183
+ > Released as Git tag `v0.7.77`, GitHub Release, and
184
+ > `@kodax-ai/kodax@0.7.77` on npm. Frozen F274/F275 paid evaluation completed
185
+ > with a joint owner `SHIP` decision; no unmeasured task-effect, token, or
186
+ > latency improvement is claimed.
206
187
 
207
188
  ### Added
208
189
 
209
- - **Qwen Token Plan provider.** The new `qwen-token-plan` alias uses the
210
- Anthropic-compatible Alibaba Cloud Token Plan endpoint and
211
- `QWEN_TOKEN_API_KEY`. It defaults to `qwen3.8-max-preview`, exposes the
212
- supported Qwen 3.7/3.6, GLM-5.2, and DeepSeek V4 Pro routes with one-million-
213
- token context metadata, and declares verified reasoning, image-input, and
214
- nominal subscription-cost capabilities without changing the existing `qwen`
215
- provider.
216
- - **First-run provider setup (FEATURE_271).** A bare interactive `kodax`
217
- launch with no selected provider and no supported local credential now opens
218
- a focused provider/model setup flow before Runtime, daemon, session, or REPL
219
- startup. `kodax setup` reruns the same flow explicitly. It stores only
220
- non-secret metadata, preserves unrelated config through a revision-checked
221
- atomic write, refuses malformed existing custom providers and credential-
222
- bearing endpoint URLs, and then names the required environment variable and
223
- terminal restart steps.
224
- - **Typed Auto Mode SDK contract (FEATURE_271).** The root and REPL SDK
225
- entries now export one pure `resolveAutoModeSettings()` plus the authoritative
226
- loader and related types; `loadConfig().autoMode` is declared, Runtime Session
227
- settings persist `autoModeSpeculativeWindowMs` (including `0`), and side
228
- queries return prompt-free provider/model/timing/retry/phase diagnostics.
229
- - **Runtime-owned concrete permission grants.** Embedded and daemon SDK clients
230
- can submit concrete `toolInput` and `executionCwd`, receive only opaque
231
- Runtime-issued Session/persistent grant suggestions, and select a suggestion
232
- without constructing or widening its hidden matcher. Exact command, known
233
- file-tool path, and generic exact-call matchers remain revisioned and audited;
234
- dynamic or dangerous shell calls never receive a persistent suggestion.
190
+ - **Host-configurable Shell Execution Contract.** Runtime callers can persist a
191
+ JSON-only `shellExecution` policy per Session or override it per Run,
192
+ selecting pwsh, Windows PowerShell, cmd, bash, zsh, or an explicit Git Bash
193
+ path. Configured runs resolve a credential-filtered environment through the
194
+ selected shell in the effective cwd, cache it by contract/cwd with strict
195
+ TTL or `refreshToken` invalidation, and execute through that same explicit
196
+ interpreter. Native child Agents and AMA deterministic evaluators inherit
197
+ the policy, command grants bind to its hash, and unconfigured callers retain
198
+ legacy shell behavior.
199
+ - **Pattern-aware adaptive AMA (FEATURE_274).** Ordinary AMA now shares one
200
+ six-pattern problem-solving catalog with Workflow semantics while continuing
201
+ to execute through the existing Runtime-owned Actor/Turn tree. Optional
202
+ `quality_strategy` metadata distinguishes coverage, replication, opposition,
203
+ filtering, judging, and challenge intent; Runtime derives a bounded,
204
+ fact-only `PatternTrace`, and the existing Sidecar remains the sole
205
+ terminal-answer quality adjudicator. Pattern presence does not activate a
206
+ Workflow, force a child, create a fixed topology, or add another verifier.
207
+ - **Governed event-triggered memory intervention (FEATURE_275).** Tool failure,
208
+ verification failure, and durably committed compaction can rebuild a closed,
209
+ prompt-safe candidate set before the next Action-LLM request.
210
+ `MemorySession.intervene()` performs deterministic exact selection by
211
+ default; an in-process host may opt into the bounded `memoryRecallRunner` or
212
+ `createCodingMemoryInterventionRunner()`. F228 remains the only durable
213
+ memory authority, daemon DTOs reject the function binding, and malformed,
214
+ unknown, stale, timed-out, or cancelled selector output fails silent.
215
+ - **Public Kimi K3 route.** The `kimi` provider now exposes `kimi-k3` with a
216
+ 1,048,576-token context and the same K3 reasoning profile used by Kimi Code,
217
+ while preserving `kimi-k2.7-code` as the public default.
235
218
 
236
219
  ### Fixed
237
220
 
238
- - **Reasoning, Auto Mode, and confirmation regressions.** Native
239
- disabled-thinking requests now send the provider's explicit disabled form
240
- only for models that declare support (including verified Qwen Token Plan 3.7
241
- routes); always-thinking variants retain their declared behavior. Sidecar
242
- queries preserve a supported `none` effort, persisted Runtime Auto engines
243
- are not overwritten by a fresh REPL, `/mode` synchronizes before reporting
244
- success, and concurrent confirmation prompts are serialized instead of
245
- replacing one another.
246
- - **Legacy permission-grant upgrade safety.** Matcherless grants persisted by
247
- older releases remain visible and revocable but can no longer authorize a
248
- concrete tool call. The next invocation requires a fresh Runtime-issued
249
- matcher, so old coarse Bash grants cannot bypass exact-command, dynamic-shell,
250
- or absolute-deny protections.
251
- - **Classifier credential boundary.** Auto[LLM] now redacts explicitly named
252
- credential values inside shell-escaped JSON before sending an action to its
253
- side provider, while retaining adjacent operational fields. Redaction is
254
- documented as defense in depth; arbitrary Base64/hex values are not treated
255
- as secrets without a credential signal.
256
- - **Todo/Actor semantic progress checkpoint (FEATURE_270 follow-up).** Worker
257
- guidance now treats Todo rows as user-visible milestones rather than Actor
258
- instances and requires timely updates at milestone boundaries. Structured
259
- terminal child results arm one deduplicated, warn-only reconciliation
260
- reminder; transcript scans are append-incremental with safe compaction
261
- fallback, and Sidecar accept-time residual reconciliation emits a diagnostic
262
- without changing its existing bridge contract.
263
- - **Auto LLM classifier timeout and missing-model escalation.** Runtime now
264
- treats omitted Auto engine as the documented LLM default and still owns the
265
- guardrail, while a missing/blank/malformed effective classifier model fails
266
- as a typed recoverable Runtime error or a local block in the shared
267
- `createAutoModeToolGuardrail` boundary. The final guardrail check runs before
268
- provider lookup and cannot invoke `askUser`, record a circuit-breaker error,
269
- or downgrade to rules. Classifier requests strip assistant prose/thinking,
270
- cap normalized transcript/tool-result/action/prompt bytes, remove image
271
- paths, and cap the structured response at 256 tokens. The 20-second deadline remains bounded:
272
- a four-call `zai-coding/glm-5.2` probe completed representative Windows
273
- permission verdicts in 1.9–2.8 seconds, while the matching production session
274
- revealed a 1.625 MB tool result that had bypassed the existing sanitizer.
275
- - **Auto guardrail daemon and tracing semantics.** Auto-started Runtime clients
276
- now require `runtimeAutoModeGuardrail:3`. It retains v2's effective
277
- timeout/window defaults, bounded classifier input, and diagnostics metadata,
278
- and adds opaque concrete-grant semantics. Capability negotiation is monotonic
279
- (v3 satisfies v2/v1); idle older daemons use the existing fenced upgrade path,
280
- while busy daemons are left untouched with a recoverable error. Guardrail
281
- spans now cover the awaited callback instead of timing only final verdict
282
- emission.
283
- - **Concurrent daemon startup publication race.** A cleanly exiting loser now
284
- gives the elected owner a bounded publication grace period, preventing an
285
- SDK starter from reporting failure during the short lock/state handoff gap.
286
- - **Guardrail/permission execution parity.** Both Runner paths now commit each
287
- guardrail rewrite before permission policy and execution, reject correlation-
288
- id rewrites, propagate blocks as visible audited tool results, and preserve
289
- embedded host policy hooks while rejecting non-transportable daemon hooks.
290
- Calls rewritten into Bash retain serialized shell ordering.
291
- - **Managed-run capacity and tool-dispatch accounting.** A complete system
292
- prompt override no longer double-counts Skills, missing provider usage rebases
293
- from the final request envelope, and authoritative provider usage remains
294
- intact. Non-Bash tool calls keep parallel dispatch, Bash remains sequential,
295
- and aggregate tool-result spill decisions use the complete batch budget.
296
-
297
- ## [0.7.72] - 2026-07-19
298
-
299
- ### Added
300
-
301
- - **Learning Center and learned-capability Runtime control plane
302
- (FEATURE_266).** KodaX now owns learned capability lifecycle, notification
303
- cursors, lower-precedence learned Skill discovery, F224 proposal projection,
304
- promotion/rollback actions, and inline/Worker/daemon SDK parity through one
305
- agent-layer service. `/learn`, status summaries, and the Ink learning segment
306
- expose the same durable state without creating a second runtime engine.
307
- - **Unified adaptive Actor/Turn control plane (FEATURE_270).** AMA collaboration
308
- now uses one Runtime-owned actor tree and scheduler across native, recursive,
309
- Workflow-owned, constructed, and external Agent work. The canonical
310
- `spawn_agent`, `send_message`, `followup_task`, `wait_agent`,
311
- `interrupt_agent`, `list_agents`, and `agent_output` surface supports reusable
312
- Actor identities, durable Turn history, direct-parent completion, recursive
313
- delegation, shared capacity, and SDK/daemon recovery. A manifest-first,
314
- fail-closed behavioral eval driver freezes the released/current production
315
- prompt and tool bytes, call graphs, budgets, raw evidence, and blind review
316
- mapping before any separately authorized provider call.
317
-
318
- ### Changed
319
-
320
- - **Current coding-eval aliases and MiniMax default model.** Newly authored or
321
- revised evals now route Zhipu through `zhipu/glm52` (`glm-5.2`) and MiniMax
322
- through `mmx/m3` (`MiniMax-M3`). `minimax-coding` now defaults to M3 while
323
- the old `zhipu/glm51` and `mmx/m27` aliases remain explicitly selectable for
324
- historical replay; existing raw evidence and reports keep their original
325
- route labels.
326
- - **AMA and Workflow orchestration cutover.** AMAW and the old model-visible
327
- child-task vocabulary are retired. Persisted `amaw`/`ama-workflow` settings
328
- migrate once to AMA, while new inputs fail with a migration hint. Workflow
329
- remains available for explicit natural-language, command, named-pattern, and
330
- SDK requests, but its child Agents now use the unified Actor scheduler and
331
- task complexity alone no longer activates Workflow.
332
-
333
- ### Fixed
221
+ - Daemon startup now waits for the matching healthy owner state to publish
222
+ `status: ready` before returning, unrefing its child, or attaching a
223
+ concurrent CLI/SDK starter. Owned, competing, and pre-existing-owner paths
224
+ share the same bounded, cancellable identity fence, preventing successful
225
+ starts or SDK connections from observing a stale `starting` state.
226
+ - Missing local files referenced by historical image blocks no longer poison every later
227
+ Provider request. Anthropic-compatible user/tool-result images and OpenAI-compatible user
228
+ images now degrade only `ENOENT`/`ENOTDIR` to a path-free text marker; unrelated filesystem
229
+ errors remain visible. OpenAI-compatible tool-result image blocks also use path-free
230
+ missing/unsupported markers instead of serializing absolute local paths.
231
+ - Added stable, opaque Provider prompt-cache affinity for Kimi Code and other
232
+ verified endpoints. AMA/SA root requests reuse one logical-context key across
233
+ runs, retries, fallback, resume, and compaction; child Agents use stable
234
+ canonical-path keys isolated from their parent and physical worker Sessions.
235
+ Kimi Code lowers it to Anthropic-compatible `metadata.user_id`, public Kimi
236
+ and official OpenAI use `prompt_cache_key`, strict compatible gateways remain
237
+ opt-in, and the effective SDK/run-scoped/env `disablePromptCache` policy
238
+ removes all cache-routing metadata. Cache diagnostics expose only a separate
239
+ hash of an affinity key actually supported by the configured wire, never the
240
+ key or logical identity itself.
241
+ - Preserved official CLI cache usage end to end. Codex CLI
242
+ `cached_input_tokens` / `cache_write_input_tokens` and Gemini CLI
243
+ `stats.cached` now survive the JSONL parser, pseudo-ACP, normalized Provider
244
+ usage, and Runtime diagnostics. Explicit Provider zero remains `0`; missing
245
+ or invalid fields remain absent, and input totals are never recomputed by
246
+ adding cache breakdowns. The bridge now also keeps generated ACP IDs separate
247
+ from native Codex/Gemini session IDs: first prompts start fresh, only
248
+ CLI-reported native IDs may be resumed, stateless calls cannot share a
249
+ process-global session, failed/disconnected pseudo transports are recreated,
250
+ pending handshakes and later transport deaths are invalidated for reconnect,
251
+ and missing or non-zero-exit CLI completion fails visibly even when a
252
+ successful completion event was reported earlier. Default aborts remain
253
+ user cancellation, while hard/idle timeout abort reasons propagate into the
254
+ normal retry and failure path instead of becoming an empty success. The
255
+ configured CLI executor timeout is now enforced through process-tree
256
+ termination, including after a CLI reports success but never exits; native
257
+ ACP prompts also stop waiting at the caller deadline even if a server ignores
258
+ the best-effort cancel request.
259
+ - Hardened the Shell Execution Contract after adversarial review: configured
260
+ commands now deny credentials for every registered Provider, preserve a
261
+ Session contract when a Run context contains explicit `undefined`, rebuild
262
+ Windows Registry environments without stale `%PATH%` or tool-manager
263
+ variables, reject unsupported PowerShell profile/command switches, remove
264
+ `NODE_OPTIONS` before probing, honor explicit environment denies, and avoid
265
+ cmd-only hints under PowerShell or Git Bash. Last-waiter cancellation now
266
+ terminates an in-flight profile probe without interrupting shared waiters.
267
+ A targeted Windows CI gate covers the cross-platform shell paths.
268
+ - Rebuilt the supplied v0.7.77 package from the cache-stability fix and added
269
+ an end-to-end AMA automatic-compaction regression. Before and after
270
+ compaction, native and legacy Providers now prove the Skills addendum and
271
+ selected Skill are injected exactly once per Worker request, remain visible
272
+ to context-budget diagnostics, and never persist in compactable history.
273
+ - Repaired nested `agent-turn:` evidence fence sanitization so downstream child
274
+ briefings use invisible zero-width separators instead of visible mojibake.
275
+ - Made queued Runtime interrupt validation atomic at the batch boundary:
276
+ invalid artifacts now leave every accepted prompt queued and append no
277
+ partial user-message batch.
278
+ - Extended governed-memory prompt safety to qualified credential sentences and
279
+ advanced its frozen evidence fingerprint to cover the policy identity and
280
+ renderer limits.
281
+ - Aligned terminal contracts by emitting `onComplete` on iteration exhaustion
282
+ and deriving live-turn status from the final result; pattern-disposition
283
+ output Schema now enforces the parser's exclusive target forms.
284
+ - Taught the workflow structured-output validator to honor `oneOf`
285
+ (exactly-one-variant), so Schemas using it—including the
286
+ pattern-disposition envelope—are genuinely validated instead of silently
287
+ passing, and remain legal for workflow `outputSchema` declarations.
288
+ - Completed the Runtime diagnostics query contract for reconnecting hosts.
289
+ Budget, tool-exposure, compaction-skip, and provider-cache diagnostics now
290
+ carry stable logical `contextId` / `parentContextId` identity while retaining
291
+ isolated child transcript Sessions. Inline and daemon Runtime services expose
292
+ `latestProviderCacheDiagnostic(filter?)`; root defaults and child
293
+ Session/Agent isolation share the same strict matching semantics. Existing
294
+ hash-only request-envelope, ephemeral-suffix, retry/fallback/repair, and
295
+ compaction diagnostics remain intact.
296
+ - Extended prompt-cache and context-budget diagnostics to the SA substrate used
297
+ by Runtime child Agents, including retries, non-streaming fallback, workflow
298
+ digest, structured-output repair, and compaction summary requests. Diagnostics
299
+ now hash the Provider-visible projection, endpoint query, ephemeral suffix,
300
+ and complete request envelope while reporting only Provider-supplied cache
301
+ usage. Child cache controls preserve explicit `true` and `false` end to end.
302
+ - Kept the default child leading System prefix stable while restoring the
303
+ documented full specialist System override and write-child project mutation
304
+ rules. Runtime Actor children retain recursive AMA collaboration semantics on
305
+ the direct Runner substrate; actorless and protocol-owned Workflow leaves
306
+ remain SA with collaboration tools and guidance hidden.
307
+ - Separated Runtime Actor mailbox routing and logical context identity from
308
+ each child's isolated transcript session so child-to-grandchild wait/output
309
+ delivery completes reliably, follow-up diagnostics keep stable identities,
310
+ and synthetic digest/repair calls cannot advance canonical history revisions.
311
+ - Enforced specialist tool ceilings across descendants, Actor provider ceilings
312
+ across final routing and fallback, and model-visible collaboration guidance
313
+ against the final tool table. Direct children no longer see an unbound
314
+ `run_workflow`; actorless Workflow leaves execute under their admitted Actor
315
+ capability snapshot and use collision-free Actor paths for diagnostics.
316
+ - Kept canonical context revisions aligned with core-owned compaction storage:
317
+ a post-commit observer failure is diagnosed but can no longer roll back an
318
+ already persisted history replacement.
319
+ - Added root/child diagnostic identity and filtering so child physical requests
320
+ remain observable without replacing the default root result returned by
321
+ `context.budget.get`; diagnostics remain fully fail-open and never expose
322
+ prompt text.
323
+ - Corrected the paid prompt-cache lifetime probe to send the canonical
324
+ `input_schema` tool field.
325
+ - Closed the Runtime interrupt finalization race in both managed and ordinary
326
+ coding runs. A terminal candidate now closes active-run input admission
327
+ atomically, drains every interrupt accepted before that boundary into the
328
+ same Run, reserves a continuation model turn even at the configured iteration
329
+ limit, and reopens admission only when another model turn is guaranteed.
330
+ A fixed internal continuation allowance now preserves an absolute Run bound
331
+ when a client keeps submitting input without exceeding an admitted manifest's
332
+ `maxIterations` governance cap.
333
+ Idle-yield waiting reopens admission, while failure, cancellation, and
334
+ terminal cleanup close it before asynchronous teardown. Ordinary coding also
335
+ rotates live-turn attribution for each queued prompt and commits a COMPLETE
336
+ assistant response before any accepted continuation input. REPL follow-ups
337
+ retain their existing fresh-round ownership.
338
+ - Deduplicated built-in default models across `/model` completion, provider
339
+ metadata, and SDK capability listings while preserving default-first order
340
+ and per-model capability overrides.
341
+ - Resolved provider-only Auto LLM admission before preflight by materializing
342
+ the provider's static default model when one is available; custom providers
343
+ without a resolvable default retain the existing actionable error.
344
+ - Stabilized Anthropic-compatible prompt-cache prefixes across managed role
345
+ turns, exported cache diagnostic events, and added a focused
346
+ `probe:prompt-cache` operator command. Marking the latest user turn seeds the
347
+ next request but can add cache-write overhead to isolated one-shot requests;
348
+ those callers can set `disablePromptCache:true` or
349
+ `KODAX_DISABLE_PROMPT_CACHE=1`.
350
+ - Removed the Session-specific scratch path from AMA's stable System prompt.
351
+ Repository, memory, routing, Session, and live Actor facts now travel in the
352
+ request-only tail after Provider cache breakpoints, so equivalent first
353
+ requests from fresh Sessions share the same System/tools/messages prefix and
354
+ emit an `ephemeralSuffixHash`. Qwen Anthropic-compatible usage continues to
355
+ count uncached input plus cache creation/read input as total input. OpenAI-
356
+ compatible Providers merge the suffix into the final wire user turn to avoid
357
+ rejected `user,user` adjacency; runtime-registered Providers that do not
358
+ declare native suffix support receive a request-only message fallback.
359
+ - Expanded the governed-memory prompt-safety gate for common override/reset
360
+ variants, role-mode claims, self-closing role tags, and sentence-shaped
361
+ credentials. Checks now run against Unicode-normalized,
362
+ formatting-separated, and formatting-joined text; ordinary credential status
363
+ statements remain usable, and persistence shares the same secret predicate;
364
+ prompt-cache diagnostics now document their existing `contextDiagnostics`
365
+ gate.
366
+ - Made abort completion emission exactly-once and kept governed memory
367
+ intervention delivery ordered with terminal cleanup.
334
368
 
335
- - **Remote Runtime subscription readiness.** Daemon event/workflow
336
- subscriptions now expose an awaitable `RuntimeSubscription.ready` handshake,
337
- so hosts can establish cross-client ordering before starting work whose first
338
- event must not be missed. Handshake failures remain observable to new callers
339
- without creating unhandled rejections in legacy callers that ignore `ready`.
340
-
341
- - **Detached daemon lifecycle cleanup.** CLI and SDK startup now retain the
342
- exact candidate process until its PID is healthy and reclaim only that process
343
- tree on early exit, timeout, identity mismatch, owner-race loss, or startup
344
- cancellation. Vitest-owned daemons also shut down when a forcibly terminated
345
- worker cannot run normal teardown; production daemons remain persistent after
346
- ordinary client detach and have no idle reaper. A source daemon child now
347
- carries only KodaX's production preload, explicit `tsx` support, and safe
348
- Node engine flags instead of inheriting arbitrary parent loaders, preventing
349
- test-runner hooks from parsing daemon CLI arguments.
369
+ ### Documentation
350
370
 
351
- - **Windows memory lifecycle lock contention.** Concurrent forget/archive
352
- operations now retry short-lived Windows sharing denials within the existing
353
- bounded lock deadline instead of failing immediately with `EPERM`; unrelated
354
- filesystem errors remain fail-fast.
371
+ - Updated the English/Chinese READMEs, current PRD/HLD/DD baselines, ADR
372
+ addendum, SDK embedder guide, feature and issue trackers, release guide,
373
+ package READMEs, and `kodax_manual` for the v0.7.77 candidate. Added focused
374
+ Issues 212–214 regression guides for terminal/schema/memory hardening,
375
+ compaction-safe managed context, and the Shell Execution Contract.
355
376
 
356
- - **MiniMax M3 default media regression.** The media capability suite now
357
- expects the current `minimax-coding` default, MiniMax M3, to support image
358
- input while retaining fail-closed checks for unverified nearby routes.
377
+ ### Verification
359
378
 
360
- - **Bare resume cancellation terminal release.** Pressing Esc in `kodax -r`
361
- now pauses and unreferences the picker-owned stdin path before the bootstrap
362
- exits, so Windows PowerShell regains its prompt immediately without requiring
363
- an extra keypress. The full CLI remains unloaded while listing sessions,
364
- successful selection hands input to the REPL, and replay retains each
365
- persisted event timestamp.
366
- - **Auto[LLM] approval reliability.** The default classifier budget is now 20
367
- seconds, pure readonly invocations bypass classification by invariant, and
368
- SDK/daemon session settings can select the classifier model and timeout without
369
- stale guardrail-cache reuse. Runtime advertises and requires
370
- `runtimeAutoModeGuardrail:1` for auto-started daemon clients, owns the Session
371
- guardrail ahead of the generic permission hook, persists LLM-to-rules
372
- fallback, and creates a shared pending request only for an explicit
373
- escalation. An older daemon is replaced only after a revision/owner-policy
374
- fenced preflight proves that active/queued work and pending interactions are
375
- absent; busy or unfenceable daemons return a typed recoverable error. The one
376
- conditional readonly exception, `semantic_lookup(refresh:true)`, remains
377
- classified because it rebuilds the on-disk derived index.
378
- - **Runtime permission boundary correctness.** Relative operands resolve from
379
- the validated execution directory while `gitRoot` remains a safety boundary;
380
- Windows containment is case-insensitive, deterministic direct/nested-shell
381
- writes to the user `.kodax` credential zone are Tier-0 denied, and quoted
382
- Python/regexp source is not treated as a path. Permission previews use a
383
- scan-bounded field whitelist, omit write/edit bodies, redact JSON/YAML/PEM
384
- and command-line credentials, and remain valid size-limited JSON with that
385
- directory. `exit_plan_mode` is absent without a real host approval bridge.
386
- - **0.7.x SDK source compatibility.** Deprecated `amaw` input is accepted and
387
- normalized to AMA without restoring retired behavior; formal `SkillSource`
388
- remains exhaustive while `ResolvedSkillSource` adds `learned`; daemon
389
- preflight normalizes canonical `activeAgentTurns` and deprecated
390
- `activeAgentTasks` to the same required array across old and current wire
391
- shapes.
392
- - **Queued follow-up responsiveness.** REPL, AMA, and SA now share the same
393
- Actor queue routing contract while SA retains its legacy unscoped queue. User
394
- input wakes `wait_agent` and idle-yield through lossless subscriptions and
395
- resumes at a safe turn boundary without canceling unrelated parallel tools.
396
- SDK media follow-ups accept an explicit `sessionId`, preserve old single-Actor
397
- calls through lifecycle-bound auto-routing, and reject ambiguous concurrent
398
- calls instead of crossing sessions.
379
+ - Added deterministic F274/F275 experiment-contract, pattern/trace,
380
+ Sidecar-alignment, prompt-safety, candidate-admission, intervention-ordering,
381
+ Runtime interrupt, structured-output, real auto-compaction, and
382
+ cross-platform Shell Execution Contract regressions. A dedicated Windows CI
383
+ job exercises pwsh, Windows PowerShell, cmd, Registry environment refresh,
384
+ and Git Bash behavior.
385
+ - Completed the owner-authorized frozen paid gate against clean commit
386
+ `25d5521e`: F274 revision `f274-v0.7.77.6` used 96 Layer 2 calls plus 40
387
+ Layer 3 calls, kept candidate simple tasks solo in 6/6 cells, produced zero
388
+ accidental Workflow activation, and received blinded `recommend-ship`
389
+ reviews; F275 revision `f275-v0.7.77.3` completed its 16-call pilot with B/C
390
+ compatibility preservation at 4/4 versus control 1/2 and exact-empty
391
+ selector output in all 4/4 selector calls (including 2/2 negative controls).
392
+ The joint decision is `SHIP`. F275 semantic selection remains experimental
393
+ and host opt-in, and the 144-call task-effect/default-on validation was
394
+ intentionally not run.
399
395
 
400
- ## [0.7.72-hotfix.0] - 2026-07-17
396
+ ## [0.7.76] - 2026-07-25
397
+
398
+ > Git tag and GitHub Release are published by the release workflow. npm
399
+ > publication remains the operator's final manual step.
400
+
401
+ ### Changed
402
+
403
+ - **Kimi Code defaults to the official K3 256K route.** The `kimi-code`
404
+ provider now defaults to `k3-256k` and sends that exact upstream model ID.
405
+ `kimi-for-coding` remains selectable for K2.7 Code, alongside
406
+ `kimi-for-coding-highspeed` and the 1M `k3` tier. K3 now exposes the
407
+ documented `low` / `high` / `max` reasoning levels with `high` as default;
408
+ media metadata marks `k3-256k` as image-capable but not video-capable, and
409
+ nominal subscription accounting reflects the 1M `k3` route's roughly 2x
410
+ quota consumption.
411
+
412
+ ### Verification
413
+
414
+ - Added direct live-wire smoke coverage for all four Kimi Code subscription
415
+ routes: `k3-256k`, `k3`, `kimi-for-coding`, and
416
+ `kimi-for-coding-highspeed`.
417
+
418
+ ## [0.7.75] - 2026-07-24
419
+
420
+ > The npm package was published manually. The `v0.7.75` Git tag and GitHub
421
+ > Release were skipped; the binary-release changes roll into `v0.7.76`.
422
+
423
+ ### Changed
424
+
425
+ - **Exact audited npm candidate bytes.** The release script now packs first,
426
+ audits the generated Sidecar prompt and budget bridge, and publishes that
427
+ exact tarball so SDK validation and registry publication cannot drift.
428
+ - **Windows GUI background-process hardening.** Runtime
429
+ Worker-reachable non-interactive child processes now request hidden Windows
430
+ consoles across memory/Git metadata, provider CLI and ACP, LSP, clipboard,
431
+ worktree, review, extension-command, checkpoint, and sandbox paths. Explicit
432
+ editor, terminal, and PTY interaction remains unchanged.
433
+ - **Published Runtime Worker audit and packaged-host regression.** The bundle
434
+ build now audits statically identifiable child-process calls in the published
435
+ Runtime Worker, and the packaged Electron daemon smoke runs 20 ordinary
436
+ queries with a Win32 console-visibility probe. Packaged KodaX Space validation
437
+ on Windows 10 and Windows 11 remains a non-blocking product follow-up; it does
438
+ not gate the tag, package build, or npm publication.
439
+
440
+ ### Fixed
441
+
442
+ - **Sidecar completion and Runtime terminal semantics.** Optional work offered
443
+ after the current request is complete is accepted rather than reported as
444
+ blocked; only clarification required to finish the current request remains
445
+ blocked. Budget-approval state is emitted only for an eligible `revise`, and
446
+ structured blocked codes and reasons survive live events, persistence,
447
+ daemon round trips, and restart recovery.
448
+
449
+ ### Documentation
450
+
451
+ - Updated the release guide, current architecture/design baselines, SDK
452
+ embedder guidance, feature index, roadmap, issue tracker, English/Chinese
453
+ READMEs, and the v0.7.75 regression guide for the SDK validation candidate.
454
+ - Rescheduled FEATURE_263 from v0.7.75 to v0.7.77 and then to v0.7.78; moved
455
+ FEATURE_274 from v0.7.76 to v0.7.77. v0.7.75 and v0.7.76 remain feature-free
456
+ stabilization releases.
457
+
458
+ ## [0.7.74] - 2026-07-23
459
+
460
+ > Git tag and GitHub Release are published by the release workflow. npm
461
+ > publication remains a separate manual operator step.
462
+
463
+ ### Added
464
+
465
+ - **Absolute automatic-compaction threshold (FEATURE_272).** SDK, Runtime
466
+ Session settings, daemon protocol, REPL, and KodaX Space now expose an
467
+ optional token threshold. Missing/zero is inactive; otherwise the smaller of
468
+ the absolute limit, bounded percentage policy, and physical provider capacity
469
+ triggers compaction. Percentage defaults to 75% and clamps to 15-90%, while
470
+ automatic large compaction remains always enabled.
471
+ - **Context-owned compaction telemetry and transcript paging.** Root and child
472
+ turns now carry stable `contextId`/revision ownership. The canonical
473
+ `context.compaction.finished` event reports committed before/after and
474
+ component metrics. Runtime observations use bounded transcript slices,
475
+ revision-bound pages, and lossless chunks for oversized entries; clients can
476
+ require `contextCompaction:3`, `transcriptPaging:1`, and
477
+ `transcriptSearch:1`.
478
+ - **Durable exact-history recovery.** The root host now persists and flushes
479
+ exact pre-compaction lineage before evicting raw bodies. Island sidecars are
480
+ committed before the slim main Session, stable entry IDs deduplicate overlap,
481
+ and failures preserve the last exact live or persisted copy. Root Agents gain
482
+ bounded `session_history_search` / `session_history_read`; SDK and daemon
483
+ clients gain revision-bound `sessions.transcriptSearch()`.
484
+ - **Runtime active-run interrupt input.** Embedded Runtime and the shared daemon
485
+ now advertise `interruptInput:1`. `runtime.runs.submitInput()` queues cloned,
486
+ ordered input for the current active Actor Run, delivers one FIFO batch as
487
+ separate user messages at the next safe Runner boundary, and exposes durable
488
+ queued/delivered lifecycle facts without creating a continuation Run or
489
+ leaking terminalized input into a later Run.
490
+
491
+ ### Changed
492
+
493
+ - **Mailbox-driven Agent coordination (FEATURE_273).** Model-visible
494
+ `wait_agent` now accepts only a bounded timeout and yields on the caller's
495
+ mailbox, root user input, interruption, or expiry. Progress remains available
496
+ through Actor snapshots, event replay, and SDK long-poll without waking and
497
+ resampling the parent model. The tool returns only a wake acknowledgement;
498
+ authenticated Agent messages and structured completion metadata enter the
499
+ transcript once at the next safe boundary. `list_agents` owns tree-state
500
+ inspection and `agent_output` owns targeted result reads.
501
+ - **Resident Goal lifecycle contracts.** `get_goal`, `create_goal`, and
502
+ `update_goal` keep their complete descriptions on both SA and managed AMA
503
+ paths. This removes an avoidable discovery round trip while preserving the
504
+ explicit-create and three-turn blocked-state rules. The remaining deferred
505
+ set stays at exactly 11 tools; schemas, handlers, permissions, Goal state, and
506
+ compaction-protected receipts are unchanged.
507
+
508
+ ### Fixed
509
+
510
+ - **Large compaction coverage and protected-tail basis.** Major compaction now
511
+ protects 20% of the effective trigger rather than 20% of the model maximum,
512
+ summarizes the complete eligible prefix in one transaction, and uses
513
+ map-once/reduce-once only for physical overflow. Exact main-request prefix
514
+ reuse preserves prompt/KV cache on both ordinary and managed-task paths while
515
+ explicitly excluding the protected raw tail from the summary.
516
+ - **User intent retention across repeated and degraded compaction.** Genuine
517
+ user queries are mechanically retained in a stable JSONL checkpoint ledger,
518
+ including text carried beside tool results. A query is represented exactly
519
+ once: raw while it remains in the protected tail, then in the ledger when its
520
+ prefix is compacted. The explicit emergency-pruning fallback installs query
521
+ recovery before removing old raw evidence.
522
+ - **SDK/UI accounting and daemon frame safety.** The legacy compact callback now
523
+ reports post-compact tokens on both execution paths, and automatic managed
524
+ compaction emits the same post-commit canonical event/report as the standard
525
+ agent path. Persisted anchors include admitted post-compact attachments.
526
+ Space ignores child context metrics for the root gauge/activity/cost display,
527
+ displays the last root transition, labels active model input separately from
528
+ complete visible history, and reads transcripts directly through bounded
529
+ page/chunk calls. The legacy full-transcript daemon method rejects responses
530
+ above 512 KiB instead of risking the 8 MiB frame.
531
+ - **Compacted-history loss and maintenance replay.** Full-lineage loads now
532
+ merge exact sidecar entries over slim placeholders, compaction writes use a
533
+ durable-before-evict boundary, child compaction cannot overwrite root
534
+ lineage, and maintenance preserves its append watermark instead of archiving
535
+ the same island entries again.
536
+ - **Agent completion delivery and resumed transcripts.** Unacknowledged root
537
+ completions persist an explicit pending-delivery set and are republished after
538
+ a hard restart; same-process Runtime reconstruction deduplicates the projected
539
+ queue by child turn ID, while acknowledged and legacy historical completions
540
+ are not replayed. Completion acknowledgement remains after authoritative
541
+ transcript persistence. Session restore also deduplicates and canonically
542
+ repositions tool groups by tool-use ID and binds repeated text to the latest
543
+ persisted suffix.
544
+ - **Deterministic reads, bounded tool attention, and compaction round exits.**
545
+ Auto Mode now handles complete risk-free static reads deterministically while
546
+ sensitive paths, credential stores, process environments, and named secret
547
+ variables require confirmation. Grep clips pathological lines and exposes
548
+ bounded offset continuation; one batch-admission owner separates physical
549
+ capacity from tool-attention spill. Current user-shaped and legacy compaction
550
+ checkpoints no longer cause a compacted query/final pair to be appended twice.
551
+ - **Release-review boundary fixes.** Emergency compaction fallback accounts for
552
+ system/tool overhead and response reserve before pruning and reports no
553
+ success for unchanged or still-oversized candidates. Runtime-backed REPL paths
554
+ use one Session writer, first-run headless compaction seeds Session metadata,
555
+ persistence failure rolls back tentative context revision, and history search
556
+ consistently excludes system/hidden/checkpoint/placeholder content. Auto
557
+ permission analysis samples the middle of long operation lists, POSIX paths
558
+ are not mistaken for Windows switches, and continuation errors identify
559
+ `runtime.runs.submitInput` accurately.
560
+ - **Release-candidate checkpoint and PowerShell boundary closure.** Session
561
+ lineage now consumes and re-renders the exact compaction checkpoint bytes,
562
+ including recovery guidance, so the compaction entry, first-kept pointer, and
563
+ post-compact attachments remain on the active path; legacy suffix-free
564
+ checkpoints still resume. Auto Mode treats bracket wildcards on PowerShell
565
+ path parameters as incomplete and escalates them, while exact `LiteralPath`
566
+ filenames containing brackets remain supported.
567
+ - **Reliable continue-most-recent selection.** `kodax -c`, classic/Ink startup,
568
+ one-shot CLI execution, and coding-runtime auto-resume now scan beyond the
569
+ legacy ten-session window, skip zero-message ACP/bootstrap placeholders, and
570
+ preserve an explicit session ID. Interactive resume restores the saved
571
+ workspace runtime together with messages, UI history, lineage, artifacts,
572
+ extensions, title, tag, and session identity before the next turn.
573
+ - **Deterministic Auto mode switching.** Entering Auto now displays the resolved
574
+ configured engine immediately instead of a transient bare `Auto`, and Runtime
575
+ setting writes are serialized per Session so rapid shortcut cycling is
576
+ last-action-wins. Persisted or automatic `Auto[RULES]` fallback remains sticky
577
+ by design and can be changed explicitly with `/auto-engine llm`.
578
+ - **Release-review debt closure.** Imperative manual compaction now reconciles
579
+ the exact flat Session history into lineage before creating the compaction
580
+ island. A failed durable interrupt-delivery event leaves the input queued,
581
+ rethrows the persistence error, and emits a bounded `runtime.warning` without
582
+ copying user input content into diagnostics.
583
+
584
+ ### Documentation
585
+
586
+ - Root and generated JSONC templates, both READMEs, architecture/design docs,
587
+ the SDK embedder guide, feature/issue trackers, release verification guide,
588
+ package READMEs, and `kodax_manual` now describe the complete v0.7.74
589
+ compaction, mailbox-wait, active-run input, Goal-tool, resume, Auto-switch,
590
+ and recovery contracts.
591
+
592
+ ## [0.7.73] - 2026-07-20
593
+
594
+ ### Added
595
+
596
+ - **Qwen Token Plan provider.** The new `qwen-token-plan` alias uses the
597
+ Anthropic-compatible Alibaba Cloud Token Plan endpoint and
598
+ `QWEN_TOKEN_API_KEY`. It defaults to `qwen3.8-max-preview`, exposes the
599
+ supported Qwen 3.7/3.6, GLM-5.2, and DeepSeek V4 Pro routes with one-million-
600
+ token context metadata, and declares verified reasoning, image-input, and
601
+ nominal subscription-cost capabilities without changing the existing `qwen`
602
+ provider.
603
+ - **First-run provider setup (FEATURE_271).** A bare interactive `kodax`
604
+ launch with no selected provider and no supported local credential now opens
605
+ a focused provider/model setup flow before Runtime, daemon, session, or REPL
606
+ startup. `kodax setup` reruns the same flow explicitly. It stores only
607
+ non-secret metadata, preserves unrelated config through a revision-checked
608
+ atomic write, refuses malformed existing custom providers and credential-
609
+ bearing endpoint URLs, and then names the required environment variable and
610
+ terminal restart steps.
611
+ - **Typed Auto Mode SDK contract (FEATURE_271).** The root and REPL SDK
612
+ entries now export one pure `resolveAutoModeSettings()` plus the authoritative
613
+ loader and related types; `loadConfig().autoMode` is declared, Runtime Session
614
+ settings persist `autoModeSpeculativeWindowMs` (including `0`), and side
615
+ queries return prompt-free provider/model/timing/retry/phase diagnostics.
616
+ - **Runtime-owned concrete permission grants.** Embedded and daemon SDK clients
617
+ can submit concrete `toolInput` and `executionCwd`, receive only opaque
618
+ Runtime-issued Session/persistent grant suggestions, and select a suggestion
619
+ without constructing or widening its hidden matcher. Exact command, known
620
+ file-tool path, and generic exact-call matchers remain revisioned and audited;
621
+ dynamic or dangerous shell calls never receive a persistent suggestion.
622
+
623
+ ### Fixed
624
+
625
+ - **Reasoning, Auto Mode, and confirmation regressions.** Native
626
+ disabled-thinking requests now send the provider's explicit disabled form
627
+ only for models that declare support (including verified Qwen Token Plan 3.7
628
+ routes); always-thinking variants retain their declared behavior. Sidecar
629
+ queries preserve a supported `none` effort, persisted Runtime Auto engines
630
+ are not overwritten by a fresh REPL, `/mode` synchronizes before reporting
631
+ success, and concurrent confirmation prompts are serialized instead of
632
+ replacing one another.
633
+ - **Legacy permission-grant upgrade safety.** Matcherless grants persisted by
634
+ older releases remain visible and revocable but can no longer authorize a
635
+ concrete tool call. The next invocation requires a fresh Runtime-issued
636
+ matcher, so old coarse Bash grants cannot bypass exact-command, dynamic-shell,
637
+ or absolute-deny protections.
638
+ - **Classifier credential boundary.** Auto[LLM] now redacts explicitly named
639
+ credential values inside shell-escaped JSON before sending an action to its
640
+ side provider, while retaining adjacent operational fields. Redaction is
641
+ documented as defense in depth; arbitrary Base64/hex values are not treated
642
+ as secrets without a credential signal.
643
+ - **Todo/Actor semantic progress checkpoint (FEATURE_270 follow-up).** Worker
644
+ guidance now treats Todo rows as user-visible milestones rather than Actor
645
+ instances and requires timely updates at milestone boundaries. Structured
646
+ terminal child results arm one deduplicated, warn-only reconciliation
647
+ reminder; transcript scans are append-incremental with safe compaction
648
+ fallback, and Sidecar accept-time residual reconciliation emits a diagnostic
649
+ without changing its existing bridge contract.
650
+ - **Auto LLM classifier timeout and missing-model escalation.** Runtime now
651
+ treats omitted Auto engine as the documented LLM default and still owns the
652
+ guardrail, while a missing/blank/malformed effective classifier model fails
653
+ as a typed recoverable Runtime error or a local block in the shared
654
+ `createAutoModeToolGuardrail` boundary. The final guardrail check runs before
655
+ provider lookup and cannot invoke `askUser`, record a circuit-breaker error,
656
+ or downgrade to rules. Classifier requests strip assistant prose/thinking,
657
+ cap normalized transcript/tool-result/action/prompt bytes, remove image
658
+ paths, and cap the structured response at 256 tokens. The 20-second deadline remains bounded:
659
+ a four-call `zai-coding/glm-5.2` probe completed representative Windows
660
+ permission verdicts in 1.9–2.8 seconds, while the matching production session
661
+ revealed a 1.625 MB tool result that had bypassed the existing sanitizer.
662
+ - **Auto guardrail daemon and tracing semantics.** Auto-started Runtime clients
663
+ now require `runtimeAutoModeGuardrail:3`. It retains v2's effective
664
+ timeout/window defaults, bounded classifier input, and diagnostics metadata,
665
+ and adds opaque concrete-grant semantics. Capability negotiation is monotonic
666
+ (v3 satisfies v2/v1); idle older daemons use the existing fenced upgrade path,
667
+ while busy daemons are left untouched with a recoverable error. Guardrail
668
+ spans now cover the awaited callback instead of timing only final verdict
669
+ emission.
670
+ - **Concurrent daemon startup publication race.** A cleanly exiting loser now
671
+ gives the elected owner a bounded publication grace period, preventing an
672
+ SDK starter from reporting failure during the short lock/state handoff gap.
673
+ - **Guardrail/permission execution parity.** Both Runner paths now commit each
674
+ guardrail rewrite before permission policy and execution, reject correlation-
675
+ id rewrites, propagate blocks as visible audited tool results, and preserve
676
+ embedded host policy hooks while rejecting non-transportable daemon hooks.
677
+ Calls rewritten into Bash retain serialized shell ordering.
678
+ - **Managed-run capacity and tool-dispatch accounting.** A complete system
679
+ prompt override no longer double-counts Skills, missing provider usage rebases
680
+ from the final request envelope, and authoritative provider usage remains
681
+ intact. Non-Bash tool calls keep parallel dispatch, Bash remains sequential,
682
+ and aggregate tool-result spill decisions use the complete batch budget.
683
+
684
+ ## [0.7.72] - 2026-07-19
685
+
686
+ ### Added
687
+
688
+ - **Learning Center and learned-capability Runtime control plane
689
+ (FEATURE_266).** KodaX now owns learned capability lifecycle, notification
690
+ cursors, lower-precedence learned Skill discovery, F224 proposal projection,
691
+ promotion/rollback actions, and inline/Worker/daemon SDK parity through one
692
+ agent-layer service. `/learn`, status summaries, and the Ink learning segment
693
+ expose the same durable state without creating a second runtime engine.
694
+ - **Unified adaptive Actor/Turn control plane (FEATURE_270).** AMA collaboration
695
+ now uses one Runtime-owned actor tree and scheduler across native, recursive,
696
+ Workflow-owned, constructed, and external Agent work. The canonical
697
+ `spawn_agent`, `send_message`, `followup_task`, `wait_agent`,
698
+ `interrupt_agent`, `list_agents`, and `agent_output` surface supports reusable
699
+ Actor identities, durable Turn history, direct-parent completion, recursive
700
+ delegation, shared capacity, and SDK/daemon recovery. A manifest-first,
701
+ fail-closed behavioral eval driver freezes the released/current production
702
+ prompt and tool bytes, call graphs, budgets, raw evidence, and blind review
703
+ mapping before any separately authorized provider call.
704
+
705
+ ### Changed
706
+
707
+ - **Current coding-eval aliases and MiniMax default model.** Newly authored or
708
+ revised evals now route Zhipu through `zhipu/glm52` (`glm-5.2`) and MiniMax
709
+ through `mmx/m3` (`MiniMax-M3`). `minimax-coding` now defaults to M3 while
710
+ the old `zhipu/glm51` and `mmx/m27` aliases remain explicitly selectable for
711
+ historical replay; existing raw evidence and reports keep their original
712
+ route labels.
713
+ - **AMA and Workflow orchestration cutover.** AMAW and the old model-visible
714
+ child-task vocabulary are retired. Persisted `amaw`/`ama-workflow` settings
715
+ migrate once to AMA, while new inputs fail with a migration hint. Workflow
716
+ remains available for explicit natural-language, command, named-pattern, and
717
+ SDK requests, but its child Agents now use the unified Actor scheduler and
718
+ task complexity alone no longer activates Workflow.
719
+
720
+ ### Fixed
721
+
722
+ - **Remote Runtime subscription readiness.** Daemon event/workflow
723
+ subscriptions now expose an awaitable `RuntimeSubscription.ready` handshake,
724
+ so hosts can establish cross-client ordering before starting work whose first
725
+ event must not be missed. Handshake failures remain observable to new callers
726
+ without creating unhandled rejections in legacy callers that ignore `ready`.
727
+
728
+ - **Detached daemon lifecycle cleanup.** CLI and SDK startup now retain the
729
+ exact candidate process until its PID is healthy and reclaim only that process
730
+ tree on early exit, timeout, identity mismatch, owner-race loss, or startup
731
+ cancellation. Vitest-owned daemons also shut down when a forcibly terminated
732
+ worker cannot run normal teardown; production daemons remain persistent after
733
+ ordinary client detach and have no idle reaper. A source daemon child now
734
+ carries only KodaX's production preload, explicit `tsx` support, and safe
735
+ Node engine flags instead of inheriting arbitrary parent loaders, preventing
736
+ test-runner hooks from parsing daemon CLI arguments.
737
+
738
+ - **Windows memory lifecycle lock contention.** Concurrent forget/archive
739
+ operations now retry short-lived Windows sharing denials within the existing
740
+ bounded lock deadline instead of failing immediately with `EPERM`; unrelated
741
+ filesystem errors remain fail-fast.
742
+
743
+ - **MiniMax M3 default media regression.** The media capability suite now
744
+ expects the current `minimax-coding` default, MiniMax M3, to support image
745
+ input while retaining fail-closed checks for unverified nearby routes.
746
+
747
+ - **Bare resume cancellation terminal release.** Pressing Esc in `kodax -r`
748
+ now pauses and unreferences the picker-owned stdin path before the bootstrap
749
+ exits, so Windows PowerShell regains its prompt immediately without requiring
750
+ an extra keypress. The full CLI remains unloaded while listing sessions,
751
+ successful selection hands input to the REPL, and replay retains each
752
+ persisted event timestamp.
753
+ - **Auto[LLM] approval reliability.** The default classifier budget is now 20
754
+ seconds, pure readonly invocations bypass classification by invariant, and
755
+ SDK/daemon session settings can select the classifier model and timeout without
756
+ stale guardrail-cache reuse. Runtime advertises and requires
757
+ `runtimeAutoModeGuardrail:1` for auto-started daemon clients, owns the Session
758
+ guardrail ahead of the generic permission hook, persists LLM-to-rules
759
+ fallback, and creates a shared pending request only for an explicit
760
+ escalation. An older daemon is replaced only after a revision/owner-policy
761
+ fenced preflight proves that active/queued work and pending interactions are
762
+ absent; busy or unfenceable daemons return a typed recoverable error. The one
763
+ conditional readonly exception, `semantic_lookup(refresh:true)`, remains
764
+ classified because it rebuilds the on-disk derived index.
765
+ - **Runtime permission boundary correctness.** Relative operands resolve from
766
+ the validated execution directory while `gitRoot` remains a safety boundary;
767
+ Windows containment is case-insensitive, deterministic direct/nested-shell
768
+ writes to the user `.kodax` credential zone are Tier-0 denied, and quoted
769
+ Python/regexp source is not treated as a path. Permission previews use a
770
+ scan-bounded field whitelist, omit write/edit bodies, redact JSON/YAML/PEM
771
+ and command-line credentials, and remain valid size-limited JSON with that
772
+ directory. `exit_plan_mode` is absent without a real host approval bridge.
773
+ - **0.7.x SDK source compatibility.** Deprecated `amaw` input is accepted and
774
+ normalized to AMA without restoring retired behavior; formal `SkillSource`
775
+ remains exhaustive while `ResolvedSkillSource` adds `learned`; daemon
776
+ preflight normalizes canonical `activeAgentTurns` and deprecated
777
+ `activeAgentTasks` to the same required array across old and current wire
778
+ shapes.
779
+ - **Queued follow-up responsiveness.** REPL, AMA, and SA now share the same
780
+ Actor queue routing contract while SA retains its legacy unscoped queue. User
781
+ input wakes `wait_agent` and idle-yield through lossless subscriptions and
782
+ resumes at a safe turn boundary without canceling unrelated parallel tools.
783
+ SDK media follow-ups accept an explicit `sessionId`, preserve old single-Actor
784
+ calls through lifecycle-bound auto-routing, and reject ambiguous concurrent
785
+ calls instead of crossing sessions.
786
+
787
+ ## [0.7.72-hotfix.0] - 2026-07-17
401
788
 
402
789
  ### Fixed
403
790
 
@@ -3017,7 +3404,7 @@ repl → coding, skills
3017
3404
  ### Tests
3018
3405
  - Added / expanded tests for `task-engine`, `reasoning`, `tool-display`, `live-streaming`, `StatusBar`, `invocation-runtime`, `types-legacy`, and `InkREPL.interrupted`
3019
3406
 
3020
- <!-- last-sync: a8c9c283 -->
3407
+ <!-- last-sync: dfce6cd5 -->
3021
3408
 
3022
3409
  ### Added
3023
3410
  - **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++)