@kodax-ai/kodax 0.7.77 → 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.
- package/CHANGELOG.md +176 -4
- package/README.md +200 -64
- package/README_CN.md +153 -49
- package/config-templates/config.example.jsonc +114 -32
- package/dist/chunks/agent-ASP4MS3X.js +2 -0
- package/dist/chunks/argument-completer-JYQ7FX3W.js +2 -0
- package/dist/chunks/{chunk-XSA37BVM.js → chunk-2CFHBKRE.js} +1 -1
- package/dist/chunks/chunk-35PPHOQ2.js +292 -0
- package/dist/chunks/chunk-43QNNDHR.js +29 -0
- package/dist/chunks/chunk-5BNQXXGY.js +1 -0
- package/dist/chunks/chunk-5GO6FH7L.js +458 -0
- package/dist/chunks/{chunk-FSXI4MAV.js → chunk-5NDCSFOP.js} +14 -14
- package/dist/chunks/{chunk-3DD4QEBH.js → chunk-6FOJVETH.js} +10 -10
- package/dist/chunks/chunk-6XM4B6K2.js +48 -0
- package/dist/chunks/chunk-6YZUE6NC.js +240 -0
- package/dist/chunks/{chunk-HORNWBYR.js → chunk-7OEBJGHK.js} +1 -1
- package/dist/chunks/{chunk-OAMKECRG.js → chunk-KQLQYHWU.js} +205 -200
- package/dist/chunks/{chunk-IQT4RPCE.js → chunk-NXO6GWSY.js} +2 -2
- package/dist/chunks/chunk-T2XZTLYE.js +316 -0
- package/dist/chunks/chunk-TQDBTTIM.js +348 -0
- package/dist/chunks/{chunk-FNW2XUL5.js → chunk-UID7BLAB.js} +1 -1
- package/dist/chunks/chunk-VAT2QYXM.js +765 -0
- package/dist/chunks/chunk-YAZQTC2L.js +5 -0
- package/dist/chunks/chunk-YVRYHC4C.js +655 -0
- package/dist/chunks/{chunk-EH7AOMJ7.js → chunk-Z3KFRTSB.js} +1 -1
- package/dist/chunks/compaction-config-BQSSIWK5.js +2 -0
- package/dist/chunks/{construction-bootstrap-RPRL3L7R.js → construction-bootstrap-VQLQGWPY.js} +1 -1
- package/dist/chunks/{dist-FDSOIR35.js → dist-BFT5YIGU.js} +1 -1
- package/dist/chunks/dist-PCFE24YP.js +2 -0
- package/dist/chunks/host-UTFXCYYM.js +2 -0
- package/dist/chunks/run-manager-PJU3WIFJ.js +2 -0
- package/dist/chunks/utils-SID4HW2Q.js +2 -0
- package/dist/index.d.ts +18 -17
- package/dist/index.js +6 -6
- package/dist/kodax_cli.js +1751 -1352
- package/dist/kodax_resume.js +17 -17
- package/dist/runtime-worker.js +1680 -1299
- package/dist/sandbox-workspace-session.js +563 -0
- package/dist/sdk-a2a.d.ts +16 -16
- package/dist/sdk-a2a.js +8 -8
- package/dist/sdk-agent.d.ts +275 -60
- package/dist/sdk-agent.js +1 -1
- package/dist/sdk-coding.d.ts +33 -165
- package/dist/sdk-coding.js +1 -1
- package/dist/sdk-experimental-memory.d.ts +2 -2
- package/dist/sdk-experimental-memory.js +1 -1
- package/dist/sdk-llm.d.ts +2 -1
- package/dist/sdk-llm.js +1 -1
- package/dist/sdk-mcp.js +1 -1
- package/dist/sdk-media.js +1 -1
- package/dist/sdk-repl.d.ts +67 -25
- package/dist/sdk-repl.js +2 -2
- package/dist/sdk-runtime.d.ts +194 -147
- package/dist/sdk-runtime.js +1 -1
- package/dist/sdk-sandbox.d.ts +93 -0
- package/dist/sdk-sandbox.js +2 -0
- package/dist/sdk-session.d.ts +6 -7
- package/dist/sdk-session.js +1 -1
- package/dist/sdk-skills.d.ts +2 -2
- package/dist/sdk-skills.js +1 -1
- package/dist/semantic-worker.js +15 -15
- package/dist/types-chunks/{bash-prefix-extractor.d-pZdu6qt7.d.ts → bash-prefix-extractor.d-uAe2Oqda.d.ts} +126 -8
- package/dist/types-chunks/{capsule.d-CxCm1KZz.d.ts → capsule.d-BlSv9l3V.d.ts} +1 -1
- package/dist/types-chunks/{guardrail.d-CJx9RRd3.d.ts → guardrail.d-BRE_ErEj.d.ts} +1 -1
- package/dist/types-chunks/{guardrail.d-B0PwAZVR.d.ts → guardrail.d-CXDYRgZ3.d.ts} +200 -34
- package/dist/types-chunks/{history-retrieval.d-B__aEN62.d.ts → history-retrieval.d-DtCy7x64.d.ts} +1 -1
- package/dist/types-chunks/{integration-config.d-ojG4swOP.d.ts → integration-config.d-BNowXE8k.d.ts} +23 -8
- package/dist/types-chunks/{public-api.d--fF88JrC.d.ts → public-api.d-B3AohsxN.d.ts} +36 -7
- package/dist/types-chunks/{commands.d-BccESAMV.d.ts → repl.d-Ie_ZXb_U.d.ts} +89 -78
- package/dist/types-chunks/{side-query.d-5JvXhuOZ.d.ts → resolver.d-iAQ9ocLB.d.ts} +3 -66
- package/dist/types-chunks/{run-manager.d-B47hIqnI.d.ts → run-manager.d-D1twIhF9.d.ts} +1 -1
- package/dist/types-chunks/{sdk-session-CLWf8Adb.d.ts → sdk-session-DB9KksIx.d.ts} +2 -2
- package/dist/types-chunks/side-query.d-DTuLPcC5.d.ts +77 -0
- package/dist/types-chunks/{types-LanCEDj8.d.ts → types-D3g6XUQr.d.ts} +41 -2
- package/dist/types-chunks/{types.d-RdWRfUEs.d.ts → types.d-BA-Jwpfs.d.ts} +459 -7
- package/dist/types-chunks/{types.d-CODuyyqy.d.ts → types.d-BH0ZkTGf.d.ts} +1 -1
- package/dist/types-chunks/{types.d-DCQVBqVn.d.ts → types.d-BbtGlKZu.d.ts} +25 -3
- package/dist/types-chunks/{types.d-DCsKM8aT.d.ts → types.d-DVDTIfB_.d.ts} +2 -2
- package/dist/types-chunks/{utils.d-CDduqbFw.d.ts → utils.d-CVp6bFl9.d.ts} +22 -6
- package/docs/SDK_EMBEDDER_GUIDE.md +399 -55
- package/package.json +8 -1
- package/dist/chunks/agent-NGSWFE73.js +0 -2
- package/dist/chunks/argument-completer-WGGZPEEO.js +0 -2
- package/dist/chunks/chunk-27QLRH3D.js +0 -5
- package/dist/chunks/chunk-2MQPVY6P.js +0 -770
- package/dist/chunks/chunk-6WAPVAGQ.js +0 -74
- package/dist/chunks/chunk-AOENDSVN.js +0 -448
- package/dist/chunks/chunk-HV2GMZUZ.js +0 -343
- package/dist/chunks/chunk-JS2BHGJP.js +0 -158
- package/dist/chunks/chunk-ON2WG2LG.js +0 -622
- package/dist/chunks/chunk-RUGAAHTF.js +0 -321
- package/dist/chunks/chunk-TGCG7U2W.js +0 -37
- package/dist/chunks/compaction-config-BE7VYWH6.js +0 -2
- package/dist/chunks/dist-ZZBNVTKU.js +0 -2
- package/dist/chunks/host-QAKQVC4A.js +0 -2
- package/dist/chunks/run-manager-N4UFWA2D.js +0 -2
- package/dist/chunks/utils-AUHCI4D5.js +0 -2
- package/dist/types-chunks/center-types.d-BBT122uJ.d.ts +0 -91
package/CHANGELOG.md
CHANGED
|
@@ -6,12 +6,184 @@ All notable changes to this project will be documented in this file.
|
|
|
6
6
|
|
|
7
7
|
## [Unreleased]
|
|
8
8
|
|
|
9
|
+
## [0.7.78] - 2026-07-29
|
|
10
|
+
|
|
11
|
+
### Added
|
|
12
|
+
|
|
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.
|
|
32
|
+
|
|
33
|
+
### Changed
|
|
34
|
+
|
|
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.
|
|
45
|
+
|
|
46
|
+
### Fixed
|
|
47
|
+
|
|
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.
|
|
180
|
+
|
|
9
181
|
## [0.7.77] - 2026-07-27
|
|
10
182
|
|
|
11
|
-
>
|
|
12
|
-
>
|
|
13
|
-
>
|
|
14
|
-
>
|
|
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.
|
|
15
187
|
|
|
16
188
|
### Added
|
|
17
189
|
|
package/README.md
CHANGED
|
@@ -41,21 +41,30 @@
|
|
|
41
41
|
```bash
|
|
42
42
|
npm i -g @kodax-ai/kodax
|
|
43
43
|
|
|
44
|
-
# Pick any one you have an API key for:
|
|
45
|
-
export ZHIPU_API_KEY=... #
|
|
46
|
-
#
|
|
47
|
-
# QWEN_TOKEN_API_KEY /
|
|
48
|
-
#
|
|
44
|
+
# Pick any one you have an API key for (`kodax setup --help` lists all):
|
|
45
|
+
export ZHIPU_API_KEY=... # ANTHROPIC_API_KEY / OPENAI_API_KEY / DEEPSEEK_API_KEY /
|
|
46
|
+
# KIMI_API_KEY / KIMI_CODE_API_KEY / QWEN_API_KEY /
|
|
47
|
+
# QWEN_TOKEN_API_KEY / ZHIPU_CODING_API_KEY /
|
|
48
|
+
# ZAI_CODING_API_KEY / MINIMAX_CODING_API_KEY /
|
|
49
|
+
# MIMO_API_KEY / MIMO_CODING_API_KEY / ARK_CODING_API_KEY
|
|
49
50
|
|
|
50
51
|
kodax
|
|
51
52
|
```
|
|
52
53
|
|
|
53
|
-
That's it. You're in the REPL — ask anything in natural language.
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
54
|
+
That's it. You're in the REPL — ask anything in natural language. On a new
|
|
55
|
+
machine with no selected provider, bare interactive `kodax` opens setup first,
|
|
56
|
+
even if a supported credential environment variable already exists. Setup
|
|
57
|
+
checks core, MCP, Extensions, and A2A active files plus all annotated templates
|
|
58
|
+
without overwriting existing files. It never asks for the key itself; after
|
|
59
|
+
choosing a provider/model, set the named environment variable, restart the
|
|
60
|
+
terminal, and run `kodax` again. Use `kodax setup` to rerun the flow,
|
|
61
|
+
`kodax setup --custom` for a guided custom provider, and `kodax setup --help`
|
|
62
|
+
(or REPL `/setup --help`) for paths, provider variables, commands, and
|
|
63
|
+
shortcuts. Interactive setup also checks the optional ASRT sandbox once:
|
|
64
|
+
Windows may show a one-time UAC prompt; macOS/Linux report any required
|
|
65
|
+
Seatbelt/bubblewrap dependencies. Declining or missing a dependency does not
|
|
66
|
+
break ordinary permission handling, and normal startup will not keep reminding
|
|
67
|
+
you.
|
|
59
68
|
|
|
60
69
|
> **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.
|
|
61
70
|
|
|
@@ -147,23 +156,69 @@ npm link
|
|
|
147
156
|
|
|
148
157
|
KodaX reads API keys from environment variables. For built-in providers, the fastest path is:
|
|
149
158
|
|
|
150
|
-
```bash
|
|
151
|
-
# Interactive metadata-only provider/model setup (does not collect a key)
|
|
152
|
-
kodax setup
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
159
|
+
```bash
|
|
160
|
+
# Interactive metadata-only provider/model setup (does not collect a key)
|
|
161
|
+
kodax setup
|
|
162
|
+
|
|
163
|
+
# Guided custom OpenAI/Anthropic-compatible provider
|
|
164
|
+
kodax setup --custom
|
|
165
|
+
|
|
166
|
+
# Complete guide; does not change files
|
|
167
|
+
kodax setup --help
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
Setup checks these active files and matching `*.example.jsonc` references:
|
|
171
|
+
|
|
172
|
+
- `~/.kodax/config.json` and `~/.kodax/config.example.jsonc`
|
|
173
|
+
- `~/.kodax/integrations/mcp.json`
|
|
174
|
+
- `~/.kodax/integrations/extensions.json`
|
|
175
|
+
- `~/.kodax/integrations/a2a.json`
|
|
176
|
+
|
|
177
|
+
The core active file remains strict JSON. The first line of the annotated
|
|
178
|
+
`config.example.jsonc` points to all split files and documents every supported
|
|
179
|
+
core setting. Setup preserves existing files and stages readable legacy
|
|
180
|
+
`config.json#mcpServers` / `config.json#extensions` before creating empty
|
|
181
|
+
authoritative split files. It tells you the exact environment-variable name to
|
|
182
|
+
set and exits so you can restart the terminal. Existing active files are
|
|
183
|
+
validated first; an invalid file is reported without creating or overwriting
|
|
184
|
+
configuration. You can also configure it directly:
|
|
157
185
|
|
|
158
186
|
```bash
|
|
159
187
|
# macOS / Linux
|
|
160
188
|
export ZHIPU_API_KEY=your_api_key
|
|
161
189
|
|
|
162
190
|
# PowerShell
|
|
163
|
-
$env:ZHIPU_API_KEY="your_api_key"
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
|
|
191
|
+
$env:ZHIPU_API_KEY="your_api_key"
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
### 2.1 Activate the optional sandbox
|
|
195
|
+
|
|
196
|
+
`kodax setup` and first-run setup check sandbox readiness. You can inspect or
|
|
197
|
+
activate it explicitly:
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
kodax sandbox doctor
|
|
201
|
+
kodax sandbox setup
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
- Windows uses a restricted sandbox account and network policy. A normal
|
|
205
|
+
terminal is sufficient; approve the one-time UAC prompt.
|
|
206
|
+
- macOS uses Seatbelt/`sandbox-exec` and requires ripgrep
|
|
207
|
+
(`brew install ripgrep`).
|
|
208
|
+
- Linux uses bubblewrap and requires `bubblewrap`, `socat`, and `ripgrep`
|
|
209
|
+
(install them with your distro's `apt`, `dnf`, or `pacman`).
|
|
210
|
+
|
|
211
|
+
KodaX never runs `sudo` or a package manager automatically. If the sandbox is
|
|
212
|
+
not active, deterministic safe operations and Auto[LLM] decisions keep the
|
|
213
|
+
same permission behavior; only OS-level containment is absent. Ordinary runs
|
|
214
|
+
do not repeatedly prompt for setup. In the REPL, `/sandbox` refreshes readiness
|
|
215
|
+
and diagnostics without activating the backend or requesting elevation.
|
|
216
|
+
Per-command sandbox routing remains internal and is not shown in normal command
|
|
217
|
+
history. SDK embedders can use the same capability independently through
|
|
218
|
+
`@kodax-ai/kodax/sandbox`; see the
|
|
219
|
+
[SDK sandbox guide](docs/SDK_EMBEDDER_GUIDE.md#30-standalone-sandbox-sdk-v0778).
|
|
220
|
+
|
|
221
|
+
For Qwen Token Plan, select `qwen-token-plan` and use its separate credential;
|
|
167
222
|
`QWEN_API_KEY` does not authenticate this route:
|
|
168
223
|
|
|
169
224
|
```bash
|
|
@@ -412,7 +467,7 @@ for K2.7 Code, alongside `kimi-for-coding-highspeed` and the 1M `k3` tier. K3
|
|
|
412
467
|
supports `low` / `high` / `max` reasoning with `high` as default; the 256K
|
|
413
468
|
route supports image input but not video input.
|
|
414
469
|
|
|
415
|
-
**v0.7.77 release
|
|
470
|
+
**v0.7.77 release:** AMA now chooses and composes six named
|
|
416
471
|
problem-solving patterns through the existing Actor control plane instead of
|
|
417
472
|
using a fixed topology or hidden Workflow. Optional strategy metadata becomes
|
|
418
473
|
a bounded, fact-only `PatternTrace`; the existing Sidecar remains the only
|
|
@@ -430,7 +485,42 @@ joint `SHIP` decision for the deterministic contracts. Semantic memory
|
|
|
430
485
|
selection remains experimental and host opt-in; no task-quality, token, or
|
|
431
486
|
latency improvement is claimed.
|
|
432
487
|
|
|
433
|
-
|
|
488
|
+
**v0.7.78 evidence-gated learning, setup, and permission/sandbox release:**
|
|
489
|
+
Background learning is Memory-first. Only repeated independently verified
|
|
490
|
+
evidence, or an explicit preserve-as-Skill request with verified terminal
|
|
491
|
+
evidence, can admit a low-risk declarative Skill to a bounded immutable
|
|
492
|
+
project canary; three exact-revision uses and independently verified success
|
|
493
|
+
are required before automatic project trust. Every revision remains visible
|
|
494
|
+
and reversible in `/learn`. Protected/formal Skills, global promotion, and
|
|
495
|
+
Extension authoring remain explicit user actions.
|
|
496
|
+
|
|
497
|
+
First-run setup now creates and validates the split core/MCP/Extensions/A2A
|
|
498
|
+
files and annotated templates without overwriting existing configuration or
|
|
499
|
+
collecting secrets. Auto[LLM] admits precisely modeled ordinary reads and
|
|
500
|
+
workspace/temp mutations before classifier latency, retries classifier
|
|
501
|
+
infrastructure failure once, then falls back at the Accept-edits boundary
|
|
502
|
+
without switching to rules. ASRT is optional execution containment rather
|
|
503
|
+
than permission authority; `/sandbox` is the explicit diagnostic surface, and
|
|
504
|
+
SDK hosts can use the standalone `/sandbox` subpath without a silent
|
|
505
|
+
unsandboxed fallback. KodaX's workspace containment denies reads from common
|
|
506
|
+
home credential paths and the complete resolved agent home without turning
|
|
507
|
+
ordinary external reads into an allowlist. See the
|
|
508
|
+
[v0.7.78 design](docs/features/v0.7.78.md), the
|
|
509
|
+
[release checklist](docs/release.md#v0778-release-verification), and
|
|
510
|
+
[SDK guide sections 29–30](docs/SDK_EMBEDDER_GUIDE.md#29-evidence-gated-background-skill-learning-feature_263-v0778).
|
|
511
|
+
|
|
512
|
+
The release closure also preserves intent across adjacent surfaces: static
|
|
513
|
+
Skill instructions load in Edit/Plan without granting later side effects,
|
|
514
|
+
dynamic Skill commands require an explicit host-controlled executor, root AMA
|
|
515
|
+
uses the governed `memory_intent` lifecycle (including explicit intent captured
|
|
516
|
+
before a later cancellation), Workflow Actor waits remain
|
|
517
|
+
unbounded unless the workflow sets a deadline, and Runtime Auto capability v4
|
|
518
|
+
advertises `fallbackPersistsEngine:false` across embedded, Worker, and daemon
|
|
519
|
+
hosts. Actor ownership additionally uses Runtime identity rather than PID alone,
|
|
520
|
+
so PID reuse cannot pin a crashed owner. The resume Session picker also renders
|
|
521
|
+
timestamps in the host's local timezone.
|
|
522
|
+
|
|
523
|
+
The v0.7.77 release also adds an opt-in, host-configurable Shell Execution Contract.
|
|
434
524
|
Runtime Session settings or an individual Run can select `pwsh`, Windows
|
|
435
525
|
PowerShell, `cmd`, `bash`, `zsh`, or an explicit Git Bash executable; KodaX
|
|
436
526
|
resolves the shell environment in the effective project cwd and then executes
|
|
@@ -487,12 +577,14 @@ The Space/IDE shared-daemon contract is documented in
|
|
|
487
577
|
[SDK Embedder Guide section 23](docs/SDK_EMBEDDER_GUIDE.md#23-shared-coder-daemon-for-space-and-ide-hosts-feature_269-v0769).
|
|
488
578
|
|
|
489
579
|
**v0.7.72–v0.7.73 Runtime permission contract:** Auto Mode is owned by the Runtime session,
|
|
490
|
-
not by a UI hook. It reuses its LLM/rules guardrail across turns, classifies
|
|
491
|
-
before the shared permission bridge, and persists
|
|
492
|
-
|
|
493
|
-
timeout; `auto` defaults to LLM classification and fails with a recoverable
|
|
494
|
-
configuration error when no effective classifier model exists, rather than
|
|
495
|
-
silently falling back.
|
|
580
|
+
not by a UI hook. It reuses its LLM/rules guardrail across turns, classifies
|
|
581
|
+
before the shared permission bridge, and persists explicit engine selection.
|
|
582
|
+
The same session settings can select a classifier model and bounded
|
|
583
|
+
timeout; `auto` defaults to LLM classification and fails with a recoverable
|
|
584
|
+
configuration error when no effective classifier model exists, rather than
|
|
585
|
+
silently falling back. In v0.7.78, classifier failures retry once and then use
|
|
586
|
+
the Accept-edits safety boundary; they never change the engine to rules.
|
|
587
|
+
Runtime permission prompts offer opaque, exact
|
|
496
588
|
allow-once/session/persistent grant suggestions; persistent grants are
|
|
497
589
|
daemon-owned and revisioned. Host plan exit is exposed only when the host
|
|
498
590
|
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).
|
|
@@ -510,7 +602,7 @@ kodax --repo-intelligence full --repo-intelligence-trace
|
|
|
510
602
|
|
|
511
603
|
## Architecture
|
|
512
604
|
|
|
513
|
-
KodaX uses a **monorepo architecture** with npm workspaces. Source layout currently has 4 workspace packages; published as a single bundled npm package `@kodax-ai/kodax` with
|
|
605
|
+
KodaX uses a **monorepo architecture** with npm workspaces. Source layout currently has 4 workspace packages; published as a single bundled npm package `@kodax-ai/kodax` with 12 SDK subpath exports (`/agent`, `/llm`, `/coding`, `/media`, `/repl`, `/skills`, `/mcp`, `/session`, `/runtime`, `/sandbox`, `/a2a`, `/experimental-memory`; ADR-024 + ADR-032 + ADR-038, with ADR-036 consolidation):
|
|
514
606
|
|
|
515
607
|
```
|
|
516
608
|
KodaX/
|
|
@@ -536,9 +628,9 @@ KodaX/
|
|
|
536
628
|
│
|
|
537
629
|
├── src/ # CLI entry + SDK subpath entries
|
|
538
630
|
│ ├── kodax_cli.ts # Main CLI entry point (bin: `kodax`)
|
|
539
|
-
│ └── sdk-*.ts # SDK subpath re-exports → @kodax-ai/kodax/{agent,llm,coding,media,repl,skills,mcp,session,runtime,a2a,experimental-memory}
|
|
540
|
-
│
|
|
541
|
-
└── package.json #
|
|
631
|
+
│ └── sdk-*.ts # SDK subpath re-exports → @kodax-ai/kodax/{agent,llm,coding,media,repl,skills,mcp,session,runtime,sandbox,a2a,experimental-memory}
|
|
632
|
+
│
|
|
633
|
+
└── package.json # Publish-shaped exports; release.mjs only toggles private during pack/publish
|
|
542
634
|
```
|
|
543
635
|
|
|
544
636
|
### Package Dependencies
|
|
@@ -585,9 +677,9 @@ Source-side workspace package names (`@kodax-ai/*`). npm consumers install the s
|
|
|
585
677
|
KodaX has two layers that consumers should understand separately:
|
|
586
678
|
|
|
587
679
|
- **Source-side**: 4 workspace packages above (what developers see when reading the repo).
|
|
588
|
-
- **npm-published**: a single bundled package `@kodax-ai/kodax` with
|
|
680
|
+
- **npm-published**: a single bundled package `@kodax-ai/kodax` with 12 SDK subpaths (what SDK consumers `import` from). The subpaths are split into two roles:
|
|
589
681
|
- **Full-package subpaths** (`/agent`, `/llm`, `/coding`, `/repl`) — each one maps 1:1 to a source workspace and exposes its complete public API.
|
|
590
|
-
- **Integration and narrow subpaths** (`/media`, `/skills`, `/mcp`, `/session`, `/runtime`, `/a2a`, `/experimental-memory`) — focused host surfaces. `/a2a` composes the neutral F258 plane with the Runtime facade; it does not add A2A wire types to `/agent`.
|
|
682
|
+
- **Integration and narrow subpaths** (`/media`, `/skills`, `/mcp`, `/session`, `/runtime`, `/sandbox`, `/a2a`, `/experimental-memory`) — focused host surfaces. `/a2a` composes the neutral F258 plane with the Runtime facade; it does not add A2A wire types to `/agent`.
|
|
591
683
|
|
|
592
684
|
| Source package | npm subpath | Type | What you get | Example consumer |
|
|
593
685
|
|---|---|---|---|---|
|
|
@@ -599,9 +691,10 @@ KodaX has two layers that consumers should understand separately:
|
|
|
599
691
|
| `packages/agent` | `@kodax-ai/kodax/experimental-memory` | **Experimental subset** | Thin F228-backed `MemoryAgent` / `MemorySession` contracts for scoped recall, deliberate query, observations, and outcomes | SDK hosts explicitly evaluating FEATURE_260 |
|
|
600
692
|
| `packages/coding` | `@kodax-ai/kodax/coding` | Full package | Coding agent + 50+ tools + repo-intelligence (505 exports) | Build a Claude Code-shape product |
|
|
601
693
|
| `packages/repl` | `@kodax-ai/kodax/repl` | Full package | Ink TUI + permission modes + commands (217 exports) | Terminal-UI consumers |
|
|
602
|
-
| `packages/repl` | `@kodax-ai/kodax/session` | **Narrow subset** | Session management only — `listSessions` / `loadFullTranscript` / `appendClientNotice` / `forkSession` / `compactSession` / `watchSessions` / ... (17 exports) | IDE plugins and desktop hosts reading session history |
|
|
603
|
-
| `src` | `@kodax-ai/kodax/runtime` | Host API | Embedded/Worker/daemon runtime facade, sessions/runs/events/permissions/catalog/MCP/artifacts/diagnostics/external agents, daemon protocol schema (10 exports) | SDK hosts, Space/IDE clients, daemon clients |
|
|
604
|
-
| `src` | `@kodax-ai/kodax/
|
|
694
|
+
| `packages/repl` | `@kodax-ai/kodax/session` | **Narrow subset** | Session management only — `listSessions` / `loadFullTranscript` / `appendClientNotice` / `forkSession` / `compactSession` / `watchSessions` / ... (17 exports) | IDE plugins and desktop hosts reading session history |
|
|
695
|
+
| `src` | `@kodax-ai/kodax/runtime` | Host API | Embedded/Worker/daemon runtime facade, sessions/runs/events/permissions/catalog/MCP/artifacts/diagnostics/external agents, daemon protocol schema (10 exports) | SDK hosts, Space/IDE clients, daemon clients |
|
|
696
|
+
| `src` | `@kodax-ai/kodax/sandbox` | Host API | Explicit ASRT capability/doctor/setup and host-owned contained command execution; unavailability never means silent ordinary execution | SDK hosts that need standalone process containment |
|
|
697
|
+
| `src` | `@kodax-ai/kodax/a2a` | Integration edge | A2A 1.0 Agent Card discovery, JSON-RPC/SSE F258 executor, safe fetch policy, and authenticated Runtime-backed Agent server | Agent orchestrators and KodaX hosts |
|
|
605
698
|
|
|
606
699
|
**Rule of thumb**: if you need Runner / Agent / fan-out, import from `/agent`. If you only need skills or mcp APIs, import from `/skills` or `/mcp` to get a smaller bundle. The narrow subsets are subsets of the full packages — they do **not** expose extra symbols.
|
|
607
700
|
|
|
@@ -633,7 +726,7 @@ KodaX has two layers that consumers should understand separately:
|
|
|
633
726
|
|
|
634
727
|
**Experimental Memory Agent SDK (FEATURE_260, v0.7.68)**: `/experimental-memory` exposes the thin agent-layer `MemoryAgent` and scoped `MemorySession` lifecycle over the existing governed F228 plane. Passive recall is zero-wait; `query()` is read-only and deliberate; durable changes still require the proposal/preview/fingerprint/apply path. The Action LLM remains the final decision maker, recalled content stays low-authority, and safety/scope gates remain deterministic. See the [direct session and boundary guide](docs/SDK_EMBEDDER_GUIDE.md#21-experimental-governed-memory--experimental-memory-feature_260-v0768).
|
|
635
728
|
|
|
636
|
-
**Bidirectional A2A 1.0 (FEATURE_267, v0.7.69)**: `/a2a` discovers allowed Agent Cards and installs a JSON-RPC/SSE executor through the existing F258 plane. Configured outbound Agents are also registered automatically as `external:<name>` in embedded CLI and user-daemon Runtimes, so the main Agent can orchestrate them without host code. One `a2a.json` may hold many outbound registrations and at most one inbound server, which publishes either the Runtime default or one validated `~/.kodax/agents/*.md` Agent behind an authenticated Runtime facade. The built-in listener is loopback-only; public deployment uses `handle()` behind host-owned TLS and authorization. A2A 0.3, gRPC, HTTP+JSON, push notifications, and automatic public exposure are not advertised. See the [client/server recipes and security boundaries](docs/SDK_EMBEDDER_GUIDE.md#22-bidirectional-a2a-10--a2a-feature_267-v0769).
|
|
729
|
+
**Bidirectional A2A 1.0 (FEATURE_267, v0.7.69)**: `/a2a` discovers allowed Agent Cards and installs a JSON-RPC/SSE executor through the existing F258 plane. Configured outbound Agents are also registered automatically as `external:<name>` in embedded CLI and user-daemon Runtimes, so the main Agent can orchestrate them without host code. One `a2a.json` may hold many outbound registrations and at most one inbound server, which publishes either the Runtime default or one validated `~/.kodax/agents/*.md` Agent behind an authenticated Runtime facade. The built-in listener is loopback-only and will not return a port blocked by Fetch-compatible clients; public deployment uses `handle()` behind host-owned TLS and authorization. A2A 0.3, gRPC, HTTP+JSON, push notifications, and automatic public exposure are not advertised. See the [client/server recipes and security boundaries](docs/SDK_EMBEDDER_GUIDE.md#22-bidirectional-a2a-10--a2a-feature_267-v0769).
|
|
637
730
|
|
|
638
731
|
**A2A interoperability and authentication hardening** keeps a discovered
|
|
639
732
|
interface on the trusted Agent Card origin and sends credentials only when one
|
|
@@ -692,8 +785,9 @@ kodax a2a expose # or: kodax a2a expose document-agent
|
|
|
692
785
|
kodax a2a serve # loopback http://127.0.0.1:8765
|
|
693
786
|
```
|
|
694
787
|
|
|
695
|
-
MCP, A2A, and Extension declarations live in one user file per domain under
|
|
696
|
-
`~/.kodax/integrations/`. Use `kodax config
|
|
788
|
+
MCP, A2A, and Extension declarations live in one user file per domain under
|
|
789
|
+
`~/.kodax/integrations/`. Use `kodax config paths`,
|
|
790
|
+
`kodax config template <core|mcp|a2a|extensions>`,
|
|
697
791
|
`kodax integrations migrate --apply`, and the `kodax mcp`, `kodax a2a`, or
|
|
698
792
|
`kodax extensions` commands to manage them. Migration imports only legacy
|
|
699
793
|
`config.json#mcpServers` and `config.json#extensions`; A2A has no legacy source.
|
|
@@ -844,12 +938,14 @@ import { createImageArtifactFromPath } from '@kodax-ai/kodax/media'; // input ar
|
|
|
844
938
|
import { SkillRegistry } from '@kodax-ai/kodax/skills'; // zero-dep skill loader
|
|
845
939
|
import { loadConfig } from '@kodax-ai/kodax/repl'; // REPL config / session helpers
|
|
846
940
|
import { createMcpManager } from '@kodax-ai/kodax/mcp'; // MCP popout manager (v0.7.42)
|
|
847
|
-
import { listSessions } from '@kodax-ai/kodax/session'; // session history helpers
|
|
848
|
-
import { createKodaXRuntime } from '@kodax-ai/kodax/runtime'; // embedded/daemon runtime API
|
|
849
|
-
import {
|
|
850
|
-
|
|
851
|
-
|
|
852
|
-
|
|
941
|
+
import { listSessions } from '@kodax-ai/kodax/session'; // session history helpers
|
|
942
|
+
import { createKodaXRuntime } from '@kodax-ai/kodax/runtime'; // embedded/daemon runtime API
|
|
943
|
+
import { runKodaXSandboxed } from '@kodax-ai/kodax/sandbox'; // standalone ASRT containment
|
|
944
|
+
import { createKodaXA2AServer } from '@kodax-ai/kodax/a2a'; // A2A 1.0 client/server edge
|
|
945
|
+
import { createMemoryAgent } from '@kodax-ai/kodax/experimental-memory'; // opt-in memory SDK
|
|
946
|
+
```
|
|
947
|
+
|
|
948
|
+
All 13 SDK entries (root + 12 subpaths) share internal code via ESM chunk splitting — importing from `/agent` does not pull in `/repl`'s Ink + React surface.
|
|
853
949
|
|
|
854
950
|
For the complete host-facing contract — including embedded/Worker/daemon ownership,
|
|
855
951
|
external-agent registration and task control, session cursor pagination, workflow
|
|
@@ -1000,16 +1096,19 @@ KodaX provides 3 permission modes for fine-grained control:
|
|
|
1000
1096
|
**Features:**
|
|
1001
1097
|
- In `accept-edits` mode, choosing "always" can persist safe Bash allow-patterns
|
|
1002
1098
|
- Plan mode includes system prompt context for LLM awareness
|
|
1003
|
-
-
|
|
1099
|
+
- Sensitive/protected or unresolved targets enter Auto[LLM]/approval review;
|
|
1100
|
+
ordinary reads outside the project are allowed
|
|
1004
1101
|
- Pattern-based permission: Allow specific Bash commands (e.g., `Bash(npm install)`)
|
|
1005
1102
|
- Unified diff display for write/edit operations
|
|
1006
|
-
- Auto Mode
|
|
1007
|
-
|
|
1008
|
-
|
|
1103
|
+
- Auto Mode first admits exactly modeled safe reads and workspace/temp
|
|
1104
|
+
mutations without classifier latency. Remaining actions are reviewed against
|
|
1105
|
+
bounded user intent and exact operation facts; a safe verdict creates no
|
|
1106
|
+
pending approval request. Classifier failures retry once, then use the
|
|
1107
|
+
Accept-edits safety boundary rather than silently switching to Auto[rules].
|
|
1009
1108
|
- Shift-Tab cycles `Plan -> Edits -> Auto`; Shift+Enter inserts a newline. Auto
|
|
1010
1109
|
immediately displays `Auto[LLM]` or `Auto[RULES]`, and rapid mode changes are
|
|
1011
|
-
persisted in input order. `Auto[RULES]`
|
|
1012
|
-
|
|
1110
|
+
persisted in input order. `Auto[RULES]` remains an explicit/manual engine;
|
|
1111
|
+
use `/auto-engine llm` to select LLM classification.
|
|
1013
1112
|
- Runtime-backed prompts can offer exact `allow once`, `allow this session`,
|
|
1014
1113
|
and `always allow` choices. Return the Runtime-issued opaque suggestion;
|
|
1015
1114
|
never derive or widen a permission rule from the displayed command or path.
|
|
@@ -1176,7 +1275,7 @@ await runKodaX({
|
|
|
1176
1275
|
|
|
1177
1276
|
## SDK Usage
|
|
1178
1277
|
|
|
1179
|
-
KodaX ships as a single npm package `@kodax-ai/kodax` with
|
|
1278
|
+
KodaX ships as a single npm package `@kodax-ai/kodax` with 12 SDK subpath exports (ADR-024 v0.7.39 + ADR-032 v0.7.42 + ADR-038 v0.7.49 + v0.7.56 `/media` + v0.7.64 `/runtime` + v0.7.68 `/experimental-memory` + v0.7.69 `/a2a` + v0.7.78 `/sandbox`). Each subpath is tree-shake-friendly so consumers pull only what they need:
|
|
1180
1279
|
|
|
1181
1280
|
```bash
|
|
1182
1281
|
npm install @kodax-ai/kodax
|
|
@@ -1190,10 +1289,11 @@ import { KODAX_TOOLS } from '@kodax-ai/kodax/coding'; // tools + pro
|
|
|
1190
1289
|
import { createImageArtifactFromPath } from '@kodax-ai/kodax/media'; // input artifact helpers
|
|
1191
1290
|
import { runInkInteractiveMode } from '@kodax-ai/kodax/repl'; // Ink TUI entrypoint
|
|
1192
1291
|
import { SkillRegistry } from '@kodax-ai/kodax/skills'; // zero-dep skill loader
|
|
1193
|
-
import { createMcpManager } from '@kodax-ai/kodax/mcp'; // MCP popout manager (v0.7.42)
|
|
1194
|
-
import { listSessions } from '@kodax-ai/kodax/session'; // session history helpers
|
|
1195
|
-
import { createKodaXRuntime } from '@kodax-ai/kodax/runtime'; // embedded/daemon runtime API
|
|
1196
|
-
import {
|
|
1292
|
+
import { createMcpManager } from '@kodax-ai/kodax/mcp'; // MCP popout manager (v0.7.42)
|
|
1293
|
+
import { listSessions } from '@kodax-ai/kodax/session'; // session history helpers
|
|
1294
|
+
import { createKodaXRuntime } from '@kodax-ai/kodax/runtime'; // embedded/daemon runtime API
|
|
1295
|
+
import { runKodaXSandboxed } from '@kodax-ai/kodax/sandbox'; // explicit standalone containment
|
|
1296
|
+
import { createKodaXA2AServer } from '@kodax-ai/kodax/a2a'; // A2A 1.0 client/server edge
|
|
1197
1297
|
import { createMemoryAgent } from '@kodax-ai/kodax/experimental-memory'; // opt-in experimental memory SDK
|
|
1198
1298
|
```
|
|
1199
1299
|
|
|
@@ -1368,8 +1468,8 @@ await runInkInteractiveMode({ provider: 'zhipu-coding', effort: 'auto' });
|
|
|
1368
1468
|
| mimo-coding | `MIMO_CODING_API_KEY` | Native | mimo-v2.5-pro (Xiaomi Token Plan, Anthropic-compat) |
|
|
1369
1469
|
| ark-coding | `ARK_CODING_API_KEY` | Native | glm-5.2 (Volcengine Ark Coding Plan — GLM-5.2 (alias: `glm-latest`) · Kimi K2.7 Code / K2.6 · MiniMax M3 / M2.7 · DeepSeek V4 Pro / V4 Flash · Doubao Seed 2.0 Code / Pro / Lite · Doubao Seed Code) |
|
|
1370
1470
|
| deepseek | `DEEPSEEK_API_KEY` | Native | deepseek-v4-flash (`deepseek-v4-pro` via `/model`) |
|
|
1371
|
-
| gemini-cli |
|
|
1372
|
-
| codex-cli |
|
|
1471
|
+
| gemini-cli | Provider CLI authentication (no KodaX API-key variable) | Prompt-only / CLI bridge | (via gemini CLI) |
|
|
1472
|
+
| codex-cli | Provider CLI authentication (no KodaX API-key variable) | Prompt-only / CLI bridge | (via codex CLI) |
|
|
1373
1473
|
|
|
1374
1474
|
> **Custom providers**: any OpenAI- or Anthropic-compatible endpoint can be added via `customProviders[]` in `~/.kodax/config.json` (CLI) or `registerCustomProviders()` (library). See the [Quick Start](#2-configure-a-provider) for the configuration shape.
|
|
1375
1475
|
|
|
@@ -1483,9 +1583,45 @@ Built-in skills include:
|
|
|
1483
1583
|
- **tdd** - Test-driven development workflow
|
|
1484
1584
|
- **git-workflow** - Git commit and workflow automation
|
|
1485
1585
|
|
|
1486
|
-
Skills are stored in `~/.kodax/skills/` and can be extended with custom skills.
|
|
1487
|
-
|
|
1488
|
-
|
|
1586
|
+
Skills are stored in `~/.kodax/skills/` and can be extended with custom skills.
|
|
1587
|
+
F263 background learning is Memory-first: a single correction does not create
|
|
1588
|
+
a Skill. Repeated independently verified evidence can create a low-risk,
|
|
1589
|
+
immutable project-scoped testing revision for at most three exact-revision
|
|
1590
|
+
uses. Promotion requires independently verified success. Use `/learn` to
|
|
1591
|
+
inspect, disable, rollback, trust, or reject learned revisions. Protected or
|
|
1592
|
+
formal Skills, user-global promotion, and Extension authoring remain explicit
|
|
1593
|
+
user actions.
|
|
1594
|
+
|
|
1595
|
+
### Promote a learned Skill to the user catalog
|
|
1596
|
+
|
|
1597
|
+
Automatic canary activation and user-catalog promotion are different:
|
|
1598
|
+
|
|
1599
|
+
- independently verified canary success changes `testing` to
|
|
1600
|
+
`active_learned` inside the project-scoped Learned Area;
|
|
1601
|
+
- `/learn promote` is an explicit ownership transfer that copies one exact
|
|
1602
|
+
reviewed `ready` or `active_learned` revision into the formal user Skill
|
|
1603
|
+
catalog and changes its lifecycle to `promoted_user`.
|
|
1604
|
+
|
|
1605
|
+
Inspect the revision first, then promote it by name, slug, or exact capability
|
|
1606
|
+
ID:
|
|
1607
|
+
|
|
1608
|
+
```text
|
|
1609
|
+
/learn show normalize-release-notes
|
|
1610
|
+
/learn promote normalize-release-notes --scope user
|
|
1611
|
+
```
|
|
1612
|
+
|
|
1613
|
+
`--scope user` is the only supported scope and may be omitted. Invalid scopes,
|
|
1614
|
+
unknown options, duplicate scope options, and extra operands fail without
|
|
1615
|
+
changing the catalog. Promotion writes to the configured KodaX user Skill
|
|
1616
|
+
directory—normally `~/.kodax/skills/<slug>/SKILL.md`—and never overwrites
|
|
1617
|
+
different formal Skill content.
|
|
1618
|
+
|
|
1619
|
+
Use `/learn promote --help`, `/learn help promote`, or
|
|
1620
|
+
`/help learn promote` for the dedicated command reference. In the Ink Learning
|
|
1621
|
+
Center, open `/learn`, select an `active_learned` Skill, and choose
|
|
1622
|
+
**Promote to user catalog**.
|
|
1623
|
+
|
|
1624
|
+
---
|
|
1489
1625
|
|
|
1490
1626
|
## Commands (CLI)
|
|
1491
1627
|
|