open-multi-agent-kit 0.97.0 → 0.98.0

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 (261) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/README.md +41 -9
  3. package/dist/cli/args.d.ts +2 -3
  4. package/dist/cli/args.d.ts.map +1 -1
  5. package/dist/cli/args.js +13 -189
  6. package/dist/cli/args.js.map +1 -1
  7. package/dist/cli/help.d.ts +3 -0
  8. package/dist/cli/help.d.ts.map +1 -0
  9. package/dist/cli/help.js +194 -0
  10. package/dist/cli/help.js.map +1 -0
  11. package/dist/cli/initial-message.d.ts.map +1 -1
  12. package/dist/cli/initial-message.js +2 -1
  13. package/dist/cli/initial-message.js.map +1 -1
  14. package/dist/cli/resource-paths.d.ts +4 -0
  15. package/dist/cli/resource-paths.d.ts.map +1 -0
  16. package/dist/cli/resource-paths.js +59 -0
  17. package/dist/cli/resource-paths.js.map +1 -0
  18. package/dist/commands/adaptorch-doctor-cli.d.ts +13 -0
  19. package/dist/commands/adaptorch-doctor-cli.d.ts.map +1 -0
  20. package/dist/commands/adaptorch-doctor-cli.js +115 -0
  21. package/dist/commands/adaptorch-doctor-cli.js.map +1 -0
  22. package/dist/commands/resource-doctor-cli.d.ts +4 -0
  23. package/dist/commands/resource-doctor-cli.d.ts.map +1 -1
  24. package/dist/commands/resource-doctor-cli.js +35 -5
  25. package/dist/commands/resource-doctor-cli.js.map +1 -1
  26. package/dist/core/adaptorch-bridge.d.ts +11 -13
  27. package/dist/core/adaptorch-bridge.d.ts.map +1 -1
  28. package/dist/core/adaptorch-bridge.js +11 -13
  29. package/dist/core/adaptorch-bridge.js.map +1 -1
  30. package/dist/core/agent-session-snapshot.d.ts +16 -0
  31. package/dist/core/agent-session-snapshot.d.ts.map +1 -0
  32. package/dist/core/agent-session-snapshot.js +111 -0
  33. package/dist/core/agent-session-snapshot.js.map +1 -0
  34. package/dist/core/agent-session.d.ts +5 -9
  35. package/dist/core/agent-session.d.ts.map +1 -1
  36. package/dist/core/agent-session.js +27 -219
  37. package/dist/core/agent-session.js.map +1 -1
  38. package/dist/core/agent-tool-settings.d.ts +10 -0
  39. package/dist/core/agent-tool-settings.d.ts.map +1 -1
  40. package/dist/core/agent-tool-settings.js +10 -1
  41. package/dist/core/agent-tool-settings.js.map +1 -1
  42. package/dist/core/compaction/compaction.d.ts +7 -0
  43. package/dist/core/compaction/compaction.d.ts.map +1 -1
  44. package/dist/core/compaction/compaction.js +25 -61
  45. package/dist/core/compaction/compaction.js.map +1 -1
  46. package/dist/core/compaction/index.d.ts +1 -0
  47. package/dist/core/compaction/index.d.ts.map +1 -1
  48. package/dist/core/compaction/index.js +1 -0
  49. package/dist/core/compaction/index.js.map +1 -1
  50. package/dist/core/compaction/knowledge-triage-format.d.ts +9 -0
  51. package/dist/core/compaction/knowledge-triage-format.d.ts.map +1 -0
  52. package/dist/core/compaction/knowledge-triage-format.js +71 -0
  53. package/dist/core/compaction/knowledge-triage-format.js.map +1 -0
  54. package/dist/core/compaction/knowledge-triage-types.d.ts +7 -0
  55. package/dist/core/compaction/knowledge-triage-types.d.ts.map +1 -0
  56. package/dist/core/compaction/knowledge-triage-types.js +2 -0
  57. package/dist/core/compaction/knowledge-triage-types.js.map +1 -0
  58. package/dist/core/compaction/knowledge-triage.d.ts +29 -0
  59. package/dist/core/compaction/knowledge-triage.d.ts.map +1 -0
  60. package/dist/core/compaction/knowledge-triage.js +189 -0
  61. package/dist/core/compaction/knowledge-triage.js.map +1 -0
  62. package/dist/core/compaction/transaction.d.ts.map +1 -1
  63. package/dist/core/compaction/transaction.js +1 -1
  64. package/dist/core/compaction/transaction.js.map +1 -1
  65. package/dist/core/compaction/utils.d.ts +4 -0
  66. package/dist/core/compaction/utils.d.ts.map +1 -1
  67. package/dist/core/compaction/utils.js +37 -0
  68. package/dist/core/compaction/utils.js.map +1 -1
  69. package/dist/core/completion-sound-io.d.ts +14 -0
  70. package/dist/core/completion-sound-io.d.ts.map +1 -0
  71. package/dist/core/completion-sound-io.js +64 -0
  72. package/dist/core/completion-sound-io.js.map +1 -0
  73. package/dist/core/completion-sound.d.ts +4 -10
  74. package/dist/core/completion-sound.d.ts.map +1 -1
  75. package/dist/core/completion-sound.js +28 -58
  76. package/dist/core/completion-sound.js.map +1 -1
  77. package/dist/core/context-budget-relevance.d.ts +15 -2
  78. package/dist/core/context-budget-relevance.d.ts.map +1 -1
  79. package/dist/core/context-budget-relevance.js +21 -9
  80. package/dist/core/context-budget-relevance.js.map +1 -1
  81. package/dist/core/context-budget-system-prompt-items.d.ts +1 -1
  82. package/dist/core/context-budget-system-prompt-items.d.ts.map +1 -1
  83. package/dist/core/context-budget-system-prompt-items.js.map +1 -1
  84. package/dist/core/context-budget-system-prompt.d.ts +1 -1
  85. package/dist/core/context-budget-system-prompt.d.ts.map +1 -1
  86. package/dist/core/context-budget-system-prompt.js.map +1 -1
  87. package/dist/core/context-file.d.ts +23 -0
  88. package/dist/core/context-file.d.ts.map +1 -0
  89. package/dist/core/context-file.js +17 -0
  90. package/dist/core/context-file.js.map +1 -0
  91. package/dist/core/keybindings.d.ts +1 -1
  92. package/dist/core/keybindings.d.ts.map +1 -1
  93. package/dist/core/keybindings.js +6 -1
  94. package/dist/core/keybindings.js.map +1 -1
  95. package/dist/core/model-prompt-policy.d.ts +1 -1
  96. package/dist/core/model-prompt-policy.d.ts.map +1 -1
  97. package/dist/core/model-prompt-policy.js.map +1 -1
  98. package/dist/core/prompt-settlement.d.ts +6 -3
  99. package/dist/core/prompt-settlement.d.ts.map +1 -1
  100. package/dist/core/prompt-settlement.js +10 -14
  101. package/dist/core/prompt-settlement.js.map +1 -1
  102. package/dist/core/reasoning-router-promotion.d.ts +41 -1
  103. package/dist/core/reasoning-router-promotion.d.ts.map +1 -1
  104. package/dist/core/reasoning-router-promotion.js +31 -2
  105. package/dist/core/reasoning-router-promotion.js.map +1 -1
  106. package/dist/core/reasoning-router-replay-stability.d.ts +65 -0
  107. package/dist/core/reasoning-router-replay-stability.d.ts.map +1 -0
  108. package/dist/core/reasoning-router-replay-stability.js +67 -0
  109. package/dist/core/reasoning-router-replay-stability.js.map +1 -0
  110. package/dist/core/reasoning-router-v4-weights.d.ts +6 -6
  111. package/dist/core/reasoning-router-v4-weights.d.ts.map +1 -1
  112. package/dist/core/reasoning-router-v4-weights.js +3 -3
  113. package/dist/core/reasoning-router-v4-weights.js.map +1 -1
  114. package/dist/core/reasoning-router-v4.d.ts.map +1 -1
  115. package/dist/core/reasoning-router-v4.js +6 -6
  116. package/dist/core/reasoning-router-v4.js.map +1 -1
  117. package/dist/core/redaction.d.ts.map +1 -1
  118. package/dist/core/redaction.js +1 -1
  119. package/dist/core/redaction.js.map +1 -1
  120. package/dist/core/resource-admission.d.ts +2 -1
  121. package/dist/core/resource-admission.d.ts.map +1 -1
  122. package/dist/core/resource-admission.js +11 -0
  123. package/dist/core/resource-admission.js.map +1 -1
  124. package/dist/core/resource-governor-format.d.ts +1 -1
  125. package/dist/core/resource-governor-format.d.ts.map +1 -1
  126. package/dist/core/resource-governor-format.js.map +1 -1
  127. package/dist/core/resource-governor-settings.d.ts +6 -12
  128. package/dist/core/resource-governor-settings.d.ts.map +1 -1
  129. package/dist/core/resource-governor-settings.js.map +1 -1
  130. package/dist/core/resource-governor-types.d.ts +24 -0
  131. package/dist/core/resource-governor-types.d.ts.map +1 -0
  132. package/dist/core/resource-governor-types.js +15 -0
  133. package/dist/core/resource-governor-types.js.map +1 -0
  134. package/dist/core/resource-loader.d.ts +1 -7
  135. package/dist/core/resource-loader.d.ts.map +1 -1
  136. package/dist/core/resource-loader.js.map +1 -1
  137. package/dist/core/resource-observation-journal.d.ts +2 -1
  138. package/dist/core/resource-observation-journal.d.ts.map +1 -1
  139. package/dist/core/resource-observation-journal.js +4 -3
  140. package/dist/core/resource-observation-journal.js.map +1 -1
  141. package/dist/core/resource-observation-report-reader.d.ts +7 -0
  142. package/dist/core/resource-observation-report-reader.d.ts.map +1 -0
  143. package/dist/core/resource-observation-report-reader.js +157 -0
  144. package/dist/core/resource-observation-report-reader.js.map +1 -0
  145. package/dist/core/resource-observation-report.d.ts +24 -0
  146. package/dist/core/resource-observation-report.d.ts.map +1 -0
  147. package/dist/core/resource-observation-report.js +101 -0
  148. package/dist/core/resource-observation-report.js.map +1 -0
  149. package/dist/core/router-feedback-collector.d.ts +1 -1
  150. package/dist/core/router-feedback-collector.d.ts.map +1 -1
  151. package/dist/core/router-feedback-collector.js.map +1 -1
  152. package/dist/core/session-failure-cause.d.ts +33 -0
  153. package/dist/core/session-failure-cause.d.ts.map +1 -0
  154. package/dist/core/session-failure-cause.js +141 -0
  155. package/dist/core/session-failure-cause.js.map +1 -0
  156. package/dist/core/session-system-prompt.d.ts +1 -1
  157. package/dist/core/session-system-prompt.d.ts.map +1 -1
  158. package/dist/core/session-system-prompt.js.map +1 -1
  159. package/dist/core/settings-manager.d.ts +1 -1
  160. package/dist/core/settings-manager.d.ts.map +1 -1
  161. package/dist/core/settings-manager.js.map +1 -1
  162. package/dist/core/system-prompt.d.ts +1 -1
  163. package/dist/core/system-prompt.d.ts.map +1 -1
  164. package/dist/core/system-prompt.js.map +1 -1
  165. package/dist/core/tools/bash.d.ts.map +1 -1
  166. package/dist/core/tools/bash.js +7 -7
  167. package/dist/core/tools/bash.js.map +1 -1
  168. package/dist/core/workload-classifier.d.ts +2 -10
  169. package/dist/core/workload-classifier.d.ts.map +1 -1
  170. package/dist/core/workload-classifier.js +17 -0
  171. package/dist/core/workload-classifier.js.map +1 -1
  172. package/dist/core/workload-family-matcher.d.ts +1 -1
  173. package/dist/core/workload-family-matcher.d.ts.map +1 -1
  174. package/dist/core/workload-family-matcher.js.map +1 -1
  175. package/dist/core/workload-shard-execution-types.d.ts +40 -0
  176. package/dist/core/workload-shard-execution-types.d.ts.map +1 -0
  177. package/dist/core/workload-shard-execution-types.js +14 -0
  178. package/dist/core/workload-shard-execution-types.js.map +1 -0
  179. package/dist/core/workload-shard-executor.d.ts +3 -27
  180. package/dist/core/workload-shard-executor.d.ts.map +1 -1
  181. package/dist/core/workload-shard-executor.js.map +1 -1
  182. package/dist/core/workload-shard-runner.d.ts +1 -1
  183. package/dist/core/workload-shard-runner.d.ts.map +1 -1
  184. package/dist/core/workload-shard-runner.js.map +1 -1
  185. package/dist/core/workload-types.d.ts +24 -0
  186. package/dist/core/workload-types.d.ts.map +1 -0
  187. package/dist/core/workload-types.js +15 -0
  188. package/dist/core/workload-types.js.map +1 -0
  189. package/dist/main.d.ts +2 -0
  190. package/dist/main.d.ts.map +1 -1
  191. package/dist/main.js +27 -47
  192. package/dist/main.js.map +1 -1
  193. package/dist/modes/interactive/theme/omk-control-panel.json +1 -1
  194. package/dist/utils/clipboard-image.d.ts.map +1 -1
  195. package/dist/utils/clipboard-image.js +42 -33
  196. package/dist/utils/clipboard-image.js.map +1 -1
  197. package/dist/utils/clipboard.d.ts.map +1 -1
  198. package/dist/utils/clipboard.js +14 -2
  199. package/dist/utils/clipboard.js.map +1 -1
  200. package/docs/adaptorch-preview-spec.md +20 -18
  201. package/docs/adaptorch-preview.md +9 -9
  202. package/docs/compaction.md +24 -3
  203. package/docs/correctness-wall.md +10 -10
  204. package/docs/docs.json +12 -0
  205. package/docs/environment-variables.md +9 -2
  206. package/docs/index.md +3 -0
  207. package/docs/runtime-algorithms.md +359 -0
  208. package/docs/sdk.md +2 -2
  209. package/docs/settings.md +11 -10
  210. package/docs/usage.md +18 -2
  211. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  212. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  213. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  214. package/examples/extensions/gondolin/package-lock.json +2 -2
  215. package/examples/extensions/gondolin/package.json +1 -1
  216. package/examples/extensions/sandbox/package-lock.json +2 -2
  217. package/examples/extensions/sandbox/package.json +1 -1
  218. package/examples/extensions/with-deps/package-lock.json +2 -2
  219. package/examples/extensions/with-deps/package.json +1 -1
  220. package/npm-shrinkwrap.json +18 -18
  221. package/package.json +6 -6
  222. package/dist/core/context-budget-governor.d.ts +0 -67
  223. package/dist/core/context-budget-governor.d.ts.map +0 -1
  224. package/dist/core/context-budget-governor.js +0 -224
  225. package/dist/core/context-budget-governor.js.map +0 -1
  226. package/dist/core/lean-ctx.d.ts +0 -99
  227. package/dist/core/lean-ctx.d.ts.map +0 -1
  228. package/dist/core/lean-ctx.js +0 -225
  229. package/dist/core/lean-ctx.js.map +0 -1
  230. package/dist/core/read-anchors.d.ts +0 -110
  231. package/dist/core/read-anchors.d.ts.map +0 -1
  232. package/dist/core/read-anchors.js +0 -193
  233. package/dist/core/read-anchors.js.map +0 -1
  234. package/dist/core/recovery-checkpoint.d.ts +0 -196
  235. package/dist/core/recovery-checkpoint.d.ts.map +0 -1
  236. package/dist/core/recovery-checkpoint.js +0 -382
  237. package/dist/core/recovery-checkpoint.js.map +0 -1
  238. package/dist/core/sandbox-policy-v2.d.ts +0 -49
  239. package/dist/core/sandbox-policy-v2.d.ts.map +0 -1
  240. package/dist/core/sandbox-policy-v2.js +0 -368
  241. package/dist/core/sandbox-policy-v2.js.map +0 -1
  242. package/dist/guardrails/audit-logger.d.ts +0 -4
  243. package/dist/guardrails/audit-logger.d.ts.map +0 -1
  244. package/dist/guardrails/audit-logger.js +0 -28
  245. package/dist/guardrails/audit-logger.js.map +0 -1
  246. package/dist/guardrails/freedomd-adapter.d.ts +0 -16
  247. package/dist/guardrails/freedomd-adapter.d.ts.map +0 -1
  248. package/dist/guardrails/freedomd-adapter.js +0 -87
  249. package/dist/guardrails/freedomd-adapter.js.map +0 -1
  250. package/dist/orchestration/lane-grant-auditor.d.ts +0 -4
  251. package/dist/orchestration/lane-grant-auditor.d.ts.map +0 -1
  252. package/dist/orchestration/lane-grant-auditor.js +0 -87
  253. package/dist/orchestration/lane-grant-auditor.js.map +0 -1
  254. package/dist/types/guardrails.d.ts +0 -61
  255. package/dist/types/guardrails.d.ts.map +0 -1
  256. package/dist/types/guardrails.js +0 -9
  257. package/dist/types/guardrails.js.map +0 -1
  258. package/dist/types/lane-grant.d.ts +0 -58
  259. package/dist/types/lane-grant.d.ts.map +0 -1
  260. package/dist/types/lane-grant.js +0 -9
  261. package/dist/types/lane-grant.js.map +0 -1
