@kodax-ai/kodax 0.7.72 → 0.7.74

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 (91) hide show
  1. package/CHANGELOG.md +226 -0
  2. package/README.md +72 -18
  3. package/README_CN.md +55 -14
  4. package/config-templates/config.example.jsonc +7 -0
  5. package/dist/chunks/agent-2ABIG5NW.js +2 -0
  6. package/dist/chunks/argument-completer-C45DEO34.js +2 -0
  7. package/dist/chunks/chunk-5GH3SVI3.js +74 -0
  8. package/dist/chunks/{chunk-SQODXBLX.js → chunk-64M5HOCA.js} +1 -1
  9. package/dist/chunks/{chunk-PKQOEDHJ.js → chunk-7W6KYJU2.js} +224 -230
  10. package/dist/chunks/chunk-C7TZAT3S.js +369 -0
  11. package/dist/chunks/chunk-F7AIEHSS.js +46 -0
  12. package/dist/chunks/{chunk-E27LHEIP.js → chunk-GAFFYJU3.js} +1 -1
  13. package/dist/chunks/chunk-KPGVY6PF.js +321 -0
  14. package/dist/chunks/{chunk-44QXPEEE.js → chunk-MBAPT2R5.js} +1 -1
  15. package/dist/chunks/{chunk-IR5KIK7E.js → chunk-MVCAFD6M.js} +1 -1
  16. package/dist/chunks/chunk-PP53SIIL.js +5 -0
  17. package/dist/chunks/chunk-QH56WEHK.js +2 -0
  18. package/dist/chunks/chunk-UJS7JAO6.js +770 -0
  19. package/dist/chunks/{chunk-MVARIMQV.js → chunk-VK5QTHS6.js} +6 -6
  20. package/dist/chunks/chunk-VPURXE2F.js +427 -0
  21. package/dist/chunks/chunk-XM724XAA.js +329 -0
  22. package/dist/chunks/{chunk-WIBLZK4G.js → chunk-XMP66YWG.js} +11 -4
  23. package/dist/chunks/chunk-XXQLPTAN.js +78 -0
  24. package/dist/chunks/compaction-config-QYCDOW3Q.js +2 -0
  25. package/dist/chunks/{construction-bootstrap-ZJPXUPXQ.js → construction-bootstrap-BKNPJI7O.js} +1 -1
  26. package/dist/chunks/dist-6EK4H7TP.js +2 -0
  27. package/dist/chunks/{dist-GOUP4YVE.js → dist-EVEJAII2.js} +1 -1
  28. package/dist/chunks/host-KS4TJKWQ.js +2 -0
  29. package/dist/chunks/run-manager-L7MKGQNX.js +2 -0
  30. package/dist/chunks/{utils-OTT5CG5J.js → utils-GTJLL4GT.js} +1 -1
  31. package/dist/index.d.ts +17 -16
  32. package/dist/index.js +5 -5
  33. package/dist/kodax_cli.js +1357 -1294
  34. package/dist/provider-capabilities.json +184 -5
  35. package/dist/runtime-worker.js +1277 -1224
  36. package/dist/sdk-a2a.d.ts +11 -10
  37. package/dist/sdk-a2a.js +1 -1
  38. package/dist/sdk-agent.d.ts +110 -62
  39. package/dist/sdk-agent.js +1 -1
  40. package/dist/sdk-coding.d.ts +114 -32
  41. package/dist/sdk-coding.js +1 -1
  42. package/dist/sdk-experimental-memory.d.ts +1 -1
  43. package/dist/sdk-experimental-memory.js +1 -1
  44. package/dist/sdk-llm.d.ts +8 -49
  45. package/dist/sdk-llm.js +1 -1
  46. package/dist/sdk-mcp.js +1 -1
  47. package/dist/sdk-media.d.ts +1 -1
  48. package/dist/sdk-media.js +1 -1
  49. package/dist/sdk-repl.d.ts +153 -24
  50. package/dist/sdk-repl.js +2 -2
  51. package/dist/sdk-runtime.d.ts +238 -19
  52. package/dist/sdk-runtime.js +1 -1
  53. package/dist/sdk-session.d.ts +6 -6
  54. package/dist/sdk-session.js +1 -1
  55. package/dist/sdk-skills.js +1 -1
  56. package/dist/semantic-worker.js +16 -14
  57. package/dist/types-chunks/{base.d-Cz_rwpOi.d.ts → base.d-ChvpaKjZ.d.ts} +1 -1
  58. package/dist/types-chunks/{bash-prefix-extractor.d-CHJO5y94.d.ts → bash-prefix-extractor.d-r1beOESM.d.ts} +50 -14
  59. package/dist/types-chunks/{capability-learning.d-_lR0J4iR.d.ts → capability-learning.d-DPrYxRjF.d.ts} +1 -1
  60. package/dist/types-chunks/{capsule.d-DxtdE-GD.d.ts → capsule.d-zeqV4IQX.d.ts} +11 -3
  61. package/dist/types-chunks/{commands.d-DZxHzH5-.d.ts → commands.d-DUxnK2TU.d.ts} +67 -8
  62. package/dist/types-chunks/{guardrail.d-DlpMnd-Y.d.ts → guardrail.d-CWYD1bdL.d.ts} +2 -1
  63. package/dist/types-chunks/{guardrail.d-auV61_h5.d.ts → guardrail.d-qjuKJZ31.d.ts} +79 -18
  64. package/dist/types-chunks/history-retrieval.d-BKTJIrVd.d.ts +57 -0
  65. package/dist/types-chunks/{public-api.d--IDNJsu1.d.ts → public-api.d-CX4B11qY.d.ts} +19 -5
  66. package/dist/types-chunks/{run-manager.d-Bh50OdVl.d.ts → run-manager.d-B9fEIjZk.d.ts} +1 -1
  67. package/dist/types-chunks/{sdk-session-Cfw6NFu-.d.ts → sdk-session-B0fhAOPa.d.ts} +3 -3
  68. package/dist/types-chunks/{resolver.d-ssgNSlrh.d.ts → side-query.d-DWTMsndP.d.ts} +68 -5
  69. package/dist/types-chunks/{types.d-EqQmHztg.d.ts → types.d-Bm_y6YuM.d.ts} +16 -9
  70. package/dist/types-chunks/{types.d-Cqaw71Ax.d.ts → types.d-CSmF0t0n.d.ts} +6 -5
  71. package/dist/types-chunks/{types.d-CNZgY52F.d.ts → types.d-DEctY20M.d.ts} +10 -3
  72. package/dist/types-chunks/{types.d-DH1mvdcl.d.ts → types.d-sRLugmjy.d.ts} +64 -15
  73. package/dist/types-chunks/{utils.d-gmn3c5U4.d.ts → utils.d-D0wPxz8y.d.ts} +94 -10
  74. package/docs/SDK_EMBEDDER_GUIDE.md +1952 -1573
  75. package/package.json +9 -2
  76. package/dist/chunks/agent-YKGU4USA.js +0 -2
  77. package/dist/chunks/argument-completer-QZETLNAB.js +0 -2
  78. package/dist/chunks/chunk-23X6REO4.js +0 -46
  79. package/dist/chunks/chunk-2RI252RN.js +0 -2
  80. package/dist/chunks/chunk-CLFP6UGU.js +0 -71
  81. package/dist/chunks/chunk-EDZ5KJFT.js +0 -5
  82. package/dist/chunks/chunk-GIK4SGAT.js +0 -364
  83. package/dist/chunks/chunk-GVWPHE23.js +0 -310
  84. package/dist/chunks/chunk-JSDLBXME.js +0 -755
  85. package/dist/chunks/chunk-VDGCGOQH.js +0 -328
  86. package/dist/chunks/chunk-VVE3UM4F.js +0 -410
  87. package/dist/chunks/chunk-ZJIMT5I3.js +0 -78
  88. package/dist/chunks/compaction-config-TWCDFLX6.js +0 -2
  89. package/dist/chunks/dist-JT4ATXVM.js +0 -2
  90. package/dist/chunks/host-SVEDZUC5.js +0 -2
  91. package/dist/chunks/run-manager-RX42UNEM.js +0 -2
