@kodax-ai/kodax 0.7.95 → 0.7.96-alpha.2
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 +178 -1
- package/LICENSE +158 -158
- package/README.md +149 -24
- package/README_CN.md +117 -24
- package/config-templates/config.example.jsonc +2 -1
- package/config-templates/integrations/a2a.example.jsonc +91 -91
- package/config-templates/integrations/extensions.example.jsonc +7 -7
- package/config-templates/integrations/mcp.example.jsonc +16 -16
- package/dist/builtin/code-review/SKILL.md +82 -82
- package/dist/builtin/git-workflow/SKILL.md +84 -84
- package/dist/builtin/skill-creator/SKILL.md +127 -127
- package/dist/builtin/skill-creator/agents/analyzer.md +12 -12
- package/dist/builtin/skill-creator/agents/comparator.md +13 -13
- package/dist/builtin/skill-creator/agents/grader.md +13 -13
- package/dist/builtin/skill-creator/references/schemas.md +227 -227
- package/dist/builtin/skill-creator/scripts/aggregate-benchmark.d.ts +46 -46
- package/dist/builtin/skill-creator/scripts/aggregate-benchmark.js +208 -208
- package/dist/builtin/skill-creator/scripts/analyze-benchmark.d.ts +46 -46
- package/dist/builtin/skill-creator/scripts/analyze-benchmark.js +286 -286
- package/dist/builtin/skill-creator/scripts/compare-runs.d.ts +62 -62
- package/dist/builtin/skill-creator/scripts/compare-runs.js +330 -330
- package/dist/builtin/skill-creator/scripts/generate-review.d.ts +33 -33
- package/dist/builtin/skill-creator/scripts/generate-review.js +414 -414
- package/dist/builtin/skill-creator/scripts/grade-evals.d.ts +73 -73
- package/dist/builtin/skill-creator/scripts/grade-evals.js +402 -402
- package/dist/builtin/skill-creator/scripts/improve-description.d.ts +23 -23
- package/dist/builtin/skill-creator/scripts/improve-description.js +160 -160
- package/dist/builtin/skill-creator/scripts/init-skill.d.ts +14 -14
- package/dist/builtin/skill-creator/scripts/init-skill.js +155 -155
- package/dist/builtin/skill-creator/scripts/install-skill.d.ts +29 -29
- package/dist/builtin/skill-creator/scripts/install-skill.js +173 -173
- package/dist/builtin/skill-creator/scripts/package-skill.d.ts +38 -38
- package/dist/builtin/skill-creator/scripts/package-skill.js +121 -121
- package/dist/builtin/skill-creator/scripts/quick-validate.d.ts +8 -8
- package/dist/builtin/skill-creator/scripts/quick-validate.js +163 -163
- package/dist/builtin/skill-creator/scripts/run-eval.d.ts +66 -66
- package/dist/builtin/skill-creator/scripts/run-eval.js +353 -353
- package/dist/builtin/skill-creator/scripts/run-loop.d.ts +49 -49
- package/dist/builtin/skill-creator/scripts/run-loop.js +242 -242
- package/dist/builtin/skill-creator/scripts/run-trigger-eval.d.ts +58 -58
- package/dist/builtin/skill-creator/scripts/run-trigger-eval.js +224 -224
- package/dist/builtin/tdd/SKILL.md +56 -56
- package/dist/chunks/agent-4FABF6WK.js +2 -0
- package/dist/chunks/argument-completer-72VHB2VL.js +2 -0
- package/dist/chunks/{chunk-7JXA3533.js → chunk-4OIQZWA5.js} +223 -226
- package/dist/chunks/{chunk-BNVSKIAB.js → chunk-6BVF3HZ7.js} +136 -136
- package/dist/chunks/chunk-7JZZIFZH.js +501 -0
- package/dist/chunks/chunk-AC7Z2OIY.js +2 -0
- package/dist/chunks/{chunk-JS452J2F.js → chunk-C4KYZAFU.js} +2 -2
- package/dist/chunks/chunk-CHUPIWIF.js +251 -0
- package/dist/chunks/{chunk-C4DTUKTR.js → chunk-GYUU7XLH.js} +5 -4
- package/dist/chunks/{chunk-OK4AXDC5.js → chunk-HAX55GOQ.js} +1 -1
- package/dist/chunks/chunk-JKTJCGO2.js +418 -0
- package/dist/chunks/{chunk-O743AJ5V.js → chunk-LQYETRFK.js} +171 -175
- package/dist/chunks/{chunk-2PEDBGKN.js → chunk-LTUZTQ6W.js} +1 -1
- package/dist/chunks/chunk-LYWDUSKO.js +2 -0
- package/dist/chunks/chunk-NGH6T4FD.js +92 -0
- package/dist/chunks/{chunk-SRIJX5ZP.js → chunk-NVRWCSA5.js} +1 -1
- package/dist/chunks/chunk-O4DS7RIQ.js +384 -0
- package/dist/chunks/chunk-ORXU6OWZ.js +2 -0
- package/dist/chunks/chunk-POTW3O65.js +124 -0
- package/dist/chunks/{chunk-2TM3W3GK.js → chunk-RIQSS56Y.js} +1 -1
- package/dist/chunks/chunk-U27XKEN5.js +407 -0
- package/dist/chunks/{chunk-6ABQJUK6.js → chunk-XUX6OUCA.js} +2 -2
- package/dist/chunks/{client-JDOS3YJR.js → client-4C456K4O.js} +1 -1
- package/dist/chunks/compaction-config-3VQRDFF4.js +2 -0
- package/dist/chunks/{construction-bootstrap-YCWHHUYO.js → construction-bootstrap-AHN7EDGG.js} +1 -1
- package/dist/chunks/dist-BCBQXAGI.js +2 -0
- package/dist/chunks/dist-QK2YDWU6.js +2 -0
- package/dist/chunks/host-VIHV7ADG.js +2 -0
- package/dist/chunks/run-manager-NBVMU3KV.js +2 -0
- package/dist/chunks/utils-MEJZ2IGI.js +2 -0
- package/dist/index.d.ts +22 -21
- package/dist/index.js +7 -7
- package/dist/kodax_bootstrap.js +26 -26
- package/dist/kodax_cli.js +1905 -1882
- package/dist/native/darwin-arm64/LICENSE-APACHE.txt +13 -0
- package/dist/native/darwin-arm64/kodax-text-transaction.node +0 -0
- package/dist/native/darwin-arm64/manifest.json +16 -0
- package/dist/native/darwin-x64/LICENSE-APACHE.txt +13 -0
- package/dist/native/darwin-x64/kodax-text-transaction.node +0 -0
- package/dist/native/darwin-x64/manifest.json +16 -0
- package/dist/native/linux-arm64/LICENSE-APACHE.txt +13 -0
- package/dist/native/linux-arm64/kodax-text-transaction.node +0 -0
- package/dist/native/linux-arm64/manifest.json +16 -0
- package/dist/native/linux-x64/LICENSE-APACHE.txt +13 -0
- package/dist/native/linux-x64/kodax-text-transaction.node +0 -0
- package/dist/native/linux-x64/manifest.json +16 -0
- package/dist/native/win32-x64/LICENSE-APACHE.txt +13 -0
- package/dist/native/win32-x64/NOTICE-windows-sandbox.txt +8 -0
- 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 +30 -0
- package/dist/provider-capabilities.json +108 -2
- package/dist/runtime-worker.js +1745 -1727
- package/dist/sandbox-network-broker.js +1715 -0
- package/dist/sdk-a2a.d.ts +13 -12
- package/dist/sdk-a2a.js +1 -1
- package/dist/sdk-agent.d.ts +27 -18
- package/dist/sdk-agent.js +1 -1
- package/dist/sdk-coding.d.ts +107 -58
- package/dist/sdk-coding.js +1 -1
- package/dist/sdk-experimental-memory.d.ts +4 -4
- package/dist/sdk-experimental-memory.js +1 -1
- package/dist/sdk-llm.d.ts +9 -10
- package/dist/sdk-llm.js +1 -1
- package/dist/sdk-mcp.js +1 -1
- package/dist/sdk-media.d.ts +1 -1
- package/dist/sdk-media.js +1 -1
- package/dist/sdk-repl.d.ts +25 -17
- package/dist/sdk-repl.js +1 -1
- package/dist/sdk-runtime.d.ts +41 -17
- package/dist/sdk-runtime.js +1 -1
- package/dist/sdk-sandbox.d.ts +17 -3
- package/dist/sdk-sandbox.js +1 -1
- package/dist/sdk-session.d.ts +8 -7
- package/dist/sdk-session.js +1 -1
- package/dist/sdk-skills.js +1 -1
- package/dist/semantic-worker.js +61 -61
- package/dist/types-chunks/{base.d-vopO1rml.d.ts → base.d-COo8E2dk.d.ts} +18 -27
- package/dist/types-chunks/{bash-prefix-extractor.d-B2rxNI4L.d.ts → bash-prefix-extractor.d-DQOlA8cy.d.ts} +72 -52
- package/dist/types-chunks/{capability-learning.d-CE1tm29C.d.ts → capability-learning.d-lRPgA3Or.d.ts} +1 -1
- package/dist/types-chunks/{capsule.d-Y7QRS4J2.d.ts → capsule.d-0zxsgXg_.d.ts} +3 -3
- package/dist/types-chunks/{controller.d-BR-UVeUR.d.ts → controller.d-BTtyIIC1.d.ts} +1 -1
- package/dist/types-chunks/{controller.d-C5noq5-w.d.ts → controller.d-C7tXUcXo.d.ts} +2 -2
- package/dist/types-chunks/{guardrail.d-DqHD-61O.d.ts → guardrail.d-DKTyEHJa.d.ts} +5 -5
- package/dist/types-chunks/{history-retrieval.d-CKU8zmt_.d.ts → history-retrieval.d-CHnL99S7.d.ts} +2 -2
- package/dist/types-chunks/{public-api.d-D7fXaWW8.d.ts → public-api.d-Dx3L3W4Z.d.ts} +7 -4
- package/dist/types-chunks/{repl.d-BYDb14s6.d.ts → repl.d-mO01olIa.d.ts} +5 -5
- package/dist/types-chunks/{resolver.d-CwHUwbdE.d.ts → resolver.d-DlXPjeyx.d.ts} +38 -6
- package/dist/types-chunks/{review-inbox.d-BSgFewyj.d.ts → review-inbox.d-WDSe1nze.d.ts} +1 -1
- package/dist/types-chunks/{run-manager.d-BVJSntpS.d.ts → run-manager.d-DENbbzgR.d.ts} +1 -1
- package/dist/types-chunks/{sdk-session-CqEG84oP.d.ts → sdk-session-DYHGXXH4.d.ts} +3 -3
- package/dist/types-chunks/{shell-command-sets.d-DqaaBwhU.d.ts → shell-command-sets.d-CjFqS4dp.d.ts} +1 -1
- package/dist/types-chunks/{side-query.d-iH0P9ASy.d.ts → side-query.d-j8A3sFv_.d.ts} +2 -2
- package/dist/types-chunks/{types.d-rUOjXych.d.ts → types.d-BbZjR0Wr.d.ts} +1 -1
- package/dist/types-chunks/{types.d-CaTXAW_Q.d.ts → types.d-BkTIKdH6.d.ts} +2 -2
- package/dist/types-chunks/{types.d-C5xQEFcj.d.ts → types.d-DncLrpu_.d.ts} +4 -4
- package/dist/types-chunks/{types.d-CK9A9rpP.d.ts → types.d-Xy0f3x4i.d.ts} +9 -0
- package/dist/types-chunks/{utils.d-CWUyLiXo.d.ts → utils.d-CnxefMos.d.ts} +6 -6
- package/package.json +10 -3
- package/public_docs/README.md +130 -0
- package/public_docs/configuration/sandbox.md +289 -0
- package/public_docs/sdk/embedder-guide.md +6674 -0
- package/scripts/kodax-bin.cjs +28 -28
- package/scripts/production-env.cjs +25 -25
- package/dist/chunks/agent-XXZMXKKA.js +0 -2
- package/dist/chunks/argument-completer-KCYDGTQW.js +0 -2
- package/dist/chunks/chunk-77PNP27P.js +0 -92
- package/dist/chunks/chunk-7QBWHCIZ.js +0 -2
- package/dist/chunks/chunk-BHE66SP3.js +0 -123
- package/dist/chunks/chunk-BR2OSB2I.js +0 -722
- package/dist/chunks/chunk-DSMONSVB.js +0 -407
- package/dist/chunks/chunk-Q5VRWSKG.js +0 -418
- package/dist/chunks/chunk-XWRPOGJN.js +0 -4
- package/dist/chunks/chunk-Y5VIQBT6.js +0 -383
- package/dist/chunks/compaction-config-EGS4577X.js +0 -2
- package/dist/chunks/dist-ITTXQHRJ.js +0 -2
- package/dist/chunks/dist-KFYN3OKD.js +0 -2
- package/dist/chunks/host-VAYADIPW.js +0 -2
- package/dist/chunks/run-manager-52IJZMZJ.js +0 -2
- package/dist/chunks/utils-P7PBSL3R.js +0 -2
- package/dist/sandbox-workspace-session.js +0 -1705
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { k as KodaXMessage, G as KodaXReasoningMode, d as KodaXCustomProviderConfig, q as KodaXProviderCapabilityProfile } from './types.d-
|
|
2
|
-
import { df as WorkflowProcessSource } from './controller.d-
|
|
3
|
-
import { Q as KodaXContextTokenSnapshot, aD as KodaXSkillDynamicContextPolicy, t as KodaXAgentMode,
|
|
4
|
-
import { e as AgentsFile, t as AutoModeStats, T as KodaXMcpServersConfig } from './guardrail.d-
|
|
1
|
+
import { k as KodaXMessage, G as KodaXReasoningMode, d as KodaXCustomProviderConfig, q as KodaXProviderCapabilityProfile } from './types.d-Xy0f3x4i.js';
|
|
2
|
+
import { df as WorkflowProcessSource } from './controller.d-C7tXUcXo.js';
|
|
3
|
+
import { Q as KodaXContextTokenSnapshot, aD as KodaXSkillDynamicContextPolicy, t as KodaXAgentMode, ah as KodaXRepoIntelligenceMode, a3 as KodaXOptions, aE as KodaXSkillInvocationContext } from './bash-prefix-extractor.d-DQOlA8cy.js';
|
|
4
|
+
import { e as AgentsFile, t as AutoModeStats, T as KodaXMcpServersConfig } from './guardrail.d-DKTyEHJa.js';
|
|
5
5
|
import * as readline from 'readline';
|
|
6
|
-
import { aq as KodaXSessionUiHistoryItem, af as KodaXSessionLineage, a6 as KodaXSessionArtifactLedgerEntry, V as KodaXExtensionSessionState, U as KodaXExtensionSessionRecord, am as KodaXSessionRuntimeInfo } from './types.d-
|
|
7
|
-
import { S as PermissionMode, L as LearningBinding, G as LearningSurfaceSnapshot } from './public-api.d-
|
|
6
|
+
import { aq as KodaXSessionUiHistoryItem, af as KodaXSessionLineage, a6 as KodaXSessionArtifactLedgerEntry, V as KodaXExtensionSessionState, U as KodaXExtensionSessionRecord, am as KodaXSessionRuntimeInfo } from './types.d-BbZjR0Wr.js';
|
|
7
|
+
import { S as PermissionMode, L as LearningBinding, G as LearningSurfaceSnapshot } from './public-api.d-Dx3L3W4Z.js';
|
|
8
8
|
import { SpawnSyncReturns } from 'child_process';
|
|
9
9
|
|
|
10
10
|
/**
|
package/package.json
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kodax-ai/kodax",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.96-alpha.2",
|
|
4
4
|
"description": "KodaX lightweight coding agent - TypeScript implementation with 16 built-in LLM provider aliases, published as a Node-free single-file CLI and SDK",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"private": false,
|
|
7
|
+
"packageManager": "npm@10.9.8",
|
|
7
8
|
"publishConfig": {
|
|
8
9
|
"access": "public"
|
|
9
10
|
},
|
|
@@ -81,12 +82,13 @@
|
|
|
81
82
|
"./package.json": "./package.json"
|
|
82
83
|
},
|
|
83
84
|
"scripts": {
|
|
84
|
-
"build": "npm run config:templates:check && npm run build:packages && npm run build:bundle && npm run build:dts",
|
|
85
|
+
"build": "npm run config:templates:check && npm run build:packages && npm run build:native && npm run build:bundle && npm run build:dts",
|
|
85
86
|
"config:templates:sync": "node scripts/sync-config-templates.mjs",
|
|
86
87
|
"config:templates:check": "node scripts/sync-config-templates.mjs --check",
|
|
87
88
|
"build:dts": "node scripts/build-dts.mjs",
|
|
88
89
|
"build:packages": "tsc -b tsconfig.build.json && npm run copy:builtin -w @kodax-ai/agent && npm run copy:provider-caps -w @kodax-ai/llm",
|
|
89
90
|
"build:bundle": "node scripts/build-bundle.mjs",
|
|
91
|
+
"build:native": "node scripts/build-native.mjs",
|
|
90
92
|
"dev": "node --max-old-space-size=4096 --require ./scripts/production-env.cjs --import tsx src/kodax_bootstrap.ts",
|
|
91
93
|
"dev:cli": "node --max-old-space-size=4096 --require ./scripts/production-env.cjs --import tsx src/kodax_bootstrap.ts",
|
|
92
94
|
"dev:mem-diag": "node scripts/mem-diag-launch.cjs",
|
|
@@ -98,6 +100,8 @@
|
|
|
98
100
|
"build:binary": "node scripts/build-binary.mjs",
|
|
99
101
|
"build:binary:all": "node scripts/build-binary.mjs --all",
|
|
100
102
|
"test": "vitest run",
|
|
103
|
+
"test:native": "node scripts/test-native.mjs",
|
|
104
|
+
"test:packed-native": "node scripts/test-packed-native.mjs",
|
|
101
105
|
"test:fast": "vitest run -c vitest.fast.config.ts",
|
|
102
106
|
"test:changed": "vitest run --changed",
|
|
103
107
|
"test:unit": "vitest run -c vitest.unit.config.ts",
|
|
@@ -183,6 +187,7 @@
|
|
|
183
187
|
"ink-testing-library": "^4.0.0",
|
|
184
188
|
"rollup": "^4.60.4",
|
|
185
189
|
"rollup-plugin-dts": "^6.4.1",
|
|
190
|
+
"undici": "^6.28.0",
|
|
186
191
|
"vitest": "^3.2.4"
|
|
187
192
|
},
|
|
188
193
|
"engines": {
|
|
@@ -202,12 +207,14 @@
|
|
|
202
207
|
"dist/runtime-worker.js",
|
|
203
208
|
"dist/constructed-handler-worker.js",
|
|
204
209
|
"dist/types-chunks",
|
|
210
|
+
"dist/native",
|
|
205
211
|
"config-templates",
|
|
206
212
|
"scripts/kodax-bin.cjs",
|
|
207
213
|
"scripts/production-env.cjs",
|
|
208
214
|
"README.md",
|
|
209
215
|
"README_CN.md",
|
|
210
|
-
"
|
|
216
|
+
"public_docs/sdk/embedder-guide.md",
|
|
217
|
+
"public_docs/configuration/sandbox.md",
|
|
211
218
|
"LICENSE",
|
|
212
219
|
"CHANGELOG.md"
|
|
213
220
|
]
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# KodaX Documentation
|
|
2
|
+
|
|
3
|
+
Public documentation for KodaX users and SDK integrators.
|
|
4
|
+
|
|
5
|
+
The current release is `v0.7.96-alpha.2` (GitHub pre-release; npm publication
|
|
6
|
+
remains manual). It separates trusted text transactions from platform shell
|
|
7
|
+
containment on Windows, Linux, and macOS: controlled text tools commit in the
|
|
8
|
+
trusted KodaX Runtime with per-file kernel locking, revision CAS, and flushed
|
|
9
|
+
atomic replacement, while Windows shell commands run through the native
|
|
10
|
+
restricted-token runner (native shell protocol version 7, Windows
|
|
11
|
+
`sandboxRuntime:6`, one-time `kodax sandbox setup` cutover). It replaces the
|
|
12
|
+
local tool-result capacity hard gate with capacity-debt admission and a
|
|
13
|
+
bounded recovery ladder (`capacityDebt` metadata, floor-bounded output
|
|
14
|
+
reserve, `failureKind: "context_capacity"` with structured `contextTokens`),
|
|
15
|
+
exposes one credential-safe `failureDetail` across failure events, Run
|
|
16
|
+
result/status, and Session diagnostics, and registers the
|
|
17
|
+
`deepseek-v4-flash-vision-exp` and `glm-5.3-flash` models plus the custom
|
|
18
|
+
provider `imageInput` flag. On top of v0.7.95: self-healing
|
|
19
|
+
Windows sandbox cleanup (Windows `sandboxRuntime:5`,
|
|
20
|
+
`runtimeExitSettlement:2`),
|
|
21
|
+
Issue 301 learning-lock / fullscreen-terminal / Explicit-Skill recovery, and
|
|
22
|
+
Issue 302 coding-result finalization before the public completion signal, on
|
|
23
|
+
top of the v0.7.94 concurrent
|
|
24
|
+
sandboxed text mutations, Issue 300 authorized-root git trust, scheduled
|
|
25
|
+
shutdown failure reporting, missing-workspace Run start, and
|
|
26
|
+
`conversationHistory:2`, the
|
|
27
|
+
v0.7.93 failed-exit fast settlement, previous-boot ACL recovery, and isolated
|
|
28
|
+
provider abort classification, plus the v0.7.92 filesystem-effect
|
|
29
|
+
operation-token coordinator, recorded-release owners, managed Session-before-
|
|
30
|
+
completion ordering, canonical-first resume reconstruction, `sandboxRuntime:4`,
|
|
31
|
+
and `crashOutcomeModel:2`. Issue 256's
|
|
32
|
+
lost-ancestor descendant-closure boundary remains open. The same guidance still
|
|
33
|
+
covers the v0.7.89 Issue 293
|
|
34
|
+
topology-transparent conversation projection, FEATURE_293 zero-service web
|
|
35
|
+
search fallback, and FEATURE_294 run-scoped Host Tools. The host-tool surface is
|
|
36
|
+
leased to one Run, registry-first, revocation-safe, and absent from unrelated
|
|
37
|
+
CLI runs. Its custom web-search endpoint remains isolated. The v0.7.88 SDK
|
|
38
|
+
guidance adds the GLM-5.3 Coding Plan
|
|
39
|
+
routes with verbatim model IDs, keeps GLM-5.2 selectable, defaults
|
|
40
|
+
`zhipu-coding`, `zai-coding`, and `ark-coding` to 5.3, and documents the GLM-5.3
|
|
41
|
+
always-thinking effort mapping. It also covers atomic Runtime owner
|
|
42
|
+
recovery, process-start identity locks, Windows sandbox termination attestation,
|
|
43
|
+
durable ACL owner markers, and Windows workspace Shell PATH/executable scoping
|
|
44
|
+
with quoted `cmd.exe` argument preservation. POSIX workspace sessions initialize
|
|
45
|
+
fresh-home policy roots, settle workspace-local warm-up within the Shell
|
|
46
|
+
abort/deadline, retire invalid sessions after lease-cleanup failure, and fail closed when process-tree cleanup is unconfirmed,
|
|
47
|
+
in addition to the v0.7.85 Session-scoped
|
|
48
|
+
Runtime Event Journals, the `sessionEventJournal:1` daemon contract,
|
|
49
|
+
conversation-first Memory management, the additive experimental Memory
|
|
50
|
+
management facade, and the startup/Worker lifecycle boundaries. Issue 256's
|
|
51
|
+
remaining Worker owner-lease boundary remains open after v0.7.89; this release
|
|
52
|
+
assigns no replacement target.
|
|
53
|
+
|
|
54
|
+
The current source additionally documents structured, credential-safe Runtime
|
|
55
|
+
`failureDetail`. Stable KodaX classification stays separate from optional
|
|
56
|
+
bounded upstream identifiers, and failure/settlement events, Run result/status,
|
|
57
|
+
and Session diagnostics project the same fact when it exists. This additive
|
|
58
|
+
contract ships in `v0.7.96-alpha.2`; consumers of older published packages must
|
|
59
|
+
tolerate an absent field.
|
|
60
|
+
|
|
61
|
+
The v0.7.90 SDK guidance also documents orderly retirement for timed-out
|
|
62
|
+
workspace sessions, actionable daemon Error/aggregate/cause diagnostics, direct
|
|
63
|
+
clone-predecessor lineage and topology-correct archive markers, and provider-
|
|
64
|
+
valid object schemas for run-scoped tools. npm publication remains a manual
|
|
65
|
+
operator step.
|
|
66
|
+
|
|
67
|
+
The v0.7.91 SDK guidance adds the crash-resumable
|
|
68
|
+
`settleKodaXRuntimeExit()` transaction and `runtimeExitSettlement:1` capability,
|
|
69
|
+
effective live output segments (`responseId` + `providerRequestId`), and
|
|
70
|
+
standalone lazy provider dependency bundling. It also documents bounded
|
|
71
|
+
AskUser/permission deadlines, owner AbortSignal propagation,
|
|
72
|
+
`handleRuntimePermissionRequest()`, validated default answers, and stale
|
|
73
|
+
prepared-Session-tail recovery after a `data_changed` race.
|
|
74
|
+
|
|
75
|
+
The v0.7.94 SDK guidance documents concurrent sandboxed text mutations,
|
|
76
|
+
authorized-root git trust (`gitSafeDirectory: authorized-repo-roots`),
|
|
77
|
+
byte-bounded linked-worktree and submodule relationship reads, observed
|
|
78
|
+
text-helper stdin failures, scheduled shutdown failure reporting, omitting
|
|
79
|
+
the text sandbox when the workspace directory does not exist,
|
|
80
|
+
`conversationHistory:2`, independent explicit Skill invocation, diagnosed
|
|
81
|
+
invalid `allowed-tools` / malformed hook JSON, `PostToolUse` after an
|
|
82
|
+
embedder observer throw, fail-closed Run terminal settlement, observed
|
|
83
|
+
sandbox/managed-child cleanup rejection, typed daemon disconnect facts,
|
|
84
|
+
bounded credential-safe `failureKind`, and exact-`runId` result recovery. An
|
|
85
|
+
admitted Run is queried and awaited after reconnect; it is never started
|
|
86
|
+
again. `sandboxRuntime:4` and `crashOutcomeModel:2` are unchanged.
|
|
87
|
+
|
|
88
|
+
The v0.7.93 SDK guidance documents that a durable Windows `failed` shutdown
|
|
89
|
+
outcome ends the orderly exit wait, previous-boot shared ACL markers may be
|
|
90
|
+
recovered after a verified boot change, and Anthropic/OpenAI abort wrappers
|
|
91
|
+
are classified by isolated SDK class identity. Capability versions are
|
|
92
|
+
unchanged.
|
|
93
|
+
|
|
94
|
+
The v0.7.92 SDK guidance adds `sandboxRuntime:4` and `crashOutcomeModel:2` as
|
|
95
|
+
pre-start facts. Auto-start replaces an idle older daemon and fails closed
|
|
96
|
+
while it is busy. Managed `onComplete` is not terminal authority. Hosts must
|
|
97
|
+
not delete ProgramData lock files to recover a stuck coordinator. Resume
|
|
98
|
+
reconstruction uses canonical Session `messages` as the transcript; `uiHistory`
|
|
99
|
+
may overlay tool cards and display-only entries but cannot hide ordinary
|
|
100
|
+
conversation. Presentation-only `agent-completed` / `task-completed` events
|
|
101
|
+
stay host-owned when a non-empty CLI `uiHistory` exists.
|
|
102
|
+
|
|
103
|
+
## Getting Started
|
|
104
|
+
|
|
105
|
+
- [Overview](./getting-started/overview.md) — What KodaX is and how it compares
|
|
106
|
+
- [Installation](./getting-started/installation.md) — npm, single binary, build from source
|
|
107
|
+
- [Quickstart](./getting-started/quickstart.md) — Your first session
|
|
108
|
+
|
|
109
|
+
## Configuration
|
|
110
|
+
|
|
111
|
+
- [Providers & API Keys](./configuration/providers.md) — 16 built-in provider aliases
|
|
112
|
+
- [Custom Providers](./configuration/custom-providers.md) — OpenAI/Anthropic-compatible endpoints
|
|
113
|
+
- [Configuration Files](./configuration/config-files.md) — config.json, split files, env vars
|
|
114
|
+
- [Permission Modes](./configuration/permissions.md) — Plan / Edits / Auto + Shell Execution Contract
|
|
115
|
+
- [Sandbox](./configuration/sandbox.md) — Optional OS-level containment (ASRT)
|
|
116
|
+
|
|
117
|
+
## SDK
|
|
118
|
+
|
|
119
|
+
- [Embedder Guide](./sdk/embedder-guide.md) — Full SDK integration guide for
|
|
120
|
+
host applications, including
|
|
121
|
+
[structured credential-safe Runtime failures](./sdk/embedder-guide.md#structured-credential-safe-runtime-failures),
|
|
122
|
+
explicit-vs-model Skill invocation, and dynamic-context policy
|
|
123
|
+
|
|
124
|
+
## Guides
|
|
125
|
+
|
|
126
|
+
*(More standalone guides coming soon: CLI reference, REPL commands, sessions, multi-agent, skills, extensions, MCP, A2A, repo intelligence, memory, workflows, compaction, doctor, tools reference. Current Skill SDK semantics are documented in the Embedder Guide.)*
|
|
127
|
+
|
|
128
|
+
## Reference
|
|
129
|
+
|
|
130
|
+
*(Coming soon: troubleshooting, FAQ, comparison, license.)*
|
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
# Sandbox
|
|
2
|
+
|
|
3
|
+
KodaX supports an optional OS-level sandbox for model-issued shell commands.
|
|
4
|
+
On Windows, ASRT owns network/account setup while the KodaX native runner owns
|
|
5
|
+
the restricted token and process Job; macOS and Linux use ASRT's platform
|
|
6
|
+
backends directly.
|
|
7
|
+
|
|
8
|
+
## Activate the sandbox
|
|
9
|
+
|
|
10
|
+
```bash
|
|
11
|
+
kodax sandbox doctor # Check readiness
|
|
12
|
+
kodax sandbox setup # Activate
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
`kodax setup` and first-run setup also check sandbox readiness once.
|
|
16
|
+
|
|
17
|
+
Trusted text tools have a separate native diagnostic because they do not use
|
|
18
|
+
the shell sandbox. Run `kodax doctor --native-text` to explicitly load and
|
|
19
|
+
verify the packaged trusted-text addon. This check does not require
|
|
20
|
+
`kodax sandbox setup` and does not change shell sandbox state.
|
|
21
|
+
|
|
22
|
+
## Platform backends
|
|
23
|
+
|
|
24
|
+
| Platform | Backend | Dependencies |
|
|
25
|
+
|---|---|---|
|
|
26
|
+
| **Windows** | Restricted sandbox account + network policy | None (UAC during activation; an upgrade SID rotation may require a second confirmation) |
|
|
27
|
+
| **macOS** | Seatbelt (`sandbox-exec`) | ripgrep (`brew install ripgrep`) |
|
|
28
|
+
| **Linux** | bubblewrap | `bubblewrap`, `socat`, `ripgrep` |
|
|
29
|
+
|
|
30
|
+
KodaX never runs `sudo` or a package manager automatically. If the sandbox is
|
|
31
|
+
not active, deterministic safe operations and Auto[LLM] decisions keep the same
|
|
32
|
+
permission behavior; only OS-level containment is absent. Ordinary runs do not
|
|
33
|
+
repeatedly prompt for setup.
|
|
34
|
+
|
|
35
|
+
On Linux, the kernel and host security policy must also permit unprivileged
|
|
36
|
+
user namespaces. Some hardened distributions disable them even when
|
|
37
|
+
`bubblewrap` is installed. KodaX does not change sysctls or AppArmor policy;
|
|
38
|
+
if the broker proves the wrapper could not spawn the target, the standalone SDK reports
|
|
39
|
+
`reason: 'backend_launch_failed'` with a bounded diagnostic instead of claiming
|
|
40
|
+
that the command completed inside the sandbox. A spawned wrapper that exits
|
|
41
|
+
without target-start authority, or any missing or invalid broker-only control
|
|
42
|
+
frame, returns `execution_uncertain`; the command may have started and must not
|
|
43
|
+
be retried blindly.
|
|
44
|
+
|
|
45
|
+
## REPL diagnostics
|
|
46
|
+
|
|
47
|
+
In the REPL, `/sandbox` refreshes readiness and diagnostics without activating
|
|
48
|
+
the backend or requesting elevation. Per-command sandbox routing remains
|
|
49
|
+
internal and is not shown in normal command history.
|
|
50
|
+
|
|
51
|
+
## Environment variable passthrough
|
|
52
|
+
|
|
53
|
+
Credential-shaped environment variables are filtered from model-issued shell
|
|
54
|
+
commands by default. To expose specific host variables to those command targets:
|
|
55
|
+
|
|
56
|
+
```json
|
|
57
|
+
{
|
|
58
|
+
"sandbox": {
|
|
59
|
+
"envPass": ["GH_TOKEN", "GITHUB_TOKEN", "OPENAI_API_KEY"]
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
The default list is empty. Values remain in the host environment and are never
|
|
65
|
+
stored in `config.json`; project configuration cannot extend the list. Matching
|
|
66
|
+
is exact (case-insensitive on Windows), and execution-control variables such as
|
|
67
|
+
`NODE_OPTION` and `BASH_ENV` remain blocked.
|
|
68
|
+
|
|
69
|
+
Restart KodaX after changing the host variables or this setting; stop/restart a
|
|
70
|
+
persistent KodaX daemon so it receives the new environment and configuration.
|
|
71
|
+
|
|
72
|
+
## Historical Windows workspace Shell behavior (v0.7.86-v0.7.95)
|
|
73
|
+
|
|
74
|
+
Windows workspace Shell calls preserve the case-insensitive `PATH`/`Path` and
|
|
75
|
+
`PATHEXT` environment contract across the Runtime and sandbox brokers. KodaX
|
|
76
|
+
derives read grants from the final resolved PATH and shell executable, including
|
|
77
|
+
the bounded traversal needed by profile-manager junctions, rather than granting
|
|
78
|
+
the whole user application tree. `cmd.exe` command arguments retain their
|
|
79
|
+
verbatim-argument contract, so quoted paths and profile-managed executables are
|
|
80
|
+
not re-parsed by an intermediate broker.
|
|
81
|
+
|
|
82
|
+
The packaged Electron and Runtime smoke paths exercise this behavior. A missing
|
|
83
|
+
or unprovable sandbox lifecycle attestation after target start remains
|
|
84
|
+
fail-closed; KodaX does not retry a command that may already have started.
|
|
85
|
+
Commands with the same canonical workspace, Agent Home, additional filesystem,
|
|
86
|
+
toolchain, and network policy can share one Windows policy group across KodaX
|
|
87
|
+
processes. An incompatible policy or sandbox infrastructure failure before
|
|
88
|
+
target start returns the already-authorized command to normal permission
|
|
89
|
+
execution. Runtime sandbox capability v3 first fenced older daemon policy
|
|
90
|
+
revisions in v0.7.86. The v0.7.95 contract was `sandboxRuntime:5`: auto-start
|
|
91
|
+
replaces an idle v4-or-older Windows daemon and fails closed while it is busy.
|
|
92
|
+
The v5 advance marks self-healing Windows cleanup
|
|
93
|
+
(`delayedEffectDrainRecovery: 'automatic'`,
|
|
94
|
+
`sameBootAclRecovery: 'sandbox-user-process-probe'`): the machine-global
|
|
95
|
+
cleanup Job is recoverable across reboots, recovery tickets repair without
|
|
96
|
+
operator input, and background retries observe the exact daemon and supervisor
|
|
97
|
+
process generations. Do not
|
|
98
|
+
delete `model-filesystem-effects.lock` by hand; on Windows the coordinator
|
|
99
|
+
state lives under `C:\ProgramData\KodaX\sandbox-runtime\runtime\`.
|
|
100
|
+
|
|
101
|
+
## Trusted text tools (v0.7.96)
|
|
102
|
+
|
|
103
|
+
On Windows, Linux, and macOS, Runtime `write`, `edit`, `multi_edit`,
|
|
104
|
+
`insert_after_anchor`, and `undo` are trusted KodaX host operations. They do not enter ASRT, a
|
|
105
|
+
workspace session, the native shell runner, or a sandbox helper. The host
|
|
106
|
+
authorizes the final canonical local path and uses a short cross-Runtime
|
|
107
|
+
per-file kernel lock, locked reread, revision/content CAS, a flushed
|
|
108
|
+
same-directory temporary file, and atomic replacement. Symlink/reparse and
|
|
109
|
+
multi-link targets, remote filesystems, and sensitive KodaX/Git control
|
|
110
|
+
locations fail closed; Windows additionally rejects UNC/device/ADS and other
|
|
111
|
+
alias namespaces. These tools are host-policy
|
|
112
|
+
constrained; they are not advertised as OS-token-sandboxed writes.
|
|
113
|
+
|
|
114
|
+
Atomic replacement is the commit point. If a Unix parent-directory flush or
|
|
115
|
+
escape rollback cannot be proven after that point, the tool returns
|
|
116
|
+
`text_mutation_commit_uncertain` with the complete pre/post receipt and tells
|
|
117
|
+
the caller to reread; do not retry the same edit blindly. Existing-file edits
|
|
118
|
+
retain their Undo backup. An uncertain Undo rebinds that backup to the observed
|
|
119
|
+
post-commit revision for a later CAS-checked resolution. A newly created file
|
|
120
|
+
still reports `before.state: missing` in the error receipt, but this does not
|
|
121
|
+
create a legacy Undo entry that deletes the file. Linux ZFS and casefold directories
|
|
122
|
+
are currently rejected because their namespace case/normalization semantics are
|
|
123
|
+
not yet proven by the native descriptor path.
|
|
124
|
+
|
|
125
|
+
Arbitrary shell programs do not participate in the text-tool lock. If the
|
|
126
|
+
locked final reread observes a shell change, the text operation returns a
|
|
127
|
+
structured stale conflict and does not overwrite the newer bytes; an
|
|
128
|
+
incompatible writer handle at that reread returns contention. On Windows a
|
|
129
|
+
delete/write reservation excludes a new writer between final CAS and the
|
|
130
|
+
POSIX-semantics atomic replace while compatible readers keep complete old/new
|
|
131
|
+
handles. On Unix, an uncooperative write, replace, or rename after final reread
|
|
132
|
+
remains an ordinary operating-system race.
|
|
133
|
+
Different canonical files do not share a transaction lock.
|
|
134
|
+
|
|
135
|
+
On Windows the kernel lock lives in a private namespace bound to the trusted
|
|
136
|
+
host user, so the restricted shell account cannot precreate its name. On Unix,
|
|
137
|
+
a fixed per-UID system coordination root is host-owned with mode `0700` and is
|
|
138
|
+
shared across Runtime config homes; its per-resource inode carries kernel
|
|
139
|
+
`flock`. The native binding is stored separately below
|
|
140
|
+
`KODAX_HOME/native-text-state-v1` and loaded through a no-follow descriptor
|
|
141
|
+
whose digest matches its content-addressed directory. Sandboxed shell policy
|
|
142
|
+
cannot read or write either root, and symlinked Agent Home state fails closed. File presence
|
|
143
|
+
does not mean the lock is held. Process death releases either lock
|
|
144
|
+
automatically and no PID/ticket recovery protocol is required. Unix atomic
|
|
145
|
+
replacement preserves ownership, mode, extended attributes, Linux
|
|
146
|
+
user-modifiable inode flags, and macOS extended ACL/file flags or fails closed.
|
|
147
|
+
On Windows, replacing a file left by an older sandbox identity makes the new
|
|
148
|
+
file trusted-host-owned while retaining its ordered effective ACE policy. The
|
|
149
|
+
filesystem may canonicalize DACL protection/inheritance control at the atomic
|
|
150
|
+
namespace commit; stale inherited authority is not copied from a former parent.
|
|
151
|
+
A low-integrity sandbox label normalizes to ordinary
|
|
152
|
+
host integrity instead of being reapplied. Thus an obsolete sandbox owner cannot permanently
|
|
153
|
+
block Write/Edit and does not require manual ACL repair.
|
|
154
|
+
|
|
155
|
+
## Background commands and session reuse (v0.7.96)
|
|
156
|
+
|
|
157
|
+
Windows v2 shell commands use a separate native host/runner protocol. ASRT
|
|
158
|
+
supplies the network proxy, WFP/CA integration, and the dedicated account;
|
|
159
|
+
KodaX supplies a restricted policy token, framed stdin/stdout/stderr, and a
|
|
160
|
+
no-breakaway, kill-on-close Job. The target is created suspended and assigned
|
|
161
|
+
to that Job before it may run, and a nonce-bound private desktop whose access
|
|
162
|
+
requires the exact policy capability avoids both
|
|
163
|
+
the known null-desktop loader failure and exposure to the interactive desktop. No filesystem-effect fence, workspace-session
|
|
164
|
+
owner, reset, cleanup, or poison gate spans the command lifetime, so shell
|
|
165
|
+
commands from different policies, Sessions, and Runtime processes may overlap.
|
|
166
|
+
A long-running shell therefore cannot make a trusted text tool unavailable.
|
|
167
|
+
Workspace-local `.kodax/runtime` state is excluded from shell read and write
|
|
168
|
+
authority even though the surrounding workspace is writable; Session journals,
|
|
169
|
+
cursor files, daemon records, and grants remain host-owned control state.
|
|
170
|
+
The private desktop uses an ephemeral full-policy capability. Filesystem write
|
|
171
|
+
authority instead uses stable capabilities derived from the sandbox-account
|
|
172
|
+
generation, final canonical root, and `allowRead`/`allowWrite`/`denyWrite`
|
|
173
|
+
clause. Every read root has an exact allow-read capability and a read-only root
|
|
174
|
+
implicitly carries its deny-write capability. The dedicated account,
|
|
175
|
+
per-launch logon, and Everyone SIDs remain in the restricting set because real
|
|
176
|
+
subprocess creation requires them, matching current Codex; Issue 309 documents
|
|
177
|
+
the remaining ambient-trustee child-DACL boundary. The shared sandbox group
|
|
178
|
+
supplies the normal access-check pass. The target's enabled Windows traverse
|
|
179
|
+
privilege reaches an exact allowed root without persistent ACEs on its private
|
|
180
|
+
ancestors; KodaX never rewrites a profile/container DACL merely to make a child
|
|
181
|
+
root reachable. Every target is preflighted before one atomic ACL transaction. Windows
|
|
182
|
+
`WRITE_RESTRICTED` does not enforce restricting SIDs for reads, so `denyRead`
|
|
183
|
+
uses an execution-logon deny under a short ACL mutex. A durable receipt records
|
|
184
|
+
the no-follow volume/file identity before mutation; exact cleanup follows Job
|
|
185
|
+
drain. A later shell host recovers a crashed owner only when PID creation time
|
|
186
|
+
and target identity prove the receipt stale. A missing or replaced target keeps
|
|
187
|
+
the receipt and blocks shell admission until repair, but cannot block trusted
|
|
188
|
+
text tools.
|
|
189
|
+
Within one Runtime, commands whose canonical network policy and sandbox-account
|
|
190
|
+
generation match share one process-level ASRT network broker; their native
|
|
191
|
+
requests, restricted policy tokens, controller connections, and Jobs remain
|
|
192
|
+
independent. Different network policies never share that authority. ASRT
|
|
193
|
+
0.0.65 still consumes two fixed-range ports for each distinct broker and has no
|
|
194
|
+
authenticated connection identity for routing unlike policies through one
|
|
195
|
+
ingress. Issue 308 tracks this capacity difference from Codex; KodaX does not
|
|
196
|
+
widen a policy or serialize shell lifetimes to conceal it.
|
|
197
|
+
The broker also owns a verified native liveness controller. Its named pipe is
|
|
198
|
+
created with a protected Host/SYSTEM-only DACL, rejects remote clients, and
|
|
199
|
+
keeps multiple pending instances for concurrent host launches. Restricted
|
|
200
|
+
targets cannot connect to or exhaust this control path. Broker/controller loss
|
|
201
|
+
closes every controller handle, drains active Jobs, and lets a later command
|
|
202
|
+
create a fresh broker.
|
|
203
|
+
This authority split is advertised as `sandboxRuntime:6`; auto-started clients
|
|
204
|
+
replace an idle older daemon and fail closed instead of joining a busy one.
|
|
205
|
+
Upgrading an existing Windows installation requires one `kodax sandbox setup`
|
|
206
|
+
cutover. Setup waits for old sandbox processes to exit, recovers recorded ACL
|
|
207
|
+
work, recreates the dedicated account with a new SID, and records that SID and
|
|
208
|
+
the native protocol in machine state. Doctor and native shell admission remain
|
|
209
|
+
fail-closed if that state is missing or mismatched; trusted text tools remain
|
|
210
|
+
available throughout. The embedded release manifest pins each native sidecar
|
|
211
|
+
protocol/SHA-256 plus the ASRT release version/SHA-256. Verified bytes are
|
|
212
|
+
staged in a protected content-addressed LocalAppData store independent of
|
|
213
|
+
`KODAX_HOME`; ASRT is checked before materialization and again before broker
|
|
214
|
+
startup. Windows text bytes remain Host/SYSTEM-only; the dedicated sandbox
|
|
215
|
+
group SID receives read/execute, but not write/delete, on the shell artifact;
|
|
216
|
+
and local Users receive only read/execute on the pinned ASRT executable. Fixed
|
|
217
|
+
Agent Home and credential read denies are installed once on exact roots through
|
|
218
|
+
native no-follow handles; cold admission idempotently guards an exact sensitive
|
|
219
|
+
directory created after setup. They are not rebuilt for each shell command. The
|
|
220
|
+
ASRT directory is not passed as a final-target policy root. A fixed System32
|
|
221
|
+
provisioner may run during this artifact bootstrap; text content and shell
|
|
222
|
+
stdin never enter it.
|
|
223
|
+
|
|
224
|
+
In a bundled build, the package-source ASRT executable may be a package-store
|
|
225
|
+
hardlink. KodaX does not trust that link relationship: it performs a
|
|
226
|
+
handle-bound bounded read and requires the complete bytes to match the embedded
|
|
227
|
+
release SHA-256 before copying them into the protected cache. Filesystem
|
|
228
|
+
development manifests and sources remain single-link. The executable used by
|
|
229
|
+
the broker still has one link and must pass the protected ACL and digest checks.
|
|
230
|
+
This prevents a valid installation layout from being mistaken for sandbox failure.
|
|
231
|
+
|
|
232
|
+
If a prior host died before a native request was consumed, explicit setup can
|
|
233
|
+
self-heal the protected control directory after proving the sandbox SID idle.
|
|
234
|
+
It retires only an expired request whose creator PID is dead, an aged
|
|
235
|
+
unconsumed network request from a dead PID, or a dead-owner terminal record
|
|
236
|
+
that already says `jobDrained: true`. Doctor never performs this cleanup.
|
|
237
|
+
Live, unexpired, malformed, unknown, and `windows-deny` recovery records remain
|
|
238
|
+
fail-closed instead of being treated as disposable files.
|
|
239
|
+
|
|
240
|
+
The final target is in its Job at process creation. ASRT still creates the
|
|
241
|
+
shared-account runner before KodaX code can apply runner-process hardening;
|
|
242
|
+
Issue 307 tracks that narrow upstream pre-main window, which current Codex also
|
|
243
|
+
retains. The KodaX host requests inherited error-mode suppression before ASRT
|
|
244
|
+
launch and runner code repeats it after entry, but the ASRT-owned cross-account
|
|
245
|
+
creation contract still controls loader faults before runner `main`; final target
|
|
246
|
+
faults are suppressed. It does not affect trusted text tools. Closing it requires an ASRT
|
|
247
|
+
creation-time process/thread security contract or privileged spawn service,
|
|
248
|
+
not another post-spawn patch.
|
|
249
|
+
|
|
250
|
+
Issue 309 documents the remaining Windows compatibility limitation: an explicit
|
|
251
|
+
ACE for a retained compatibility trustee can bypass a later root capability.
|
|
252
|
+
The ACE may be left by a sandbox command or already exist on an external or
|
|
253
|
+
host-owned descendant. KodaX requires exact read/write capabilities for normal
|
|
254
|
+
declared roots, but the primary account, logon, and Everyone SIDs must remain
|
|
255
|
+
for working subprocesses; closing explicit child-DACL reuse needs a different
|
|
256
|
+
loader/token architecture.
|
|
257
|
+
|
|
258
|
+
Linux and macOS shell calls remain ASRT-contained per command through
|
|
259
|
+
bubblewrap or Seatbelt/`sandbox-exec`. They do not keep a KodaX workspace-
|
|
260
|
+
session owner, reset/poison state, or filesystem-effect lease across the shell
|
|
261
|
+
lifetime. On every platform, an arbitrary shell writer is an ordinary OS race
|
|
262
|
+
and does not join trusted-text CAS.
|
|
263
|
+
|
|
264
|
+
## SDK sandbox
|
|
265
|
+
|
|
266
|
+
SDK callers pass the same shape per Run as `KodaXOptions.sandbox`, so concurrent
|
|
267
|
+
Runs can use different lists without mutating process-global configuration.
|
|
268
|
+
|
|
269
|
+
```ts
|
|
270
|
+
await runKodaX({
|
|
271
|
+
provider: 'openai',
|
|
272
|
+
sandbox: { envPass: ['GH_TOKEN'] },
|
|
273
|
+
}, 'Inspect the authenticated repository.');
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
SDK embedders can also use the standalone shell sandbox capability
|
|
277
|
+
independently through `@kodax-ai/kodax/sandbox`. Its readiness and setup state
|
|
278
|
+
apply to shell/process containment only. A failed or unavailable shell runner
|
|
279
|
+
does not change the trusted text-tool path. An unavailable result may include
|
|
280
|
+
`reason: 'doctor_not_ready' | 'backend_launch_failed'`; the latter also includes
|
|
281
|
+
a bounded `diagnostic` and is never reported as a sandboxed completion. A
|
|
282
|
+
separate `execution_uncertain` result means target-start authority could not be
|
|
283
|
+
recovered and callers must reread external state before deciding what to do.
|
|
284
|
+
|
|
285
|
+
## See also
|
|
286
|
+
|
|
287
|
+
- [Permissions](./permissions.md) — Permission modes and Auto Mode
|
|
288
|
+
- [Configuration files](./config-files.md) — Config.json reference
|
|
289
|
+
- [SDK overview](../sdk/overview.md) — SDK sandbox subpath
|