@kodax-ai/kodax 0.7.41 → 0.7.43

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/CHANGELOG.md +119 -3
  2. package/README.md +214 -286
  3. package/README_CN.md +173 -277
  4. package/dist/chunks/chunk-7G5PSL6C.js +830 -0
  5. package/dist/chunks/{chunk-6OB4AJOM.js → chunk-IYSK7LUK.js} +1 -1
  6. package/dist/chunks/chunk-K75O2CAE.js +31 -0
  7. package/dist/chunks/chunk-UG4262JI.js +502 -0
  8. package/dist/chunks/chunk-VHKAJDQD.js +425 -0
  9. package/dist/chunks/chunk-YMRZBS4G.js +2 -0
  10. package/dist/chunks/{compaction-config-LT5PEXPT.js → compaction-config-3E57ABCT.js} +1 -1
  11. package/dist/chunks/{construction-bootstrap-HBCWJFHC.js → construction-bootstrap-JR63KI5N.js} +4 -4
  12. package/dist/chunks/dist-KWHUKXEL.js +2 -0
  13. package/dist/chunks/dist-XANXEVTU.js +2 -0
  14. package/dist/chunks/utils-HQ2QCKJA.js +2 -0
  15. package/dist/index.d.ts +15 -10
  16. package/dist/index.js +5 -5
  17. package/dist/kodax_cli.js +1084 -1054
  18. package/dist/sdk-agent.d.ts +853 -135
  19. package/dist/sdk-agent.js +1 -1
  20. package/dist/sdk-coding.d.ts +932 -981
  21. package/dist/sdk-coding.js +1 -1
  22. package/dist/sdk-llm.d.ts +8 -5
  23. package/dist/sdk-llm.js +1 -1
  24. package/dist/sdk-mcp.d.ts +17 -0
  25. package/dist/sdk-mcp.js +2 -0
  26. package/dist/sdk-repl.d.ts +343 -10
  27. package/dist/sdk-repl.js +2 -1
  28. package/dist/sdk-session.d.ts +176 -0
  29. package/dist/sdk-session.js +2 -0
  30. package/dist/sdk-skills.d.ts +72 -4
  31. package/dist/sdk-skills.js +1 -1
  32. package/dist/types-chunks/{cost-tracker.d-C4dMlQuV.d.ts → base.d-FUJahC0i.d.ts} +22 -112
  33. package/dist/types-chunks/{bash-prefix-extractor.d-B2iliwdi.d.ts → bash-prefix-extractor.d-DMrGImMl.d.ts} +266 -228
  34. package/dist/types-chunks/capability.d-3C62G8Eq.d.ts +39 -0
  35. package/dist/types-chunks/config.d-BfJUXxC0.d.ts +41 -0
  36. package/dist/types-chunks/cost-tracker.d-wRtyEW9d.d.ts +110 -0
  37. package/dist/types-chunks/{history-cleanup.d-q1vAvCss.d.ts → file-tracker.d-zaLZeNBK.d.ts} +532 -15
  38. package/dist/types-chunks/manager.d-87belpiS.d.ts +370 -0
  39. package/dist/types-chunks/{resolver.d-BwD6TKz7.d.ts → resolver.d-CA68_NeH.d.ts} +150 -5
  40. package/dist/types-chunks/storage.d-DPAEX7zS.d.ts +115 -0
  41. package/dist/types-chunks/{capability.d-BxNgd1-c.d.ts → types.d-B1uGoVTE.d.ts} +72 -40
  42. package/dist/types-chunks/{instance-discovery.d-DZhp77vb.d.ts → types.d-CKJtjo-6.d.ts} +168 -258
  43. package/dist/types-chunks/types.d-mM8vqvhT.d.ts +254 -0
  44. package/dist/types-chunks/{storage.d-Bv9T99Qu.d.ts → utils.d-DkLZD_wa.d.ts} +38 -112
  45. package/package.json +15 -6
  46. package/dist/chunks/chunk-5TFLMGER.js +0 -2
  47. package/dist/chunks/chunk-6QO6HWGU.js +0 -30
  48. package/dist/chunks/chunk-EQ5DGS2W.js +0 -14
  49. package/dist/chunks/chunk-HYWVRTFA.js +0 -1233
  50. package/dist/chunks/chunk-SX2IS5JP.js +0 -16
  51. package/dist/chunks/chunk-ZPJPNLBK.js +0 -462
  52. package/dist/chunks/dist-M57GIWR4.js +0 -2
  53. package/dist/chunks/dist-V3BS2NKB.js +0 -2
  54. package/dist/chunks/utils-FAFUQJ2A.js +0 -2
