@kodax-ai/kodax 0.7.91 → 0.7.92
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 +42 -0
- package/README.md +18 -0
- package/README_CN.md +15 -0
- package/dist/chunks/{agent-YLYM2UIQ.js → agent-YHHFIH7N.js} +1 -1
- package/dist/chunks/argument-completer-6ZTRBNZM.js +2 -0
- package/dist/chunks/{chunk-3SVR6PC4.js → chunk-5CIKWSCA.js} +2 -2
- package/dist/chunks/{chunk-4R4QTBO6.js → chunk-7XSZVOG7.js} +135 -135
- package/dist/chunks/{chunk-4S5ZAR6N.js → chunk-A6GNPNGB.js} +4 -4
- package/dist/chunks/{chunk-UNTT2ZKN.js → chunk-AGZNXFHZ.js} +205 -204
- package/dist/chunks/chunk-BV3SVH36.js +519 -0
- package/dist/chunks/{chunk-7RF2XYFK.js → chunk-GH3KBC2H.js} +1 -1
- package/dist/chunks/{chunk-G5XXC7ON.js → chunk-GRWUC6H7.js} +1 -1
- package/dist/chunks/{chunk-XQWPHL6U.js → chunk-OSQIYUGD.js} +123 -123
- package/dist/chunks/{chunk-MGM5SUKU.js → chunk-PKPBII4F.js} +2 -2
- package/dist/chunks/{chunk-YQSQEF6J.js → chunk-QKLS4BYA.js} +173 -173
- package/dist/chunks/{chunk-7YQT4RAW.js → chunk-QPBN3J4E.js} +2 -2
- package/dist/chunks/{chunk-P7AW3CQW.js → chunk-RJIYXB62.js} +1 -1
- package/dist/chunks/{chunk-HXORFXTH.js → chunk-THZVJ6R7.js} +1 -1
- package/dist/chunks/{chunk-ZNH2MKN5.js → chunk-YVG6OKN7.js} +1 -1
- package/dist/chunks/{client-SKLNEU3G.js → client-OVYKC3ND.js} +1 -1
- package/dist/chunks/{compaction-config-UEGW2ZBT.js → compaction-config-2TVSYSB4.js} +1 -1
- package/dist/chunks/{construction-bootstrap-OUKXVNUQ.js → construction-bootstrap-QVLJPFTL.js} +1 -1
- package/dist/chunks/{dist-7EWVACPM.js → dist-XC5M7UYX.js} +1 -1
- package/dist/chunks/host-B3TK2U43.js +2 -0
- package/dist/chunks/{run-manager-J4WO55J2.js → run-manager-5AV3MR4W.js} +1 -1
- package/dist/chunks/{utils-NZXGH43M.js → utils-HPVZCR2J.js} +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.js +1 -1
- package/dist/kodax_bootstrap.js +1 -1
- package/dist/kodax_cli.js +1354 -1353
- package/dist/runtime-worker.js +1173 -1172
- package/dist/sandbox-workspace-session.js +268 -267
- package/dist/sdk-a2a.d.ts +2 -2
- package/dist/sdk-a2a.js +1 -1
- package/dist/sdk-agent.d.ts +6 -1
- package/dist/sdk-agent.js +1 -1
- package/dist/sdk-coding.js +1 -1
- package/dist/sdk-experimental-memory.js +1 -1
- package/dist/sdk-mcp.js +1 -1
- package/dist/sdk-repl.d.ts +6 -6
- package/dist/sdk-repl.js +1 -1
- package/dist/sdk-runtime.d.ts +5 -4
- package/dist/sdk-runtime.js +1 -1
- package/dist/sdk-sandbox.d.ts +1 -1
- package/dist/sdk-sandbox.js +1 -1
- package/dist/sdk-session.d.ts +2 -2
- package/dist/sdk-session.js +1 -1
- package/dist/sdk-skills.js +1 -1
- package/dist/semantic-worker.js +77 -76
- package/dist/types-chunks/{public-api.d-ItHKrP7K.d.ts → public-api.d-BsZWOq3P.d.ts} +2 -0
- package/dist/types-chunks/{repl.d-Beg6tiSz.d.ts → repl.d-DxD0Olm0.d.ts} +2 -2
- package/dist/types-chunks/{sdk-session-C7aoqrIR.d.ts → sdk-session-BTzblJTQ.d.ts} +1 -1
- package/dist/types-chunks/{utils.d-Qa_Z1w2Q.d.ts → utils.d-50Q24Few.d.ts} +1 -1
- package/package.json +2 -1
- package/dist/chunks/argument-completer-4WND7KNM.js +0 -2
- package/dist/chunks/chunk-XC2GKTSX.js +0 -519
- package/dist/chunks/host-GDDQKQKH.js +0 -2
package/CHANGELOG.md
CHANGED
|
@@ -8,6 +8,48 @@ All notable changes to this project will be documented in this file.
|
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
+
## [0.7.92] - 2026-08-18
|
|
12
|
+
|
|
13
|
+
### Fixed
|
|
14
|
+
|
|
15
|
+
- The shared filesystem-effect coordinator now identifies queue ownership by an
|
|
16
|
+
operation token, refreshes live waiters, and reclaims abandoned same-process
|
|
17
|
+
tickets only after the ticket heartbeat is stale and no exact coordinator lock
|
|
18
|
+
is owned. A durable release marker lets a later caller remove a settled
|
|
19
|
+
direct-effect owner even while the long-lived daemon PID remains alive.
|
|
20
|
+
- File-lock release handoff is retryable: the owner handle is closed once, and
|
|
21
|
+
a release marker is written only when owner cleanup cannot finish, so a later
|
|
22
|
+
waiter can recover instead of stalling on a half-released lock.
|
|
23
|
+
- Managed Runs commit the canonical Session before reporting managed
|
|
24
|
+
completion. Repository-intelligence and managed-task file projections run as
|
|
25
|
+
best-effort maintenance, and Runtime no longer treats the managed
|
|
26
|
+
`onComplete` cleanup callback as terminal authority ahead of the executor
|
|
27
|
+
Promise. `KodaXResult.managedTask` is the terminal core snapshot; maintenance
|
|
28
|
+
may add repo-intelligence evidence to the eventual on-disk projection without
|
|
29
|
+
mutating the already-returned result.
|
|
30
|
+
- Resume reconstruction treats canonical Session `messages` as the only source
|
|
31
|
+
of ordinary conversation. A sparse, stale, or slash-command-only `uiHistory`
|
|
32
|
+
cache can overlay timestamps, compact labels, icons, and sanitized tool cards,
|
|
33
|
+
or append display-only entries such as `/quit`, but it can no longer hide
|
|
34
|
+
user/assistant history or evict the 150-item / 50-round canonical window.
|
|
35
|
+
Presentation-only `agent-completed` and legacy `task-completed` events stay
|
|
36
|
+
host-owned: a non-empty CLI `uiHistory` decides whether they were displayed,
|
|
37
|
+
while headless/no-cache restore still derives them from messages.
|
|
38
|
+
|
|
39
|
+
### Changed
|
|
40
|
+
|
|
41
|
+
- `sandboxRuntime` advances to v4 for stale coordinator-ticket and
|
|
42
|
+
recorded-release convergence,
|
|
43
|
+
and `crashOutcomeModel` advances to v2 for the terminal-commit ordering. Both
|
|
44
|
+
capabilities are exported as pre-start SDK facts so hosts can replace an idle
|
|
45
|
+
stale daemon or fail closed while it is busy.
|
|
46
|
+
- Generic file-lock timeouts now use `KodaXFileLockTimeoutError` instead of the
|
|
47
|
+
misleading learning-specific message. Sandbox-to-ordinary execution fallback
|
|
48
|
+
remains unchanged: both paths must acquire the same filesystem-effect fence,
|
|
49
|
+
so an unproven coordinator state is never bypassed or replayed.
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
11
53
|
## [0.7.91] - 2026-08-17
|
|
12
54
|
|
|
13
55
|
### Added
|
package/README.md
CHANGED
|
@@ -726,6 +726,24 @@ permission UI, and recovers stale prepared Session tails through an
|
|
|
726
726
|
authoritative merge. Background persistence failures are surfaced as
|
|
727
727
|
diagnostics rather than hidden.
|
|
728
728
|
|
|
729
|
+
**v0.7.92 release:** the filesystem-effect coordinator now gives each
|
|
730
|
+
queue attempt an exact token and heartbeat. It can reclaim a stale same-daemon
|
|
731
|
+
ticket only when that token no longer owns the coordinator lock, and durable
|
|
732
|
+
release evidence lets a later caller retire the matching settled effect owner.
|
|
733
|
+
An exact active lock, unknown process-tree outcome, or uncommitted command still
|
|
734
|
+
fails closed. Managed terminal ordering now commits the canonical Session
|
|
735
|
+
before completion and moves repo-intelligence/task-file projection outside the
|
|
736
|
+
active Run. The returned `KodaXResult.managedTask` is the terminal core snapshot;
|
|
737
|
+
maintenance may augment the later on-disk projection. Ordinary-permission
|
|
738
|
+
fallback continues to use the same effect fence. Resumed TUI history is rebuilt
|
|
739
|
+
from canonical Session messages first; a sparse `uiHistory` cache can overlay
|
|
740
|
+
display metadata but cannot hide ordinary conversation. Presentation-only
|
|
741
|
+
synthetic completion events stay host-owned when a non-empty CLI `uiHistory`
|
|
742
|
+
exists. Hosts must negotiate
|
|
743
|
+
`sandboxRuntime:4` and `crashOutcomeModel:2`. See the
|
|
744
|
+
[v0.7.92 release checklist](docs/release.md#v0792-release-preparation)
|
|
745
|
+
and [SDK Embedder Guide](public_docs/sdk/embedder-guide.md).
|
|
746
|
+
|
|
729
747
|
**v0.7.87 GLM provider release:** `zhipu-coding` defaults to `glm-5.3` and
|
|
730
748
|
retains `glm-5.2` as an explicit rollback route. `zai-coding` retained both
|
|
731
749
|
models but defaulted to `glm-5.2` until the overseas Coding Plan rollout
|
package/README_CN.md
CHANGED
|
@@ -266,6 +266,21 @@ SDK 系统代码契约更新,但没有放宽 shell/sandbox 的 fail-closed 边
|
|
|
266
266
|
`handleRuntimePermissionRequest()` 管理 SDK 权限 UI,并在 prepared Session 尾部遇到
|
|
267
267
|
`data_changed` 时通过权威 delta 合并恢复;后台持久化失败会显示为诊断,不再静默丢失。
|
|
268
268
|
|
|
269
|
+
**v0.7.92 发布**:文件系统效应协调器为每次排队使用精确 token 并 heartbeat。
|
|
270
|
+
只有当该 token 不再持有 coordinator lock 时,才会回收同一长期 daemon PID 上的过期票;
|
|
271
|
+
durable release marker 允许后续调用退役已结算的 effect owner。精确仍持有的 lock、
|
|
272
|
+
未证实的进程树或未启动的命令继续 fail-closed。Managed 终态在 completion 之前提交
|
|
273
|
+
canonical Session,repo-intelligence / task 文件投影不再拖住活跃 Run。
|
|
274
|
+
`KodaXResult.managedTask` 是终态核心快照;维护工作只会增强随后落盘的投影。
|
|
275
|
+
普通权限 fallback 仍走同一 effect fence。Resume 时 TUI 历史先从 canonical
|
|
276
|
+
Session messages 重建;稀疏的 `uiHistory` 只能叠加展示信息,不能遮蔽普通对话。
|
|
277
|
+
展示用的 `agent-completed` / `task-completed` 在 CLI 已有非空 `uiHistory`
|
|
278
|
+
时仍由宿主决定是否显示。
|
|
279
|
+
宿主必须协商 `sandboxRuntime:4` 和 `crashOutcomeModel:2`。Issue 256 的
|
|
280
|
+
lost-ancestor descendant-closure 仍保持 Open。
|
|
281
|
+
详见 [v0.7.92 发布清单](docs/release.md#v0792-release-preparation) 与
|
|
282
|
+
[SDK Embedder Guide](public_docs/sdk/embedder-guide.md)。
|
|
283
|
+
|
|
269
284
|
**v0.7.87 GLM Provider 发布**:`zhipu-coding` 默认使用 `glm-5.3`,并保留 `glm-5.2` 作为显式回退路由。`zai-coding` 当时保留两个模型但默认使用 `glm-5.2`,直到 v0.7.88 的海外 Coding Plan 路由切换。Coding Plan model ID 原样发送,不附加 context 后缀。GLM-5.3 的思考不可关闭,因此 `off` / `none` 会降级为 `low`,不会发送上游不支持的 disabled-thinking 请求。Issue 256 剩余的 Worker owner lease 边界在 v0.7.87 后仍保持 Open,且本版本不指定新的替代目标。详见 [v0.7.87 发布清单](docs/release.md#v0787-release-preparation)。
|
|
270
285
|
|
|
271
286
|
Windows workspace Shell 还会保留大小写不敏感的 `PATH`/`Path` 与 `PATHEXT` 约定,
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// @kodax-ai/kodax — bundled distribution. See docs/ADR.md ADR-022 + ADR-024.
|
|
2
|
-
import{Ka as g,Ma as h,Za as i,_a as j,a as c,sa as d,ta as e,ua as f,yc as k}from"./chunk-
|
|
2
|
+
import{Ka as g,Ma as h,Za as i,_a as j,a as c,sa as d,ta as e,ua as f,yc as k}from"./chunk-RJIYXB62.js";import"./chunk-X75UGXP3.js";import"./chunk-AGZNXFHZ.js";import"./chunk-GH3KBC2H.js";import"./chunk-YVG6OKN7.js";import"./chunk-FBL7IVMK.js";import{Jb as a,Kb as b}from"./chunk-7XSZVOG7.js";import"./chunk-QFV6YCIH.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{Ha as a,Ia as b}from"./chunk-PKPBII4F.js";import"./chunk-5CIKWSCA.js";import"./chunk-GRWUC6H7.js";import"./chunk-OSQIYUGD.js";import"./chunk-THZVJ6R7.js";import"./chunk-RJIYXB62.js";import"./chunk-X75UGXP3.js";import"./chunk-QPBN3J4E.js";import"./chunk-AGZNXFHZ.js";import"./chunk-GH3KBC2H.js";import"./chunk-YVG6OKN7.js";import"./chunk-FBL7IVMK.js";import"./chunk-7XSZVOG7.js";import"./chunk-QFV6YCIH.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{ga as Se,ia as Ce}from"./chunk-
|
|
2
|
+
import{ga as Se,ia as Ce}from"./chunk-RJIYXB62.js";import{Aa as Ee,Ba as R,C as B,Ea as Z,F as q,G as me,H as J,Pa as be,Ua as xe,oa as he,pa as ge,q as pe,qa as ve,ra as ye,sa as we,ta as Y}from"./chunk-FBL7IVMK.js";import{Ia as Pe,Qa as ke}from"./chunk-7XSZVOG7.js";import{a as r}from"./chunk-ONUPGMER.js";import m from"fs";import h from"path";import{exec as yt,spawnSync as wt}from"child_process";import{promisify as Et}from"util";import{fileURLToPath as bt}from"url";var Q="en";function Je(){return(process.env.LC_ALL||process.env.LC_MESSAGES||process.env.LANG||"").toLowerCase().startsWith("zh")?"zh":"en"}r(Je,"detectSystemLocale");function Me(e){if(!e||e==="auto"){Q=Je();return}Q=e.toLowerCase().replace(/[-_].*/,"")==="zh"?"zh":"en"}r(Me,"setLocale");var _e={en:{"dialog.confirm":"[Confirm]","dialog.select":"[Select]","dialog.input":"[Input]","confirm.instruction.basic":"Press (y) yes, (n) no","confirm.instruction.always":"Press (y) yes, (a) always yes for this tool, (n) no","confirm.instruction.runtime_session":"Press (y) allow once, (s) allow this Runtime scope for the session, (n) no","confirm.instruction.runtime_persistent":"Press (y) allow once, (s) allow this Runtime scope for the session, (a) always allow this Runtime scope, (n) no","confirm.instruction.protected":"Press (y) to confirm, (n) to cancel (protected path)","confirm.result.approved":"Approved","confirm.result.approved_always":"Approved (always)","confirm.result.approved_session":"Approved (this session)","confirm.result.denied":"Denied","tool.bash.title":"Execute bash command?","tool.shell.title":"Execute shell command?","tool.write.title":"Write to file?","tool.edit.title":"Edit file?","tool.generic.title":"Execute {tool}?","field.reason":"Reason","field.intent":"Intent","field.target":"Target","field.scope":"Scope","field.risk":"Risk","field.summary":"Summary","intent.read":"Read project files","intent.delete":"Delete files","intent.deps":"Modify dependencies or environment","intent.modify":"Modify files","intent.execute":"Execute command","intent.write_file":"Write file","intent.edit_file":"Edit file","intent.use_tool":"Use {tool}","risk.destructive":"Destructive change","risk.deps":"May change dependencies or local tools","risk.modify":"May modify files","risk.unknown":"Command effects depend on its arguments","risk.network":"May access network","scope.outside":"Outside project","scope.protected":"Protected path","waiting.confirm":"Waiting: approval required","waiting.select":"Waiting: choose an option","waiting.input":"Waiting: answer the prompt","placeholder.confirm":"Respond to the approval prompt above...","placeholder.select":"Choose an option above...","placeholder.input":"Answer the prompt above...","placeholder.busy":"Agent is busy...","placeholder.queue":"Queue a follow-up for the next round...","placeholder.idle":"Type a message...","select.choice":"Choice:","select.type_number":"(type a number)","select.more":"{count} more choices...","select.more_above":"\u2191 {count} more above","select.more_below":"\u2193 {count} more below","select.confirm_hint":"Press Enter to confirm, Esc to cancel","select.navigate_hint":"Use \u2191\u2193 to navigate, Enter to confirm, Esc to cancel","select.multiselect_hint":"Use \u2191\u2193 to navigate, Space to toggle, Enter to confirm, Esc to cancel","select.multiselect_empty":"Select at least one option with Space before confirming.","select.multiselect_min":"Select at least {min} option(s) with Space before confirming.","select.multiselect_max":"Select at most {max} option(s) with Space before confirming.","select.back_prev":"\u2190 Back to previous question","input.default":"Default:","input.value":"Value:","input.type_response":"(type your response)","managed.completed":"Task completed","managed.completed.blocked":"Task blocked","managed.completed.continuation":"Task needs continuation","todo.progress":"{completed}/{total} completed","todo.transcript.progress":"Plan {completed}/{total} completed","todo.summary.done":"{count} done","todo.summary.more":"+{count} more",cancelled:"[Cancelled] Operation cancelled by user"},zh:{"dialog.confirm":"[\u786E\u8BA4]","dialog.select":"[\u9009\u62E9]","dialog.input":"[\u8F93\u5165]","confirm.instruction.basic":"\u6309 (y) \u786E\u8BA4, (n) \u62D2\u7EDD","confirm.instruction.always":"\u6309 (y) \u786E\u8BA4, (a) \u59CB\u7EC8\u5141\u8BB8\u6B64\u5DE5\u5177, (n) \u62D2\u7EDD","confirm.instruction.runtime_session":"\u6309 (y) \u4EC5\u5141\u8BB8\u4E00\u6B21, (s) \u672C\u4F1A\u8BDD\u59CB\u7EC8\u5141\u8BB8\u8FD9\u9879\u7CBE\u786E\u64CD\u4F5C, (n) \u62D2\u7EDD","confirm.instruction.runtime_persistent":"\u6309 (y) \u4EC5\u5141\u8BB8\u4E00\u6B21, (s) \u672C\u4F1A\u8BDD\u59CB\u7EC8\u5141\u8BB8\u8FD9\u9879\u7CBE\u786E\u64CD\u4F5C, (a) \u59CB\u7EC8\u5141\u8BB8\u8FD9\u9879\u7CBE\u786E\u64CD\u4F5C, (n) \u62D2\u7EDD","confirm.instruction.protected":"\u6309 (y) \u786E\u8BA4, (n) \u53D6\u6D88 (\u53D7\u4FDD\u62A4\u8DEF\u5F84)","confirm.result.approved":"\u5DF2\u6279\u51C6","confirm.result.approved_always":"\u5DF2\u6279\u51C6 (\u59CB\u7EC8\u5141\u8BB8)","confirm.result.approved_session":"\u5DF2\u6279\u51C6 (\u672C\u4F1A\u8BDD)","confirm.result.denied":"\u5DF2\u62D2\u7EDD","tool.bash.title":"\u6267\u884C bash \u547D\u4EE4\uFF1F","tool.shell.title":"\u6267\u884C shell \u547D\u4EE4\uFF1F","tool.write.title":"\u5199\u5165\u6587\u4EF6\uFF1F","tool.edit.title":"\u7F16\u8F91\u6587\u4EF6\uFF1F","tool.generic.title":"\u6267\u884C {tool}\uFF1F","field.reason":"\u539F\u56E0","field.intent":"\u610F\u56FE","field.target":"\u76EE\u6807","field.scope":"\u8303\u56F4","field.risk":"\u98CE\u9669","field.summary":"\u6458\u8981","intent.read":"\u8BFB\u53D6\u9879\u76EE\u6587\u4EF6","intent.delete":"\u5220\u9664\u6587\u4EF6","intent.deps":"\u4FEE\u6539\u4F9D\u8D56\u6216\u73AF\u5883","intent.modify":"\u4FEE\u6539\u6587\u4EF6","intent.execute":"\u6267\u884C\u547D\u4EE4","intent.write_file":"\u5199\u5165\u6587\u4EF6","intent.edit_file":"\u7F16\u8F91\u6587\u4EF6","intent.use_tool":"\u4F7F\u7528 {tool}","risk.destructive":"\u7834\u574F\u6027\u53D8\u66F4","risk.deps":"\u53EF\u80FD\u4FEE\u6539\u4F9D\u8D56\u6216\u672C\u5730\u5DE5\u5177","risk.modify":"\u53EF\u80FD\u4FEE\u6539\u6587\u4EF6","risk.unknown":"\u547D\u4EE4\u6548\u679C\u53D6\u51B3\u4E8E\u53C2\u6570","risk.network":"\u53EF\u80FD\u8BBF\u95EE\u7F51\u7EDC","scope.outside":"\u9879\u76EE\u5916\u90E8","scope.protected":"\u53D7\u4FDD\u62A4\u8DEF\u5F84","waiting.confirm":"\u7B49\u5F85\u4E2D\uFF1A\u9700\u8981\u5BA1\u6279","waiting.select":"\u7B49\u5F85\u4E2D\uFF1A\u8BF7\u9009\u62E9","waiting.input":"\u7B49\u5F85\u4E2D\uFF1A\u8BF7\u56DE\u7B54","placeholder.confirm":"\u8BF7\u56DE\u5E94\u4E0A\u65B9\u7684\u5BA1\u6279\u63D0\u793A...","placeholder.select":"\u8BF7\u5728\u4E0A\u65B9\u9009\u62E9\u4E00\u4E2A\u9009\u9879...","placeholder.input":"\u8BF7\u56DE\u7B54\u4E0A\u65B9\u7684\u63D0\u793A...","placeholder.busy":"\u667A\u80FD\u4F53\u6B63\u5728\u5DE5\u4F5C\u4E2D...","placeholder.queue":"\u6392\u961F\u7B49\u5F85\u4E0B\u4E00\u8F6E\u8DDF\u8FDB...","placeholder.idle":"\u8F93\u5165\u6D88\u606F...","select.choice":"\u9009\u9879\uFF1A","select.type_number":"(\u8F93\u5165\u7F16\u53F7)","select.more":"\u8FD8\u6709 {count} \u4E2A\u9009\u9879...","select.more_above":"\u2191 \u4E0A\u65B9\u8FD8\u6709 {count} \u4E2A","select.more_below":"\u2193 \u4E0B\u65B9\u8FD8\u6709 {count} \u4E2A","select.confirm_hint":"\u6309 Enter \u786E\u8BA4\uFF0CEsc \u53D6\u6D88","select.navigate_hint":"\u4F7F\u7528 \u2191\u2193 \u5BFC\u822A\uFF0CEnter \u786E\u8BA4\uFF0CEsc \u53D6\u6D88","select.multiselect_hint":"\u4F7F\u7528 \u2191\u2193 \u5BFC\u822A\uFF0C\u7A7A\u683C \u5207\u6362\u9009\u4E2D\uFF0CEnter \u786E\u8BA4\uFF0CEsc \u53D6\u6D88","select.multiselect_empty":"\u8BF7\u5148\u4F7F\u7528\u7A7A\u683C\u9009\u62E9\u81F3\u5C11\u4E00\u4E2A\u9009\u9879\u3002","select.multiselect_min":"\u8BF7\u5148\u4F7F\u7528\u7A7A\u683C\u81F3\u5C11\u9009\u62E9 {min} \u4E2A\u9009\u9879\u3002","select.multiselect_max":"\u6700\u591A\u53EA\u80FD\u9009\u62E9 {max} \u4E2A\u9009\u9879\u3002","select.back_prev":"\u2190 \u8FD4\u56DE\u4E0A\u4E00\u9898","input.default":"\u9ED8\u8BA4\u503C\uFF1A","input.value":"\u503C\uFF1A","input.type_response":"(\u8F93\u5165\u4F60\u7684\u56DE\u7B54)","managed.completed":"\u4EFB\u52A1\u5B8C\u6210","managed.completed.blocked":"\u4EFB\u52A1\u53D7\u963B","managed.completed.continuation":"\u4EFB\u52A1\u9700\u8981\u7EE7\u7EED","todo.progress":"{completed}/{total} \u5DF2\u5B8C\u6210","todo.transcript.progress":"\u8BA1\u5212 {completed}/{total} \u5DF2\u5B8C\u6210","todo.summary.done":"{count} \u9879\u5DF2\u5B8C\u6210","todo.summary.more":"\u53E6\u6709 {count} \u9879",cancelled:"[\u5DF2\u53D6\u6D88] \u64CD\u4F5C\u5DF2\u88AB\u7528\u6237\u53D6\u6D88"}};function qt(e,t){let o=_e[Q][e]??_e.en[e]??e;if(t)for(let[i,s]of Object.entries(t))o=o.replace(`{${i}}`,String(s));return o}r(qt,"t");var Ae={core:`// Split configs: ~/.kodax/integrations/mcp.json, extensions.json, and a2a.json.
|
|
3
3
|
// KodaX core configuration template.
|
|
4
4
|
// Copy only the fields you need to ~/.kodax/config.json (strict JSON).
|
|
5
5
|
// MCP, A2A, and Extensions live in ~/.kodax/integrations/*.json; use
|
|
@@ -275,4 +275,4 @@ import{ga as Se,ia as Ce}from"./chunk-P7AW3CQW.js";import{Aa as Ee,Ba as R,C as
|
|
|
275
275
|
}
|
|
276
276
|
`};function Oe(e){return Ae[e]}r(Oe,"getConfigTemplate");import{closeSync as ne,existsSync as d,fsyncSync as Le,linkSync as rt,mkdirSync as re,openSync as ie,readFileSync as Ne,renameSync as $e,statSync as it,unlinkSync as j,watch as st,writeFileSync as je}from"node:fs";import{createHash as at}from"node:crypto";import f from"node:path";import{closeSync as Ye,mkdirSync as Ze,openSync as Qe,rmSync as et}from"node:fs";import tt from"node:path";var ee=class extends Error{static{r(this,"CoreConfigWriteConflictError")}constructor(t){super(`Core configuration is being changed by another KodaX writer: ${t}`),this.name="CoreConfigWriteConflictError"}};function nt(e){return`${e}.write.lock`}r(nt,"coreConfigWriteLockPath");function ot(e){if(!(!(e instanceof Error)||!("code"in e)))return typeof e.code=="string"?e.code:void 0}r(ot,"errorCode");function E(e,t){Ze(tt.dirname(e),{recursive:!0,mode:448});let n=nt(e),o;try{o=Qe(n,"wx",384)}catch(i){throw ot(i)==="EEXIST"?new ee(e):new Error(`Failed to acquire the core configuration write lock: ${e}`,{cause:i})}try{return t()}finally{Ye(o),et(n,{force:!0})}}r(E,"withCoreConfigWriteLock");var k=class extends Error{static{r(this,"IntegrationConfigConflictError")}constructor(t,n,o){super(`Integration configuration revision changed for ${f.basename(t)} (expected ${n??"missing"}, actual ${o??"missing"}).`),this.name="IntegrationConfigConflictError"}},ct={mcp:"mcp.json",a2a:"a2a.json",extensions:"extensions.json"},lt=new Set(["type","command","args","cwd","env","url","headers","connect","startupTimeoutMs","requestTimeoutMs","auth"]);function P(e){return e!==null&&typeof e=="object"&&!Array.isArray(e)}r(P,"isRecord");function b(e,t){if(!P(e))throw new Error(`${t} must be an object.`);return e}r(b,"requireRecord");function K(e,t,n){let o=Object.keys(e).find(i=>!t.has(i));if(o!==void 0)throw new Error(`${n} has unknown field "${o}".`)}r(K,"assertNoUnknownKeys");function Ke(e,t){if(e.version!==1)throw new Error(`${t} version must be 1.`)}r(Ke,"requireVersionOne");function Ie(e,t){let n=b(e,t);for(let[o,i]of Object.entries(n))if(o.trim().length===0||typeof i!="string")throw new Error(`${t} must contain non-empty string keys and string values.`);return structuredClone(n)}r(Ie,"requireStringMap");function oe(e,t){if(!Array.isArray(e)||!e.every(n=>typeof n=="string"&&n.trim().length>0))throw new Error(`${t} must be an array of non-empty strings.`);return e.map(n=>n.trim())}r(oe,"requireStringArray");function te(e,t){if(e!==void 0&&(!Number.isFinite(e)||Number(e)<=0))throw new Error(`${t} must be a positive number.`)}r(te,"validatePositiveNumber");function dt(e,t){if(e.trim().length===0)throw new Error("MCP server names must not be empty.");let n=b(t,`MCP server "${e}"`);K(n,lt,`MCP server "${e}"`);let o=n.type??"stdio";if(!["stdio","sse","streamable-http","http"].includes(String(o)))throw new Error(`MCP server "${e}" has an unsupported transport type.`);if(o==="stdio"){if(typeof n.command!="string"||n.command.trim().length===0)throw new Error(`MCP server "${e}" stdio transport requires command.`)}else if(typeof n.url!="string"||n.url.trim().length===0)throw new Error(`MCP server "${e}" ${String(o)} transport requires url.`);if(n.args!==void 0&&oe(n.args,`MCP server "${e}" args`),n.cwd!==void 0&&typeof n.cwd!="string")throw new Error(`MCP server "${e}" cwd must be a string.`);if(n.env!==void 0&&Ie(n.env,`MCP server "${e}" env`),n.headers!==void 0&&Ie(n.headers,`MCP server "${e}" headers`),n.connect!==void 0&&!["lazy","prewarm","disabled"].includes(String(n.connect)))throw new Error(`MCP server "${e}" has an unsupported connect mode.`);if(te(n.startupTimeoutMs,`MCP server "${e}" startupTimeoutMs`),te(n.requestTimeoutMs,`MCP server "${e}" requestTimeoutMs`),n.auth!==void 0){let i=b(n.auth,`MCP server "${e}" auth`);if(K(i,new Set(["type","clientId","authorizationUrl","tokenUrl","scopes","redirectPort"]),`MCP server "${e}" auth`),i.type!=="oauth2")throw new Error(`MCP server "${e}" auth type must be oauth2.`);for(let a of["clientId","authorizationUrl","tokenUrl"])if(i[a]!==void 0&&typeof i[a]!="string")throw new Error(`MCP server "${e}" auth.${a} must be a string.`);i.scopes!==void 0&&oe(i.scopes,`MCP server "${e}" auth.scopes`),te(i.redirectPort,`MCP server "${e}" auth.redirectPort`)}return structuredClone(n)}r(dt,"parseMcpServer");function S(e){let t=b(e,"MCP integration config");K(t,new Set(["version","servers"]),"MCP integration config"),Ke(t,"MCP integration config");let n=b(t.servers,"MCP integration config servers"),o={};for(let[i,s]of Object.entries(n))o[i]=dt(i,s);return{version:1,servers:o}}r(S,"parseMcpIntegrationDocument");function C(e){let t=b(e,"Extensions integration config");K(t,new Set(["version","paths"]),"Extensions integration config"),Ke(t,"Extensions integration config");let n=oe(t.paths,"Extensions integration config paths");if(new Set(n).size!==n.length)throw new Error("Extensions integration config paths must not contain duplicates.");return{version:1,paths:n}}r(C,"parseExtensionsIntegrationDocument");function _(e,t){return f.join(f.resolve(t),"integrations",ct[e])}r(_,"resolveIntegrationConfigPath");function A(e){return f.join(f.resolve(e),"config.json")}r(A,"coreConfigPath");function Xe(e){return at("sha256").update(e).digest("hex")}r(Xe,"hashText");function se(e){let t=Ne(e,"utf8");try{return{raw:t,value:JSON.parse(t)}}catch(n){let o=n instanceof Error?n.message:String(n);throw new Error(`Invalid JSON: ${o}`)}}r(se,"readJsonFile");function M(e){return{domain:e.domain,source:e.source,path:e.path,revision:Xe(e.raw),document:structuredClone(e.document),loadedAt:new Date().toISOString()}}r(M,"snapshot");function X(e){let t=A(e);return d(t)?b(se(t).value,"Core config"):{}}r(X,"readCoreConfig");function F(e){let t=_("mcp",e);if(d(t)){let s=se(t);return M({domain:"mcp",source:"user",path:t,raw:s.raw,document:S(s.value)})}let n=A(e),o=X(e).mcpServers,i=S({version:1,servers:o===void 0?{}:o});return M({domain:"mcp",source:o===void 0?"default":"legacy-user",path:o===void 0?t:n,raw:JSON.stringify(i),document:i})}r(F,"readMcpIntegration");function U(e){let t=_("extensions",e);if(d(t)){let s=se(t);return M({domain:"extensions",source:"user",path:t,raw:s.raw,document:C(s.value)})}let n=A(e),o=X(e).extensions,i=C({version:1,paths:o===void 0?[]:o});return M({domain:"extensions",source:o===void 0?"default":"legacy-user",path:o===void 0?t:n,raw:JSON.stringify(i),document:i})}r(U,"readExtensionsIntegration");function ut(e){if(!P(e))return[];let t=[],n=/(token|secret|password|api[_-]?key|authorization)/i;for(let[o,i]of Object.entries(e))if(P(i))for(let s of["env","headers"]){let a=i[s];if(P(a))for(let[c,l]of Object.entries(a))n.test(c)&&typeof l=="string"&&!l.startsWith("${env:")&&t.push(`MCP server "${o}" ${s}.${c} may contain a literal secret.`)}return t}r(ut,"likelySecretWarnings");function ft(e){let t=X(e),n=_("mcp",e),o=_("extensions",e),i=t.mcpServers,s=t.extensions,a=P(i)?Object.keys(i).length:0,c=Array.isArray(s)?s.length:0,l=r((g,L,N)=>d(g)?{action:"none",entries:L,destination:g,reason:"destination-exists"}:N?{action:"create",entries:L,destination:g}:{action:"none",entries:0,destination:g,reason:"legacy-absent"},"domainPlan");return{mcp:l(n,a,i!==void 0),extensions:l(o,c,s!==void 0),warnings:ut(i)}}r(ft,"planLegacyIntegrationMigration");function pt(e,t){let n=A(e);re(f.dirname(n),{recursive:!0,mode:448});let o=`${n}.${process.pid}.${Date.now()}.tmp`,i=ie(o,"wx",384);try{je(i,`${JSON.stringify(t,null,2)}
|
|
277
277
|
`,"utf8"),Le(i)}finally{ne(i)}try{$e(o,n)}catch(s){throw d(o)&&j(o),new Error("Failed to atomically clean legacy integration fields.",{cause:s})}}r(pt,"writeCoreConfigAtomically");function ln(e){return E(A(e.configHome),()=>mt(e))}r(ln,"migrateLegacyIntegrationConfig");function mt(e){let t=ft(e.configHome),n=X(e.configHome),o=t.mcp.action==="create"?S({version:1,servers:P(n.mcpServers)?n.mcpServers:{}}):void 0,i=t.extensions.action==="create"?C({version:1,paths:Array.isArray(n.extensions)?n.extensions:[]}):void 0,s=[];if(o)try{T({domain:"mcp",configHome:e.configHome,expectedRevision:null,document:o,validate:S}),s.push("mcp")}catch(c){if(!(c instanceof k))throw c}if(i)try{T({domain:"extensions",configHome:e.configHome,expectedRevision:null,document:i,validate:C}),s.push("extensions")}catch(c){if(!(c instanceof k))throw c}let a=!1;if(e.cleanupLegacy&&d(A(e.configHome))){let c={...n};d(t.mcp.destination)&&delete c.mcpServers,d(t.extensions.destination)&&delete c.extensions,ht(n,c)||(pt(e.configHome,c),a=!0)}return{...t,applied:s,cleanedLegacy:a}}r(mt,"migrateLegacyIntegrationConfigUnlocked");function ht(e,t){return JSON.stringify(e)===JSON.stringify(t)}r(ht,"isDeepStrictEqualForConfig");function Re(e){return d(e)?Xe(Ne(e,"utf8")):void 0}r(Re,"currentUserRevision");function gt(e){let t=`${e}.lock`;try{return{fd:ie(t,"wx",384),path:t}}catch(n){throw new Error(`Integration configuration is busy: ${f.basename(e)}`,{cause:n})}}r(gt,"acquireWriteLock");function T(e){let t=_(e.domain,e.configHome),n=e.validate(e.document);re(f.dirname(t),{recursive:!0,mode:448});let o=gt(t);try{let i=Re(t),s=e.expectedRevision===null?void 0:e.expectedRevision;if(e.expectedRevision!==void 0&&i!==s)throw new k(t,s,i);let a=`${JSON.stringify(n,null,2)}
|
|
278
|
-
`,c=`${t}.${process.pid}.${Date.now()}.tmp`,l=ie(c,"wx",384);try{je(l,a,"utf8"),Le(l)}finally{ne(l)}try{e.expectedRevision===null?(rt(c,t),j(c)):$e(c,t)}catch(g){throw d(c)&&j(c),e.expectedRevision===null&&d(t)?new k(t,void 0,Re(t)):new Error(`Failed to atomically replace ${f.basename(t)}.`,{cause:g})}return M({domain:e.domain,source:"user",path:t,raw:a,document:n})}finally{ne(o.fd),d(o.path)&&j(o.path)}}r(T,"writeIntegrationDocument");function vt(e){if(!d(e))return"missing";let t=it(e);return`${t.dev}:${t.ino}:${t.size}:${t.mtimeMs}`}r(vt,"metadataSignature");function Te(e){return e.map(t=>`${t}:${vt(t)}`).join("|")}r(Te,"observationSignature");function $(e,t){return{code:e,message:t,time:new Date().toISOString()}}r($,"safeDiagnostic");var De=class{static{r(this,"IntegrationConfigController")}#u;#n;#r;#a;#m;#f;#p;#e;#t;#c;#l;#h="";#s=[];#o;#i;#g=Promise.resolve();#d=new Set;constructor(t){this.#u=t.domain,this.#n=_(t.domain,t.configHome),this.#r=t.fallbackPath===void 0?void 0:f.resolve(t.fallbackPath),this.#a=this.#r===void 0?[this.#n]:[this.#n,this.#r],this.#f=t.validate,this.#m=t.read,this.#p=t.coldStartDefault===void 0?void 0:structuredClone(this.#f(t.coldStartDefault))}async initialize(){let t=await this.reload();if(!t.ok&&!this.#e&&this.#p!==void 0){let n=structuredClone(this.#p);this.#e=M({domain:this.#u,source:"default",path:this.#n,raw:JSON.stringify(n),document:n})}if(!this.#e)throw new Error(t.ok?"Integration configuration did not produce a snapshot.":t.error);return structuredClone(this.#e)}snapshot(){return this.#e?structuredClone(this.#e):void 0}status(){let t=this.#t?this.#c:void 0,n=this.#t?this.#l:void 0;return{domain:this.#u,path:t??this.#e?.path??this.#n,...this.#e?{revision:this.#e.revision,lastReloadAt:this.#e.loadedAt}:{},...n??this.#e?.source?{source:n??this.#e?.source}:{},...this.#t?{diagnostic:this.#t}:{},watching:this.#s.length>0}}subscribe(t){return this.#d.add(t),()=>{this.#d.delete(t)}}reload(){let t=this.#g.then(()=>this.#v());return this.#g=t.then(()=>{},()=>{}),t}async#v(){this.#h=Te(this.#a);let t;try{t=this.#m(),this.#f(t.document)}catch{let o=this.#y();return this.#c=o.path,this.#l=o.source,this.#t=$("invalid-config","Integration configuration is invalid; check the file against its versioned schema."),{ok:!1,error:this.#t.message}}let n=this.#e?structuredClone(this.#e):void 0;try{for(let o of this.#d)await o(structuredClone(t),n)}catch{return this.#c=t.path,this.#l=t.source,this.#t=$("activation-failed","Integration configuration could not be activated; the previous configuration remains active."),{ok:!1,error:this.#t.message}}return this.#e=t,this.#t=void 0,this.#c=void 0,this.#l=void 0,{ok:!0,snapshot:structuredClone(t)}}async ensureCurrent(){return Te(this.#a)===this.#h&&this.#e?{ok:!0,snapshot:structuredClone(this.#e)}:this.reload()}startWatching(t=100,n=2e3){if(this.#s.length>0||this.#i)return;re(f.dirname(this.#n),{recursive:!0,mode:448});let o=new Map;for(let i of this.#a){let s=f.dirname(i),a=o.get(s)??new Set;a.add(f.basename(i)),o.set(s,a)}for(let[i,s]of o)try{let a=st(i,(c,l)=>{l!==null&&!s.has(l.toString())||(this.#o&&clearTimeout(this.#o),this.#o=setTimeout(()=>{this.#o=void 0,this.reload()},t),this.#o.unref?.())});a.unref(),a.on("error",()=>{this.#t=$("watcher-degraded","Integration watcher is degraded; metadata polling remains active.")}),this.#s.push(a)}catch{this.#t=$("watcher-degraded","Integration watcher is degraded; metadata polling remains active.")}this.#i=setInterval(()=>{this.ensureCurrent()},n),this.#i.unref?.()}close(){this.#o&&clearTimeout(this.#o),this.#o=void 0,this.#i&&clearInterval(this.#i),this.#i=void 0;for(let t of this.#s)t.close();this.#s.length=0,this.#d.clear()}#y(){return d(this.#n)?{path:this.#n,source:"user"}:this.#r&&d(this.#r)?{path:this.#r,source:"legacy-user"}:{path:this.#n,source:"default"}}};var xt=Et(yt),Fe=2,Ue=!1,u=Pe(),kn=h.join(u,"sessions"),p=h.join(u,"config.json"),Sn=60,v=null,ce=!1,Pt="dumb";function kt(e){let t=h.basename(e).toLowerCase(),n="__KODAX_SHELL_ENV_START__",o=`printf '%s\\0' '${n}'; env -0`;return t==="fish"?{args:["-i","-c",o],sentinel:n}:{args:t==="bash"||t==="zsh"?["-ic",o]:["-lc",o],sentinel:n}}r(kt,"buildShellEnvCommand");function St(e,t){let n=`${t}\0`,o=e.lastIndexOf(n);if(o===-1)return{};let i=e.slice(o+n.length),s={};for(let a of i.split("\0")){if(!a)continue;let c=a.indexOf("=");c<=0||(s[a.slice(0,c)]=a.slice(c+1))}return s}r(St,"parseNullDelimitedShellEnv");function Ct(e={}){let t=e.env??process.env;if((e.platform??process.platform)==="win32"||t.KODAX_DISABLE_SHELL_ENV_HYDRATION==="1")return!1;let o=e.shell??t.SHELL;if(!o||!h.isAbsolute(o))return!1;let{args:i,sentinel:s}=kt(o),a=e.run??wt,c={...t,TERM:Pt},l=a(o,i,{encoding:"utf8",env:c,maxBuffer:1024*1024,timeout:5e3,windowsHide:!0,detached:!0,stdio:["ignore","pipe","pipe"]});if(l.status!==0||!l.stdout)return!1;let g=typeof l.stdout=="string"?l.stdout:l.stdout.toString("utf8"),L=St(g,s),N=!1;for(let[z,qe]of Object.entries(L))z!=="TERM"&&t[z]===void 0&&(t[z]=qe,N=!0);return N}r(Ct,"hydrateProcessEnvFromShell");function _t(){if(!ce){ce=!0;try{Ct()}catch{}}}r(_t,"ensureShellEnvironmentHydrated");function Cn(){ce=!1}r(Cn,"resetShellEnvironmentHydrationForTesting");function Mt(e){Ee(e.customProviders??[])}r(Mt,"registerConfiguredCustomProviders");function le(e){if(!Array.isArray(e))return;let t=e.filter(n=>typeof n=="string").map(n=>n.trim()).filter(n=>n.length>0);return t.length>0?t:[]}r(le,"normalizeConfiguredExtensions");function At(e){if(e===void 0||e===null||typeof e!="object"||Array.isArray(e))return;let t=e.envPass;if(!Array.isArray(t))return;let n=t.filter(o=>typeof o=="string").map(o=>o.trim()).filter(o=>/^[A-Za-z_][A-Za-z0-9_]*$/.test(o));return{envPass:[...new Set(n)]}}r(At,"normalizeSandboxConfig");function ue(){let e=m.readFileSync(p,"utf8"),t=JSON.parse(e);if(!(t===null||typeof t!="object"||Array.isArray(t)))return{raw:e,value:t}}r(ue,"readPersistedCoreConfig");function Ve(e){m.writeFileSync(p,JSON.stringify(e,null,2))}r(Ve,"writePersistedCoreConfig");function Ot(e){if(e.permissionMode!=="default")return e;let t={...e,permissionMode:"accept-edits"};try{E(p,()=>{let n=ue();n?.value.permissionMode==="default"&&Ve({...n.value,permissionMode:"accept-edits"})})}catch{}return t}r(Ot,"migrateLegacyPermissionModeInConfig");function It(e){if(e.permissionMode!=="auto-in-project")return e;try{E(p,()=>{let t=ue();if(t?.value.permissionMode!=="auto-in-project")return;let n=t.raw.replace(/("permissionMode"\s*:\s*)"auto-in-project"/,'$1"auto"');n!==t.raw&&m.writeFileSync(p,n)})}catch{}return{...e,permissionMode:"auto"}}r(It,"migrateAutoInProjectAliasInConfig");function Rt(){if(v)return v;let e="0.7.91";if(e)return v=e,v;let t=h.join(h.dirname(bt(import.meta.url)),"../../package.json");if(m.existsSync(t))try{return v=JSON.parse(m.readFileSync(t,"utf-8")).version??"0.0.0",v??"0.0.0"}catch{}return v="0.0.0",v}r(Rt,"getVersion");var _n=Rt();function Tt(e){return ge(e)}r(Tt,"getProviderModel");function de(e,t){let n=new Set(e.map(i=>i.toLowerCase())),o=[...e];for(let i of t)n.has(i.toLowerCase())||o.push(i);return o}r(de,"mergeModels");function Dt(e,t){t||(t=fe().providerModels);let n=t?.[e];if(n&&n.length>0){try{let o=Y(e);if(o.length>0)return de(n,o)}catch{}try{let o=R(e);if(o)return de(n,o.getAvailableModels())}catch{}return n}try{let o=Y(e);if(o.length>0)return o}catch{}try{let o=R(e);if(o)return o.getAvailableModels()}catch{}return[]}r(Dt,"getProviderAvailableModels");function Lt(e,t){let n=ve(e,t);if(n!=="unknown")return n;try{let o=R(e);if(o)return o.getReasoningCapability(t)}catch{}return"unknown"}r(Lt,"getProviderReasoningCapability");function Nt(e){let t=ye(e);if(t)return t;try{return Z().find(o=>o.name===e)?.capabilityProfile??null}catch{return null}}r(Nt,"getProviderCapabilityProfile");function ze(e,t){let n=Nt(e),o=Lt(e,t);if(n)return{capabilityProfile:n,reasoningCapability:o};try{let i=be(e);return{capabilityProfile:i.getCapabilityProfile(),reasoningCapability:i.getReasoningCapability(t)}}catch{return null}}r(ze,"getProviderCapabilityMetadata");function Mn(e,t){let n=ze(e,t);return n?Se({providerName:e,model:t,capabilityProfile:n.capabilityProfile,reasoningCapability:n.reasoningCapability==="unknown"?void 0:n.reasoningCapability}):null}r(Mn,"getProviderCapabilitySnapshot");function $t(e,t,n,o){let i=ze(e,t);return i?Ce({providerName:e,model:t,capabilityProfile:i.capabilityProfile,reasoningCapability:i.reasoningCapability==="unknown"?void 0:i.reasoningCapability,reasoningMode:n,hints:o}):null}r($t,"getProviderPolicyDecision");function An(e){let t=e.transport==="cli-bridge"?"CLI bridge":"Native API",n=e.conversationSemantics==="last-user-message"?"forwards only the latest user message":"preserves full conversation history",o=e.mcpSupport==="native"?"MCP available":"MCP unavailable";return`${t}; ${n}; ${o}`}r(An,"describeProviderCapabilitySummary");function On(e){switch(e){case"native-budget":return"B";case"native-effort":return"E";case"native-toggle":return"T";case"native-adaptive":return"A";default:return"-"}}r(On,"formatReasoningCapabilityShort");function I(e){if(e)return e==="none"?"off":e}r(I,"formatReasoningEffortForDisplay");function G(e,t){let n=I(t);n&&!e.includes(n)&&e.push(n)}r(G,"pushUniqueEffortDisplay");function In(e,t){let n=["auto"],o=V(e,t),i=o?.supportedEfforts?.filter(s=>s.isUserVisible!==!1);if(!i||i.length===0){for(let s of["off","low","medium","high"])G(n,s);return n}for(let s of i)s.value==="none"&&o?.supportsDisabledThinking===!1||G(n,s.value);return n}r(In,"getProviderReasoningEffortOptions");function Rn(e,t){let n=V(e,t),o=new Set(n?.disabledEfforts??[]),i=n?.supportedEfforts?.filter(l=>l.isUserVisible!==!1),s=[],a=n?.supportsDisabledThinking===!0;if(!i||i.length===0){for(let l of["low","medium","high"])G(s,l);a=!0}else for(let l of i){if(l.value==="none"){n?.supportsDisabledThinking!==!1&&(a=!0);continue}if(o.has(l.value)){n?.supportsDisabledThinking!==!1&&(a=!0);continue}G(s,l.value)}let c=[];return a&&c.push("off"),c.push(...s),c.push("auto"),c}r(Rn,"getProviderReasoningEffortCycle");function jt(e,t){if(t===!1)return"off";switch(e){case"off":return"off";case"quick":return"low";case"balanced":return"medium";case"deep":return"high";default:return"auto"}}r(jt,"legacyReasoningModeToEffortDisplay");function V(e,t){let n=t??Tt(e);if(!n)return;let o=xe(e,n)?.reasoningProfile;if(o)return pe(o,ke(e,n))}r(V,"resolveReasoningProfileForDisplay");function Tn(e){let t=I(e.effort)??jt(e.reasoningMode,e.thinking),n=V(e.provider,e.model);if(!n)return t;try{let o=me({capability:n,explicitEffort:e.effortOverride?e.effort:void 0,sessionEffort:e.effortOverride?void 0:e.effort,legacyReasoningMode:e.reasoningMode,thinking:e.thinking}),i=I(o.configuredEffort)??t,a=o.configuredEffort!==void 0&&n.supportsDisabledThinking!==!1&&n.disabledEfforts?.includes(o.configuredEffort)===!0?"off":I(o.effectiveEffort);return a&&a!==i?`${i}->${a}`:i}catch{if(e.effort)try{let o=J({currentEffort:e.effort,capability:n}),i=I(e.effort)??t,s=I(o.effectiveEffort);return s&&s!==i?`${i}->${s}`:i}catch{return t}return t}}r(Tn,"formatReasoningEffortStatusLabel");function Dn(e){let t=zt(e);if(!t)return{preserved:!0};let n=V(e.provider,e.model);if(!n)return{configuredEffort:t,runtimeEffort:t,preserved:!0};let o=J({currentEffort:t,capability:n});return{configuredEffort:t,runtimeEffort:o.effectiveEffort,preserved:o.preserved,diagnostic:o.diagnostic}}r(Dn,"resolveProviderReasoningRuntimeEffort");function Kt(e){switch(e){case"native-budget":return"budget";case"native-effort":return"effort";case"native-toggle":return"toggle";case"native-adaptive":return"adaptive";default:return"none"}}r(Kt,"describeReasoningCapabilityControl");function Ln(e,t){if(e==="off")return"Reasoning disabled";switch(t){case"native-budget":return"Uses native thinking budget control";case"native-effort":return"Uses native reasoning effort control";case"native-toggle":return"Uses provider-native thinking toggle only";case"native-adaptive":return"Model adaptively decides thinking depth (Opus 4.7+)";case"none":return"Runs without native reasoning parameters";case"prompt-only":return"Uses prompt overlays only; no native reasoning parameter";default:return"Runs without native reasoning parameters"}}r(Ln,"describeReasoningExecution");function Nn(e){let t=[];e||(e=fe().providerModels);for(let n of we())t.push({name:n.name,model:n.model,models:Dt(n.name,e),configured:n.capabilityProfile.transport==="cli-bridge"?!0:n.configured,reasoningCapability:n.reasoningCapability,capabilityProfile:n.capabilityProfile});try{let n=Z().map(o=>({...o,models:(()=>{let i=e?.[o.name];return i&&i.length>0?de(i,o.models):o.models})()}));t.push(...n)}catch{}return t}r(Nn,"getProviderList");function $n(e){if(he(e))return!0;try{return R(e)?.isConfigured()??!1}catch{return!1}}r($n,"isProviderConfigured");var H=class extends Error{static{r(this,"InvalidAgentModeConfigError")}};function Xt(e){let t=e.agentMode;if(t===void 0||t==="ama"||t==="sa")return e;if(t!=="amaw"&&t!=="ama-workflow")throw new H(`Invalid agentMode "${t}" in ${p}. Expected "ama" or "sa".`);let n={...e,agentMode:"ama",schemaVersion:Math.max(e.schemaVersion??0,Fe)};try{E(p,()=>{let o=ue();if(!o)return;let i=o.value.agentMode;i!=="amaw"&&i!=="ama-workflow"||Ve({...o.value,agentMode:"ama",schemaVersion:Math.max(typeof o.value.schemaVersion=="number"?o.value.schemaVersion:0,Fe)})})}catch{}return Ue||(process.emitWarning(`Migrated persisted agentMode "${t}" to "ama". Workflow use is now explicit intent.`,{code:"KODAX_AGENT_MODE_MIGRATED"}),Ue=!0),n}r(Xt,"migrateLegacyAgentModeConfig");function fe(){try{if(m.existsSync(p)){let n=JSON.parse(m.readFileSync(p,"utf-8")),o=Xt(n),i=o.reasoningCeiling??o.reasoningMode,s=[],a={};try{s=[...U(u).document.paths]}catch{}try{a=F(u).document.servers}catch{}return It(Ot({...o,reasoningMode:i,extensions:le(s),mcpServers:a,sandbox:At(o.sandbox)}))}}catch(n){if(n instanceof H)throw n}let e,t;try{let n=U(u);n.source!=="default"&&(e=le([...n.document.paths]))}catch{}try{let n=F(u);n.source!=="default"&&(t=n.document.servers)}catch{}return{...e===void 0?{}:{extensions:e},...t===void 0?{}:{mcpServers:t}}}r(fe,"loadConfig");var Ft=h.join(u,"config.example.jsonc"),ae={mcp:h.join(u,"integrations","mcp.example.jsonc"),a2a:h.join(u,"integrations","a2a.example.jsonc"),extensions:h.join(u,"integrations","extensions.example.jsonc")},Ut=[{name:"core",path:Ft},{name:"mcp",path:ae.mcp},{name:"a2a",path:ae.a2a},{name:"extensions",path:ae.extensions}];function Wt(){let e=[];for(let t of Ut)try{if(m.existsSync(t.path))continue;m.mkdirSync(h.dirname(t.path),{recursive:!0}),m.writeFileSync(t.path,Oe(t.name),"utf8"),e.push(t.path)}catch{}return e}r(Wt,"ensureExampleConfigFiles");function jn(){return Wt()[0]}r(jn,"ensureExampleConfigFile");var W=new Map;function Gt(e,t){let n=process.env[e],o=W.get(e),i=o!==void 0&&n===o;if(n!==void 0&&!i){W.delete(e);return}if(t===void 0){i&&delete process.env[e],W.delete(e);return}process.env[e]=t,W.set(e,t)}r(Gt,"projectConfigEnvironment");var Be=[{configPath:"streamIdleTimeoutMs",env:"KODAX_STREAM_IDLE_TIMEOUT_MS",value:r(e=>x(e.streamIdleTimeoutMs),"value")},{configPath:"repoIntelligenceMode",env:"KODAX_REPO_INTELLIGENCE",value:r(e=>e.repoIntelligenceMode,"value")},{configPath:"repoIntelligenceTrace",env:"KODAX_REPO_INTELLIGENCE_TRACE",value:r(e=>O(e.repoIntelligenceTrace),"value")},{configPath:"verifierLog",env:"KODAX_VERIFIER_LOG",value:r(e=>O(e.verifierLog),"value")},{configPath:"stallLog",env:"KODAX_STALL_LOG",value:r(e=>O(e.stallLog),"value")},{configPath:"fallbackProviders",env:"KODAX_FALLBACK_PROVIDERS",value:r(e=>We(e.fallbackProviders),"value")},{configPath:"fastProvider",env:"KODAX_FAST_PROVIDER",value:r(e=>y(e.fastProvider),"value")},{configPath:"fastModel",env:"KODAX_FAST_MODEL",value:r(e=>y(e.fastModel),"value")},{configPath:"deepProvider",env:"KODAX_DEEP_PROVIDER",value:r(e=>y(e.deepProvider),"value")},{configPath:"deepModel",env:"KODAX_DEEP_MODEL",value:r(e=>y(e.deepModel),"value")},{configPath:"provider",env:"KODAX_PROVIDER",value:r(e=>y(e.provider),"value")},{configPath:"effort",env:"KODAX_EFFORT",value:r(e=>y(e.effort),"value")},{configPath:"runtimeMode",env:"KODAX_RUNTIME_MODE",value:r(e=>e.runtimeMode,"value")},{configPath:"sessionRetentionDays",env:"KODAX_SESSION_RETENTION_DAYS",value:r(e=>x(e.sessionRetentionDays),"value")},{configPath:"maxOutputTokens",env:"KODAX_MAX_OUTPUT_TOKENS",value:r(e=>x(e.maxOutputTokens),"value")},{configPath:"disablePromptCache",env:"KODAX_DISABLE_PROMPT_CACHE",value:r(e=>O(e.disablePromptCache),"value")},{configPath:"lsp",env:"KODAX_LSP",value:r(e=>O(e.lsp),"value")},{configPath:"lspAutoDownload",env:"KODAX_LSP_DOWNLOAD",value:r(e=>O(e.lspAutoDownload),"value")},{configPath:"acpLogLevel",env:"KODAX_ACP_LOG",value:r(e=>y(e.acpLogLevel),"value")},{configPath:"repoIntelligence.toolWaitMs",env:"KODAX_REPO_INTELLIGENCE_TOOL_WAIT_MS",value:r(e=>x(e.repoIntelligence?.toolWaitMs),"value")},{configPath:"repoIntelligence.workerTimeoutMs",env:"KODAX_REPO_INTELLIGENCE_WORKER_TIMEOUT_MS",value:r(e=>x(e.repoIntelligence?.workerTimeoutMs),"value")},{configPath:"repoIntelligence.workerOldSpaceMb",env:"KODAX_REPO_INTELLIGENCE_WORKER_OLD_SPACE_MB",value:r(e=>x(e.repoIntelligence?.workerOldSpaceMb),"value")},{configPath:"repoIntelligence.storageDir",env:"KODAX_REPO_INTELLIGENCE_STORAGE_DIR",value:r(e=>y(e.repoIntelligence?.storageDir),"value")},{configPath:"workflow.maxConcurrency",env:"KODAX_WORKFLOW_MAX_CONCURRENCY",value:r(e=>x(e.workflow?.maxConcurrency),"value")},{configPath:"sandbox.envPass",env:"KODAX_SANDBOX_ENV_PASS",value:r(e=>We(e.sandbox?.envPass)||void 0,"value")}];function Ht(e){for(let t of Be)Gt(t.env,t.value(e))}r(Ht,"applyConfigSurfaceBridges");function y(e){return e?.trim()||void 0}r(y,"normalizedConfigString");function x(e){return typeof e=="number"&&Number.isFinite(e)?String(e):void 0}r(x,"configNumberString");function O(e){return e===void 0?void 0:e?"1":"0"}r(O,"configBooleanString");function We(e){return e?.filter(t=>t.trim().length>0).join(",")}r(We,"configStringList");var Kn=[...Be.map(({configPath:e,env:t})=>({configPath:e,env:t}))];function Vt(e){Ht(e)}r(Vt,"applyConfigEnvironment");function Xn(){_t();let e=fe();return Vt(e),Mt(e),Me(e.locale),e}r(Xn,"prepareRuntimeConfig");function Fn(e){let{extensions:t,mcpServers:n,...o}=e;if(E(p,()=>{let i={};if(m.existsSync(p))try{let a=JSON.parse(m.readFileSync(p,"utf8"));a&&typeof a=="object"&&!Array.isArray(a)&&(i=a)}catch{}let s={...i,...o};for(let a of Object.keys(o))o[a]===void 0&&delete s[a];m.writeFileSync(p,JSON.stringify(s,null,2))}),t!==void 0){let i=U(u);T({domain:"extensions",configHome:u,...i.source==="user"?{expectedRevision:i.revision}:{},document:{version:1,paths:le(t)??[]},validate:C})}if(n!==void 0){let i=F(u);T({domain:"mcp",configHome:u,...i.source==="user"?{expectedRevision:i.revision}:{},document:{version:1,servers:n},validate:S})}}r(Fn,"saveConfig");function Un(e,t,n){return e.effort!==void 0||q(n).kind==="value"||t.effort!==void 0}r(Un,"resolveInitialEffortOverride");function w(e){return e?.trim()?e:void 0}r(w,"nonEmptySelection");function Wn(e){return w(e.explicitProvider)??w(e.environmentProvider)??w(e.configuredProvider)??e.defaultProvider}r(Wn,"resolveRuntimeProviderSelection");function Gn(e){let t=w(e.explicitModel);if(t)return t;let n=w(e.configuredModel);if(!n)return;let o=w(e.explicitProvider)??w(e.environmentProvider);return o?w(e.configuredProvider)===o?n:void 0:n}r(Gn,"resolveRuntimeModelSelection");function Hn(e){if(e.explicitEffort!==void 0)return B(e.explicitEffort);let t=q(e.environmentEffort);return t.kind==="value"?t.value:e.configuredEffort===void 0?void 0:B(e.configuredEffort)}r(Hn,"resolveRuntimeEffortSelection");function zt(e){return e.permissionMode==="plan"&&e.effortOverride!==!0&&e.planModeEffort!==void 0?e.planModeEffort:e.effort}r(zt,"resolvePermissionModeEffort");async function Vn(e){try{let{stdout:t}=await xt("git rev-parse --show-toplevel",{cwd:e,windowsHide:!0});return t.trim()}catch{return null}}r(Vn,"getGitRoot");function Bt(e){switch(e){case"builtin":return"Built-in";case"runtime":return"Runtime extension";case"custom":return"Custom config";default:return"Unknown"}}r(Bt,"formatProviderSourceKind");function zn(e){let t=e.transport==="cli-bridge"?"CLI bridge":"Native API",n=e.conversationSemantics==="last-user-message"?"latest-user-message only":"full conversation history";return[`Source: ${Bt(e.sourceKind)}`,`Transport: ${t}`,`Conversation semantics: ${n}`,`Context fidelity: ${e.contextFidelity}`,`Tool calling: ${e.toolCallingFidelity}`,`Session behavior: ${e.sessionSupport}`,`Long-running support: ${e.longRunningSupport}`,`Evidence-heavy flows: ${e.evidenceSupport}`,`Multimodal support: ${e.multimodalSupport}`,`MCP support: ${e.mcpSupport}`,`Reasoning control: ${Kt(e.reasoningCapability)}`]}r(zn,"formatProviderCapabilityDetailLines");function Bn(e,t,n){return[{label:"General coding",hints:{}},{label:"Evidence-heavy review",hints:{evidenceHeavy:!0}},{label:"Long-running task",hints:{longRunning:!0}}].map(i=>({label:i.label,decision:$t(e,t,n,i.hints)})).filter(i=>i.decision!==null)}r(Bn,"getProviderCommonPolicyScenarios");var Ge=.5,He=0,D={locked:!1,queue:[]};async function qn(e){for(;D.locked;)await new Promise(t=>D.queue.push(t));D.locked=!0;try{let t=(Date.now()-He)/1e3;t<Ge&&await new Promise(o=>setTimeout(o,(Ge-t)*1e3));let n=await e();return He=Date.now(),n}finally{D.locked=!1;let t=D.queue.shift();t&&t()}}r(qn,"rateLimitedCall");export{qt as a,Ae as b,Oe as c,ee as d,nt as e,E as f,k as g,S as h,C as i,_ as j,F as k,U as l,ft as m,ln as n,T as o,De as p,u as q,kn as r,p as s,Sn as t,Ct as u,Cn as v,Mt as w,Rt as x,_n as y,Tt as z,Dt as A,Lt as B,Nt as C,Mn as D,$t as E,An as F,On as G,I as H,In as I,Rn as J,Tn as K,Dn as L,Kt as M,Ln as N,Nn as O,$n as P,fe as Q,Ft as R,ae as S,Wt as T,jn as U,Kn as V,Vt as W,Xn as X,Fn as Y,Un as Z,Wn as _,Gn as $,Hn as aa,zt as ba,Vn as ca,Bt as da,zn as ea,Bn as fa,qn as ga};
|
|
278
|
+
`,c=`${t}.${process.pid}.${Date.now()}.tmp`,l=ie(c,"wx",384);try{je(l,a,"utf8"),Le(l)}finally{ne(l)}try{e.expectedRevision===null?(rt(c,t),j(c)):$e(c,t)}catch(g){throw d(c)&&j(c),e.expectedRevision===null&&d(t)?new k(t,void 0,Re(t)):new Error(`Failed to atomically replace ${f.basename(t)}.`,{cause:g})}return M({domain:e.domain,source:"user",path:t,raw:a,document:n})}finally{ne(o.fd),d(o.path)&&j(o.path)}}r(T,"writeIntegrationDocument");function vt(e){if(!d(e))return"missing";let t=it(e);return`${t.dev}:${t.ino}:${t.size}:${t.mtimeMs}`}r(vt,"metadataSignature");function Te(e){return e.map(t=>`${t}:${vt(t)}`).join("|")}r(Te,"observationSignature");function $(e,t){return{code:e,message:t,time:new Date().toISOString()}}r($,"safeDiagnostic");var De=class{static{r(this,"IntegrationConfigController")}#u;#n;#r;#a;#m;#f;#p;#e;#t;#c;#l;#h="";#s=[];#o;#i;#g=Promise.resolve();#d=new Set;constructor(t){this.#u=t.domain,this.#n=_(t.domain,t.configHome),this.#r=t.fallbackPath===void 0?void 0:f.resolve(t.fallbackPath),this.#a=this.#r===void 0?[this.#n]:[this.#n,this.#r],this.#f=t.validate,this.#m=t.read,this.#p=t.coldStartDefault===void 0?void 0:structuredClone(this.#f(t.coldStartDefault))}async initialize(){let t=await this.reload();if(!t.ok&&!this.#e&&this.#p!==void 0){let n=structuredClone(this.#p);this.#e=M({domain:this.#u,source:"default",path:this.#n,raw:JSON.stringify(n),document:n})}if(!this.#e)throw new Error(t.ok?"Integration configuration did not produce a snapshot.":t.error);return structuredClone(this.#e)}snapshot(){return this.#e?structuredClone(this.#e):void 0}status(){let t=this.#t?this.#c:void 0,n=this.#t?this.#l:void 0;return{domain:this.#u,path:t??this.#e?.path??this.#n,...this.#e?{revision:this.#e.revision,lastReloadAt:this.#e.loadedAt}:{},...n??this.#e?.source?{source:n??this.#e?.source}:{},...this.#t?{diagnostic:this.#t}:{},watching:this.#s.length>0}}subscribe(t){return this.#d.add(t),()=>{this.#d.delete(t)}}reload(){let t=this.#g.then(()=>this.#v());return this.#g=t.then(()=>{},()=>{}),t}async#v(){this.#h=Te(this.#a);let t;try{t=this.#m(),this.#f(t.document)}catch{let o=this.#y();return this.#c=o.path,this.#l=o.source,this.#t=$("invalid-config","Integration configuration is invalid; check the file against its versioned schema."),{ok:!1,error:this.#t.message}}let n=this.#e?structuredClone(this.#e):void 0;try{for(let o of this.#d)await o(structuredClone(t),n)}catch{return this.#c=t.path,this.#l=t.source,this.#t=$("activation-failed","Integration configuration could not be activated; the previous configuration remains active."),{ok:!1,error:this.#t.message}}return this.#e=t,this.#t=void 0,this.#c=void 0,this.#l=void 0,{ok:!0,snapshot:structuredClone(t)}}async ensureCurrent(){return Te(this.#a)===this.#h&&this.#e?{ok:!0,snapshot:structuredClone(this.#e)}:this.reload()}startWatching(t=100,n=2e3){if(this.#s.length>0||this.#i)return;re(f.dirname(this.#n),{recursive:!0,mode:448});let o=new Map;for(let i of this.#a){let s=f.dirname(i),a=o.get(s)??new Set;a.add(f.basename(i)),o.set(s,a)}for(let[i,s]of o)try{let a=st(i,(c,l)=>{l!==null&&!s.has(l.toString())||(this.#o&&clearTimeout(this.#o),this.#o=setTimeout(()=>{this.#o=void 0,this.reload()},t),this.#o.unref?.())});a.unref(),a.on("error",()=>{this.#t=$("watcher-degraded","Integration watcher is degraded; metadata polling remains active.")}),this.#s.push(a)}catch{this.#t=$("watcher-degraded","Integration watcher is degraded; metadata polling remains active.")}this.#i=setInterval(()=>{this.ensureCurrent()},n),this.#i.unref?.()}close(){this.#o&&clearTimeout(this.#o),this.#o=void 0,this.#i&&clearInterval(this.#i),this.#i=void 0;for(let t of this.#s)t.close();this.#s.length=0,this.#d.clear()}#y(){return d(this.#n)?{path:this.#n,source:"user"}:this.#r&&d(this.#r)?{path:this.#r,source:"legacy-user"}:{path:this.#n,source:"default"}}};var xt=Et(yt),Fe=2,Ue=!1,u=Pe(),kn=h.join(u,"sessions"),p=h.join(u,"config.json"),Sn=60,v=null,ce=!1,Pt="dumb";function kt(e){let t=h.basename(e).toLowerCase(),n="__KODAX_SHELL_ENV_START__",o=`printf '%s\\0' '${n}'; env -0`;return t==="fish"?{args:["-i","-c",o],sentinel:n}:{args:t==="bash"||t==="zsh"?["-ic",o]:["-lc",o],sentinel:n}}r(kt,"buildShellEnvCommand");function St(e,t){let n=`${t}\0`,o=e.lastIndexOf(n);if(o===-1)return{};let i=e.slice(o+n.length),s={};for(let a of i.split("\0")){if(!a)continue;let c=a.indexOf("=");c<=0||(s[a.slice(0,c)]=a.slice(c+1))}return s}r(St,"parseNullDelimitedShellEnv");function Ct(e={}){let t=e.env??process.env;if((e.platform??process.platform)==="win32"||t.KODAX_DISABLE_SHELL_ENV_HYDRATION==="1")return!1;let o=e.shell??t.SHELL;if(!o||!h.isAbsolute(o))return!1;let{args:i,sentinel:s}=kt(o),a=e.run??wt,c={...t,TERM:Pt},l=a(o,i,{encoding:"utf8",env:c,maxBuffer:1024*1024,timeout:5e3,windowsHide:!0,detached:!0,stdio:["ignore","pipe","pipe"]});if(l.status!==0||!l.stdout)return!1;let g=typeof l.stdout=="string"?l.stdout:l.stdout.toString("utf8"),L=St(g,s),N=!1;for(let[z,qe]of Object.entries(L))z!=="TERM"&&t[z]===void 0&&(t[z]=qe,N=!0);return N}r(Ct,"hydrateProcessEnvFromShell");function _t(){if(!ce){ce=!0;try{Ct()}catch{}}}r(_t,"ensureShellEnvironmentHydrated");function Cn(){ce=!1}r(Cn,"resetShellEnvironmentHydrationForTesting");function Mt(e){Ee(e.customProviders??[])}r(Mt,"registerConfiguredCustomProviders");function le(e){if(!Array.isArray(e))return;let t=e.filter(n=>typeof n=="string").map(n=>n.trim()).filter(n=>n.length>0);return t.length>0?t:[]}r(le,"normalizeConfiguredExtensions");function At(e){if(e===void 0||e===null||typeof e!="object"||Array.isArray(e))return;let t=e.envPass;if(!Array.isArray(t))return;let n=t.filter(o=>typeof o=="string").map(o=>o.trim()).filter(o=>/^[A-Za-z_][A-Za-z0-9_]*$/.test(o));return{envPass:[...new Set(n)]}}r(At,"normalizeSandboxConfig");function ue(){let e=m.readFileSync(p,"utf8"),t=JSON.parse(e);if(!(t===null||typeof t!="object"||Array.isArray(t)))return{raw:e,value:t}}r(ue,"readPersistedCoreConfig");function Ve(e){m.writeFileSync(p,JSON.stringify(e,null,2))}r(Ve,"writePersistedCoreConfig");function Ot(e){if(e.permissionMode!=="default")return e;let t={...e,permissionMode:"accept-edits"};try{E(p,()=>{let n=ue();n?.value.permissionMode==="default"&&Ve({...n.value,permissionMode:"accept-edits"})})}catch{}return t}r(Ot,"migrateLegacyPermissionModeInConfig");function It(e){if(e.permissionMode!=="auto-in-project")return e;try{E(p,()=>{let t=ue();if(t?.value.permissionMode!=="auto-in-project")return;let n=t.raw.replace(/("permissionMode"\s*:\s*)"auto-in-project"/,'$1"auto"');n!==t.raw&&m.writeFileSync(p,n)})}catch{}return{...e,permissionMode:"auto"}}r(It,"migrateAutoInProjectAliasInConfig");function Rt(){if(v)return v;let e="0.7.92";if(e)return v=e,v;let t=h.join(h.dirname(bt(import.meta.url)),"../../package.json");if(m.existsSync(t))try{return v=JSON.parse(m.readFileSync(t,"utf-8")).version??"0.0.0",v??"0.0.0"}catch{}return v="0.0.0",v}r(Rt,"getVersion");var _n=Rt();function Tt(e){return ge(e)}r(Tt,"getProviderModel");function de(e,t){let n=new Set(e.map(i=>i.toLowerCase())),o=[...e];for(let i of t)n.has(i.toLowerCase())||o.push(i);return o}r(de,"mergeModels");function Dt(e,t){t||(t=fe().providerModels);let n=t?.[e];if(n&&n.length>0){try{let o=Y(e);if(o.length>0)return de(n,o)}catch{}try{let o=R(e);if(o)return de(n,o.getAvailableModels())}catch{}return n}try{let o=Y(e);if(o.length>0)return o}catch{}try{let o=R(e);if(o)return o.getAvailableModels()}catch{}return[]}r(Dt,"getProviderAvailableModels");function Lt(e,t){let n=ve(e,t);if(n!=="unknown")return n;try{let o=R(e);if(o)return o.getReasoningCapability(t)}catch{}return"unknown"}r(Lt,"getProviderReasoningCapability");function Nt(e){let t=ye(e);if(t)return t;try{return Z().find(o=>o.name===e)?.capabilityProfile??null}catch{return null}}r(Nt,"getProviderCapabilityProfile");function ze(e,t){let n=Nt(e),o=Lt(e,t);if(n)return{capabilityProfile:n,reasoningCapability:o};try{let i=be(e);return{capabilityProfile:i.getCapabilityProfile(),reasoningCapability:i.getReasoningCapability(t)}}catch{return null}}r(ze,"getProviderCapabilityMetadata");function Mn(e,t){let n=ze(e,t);return n?Se({providerName:e,model:t,capabilityProfile:n.capabilityProfile,reasoningCapability:n.reasoningCapability==="unknown"?void 0:n.reasoningCapability}):null}r(Mn,"getProviderCapabilitySnapshot");function $t(e,t,n,o){let i=ze(e,t);return i?Ce({providerName:e,model:t,capabilityProfile:i.capabilityProfile,reasoningCapability:i.reasoningCapability==="unknown"?void 0:i.reasoningCapability,reasoningMode:n,hints:o}):null}r($t,"getProviderPolicyDecision");function An(e){let t=e.transport==="cli-bridge"?"CLI bridge":"Native API",n=e.conversationSemantics==="last-user-message"?"forwards only the latest user message":"preserves full conversation history",o=e.mcpSupport==="native"?"MCP available":"MCP unavailable";return`${t}; ${n}; ${o}`}r(An,"describeProviderCapabilitySummary");function On(e){switch(e){case"native-budget":return"B";case"native-effort":return"E";case"native-toggle":return"T";case"native-adaptive":return"A";default:return"-"}}r(On,"formatReasoningCapabilityShort");function I(e){if(e)return e==="none"?"off":e}r(I,"formatReasoningEffortForDisplay");function G(e,t){let n=I(t);n&&!e.includes(n)&&e.push(n)}r(G,"pushUniqueEffortDisplay");function In(e,t){let n=["auto"],o=V(e,t),i=o?.supportedEfforts?.filter(s=>s.isUserVisible!==!1);if(!i||i.length===0){for(let s of["off","low","medium","high"])G(n,s);return n}for(let s of i)s.value==="none"&&o?.supportsDisabledThinking===!1||G(n,s.value);return n}r(In,"getProviderReasoningEffortOptions");function Rn(e,t){let n=V(e,t),o=new Set(n?.disabledEfforts??[]),i=n?.supportedEfforts?.filter(l=>l.isUserVisible!==!1),s=[],a=n?.supportsDisabledThinking===!0;if(!i||i.length===0){for(let l of["low","medium","high"])G(s,l);a=!0}else for(let l of i){if(l.value==="none"){n?.supportsDisabledThinking!==!1&&(a=!0);continue}if(o.has(l.value)){n?.supportsDisabledThinking!==!1&&(a=!0);continue}G(s,l.value)}let c=[];return a&&c.push("off"),c.push(...s),c.push("auto"),c}r(Rn,"getProviderReasoningEffortCycle");function jt(e,t){if(t===!1)return"off";switch(e){case"off":return"off";case"quick":return"low";case"balanced":return"medium";case"deep":return"high";default:return"auto"}}r(jt,"legacyReasoningModeToEffortDisplay");function V(e,t){let n=t??Tt(e);if(!n)return;let o=xe(e,n)?.reasoningProfile;if(o)return pe(o,ke(e,n))}r(V,"resolveReasoningProfileForDisplay");function Tn(e){let t=I(e.effort)??jt(e.reasoningMode,e.thinking),n=V(e.provider,e.model);if(!n)return t;try{let o=me({capability:n,explicitEffort:e.effortOverride?e.effort:void 0,sessionEffort:e.effortOverride?void 0:e.effort,legacyReasoningMode:e.reasoningMode,thinking:e.thinking}),i=I(o.configuredEffort)??t,a=o.configuredEffort!==void 0&&n.supportsDisabledThinking!==!1&&n.disabledEfforts?.includes(o.configuredEffort)===!0?"off":I(o.effectiveEffort);return a&&a!==i?`${i}->${a}`:i}catch{if(e.effort)try{let o=J({currentEffort:e.effort,capability:n}),i=I(e.effort)??t,s=I(o.effectiveEffort);return s&&s!==i?`${i}->${s}`:i}catch{return t}return t}}r(Tn,"formatReasoningEffortStatusLabel");function Dn(e){let t=zt(e);if(!t)return{preserved:!0};let n=V(e.provider,e.model);if(!n)return{configuredEffort:t,runtimeEffort:t,preserved:!0};let o=J({currentEffort:t,capability:n});return{configuredEffort:t,runtimeEffort:o.effectiveEffort,preserved:o.preserved,diagnostic:o.diagnostic}}r(Dn,"resolveProviderReasoningRuntimeEffort");function Kt(e){switch(e){case"native-budget":return"budget";case"native-effort":return"effort";case"native-toggle":return"toggle";case"native-adaptive":return"adaptive";default:return"none"}}r(Kt,"describeReasoningCapabilityControl");function Ln(e,t){if(e==="off")return"Reasoning disabled";switch(t){case"native-budget":return"Uses native thinking budget control";case"native-effort":return"Uses native reasoning effort control";case"native-toggle":return"Uses provider-native thinking toggle only";case"native-adaptive":return"Model adaptively decides thinking depth (Opus 4.7+)";case"none":return"Runs without native reasoning parameters";case"prompt-only":return"Uses prompt overlays only; no native reasoning parameter";default:return"Runs without native reasoning parameters"}}r(Ln,"describeReasoningExecution");function Nn(e){let t=[];e||(e=fe().providerModels);for(let n of we())t.push({name:n.name,model:n.model,models:Dt(n.name,e),configured:n.capabilityProfile.transport==="cli-bridge"?!0:n.configured,reasoningCapability:n.reasoningCapability,capabilityProfile:n.capabilityProfile});try{let n=Z().map(o=>({...o,models:(()=>{let i=e?.[o.name];return i&&i.length>0?de(i,o.models):o.models})()}));t.push(...n)}catch{}return t}r(Nn,"getProviderList");function $n(e){if(he(e))return!0;try{return R(e)?.isConfigured()??!1}catch{return!1}}r($n,"isProviderConfigured");var H=class extends Error{static{r(this,"InvalidAgentModeConfigError")}};function Xt(e){let t=e.agentMode;if(t===void 0||t==="ama"||t==="sa")return e;if(t!=="amaw"&&t!=="ama-workflow")throw new H(`Invalid agentMode "${t}" in ${p}. Expected "ama" or "sa".`);let n={...e,agentMode:"ama",schemaVersion:Math.max(e.schemaVersion??0,Fe)};try{E(p,()=>{let o=ue();if(!o)return;let i=o.value.agentMode;i!=="amaw"&&i!=="ama-workflow"||Ve({...o.value,agentMode:"ama",schemaVersion:Math.max(typeof o.value.schemaVersion=="number"?o.value.schemaVersion:0,Fe)})})}catch{}return Ue||(process.emitWarning(`Migrated persisted agentMode "${t}" to "ama". Workflow use is now explicit intent.`,{code:"KODAX_AGENT_MODE_MIGRATED"}),Ue=!0),n}r(Xt,"migrateLegacyAgentModeConfig");function fe(){try{if(m.existsSync(p)){let n=JSON.parse(m.readFileSync(p,"utf-8")),o=Xt(n),i=o.reasoningCeiling??o.reasoningMode,s=[],a={};try{s=[...U(u).document.paths]}catch{}try{a=F(u).document.servers}catch{}return It(Ot({...o,reasoningMode:i,extensions:le(s),mcpServers:a,sandbox:At(o.sandbox)}))}}catch(n){if(n instanceof H)throw n}let e,t;try{let n=U(u);n.source!=="default"&&(e=le([...n.document.paths]))}catch{}try{let n=F(u);n.source!=="default"&&(t=n.document.servers)}catch{}return{...e===void 0?{}:{extensions:e},...t===void 0?{}:{mcpServers:t}}}r(fe,"loadConfig");var Ft=h.join(u,"config.example.jsonc"),ae={mcp:h.join(u,"integrations","mcp.example.jsonc"),a2a:h.join(u,"integrations","a2a.example.jsonc"),extensions:h.join(u,"integrations","extensions.example.jsonc")},Ut=[{name:"core",path:Ft},{name:"mcp",path:ae.mcp},{name:"a2a",path:ae.a2a},{name:"extensions",path:ae.extensions}];function Wt(){let e=[];for(let t of Ut)try{if(m.existsSync(t.path))continue;m.mkdirSync(h.dirname(t.path),{recursive:!0}),m.writeFileSync(t.path,Oe(t.name),"utf8"),e.push(t.path)}catch{}return e}r(Wt,"ensureExampleConfigFiles");function jn(){return Wt()[0]}r(jn,"ensureExampleConfigFile");var W=new Map;function Gt(e,t){let n=process.env[e],o=W.get(e),i=o!==void 0&&n===o;if(n!==void 0&&!i){W.delete(e);return}if(t===void 0){i&&delete process.env[e],W.delete(e);return}process.env[e]=t,W.set(e,t)}r(Gt,"projectConfigEnvironment");var Be=[{configPath:"streamIdleTimeoutMs",env:"KODAX_STREAM_IDLE_TIMEOUT_MS",value:r(e=>x(e.streamIdleTimeoutMs),"value")},{configPath:"repoIntelligenceMode",env:"KODAX_REPO_INTELLIGENCE",value:r(e=>e.repoIntelligenceMode,"value")},{configPath:"repoIntelligenceTrace",env:"KODAX_REPO_INTELLIGENCE_TRACE",value:r(e=>O(e.repoIntelligenceTrace),"value")},{configPath:"verifierLog",env:"KODAX_VERIFIER_LOG",value:r(e=>O(e.verifierLog),"value")},{configPath:"stallLog",env:"KODAX_STALL_LOG",value:r(e=>O(e.stallLog),"value")},{configPath:"fallbackProviders",env:"KODAX_FALLBACK_PROVIDERS",value:r(e=>We(e.fallbackProviders),"value")},{configPath:"fastProvider",env:"KODAX_FAST_PROVIDER",value:r(e=>y(e.fastProvider),"value")},{configPath:"fastModel",env:"KODAX_FAST_MODEL",value:r(e=>y(e.fastModel),"value")},{configPath:"deepProvider",env:"KODAX_DEEP_PROVIDER",value:r(e=>y(e.deepProvider),"value")},{configPath:"deepModel",env:"KODAX_DEEP_MODEL",value:r(e=>y(e.deepModel),"value")},{configPath:"provider",env:"KODAX_PROVIDER",value:r(e=>y(e.provider),"value")},{configPath:"effort",env:"KODAX_EFFORT",value:r(e=>y(e.effort),"value")},{configPath:"runtimeMode",env:"KODAX_RUNTIME_MODE",value:r(e=>e.runtimeMode,"value")},{configPath:"sessionRetentionDays",env:"KODAX_SESSION_RETENTION_DAYS",value:r(e=>x(e.sessionRetentionDays),"value")},{configPath:"maxOutputTokens",env:"KODAX_MAX_OUTPUT_TOKENS",value:r(e=>x(e.maxOutputTokens),"value")},{configPath:"disablePromptCache",env:"KODAX_DISABLE_PROMPT_CACHE",value:r(e=>O(e.disablePromptCache),"value")},{configPath:"lsp",env:"KODAX_LSP",value:r(e=>O(e.lsp),"value")},{configPath:"lspAutoDownload",env:"KODAX_LSP_DOWNLOAD",value:r(e=>O(e.lspAutoDownload),"value")},{configPath:"acpLogLevel",env:"KODAX_ACP_LOG",value:r(e=>y(e.acpLogLevel),"value")},{configPath:"repoIntelligence.toolWaitMs",env:"KODAX_REPO_INTELLIGENCE_TOOL_WAIT_MS",value:r(e=>x(e.repoIntelligence?.toolWaitMs),"value")},{configPath:"repoIntelligence.workerTimeoutMs",env:"KODAX_REPO_INTELLIGENCE_WORKER_TIMEOUT_MS",value:r(e=>x(e.repoIntelligence?.workerTimeoutMs),"value")},{configPath:"repoIntelligence.workerOldSpaceMb",env:"KODAX_REPO_INTELLIGENCE_WORKER_OLD_SPACE_MB",value:r(e=>x(e.repoIntelligence?.workerOldSpaceMb),"value")},{configPath:"repoIntelligence.storageDir",env:"KODAX_REPO_INTELLIGENCE_STORAGE_DIR",value:r(e=>y(e.repoIntelligence?.storageDir),"value")},{configPath:"workflow.maxConcurrency",env:"KODAX_WORKFLOW_MAX_CONCURRENCY",value:r(e=>x(e.workflow?.maxConcurrency),"value")},{configPath:"sandbox.envPass",env:"KODAX_SANDBOX_ENV_PASS",value:r(e=>We(e.sandbox?.envPass)||void 0,"value")}];function Ht(e){for(let t of Be)Gt(t.env,t.value(e))}r(Ht,"applyConfigSurfaceBridges");function y(e){return e?.trim()||void 0}r(y,"normalizedConfigString");function x(e){return typeof e=="number"&&Number.isFinite(e)?String(e):void 0}r(x,"configNumberString");function O(e){return e===void 0?void 0:e?"1":"0"}r(O,"configBooleanString");function We(e){return e?.filter(t=>t.trim().length>0).join(",")}r(We,"configStringList");var Kn=[...Be.map(({configPath:e,env:t})=>({configPath:e,env:t}))];function Vt(e){Ht(e)}r(Vt,"applyConfigEnvironment");function Xn(){_t();let e=fe();return Vt(e),Mt(e),Me(e.locale),e}r(Xn,"prepareRuntimeConfig");function Fn(e){let{extensions:t,mcpServers:n,...o}=e;if(E(p,()=>{let i={};if(m.existsSync(p))try{let a=JSON.parse(m.readFileSync(p,"utf8"));a&&typeof a=="object"&&!Array.isArray(a)&&(i=a)}catch{}let s={...i,...o};for(let a of Object.keys(o))o[a]===void 0&&delete s[a];m.writeFileSync(p,JSON.stringify(s,null,2))}),t!==void 0){let i=U(u);T({domain:"extensions",configHome:u,...i.source==="user"?{expectedRevision:i.revision}:{},document:{version:1,paths:le(t)??[]},validate:C})}if(n!==void 0){let i=F(u);T({domain:"mcp",configHome:u,...i.source==="user"?{expectedRevision:i.revision}:{},document:{version:1,servers:n},validate:S})}}r(Fn,"saveConfig");function Un(e,t,n){return e.effort!==void 0||q(n).kind==="value"||t.effort!==void 0}r(Un,"resolveInitialEffortOverride");function w(e){return e?.trim()?e:void 0}r(w,"nonEmptySelection");function Wn(e){return w(e.explicitProvider)??w(e.environmentProvider)??w(e.configuredProvider)??e.defaultProvider}r(Wn,"resolveRuntimeProviderSelection");function Gn(e){let t=w(e.explicitModel);if(t)return t;let n=w(e.configuredModel);if(!n)return;let o=w(e.explicitProvider)??w(e.environmentProvider);return o?w(e.configuredProvider)===o?n:void 0:n}r(Gn,"resolveRuntimeModelSelection");function Hn(e){if(e.explicitEffort!==void 0)return B(e.explicitEffort);let t=q(e.environmentEffort);return t.kind==="value"?t.value:e.configuredEffort===void 0?void 0:B(e.configuredEffort)}r(Hn,"resolveRuntimeEffortSelection");function zt(e){return e.permissionMode==="plan"&&e.effortOverride!==!0&&e.planModeEffort!==void 0?e.planModeEffort:e.effort}r(zt,"resolvePermissionModeEffort");async function Vn(e){try{let{stdout:t}=await xt("git rev-parse --show-toplevel",{cwd:e,windowsHide:!0});return t.trim()}catch{return null}}r(Vn,"getGitRoot");function Bt(e){switch(e){case"builtin":return"Built-in";case"runtime":return"Runtime extension";case"custom":return"Custom config";default:return"Unknown"}}r(Bt,"formatProviderSourceKind");function zn(e){let t=e.transport==="cli-bridge"?"CLI bridge":"Native API",n=e.conversationSemantics==="last-user-message"?"latest-user-message only":"full conversation history";return[`Source: ${Bt(e.sourceKind)}`,`Transport: ${t}`,`Conversation semantics: ${n}`,`Context fidelity: ${e.contextFidelity}`,`Tool calling: ${e.toolCallingFidelity}`,`Session behavior: ${e.sessionSupport}`,`Long-running support: ${e.longRunningSupport}`,`Evidence-heavy flows: ${e.evidenceSupport}`,`Multimodal support: ${e.multimodalSupport}`,`MCP support: ${e.mcpSupport}`,`Reasoning control: ${Kt(e.reasoningCapability)}`]}r(zn,"formatProviderCapabilityDetailLines");function Bn(e,t,n){return[{label:"General coding",hints:{}},{label:"Evidence-heavy review",hints:{evidenceHeavy:!0}},{label:"Long-running task",hints:{longRunning:!0}}].map(i=>({label:i.label,decision:$t(e,t,n,i.hints)})).filter(i=>i.decision!==null)}r(Bn,"getProviderCommonPolicyScenarios");var Ge=.5,He=0,D={locked:!1,queue:[]};async function qn(e){for(;D.locked;)await new Promise(t=>D.queue.push(t));D.locked=!0;try{let t=(Date.now()-He)/1e3;t<Ge&&await new Promise(o=>setTimeout(o,(Ge-t)*1e3));let n=await e();return He=Date.now(),n}finally{D.locked=!1;let t=D.queue.shift();t&&t()}}r(qn,"rateLimitedCall");export{qt as a,Ae as b,Oe as c,ee as d,nt as e,E as f,k as g,S as h,C as i,_ as j,F as k,U as l,ft as m,ln as n,T as o,De as p,u as q,kn as r,p as s,Sn as t,Ct as u,Cn as v,Mt as w,Rt as x,_n as y,Tt as z,Dt as A,Lt as B,Nt as C,Mn as D,$t as E,An as F,On as G,I as H,In as I,Rn as J,Tn as K,Dn as L,Kt as M,Ln as N,Nn as O,$n as P,fe as Q,Ft as R,ae as S,Wt as T,jn as U,Kn as V,Vt as W,Xn as X,Fn as Y,Un as Z,Wn as _,Gn as $,Hn as aa,zt as ba,Vn as ca,Bt as da,zn as ea,Bn as fa,qn as ga};
|