@@ -0,0 +1,359 @@
1
+ # Runtime Algorithms and Direction
2
+
3
+ This page separates OMK's released behavior from internal mechanisms, current
4
+ working-tree candidates, and proposals. Source and tests remain authoritative.
5
+
6
+ - **Snapshot date:** 2026-08-27
7
+ - **Released baseline:** OMK `v0.97.0` (`b38a2c8c84`)
8
+ - **Repository baseline:** `4b79c65eaf` plus the local working tree
9
+
10
+ ## Status vocabulary
11
+
12
+ | Status | Meaning |
13
+ | --- | --- |
14
+ | **Released / default** | Present in `v0.97.0` and selected when relevant settings do not override it |
15
+ | **Released / opt-in** | Present in `v0.97.0`, but requires a command, setting, or explicit API call |
16
+ | **Released / internal** | Implemented and tested, but not connected to a live user path |
17
+ | **Working tree** | Present in the current checkout only; not shipped and not a release promise |
18
+ | **Proposed** | Design direction without a complete implementation and verification path |
19
+
20
+ A mechanism's existence does not make it authoritative. OMK promotes a mechanism
21
+ only after its live call path, default, evidence, and rollback are all explicit.
22
+
23
+ ## Runtime control path
24
+
25
+ ```text
26
+ Prompt or durable-goal round
27
+ -> system-prompt assembly
28
+ -> Context Budget V2 when globally enabled
29
+ -> local v4 reasoning routing when /think auto is active
30
+ -> provider attempt
31
+ -> same-family route rotation, retry, or configured failover when eligible
32
+ -> tool scheduling
33
+ -> v0.97.0 CLI default: dag-v2; direct core fallback is revision-specific
34
+ -> pre-hook claims -> deferred authorization -> post-hook claim re-plan
35
+ -> deterministic level execution and source-order results
36
+ -> journals, receipts, and session termination records
37
+ -> optional omk-protocol evaluation
38
+ TaskSpec -> ExecutionAttempt -> Observation -> EvaluationResult -> RuntimeDecision
39
+ -> retry, continuation, or final prompt settlement
40
+ ```
41
+
42
+ The protocol line is a released library and adapter surface. An ordinary chat
43
+ turn does not automatically become a `TaskSpec`; callers opt into that semantic
44
+ evaluation contract.
45
+
46
+ ## Current algorithm surface
47
+
48
+ ### Tool scheduling and settlement
49
+
50
+ **Status: Released / default.** The `v0.97.0` CLI sets `dag-v2`; direct
51
+ `omk-agent-core` calls fall back to `waves-v1`. The working tree changes that
52
+ core fallback to `dag-v2`, but that promotion is unreleased. The scheduler canonicalizes resource claims, preserves source order,
53
+ and places conflicting calls in later levels. Before a level executes, OMK authorizes its calls and
54
+ re-plans with post-hook arguments so a hook cannot silently invalidate the
55
+ original claim plan.
56
+
57
+ The live executor uses level barriers. `assignDagDependencies()` computes a
58
+ finer predecessor graph, but no live executor consumes it. Each candidate level
59
+ is authorized and then re-planned from post-hook arguments.
60
+
61
+ Evidence:
62
+
63
+ - `packages/agent/src/tool-dag-scheduler.ts`: `assignDagLevels`,
64
+ `assignDagDependencies`, `scheduleDagLevels`
65
+ - `packages/agent/src/agent-loop.ts`: `executeToolCallsDagLevels`,
66
+ `runDagLevelCalls`
67
+ - `packages/agent/test/tool-dag-scheduler*.test.ts`
68
+ - `packages/agent/test/tool-dag-dependencies.test.ts`
69
+
70
+ **Working tree:** timed-out tools receive a bounded 250 ms teardown window. A
71
+ cooperative process may settle and let the model react to the timeout; a tool
72
+ still running after the window stops the run because it may still mutate the
73
+ workspace. This candidate lives in
74
+ `packages/agent/src/tool-timeout-settlement.ts` and is covered by
75
+ `packages/agent/test/tool-timeout-loop-continuation.test.ts`.
76
+
77
+ ### Context selection
78
+
79
+ **Status: Released / opt-in.** Context Budget V2 is enabled globally through
80
+ `contextBudget.enabled` or per process with `OMK_CONTEXT_GOVERNOR=1`.
81
+
82
+ The planner:
83
+
84
+ 1. reserves response and safety tokens;
85
+ 2. pins hard or required items first;
86
+ 3. computes tier floors and ceilings;
87
+ 4. scores optional items for relevance, recency, evidence, redundancy,
88
+ priority, and full-text token cost;
89
+ 5. sorts optional items by
90
+ `density -> effectiveScore -> priorityRank -> fullTokens -> id`; and
91
+ 6. selects a full, summary, headroom-compressed, pointer, or omitted
92
+ representation that fits.
93
+
94
+ Density divides effective score by the cheapest non-omit representation
95
+ (`admissibleTokens`), not by full-text size. This avoids penalizing an item that
96
+ can be represented by a small evidence pointer. Stable item IDs and explicit
97
+ selection policy `sel-2` make tie-breaking and plan-cache invalidation
98
+ deterministic.
99
+
100
+ When enabled, representation and negative-result entries persist under
101
+ `.omk/cache/context-budget-v2`; plan entries remain session-memory-only.
102
+ `OMK_CONTEXT_GOVERNOR_CACHE=memory` keeps every cache entry in session memory,
103
+ and `OMK_CONTEXT_GOVERNOR_CACHE_DIR` relocates the representation snapshot.
104
+
105
+ Evidence:
106
+
107
+ - `packages/coding-agent/src/core/context-budget-v2-planner.ts`
108
+ - `packages/coding-agent/src/core/context-budget-v2-scoring.ts`
109
+ - `packages/coding-agent/src/core/context-budget-v2-selection.ts`
110
+ - `packages/coding-agent/test/context-budget-v2-knapsack-order.test.ts`
111
+ - `packages/coding-agent/test/context-budget-selection-policy-version.test.ts`
112
+ - `packages/coding-agent/test/context-budget-cache-disk.test.ts`
113
+
114
+ **Working tree:** context files now treat their global/local relevance baseline
115
+ as a floor. Lexical overlap can raise that score but cannot demote standing
116
+ instructions below the no-query baseline. Skills remain topic-scored because
117
+ they are optional capabilities, not standing authority. The change is in
118
+ `scoreContextFileRelevance()` with regression coverage in
119
+ `packages/coding-agent/test/context-budget-relevance.test.ts`.
120
+
121
+ **Working tree:** the default compactor now strips model-generated managed-rule
122
+ sections and deterministically carries explicit user-authored `RULE`/
123
+ `INVARIANT`/`CONSTRAINT`/`MUST`/`NEVER`/`ALWAYS` markers (plus explicit Korean
124
+ markers) outside LLM rewriting. Rules are bounded to 64 × 1,000 characters,
125
+ stored in additive non-hook compaction details, and covered by a five-round
126
+ byte-preservation test. Natural-language classification, hook summaries, branch
127
+ summaries, and cross-session memory remain outside this slice. Persisted rules
128
+ are credential-redacted and source-bound to a user entry/line/digest; previous
129
+ details are reused only when their canonical block matches the prior summary.
130
+
131
+ Evidence:
132
+
133
+ - `packages/coding-agent/src/core/compaction/knowledge-triage.ts`
134
+ - `packages/coding-agent/test/compaction-knowledge-triage.test.ts`
135
+ - `packages/coding-agent/test/compaction-summary-reasoning.test.ts`
136
+
137
+ ### Reasoning routing
138
+
139
+ **Status: Released / opt-in.** `/think auto` uses the local, deterministic v4
140
+ router. It extracts bounded prompt features, classifies one of seven task
141
+ classes, maps the class through `TASK_CLASS_THINKING_LEVELS`, applies lane
142
+ steps, bounded bias/hint adjustments, and non-negative uncertainty escalation,
143
+ then clamps the result to the selected model's supported levels.
144
+
145
+ The released extension-signal coefficients are active and bounded:
146
+ `multiTurnPrior=2`, `pressureBucket=1`, and `judgeVote=2`. History and pressure
147
+ are supplied by the main session; a judge vote affects only callers that provide
148
+ one. A zero-score fallback cannot be hijacked by these signals.
149
+
150
+ The optional learning path is global-only and off by default. When enabled, a
151
+ session loads one strictly validated `RouterBiasSnapshot` from the configured
152
+ path or repository-scoped default, pins that snapshot or miss for the session,
153
+ applies a `-2..2` step bias, and writes only bounded feedback buckets. It never stores prompts, diffs, tool
154
+ output, provider payloads, or repository paths.
155
+
156
+ Evidence:
157
+
158
+ - `packages/coding-agent/src/core/reasoning-router-v4.ts`
159
+ - `packages/coding-agent/src/core/reasoning-router-resolver.ts`
160
+ - `packages/coding-agent/src/core/reasoning-router-bias.ts`
161
+ - `packages/coding-agent/test/suite/regressions/013-reasoning-router-v4-accuracy.test.ts`
162
+ - `packages/coding-agent/test/suite/regressions/014-reasoning-router-v4-learning-wiring.test.ts`
163
+ - `packages/coding-agent/test/suite/regressions/018-reasoning-router-v4-inert-weights.test.ts`
164
+
165
+ **Working tree:** promotion evidence now credits a row only when repeated
166
+ baseline and candidate classifier replays each agree. It also requires a frozen
167
+ baseline and fails closed on insufficient or unstable replays. See
168
+ `reasoning-router-replay-stability.ts`, `reasoning-router-policy-ceiling.test.ts`,
169
+ and `reasoning-router-replay-stability.test.ts`.
170
+
171
+ ### Resource governance, lanes, and shards
172
+
173
+ The resource plane probes memory, workspace disk, V8 heap, and system CPU, then
174
+ produces bounded admission caps.
175
+
176
+ | Mechanism | Status | Authority |
177
+ | --- | --- | --- |
178
+ | Prompt-time probe, admission decision, and journal | Released / default | Observe and record |
179
+ | `/resource` and `omk doctor resources` | Released / opt-in | Inspect current policy and probe state |
180
+ | `omk doctor resources --report` | Working tree | Aggregate bounded local admission evidence; never promotes mode |
181
+ | Per-run tool cap and governed heavy-process permits | Released / opt-in | Enforced in `adaptive` or `strict` mode |
182
+ | `launchSubagentLanes()` | Released / internal | No live child-dispatch consumer |
183
+ | Journaled Vitest/Jest/workspace/Go shard executor | Released / internal | No `autoShard` setting or session-command consumer |
184
+
185
+ `observe` remains the default. Admission caps never raise configured caps.
186
+ Corrupt shard journals are quarantined and block resume; completed shards may be
187
+ skipped, but shard completion is only evidence and never a task verdict.
188
+
189
+ Evidence:
190
+
191
+ - `packages/coding-agent/src/core/resource-admission.ts`
192
+ - `packages/coding-agent/src/core/resource-governor-settings.ts`
193
+ - `packages/coding-agent/src/core/run-resource-lease.ts`
194
+ - `packages/coding-agent/src/commands/resource-doctor-cli.ts`
195
+ - `packages/coding-agent/src/core/resource-observation-report.ts`
196
+ - `packages/coding-agent/test/resource-observation-report.test.ts`
197
+ - `packages/coding-agent/src/core/subagent-lane-launcher.ts
198
+ - `packages/coding-agent/src/core/workload-shard-executor.ts`
199
+ - `packages/coding-agent/test/resource-admission.test.ts`
200
+ - `packages/coding-agent/test/resource-doctor-cli.test.ts`
201
+ - `packages/coding-agent/test/agent-session-resource-lease.test.ts`
202
+ - `packages/coding-agent/test/agent-session-resource-permits.test.ts`
203
+ - `packages/coding-agent/test/subagent-lane-launcher.test.ts`
204
+ - `packages/coding-agent/test/workload-shard-executor.test.ts`
205
+
206
+ ### Terminal settlement notifications
207
+
208
+ **Status: Working tree.** `v0.97.0` released completion sound as opt-in and
209
+ suppressed user aborts. The current working tree enables it by default on an
210
+ interactive TTY and adds an `onAbort` outcome switch. Successful prompts retain
211
+ the 5-second duration floor; failed and aborted/stopped outcomes notify
212
+ immediately.
213
+
214
+ The sound consumes only `prompt_settled`, never intermediate `agent_end`. The
215
+ current live path drains provider attempts, tools, and queued continuations;
216
+ subagent work is awaited inside its tool call. The settlement reducer reserves
217
+ direct child/shard counters, but no production signal call wires them yet, so
218
+ future live lanes/shards must close that gap before activation.
219
+ RPC, JSON, print mode, and CI remain silent. Playback uses fixed absolute
220
+ executable/argv pairs, a minimal environment without inherited `PATH` or
221
+ credentials, and a neutral temporary cwd. WSL uses BEL rather than resolving
222
+ PowerShell through `PATH`. Playback is fire-and-forget and cannot change the
223
+ prompt outcome.
224
+
225
+ Evidence:
226
+
227
+ - `packages/coding-agent/src/core/prompt-settlement.ts`
228
+ - `packages/coding-agent/src/core/completion-sound.ts`
229
+ - `packages/coding-agent/src/core/completion-sound-io.ts`
230
+ - `packages/coding-agent/test/prompt-settlement.test.ts`
231
+ - `packages/coding-agent/test/completion-sound.test.ts`
232
+ - `packages/coding-agent/test/suite/agent-session-retry-events.test.ts`
233
+
234
+ ### Evidence, decisions, and recovery
235
+
236
+ **Status: Released / opt-in.** The explicit `omk-protocol` API provides versioned,
237
+ readonly record contracts and runtime parsers for tasks, attempts, observations,
238
+ evaluations, waivers, and runtime decisions. `evaluateTask()` is pure. Among
239
+ unwaived required claims, any violation yields `fail`; otherwise missing
240
+ evidence yields `inconclusive`; otherwise the verdict is `pass`. A task with no
241
+ required claims is `inconclusive`; explicit waivers remove their claims from
242
+ verdict reduction. Advisory judging can choose among candidates that already
243
+ passed; it cannot create evidence or change a semantic verdict.
244
+
245
+ The coding-agent adds evidence receipts, a replay ledger, workspace
246
+ fingerprints, attempt journals, durable goals, seam checkpoints, session doctor,
247
+ and bounded provider retry/failover. Digests detect mismatch; they do not prove
248
+ runner honesty, OS isolation, freshness, or trusted authorship by themselves.
249
+
250
+ Evidence:
251
+
252
+ - `packages/protocol/src/evaluation.ts`: `evaluateTask`
253
+ - `packages/protocol/src/decision.ts`: `reduceRuntimeDecision`
254
+ - `packages/protocol/test/protocol.test.ts`
255
+ - `packages/coding-agent/src/core/advisory-judge.ts`
256
+ - `packages/coding-agent/test/advisory-judge.test.ts`
257
+
258
+ See [Run Protocol and Durable Goals](run-protocol.md),
259
+ [Sessions](sessions.md), [Provider Resilience](provider-resilience.md), and
260
+ [Turn Metrics](metrics.md).
261
+
262
+ ### AdaptOrch and WPL boundary
263
+
264
+ **Status: Released / opt-in.** Published `omk-adaptorch-wpl` supplies typed packet state, client, adjudication, and
265
+ verdict-projection primitives. Its `loop.ts` explicitly excludes end-to-end
266
+ `adaptorch_run` dispatch, polling, request assembly, and persistence. The
267
+ coding-agent has no production importer that turns those primitives into a
268
+ default execution loop; the Correctness Wall remains an explicitly loaded
269
+ example extension. The default-off AdaptOrch reasoning bridge currently returns
270
+ no advisory hint.
271
+
272
+ Evidence:
273
+
274
+ - `packages/adaptorch-wpl/src/loop.ts`
275
+ - `packages/adaptorch-wpl/test/loop.test.ts`
276
+ - `packages/coding-agent/src/core/adaptorch-bridge.ts`
277
+ - `packages/coding-agent/test/suite/regressions/011-reasoning-router-adaptorch-bridge.test.ts`
278
+ - `packages/coding-agent/test/suite/regressions/012-reasoning-router-learning-adaptorch-activation.test.ts`
279
+
280
+ See [AdaptOrch Preview](adaptorch-preview.md) and
281
+ [Correctness Wall](correctness-wall.md).
282
+
283
+ ### Repository understanding
284
+
285
+ **Status: Working tree.** The `v0.97.0` release shipped policy/workflow only and
286
+ still ignored `/openwiki/` and contained neither the corpus nor its checker.
287
+ Neither the release tag nor the current Git index tracks `openwiki/` or
288
+ `.understand-anything/`; both datasets are untracked or ignored advisory state.
289
+ The current `.last-update.json` says `interrupted` at current HEAD.
290
+
291
+ `scripts/check-openwiki.mjs` validates entry pages, internal links, update-state
292
+ shape, and global symbol-name presence in a source/test/script haystack. It does
293
+ not validate prose or bind each symbol to a declared source path. A current-HEAD
294
+ `interrupted` generation warns; a stale interrupted generation blocks. Source
295
+ and tests outrank every generated page. There is no dedicated checker test in
296
+ the current working tree; the executable checker is the available evidence.
297
+
298
+ This is not a release-grade trust gate: the current corpus is `interrupted`,
299
+ symbol checks are global substrings rather than declared source bindings, and
300
+ the generation workflow still needs an output allowlist plus pre-upload secret
301
+ and private-path scans. Do not load the corpus as trusted context until those
302
+ blockers close.
303
+
304
+ ## Direction
305
+
306
+ **Status: Proposed.** Owning specification:
307
+ `specs/015-runtime-algorithm-direction/spec.md`. This section creates no runtime
308
+ or test evidence; the internal mechanisms above do not satisfy these promotion
309
+ gates. Apply them in order:
310
+
311
+ 1. **Measure before promoting authority.** Run dated, same-model, same-provider,
312
+ same-task comparisons before changing defaults or making leadership claims.
313
+ The protocol in [Turn Metrics](metrics.md) is mandatory.
314
+ 2. **Reduce structure before adding mechanisms.** Do not raise module-size,
315
+ dependency-tree, or import-cycle baselines. The dependency-tree and import-
316
+ cycle gates are working-tree changes. Split large session and interactive
317
+ modules by ownership; do not mix movement-only refactors with behavior.
318
+ 3. **Promote live authority in stages.** Collect resource observations before
319
+ making `adaptive` the default. Wire subagent lanes before exposing automatic
320
+ sharding. Keep automatic sharding opt-in and limited to known, semantically
321
+ equivalent command families.
322
+ 4. **Protect standing context.** The relevance floor and explicit-rule
323
+ compaction slice are Worktree-only. Broader natural-language, hook, and branch
324
+ triage still require evidence before expansion.
325
+ 5. **Design verified memory before implementing it.** Spec 019 requires
326
+ evidence-linked admission, Context Budget V2 data-only injection, source-span
327
+ provenance, staleness, and memory-injection probes. Implementation remains
328
+ blocked until fixtures and evaluation thresholds are preregistered.
329
+ 6. **Keep adaptation evidence-gated.** Do not add online router learning while
330
+ the current instrument cannot show gain after `BIAS_STRONG_THRESHOLD=5`.
331
+ Reopen only through an `advance` spec that preregisters the real outcome-
332
+ linked sample, sample size, minimum effect, confidence rule, and statistical
333
+ test before collecting the promotion result.
334
+ 7. **Keep hosted advice separate from local authority.** AdaptOrch remains a
335
+ separate service and any bridge remains advisory; local deterministic gates
336
+ own execution and completion.
337
+
338
+ ## Deliberate non-goals
339
+
340
+ - Calling a level-barrier schedule an eager critical-path executor
341
+ - Treating internal lane or shard code as a live feature
342
+ - Auto-sharding arbitrary shell, deploy, publish, release, or migration commands
343
+ - Treating model narration, reviewer opinion, or a digest alone as completion
344
+ - Persisting unrestricted prompts or trajectories as learning memory
345
+ - Claiming SOTA from tests, feature counts, self-scores, or roadmap projections
346
+
347
+ ## Verification map
348
+
349
+ | Claim | Fast verification |
350
+ | --- | --- |
351
+ | Documentation links resolve | `npm run check:doc-links` |
352
+ | Specification governance holds | `npm run check:constitution` |
353
+ | Context selection behavior | focused context-budget tests named above |
354
+ | Router behavior and promotion ceiling | focused reasoning-router tests named above |
355
+ | Tool scheduling and timeout candidate | focused `packages/agent` scheduler/timeout tests |
356
+ | Resource and internal execution mechanisms | focused resource, lane, and shard tests named above |
357
+
358
+ A green focused test proves only its declared behavior. Release readiness still
359
+ requires the repository's full release gates.
package/docs/sdk.md CHANGED
@@ -565,12 +565,12 @@ The `edit` tool returns `details.diff` for OMK's TUI display and `details.patch`
565
565
 
566
566
  The `diagnostics` tool runs the project's own checkers and normalizes the result — `tsc --noEmit` for TypeScript, `pyright`/`ruff` for Python, `go vet` for Go, `cargo check` for Rust. Missing checkers or project markers are reported as `skipped` in the tool result instead of failing. Output is capped at 50 diagnostics and cached for 5 s.
567
567
 
568
- With default OMP seams, truncated `read` output does not create a sidecar. With `OMK_OMP_SEAMS=0`, legacy truncation may write the selected window to `<absolute-source-path>.omk-spill.txt`; `ReadToolDetails.fullOutputPath` reports the path when present. A first line that alone exceeds the byte cap is clipped without a sidecar. The exported `spillTruncatedOutput()` helper provides the preview-plus-path contract for custom tools.
568
+ Truncated `read` output may spill the selected window to a randomly named `omk-spill-*` directory under the OS temporary directory; `ReadToolDetails.fullOutputPath` reports the path when present. The directory is owner-only (`0700`) and the spill file is exclusive and owner-readable (`0600`) on POSIX. A first line that alone exceeds the byte cap is clipped without a spill. The exported `spillTruncatedOutput()` helper provides the same preview-plus-path contract for custom tools.
569
569
 
570
570
  ```typescript