package/CHANGELOG.md CHANGED
@@ -6,6 +6,232 @@ All notable changes to this project will be documented in this file.
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.7.74] - 2026-07-23
10
+
11
+ > Git tag and GitHub Release are published by the release workflow. npm
12
+ > publication remains a separate manual operator step.
13
+
14
+ ### Added
15
+
16
+ - **Absolute automatic-compaction threshold (FEATURE_272).** SDK, Runtime
17
+ Session settings, daemon protocol, REPL, and KodaX Space now expose an
18
+ optional token threshold. Missing/zero is inactive; otherwise the smaller of
19
+ the absolute limit, bounded percentage policy, and physical provider capacity
20
+ triggers compaction. Percentage defaults to 75% and clamps to 15-90%, while
21
+ automatic large compaction remains always enabled.
22
+ - **Context-owned compaction telemetry and transcript paging.** Root and child
23
+ turns now carry stable `contextId`/revision ownership. The canonical
24
+ `context.compaction.finished` event reports committed before/after and
25
+ component metrics. Runtime observations use bounded transcript slices,
26
+ revision-bound pages, and lossless chunks for oversized entries; clients can
27
+ require `contextCompaction:3`, `transcriptPaging:1`, and
28
+ `transcriptSearch:1`.
29
+ - **Durable exact-history recovery.** The root host now persists and flushes
30
+ exact pre-compaction lineage before evicting raw bodies. Island sidecars are
31
+ committed before the slim main Session, stable entry IDs deduplicate overlap,
32
+ and failures preserve the last exact live or persisted copy. Root Agents gain
33
+ bounded `session_history_search` / `session_history_read`; SDK and daemon
34
+ clients gain revision-bound `sessions.transcriptSearch()`.
35
+ - **Runtime active-run interrupt input.** Embedded Runtime and the shared daemon
36
+ now advertise `interruptInput:1`. `runtime.runs.submitInput()` queues cloned,
37
+ ordered input for the current active Actor Run, delivers one FIFO batch as
38
+ separate user messages at the next safe Runner boundary, and exposes durable
39
+ queued/delivered lifecycle facts without creating a continuation Run or
40
+ leaking terminalized input into a later Run.
41
+
42
+ ### Changed
43
+
44
+ - **Mailbox-driven Agent coordination (FEATURE_273).** Model-visible
45
+ `wait_agent` now accepts only a bounded timeout and yields on the caller's
46
+ mailbox, root user input, interruption, or expiry. Progress remains available
47
+ through Actor snapshots, event replay, and SDK long-poll without waking and
48
+ resampling the parent model. The tool returns only a wake acknowledgement;
49
+ authenticated Agent messages and structured completion metadata enter the
50
+ transcript once at the next safe boundary. `list_agents` owns tree-state
51
+ inspection and `agent_output` owns targeted result reads.
52
+ - **Resident Goal lifecycle contracts.** `get_goal`, `create_goal`, and
53
+ `update_goal` keep their complete descriptions on both SA and managed AMA
54
+ paths. This removes an avoidable discovery round trip while preserving the
55
+ explicit-create and three-turn blocked-state rules. The remaining deferred
56
+ set stays at exactly 11 tools; schemas, handlers, permissions, Goal state, and
57
+ compaction-protected receipts are unchanged.
58
+
59
+ ### Fixed
60
+
61
+ - **Large compaction coverage and protected-tail basis.** Major compaction now
62
+ protects 20% of the effective trigger rather than 20% of the model maximum,
63
+ summarizes the complete eligible prefix in one transaction, and uses
64
+ map-once/reduce-once only for physical overflow. Exact main-request prefix
65
+ reuse preserves prompt/KV cache on both ordinary and managed-task paths while
66
+ explicitly excluding the protected raw tail from the summary.
67
+ - **User intent retention across repeated and degraded compaction.** Genuine
68
+ user queries are mechanically retained in a stable JSONL checkpoint ledger,
69
+ including text carried beside tool results. A query is represented exactly
70
+ once: raw while it remains in the protected tail, then in the ledger when its
71
+ prefix is compacted. The explicit emergency-pruning fallback installs query
72
+ recovery before removing old raw evidence.
73
+ - **SDK/UI accounting and daemon frame safety.** The legacy compact callback now
74
+ reports post-compact tokens on both execution paths, and automatic managed
75
+ compaction emits the same post-commit canonical event/report as the standard
76
+ agent path. Persisted anchors include admitted post-compact attachments.
77
+ Space ignores child context metrics for the root gauge/activity/cost display,
78
+ displays the last root transition, labels active model input separately from
79
+ complete visible history, and reads transcripts directly through bounded
80
+ page/chunk calls. The legacy full-transcript daemon method rejects responses
81
+ above 512 KiB instead of risking the 8 MiB frame.
82
+ - **Compacted-history loss and maintenance replay.** Full-lineage loads now
83
+ merge exact sidecar entries over slim placeholders, compaction writes use a
84
+ durable-before-evict boundary, child compaction cannot overwrite root
85
+ lineage, and maintenance preserves its append watermark instead of archiving
86
+ the same island entries again.
87
+ - **Agent completion delivery and resumed transcripts.** Unacknowledged root
88
+ completions persist an explicit pending-delivery set and are republished after
89
+ a hard restart; same-process Runtime reconstruction deduplicates the projected
90
+ queue by child turn ID, while acknowledged and legacy historical completions
91
+ are not replayed. Completion acknowledgement remains after authoritative
92
+ transcript persistence. Session restore also deduplicates and canonically
93
+ repositions tool groups by tool-use ID and binds repeated text to the latest
94
+ persisted suffix.
95
+ - **Deterministic reads, bounded tool attention, and compaction round exits.**
96
+ Auto Mode now handles complete risk-free static reads deterministically while
97
+ sensitive paths, credential stores, process environments, and named secret
98
+ variables require confirmation. Grep clips pathological lines and exposes
99
+ bounded offset continuation; one batch-admission owner separates physical
100
+ capacity from tool-attention spill. Current user-shaped and legacy compaction
101
+ checkpoints no longer cause a compacted query/final pair to be appended twice.
102
+ - **Release-review boundary fixes.** Emergency compaction fallback accounts for
103
+ system/tool overhead and response reserve before pruning and reports no
104
+ success for unchanged or still-oversized candidates. Runtime-backed REPL paths
105
+ use one Session writer, first-run headless compaction seeds Session metadata,
106
+ persistence failure rolls back tentative context revision, and history search
107
+ consistently excludes system/hidden/checkpoint/placeholder content. Auto
108
+ permission analysis samples the middle of long operation lists, POSIX paths
109
+ are not mistaken for Windows switches, and continuation errors identify
110
+ `runtime.runs.submitInput` accurately.
111
+ - **Release-candidate checkpoint and PowerShell boundary closure.** Session
112
+ lineage now consumes and re-renders the exact compaction checkpoint bytes,
113
+ including recovery guidance, so the compaction entry, first-kept pointer, and
114
+ post-compact attachments remain on the active path; legacy suffix-free
115
+ checkpoints still resume. Auto Mode treats bracket wildcards on PowerShell
116
+ path parameters as incomplete and escalates them, while exact `LiteralPath`
117
+ filenames containing brackets remain supported.
118
+ - **Reliable continue-most-recent selection.** `kodax -c`, classic/Ink startup,
119
+ one-shot CLI execution, and coding-runtime auto-resume now scan beyond the
120
+ legacy ten-session window, skip zero-message ACP/bootstrap placeholders, and
121
+ preserve an explicit session ID. Interactive resume restores the saved
122
+ workspace runtime together with messages, UI history, lineage, artifacts,
123
+ extensions, title, tag, and session identity before the next turn.
124
+ - **Deterministic Auto mode switching.** Entering Auto now displays the resolved
125
+ configured engine immediately instead of a transient bare `Auto`, and Runtime
126
+ setting writes are serialized per Session so rapid shortcut cycling is
127
+ last-action-wins. Persisted or automatic `Auto[RULES]` fallback remains sticky
128
+ by design and can be changed explicitly with `/auto-engine llm`.
129
+ - **Release-review debt closure.** Imperative manual compaction now reconciles
130
+ the exact flat Session history into lineage before creating the compaction
131
+ island. A failed durable interrupt-delivery event leaves the input queued,
132
+ rethrows the persistence error, and emits a bounded `runtime.warning` without
133
+ copying user input content into diagnostics.
134
+
135
+ ### Documentation
136
+
137
+ - Root and generated JSONC templates, both READMEs, architecture/design docs,
138
+ the SDK embedder guide, feature/issue trackers, release verification guide,
139
+ package READMEs, and `kodax_manual` now describe the complete v0.7.74
140
+ compaction, mailbox-wait, active-run input, Goal-tool, resume, Auto-switch,
141
+ and recovery contracts.
142
+
143
+ ## [0.7.73] - 2026-07-20
144
+
145
+ ### Added
146
+
147
+ - **Qwen Token Plan provider.** The new `qwen-token-plan` alias uses the
148
+ Anthropic-compatible Alibaba Cloud Token Plan endpoint and
149
+ `QWEN_TOKEN_API_KEY`. It defaults to `qwen3.8-max-preview`, exposes the
150
+ supported Qwen 3.7/3.6, GLM-5.2, and DeepSeek V4 Pro routes with one-million-
151
+ token context metadata, and declares verified reasoning, image-input, and
152
+ nominal subscription-cost capabilities without changing the existing `qwen`
153
+ provider.
154
+ - **First-run provider setup (FEATURE_271).** A bare interactive `kodax`
155
+ launch with no selected provider and no supported local credential now opens
156
+ a focused provider/model setup flow before Runtime, daemon, session, or REPL
157
+ startup. `kodax setup` reruns the same flow explicitly. It stores only
158
+ non-secret metadata, preserves unrelated config through a revision-checked
159
+ atomic write, refuses malformed existing custom providers and credential-
160
+ bearing endpoint URLs, and then names the required environment variable and
161
+ terminal restart steps.
162
+ - **Typed Auto Mode SDK contract (FEATURE_271).** The root and REPL SDK
163
+ entries now export one pure `resolveAutoModeSettings()` plus the authoritative
164
+ loader and related types; `loadConfig().autoMode` is declared, Runtime Session
165
+ settings persist `autoModeSpeculativeWindowMs` (including `0`), and side
166
+ queries return prompt-free provider/model/timing/retry/phase diagnostics.
167
+ - **Runtime-owned concrete permission grants.** Embedded and daemon SDK clients
168
+ can submit concrete `toolInput` and `executionCwd`, receive only opaque
169
+ Runtime-issued Session/persistent grant suggestions, and select a suggestion
170
+ without constructing or widening its hidden matcher. Exact command, known
171
+ file-tool path, and generic exact-call matchers remain revisioned and audited;
172
+ dynamic or dangerous shell calls never receive a persistent suggestion.
173
+
174
+ ### Fixed
175
+
176
+ - **Reasoning, Auto Mode, and confirmation regressions.** Native
177
+ disabled-thinking requests now send the provider's explicit disabled form
178
+ only for models that declare support (including verified Qwen Token Plan 3.7
179
+ routes); always-thinking variants retain their declared behavior. Sidecar
180
+ queries preserve a supported `none` effort, persisted Runtime Auto engines
181
+ are not overwritten by a fresh REPL, `/mode` synchronizes before reporting
182
+ success, and concurrent confirmation prompts are serialized instead of
183
+ replacing one another.
184
+ - **Legacy permission-grant upgrade safety.** Matcherless grants persisted by
185
+ older releases remain visible and revocable but can no longer authorize a
186
+ concrete tool call. The next invocation requires a fresh Runtime-issued
187
+ matcher, so old coarse Bash grants cannot bypass exact-command, dynamic-shell,
188
+ or absolute-deny protections.
189
+ - **Classifier credential boundary.** Auto[LLM] now redacts explicitly named
190
+ credential values inside shell-escaped JSON before sending an action to its
191
+ side provider, while retaining adjacent operational fields. Redaction is
192
+ documented as defense in depth; arbitrary Base64/hex values are not treated
193
+ as secrets without a credential signal.
194
+ - **Todo/Actor semantic progress checkpoint (FEATURE_270 follow-up).** Worker
195
+ guidance now treats Todo rows as user-visible milestones rather than Actor
196
+ instances and requires timely updates at milestone boundaries. Structured
197
+ terminal child results arm one deduplicated, warn-only reconciliation
198
+ reminder; transcript scans are append-incremental with safe compaction
199
+ fallback, and Sidecar accept-time residual reconciliation emits a diagnostic
200
+ without changing its existing bridge contract.
201
+ - **Auto LLM classifier timeout and missing-model escalation.** Runtime now
202
+ treats omitted Auto engine as the documented LLM default and still owns the
203
+ guardrail, while a missing/blank/malformed effective classifier model fails
204
+ as a typed recoverable Runtime error or a local block in the shared
205
+ `createAutoModeToolGuardrail` boundary. The final guardrail check runs before
206
+ provider lookup and cannot invoke `askUser`, record a circuit-breaker error,
207
+ or downgrade to rules. Classifier requests strip assistant prose/thinking,
208
+ cap normalized transcript/tool-result/action/prompt bytes, remove image
209
+ paths, and cap the structured response at 256 tokens. The 20-second deadline remains bounded:
210
+ a four-call `zai-coding/glm-5.2` probe completed representative Windows
211
+ permission verdicts in 1.9–2.8 seconds, while the matching production session
212
+ revealed a 1.625 MB tool result that had bypassed the existing sanitizer.
213
+ - **Auto guardrail daemon and tracing semantics.** Auto-started Runtime clients
214
+ now require `runtimeAutoModeGuardrail:3`. It retains v2's effective
215
+ timeout/window defaults, bounded classifier input, and diagnostics metadata,
216
+ and adds opaque concrete-grant semantics. Capability negotiation is monotonic
217
+ (v3 satisfies v2/v1); idle older daemons use the existing fenced upgrade path,
218
+ while busy daemons are left untouched with a recoverable error. Guardrail
219
+ spans now cover the awaited callback instead of timing only final verdict
220
+ emission.
221
+ - **Concurrent daemon startup publication race.** A cleanly exiting loser now
222
+ gives the elected owner a bounded publication grace period, preventing an
223
+ SDK starter from reporting failure during the short lock/state handoff gap.
224
+ - **Guardrail/permission execution parity.** Both Runner paths now commit each
225
+ guardrail rewrite before permission policy and execution, reject correlation-
226
+ id rewrites, propagate blocks as visible audited tool results, and preserve
227
+ embedded host policy hooks while rejecting non-transportable daemon hooks.
228
+ Calls rewritten into Bash retain serialized shell ordering.
229
+ - **Managed-run capacity and tool-dispatch accounting.** A complete system
230
+ prompt override no longer double-counts Skills, missing provider usage rebases
231
+ from the final request envelope, and authoritative provider usage remains
232
+ intact. Non-Bash tool calls keep parallel dispatch, Bash remains sequential,
233
+ and aggregate tool-result spill decisions use the complete batch budget.
234
+
9
235
  ## [0.7.72] - 2026-07-19
