@kodax-ai/kodax 0.7.96-beta.3 → 0.7.96-beta.6
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 +106 -0
- package/README.md +29 -6
- package/README_CN.md +20 -6
- package/config-templates/config.example.jsonc +2 -2
- package/dist/chunks/{agent-AGJEZOXZ.js → agent-YLACEO4O.js} +1 -1
- package/dist/chunks/argument-completer-PVUCYVPK.js +2 -0
- package/dist/chunks/{chunk-ZGKIV7ZU.js → chunk-33HFMRDF.js} +1 -1
- package/dist/chunks/{chunk-JM6QBNUM.js → chunk-3WUM7FEF.js} +129 -129
- package/dist/chunks/{chunk-JN4BW4KX.js → chunk-737MIK3X.js} +142 -142
- package/dist/chunks/{chunk-HK4767SO.js → chunk-74NX3QYO.js} +1 -1
- package/dist/chunks/{chunk-MZSC5OWE.js → chunk-7EIJFMUQ.js} +285 -285
- package/dist/chunks/chunk-7IXST5B2.js +384 -0
- package/dist/chunks/chunk-DE6LTK75.js +429 -0
- package/dist/chunks/{chunk-6OSPM6CQ.js → chunk-ERTJLJ66.js} +1 -1
- package/dist/chunks/{chunk-IOR23YGO.js → chunk-FJCIXSA2.js} +1 -1
- package/dist/chunks/{chunk-DWLYVWFJ.js → chunk-GRNAJPQQ.js} +1 -1
- package/dist/chunks/{chunk-6RP5I7VG.js → chunk-HFXXLSY5.js} +2 -2
- package/dist/chunks/{chunk-ZFAX6QYE.js → chunk-JQMSG2WG.js} +6 -6
- package/dist/chunks/{chunk-2WBEHQHD.js → chunk-NLXUU3XG.js} +77 -77
- package/dist/chunks/{chunk-QLR3IZKV.js → chunk-NYY22UMB.js} +48 -50
- package/dist/chunks/{chunk-GCKY3APV.js → chunk-R5KZ6VTX.js} +1 -1
- package/dist/chunks/chunk-RPTNKNZG.js +122 -0
- package/dist/chunks/{chunk-25LFDCMP.js → chunk-RZD74TRO.js} +6 -6
- package/dist/chunks/{chunk-KGG5EDZN.js → chunk-STHS3HRP.js} +1 -1
- package/dist/chunks/{chunk-EWVG7OWF.js → chunk-TKAYTO6W.js} +1 -1
- package/dist/chunks/{chunk-6GUB5SPV.js → chunk-XB3XM75P.js} +1 -1
- package/dist/chunks/{chunk-W764RSKQ.js → chunk-YRIFVRVY.js} +2 -2
- package/dist/chunks/{client-WH5AZEVW.js → client-U47ZCHQ5.js} +1 -1
- package/dist/chunks/{compaction-config-BBXT6VDZ.js → compaction-config-CTMBDU4B.js} +1 -1
- package/dist/chunks/{construction-bootstrap-DCJKZZXI.js → construction-bootstrap-E6I6PZV6.js} +1 -1
- package/dist/chunks/dist-3LGBBPTI.js +2 -0
- package/dist/chunks/dist-T4JLXZRR.js +2 -0
- package/dist/chunks/host-2ADKC6G3.js +2 -0
- package/dist/chunks/run-manager-GORI5NCM.js +2 -0
- package/dist/chunks/{utils-LIC5GX4Q.js → utils-TPD7GVW7.js} +1 -1
- package/dist/index.d.ts +14 -14
- package/dist/index.js +2 -2
- package/dist/kodax_bootstrap.js +1 -1
- package/dist/kodax_cli.js +1255 -1259
- package/dist/native/darwin-arm64/kodax-text-transaction.node +0 -0
- package/dist/native/darwin-arm64/manifest.json +1 -1
- package/dist/native/win32-x64/kodax-windows-sandbox.exe +0 -0
- package/dist/native/win32-x64/kodax-windows-text-transaction.node +0 -0
- package/dist/native/win32-x64/manifest.json +2 -2
- package/dist/provider-capabilities.json +14 -37
- package/dist/runtime-worker.js +1168 -1172
- package/dist/sandbox-network-broker.js +84 -84
- package/dist/sdk-a2a.d.ts +8 -8
- package/dist/sdk-a2a.js +1 -1
- package/dist/sdk-agent.d.ts +12 -9
- package/dist/sdk-agent.js +1 -1
- package/dist/sdk-coding.d.ts +82 -16
- package/dist/sdk-coding.js +1 -1
- package/dist/sdk-experimental-memory.js +1 -1
- package/dist/sdk-llm.d.ts +14 -3
- 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 +13 -13
- package/dist/sdk-repl.js +1 -1
- package/dist/sdk-runtime.d.ts +15 -9
- package/dist/sdk-runtime.js +1 -1
- package/dist/sdk-sandbox.js +1 -1
- package/dist/sdk-session.d.ts +4 -4
- package/dist/sdk-session.js +1 -1
- package/dist/sdk-skills.js +1 -1
- package/dist/semantic-worker.js +68 -68
- package/dist/types-chunks/{bash-prefix-extractor.d-DfQWbYO_.d.ts → bash-prefix-extractor.d-DZzEamhN.d.ts} +6 -2
- package/dist/types-chunks/{capsule.d-BflmZWY-.d.ts → capsule.d-BCbfpUmE.d.ts} +1 -1
- package/dist/types-chunks/{controller.d-CZwtXQUP.d.ts → controller.d-DCSJgOM2.d.ts} +26 -3
- package/dist/types-chunks/{exec-policy.d-DeEZS_mP.d.ts → exec-policy.d-CHTikszX.d.ts} +3 -3
- package/dist/types-chunks/{public-api.d-DshyGo_M.d.ts → public-api.d-BKbFMxg8.d.ts} +5 -3
- package/dist/types-chunks/{resolver.d-HWh9mm7u.d.ts → resolver.d-S_oZtYBS.d.ts} +18 -14
- package/dist/types-chunks/{run-manager.d-CdyG8BEa.d.ts → run-manager.d-CyctAOlr.d.ts} +1 -1
- package/dist/types-chunks/{sdk-session-DMXUvnza.d.ts → sdk-session-BE2tlwBs.d.ts} +1 -1
- package/dist/types-chunks/{shell-command-sets.d-CWodCDx6.d.ts → shell-command-sets.d-DuXtT1XY.d.ts} +1 -1
- package/dist/types-chunks/{side-query.d-DdJ1OPz0.d.ts → side-query.d-oO8k7XBL.d.ts} +3 -2
- package/dist/types-chunks/{trusted-repl-entry-DUdbazYc.d.ts → trusted-repl-entry-_ORN3di2.d.ts} +4 -4
- package/dist/types-chunks/{types.d-u3gpv28b.d.ts → types.d-HKILN-uL.d.ts} +1 -1
- package/dist/types-chunks/{types.d-BnLnc7av.d.ts → types.d-voYXci-b.d.ts} +1 -1
- package/dist/types-chunks/{utils.d-B26-kw0-.d.ts → utils.d-JZc49Yi4.d.ts} +8 -6
- package/package.json +1 -1
- package/public_docs/README.md +12 -3
- package/public_docs/configuration/custom-providers.md +4 -4
- package/public_docs/configuration/providers.md +1 -1
- package/public_docs/sdk/embedder-guide.md +6 -4
- package/dist/chunks/argument-completer-UH2SHQ5R.js +0 -2
- package/dist/chunks/chunk-DCU7W77L.js +0 -429
- package/dist/chunks/chunk-NSYWM5YE.js +0 -384
- package/dist/chunks/chunk-SHXBOMIB.js +0 -124
- package/dist/chunks/dist-W3AU6JXF.js +0 -2
- package/dist/chunks/dist-YHRZ7WJQ.js +0 -2
- package/dist/chunks/host-QNWCUM5M.js +0 -2
- package/dist/chunks/run-manager-UWRNFFGA.js +0 -2
package/CHANGELOG.md
CHANGED
|
@@ -8,6 +8,112 @@ All notable changes to this project will be documented in this file.
|
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
+
## [0.7.96-beta.6] - 2026-09-11
|
|
12
|
+
|
|
13
|
+
Sixth beta pre-release of the v0.7.96 line: a review-hardening pass that
|
|
14
|
+
makes prompt-cache diagnostics describe the actual provider wire, retaining
|
|
15
|
+
every beta.5 contract. npm publication remains a manual maintainer action.
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
|
|
19
|
+
- Prompt-cache diagnostics now mirror the provider wire: the Anthropic
|
|
20
|
+
diagnostic repair mirrors the provider's pairing semantics — a retained
|
|
21
|
+
orphan `tool_use` is answered with the interrupted-tool marker inside its
|
|
22
|
+
pairing scope, real non-adjacent answers are hoisted, foreign and
|
|
23
|
+
duplicate results are dropped, and other user blocks carry after the
|
|
24
|
+
answers. The OpenAI diagnostic repair gains the same full pairing scope,
|
|
25
|
+
and assistant projection keeps source order to match the
|
|
26
|
+
order-preserving serialization, so the diagnostic hash describes the
|
|
27
|
+
messages actually sent.
|
|
28
|
+
- A new prompt-cache wire contract suite (224 cases) proves the projected
|
|
29
|
+
diagnostic envelope equals the real provider request across every
|
|
30
|
+
built-in and custom Anthropic/OpenAI provider, including retained
|
|
31
|
+
orphan calls that must stay distinct from a thinking-only placeholder.
|
|
32
|
+
- The native SDDL auto-inherited flag normalization parses the flag field
|
|
33
|
+
instead of a blind string replace, preserving P/AR flags and S: sections,
|
|
34
|
+
with its own regression test (89 native tests). `@kodax-ai/llm` exports
|
|
35
|
+
`KODAX_INTERRUPTED_TOOL_RESULT_MARKER` as the shared wire-contract
|
|
36
|
+
constant.
|
|
37
|
+
|
|
38
|
+
---
|
|
39
|
+
|
|
40
|
+
## [0.7.96-beta.5] - 2026-09-10
|
|
41
|
+
|
|
42
|
+
Fifth beta pre-release of the v0.7.96 line. Two change streams: the built-in
|
|
43
|
+
`deepseek` provider moves to DeepSeek's official Anthropic-compatible
|
|
44
|
+
endpoint with a new default model and replayed-history repair, and Windows
|
|
45
|
+
sandbox setup advances to generation 11 with Codex-compatible profile/SSH
|
|
46
|
+
ACL exclusions (Issue 333). All earlier beta.4 contracts are retained. npm
|
|
47
|
+
publication remains a manual maintainer action.
|
|
48
|
+
|
|
49
|
+
### Added
|
|
50
|
+
|
|
51
|
+
- `deepseek-flash` (DeepSeek-V4.1-Flash, 2026-09-10): the new default on the
|
|
52
|
+
built-in `deepseek` alias, speaking the official
|
|
53
|
+
`api.deepseek.com/anthropic` wire with the `deepseek-v4-anthropic`
|
|
54
|
+
reasoning preset (thinking adaptive, `output_config.effort`, signed
|
|
55
|
+
thinking-block replay, count_tokens verification), 1M context, 384000 max
|
|
56
|
+
output tokens, and native image input. The legacy text-only
|
|
57
|
+
`deepseek-v4-pro` id stays selectable via `/model`. Cost rates use
|
|
58
|
+
converted official CNY idle rates with recorded peak-hour equivalents.
|
|
59
|
+
|
|
60
|
+
### Fixed
|
|
61
|
+
|
|
62
|
+
- Replayed restored-session histories no longer 400 on strict endpoints:
|
|
63
|
+
`repairToolCallHistory` answers an orphaned `tool_use` call with an
|
|
64
|
+
explicit interrupted-tool marker instead of dropping it, Anthropic
|
|
65
|
+
serialization keeps assistant blocks in their stored order while preserving
|
|
66
|
+
the required `tool_result`-first user grouping, and error classification
|
|
67
|
+
recognizes both wire dialects' pairing errors. Typed `AbortError`
|
|
68
|
+
cancellation now takes precedence over provider message matching; the
|
|
69
|
+
runner preserves the observed provider failure over a plain abort reason;
|
|
70
|
+
SDK Runtime aborts use typed `DOMException` aborts; and the REPL
|
|
71
|
+
distinguishes user cancellation from session-recovery cleanup.
|
|
72
|
+
- Issue 333: Windows sandbox setup generation 11 matches Codex's profile and
|
|
73
|
+
SSH dependency ACL exclusions on read and write roots, keeping ordinary
|
|
74
|
+
home/tool reads and the existing fixed ACL plus per-command
|
|
75
|
+
token/concurrency mechanism. Generation-10 SSH ACE cleanup is setup-only,
|
|
76
|
+
removes provably owned entries, preserves owner and unrelated ACEs, and
|
|
77
|
+
retains the old SID/nonce/roots across interrupted retries. Generation-8/9
|
|
78
|
+
protocol-only in-place upgrades keep their behavior. See
|
|
79
|
+
`docs/test-guides/ISSUE_333_v0.7.96_REGRESSION_GUIDE.md`.
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## [0.7.96-beta.4] - 2026-09-08
|
|
84
|
+
|
|
85
|
+
Fourth beta pre-release of the v0.7.96 line, retaining the beta.3 Windows WFP
|
|
86
|
+
probe repair, credential-bridge retirement, and all earlier sandbox-first,
|
|
87
|
+
trusted-text, permission-profile, context-recovery, and Provider fixes. npm
|
|
88
|
+
publication remains a manual maintainer action.
|
|
89
|
+
|
|
90
|
+
### Fixed
|
|
91
|
+
|
|
92
|
+
- Share manual and automatic compaction summary policy: `compaction.reasoning`
|
|
93
|
+
applies to both summary paths independent of the main turn's effort. The
|
|
94
|
+
default disables thinking where supported; always-thinking models use the
|
|
95
|
+
existing side-query low-effort resolver. In-process callers set
|
|
96
|
+
`KodaXOptions.compaction.reasoning`; Runtime hosts persist the same policy
|
|
97
|
+
for `runs.start()` and `sessions.compact()` through `compactionReasoning`
|
|
98
|
+
(`false` requests disabled thinking, `null` removes the Session override).
|
|
99
|
+
Message/tool/system prefixes and routing affinity stay stable.
|
|
100
|
+
- Record bounded summary request metrics: successful compaction reports and
|
|
101
|
+
`context.compaction.finished` optionally carry `summaryRequests` (one record
|
|
102
|
+
per physical summary call, including map/reduce) and `commitMs` (durable
|
|
103
|
+
save/callback duration). Each request records provider, model, requested
|
|
104
|
+
reasoning, prepare/credential/provider timings, an optional first-delta
|
|
105
|
+
offset, adapter-reported retries and wait, usage, and stop reason, and never
|
|
106
|
+
includes prompt or output text.
|
|
107
|
+
- Manual compaction uses the effective Session provider/model unless
|
|
108
|
+
explicitly overridden, never carries the previous provider's model into a
|
|
109
|
+
switched request, restores the same budgeted ledger/file attachments, and
|
|
110
|
+
records lineage `reason: 'manual'`. REPL `/compact` publishes success and
|
|
111
|
+
clears the UI only after a durable save; a failed save restores the previous
|
|
112
|
+
live context. Eligible-prefix coverage, protected atomic groups, the query
|
|
113
|
+
ledger, and the summary prompt text remain unchanged.
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
11
117
|
## [0.7.96-beta.3] - 2026-09-08
|
|
12
118
|
|
|
13
119
|
Third beta pre-release of the v0.7.96 line, retaining beta.2 context recovery
|
package/README.md
CHANGED
|
@@ -367,7 +367,7 @@ If your custom provider's underlying model supports image input (vision), set `"
|
|
|
367
367
|
|
|
368
368
|
`imageInput: true` forces `capabilityProfile.multimodalSupport: "image-input"` on every KodaX surface (provider instance, capability queries, policy gates), overriding an explicit `"none"`. The advanced alternative — a hand-written `capabilityProfile` block with `"multimodalSupport": "image-input"` — works too; see [Custom Providers](public_docs/configuration/custom-providers.md). Leave it unset for text-only models and image artifacts are rejected with `MODEL_INPUT_UNSUPPORTED` before the request is sent.
|
|
369
369
|
|
|
370
|
-
Built-in vision-capable aliases (Anthropic, OpenAI, compatible aliases such as Kimi, Qwen, Zhipu, MiniMax, MiMo, Ark, plus Gemini-CLI via the CLI's `@<path>` file-include syntax) already ship with image input enabled.
|
|
370
|
+
Built-in vision-capable aliases (Anthropic, OpenAI, compatible aliases such as Kimi, Qwen, Zhipu, MiniMax, MiMo, Ark, plus Gemini-CLI via the CLI's `@<path>` file-include syntax) already ship with image input enabled. On the built-in `deepseek` alias the default `deepseek-flash` (DeepSeek-V4.1-Flash) takes images natively; the legacy `deepseek-v4-pro` id and Codex-CLI are text-only; custom providers need to opt in when their underlying model supports image input.
|
|
371
371
|
|
|
372
372
|
The serializer layer (`packages/llm/src/providers/anthropic.ts:1431` for Anthropic-compat, `openai.ts:1496` for OpenAI-compat) forwards image blocks automatically through base-class inheritance — OpenAI-compatible endpoints receive standard `image_url` blocks. The flag only gates whether KodaX's policy layer pre-rejects multimodal requests — the model-level vision contract remains your upstream provider's responsibility. If the model is actually text-only, you'll see the real upstream API error instead of a KodaX-side rejection.
|
|
373
373
|
|
|
@@ -759,9 +759,32 @@ permission UI, and recovers stale prepared Session tails through an
|
|
|
759
759
|
authoritative merge. Background persistence failures are surfaced as
|
|
760
760
|
diagnostics rather than hidden.
|
|
761
761
|
|
|
762
|
-
Beta.
|
|
763
|
-
|
|
764
|
-
|
|
762
|
+
Beta.6 makes prompt-cache diagnostics mirror the provider wire: retained
|
|
763
|
+
orphan `tool_use` calls are answered with the interrupted-tool marker inside
|
|
764
|
+
their pairing scope and assistant projection keeps source order, so the
|
|
765
|
+
diagnostic hash describes the messages actually sent. A 224-case wire
|
|
766
|
+
contract suite proves the projected envelope equals the real provider
|
|
767
|
+
request across built-in and custom Anthropic/OpenAI providers.
|
|
768
|
+
|
|
769
|
+
Beta.5 moves the built-in `deepseek` provider to DeepSeek's official
|
|
770
|
+
Anthropic-compatible endpoint (`api.deepseek.com/anthropic`) with new default
|
|
771
|
+
model `deepseek-flash` (DeepSeek-V4.1-Flash, 1M context, native image input)
|
|
772
|
+
and repairs replayed restored-session histories: orphaned `tool_use` calls
|
|
773
|
+
are answered with an explicit interrupted-tool marker instead of being
|
|
774
|
+
dropped, and typed `AbortError` cancellation takes precedence over provider
|
|
775
|
+
message matching. Windows sandbox setup advances to generation 11
|
|
776
|
+
(Issue 333), matching Codex's profile and SSH dependency ACL exclusions while
|
|
777
|
+
keeping ordinary home/tool reads and the existing concurrency mechanism.
|
|
778
|
+
|
|
779
|
+
Beta.4 shares manual and automatic compaction summary policy:
|
|
780
|
+
`compaction.reasoning` applies to both paths independent of the main turn's
|
|
781
|
+
effort, defaulting to disabled thinking where supported. Manual compaction
|
|
782
|
+
honors the effective Session provider/model without carrying a switched
|
|
783
|
+
provider's model, REPL `/compact` clears the UI only after a durable save, and
|
|
784
|
+
successful reports carry bounded `summaryRequests` plus `commitMs` per
|
|
785
|
+
physical summary call.
|
|
786
|
+
|
|
787
|
+
**v0.7.96-beta.6 release:** Windows shell admission now follows the
|
|
765
788
|
Codex concurrency boundary: versioned setup performs legacy migration once,
|
|
766
789
|
while ordinary admission accepts effective inherited normal-token access and
|
|
767
790
|
only converges a missing exact-root restricted capability using `SET_ACCESS`
|
|
@@ -810,7 +833,7 @@ requests, preserves structured Child Agent Provider failures, honors exact
|
|
|
810
833
|
run-scoped credential verification, and omits empty `tools` arrays for strict
|
|
811
834
|
vLLM gateways (Issues 329-332). npm publication remains a
|
|
812
835
|
manual maintainer action. See the
|
|
813
|
-
[release checklist](docs/release.md#v0796-
|
|
836
|
+
[release checklist](docs/release.md#v0796-beta6-release-preparation).
|
|
814
837
|
|
|
815
838
|
**v0.7.96-alpha.3 release:** Provider credentials are lazy, scoped,
|
|
816
839
|
revocable capabilities (ADR-068). The v2 credential broker keeps Provider
|
|
@@ -2004,7 +2027,7 @@ await runInkInteractiveMode({ provider: 'zhipu-coding', effort: 'auto' });
|
|
|
2004
2027
|
| mimo | `MIMO_API_KEY` | Native | mimo-v2.5-pro (Xiaomi MiMo pay-per-token, Anthropic-compat) |
|
|
2005
2028
|
| mimo-coding | `MIMO_CODING_API_KEY` | Native | mimo-v2.5-pro (Xiaomi Token Plan, Anthropic-compat) |
|
|
2006
2029
|
| ark-coding | `ARK_CODING_API_KEY` | Native | glm-5.3 (Volcengine Ark Coding Plan — GLM-5.3 (1M ctx, 128K out) · 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) |
|
|
2007
|
-
| deepseek | `DEEPSEEK_API_KEY` | Native | deepseek-
|
|
2030
|
+
| deepseek | `DEEPSEEK_API_KEY` | Native | deepseek-flash (Anthropic-compat; DeepSeek-V4.1-Flash, 1M ctx, native image input; legacy text-only `deepseek-v4-pro`, via `/model`) |
|
|
2008
2031
|
| gemini-cli | Provider CLI authentication (no KodaX API-key variable) | Prompt-only / CLI bridge | (via gemini CLI) |
|
|
2009
2032
|
| codex-cli | Provider CLI authentication (no KodaX API-key variable) | Prompt-only / CLI bridge | (via codex CLI) |
|
|
2010
2033
|
|
package/README_CN.md
CHANGED
|
@@ -296,9 +296,22 @@ SDK 系统代码契约更新,但没有放宽 shell/sandbox 的 fail-closed 边
|
|
|
296
296
|
`handleRuntimePermissionRequest()` 管理 SDK 权限 UI,并在 prepared Session 尾部遇到
|
|
297
297
|
`data_changed` 时通过权威 delta 合并恢复;后台持久化失败会显示为诊断,不再静默丢失。
|
|
298
298
|
|
|
299
|
-
beta.
|
|
300
|
-
|
|
301
|
-
|
|
299
|
+
beta.6 让 prompt-cache 诊断与真实 provider wire 对齐:保留的孤立 `tool_use`
|
|
300
|
+
调用在其配对范围内以 interrupted-tool 标记应答,assistant 投影保持源顺序,
|
|
301
|
+
诊断哈希因此描述实际发送的消息。新增 224 个 wire 契约用例,验证投影包络在
|
|
302
|
+
全部内置与自定义 Anthropic/OpenAI provider 上等于真实 provider 请求。
|
|
303
|
+
|
|
304
|
+
beta.5 将内置 `deepseek` provider 迁移到 DeepSeek 官方 Anthropic 兼容协议
|
|
305
|
+
(`api.deepseek.com/anthropic`),新默认模型 `deepseek-flash`
|
|
306
|
+
(DeepSeek-V4.1-Flash,1M 上下文,原生图片理解),并修复恢复会话重放时的
|
|
307
|
+
历史校验:孤立的 `tool_use` 调用会以显式的 interrupted-tool 标记应答而不是
|
|
308
|
+
被丢弃,类型化 `AbortError` 取消优先于 provider 文本匹配。Windows sandbox
|
|
309
|
+
setup 升级到 generation 11(Issue 333),对齐 Codex 的 profile 与 SSH 依赖
|
|
310
|
+
ACL 排除,同时保留普通 home/tool 读取与现有并发机制。
|
|
311
|
+
|
|
312
|
+
beta.4 统一了手动与自动压缩的摘要策略:`compaction.reasoning` 同时作用于两条路径,与主回合 effort 无关(默认在支持时关闭思考)。手动压缩遵循生效的 Session provider/model,不会把切换前 provider 的 model 带入请求;REPL `/compact` 仅在持久化保存成功后清空 UI;成功报告按每次物理摘要调用记录有界 `summaryRequests` 与 `commitMs`。
|
|
313
|
+
|
|
314
|
+
**v0.7.96-beta.6 发布**:Windows shell 准入现在遵循 Codex 的并发边界:
|
|
302
315
|
版本化 setup 只执行一次 legacy 迁移;普通准入在 capability 已存在时只读,只有缺失
|
|
303
316
|
精确 root restricted capability 时才用 `SET_ACCESS` 与 DACL 回读收敛,且不等待任何
|
|
304
317
|
跨进程目标互斥锁。稳定 filesystem capability SID 保留在对象上,每条命令的 token
|
|
@@ -336,7 +349,8 @@ native 文本权威改在摘要固定的 `manylinux_2_28` 构建器中编译,
|
|
|
336
349
|
scope 在 SDK、Agent 摘要、CLI 与 Runtime Worker 请求间共享,保留结构化的 Child Agent Provider
|
|
337
350
|
失败信息,精确遵循 run-scoped 凭据校验,并为严格 vLLM 网关省略空 `tools` 数组(Issues 329-332)。
|
|
338
351
|
npm 发布仍由
|
|
339
|
-
|
|
352
|
+
npm 发布仍由
|
|
353
|
+
维护者手动执行。详见 [v0.7.96-beta.6 发布清单](docs/release.md#v0796-beta6-release-preparation)。
|
|
340
354
|
|
|
341
355
|
**v0.7.96-alpha.3 发布**:Provider 凭据成为惰性、受限、可撤销的能力(ADR-068)。v2
|
|
342
356
|
credential broker 将 Provider 密钥保留在 OS keychain,按每次 wire call、为单一封闭
|
|
@@ -888,7 +902,7 @@ Verifier 的 `revise` / `blocked` 可执行消息;JSONL 输出使用同形
|
|
|
888
902
|
|
|
889
903
|
`imageInput: true` 会在 KodaX 所有层面(provider 实例、能力查询、policy gate)强制 `capabilityProfile.multimodalSupport: "image-input"`,显式写了 `"none"` 也会被覆盖。进阶写法 —— 手写 `capabilityProfile` 块并设 `"multimodalSupport": "image-input"` —— 同样有效,详见 [Custom Providers](public_docs/configuration/custom-providers.md)。纯文本模型保持不设即可,图片 artifact 会在请求发出前被 `MODEL_INPUT_UNSUPPORTED` 拒绝。
|
|
890
904
|
|
|
891
|
-
内置 vision-capable alias(Anthropic、OpenAI、Kimi、Qwen、Zhipu、MiniMax、MiMo、Ark,以及通过 CLI `@<path>` file-include 语法传图的 Gemini-CLI
|
|
905
|
+
内置 vision-capable alias(Anthropic、OpenAI、Kimi、Qwen、Zhipu、MiniMax、MiMo、Ark,以及通过 CLI `@<path>` file-include 语法传图的 Gemini-CLI)已经默认开了图片输入。内置 `deepseek` 的默认模型 `deepseek-flash`(DeepSeek-V4.1-Flash)原生支持图片理解;兼容名 `deepseek-v4-pro` 和 Codex-CLI 是纯文本;自定义 provider 在底层模型支持图片输入时需要手动 opt-in。
|
|
892
906
|
|
|
893
907
|
序列化层(Anthropic-compat 走 `packages/llm/src/providers/anthropic.ts:1431`,OpenAI-compat 走 `openai.ts:1496`)通过基类继承自动转发 image block —— OpenAI-compatible 端点收到的是标准 `image_url` 块。这个 flag 只控制 KodaX 自身是否预先拒绝多模态请求 —— 上游模型到底支不支持 vision 由 provider 自己决定。如果模型实际是 text-only,你会看到真实的上游 API 错误,而不是 KodaX 一侧的 `[Provider Policy] multimodal requests are unsupported` 预拦截。
|
|
894
908
|
|
|
@@ -1013,7 +1027,7 @@ dist/binary/linux-x64/
|
|
|
1013
1027
|
| mimo | `MIMO_API_KEY` | Native | mimo-v2.5-pro(小米 MiMo 按量计费,Anthropic 协议) |
|
|
1014
1028
|
| mimo-coding | `MIMO_CODING_API_KEY` | Native | mimo-v2.5-pro(小米 MiMo Token Plan,Anthropic 协议) |
|
|
1015
1029
|
| ark-coding | `ARK_CODING_API_KEY` | Native | glm-5.3(火山方舟 Coding Plan — GLM-5.3(1M ctx、128K out) · GLM-5.2(别名 `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) |
|
|
1016
|
-
| deepseek | `DEEPSEEK_API_KEY` | Native | deepseek-
|
|
1030
|
+
| deepseek | `DEEPSEEK_API_KEY` | Native | deepseek-flash(Anthropic 协议;DeepSeek-V4.1-Flash,1M ctx,原生图片理解;可 `/model` 切换纯文本兼容名 `deepseek-v4-pro`) |
|
|
1017
1031
|
| gemini-cli | 由 Provider CLI 完成认证(无 KodaX API-key 环境变量) | Prompt-only / CLI bridge | (通过 gemini CLI) |
|
|
1018
1032
|
| codex-cli | 由 Provider CLI 完成认证(无 KodaX API-key 环境变量) | Prompt-only / CLI bridge | (通过 codex CLI) |
|
|
1019
1033
|
|
|
@@ -7,10 +7,10 @@
|
|
|
7
7
|
// Active provider alias and optional model override. Run `kodax setup` or
|
|
8
8
|
// `/model` instead of editing these manually when possible.
|
|
9
9
|
// "provider": "deepseek",
|
|
10
|
-
// "model": "deepseek-
|
|
10
|
+
// "model": "deepseek-flash",
|
|
11
11
|
// Add or reorder model ids shown by `/model` for a provider.
|
|
12
12
|
// "providerModels": {
|
|
13
|
-
// "deepseek": ["deepseek-
|
|
13
|
+
// "deepseek": ["deepseek-flash", "deepseek-v4-pro"]
|
|
14
14
|
// },
|
|
15
15
|
|
|
16
16
|
// Interactive Runtime hosting: "embedded" (this process) or "daemon".
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
-
import{Aa as e,Ba as f,Ra as g,Ta as h,a as c,
|
|
2
|
+
import{Aa as e,Ba as f,Ra as g,Ta as h,a as c,hb as i,ib as j,qb as k,za as d}from"./chunk-NYY22UMB.js";import"./chunk-74NX3QYO.js";import"./chunk-RZD74TRO.js";import"./chunk-FJCIXSA2.js";import"./chunk-STHS3HRP.js";import{Ob as a,Pb as b}from"./chunk-3WUM7FEF.js";import"./chunk-YRIFVRVY.js";import"./chunk-RPTNKNZG.js";import"./chunk-ONUPGMER.js";export{e as bucketProviderPayloadSize,g as buildAutoRepoIntelligenceContext,f as checkPromiseSignal,b as cleanupIncompleteToolCalls,h as describeTransientProviderRetry,c as emitResilienceDebug,d as estimateProviderPayloadBytes,k as runKodaX,j as saveRequiredSessionSnapshot,i as saveSessionSnapshot,a as validateAndFixToolHistory};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
+
import{Ma as a,Na as b}from"./chunk-7EIJFMUQ.js";import"./chunk-JQMSG2WG.js";import"./chunk-GRNAJPQQ.js";import"./chunk-737MIK3X.js";import"./chunk-33HFMRDF.js";import"./chunk-NYY22UMB.js";import"./chunk-74NX3QYO.js";import"./chunk-HFXXLSY5.js";import"./chunk-RZD74TRO.js";import"./chunk-FJCIXSA2.js";import"./chunk-STHS3HRP.js";import"./chunk-3WUM7FEF.js";import"./chunk-YRIFVRVY.js";import"./chunk-RPTNKNZG.js";import"./chunk-ONUPGMER.js";export{a as ArgumentCompleter,b as createArgumentCompleter};
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
-
import{D,J as F}from"./chunk-
|
|
2
|
+
import{D,J as F}from"./chunk-HFXXLSY5.js";import{r as q,s as j,t as N,u as P,va as C}from"./chunk-RZD74TRO.js";import{Bg as _,Cg as b,Dg as x,Nd as W,Od as M,Td as I,wg as $,xg as k,yg as y}from"./chunk-3WUM7FEF.js";import{$a as E,tb as O,x as v,y as T}from"./chunk-RPTNKNZG.js";import{a as o}from"./chunk-ONUPGMER.js";import{join as Le}from"node:path";var ae=["You generate KodaX Dynamic Workflow scripts.","Return JSON only. Do not wrap the answer in prose.","For simple tasks that do not benefit from multiple agents, return:",'{"action":"decline","reason":"..."}',"For complex tasks, return:",'{"action":"generate","manifest":{...},"source":"async function run(wf, args) { ... }","approvalSummary":"..."}',"Generated source may only coordinate agents through wf and args.","Generated source must return displayable final text for the user.","Never use import, require, process, fs, child_process, network APIs, shell commands, or direct file access."].join(`
|
|
3
3
|
`),G=12e4,le="KODAX_WORKFLOW_GENERATION_TIMEOUT_SEC",ce="KODAX_WORKFLOW_GENERATION_TIMEOUT_MS",ue=64,fe=2,de=2e3,pe=[{name:"default"},{name:"variant-results",finalText:o((e,n)=>`Variant smoke child report from ${e} (${n}).`,"finalText"),synthesizeText:"Variant smoke synthesis report."},{name:"unverified-success",status:o(()=>"completed_unverified","status"),finalText:o(e=>`Smoke result for ${e}: completed with verification warnings.`,"finalText"),synthesizeText:"Smoke synthesis: completed with verification warnings."},{name:"empty-args-rerun",args:o(()=>({}),"args")}],me=[{id:"import",pattern:/\bimport\s*(?:\(|['"*{]|\w+\s+from\b)/},{id:"require",pattern:/\brequire\s*\(/},{id:"process",pattern:/\bprocess\s*(?:\.|\[)/},{id:"fs",pattern:/\b(?:node:)?fs\b/},{id:"child_process",pattern:/\bchild_process\b/},{id:"shell",pattern:/\b(?:exec|spawn|execFile)\s*\(/},{id:"fetch",pattern:/\bfetch\s*\(/},{id:"Deno",pattern:/\bDeno\s*(?:\.|\[)/},{id:"Bun",pattern:/\bBun\s*(?:\.|\[)/},{id:"globalThis-index",pattern:/\bglobalThis\s*\[/}];function we(e=process.env,n){let t=v(n?.workflow?.generationTimeoutSec,"timeouts.workflow.generationTimeoutSec");if(t!==void 0)return t;let r=T(e[le]);if(r!==void 0)return r;let s=e[ce];if(s===void 0||s.trim().length===0)return G;let i=Number(s);return!Number.isFinite(i)||i<=0?G:Math.floor(i)}o(we,"resolveWorkflowGenerationTimeoutMs");function he(e,n){if(typeof e!="object"||e===null)throw new Error(`${n} must be an object`);return e}o(he,"readRecord");function K(e,n){let t=e[n];if(typeof t!="string"||t.trim().length===0)throw new Error(`workflow generation ${n} must be a non-empty string`);return t}o(K,"readNonEmptyString");function ge(e){let n=e.trim(),t=/^```(?:json)?\s*([\s\S]*?)\s*```$/i.exec(n);if(t?.[1])return t[1].trim();let r=n.indexOf("{"),s=n.lastIndexOf("}");if(r>=0&&s>r)return n.slice(r,s+1);throw new Error("workflow generation output did not contain a JSON object")}o(ge,"extractJsonText");function ke(e){let n=ge(e);return he(JSON.parse(n),"workflow generation output")}o(ke,"parseGenerationJson");function ye(e){if(typeof e=="string"){let t=e.trim();return t.length>0?t:void 0}if(typeof e!="object"||e===null)return;let n=e;for(let t of["name","id","title","phase"]){let r=n[t];if(typeof r=="string"&&r.trim().length>0)return r.trim()}}o(ye,"normalizePhaseEntry");function be(e){return e.split(/(?:->|\u2192|,|\n)/).map(n=>n.trim()).filter(n=>n.length>0)}o(be,"splitPhaseString");function xe(e){if(typeof e!="object"||e===null)return e;let n=e,t=n.phases,r;if(Array.isArray(t)){let s=t.map(ye);s.every(i=>i!==void 0)&&(r=s)}else if(typeof t=="string"){let s=be(t);s.length>0&&(r=s)}return r?{...n,phases:r}:e}o(xe,"normalizeGeneratedManifestCandidate");function ve(e){return e.match(/\bwf\.(?:runAgent|spawnAgent|synthesize)\s*\(/g)?.length??0}o(ve,"estimateDirectAgentCalls");function Se(e,n){let t=e.maxConcurrency*Math.max(1,e.phases.length)+2,r=ve(n)+2,s=Math.min(ue,Math.max(e.maxAgents,t,r));return s>e.maxAgents?{...e,maxAgents:s}:e}o(Se,"reserveGeneratedWorkflowAgentCapacity");function w(e){let n="",t=0,r=["code"],s=[0];for(;t<e.length;){let i=e[t],a=e[t+1];if(r[r.length-1]==="template"){if(i==="\\"){n+=" ",t+=2;continue}if(i==="`"){n+=" ",t+=1,r.pop(),s.pop();continue}if(i==="$"&&a==="{"){n+=" ",t+=2,r.push("code"),s.push(0);continue}n+=i===`
|
|
4
4
|
`?`
|
|
5
5
|
`:" ",t+=1;continue}if(i==="/"&&a==="/"){for(n+=" ",t+=2;t<e.length&&e[t]!==`
|