571
571
  import { createAgentSession } from "open-multi-agent-kit";
572
572
 
573
- // Enable inspection tools; legacy read mode may create a spill sidecar
573
+ // Enable inspection tools; a long read may create a private temp spill
574
574
  const { session } = await createAgentSession({
575
575
  tools: ["read", "grep", "find", "ls"],
576
576
  });
package/docs/settings.md CHANGED
@@ -138,7 +138,7 @@ All numeric token reserves must be non-negative safe integers. Ratios must be fi
138
138
 
139
139
  | Setting | Type | Default | Description |
140
140
  |---------|------|---------|-------------|
141
- | `contextBudget.enabled` | boolean | `false` | Globally enable prompt resource budgeting and its in-memory, session-scoped plan/representation cache |
141
+ | `contextBudget.enabled` | boolean | `false` | Globally enable prompt resource budgeting; representation entries persist per workspace by default while plan entries stay in session memory |
142
142
 
143
143
  ```json
144
144
  {
@@ -146,7 +146,7 @@ All numeric token reserves must be non-negative safe integers. Ratios must be fi
146
146
  }
147
147
  ```
148
148
 
149
- This setting is global-only: `.omk/settings.json` cannot enable or disable it. Use `OMK_CONTEXT_GOVERNOR=1` to force it on for one process or `OMK_CONTEXT_GOVERNOR=0` to force it off for a baseline run. The cache is never persisted or shared between sessions.
149
+ This setting is global-only: `.omk/settings.json` cannot enable or disable it. Use `OMK_CONTEXT_GOVERNOR=1` to force it on for one process or `OMK_CONTEXT_GOVERNOR=0` to force it off for a baseline run. When enabled, content-addressed representation and negative-result entries persist under `.omk/cache/context-budget-v2`; plan entries stay in session memory. Set `OMK_CONTEXT_GOVERNOR_CACHE=memory` to keep every entry in session memory or `OMK_CONTEXT_GOVERNOR_CACHE_DIR` to relocate the representation snapshot.
150
150
 