@@ -1,6 +1,110 @@
1
- import { l as KodaXCompactMemorySeed, s as KodaXSessionArtifactLedgerEntry, L as KodaXSessionScope, M as KodaXSessionStorage, q as KodaXJsonValue, G as Guardrail, a3 as SessionErrorMetadata, D as DiscoveredInstance, C as ChildTaskRegistry, ac as TaskAbortRegistry, $ as RunnerToolCall, ae as ToolGuardrail } from './instance-discovery.d-DZhp77vb.js';
2
- import { o as KodaXMessage, C as CapabilityKind, b as CapabilityResult, Z as KodaXTokenUsage, G as KodaXReasoningMode, m as KodaXHarnessProfile, U as KodaXTaskWorkIntent, L as KodaXReviewScale, Q as KodaXTaskComplexity, c as KodaXAmaFanoutClass, S as KodaXTaskRoutingDecision, T as KodaXTaskType, M as KodaXRiskLevel, k as KodaXExecutionMode, e as KodaXAmaProfile, f as KodaXAmaTactic, d as KodaXAmaFanoutPolicy } from './capability.d-BxNgd1-c.js';
3
- import { K as KodaXBaseProvider, a as CostTracker } from './cost-tracker.d-C4dMlQuV.js';
1
+ import { t as KodaXSessionScope, u as KodaXSessionStorage, f as KodaXJsonValue, h as KodaXSessionArtifactLedgerEntry, S as SessionErrorMetadata } from './types.d-mM8vqvhT.js';
2
+ import { m as KodaXMessage, W as KodaXTokenUsage, D as KodaXReasoningMode, k as KodaXHarnessProfile, R as KodaXTaskWorkIntent, H as KodaXReviewScale, N as KodaXTaskComplexity, a as KodaXAmaFanoutClass, P as KodaXTaskRoutingDecision, Q as KodaXTaskType, I as KodaXRiskLevel, i as KodaXExecutionMode, c as KodaXAmaProfile, d as KodaXAmaTactic, b as KodaXAmaFanoutPolicy } from './types.d-B1uGoVTE.js';
3
+ import { k as CompactionUpdate, o as Guardrail, D as DiscoveredInstance, C as ChildTaskRegistry, a1 as TaskAbortRegistry, K as RunnerToolCall, a4 as ToolGuardrail } from './types.d-CKJtjo-6.js';
4
+ import { M as McpConnectMode, a as McpServerConfig, b as McpServersConfig, c as McpTransportKind } from './config.d-BfJUXxC0.js';
5
+ import { C as CapabilityKind, b as CapabilityResult } from './capability.d-3C62G8Eq.js';
6
+ import { K as KodaXBaseProvider } from './base.d-FUJahC0i.js';
7
+ import { a as CostTracker } from './cost-tracker.d-wRtyEW9d.js';
8
+
9
+ /** One tool-call breadcrumb. Captures only the name + a 60-char input
10
+ * hint so the snapshot stays compact under fan-out. Mirrors the
11
+ * `inputHint` extraction in `buildChildEvents.onToolUseStart`. */
12
+ interface ChildToolCallBreadcrumb {
13
+ readonly iteration: number;
14
+ readonly toolName: string;
15
+ /** Truncated path/pattern/command, ≤60 chars. May be empty when the
16
+ * tool input has no obvious key field. */
17
+ readonly inputHint: string;
18
+ /** Monotonic wall-clock ms at the time the tool call started. */
19
+ readonly startedAt: number;
20
+ }
21
+ /** Snapshot status. `running` is the initial state on dispatch. The
22
+ * three terminal states map from the child promise outcome:
23
+ * - `completed` — child returned success
24
+ * - `failed` — child returned non-success OR threw (non-AbortError)
25
+ * - `aborted` — child threw an AbortError (parent or task_stop fired)
26
+ */
27
+ type ChildProgressStatus = 'running' | 'completed' | 'failed' | 'aborted';
28
+ interface ChildProgressSnapshot {
29
+ readonly childId: string;
30
+ /** Mutable in the writer (dispatch-child-tasks) — terminal status is
31
+ * set once in the inner-IIFE `.finally` block. Readers
32
+ * (task-output tool) treat it as authoritative. */
33
+ status: ChildProgressStatus;
34
+ /** Monotonic wall-clock ms at dispatch. */
35
+ readonly startedAt: number;
36
+ /** Monotonic wall-clock ms at terminal. Undefined while `status===
37
+ * 'running'`. */
38
+ endedAt?: number;
39
+ /** Iterations consumed by the child agent. Updated by
40
+ * `snapshotUpdater({kind:'iteration', iteration, max})` from
41
+ * `buildChildEvents.onIterationStart`. */
42
+ iterations: number;
43
+ /** Iteration ceiling forwarded from `ChildExecutorOptions
44
+ * .maxIterationsPerChild`. */
45
+ maxIterations: number;
46
+ /** Mutable ring buffer; writer must respect `RECENT_TOOL_CALLS_RING_CAP`
47
+ * via `pushBreadcrumb`. */
48
+ recentToolCalls: ChildToolCallBreadcrumb[];
49
+ /** Populated at terminal (any of `completed` / `failed` / `aborted`)
50
+ * with the same pre-guardrail `rawSummary` string that
51
+ * `dispatch-child-tasks.ts` produces for the `<task-completed>` body.
52
+ * For success-empty / failed-empty paths this is the diagnostic
53
+ * envelope (mode= ... iterations=... etc.) so post-completion
54
+ * `task_output` reads stay in lock-step with the banner the Worker
55
+ * already saw. */
56
+ finalText?: string;
57
+ /** Optional dispatcher role (`scout` / `worker` / `generator`),
58
+ * captured at init so a debug-style `task_output` peek can correlate
59
+ * the child with the parent fan-out class. Not surfaced in the
60
+ * envelope; reserved for future tracing. */
61
+ readonly parentRole?: string;
62
+ /** Read-only flag forwarded from the dispatch bundle. Same rationale
63
+ * as `parentRole` — currently captured for future surfacing. */
64
+ readonly readOnly?: boolean;
65
+ /**
66
+ * FEATURE_191 — registered specialist agent name when the dispatch
67
+ * routed through a `subagent_type` argument. `undefined` for generic
68
+ * anonymous children. Surfaced by `task_output` so post-mortem peeks
69
+ * can identify which specialist owned the child.
70
+ */
71
+ readonly specialistName?: string;
72
+ }
73
+
74
+ /** Result of a cache lookup. */
75
+ type ReadStateLookup = {
76
+ readonly kind: 'miss';
77
+ } | {
78
+ readonly kind: 'hit';
79
+ /** Wall-clock time (ms since epoch) of the prior matching read. */
80
+ readonly previousReadAtMs: number;
81
+ };
82
+ interface ReadFileStateCache {
83
+ /**
84
+ * Have we read this exact `(filePath, offset, limit)` in this task,
85
+ * with no mtime change since? `'hit'` means yes — caller should
86
+ * return a stub instead of re-reading the file off disk.
87
+ *
88
+ * On stat failure (file deleted / permission denied between record
89
+ * and lookup), returns `'miss'` so the read tool runs its own stat
90
+ * and reports the right error to the LLM rather than serving a stale
91
+ * stub.
92
+ */
93
+ lookup(filePath: string, offset: number, limit: number): ReadStateLookup;
94
+ /**
95
+ * Record a successful read at this `(filePath, offset, limit)` with
96
+ * the mtime observed at read time. The mtime is supplied by the
97
+ * caller (the read tool already stats the file) so the cache does
98
+ * not pay a second stat call.
99
+ */
100
+ record(filePath: string, offset: number, limit: number, mtimeMs: number): void;
101
+ /** Drop all entries for this file. Called by Edit / Write / MultiEdit on success. */
102
+ forget(filePath: string): void;
103
+ /** Drop everything. Called by the compaction post-hook. */
104
+ clear(): void;
105
+ /** Test/diagnostic accessor — number of distinct files currently cached. */
106
+ size(): number;
107
+ }
4
108
 
5
109
  /** Result of a stale-check against the current on-disk content. */