10
236
 
11
237
  ### Added
package/README.md CHANGED
@@ -17,7 +17,7 @@
17
17
  <a href="LICENSE"><img alt="license" src="https://img.shields.io/badge/license-KAI--FCL_1.0-orange?style=flat-square"></a>
18
18
  <a href="https://github.com/icetomoyo/KodaX/stargazers"><img alt="GitHub stars" src="https://img.shields.io/github/stars/icetomoyo/KodaX?style=flat-square&logo=github&color=f1c40f"></a>
19
19
  <a href="https://github.com/icetomoyo/KodaX/actions"><img alt="CI" src="https://img.shields.io/github/actions/workflow/status/icetomoyo/KodaX/release.yml?style=flat-square&label=release"></a>
20
- <img alt="providers" src="https://img.shields.io/badge/LLMs-15_aliases_+_custom-2ecc71?style=flat-square">
20
+ <img alt="providers" src="https://img.shields.io/badge/LLMs-16_aliases_+_custom-2ecc71?style=flat-square">
21
21
  </p>
22
22
 
23
23
  <p align="center">
@@ -44,12 +44,18 @@ npm i -g @kodax-ai/kodax
44
44
  # Pick any one you have an API key for:
45
45
  export ZHIPU_API_KEY=... # or ANTHROPIC_API_KEY / OPENAI_API_KEY / KIMI_API_KEY /