151
151
  ### Agent Tool Execution
152
152
 
@@ -182,7 +182,7 @@ The DAG preserves source-order result artifacts. `bash`, unknown tools, and exte
182
182
 
183
183
  ### Resource Governor
184
184
 
185
- The governor probes host capacity (memory, workspace disk, V8 heap, system CPU) and evaluates a resource admission decision, surfaced through `/resource [probe|policy]` in the TUI and `omk doctor resources [--json]` headless. In `observe` mode (default) it records decisions without changing behavior; in `adaptive`/`strict` modes each top-level prompt runs a bounded preflight probe and throttles the effective tool concurrency for that run (never above `agent.maxToolConcurrency`), restoring it when the run settles. Heavy-process caps are enforced at the governed bash boundary; the internal subagent-lane launcher is not wired into live child dispatch. Absent settings keep prior behavior unchanged.
185
+ The governor probes host capacity (memory, workspace disk, V8 heap, system CPU) and evaluates a resource admission decision, surfaced through `/resource [probe|policy]` in the TUI and `omk doctor resources [--json]` headless. `omk doctor resources --report [--json]` aggregates bounded, identifier-free admission counts from local run journals without probing the current host. Only reason-qualified records count toward the 30-record floor; legacy/malformed reason coverage remains diagnostic. The floor is only a sample signal, always requires human review, and never promotes the mode. In `observe` mode (default) it records decisions without changing behavior; in `adaptive`/`strict` modes each top-level prompt runs a bounded preflight probe and throttles the effective tool concurrency for that run (never above `agent.maxToolConcurrency`), restoring it when the run settles. Heavy-process caps are enforced at the governed bash boundary; the internal subagent-lane launcher is not wired into live child dispatch. Absent settings keep prior behavior unchanged.
186
186
 