6
110
  type StaleCheckResult = {
@@ -70,7 +174,9 @@ interface ContentHashCache {
70
174
 
71
175
  interface TodoInit {
72
176
  readonly id: string;
73
- readonly content: string;
177
+ /** v0.7.42 — see TodoItem.subject JSDoc. */
178
+ readonly subject: string;
179
+ readonly description?: string;
74
180
  readonly owner?: string;
75
181
  readonly sourceObligationIndex?: number;
76
182
  /**
@@ -96,9 +202,12 @@ interface TodoInit {
96
202
  /**
97
203
  * FEATURE_170 v0.7.41 — input shape for `add()`. No `id` (auto-generated
98
204
  * by the store), no `status` (always created as `pending`).
205
+ *
206
+ * v0.7.42 — `content` renamed to `subject` + optional `description`.
99
207
  */
100
208
  interface TodoAddSeed {
101
- readonly content: string;
209
+ readonly subject: string;
210
+ readonly description?: string;
102
211
  readonly activeForm?: string;
103
212
  readonly evaluator?: TodoEvaluatorHint;
104
213
  readonly owner?: string;
@@ -107,9 +216,22 @@ interface TodoAddSeed {
107
216
  }
108
217
  /**
109
218
  * FEATURE_170 v0.7.41 — input shape for `patch()`. Every field optional;
110
- * only those present in the patch object are applied. `metadata` is
111
- * shallow-merged (mirrors React setState mental model); explicit
112
- * `metadata: null` clears it.
219
+ * only those present in the patch object are applied.
220
+ *
221
+ * Metadata patch semantics (mirrors React setState mental model):
222
+ * - `metadata: undefined` (omitted) → preserve existing metadata as-is.
223
+ * - `metadata: null` (explicit) → CLEAR all metadata.
224
+ * - `metadata: {key: value}` → shallow-merge `key=value` into
225
+ * existing metadata.
226
+ * - `metadata: {key: null}` → v0.7.42 — DELETE that key from
227
+ * existing metadata. Other existing
228
+ * keys not mentioned in the patch
229
+ * are preserved. If all keys end up
230
+ * removed, the metadata field is
231
+ * set back to `undefined` so the
232
+ * JSON envelope stays compact.
233
+ * - Mixed (`{keyA: null, keyB: v}`) → deletes keyA, sets keyB. Useful
234
+ * for atomic "rename a flag" patches.
113
235
  *
114
236
  * `owner` and `sourceObligationIndex` are intentionally NOT patchable
115
237
  * post-creation — they identify provenance (which dispatch_child_task
@@ -118,11 +240,20 @@ interface TodoAddSeed {
118
240
  * seed and treat them as immutable thereafter.
119
241
  */
120
242
  interface TodoPatch {
121
- readonly content?: string;
243
+ /** v0.7.42 — `content` renamed; patch the row label. */
244
+ readonly subject?: string;
245
+ /** v0.7.42 — patch the optional fuller description. Empty string clears. */
246
+ readonly description?: string;
122
247
  readonly activeForm?: string;
123
248
  readonly status?: TodoStatus;
124
249
  readonly note?: string;
125
250
  readonly evaluator?: TodoEvaluatorHint;
251
+ /**
252
+ * Opaque metadata patch. See type-level JSDoc for the four semantics
253
+ * (preserve / clear-all / merge / per-key-delete). Individual values
254
+ * inside the object MAY be `null` (v0.7.42 — interpreted as "delete
255
+ * this key from existing metadata").
256
+ */
126
257
  readonly metadata?: Record<string, unknown> | null;
127
258
  }
128
259
  interface TodoStore {
@@ -192,84 +323,6 @@ interface TodoStore {
192
323
  reset(): void;
193
324
  }
194
325
 
195
- /**
196
- * Telemetry payload for the `events.onEvaluatorFallbackSynthesized`
197
- * event. Fires AFTER `recorder.verdict` is written but BEFORE
198
- * `formatDeterministicEvaluatorResult` builds the final `KodaXResult`,
199
- * so consumers see the synth event in causal order before the result.
200
- */
201
- interface EvaluatorFallbackSynthesizedInfo {
202
- /**
203
- * Number of retries that were attempted before falling back. `0` means
204
- * the very first detection of `verdict missing` led to fallback with
205
- * no retry (only possible if `cap === 0`, which we don't allow — but
206
- * keeping the field non-optional to keep the telemetry shape stable).
207
- */
208
- readonly retriesAttempted: number;
209
- /** The cap value resolved for this run's model alias. */
210
- readonly cap: number;
211
- /**
212
- * The model alias the run used, if known. `undefined` when the run
213
- * dispatcher didn't surface the alias to the outer loop.
214
- */
215
- readonly modelAlias: string | undefined;
216
- /**
217
- * The last assistant text the Evaluator produced (the text-only
218
- * response that triggered B2). Stored verbatim so post-hoc audit can
219
- * see what the model said when it failed to terminate.
220
- */
221
- readonly userFacingText: string;
222
- /** Stable reason string written into the synthesized verdict. */
223
- readonly reason: string;
224
- }
225
-
226
- /**
227
- * @kodax-ai/agent Compaction Types
228
- */
229
-
230
- interface CompactionDetails {
231
- readFiles: string[];
232
- modifiedFiles: string[];
233
- }
234
- interface CompactionAnchor {
235
- summary: string;
236
- tokensBefore: number;
237
- tokensAfter: number;
238
- entriesRemoved: number;
239
- reason: string;
240
- artifactLedgerId?: string;
241
- details?: CompactionDetails;
242
- memorySeed?: KodaXCompactMemorySeed;
243
- }
244
- interface CompactionUpdate {
245
- anchor?: CompactionAnchor;
246
- artifactLedger?: KodaXSessionArtifactLedgerEntry[];
247
- memorySeed?: KodaXCompactMemorySeed;
248
- /**
249
- * FEATURE_072: ledger-summary + file-content messages produced by
250
- * `buildPostCompactAttachments` + `buildFileContentMessages`. Agent.ts
251
- * passes these separately from the kept-tail messages so REPL-side
252
- * `applySessionCompaction` can store them natively on the CompactionEntry
253
- * rather than inlining them as loose `[Post-compact: ...]` system messages
254
- * in lineage. Agent.ts keeps inlining them into its local flat `messages`
255
- * via `injectPostCompactAttachments` (P4 belt-and-suspenders); the lineage
256
- * is the persistence source of truth.
257
- */
258
- postCompactAttachments?: readonly KodaXMessage[];
259
- }
260
- interface CompactionResult {
261
- compacted: boolean;
262
- messages: KodaXMessage[];
263
- summary?: string;
264
- tokensBefore: number;
265
- tokensAfter: number;
266
- entriesRemoved: number;
267
- details?: CompactionDetails;
268
- artifactLedger?: KodaXSessionArtifactLedgerEntry[];
269
- anchor?: CompactionAnchor;
270
- memorySeed?: KodaXCompactMemorySeed;
271
- }
272
-
273
326
  /**
274
327
  * FEATURE_093 (v0.7.24): minimal contract interface for the coding extension
275
328
  * runtime. Extracted so `@kodax-ai/coding/src/types.ts` can reference the
@@ -430,46 +483,6 @@ interface ProviderResiliencePolicy extends ProviderResilienceConfig {
430
483
  provider: string;
431
484
  }
432
485
 
433
- /**
434
- * MCP server configuration shapes.
435
- *
436
- * FEATURE_082 (v0.7.24): moved from `@kodax-ai/coding/src/types.ts`. Kept as the
437
- * `Mcp*` names here; the `KodaXMcp*` aliases continue to re-export from
438
- * `@kodax-ai/coding` for backward compatibility.
439
- */
440
- type McpTransportKind = 'stdio' | 'sse' | 'streamable-http';
441
- type McpConnectMode = 'lazy' | 'prewarm' | 'disabled';
442
- interface McpServerConfig {
443
- /** Transport type. Defaults to 'stdio' when omitted. */
444
- type?: McpTransportKind;
445
- /** stdio: executable command. */
446
- command?: string;
447
- /** stdio: command arguments. */
448
- args?: string[];
449
- /** stdio: working directory for the spawned process. */
450
- cwd?: string;
451
- /** stdio: extra environment variables for the spawned process. */
452
- env?: Record<string, string>;
453
- /** sse / streamable-http: server endpoint URL. */
454
- url?: string;
455
- /** sse / streamable-http: extra HTTP headers (e.g. Authorization). */
456
- headers?: Record<string, string>;
457
- connect?: McpConnectMode;
458
- startupTimeoutMs?: number;
459
- requestTimeoutMs?: number;
460
- /** OAuth 2.0 configuration for authenticated MCP servers. */
461
- auth?: {
462
- readonly type: 'oauth2';
463
- readonly clientId: string;
464
- readonly authorizationUrl: string;
465
- readonly tokenUrl: string;
466
- readonly scopes?: readonly string[];
467
- readonly redirectPort?: number;
468
- };
469
- }
470
- /** Flat map of MCP server configs, keyed under `mcpServers` in config.json. */
471
- type McpServersConfig = Record<string, McpServerConfig>;
472
-
473
486
  interface KodaXEvents {
474
487
  onTextDelta?: (text: string) => void;
475
488
  onThinkingDelta?: (text: string) => void;
@@ -628,7 +641,6 @@ interface KodaXEvents {
628
641
  * — consumers see the synth signal in causal order before the result
629
642
  * surfaces.
630
643
  */
631
- onEvaluatorFallbackSynthesized?: (info: EvaluatorFallbackSynthesizedInfo) => void;
632
644
  /** Returns a formatted cost report for the current session. Set by agent at session start. */
633
645
  getCostReport?: {
634
646
  current: (() => string) | null;
@@ -747,7 +759,7 @@ interface KodaXRepoIntelligenceTrace {
747
759
  * (interactive REPL), and `acp_server`.
748
760
  *
749
761
  * Note: FEATURE_083 (v0.7.24) initially marked this as superseded by
750
- * `EvidenceSpan` in `@kodax-ai/tracing`. **FEATURE_086 (v0.7.27) re-evaluated
762
+ * `EvidenceSpan` in `@kodax-ai/agent`. **FEATURE_086 (v0.7.27) re-evaluated
751
763
  * and retained it**: `EvidenceSpanData` is a generic
752
764
  * `{ source, queryPreview?, resultCount?, cacheHit?, error? }` abstraction
753
765
  * that does not carry the repo-intelligence-specific `stage` enum,
@@ -781,17 +793,34 @@ type TodoStatus = 'pending' | 'in_progress' | 'completed' | 'failed' | 'skipped'
781
793
  */
782
794
  type TodoEvaluatorHint = 'build' | 'test' | 'lint';
783
795
  /**
784
- * One row in the planner-produced todo list. Content is sourced from
785
- * Scout's existing `executionObligations: string[]` payload (no schema
786
- * change at the protocol layer). Status is advanced via the
787
- * `todo_update` tool by Scout (H0 path) / Generator / Planner.
796
+ * One row in the planner-produced todo list. Subject is the short
797
+ * imperative title (shown in the UI row + throttle reminder); the
798
+ * optional description carries fuller context for downstream consumers
799
+ * that need the full work instruction. Sourced from Scout's existing
800
+ * `executionObligations: string[]` payload (each string becomes the
801
+ * `subject` of one seed item, no `description`). Status is advanced
802
+ * via the `todo_update` tool by Scout (H0 path) / Worker / Generator /
803
+ * Planner.
804
+ *
805
+ * v0.7.42 — `content` field renamed to `subject` to match claudecode V2
806
+ * `TaskSchema` (TaskCreateTool's required `subject` + `description`
807
+ * pair). KodaX makes `description` optional because trivial single-line
808
+ * steps don't need it; weaker models reach the API more easily without
809
+ * the forced second-string burden.
788
810
  *
789
811
  * `owner` partitions the list when child agents run in parallel under
790
812
  * `dispatch_child_task`; "main" is the parent thread.
791
813
  */
792
814
  interface TodoItem {
793
815
  readonly id: string;
794
- readonly content: string;
816
+ /** Brief imperative title — the row label users see in the plan list. */
817
+ readonly subject: string;
818
+ /**
819
+ * Optional fuller description / context. Read by the executing role
820
+ * when picking up an item (claudecode V2 `TaskGet`-style detail view).
821
+ * Not rendered in the compact plan-list row.
822
+ */
823
+ readonly description?: string;
795
824
  readonly status: TodoStatus;
796
825
  readonly owner?: string;
797
826
  /** Index into the originating `executionObligations: string[]` array (0-based). */
@@ -943,6 +972,17 @@ interface KodaXChildContextBundle {
943
972
  * lands separately.
944
973
  */
945
974
  modelHint?: KodaXChildModelHint;
975
+ /**
976
+ * FEATURE_191 — optional registered specialist agent name. When set,
977
+ * the child is dispatched with that agent's `instructions` /
978
+ * `tools` / `reasoning` / `guardrails` instead of the stock Worker
979
+ * bundle. Resolved via `resolveConstructedAgent(name)` at dispatch
980
+ * time; unknown names are rejected by `toolDispatchChildTask` with
981
+ * a tool-result error (not throw) before the bundle reaches
982
+ * `executeReadChild` / `executeWriteChild`. Optional — omitting
983
+ * preserves byte-identical v0.7.42 baseline dispatch behavior.
984
+ */
985
+ specialistName?: string;
946
986
  }
947
987
  /**
948
988
  * FEATURE_120 v0.7.39 Phase 4 — model tier hint. Tier semantics:
@@ -967,6 +1007,15 @@ interface KodaXChildAgentResult {
967
1007
  sessionId?: string;
968
1008
  /** Actual iterations consumed by this child agent. */
969
1009
  actualIterations?: number;
1010
+ /**
1011
+ * True when the child's `runKodaX` exited via CAP-083 AbortError silent
1012
+ * terminal (`KodaXResult.interrupted === true`). Surfaces the
1013
+ * "success but empty lastText" path that produces empty
1014
+ * `<task-completed task_id="X"></task-completed>` banners.
1015
+ * Diagnostic field — populated by child-executor on the success branch
1016
+ * and consumed by dispatch-child-tasks' empty-summary fallback.
1017
+ */
1018
+ interrupted?: boolean;
970
1019
  }
971
1020
  interface KodaXParentReductionContract {
972
1021
  owner: 'parent';
@@ -981,8 +1030,6 @@ interface KodaXChildExecutionResult {
981
1030
  readonly mergedArtifacts: readonly string[];
982
1031
  readonly totalTokensUsed: number;
983
1032
  readonly cancelledChildren: readonly string[];
984
- /** Worktree paths for write children, keyed by childId. Available for evaluator review. */
985
- readonly worktreePaths?: ReadonlyMap<string, string>;
986
1033
  }
987
1034
  interface KodaXChildFinding {
988
1035
  readonly childId: string;
@@ -1042,7 +1089,7 @@ interface KodaXManagedTaskHarnessTransition {
1042
1089
  approved: boolean;
1043
1090
  denialReason?: string;
1044
1091
  }
1045
- type KodaXManagedTaskPhase = 'starting' | 'routing' | 'preflight' | 'round' | 'worker' | 'upgrade' | 'completed';
1092
+ type KodaXManagedTaskPhase = 'starting' | 'routing' | 'preflight' | 'round' | 'worker' | 'upgrade' | 'verifying' | 'completed';
1046
1093
  type KodaXManagedLiveEventPresentation = 'status' | 'assistant' | 'thinking';
1047
1094
  interface KodaXManagedLiveEvent {
1048
1095
  key: string;
@@ -1235,8 +1282,6 @@ interface KodaXContextOptions {
1235
1282
  };
1236
1283
  /** Mutable mutation tracker shared between worker events and the protocol tool handler. */
1237
1284
  mutationTracker?: ManagedMutationTracker;
1238
- /** FEATURE_067 v2: Callback for dispatch_child_tasks to register write worktree paths. */
1239
- registerChildWriteWorktrees?: (worktreePaths: ReadonlyMap<string, string>) => void;
1240
1285
  /** FEATURE_067 v3: Tool names to exclude from API-level tool list (child agents). */
1241
1286
  excludeTools?: readonly string[];
1242
1287
  /**
@@ -1281,6 +1326,37 @@ interface KodaXOptions {
1281
1326
  guardrails?: readonly Guardrail[];
1282
1327
  /** AbortSignal for cancelling the API request */
1283
1328
  abortSignal?: AbortSignal;
1329
+ /**
1330
+ * v0.7.42 — `RunningSession` plumbing (closes gap 6 reported by KodaX
1331
+ * Space). When provided, the substrate `_attach`es low-level mutators
1332
+ * onto this control object so the embedder can flip provider / model
1333
+ * / reasoning between turns without restarting the run. The mutations
1334
+ * land on the live `RuntimeSessionState` and are picked up by the
1335
+ * next-turn CAP-055 provider re-resolution. `startKodaX` (the
1336
+ * non-blocking entry) is the canonical producer of this field; direct
1337
+ * SDK callers can also instantiate one via {@link createSessionControl}.
1338
+ */
1339
+ sessionControl?: KodaXSessionControl;
1340
+ }
1341
+ /**
1342
+ * Low-level mutators handed to a `KodaXSessionControl` by the substrate.
1343
+ * Each setter writes directly into the live `RuntimeSessionState`. Called
1344
+ * exactly once per session (just after `buildRuntimeSessionState`).
1345
+ */
1346
+ interface KodaXSessionMutators {
1347
+ setProvider(name: string): void;
1348
+ setModel(model: string | undefined): void;
1349
+ setReasoning(mode: KodaXReasoningMode | undefined): void;
1350
+ }
1351
+ /**
1352
+ * Embedder-facing control surface. Created by the embedder (or by
1353
+ * `startKodaX`), passed in via `KodaXOptions.sessionControl`. The
1354
+ * substrate calls `_attach` once, after which the control's setter
1355
+ * methods apply live to the in-flight run.
1356
+ */
1357
+ interface KodaXSessionControl {
1358
+ /** @internal — wired by `run-substrate`. Do not call from user code. */
1359
+ _attach(mutators: KodaXSessionMutators): void;
1284
1360
  }
1285
1361
  type KodaXTaskSurface = 'cli' | 'repl' | 'plan';
1286
1362
  type KodaXTaskStatus = 'planned' | 'running' | 'blocked' | 'failed' | 'completed';
@@ -1365,7 +1441,6 @@ interface KodaXOrchestrationVerdict {
1365
1441
  signalReason?: string;
1366
1442
  signalDebugReason?: string;
1367
1443
  disposition?: 'complete' | 'blocked' | 'needs_continuation';
1368
- continuationSuggested?: boolean;
1369
1444
  }
1370
1445
  interface KodaXManagedTaskRuntimeState {
1371
1446
  amaProfile?: KodaXAmaProfile;
@@ -1387,24 +1462,6 @@ interface KodaXManagedTaskRuntimeState {
1387
1462
  currentHarness?: KodaXHarnessProfile;
1388
1463
  upgradeCeiling?: KodaXHarnessProfile;
1389
1464
  harnessTransitions?: KodaXManagedTaskHarnessTransition[];
1390
- scoutDecision?: {
1391
- summary: string;
1392
- recommendedHarness: KodaXHarnessProfile;
1393
- readyForUpgrade: boolean;
1394
- scope?: string[];
1395
- requiredEvidence?: string[];
1396
- reviewFilesOrAreas?: string[];
1397
- evidenceAcquisitionMode?: 'overview' | 'diff-bundle' | 'diff-slice' | 'file-read';
1398
- harnessRationale?: string;
1399
- blockingEvidence?: string[];
1400
- directCompletionReady?: 'yes' | 'no';
1401
- skillSummary?: string;
1402
- executionObligations?: string[];
1403
- verificationObligations?: string[];
1404
- ambiguities?: string[];
1405
- projectionConfidence?: KodaXSkillProjectionConfidence;
1406
- };
1407
- skillMap?: KodaXSkillMap;
1408
1465
  completionContractStatus?: Record<string, 'ready' | 'incomplete' | 'blocked' | 'missing'>;
1409
1466
  rawRoutingDecision?: KodaXTaskRoutingDecision;
1410
1467
  finalRoutingDecision?: KodaXTaskRoutingDecision;
@@ -1432,8 +1489,6 @@ interface KodaXManagedTaskRuntimeState {
1432
1489
  childWriteReviewPrompt?: string;
1433
1490
  /** FEATURE_067: Number of write child diffs pending evaluator review. */
1434
1491
  childWriteDiffCount?: number;
1435
- /** FEATURE_067 v2: Worktree paths from dispatch_child_tasks write fan-out, keyed by childId. */
1436
- childWriteWorktreePaths?: ReadonlyMap<string, string>;
1437
1492
  }
1438
1493
  interface KodaXManagedTask {
1439
1494
  contract: KodaXTaskContract;
@@ -1444,7 +1499,11 @@ interface KodaXManagedTask {
1444
1499
  runtime?: KodaXManagedTaskRuntimeState;
1445
1500
  }
1446
1501
  interface KodaXManagedVerdictPayload {
1447
- source: 'evaluator' | 'worker';
1502
+ /** FEATURE_184 (v0.7.45): `'sidecar'` is the new architectural source —
1503
+ * Sidecar Verifier replaces the in-chain Evaluator role. `'evaluator'`
1504
+ * / `'worker'` are retained for backward-compat reads of session jsonl
1505
+ * written before v0.7.45. New writes use `'sidecar'`. */
1506
+ source: 'evaluator' | 'worker' | 'sidecar';
1448
1507
  status: 'accept' | 'revise' | 'blocked';
1449
1508
  reason?: string;
1450
1509
  debugReason?: string;
@@ -1457,7 +1516,6 @@ interface KodaXManagedVerdictPayload {
1457
1516
  nextHarness?: KodaXTaskRoutingDecision['harnessProfile'];
1458
1517
  protocolParseFailed?: boolean;
1459
1518
  verificationDegraded?: boolean;
1460
- continuationSuggested?: boolean;
1461
1519
  preferredFallbackWorkerId?: string;
1462
1520
  /**
1463
1521
  * v0.7.26 Risk-3 fix — Evaluator explicit budget-extension request.
@@ -1470,72 +1528,19 @@ interface KodaXManagedVerdictPayload {
1470
1528
  budgetRequest?: string;
1471
1529
  }
1472
1530
  /**
1473
- * Signals surfaced by the harness (not the LLM) when Scout's completion looks
1474
- * suspicious. See runManagedScoutStage for the detection logic.
1531
+ * Signals surfaced by the harness (not the LLM) when V1 Scout's completion
1532
+ * looked suspicious.
1533
+ *
1534
+ * FEATURE_193 (v0.7.43) deep V1 cleanup: V1 Scout role is retired and the
1535
+ * Runner-driven path no longer fires `onScoutSuspiciousCompletion`. The
1536
+ * type is kept on the SDK surface so the `KodaXEvents.onScoutSuspiciousCompletion`
1537
+ * callback signature continues to compile for pre-1.0 SDK consumers (e.g.
1538
+ * the REPL renderers that still register a handler). New code MUST NOT
1539
+ * emit this signal.
1475
1540
  */
1476
1541
  type KodaXScoutSuspiciousSignal = 'mutation-expected-but-none' | 'budget-exhausted' | 'no-formal-completion';
1477
- interface KodaXManagedScoutPayload {
1478
- summary?: string;
1479
- scope: string[];
1480
- requiredEvidence: string[];
1481
- reviewFilesOrAreas?: string[];
1482
- evidenceAcquisitionMode?: 'overview' | 'diff-bundle' | 'diff-slice' | 'file-read';
1483
- confirmedHarness?: KodaXTaskRoutingDecision['harnessProfile'];
1484
- harnessRationale?: string;
1485
- blockingEvidence?: string[];
1486
- directCompletionReady?: 'yes' | 'no';
1487
- /**
1488
- * FEATURE_078 (v0.7.29): Scout's optional non-binding suggestion for
1489
- * the reasoning depth downstream workers (Planner / Generator /
1490
- * Evaluator) should use. Resolved by `resolveRoleReasoning(role,
1491
- * userCeiling, profile, scoutHint)` as the L3 input — clamped by L1
1492
- * (user ceiling) and L2 (agent profile max). Scout SHOULD set this
1493
- * sparingly: only when the scoped task signals atypically low
1494
- * complexity (`'quick'`) or atypically high stakes (`'deep'`); leave
1495
- * undefined for the default path so workers stick to their own
1496
- * `Agent.reasoning.default`.
1497
- */
1498
- downstreamReasoningHint?: KodaXReasoningMode;
1499
- userFacingText?: string;
1500
- skillMap?: {
1501
- skillSummary?: string;
1502
- executionObligations: string[];
1503
- verificationObligations: string[];
1504
- ambiguities: string[];
1505
- projectionConfidence?: KodaXSkillProjectionConfidence;
1506
- };
1507
- /**
1508
- * Harness-observed confidence in Scout's completion. 'confident' is the default
1509
- * (omitted). 'uncertain' means the harness detected signals that Scout may not
1510
- * have actually finished (e.g. mutation task with zero mutations, budget
1511
- * exhausted without explicit completion, tool calls followed by text-only exit
1512
- * without a completion statement).
1513
- *
1514
- * This field is set by the harness, not by the LLM — emit_managed_protocol
1515
- * payloads from models are ignored here and overwritten.
1516
- */
1517
- completionConfidence?: 'confident' | 'uncertain';
1518
- /** Which signals contributed to an 'uncertain' confidence verdict. */
1519
- suspiciousSignals?: KodaXScoutSuspiciousSignal[];
1520
- }
1521
- interface KodaXManagedContractPayload {
1522
- summary?: string;
1523
- successCriteria: string[];
1524
- requiredEvidence: string[];
1525
- constraints: string[];
1526
- }
1527
- interface KodaXManagedHandoffPayload {
1528
- status: 'ready' | 'incomplete' | 'blocked';
1529
- summary?: string;
1530
- evidence: string[];
1531
- followup: string[];
1532
- userFacingText: string;
1533
- }
1534
1542
  interface KodaXManagedProtocolPayload {
1535
1543
  verdict?: KodaXManagedVerdictPayload;
1536
- scout?: KodaXManagedScoutPayload;
1537
- contract?: KodaXManagedContractPayload;
1538
- handoff?: KodaXManagedHandoffPayload;
1539
1544
  }
1540
1545
  interface KodaXResult {
1541
1546
  success: boolean;
@@ -1661,8 +1666,6 @@ interface KodaXToolExecutionContext {
1661
1666
  /** FEATURE_067 v2: Callback for long-running tools to report execution progress to the REPL transcript.
1662
1667
  * The string will be displayed as the tool's "Running:" line in the transcript. */
1663
1668
  reportToolProgress?: (message: string) => void;
1664
- /** FEATURE_067 v2: Callback to store write child worktree paths for Evaluator diff injection. */
1665
- registerChildWriteWorktrees?: (worktreePaths: ReadonlyMap<string, string>) => void;
1666
1669
  /** Mutation tracker for scope-aware protocol responses. Populated by createWorkerEvents. */
1667
1670
  mutationTracker?: ManagedMutationTracker;
1668
1671
  /**
@@ -1714,6 +1717,20 @@ interface KodaXToolExecutionContext {
1714
1717
  * See `packages/coding/src/multi-instance/content-hash-cache.ts`.
1715
1718
  */
1716
1719
  contentHashCache?: ContentHashCache;
1720
+ /**
1721
+ * FEATURE_177 v0.7.42 — per-task read-file-state cache (anti-loop).
1722
+ *
1723
+ * Tracks `(filePath, offset, limit)` tuples the LLM has already read
1724
+ * in this task. On a re-read with unchanged mtime, the Read tool
1725
+ * returns a short stub instead of the full content — breaking
1726
+ * `narrate-then-re-read` loops on models with structural decoder
1727
+ * floors (kimi-code 2026-05). Edit / Write / MultiEdit call `forget`
1728
+ * after a successful mutation; the compaction post-hook calls
1729
+ * `clear`. Disabled by `KODAX_READ_DEDUP_KILLSWITCH=1`.
1730
+ *
1731
+ * See `packages/coding/src/multi-instance/read-file-state-cache.ts`.
1732
+ */
1733
+ readFileStateCache?: ReadFileStateCache;
1717
1734
  /**
1718
1735
  * FEATURE_125 v0.7.41 — Team Mode Layer 3 input.
1719
1736
  *
@@ -1779,6 +1796,27 @@ interface KodaXToolExecutionContext {
1779
1796
  * `childTaskRegistry`).
1780
1797
  */
1781
1798
  childAbortControllers?: TaskAbortRegistry;
1799
+ /**
1800
+ * FEATURE_177 v0.7.45 substrate for the `task_output` tool. Per-child
1801
+ * runtime snapshot a parent agent can query mid-flight to peek at
1802
+ * iteration count + recent tool-call breadcrumbs without waiting for
1803
+ * the child's `<task-completed>` banner.
1804
+ *
1805
+ * Populated by `dispatch_child_task` at launch (`initChildSnapshot`)
1806
+ * and at terminal (`finalizeChildSnapshot` in the child promise's
1807
+ * inner-IIFE `.finally`). The `task_output` tool reads from this map.
1808
+ *
1809
+ * Snapshots survive the child task settling (so post-completion peeks
1810
+ * work) and are bounded by `CHILD_PROGRESS_SNAPSHOT_CAP` (FIFO prune
1811
+ * by `startedAt` when the cap is exceeded). No TTL — snapshots are
1812
+ * cleared with the ctx itself when the parent runner exits.
1813
+ *
1814
+ * Undefined in legacy sync-mode dispatch (same gate as
1815
+ * `childTaskRegistry`). Children's own SA contexts do NOT inherit
1816
+ * this map (verified by `buildToolExecutionContext` not forwarding
1817
+ * it into child `runKodaX` calls).
1818
+ */
1819
+ childProgressSnapshots?: Map<string, ChildProgressSnapshot>;
1782
1820
  }
1783
1821
 
1784
1822
  /**
@@ -2428,5 +2466,5 @@ interface CreateBashPrefixExtractorOptions {
2428
2466
  */
2429
2467
  declare function createBashPrefixExtractor(opts: CreateBashPrefixExtractorOptions): BashPrefixExtractor;
2430
2468
 
2431
- export { BASH_POLICY_SPEC as B, CONSECUTIVE_THRESHOLD as C, ERROR_THRESHOLD as E, extractCommandPrefix as a$, WINDOW_MS as aU, collectAllSignals as aV, computeRulesFingerprint as aW, createAutoModeToolGuardrail as aX, createBashPrefixExtractor as aY, createCircuitBreaker as aZ, createDenialTracker as a_, formatAgentsForPrompt as b0, getKodaxGlobalDir as b1, loadAgentsFiles as b2, loadAutoRules as b3, parseAutoRules as b4, readTrustState as b5, recordAllow as b6, recordBlock as b7, recordError as b8, shouldFallback$1 as b9, shouldFallback as ba, trustProjectRules as bb, CUMULATIVE_THRESHOLD as n };
2432
- export type { KodaXOrchestrationVerdict as $, AgentsFile as A, DenialTracker as D, FailureStage as F, KodaXContextOptions as G, KodaXContextTokenSnapshot as H, KodaXEvents as I, KodaXFanoutBranchLifecycle as J, KodaXAgentMode as K, KodaXFanoutBranchRecord as L, KodaXFanoutBranchTransition as M, KodaXFanoutSchedulerInput as N, KodaXFanoutSchedulerPlan as O, KodaXInputArtifact as P, KodaXManagedBudgetSnapshot as Q, KodaXManagedProtocolPayload as R, KodaXManagedTask as S, KodaXManagedTaskRuntimeState as T, KodaXManagedTaskStatusEvent as U, KodaXMcpConnectMode as V, KodaXMcpServerConfig as W, KodaXMcpServersConfig as X, KodaXMcpTransport as Y, KodaXMemoryStrategy as Z, KodaXOptions as _, AskUserMultiOptions as a, KodaXParentReductionContract as a0, KodaXProviderPolicyHints as a1, KodaXRepoIntelligenceCapability as a2, KodaXRepoIntelligenceMode as a3, KodaXRepoIntelligenceResolvedMode as a4, KodaXRepoIntelligenceTrace as a5, KodaXRepoIntelligenceTraceEvent as a6, KodaXRepoRoutingSignals as a7, KodaXResult as a8, KodaXRoleRoundSummary as a9, McpTransportKind as aA, ProviderExecutionState as aB, ProviderRecoveryEvent as aC, ProviderResilienceConfig as aD, ProviderResiliencePolicy as aE, RecoveryAction as aF, RecoveryDecision as aG, RecoveryLadderStep as aH, RecoveryResult as aI, ResilienceClassification as aJ, ResilienceErrorClass as aK, RulesLoadError as aL, RulesLoadResult as aM, SignalCollector as aN, SkippedRulesSource as aO, TodoItem as aP, TodoList as aQ, TodoStatus as aR, ToolCallSignal as aS, TrustState as aT, KodaXRuntimeVerificationContract as aa, KodaXSessionOptions as ab, KodaXSkillInvocationContext as ac, KodaXSkillMap as ad, KodaXSkillProjectionConfidence as ae, KodaXTaskCapabilityHint as af, KodaXTaskContract as ag, KodaXTaskEvidenceArtifact as ah, KodaXTaskEvidenceBundle as ai, KodaXTaskEvidenceEntry as aj, KodaXTaskRole as ak, KodaXTaskRoleAssignment as al, KodaXTaskStatus as am, KodaXTaskSurface as an, KodaXTaskToolPolicy as ao, KodaXTaskVerificationContract as ap, KodaXTaskVerificationCriterion as aq, KodaXTaskWorkItem as ar, KodaXToolExecutionContext as as, KodaXVerificationScorecard as at, KodaXVerificationScorecardCriterion as au, LoadAgentsOptions as av, LoadedRulesSource as aw, McpConnectMode as ax, McpServerConfig as ay, McpServersConfig as az, AskUserQuestionItem as b, AskUserQuestionOptions as c, AutoModeAskUser as d, AutoModeAskUserVerdict as e, AutoModeEngine as f, AutoModeGuardrailConfig as g, AutoModeSharedState as h, AutoModeStats as i, AutoModeToolGuardrail as j, AutoRules as k, BashPrefixExtractor as l, BashPrefixResult as m, CircuitBreaker as o, CompactionAnchor as p, CompactionDetails as q, CompactionResult as r, CompactionUpdate as s, CreateBashPrefixExtractorOptions as t, ExtensionRuntimeContract as u, ExtractCommandPrefixOptions as v, KodaXBudgetDisclosureZone as w, KodaXBudgetExtensionRequest as x, KodaXChildAgentResult as y, KodaXChildContextBundle as z };
2469
+ export { BASH_POLICY_SPEC as B, CONSECUTIVE_THRESHOLD as C, ERROR_THRESHOLD as E, readTrustState as a$, WINDOW_MS as aO, collectAllSignals as aP, computeRulesFingerprint as aQ, createAutoModeToolGuardrail as aR, createBashPrefixExtractor as aS, createCircuitBreaker as aT, createDenialTracker as aU, extractCommandPrefix as aV, formatAgentsForPrompt as aW, getKodaxGlobalDir as aX, loadAgentsFiles as aY, loadAutoRules as aZ, parseAutoRules as a_, recordAllow as b0, recordBlock as b1, recordError as b2, shouldFallback$1 as b3, shouldFallback as b4, trustProjectRules as b5, CUMULATIVE_THRESHOLD as n };
2470
+ export type { KodaXRepoIntelligenceMode as $, AgentsFile as A, DenialTracker as D, FailureStage as F, KodaXFanoutBranchRecord as G, KodaXFanoutBranchTransition as H, KodaXFanoutSchedulerInput as I, KodaXFanoutSchedulerPlan as J, KodaXAgentMode as K, KodaXInputArtifact as L, KodaXManagedBudgetSnapshot as M, KodaXManagedProtocolPayload as N, KodaXManagedTask as O, KodaXManagedTaskRuntimeState as P, KodaXManagedTaskStatusEvent as Q, KodaXMcpConnectMode as R, KodaXMcpServerConfig as S, KodaXMcpServersConfig as T, KodaXMcpTransport as U, KodaXMemoryStrategy as V, KodaXOptions as W, KodaXOrchestrationVerdict as X, KodaXParentReductionContract as Y, KodaXProviderPolicyHints as Z, KodaXRepoIntelligenceCapability as _, AskUserMultiOptions as a, KodaXRepoIntelligenceResolvedMode as a0, KodaXRepoIntelligenceTrace as a1, KodaXRepoIntelligenceTraceEvent as a2, KodaXRepoRoutingSignals as a3, KodaXResult as a4, KodaXRoleRoundSummary as a5, KodaXRuntimeVerificationContract as a6, KodaXSessionControl as a7, KodaXSessionMutators as a8, KodaXSessionOptions as a9, RecoveryDecision as aA, RecoveryLadderStep as aB, RecoveryResult as aC, ResilienceClassification as aD, ResilienceErrorClass as aE, RulesLoadError as aF, RulesLoadResult as aG, SignalCollector as aH, SkippedRulesSource as aI, TodoItem as aJ, TodoList as aK, TodoStatus as aL, ToolCallSignal as aM, TrustState as aN, KodaXSkillInvocationContext as aa, KodaXSkillMap as ab, KodaXSkillProjectionConfidence as ac, KodaXTaskCapabilityHint as ad, KodaXTaskContract as ae, KodaXTaskEvidenceArtifact as af, KodaXTaskEvidenceBundle as ag, KodaXTaskEvidenceEntry as ah, KodaXTaskRole as ai, KodaXTaskRoleAssignment as aj, KodaXTaskStatus as ak, KodaXTaskSurface as al, KodaXTaskToolPolicy as am, KodaXTaskVerificationContract as an, KodaXTaskVerificationCriterion as ao, KodaXTaskWorkItem as ap, KodaXToolExecutionContext as aq, KodaXVerificationScorecard as ar, KodaXVerificationScorecardCriterion as as, LoadAgentsOptions as at, LoadedRulesSource as au, ProviderExecutionState as av, ProviderRecoveryEvent as aw, ProviderResilienceConfig as ax, ProviderResiliencePolicy as ay, RecoveryAction as az, AskUserQuestionItem as b, AskUserQuestionOptions as c, AutoModeAskUser as d, AutoModeAskUserVerdict as e, AutoModeEngine as f, AutoModeGuardrailConfig as g, AutoModeSharedState as h, AutoModeStats as i, AutoModeToolGuardrail as j, AutoRules as k, BashPrefixExtractor as l, BashPrefixResult as m, CircuitBreaker as o, CreateBashPrefixExtractorOptions as p, ExtensionRuntimeContract as q, ExtractCommandPrefixOptions as r, KodaXBudgetDisclosureZone as s, KodaXBudgetExtensionRequest as t, KodaXChildAgentResult as u, KodaXChildContextBundle as v, KodaXContextOptions as w, KodaXContextTokenSnapshot as x, KodaXEvents as y, KodaXFanoutBranchLifecycle as z };