46
46
  # MINIMAX_API_KEY / MIMO_API_KEY / ARK_API_KEY / QWEN_API_KEY /
47
+ # QWEN_TOKEN_API_KEY /
47
48
  # DEEPSEEK_API_KEY / GEMINI_API_KEY
48
49
 
49
50
  kodax
50
51
  ```
51
52
 
52
- That's it. You're in the REPL — ask anything in natural language.
53
+ That's it. You're in the REPL — ask anything in natural language. If this is a
54
+ new machine with no provider selection or supported API-key environment
55
+ variable, the bare `kodax` launch opens a metadata-only setup flow first. It
56
+ never asks for the key itself; after choosing a provider/model, set the named
57
+ environment variable, restart the terminal, and run `kodax` again. Use
58
+ `kodax setup` to rerun that flow explicitly.
53
59
 
54
60
  > **No-Node target machines:** download a Bun-compiled single binary for Windows / macOS / Linux × x64 + arm64 from the [GitHub Releases](https://github.com/icetomoyo/KodaX/releases) page. See [docs/release.md](docs/release.md) for the build pipeline.
55
61
 
@@ -141,6 +147,14 @@ npm link
141
147
 
142
148
  KodaX reads API keys from environment variables. For built-in providers, the fastest path is:
143
149
 
150
+ ```bash
151
+ # Interactive metadata-only provider/model setup (does not collect a key)
152
+ kodax setup
153
+ ```
154
+
155
+ The command tells you the exact environment-variable name to set and exits so
156
+ you can restart the terminal. You can also configure it directly:
157
+
144
158
  ```bash
145
159
  # macOS / Linux
146
160
  export ZHIPU_API_KEY=your_api_key
@@ -149,6 +163,14 @@ export ZHIPU_API_KEY=your_api_key
149
163
  $env:ZHIPU_API_KEY="your_api_key"