187
187
  | Setting | Type | Default | Description |
188
188
  | --------- | ------ | --------- | ------------- |
@@ -213,20 +213,21 @@ Validation is explicit and fail-closed: invalid values are reported (in `/resour
213
213
 
214
214
  ### Completion Sound
215
215
 
216
- Plays a short system sound when a long prompt finally settles (all retries and continuations drained), only in the interactive TUI on a real TTY never in RPC, JSON, print mode, or CI. Default off. Backends use fixed executables with fixed arguments (macOS `afplay`, Windows/WSL PowerShell system sound, Linux `canberra-gtk-play`/`paplay`/`aplay`), falling back to the terminal bell. Sound failures are diagnostics only and never affect the prompt outcome.
216
+ Plays a short system sound only after the top-level prompt settles: retries, continuations, and tools must be drained first. Current subagent work is awaited inside its tool call, so that tool boundary also covers those children. The settlement contract reserves direct child/shard counters for future live wiring; those paths must connect the counters before activation. Sound is enabled by default only in the interactive TUI on a real TTY—never in RPC, JSON, print mode, or CI. Successful prompts honor `minDurationMs`; failed and aborted prompts notify immediately. Backends use fixed absolute executables and arguments (macOS `afplay`, Windows system PowerShell, Linux `canberra-gtk-play`/`paplay`/`aplay`), an allowlisted environment with no inherited `PATH` or credentials, and the OS temporary directory as cwd. WSL uses terminal BEL because Windows executable mounts have no fixed trusted path. Sound failures are diagnostics only and never affect the prompt outcome.
217
217
 
218
218
  | Setting | Type | Default | Description |
219
219
  | --------- | ------ | --------- | ------------- |
220
- | `notifications.completionSound.enabled` | boolean | `false` | Master switch; env `OMK_COMPLETION_SOUND` set to `0` or `1` overrides per process |
221
- | `notifications.completionSound.minDurationMs` | number | `5000` | Only chime for prompts that ran at least this long |
222
- | `notifications.completionSound.onSuccess` | boolean | `true` | Chime on completed prompts |
223
- | `notifications.completionSound.onFailure` | boolean | `true` | Chime on failed prompts (user aborts never chime) |
224
- | `notifications.completionSound.terminalBellFallback` | boolean | `true` | Fall back to the terminal BEL when no sound backend works |
220
+ | `notifications.completionSound.enabled` | boolean | `true` | Master switch; `OMK_COMPLETION_SOUND=0` disables and `=1` enables it for one process |
221
+ | `notifications.completionSound.minDurationMs` | number | `5000` | Minimum duration for successful-completion sounds; failed/aborted outcomes bypass it |
222
+ | `notifications.completionSound.onSuccess` | boolean | `true` | Notify after a completed prompt that meets the duration floor |
223
+ | `notifications.completionSound.onFailure` | boolean | `true` | Notify immediately after a failed terminal outcome |
224
+ | `notifications.completionSound.onAbort` | boolean | `true` | Notify immediately after an aborted/stopped terminal outcome |
225
+ | `notifications.completionSound.terminalBellFallback` | boolean | `true` | Fall back to terminal BEL when no sound backend works |
225
226
 
226
227
  ```json
227
228
  {
228
229
  "notifications": {
229
- "completionSound": { "enabled": true, "minDurationMs": 10000 }
230
+ "completionSound": { "minDurationMs": 10000, "onAbort": false }
230
231
  }
231
232
  }
232
233
  ```
package/docs/usage.md CHANGED
@@ -45,6 +45,7 @@ Type `/` in the editor to open command completion. Extensions can register custo
45
45
  | `/new` | Start a new session |
46
46
  | `/name <name>` | Set session display name |
47
47
  | `/session` | Show session file, ID, messages, tokens, and cost |
48
+ | `/resource [probe\|policy]` | Show resource pressure and effective concurrency for this run |
48
49
  | `/goal [objective]` | Show or set the durable goal for the current working directory |
49
50
  | `/tree` | Jump to any point in the session and continue from there |
50
51
  | `/fork` | Create a new session from a previous user message |
@@ -261,6 +262,21 @@ Diagnoses one provider and prints a single sanitized JSON document. Exit codes a
261
262
 
262
263
  Config sources, highest precedence first: `models.json`, `KIMI_BASE_URL`/`KIMI_MODEL_NAME` env, `~/.kimi/config.toml` root keys, then `[providers.<name>]` TOML tables with `type = "openai_legacy"` — the last are classified `custom-openai-compatible`, so native-only checks (login, native config) are skipped and endpoint reachability is checked instead. Credentials, URL userinfo/query/fragment, request bodies, and response bodies never appear in the output; malformed TOML is reported by line number only.
263
264
 
265
+ ### Resource Doctor
266
+
267
+ ```bash
268
+ omk doctor resources [--json]
269
+ omk doctor resources --report [--json]
270
+ ```
271
+
272
+ The first form probes current host pressure. `--report` does not probe the host;
273
+ it scans at most 500 bounded local resource-observation journals and emits only
274
+ aggregate pressure/action/probe-health counts. It opens bounded regular files
275
+ without following symlinks and never includes paths, prompt or decision IDs,
276
+ digests, a command field, or raw capacity. Only reason-qualified records count
277
+ toward the 30-record floor; the report always requires human false-positive
278
+ review and never promotes `adaptive`.
279
+
264
280
  ### Modes
265
281
 
266
282
  | Flag | Description |
@@ -311,7 +327,7 @@ cat README.md | omk -p "Summarize this text"
311
327
 
312
328
  Built-in tools: `read`, `bash`, `edit`, `write`, `grep`, `find`, `ls`.
313
329
 
314
- With default OMP seams, a long text `read` returns a bounded window and continuation marker without creating a sidecar. With `OMK_OMP_SEAMS=0`, legacy truncation may write the selected window to `<absolute-source-path>.omk-spill.txt` and report that path. A first line that alone exceeds the byte cap is clipped without a sidecar. An inspection-only tool allowlist is therefore not a strict no-write filesystem boundary in legacy read mode.
330
+ A long text `read` returns a bounded window and continuation marker. Truncation may spill the selected window to a randomly named owner-only directory under the OS temporary directory and report that path; the directory uses mode `0700` and the file `0600` on POSIX. A first line that alone exceeds the byte cap is clipped without a spill. An inspection-only tool allowlist is therefore not a strict no-write filesystem boundary.
315
331
 
316
332
  ### Resource Options
317
333
 
@@ -380,7 +396,7 @@ omk --model sonnet:high "Solve this complex problem"
380
396
  # Limit model cycling
381
397
  omk --models "claude-*,gpt-4o"
382
398
 
383
- # Inspection-only tool allowlist; legacy read mode may create a spill sidecar
399
+ # Inspection-only tool allowlist; a long read may create a private temp spill
384
400
  omk --tools read,grep,find,ls -p "Review the code"
385
401
 
386
402
  # Disable one extension or built-in tool while keeping the rest available
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "omk-extension-custom-provider-anthropic",
3
- "version": "0.97.0",
3
+ "version": "0.98.0",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "omk-extension-custom-provider-anthropic",
9
- "version": "0.97.0",
9
+ "version": "0.98.0",
10
10
  "dependencies": {
11
11
  "@anthropic-ai/sdk": "0.52.0"
12
12
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "omk-extension-custom-provider-anthropic",
3
3
  "private": true,
4
- "version": "0.97.0",
4
+ "version": "0.98.0",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "clean": "echo 'nothing to clean'",
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "omk-extension-custom-provider-gitlab-duo",
3
3
  "private": true,
4
- "version": "0.97.0",
4
+ "version": "0.98.0",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "clean": "echo 'nothing to clean'",
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "omk-extension-gondolin",
3
- "version": "0.97.0",
3
+ "version": "0.98.0",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "omk-extension-gondolin",
9
- "version": "0.97.0",
9
+ "version": "0.98.0",
10
10
  "dependencies": {
11
11
  "@earendil-works/gondolin": "0.12.0"
12
12
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "omk-extension-gondolin",
3
3
  "private": true,
4
- "version": "0.97.0",
4
+ "version": "0.98.0",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "clean": "echo 'nothing to clean'",
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "omk-extension-sandbox",
3
- "version": "0.97.0",
3
+ "version": "0.98.0",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "omk-extension-sandbox",
9
- "version": "0.97.0",
9
+ "version": "0.98.0",
10
10
  "dependencies": {
11
11
  "@anthropic-ai/sandbox-runtime": "0.0.26"
12
12
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "omk-extension-sandbox",
3
3
  "private": true,
4
- "version": "0.97.0",
4
+ "version": "0.98.0",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "clean": "echo 'nothing to clean'",
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "omk-extension-with-deps",
3
- "version": "0.97.0",
3
+ "version": "0.98.0",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "omk-extension-with-deps",
9
- "version": "0.97.0",
9
+ "version": "0.98.0",
10
10
  "dependencies": {
11
11
  "ms": "2.1.3"
12
12
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "omk-extension-with-deps",
3
3
  "private": true,
4
- "version": "0.97.0",
4
+ "version": "0.98.0",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "clean": "echo 'nothing to clean'",