150
164
  ```
151
165
 
166
+ For Qwen Token Plan, select `qwen-token-plan` and use its separate credential;
167
+ `QWEN_API_KEY` does not authenticate this route:
168
+
169
+ ```bash
170
+ export QWEN_TOKEN_API_KEY=your_api_key
171
+ kodax --provider qwen-token-plan
172
+ ```
173
+
152
174
  For CLI defaults, create `~/.kodax/config.json`:
153
175
 
154
176
  ```json
@@ -386,12 +408,16 @@ context diagnostics, and daemon protocol schemas, see
386
408
  The Space/IDE shared-daemon contract is documented in
387
409
  [SDK Embedder Guide section 23](docs/SDK_EMBEDDER_GUIDE.md#23-shared-coder-daemon-for-space-and-ide-hosts-feature_269-v0769).
388
410
 
389
- **v0.7.72 Runtime correction:** Auto Mode is now owned by the Runtime session,
411
+ **v0.7.72–v0.7.73 Runtime permission contract:** Auto Mode is owned by the Runtime session,
390
412
  not by a UI hook. It reuses its LLM/rules guardrail across turns, classifies
391
413
  before the shared permission bridge, and persists an automatic fallback to
392
414
  rules. The same session settings can select a classifier model and bounded
393
- timeout. Host plan exit is exposed only when the host supplies an approval
394
- callback. See the [Runtime Auto Mode integration guide](docs/SDK_EMBEDDER_GUIDE.md#24-runtime-owned-auto-mode-and-plan-approval-bridges-v072).
415
+ timeout; `auto` defaults to LLM classification and fails with a recoverable
416
+ configuration error when no effective classifier model exists, rather than
417
+ silently falling back. Runtime permission prompts now offer opaque, exact
418
+ allow-once/session/persistent grant suggestions; persistent grants are
419
+ daemon-owned and revisioned. Host plan exit is exposed only when the host
420
+ supplies an approval callback. See the [Runtime Auto Mode integration guide](docs/SDK_EMBEDDER_GUIDE.md#24-runtime-owned-auto-mode-and-plan-approval-bridges-v0772v0773).
395
421
 
396
422
  ## Repo Intelligence
397
423
 
@@ -411,7 +437,7 @@ KodaX uses a **monorepo architecture** with npm workspaces. Source layout curren
411
437
  ```
412
438
  KodaX/
413
439
  ├── packages/ # 4 workspace packages (FEATURE_194 v0.7.43)
414
- │ ├── llm/ # @kodax-ai/llm - LLM abstraction (15 built-in provider aliases)
440
+ │ ├── llm/ # @kodax-ai/llm - LLM abstraction (16 built-in provider aliases)
415
441
  │ │ └── providers/ # Anthropic, OpenAI, DeepSeek, Kimi, MiMo, MiniMax, Zhipu, Ark, …
416
442
  │ │
417
443
  │ ├── agent/ # @kodax-ai/agent - Generic Agent framework
@@ -459,7 +485,7 @@ KodaX/
459
485
  ┌──────────────┐ ┌──────────────────────────┐ ┌──────────────┐
460
486
  │@kodax-ai/ │ │@kodax-ai/agent │ │@kodax-ai/llm │
461
487
  │coding (via │ │Runner + fan-out + │ │LLM Abstract │
462
- │above) │ │idle-yield + session- │ │(15 aliases) │
488
+ │above) │ │idle-yield + session- │ │(16 aliases) │
463
489
  │ │ │lineage + skills + mcp + │ │ │
464
490
  │ │ │tracing (FEATURE_194) │ │ │
465
491
  └──────────────┘ └──────────────────────────┘ └──────────────┘
@@ -471,7 +497,7 @@ Source-side workspace package names (`@kodax-ai/*`). npm consumers install the s
471
497
 
472
498
  | Workspace package | Purpose | Key Dependencies |
473
499
  |---------|---------|------------------|
474
- | `@kodax-ai/llm` | LLM abstraction (15 built-in provider aliases + custom registration) | @anthropic-ai/sdk, openai |
500
+ | `@kodax-ai/llm` | LLM abstraction (16 built-in provider aliases + custom registration) | @anthropic-ai/sdk, openai |
475
501
  | `@kodax-ai/agent` | Generic Agent framework — Runner, fan-out, idle-yield, media/input artifacts, session-lineage, capabilities (mcp + skills), tracing (ADR-036 v0.7.43 consolidation; subpaths: `/media`, `/session-lineage`, `/capabilities/mcp`, `/capabilities/skills`, `/tracing`) | @kodax-ai/llm, js-tiktoken, fflate, jimp, yaml |
476
502
  | `@kodax-ai/coding` | Coding Agent — 50+ tools (incl. canonical Actor collaboration tools) + role prompts + auto-continue + repo-intelligence protocol | @kodax-ai/llm, @kodax-ai/agent |
477
503
  | `@kodax-ai/repl` | Complete interactive terminal UI (Ink/React, permission modes, commands, streaming) | @kodax-ai/coding, ink, react |
@@ -487,7 +513,7 @@ KodaX has two layers that consumers should understand separately:
487
513
 
488
514
  | Source package | npm subpath | Type | What you get | Example consumer |
489
515
  |---|---|---|---|---|
490
- | `packages/llm` | `@kodax-ai/kodax/llm` | Full package | 15-alias LLM abstraction (108 exports) | Standalone LLM clients |
516
+ | `packages/llm` | `@kodax-ai/kodax/llm` | Full package | 16-alias LLM abstraction (108 exports) | Standalone LLM clients |
491
517
  | `packages/agent` | `@kodax-ai/kodax/agent` | Full package | Runner / fan-out / external-agent plane / session-lineage / capabilities / tracing (331 exports) | Custom agent frameworks |
492
518
  | `packages/agent` | `@kodax-ai/kodax/skills` | **Narrow subset** | Skills system only — `SkillRegistry` / `loadFullSkill` / `expandSkillForLLM` / ... (26 exports = pre-v0.7.43 `@kodax-ai/skills` complete API) | Skill loaders, IDE plugins |
493
519
  | `packages/agent` | `@kodax-ai/kodax/mcp` | **Narrow subset** | MCP only — `McpCapabilityProvider` / `createMcpTransport` / `searchMcpCatalog` / ... (23 exports) | MCP server hosts |
@@ -511,9 +537,15 @@ KodaX has two layers that consumers should understand separately:
511
537
 
512
538
  **Historical Workflow Activation Tiers (FEATURE_248 + FEATURE_249, v0.7.59; superseded by F270 in v0.7.72)**: v0.7.59 introduced AMAW and explicit-request AMA behavior. F270 retires AMAW and its complexity-driven directive. SA remains solo; AMA is the single adaptive multi-Agent mode and activates Workflow only from explicit Workflow intent. See [docs/features/v0.7.59.md](docs/features/v0.7.59.md) and [docs/features/v0.7.72.md](docs/features/v0.7.72.md).
513
539
 
514
- **Progressive Disclosure on the Managed Tool Path (FEATURE_250, v0.7.60; F270 mode update in v0.7.72)**: the deferred-tool progressive-disclosure mechanism applies to the managed AMA path. Cache-cold managed turns carry one-line search hints instead of full descriptions for the 13 non-mcp deferred tools (repo-intelligence + web/code + goal); each tool's `input_schema` is unchanged, so it stays directly callable and the full description is fetched on demand via `tool_search`. `mcp_*` stay resident and `run_workflow` is untouched. F270 retires the former AMAW mode without changing this disclosure behavior. See [docs/features/v0.7.60.md](docs/features/v0.7.60.md).
540
+ **Progressive Disclosure on the Managed Tool Path (FEATURE_250, v0.7.60; current policy corrected in v0.7.74)**: the deferred-tool mechanism applies to the managed AMA path as well as SA. The current deferred set contains exactly 11 tools: six repo-intelligence tools, four web/code discovery tools, and `run_workflow`. Their `input_schema` remains directly callable while `tool_search` provides the full description on demand. The five fixed `mcp_*` facades and the `get_goal` / `create_goal` / `update_goal` lifecycle tools stay resident with their complete contracts. The v0.7.74 goal correction adds only about 109 estimated schema tokens versus the former hints (`get_goal` is actually 12 tokens smaller when resident), removes a discovery round trip, and changes no tool schema, handler, permission, goal state, or compaction-protection behavior. See [docs/features/v0.7.60.md](docs/features/v0.7.60.md) and [docs/features/v0.7.74.md](docs/features/v0.7.74.md#feature_250-v0774-correction-resident-goal-lifecycle-tools).
541
+
542
+ **Context-Efficient Tool Results + Workflow Quality Preflight (FEATURE_251 + FEATURE_252, v0.7.61; corrected 2026-07-14)**: local tools collect complete output and apply only contract-equivalent normalization that is strictly shorter; command-specific lossy Bash filters are off by default, and compound Bash uses no semantic adapter. One owner evaluates the complete parallel-result batch against the final provider request: it solves the largest final input `Pmax` for which `Pmax + output reserve + max(2048, 3% of Pmax) <= context window`, then admits only the remaining physical capacity. Results stay verbatim whenever they fit; only real overflow persists the complete value and emits `KODAX_RESULT_INCOMPLETE`. History keeps the same physical-capacity safety rule: no default lossy microcompaction below capacity, summary-first at pressure, and typed failure without silent deletion when a recoverable request cannot be formed. FEATURE_272 supersedes FEATURE_251 only for the default major-compaction trigger. FEATURE_252's deterministic pre-start workflow contract lint is unchanged. See [docs/features/v0.7.61.md](docs/features/v0.7.61.md) and [docs/ADR.md ADR-050](docs/ADR.md).
515
543
 
516
- **Context-Efficient Tool Results + Workflow Quality Preflight (FEATURE_251 + FEATURE_252, v0.7.61; corrected 2026-07-14)**: local tools collect complete output and apply only contract-equivalent normalization that is strictly shorter; command-specific lossy Bash filters are off by default, and compound Bash uses no semantic adapter. One owner evaluates the complete parallel-result batch against the final provider request: it solves the largest final input `Pmax` for which `Pmax + output reserve + max(2048, 3% of Pmax) <= context window`, then admits only the remaining physical capacity. Results stay verbatim whenever they fit; only real overflow persists the complete value and emits `KODAX_RESULT_INCOMPLETE`. History follows the same physical-capacity rule: no default lossy microcompaction below capacity, summary-first at actual pressure, and typed failure without silent message deletion when a recoverable request cannot be formed. Static early percentages are explicit opt-ins. FEATURE_252's deterministic pre-start workflow contract lint is unchanged. See [docs/features/v0.7.61.md](docs/features/v0.7.61.md) and [docs/ADR.md ADR-050](docs/ADR.md).
544
+ **Reliable Always-On Context Compaction (FEATURE_272, v0.7.74)**: automatic major compaction cannot be disabled. Its percentage trigger defaults to 75% and clamps to 15-90%; optional `triggerTokens` is inactive when omitted/zero, otherwise the smaller percentage, absolute, and physical-capacity threshold wins. The protected raw tail is 20% of that effective trigger. One transaction summarizes the complete eligible prefix, preserves every genuine user request through an exact ledger, and emits success only after a physically valid token reduction and awaited durable commit. Before raw bodies are evicted, the Session owner durably flushes their exact lineage; stable entry IDs merge the sidecar and slim Session without duplicates. Root and persistent child Agents can recover omitted user/assistant/tool details through bounded `session_history_search` `session_history_read`, with children isolated to hidden worker Sessions and never granted root-history access. SDK/Runtime clients use revision-bound `transcriptSearch`, pages, and lossless chunks. Hidden reasoning, system instructions, and synthetic checkpoints are excluded from model search. See [the feature design](docs/features/v0.7.74.md), [SDK guide §25](docs/SDK_EMBEDDER_GUIDE.md#25-always-on-context-compaction-and-bounded-transcript-recovery-v0774), and [ADR-057](docs/ADR.md#adr-057-large-compaction-is-an-always-on-context-scoped-full-coverage-transaction).
545
+
546
+ **Mailbox-Driven Agent Coordination (FEATURE_273, v0.7.74)**: `wait_agent` is now a true model-facing mailbox yield with one bounded `timeout_ms`, not an Actor progress/event reader. It wakes for scoped Agent messages or completions, root user input, interruption, or timeout; progress remains available to UI/SDK snapshot, replay, and long-poll consumers without resampling the parent model. The tool returns only a wake acknowledgement, while authenticated Agent evidence and structured task metadata enter the next safe model boundary once. Unacknowledged root completions survive a hard restart, same-process Runtime rebuilds deduplicate by child turn ID, and acknowledged or legacy historical completions are not replayed. Use `list_agents` for tree state and `agent_output` for a targeted known result. See [the feature design](docs/features/v0.7.74.md#feature_273-mailbox-driven-agent-wait-and-telemetrycontrol-separation), [SDK guide §26](docs/SDK_EMBEDDER_GUIDE.md#26-agent-mailbox-control-versus-sdk-event-telemetry-v0774), and [ADR-058](docs/ADR.md#adr-058-model-agent-wait-is-mailbox-control-not-event-telemetry).
547
+
548
+ **Active-Run Interrupt Input (v0.7.74)**: embedded Runtime and the shared daemon advertise `interruptInput:1`. `runtime.runs.submitInput()` queues an immutable, ordered input for the current active Actor Run; all inputs admitted before one safe Runner boundary are delivered FIFO as separate user messages in the next LLM request, without creating continuation Runs. Queued/delivered state is visible in typed Run snapshots/events, delivery is acknowledged against the exact consumed IDs, and terminal cleanup prevents undelivered input from leaking into later Runs.
517
549
 
518
550
  **External Agent SDK Plane (FEATURE_258, v0.7.67)**: `/agent` exports the protocol-neutral executor, registration, policy, credential-broker, artifact-policy, catalog, and durable task contracts. `/runtime` exposes the installed plane through `admin.agentRegistrations`, `agents`, and `agentTasks`, with the same DTO service methods over embedded and daemon clients. Executor factories are host functions: install them in an inline owner or while creating a new in-process daemon owner; they cannot be injected through an existing daemon connection or across a Runtime Worker boundary. Plane shutdown is terminal: pending waits and all later service calls reject. Restricted Workflow scripts preserve validated `phase` and external `target` routing. See the [complete owner/consumer recipes and safety contract](docs/SDK_EMBEDDER_GUIDE.md#18-external-agent-executor-plane-feature_258-v0767).
519
551
 
@@ -626,7 +658,7 @@ one-time provisioning).
626
658
  ## Features
627
659
 
628
660
  - **Modular Architecture** - Use as CLI, as a library, or as a Node-free single binary
629
- - **15 Built-in Provider Aliases** - Anthropic, OpenAI, DeepSeek, Kimi, Kimi Code, Qwen, Zhipu, Zhipu Coding, Zai Coding, MiniMax Coding, MiMo Coding, MiMo, Ark Coding, Gemini CLI, Codex CLI - plus user-defined OpenAI/Anthropic-compatible providers
661
+ - **16 Built-in Provider Aliases** - Anthropic, OpenAI, DeepSeek, Kimi, Kimi Code, Qwen, Qwen Token Plan, Zhipu, Zhipu Coding, Zai Coding, MiniMax Coding, MiMo Coding, MiMo, Ark Coding, Gemini CLI, Codex CLI - plus user-defined OpenAI/Anthropic-compatible providers
630
662
  - **Dynamic Workflows + SDK Process Surface** - Generate/reuse capability-routed workflows, observe live progress through `WorkflowProcessSnapshot`, and control workflow lifecycle from SDK hosts without parsing REPL output
631
663
  - **V2 Worker single-loop + Sidecar Verifier (default)** - Single-agent main loop with an out-of-band Sidecar Verifier as Stop-hook (claudecode-shape; FEATURE_184 v0.7.42, ADR-030). Verifier returns accept/revise/blocked verdict on Worker text-only termination. The pre-v0.7.43 V1 chain is retired, `emit_handoff` is deleted, accept-verdict UI silently passes through, and content-aware gating skips trivial-chat sidecar calls. Adaptive child steering uses the canonical Actor collaboration tools with idle-yield waiting; specialist routing uses `spawn_agent(agent_id=...)`.
632
664
  - **Reasoning Effort** - Effort-first control (`off/auto/low/medium/high` plus model-supported extras) across providers
@@ -728,7 +760,7 @@ For smaller surface and tree-shake-friendly imports, the SDK is also exposed via
728
760
 
729
761
  ```typescript
730
762
  import { Runner } from '@kodax-ai/kodax/agent'; // agent runtime
731
- import { getProvider } from '@kodax-ai/kodax/llm'; // LLM abstraction (15 aliases)
763
+ import { getProvider } from '@kodax-ai/kodax/llm'; // LLM abstraction (16 aliases)
732
764
  import { runKodaX } from '@kodax-ai/kodax/coding'; // coding tools + prompts
733
765
  import { createImageArtifactFromPath } from '@kodax-ai/kodax/media'; // input artifacts
734
766
  import { SkillRegistry } from '@kodax-ai/kodax/skills'; // zero-dep skill loader
@@ -855,7 +887,7 @@ kodax --session todo-app "Write tests"
855
887
  kodax Start the interactive REPL
856
888
  -h, --help [topic] Show help or topic help
857
889
  -p, --print <text> Run a single task and exit
858
- -c, --continue Continue the most recent conversation in this directory
890
+ -c, --continue Continue the most recent non-empty conversation in this directory
859
891
  -r, --resume [value] Resume by ID/exact title, or open the searchable picker
860
892
  -m, --provider Provider to use
861
893
  --model <name> Override the model
@@ -896,6 +928,22 @@ KodaX provides 3 permission modes for fine-grained control:
896
928
  - Auto Mode runs guardrail classification before the permission UI; a safe
897
929
  allow verdict does not create a pending approval request. The session records
898
930
  an automatic LLM-to-rules fallback for later turns.
931
+ - Shift-Tab cycles `Plan -> Edits -> Auto`; Shift+Enter inserts a newline. Auto
932
+ immediately displays `Auto[LLM]` or `Auto[RULES]`, and rapid mode changes are
933
+ persisted in input order. `Auto[RULES]` is a valid sticky fallback/manual
934
+ state; use `/auto-engine llm` to opt back into LLM classification.
935
+ - Runtime-backed prompts can offer exact `allow once`, `allow this session`,
936
+ and `always allow` choices. Return the Runtime-issued opaque suggestion;
937
+ never derive or widen a permission rule from the displayed command or path.
938
+ Persistent grants are daemon-owned, revisioned, and can be listed/revoked
939
+ through `runtime.permissions` by an authorized SDK host. Dynamic shell
940
+ commands deliberately receive no persistent-grant suggestion.
941
+
942
+ `kodax -c` skips zero-message ACP/bootstrap placeholders even when they are
943
+ newer than the last real conversation. The same newest non-empty rule applies
944
+ to Ink, classic, one-shot CLI, and coding-runtime auto-resume; an explicit
945
+ session ID always wins. Interactive resume also restores the saved workspace
946
+ runtime before relative shell commands or the next model turn.
899
947
 
900
948
  ### CLI Help Topics
901
949
 
@@ -1059,7 +1107,7 @@ npm install @kodax-ai/kodax
1059
1107
  ```typescript
1060
1108
  import { runKodaX } from '@kodax-ai/kodax'; // root: CLI helpers + runKodaX
1061
1109
  import { Runner, runFanOut } from '@kodax-ai/kodax/agent'; // generic Agent framework
1062
- import { getProvider } from '@kodax-ai/kodax/llm'; // 15-alias LLM abstraction
1110
+ import { getProvider } from '@kodax-ai/kodax/llm'; // 16-alias LLM abstraction
1063
1111
  import { KODAX_TOOLS } from '@kodax-ai/kodax/coding'; // tools + prompts + agent loop
1064
1112
  import { createImageArtifactFromPath } from '@kodax-ai/kodax/media'; // input artifact helpers
1065
1113
  import { runInkInteractiveMode } from '@kodax-ai/kodax/repl'; // Ink TUI entrypoint
@@ -1075,7 +1123,7 @@ import { createMemoryAgent } from '@kodax-ai/kodax/experimental-memory'; // opt-
1075
1123
 
1076
1124
  ### `@kodax-ai/kodax/llm` — LLM Abstraction
1077
1125
 
1078
- 15 built-in provider aliases (Anthropic, OpenAI, DeepSeek, Kimi, Kimi-Code, Qwen, Zhipu, Zhipu-Coding, Zai-Coding, MiniMax-Coding, MiMo, MiMo-Coding, Ark-Coding, Gemini-CLI, Codex-CLI) + custom provider registration.
1126
+ 16 built-in provider aliases (Anthropic, OpenAI, DeepSeek, Kimi, Kimi-Code, Qwen, Qwen-Token-Plan, Zhipu, Zhipu-Coding, Zai-Coding, MiniMax-Coding, MiMo, MiMo-Coding, Ark-Coding, Gemini-CLI, Codex-CLI) + custom provider registration.
1079
1127
 
1080
1128
  ```typescript
1081
1129
  import { getProvider, KodaXBaseProvider } from '@kodax-ai/kodax/llm';
@@ -1124,6 +1172,10 @@ const tree = actors.list('/root');
1124
1172
  const policy = new DefaultSummaryCompaction({ thresholdRatio: 0.8, keepRecent: 10 });
1125
1173
  ```
1126
1174
 
1175
+ `DefaultSummaryCompaction` is a standalone agent-layer primitive for custom
1176
+ loops. It does not replace or disable KodaX's always-on coding-runtime policy
1177
+ described under FEATURE_272 above.
1178
+
1127
1179
  **Key Features**: `Runner` + per-step lifecycle · `runFanOut` (bounded-concurrency + abort + progress events) · `runWithIdleYield` (chat-while-waiting) · `AgentActorController` / `AgentTurnScheduler` · session-id generation · tiktoken-based token estimation · `CompactionPolicy` interface.
1128
1180
 
1129
1181
  ### `@kodax-ai/kodax/skills` — Skills System
@@ -1213,7 +1265,7 @@ await runInkInteractiveMode({ provider: 'zhipu-coding', effort: 'auto' });
1213
1265
 
1214
1266
  | Use Case | Subpath | Why |
1215
1267
  |----------|---------|-----|
1216
- | Only need LLM abstraction | `@kodax-ai/kodax/llm` | Minimal deps; 15 built-in aliases |
1268
+ | Only need LLM abstraction | `@kodax-ai/kodax/llm` | Minimal deps; 16 built-in aliases |
1217
1269
  | Building custom agent | `@kodax-ai/kodax/agent` | Runner + fan-out + idle-yield + session-lineage + capabilities |
1218
1270
  | Coding tasks | `@kodax-ai/kodax/coding` | Complete coding agent + tools |
1219
1271
  | Terminal app | `@kodax-ai/kodax/repl` | Full interactive experience |
@@ -1229,6 +1281,7 @@ await runInkInteractiveMode({ provider: 'zhipu-coding', effort: 'auto' });
1229
1281
  | kimi | `KIMI_API_KEY` | Native | kimi-k2.7-code (262,144-token context; `kimi-k2.7-code-highspeed` / `kimi-k2.6` / `kimi-k2.5` via `/model`) |
1230
1282
  | kimi-code | `KIMI_CODE_API_KEY` | Native | kimi-for-coding (`k3-256k` for Moderato / `k3` 1M for Allegretto+ / `kimi-for-coding-highspeed` via `/model`; both K3 choices use upstream `k3`) |
1231
1283
  | qwen | `QWEN_API_KEY` | Native | qwen3.5-plus |
1284
+ | qwen-token-plan | `QWEN_TOKEN_API_KEY` | Native | qwen3.8-max-preview (Anthropic-compat; `qwen3.7-max` / `qwen3.7-plus` / `qwen3.6-flash` / `glm-5.2` / `deepseek-v4-pro` via `/model`; all 1M context; image input on Qwen 3.8 / 3.7 Plus / 3.6 Flash) |
1232
1285
  | zhipu | `ZHIPU_API_KEY` | Native | glm-5 (`glm-5.2` 1M ctx / `glm-5.1` / `glm-5-turbo` via `/model`) |
1233
1286
  | zhipu-coding | `ZHIPU_CODING_API_KEY` | Native | glm-5.2 (1M ctx; legacy `glm-5.1` and `glm-5-turbo` remain selectable via `/model`) |
1234
1287
  | zai-coding | `ZAI_CODING_API_KEY` | Native | glm-5.2 (Zhipu Coding Plan overseas mirror via `api.z.ai`, Anthropic-compat — same model lineup as `zhipu-coding`, served from outside CN) |
@@ -1322,7 +1375,7 @@ KodaX ships 50+ built-in tools, grouped below. They are registered as a single f
1322
1375
  | `spawn_agent` | Create a named child Actor and start its first Turn under inherited capabilities, session capacity, and root work budget. |
1323
1376
  | `send_message` | Commit bounded information to an Actor mailbox without starting a new Turn. |
1324
1377
  | `followup_task` | Join a running Actor at a safe boundary or atomically start a new Turn for an idle Actor. |
1325
- | `wait_agent` | Wait for one or more Actor state changes without polling a second task registry. |
1378
+ | `wait_agent` | Yield on scoped mailbox/user/interruption/timeout activity; returns a wake acknowledgement and never uses Actor progress as a model wake source. |
1326
1379
  | `interrupt_agent` | Request interruption of an active Turn while preserving Actor identity. |
1327
1380
  | `list_agents` | Inspect the caller-visible Actor subtree and Turn states. |
1328
1381
  | `agent_output` | Read bounded durable output for an authorized Actor/Turn. |
@@ -1465,6 +1518,7 @@ KodaX uses an **English-first** comment style with selective Chinese brief notes
1465
1518
  ## Documentation
1466
1519
 
1467
1520
  - [README_CN.md](README_CN.md) - Chinese Documentation
1521
+ - [docs/SDK_EMBEDDER_GUIDE.md](docs/SDK_EMBEDDER_GUIDE.md) - SDK hosting, shared Runtime daemon, Auto Mode, v0.7.74 compaction/history recovery, Agent telemetry, and active-run input contracts
1468
1522
  - [docs/release.md](docs/release.md) - Standalone binary build & release pipeline
1469
1523
  - [docs/PRD.md](docs/PRD.md) - Product Requirements
1470
1524
  - [docs/ADR.md](docs/ADR.md) - Architecture Decisions