open-multi-agent-kit 0.99.0 → 1.2.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 (464) hide show
  1. package/CHANGELOG.md +30 -1
  2. package/README.md +3 -3
  3. package/dist/bun/cli.d.ts.map +1 -1
  4. package/dist/bun/cli.js +1 -0
  5. package/dist/bun/cli.js.map +1 -1
  6. package/dist/bun/register-bundled-coding-agent.d.ts +10 -0
  7. package/dist/bun/register-bundled-coding-agent.d.ts.map +1 -0
  8. package/dist/bun/register-bundled-coding-agent.js +12 -0
  9. package/dist/bun/register-bundled-coding-agent.js.map +1 -0
  10. package/dist/cli/args.d.ts +1 -1
  11. package/dist/cli/args.d.ts.map +1 -1
  12. package/dist/cli/args.js +1 -1
  13. package/dist/cli/args.js.map +1 -1
  14. package/dist/cli/help.d.ts.map +1 -1
  15. package/dist/cli/help.js +2 -1
  16. package/dist/cli/help.js.map +1 -1
  17. package/dist/cli.d.ts.map +1 -1
  18. package/dist/cli.js +14 -2
  19. package/dist/cli.js.map +1 -1
  20. package/dist/commands/neo-cli.d.ts +9 -0
  21. package/dist/commands/neo-cli.d.ts.map +1 -0
  22. package/dist/commands/neo-cli.js +61 -0
  23. package/dist/commands/neo-cli.js.map +1 -0
  24. package/dist/coordination/awareness.d.ts +32 -0
  25. package/dist/coordination/awareness.d.ts.map +1 -0
  26. package/dist/coordination/awareness.js +55 -0
  27. package/dist/coordination/awareness.js.map +1 -0
  28. package/dist/coordination/broker.d.ts +79 -0
  29. package/dist/coordination/broker.d.ts.map +1 -0
  30. package/dist/coordination/broker.js +195 -0
  31. package/dist/coordination/broker.js.map +1 -0
  32. package/dist/coordination/index.d.ts +16 -0
  33. package/dist/coordination/index.d.ts.map +1 -0
  34. package/dist/coordination/index.js +16 -0
  35. package/dist/coordination/index.js.map +1 -0
  36. package/dist/coordination/integration.d.ts +59 -0
  37. package/dist/coordination/integration.d.ts.map +1 -0
  38. package/dist/coordination/integration.js +126 -0
  39. package/dist/coordination/integration.js.map +1 -0
  40. package/dist/coordination/operation.d.ts +106 -0
  41. package/dist/coordination/operation.d.ts.map +1 -0
  42. package/dist/coordination/operation.js +179 -0
  43. package/dist/coordination/operation.js.map +1 -0
  44. package/dist/coordination/resource.d.ts +33 -0
  45. package/dist/coordination/resource.d.ts.map +1 -0
  46. package/dist/coordination/resource.js +89 -0
  47. package/dist/coordination/resource.js.map +1 -0
  48. package/dist/coordination/session.d.ts +74 -0
  49. package/dist/coordination/session.d.ts.map +1 -0
  50. package/dist/coordination/session.js +143 -0
  51. package/dist/coordination/session.js.map +1 -0
  52. package/dist/coordination/types.d.ts +68 -0
  53. package/dist/coordination/types.d.ts.map +1 -0
  54. package/dist/coordination/types.js +26 -0
  55. package/dist/coordination/types.js.map +1 -0
  56. package/dist/core/agent-session.d.ts +29 -2
  57. package/dist/core/agent-session.d.ts.map +1 -1
  58. package/dist/core/agent-session.js +135 -37
  59. package/dist/core/agent-session.js.map +1 -1
  60. package/dist/core/bundled-skills.d.ts +4 -0
  61. package/dist/core/bundled-skills.d.ts.map +1 -0
  62. package/dist/core/bundled-skills.js +32 -0
  63. package/dist/core/bundled-skills.js.map +1 -0
  64. package/dist/core/cli-diagnostics.d.ts +6 -0
  65. package/dist/core/cli-diagnostics.d.ts.map +1 -0
  66. package/dist/core/cli-diagnostics.js +20 -0
  67. package/dist/core/cli-diagnostics.js.map +1 -0
  68. package/dist/core/compaction/control-state.d.ts +41 -0
  69. package/dist/core/compaction/control-state.d.ts.map +1 -0
  70. package/dist/core/compaction/control-state.js +85 -0
  71. package/dist/core/compaction/control-state.js.map +1 -0
  72. package/dist/core/compaction/fallback.d.ts +60 -0
  73. package/dist/core/compaction/fallback.d.ts.map +1 -0
  74. package/dist/core/compaction/fallback.js +117 -0
  75. package/dist/core/compaction/fallback.js.map +1 -0
  76. package/dist/core/compaction/index.d.ts +2 -0
  77. package/dist/core/compaction/index.d.ts.map +1 -1
  78. package/dist/core/compaction/index.js +2 -0
  79. package/dist/core/compaction/index.js.map +1 -1
  80. package/dist/core/context-budget-headroom-candidates.d.ts +16 -1
  81. package/dist/core/context-budget-headroom-candidates.d.ts.map +1 -1
  82. package/dist/core/context-budget-headroom-candidates.js +31 -13
  83. package/dist/core/context-budget-headroom-candidates.js.map +1 -1
  84. package/dist/core/context-budget-headroom-types.d.ts +7 -1
  85. package/dist/core/context-budget-headroom-types.d.ts.map +1 -1
  86. package/dist/core/context-budget-headroom-types.js +0 -1
  87. package/dist/core/context-budget-headroom-types.js.map +1 -1
  88. package/dist/core/context-budget-headroom.d.ts +22 -0
  89. package/dist/core/context-budget-headroom.d.ts.map +1 -1
  90. package/dist/core/context-budget-headroom.js +46 -2
  91. package/dist/core/context-budget-headroom.js.map +1 -1
  92. package/dist/core/context-budget-v2-global-pass.d.ts +21 -0
  93. package/dist/core/context-budget-v2-global-pass.d.ts.map +1 -0
  94. package/dist/core/context-budget-v2-global-pass.js +203 -0
  95. package/dist/core/context-budget-v2-global-pass.js.map +1 -0
  96. package/dist/core/context-budget-v2-input-validation.d.ts +4 -0
  97. package/dist/core/context-budget-v2-input-validation.d.ts.map +1 -0
  98. package/dist/core/context-budget-v2-input-validation.js +79 -0
  99. package/dist/core/context-budget-v2-input-validation.js.map +1 -0
  100. package/dist/core/context-budget-v2-observability.d.ts +15 -0
  101. package/dist/core/context-budget-v2-observability.d.ts.map +1 -0
  102. package/dist/core/context-budget-v2-observability.js +35 -0
  103. package/dist/core/context-budget-v2-observability.js.map +1 -0
  104. package/dist/core/context-budget-v2-planned-items.d.ts +17 -0
  105. package/dist/core/context-budget-v2-planned-items.d.ts.map +1 -0
  106. package/dist/core/context-budget-v2-planned-items.js +59 -0
  107. package/dist/core/context-budget-v2-planned-items.js.map +1 -0
  108. package/dist/core/context-budget-v2-planner.d.ts.map +1 -1
  109. package/dist/core/context-budget-v2-planner.js +69 -51
  110. package/dist/core/context-budget-v2-planner.js.map +1 -1
  111. package/dist/core/context-budget-v2-scoring.d.ts +7 -1
  112. package/dist/core/context-budget-v2-scoring.d.ts.map +1 -1
  113. package/dist/core/context-budget-v2-scoring.js.map +1 -1
  114. package/dist/core/context-budget-v2-selection.d.ts +22 -3
  115. package/dist/core/context-budget-v2-selection.d.ts.map +1 -1
  116. package/dist/core/context-budget-v2-selection.js +41 -59
  117. package/dist/core/context-budget-v2-selection.js.map +1 -1
  118. package/dist/core/context-budget-v2-tiers.d.ts.map +1 -1
  119. package/dist/core/context-budget-v2-tiers.js +9 -42
  120. package/dist/core/context-budget-v2-tiers.js.map +1 -1
  121. package/dist/core/context-budget-v2-types.d.ts +14 -2
  122. package/dist/core/context-budget-v2-types.d.ts.map +1 -1
  123. package/dist/core/context-budget-v2-types.js +6 -1
  124. package/dist/core/context-budget-v2-types.js.map +1 -1
  125. package/dist/core/extensions/bundled-virtual-modules.d.ts +15 -0
  126. package/dist/core/extensions/bundled-virtual-modules.d.ts.map +1 -0
  127. package/dist/core/extensions/bundled-virtual-modules.js +63 -0
  128. package/dist/core/extensions/bundled-virtual-modules.js.map +1 -0
  129. package/dist/core/extensions/loader.d.ts.map +1 -1
  130. package/dist/core/extensions/loader.js +2 -42
  131. package/dist/core/extensions/loader.js.map +1 -1
  132. package/dist/core/extensions/runner.d.ts +1 -0
  133. package/dist/core/extensions/runner.d.ts.map +1 -1
  134. package/dist/core/extensions/runner.js +6 -0
  135. package/dist/core/extensions/runner.js.map +1 -1
  136. package/dist/core/extensions/types.d.ts +10 -0
  137. package/dist/core/extensions/types.d.ts.map +1 -1
  138. package/dist/core/extensions/types.js.map +1 -1
  139. package/dist/core/index.d.ts +2 -1
  140. package/dist/core/index.d.ts.map +1 -1
  141. package/dist/core/index.js +2 -1
  142. package/dist/core/index.js.map +1 -1
  143. package/dist/core/loadout-runtime.d.ts +2 -8
  144. package/dist/core/loadout-runtime.d.ts.map +1 -1
  145. package/dist/core/loadout-runtime.js.map +1 -1
  146. package/dist/core/mcp/client.d.ts +27 -6
  147. package/dist/core/mcp/client.d.ts.map +1 -1
  148. package/dist/core/mcp/client.js +80 -20
  149. package/dist/core/mcp/client.js.map +1 -1
  150. package/dist/core/mcp/manager.d.ts +10 -1
  151. package/dist/core/mcp/manager.d.ts.map +1 -1
  152. package/dist/core/mcp/manager.js +68 -9
  153. package/dist/core/mcp/manager.js.map +1 -1
  154. package/dist/core/mcp/protocol.d.ts +9 -3
  155. package/dist/core/mcp/protocol.d.ts.map +1 -1
  156. package/dist/core/mcp/protocol.js +61 -15
  157. package/dist/core/mcp/protocol.js.map +1 -1
  158. package/dist/core/mcp/stdio-transport.d.ts +12 -1
  159. package/dist/core/mcp/stdio-transport.d.ts.map +1 -1
  160. package/dist/core/mcp/stdio-transport.js +30 -2
  161. package/dist/core/mcp/stdio-transport.js.map +1 -1
  162. package/dist/core/mcp-descriptor-injection.d.ts +26 -0
  163. package/dist/core/mcp-descriptor-injection.d.ts.map +1 -0
  164. package/dist/core/mcp-descriptor-injection.js +25 -0
  165. package/dist/core/mcp-descriptor-injection.js.map +1 -0
  166. package/dist/core/mcp-public-presets.d.ts +1 -3
  167. package/dist/core/mcp-public-presets.d.ts.map +1 -1
  168. package/dist/core/mcp-public-presets.js +3 -15
  169. package/dist/core/mcp-public-presets.js.map +1 -1
  170. package/dist/core/model-registry.d.ts.map +1 -1
  171. package/dist/core/model-registry.js +24 -3
  172. package/dist/core/model-registry.js.map +1 -1
  173. package/dist/core/neo/catalog.d.ts +20 -0
  174. package/dist/core/neo/catalog.d.ts.map +1 -0
  175. package/dist/core/neo/catalog.js +50 -0
  176. package/dist/core/neo/catalog.js.map +1 -0
  177. package/dist/core/neo/setup.d.ts +3 -0
  178. package/dist/core/neo/setup.d.ts.map +1 -0
  179. package/dist/core/neo/setup.js +47 -0
  180. package/dist/core/neo/setup.js.map +1 -0
  181. package/dist/core/provider-default-models.d.ts +2 -0
  182. package/dist/core/provider-default-models.d.ts.map +1 -1
  183. package/dist/core/provider-default-models.js +2 -0
  184. package/dist/core/provider-default-models.js.map +1 -1
  185. package/dist/core/provider-display-names.d.ts.map +1 -1
  186. package/dist/core/provider-display-names.js +2 -0
  187. package/dist/core/provider-display-names.js.map +1 -1
  188. package/dist/core/provider-error-classification.d.ts +57 -0
  189. package/dist/core/provider-error-classification.d.ts.map +1 -0
  190. package/dist/core/provider-error-classification.js +103 -0
  191. package/dist/core/provider-error-classification.js.map +1 -0
  192. package/dist/core/provider-resilience.d.ts +10 -0
  193. package/dist/core/provider-resilience.d.ts.map +1 -1
  194. package/dist/core/provider-resilience.js +36 -3
  195. package/dist/core/provider-resilience.js.map +1 -1
  196. package/dist/core/provider-usage-commandcode.d.ts +9 -0
  197. package/dist/core/provider-usage-commandcode.d.ts.map +1 -0
  198. package/dist/core/provider-usage-commandcode.js +198 -0
  199. package/dist/core/provider-usage-commandcode.js.map +1 -0
  200. package/dist/core/provider-usage-devin.d.ts +5 -3
  201. package/dist/core/provider-usage-devin.d.ts.map +1 -1
  202. package/dist/core/provider-usage-devin.js +15 -5
  203. package/dist/core/provider-usage-devin.js.map +1 -1
  204. package/dist/core/provider-usage-types.d.ts +1 -1
  205. package/dist/core/provider-usage-types.d.ts.map +1 -1
  206. package/dist/core/provider-usage-types.js.map +1 -1
  207. package/dist/core/provider-usage.d.ts.map +1 -1
  208. package/dist/core/provider-usage.js +6 -0
  209. package/dist/core/provider-usage.js.map +1 -1
  210. package/dist/core/reasoning-router-resolver.d.ts +7 -0
  211. package/dist/core/reasoning-router-resolver.d.ts.map +1 -1
  212. package/dist/core/reasoning-router-resolver.js +21 -3
  213. package/dist/core/reasoning-router-resolver.js.map +1 -1
  214. package/dist/core/reasoning-router-v4.d.ts +8 -5
  215. package/dist/core/reasoning-router-v4.d.ts.map +1 -1
  216. package/dist/core/reasoning-router-v4.js +8 -5
  217. package/dist/core/reasoning-router-v4.js.map +1 -1
  218. package/dist/core/resource-admission.d.ts +36 -0
  219. package/dist/core/resource-admission.d.ts.map +1 -1
  220. package/dist/core/resource-admission.js +59 -0
  221. package/dist/core/resource-admission.js.map +1 -1
  222. package/dist/core/resource-loader.d.ts.map +1 -1
  223. package/dist/core/resource-loader.js +2 -2
  224. package/dist/core/resource-loader.js.map +1 -1
  225. package/dist/core/run-usage-ledger.d.ts +47 -0
  226. package/dist/core/run-usage-ledger.d.ts.map +1 -0
  227. package/dist/core/run-usage-ledger.js +162 -0
  228. package/dist/core/run-usage-ledger.js.map +1 -0
  229. package/dist/core/run-usage-operation.d.ts +8 -0
  230. package/dist/core/run-usage-operation.d.ts.map +1 -0
  231. package/dist/core/run-usage-operation.js +12 -0
  232. package/dist/core/run-usage-operation.js.map +1 -0
  233. package/dist/core/sdk.d.ts.map +1 -1
  234. package/dist/core/sdk.js +5 -6
  235. package/dist/core/sdk.js.map +1 -1
  236. package/dist/core/session-compaction-service.d.ts +15 -0
  237. package/dist/core/session-compaction-service.d.ts.map +1 -1
  238. package/dist/core/session-compaction-service.js +17 -4
  239. package/dist/core/session-compaction-service.js.map +1 -1
  240. package/dist/core/session-failure-cause.d.ts.map +1 -1
  241. package/dist/core/session-failure-cause.js +14 -5
  242. package/dist/core/session-failure-cause.js.map +1 -1
  243. package/dist/core/session-prompt-lifecycle.d.ts +6 -0
  244. package/dist/core/session-prompt-lifecycle.d.ts.map +1 -1
  245. package/dist/core/session-prompt-lifecycle.js +47 -2
  246. package/dist/core/session-prompt-lifecycle.js.map +1 -1
  247. package/dist/core/session-termination.d.ts.map +1 -1
  248. package/dist/core/session-termination.js +4 -2
  249. package/dist/core/session-termination.js.map +1 -1
  250. package/dist/core/subagent-lane-authority.d.ts +28 -0
  251. package/dist/core/subagent-lane-authority.d.ts.map +1 -0
  252. package/dist/core/subagent-lane-authority.js +119 -0
  253. package/dist/core/subagent-lane-authority.js.map +1 -0
  254. package/dist/core/subagent-lane-contract.d.ts +114 -0
  255. package/dist/core/subagent-lane-contract.d.ts.map +1 -0
  256. package/dist/core/subagent-lane-contract.js +18 -0
  257. package/dist/core/subagent-lane-contract.js.map +1 -0
  258. package/dist/core/subagent-lane-launcher.d.ts +3 -6
  259. package/dist/core/subagent-lane-launcher.d.ts.map +1 -1
  260. package/dist/core/subagent-lane-launcher.js +53 -12
  261. package/dist/core/subagent-lane-launcher.js.map +1 -1
  262. package/dist/core/subagent-orchestration.d.ts +4 -17
  263. package/dist/core/subagent-orchestration.d.ts.map +1 -1
  264. package/dist/core/subagent-orchestration.js.map +1 -1
  265. package/dist/core/todo-runtime-state.d.ts +12 -0
  266. package/dist/core/todo-runtime-state.d.ts.map +1 -1
  267. package/dist/core/todo-runtime-state.js +23 -0
  268. package/dist/core/todo-runtime-state.js.map +1 -1
  269. package/dist/core/verified-run/broker.d.ts.map +1 -1
  270. package/dist/core/verified-run/broker.js +4 -1
  271. package/dist/core/verified-run/broker.js.map +1 -1
  272. package/dist/core/workload-permit-pool.d.ts +1 -1
  273. package/dist/core/workload-permit-pool.d.ts.map +1 -1
  274. package/dist/core/workload-permit-pool.js +3 -0
  275. package/dist/core/workload-permit-pool.js.map +1 -1
  276. package/dist/guardrails/strict-evidence-approval-adapter.d.ts +34 -0
  277. package/dist/guardrails/strict-evidence-approval-adapter.d.ts.map +1 -0
  278. package/dist/guardrails/strict-evidence-approval-adapter.js +70 -0
  279. package/dist/guardrails/strict-evidence-approval-adapter.js.map +1 -0
  280. package/dist/index.d.ts +5 -0
  281. package/dist/index.d.ts.map +1 -1
  282. package/dist/index.js +3 -0
  283. package/dist/index.js.map +1 -1
  284. package/dist/main.d.ts.map +1 -1
  285. package/dist/main.js +11 -18
  286. package/dist/main.js.map +1 -1
  287. package/dist/metacognition/calibration-selective.d.ts +78 -0
  288. package/dist/metacognition/calibration-selective.d.ts.map +1 -0
  289. package/dist/metacognition/calibration-selective.js +161 -0
  290. package/dist/metacognition/calibration-selective.js.map +1 -0
  291. package/dist/metacognition/calibration.d.ts +62 -0
  292. package/dist/metacognition/calibration.d.ts.map +1 -0
  293. package/dist/metacognition/calibration.js +122 -0
  294. package/dist/metacognition/calibration.js.map +1 -0
  295. package/dist/metacognition/checkpoint.d.ts +60 -0
  296. package/dist/metacognition/checkpoint.d.ts.map +1 -0
  297. package/dist/metacognition/checkpoint.js +57 -0
  298. package/dist/metacognition/checkpoint.js.map +1 -0
  299. package/dist/metacognition/context7.d.ts +48 -0
  300. package/dist/metacognition/context7.d.ts.map +1 -0
  301. package/dist/metacognition/context7.js +154 -0
  302. package/dist/metacognition/context7.js.map +1 -0
  303. package/dist/metacognition/decision.d.ts +44 -0
  304. package/dist/metacognition/decision.d.ts.map +1 -0
  305. package/dist/metacognition/decision.js +111 -0
  306. package/dist/metacognition/decision.js.map +1 -0
  307. package/dist/metacognition/evaluation.d.ts +73 -0
  308. package/dist/metacognition/evaluation.d.ts.map +1 -0
  309. package/dist/metacognition/evaluation.js +97 -0
  310. package/dist/metacognition/evaluation.js.map +1 -0
  311. package/dist/metacognition/index.d.ts +31 -0
  312. package/dist/metacognition/index.d.ts.map +1 -0
  313. package/dist/metacognition/index.js +31 -0
  314. package/dist/metacognition/index.js.map +1 -0
  315. package/dist/metacognition/knowledge-action.d.ts +43 -0
  316. package/dist/metacognition/knowledge-action.d.ts.map +1 -0
  317. package/dist/metacognition/knowledge-action.js +60 -0
  318. package/dist/metacognition/knowledge-action.js.map +1 -0
  319. package/dist/metacognition/knowledge.d.ts +84 -0
  320. package/dist/metacognition/knowledge.d.ts.map +1 -0
  321. package/dist/metacognition/knowledge.js +165 -0
  322. package/dist/metacognition/knowledge.js.map +1 -0
  323. package/dist/metacognition/obligations.d.ts +82 -0
  324. package/dist/metacognition/obligations.d.ts.map +1 -0
  325. package/dist/metacognition/obligations.js +139 -0
  326. package/dist/metacognition/obligations.js.map +1 -0
  327. package/dist/metacognition/observation-validity.d.ts +83 -0
  328. package/dist/metacognition/observation-validity.d.ts.map +1 -0
  329. package/dist/metacognition/observation-validity.js +118 -0
  330. package/dist/metacognition/observation-validity.js.map +1 -0
  331. package/dist/metacognition/observe.d.ts +45 -0
  332. package/dist/metacognition/observe.d.ts.map +1 -0
  333. package/dist/metacognition/observe.js +59 -0
  334. package/dist/metacognition/observe.js.map +1 -0
  335. package/dist/metacognition/policy.d.ts +53 -0
  336. package/dist/metacognition/policy.d.ts.map +1 -0
  337. package/dist/metacognition/policy.js +155 -0
  338. package/dist/metacognition/policy.js.map +1 -0
  339. package/dist/metacognition/predictions.d.ts +78 -0
  340. package/dist/metacognition/predictions.d.ts.map +1 -0
  341. package/dist/metacognition/predictions.js +181 -0
  342. package/dist/metacognition/predictions.js.map +1 -0
  343. package/dist/metacognition/retrieval.d.ts +53 -0
  344. package/dist/metacognition/retrieval.d.ts.map +1 -0
  345. package/dist/metacognition/retrieval.js +170 -0
  346. package/dist/metacognition/retrieval.js.map +1 -0
  347. package/dist/metacognition/risk.d.ts +48 -0
  348. package/dist/metacognition/risk.d.ts.map +1 -0
  349. package/dist/metacognition/risk.js +165 -0
  350. package/dist/metacognition/risk.js.map +1 -0
  351. package/dist/metacognition/route-economics.d.ts +95 -0
  352. package/dist/metacognition/route-economics.d.ts.map +1 -0
  353. package/dist/metacognition/route-economics.js +110 -0
  354. package/dist/metacognition/route-economics.js.map +1 -0
  355. package/dist/metacognition/runtime-bridge.d.ts +54 -0
  356. package/dist/metacognition/runtime-bridge.d.ts.map +1 -0
  357. package/dist/metacognition/runtime-bridge.js +140 -0
  358. package/dist/metacognition/runtime-bridge.js.map +1 -0
  359. package/dist/metacognition/skills.d.ts +42 -0
  360. package/dist/metacognition/skills.d.ts.map +1 -0
  361. package/dist/metacognition/skills.js +220 -0
  362. package/dist/metacognition/skills.js.map +1 -0
  363. package/dist/metacognition/state.d.ts +110 -0
  364. package/dist/metacognition/state.d.ts.map +1 -0
  365. package/dist/metacognition/state.js +52 -0
  366. package/dist/metacognition/state.js.map +1 -0
  367. package/dist/metacognition/validation.d.ts +19 -0
  368. package/dist/metacognition/validation.d.ts.map +1 -0
  369. package/dist/metacognition/validation.js +58 -0
  370. package/dist/metacognition/validation.js.map +1 -0
  371. package/dist/metacognition/verification.d.ts +93 -0
  372. package/dist/metacognition/verification.d.ts.map +1 -0
  373. package/dist/metacognition/verification.js +132 -0
  374. package/dist/metacognition/verification.js.map +1 -0
  375. package/dist/metacognition/verifier.d.ts +49 -0
  376. package/dist/metacognition/verifier.d.ts.map +1 -0
  377. package/dist/metacognition/verifier.js +88 -0
  378. package/dist/metacognition/verifier.js.map +1 -0
  379. package/dist/modes/acp/acp-agent.d.ts +24 -0
  380. package/dist/modes/acp/acp-agent.d.ts.map +1 -0
  381. package/dist/modes/acp/acp-agent.js +133 -0
  382. package/dist/modes/acp/acp-agent.js.map +1 -0
  383. package/dist/modes/acp/acp-mode.d.ts +4 -0
  384. package/dist/modes/acp/acp-mode.d.ts.map +1 -0
  385. package/dist/modes/acp/acp-mode.js +34 -0
  386. package/dist/modes/acp/acp-mode.js.map +1 -0
  387. package/dist/modes/acp/acp-session.d.ts +4 -0
  388. package/dist/modes/acp/acp-session.d.ts.map +1 -0
  389. package/dist/modes/acp/acp-session.js +76 -0
  390. package/dist/modes/acp/acp-session.js.map +1 -0
  391. package/dist/modes/acp/acp-transport.d.ts +5 -0
  392. package/dist/modes/acp/acp-transport.d.ts.map +1 -0
  393. package/dist/modes/acp/acp-transport.js +90 -0
  394. package/dist/modes/acp/acp-transport.js.map +1 -0
  395. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  396. package/dist/modes/interactive/interactive-mode.js +1 -0
  397. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  398. package/dist/observation/identity.d.ts +14 -0
  399. package/dist/observation/identity.d.ts.map +1 -0
  400. package/dist/observation/identity.js +29 -0
  401. package/dist/observation/identity.js.map +1 -0
  402. package/dist/observation/index.d.ts +13 -0
  403. package/dist/observation/index.d.ts.map +1 -0
  404. package/dist/observation/index.js +13 -0
  405. package/dist/observation/index.js.map +1 -0
  406. package/dist/observation/observe-mode.d.ts +46 -0
  407. package/dist/observation/observe-mode.d.ts.map +1 -0
  408. package/dist/observation/observe-mode.js +83 -0
  409. package/dist/observation/observe-mode.js.map +1 -0
  410. package/dist/observation/store.d.ts +53 -0
  411. package/dist/observation/store.d.ts.map +1 -0
  412. package/dist/observation/store.js +126 -0
  413. package/dist/observation/store.js.map +1 -0
  414. package/dist/observation/types.d.ts +72 -0
  415. package/dist/observation/types.d.ts.map +1 -0
  416. package/dist/observation/types.js +9 -0
  417. package/dist/observation/types.js.map +1 -0
  418. package/dist/observation/view.d.ts +39 -0
  419. package/dist/observation/view.d.ts.map +1 -0
  420. package/dist/observation/view.js +173 -0
  421. package/dist/observation/view.js.map +1 -0
  422. package/docs/audit-revalidation-2026-09-17.md +77 -0
  423. package/docs/devin-harness.md +33 -4
  424. package/docs/ecraf-normalization.md +83 -0
  425. package/docs/metacognition.md +51 -0
  426. package/docs/model-catalog-refresh.md +110 -1
  427. package/docs/models.md +1 -1
  428. package/docs/neo.md +134 -0
  429. package/docs/providers.md +125 -6
  430. package/docs/run-usage-ledger.md +56 -0
  431. package/docs/runtime-algorithms.md +151 -3
  432. package/docs/skills.md +1 -1
  433. package/docs/usage.md +2 -1
  434. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  435. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  436. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  437. package/examples/extensions/gondolin/package-lock.json +2 -2
  438. package/examples/extensions/gondolin/package.json +1 -1
  439. package/examples/extensions/sandbox/package-lock.json +2 -2
  440. package/examples/extensions/sandbox/package.json +1 -1
  441. package/examples/extensions/subagent/adaptive-agent-runtime.ts +14 -1
  442. package/examples/extensions/subagent/graph-result.ts +48 -0
  443. package/examples/extensions/subagent/index.ts +246 -111
  444. package/examples/extensions/subagent/managed-process-tree.ts +42 -0
  445. package/examples/extensions/subagent/managed-process.test.ts +24 -0
  446. package/examples/extensions/subagent/managed-process.ts +93 -112
  447. package/examples/extensions/subagent/subagent-runtime-types.ts +17 -1
  448. package/examples/extensions/subagent/subagent-stream.ts +161 -0
  449. package/examples/extensions/terminal-browser/README.md +54 -0
  450. package/examples/extensions/terminal-browser/bridge-protocol.ts +29 -0
  451. package/examples/extensions/terminal-browser/bridge.ts +219 -0
  452. package/examples/extensions/terminal-browser/browser-surface.ts +288 -0
  453. package/examples/extensions/terminal-browser/index.ts +215 -0
  454. package/examples/extensions/terminal-browser/placeholders.ts +49 -0
  455. package/examples/extensions/with-deps/package-lock.json +2 -2
  456. package/examples/extensions/with-deps/package.json +1 -1
  457. package/npm-shrinkwrap.json +18 -18
  458. package/package.json +8 -7
  459. package/resources/neo/skills/omk-browser/SKILL.md +32 -0
  460. package/resources/neo/skills/omk-code-review/SKILL.md +24 -0
  461. package/resources/neo/skills/omk-computeruse/SKILL.md +34 -0
  462. package/resources/neo/skills/omk-mcp-setup/SKILL.md +48 -0
  463. package/resources/neo/skills/omk-research/SKILL.md +24 -0
  464. package/resources/neo/skills/omk-site/SKILL.md +28 -0
@@ -3,6 +3,115 @@
3
3
  확인일: 2026-09-09. 생성기와 공급자 어댑터를 수정한 뒤 `npm run models:refresh`로
4
4
  두 카탈로그를 재생성했다. 생성 파일을 손으로 수정하지 않았다.
5
5
 
6
+ ## 2026-09-19 갱신: 라이브 재생성과 생성기 결함 3건 교정
7
+
8
+ `npm run models:refresh`를 종료0으로 재생성했다(전 소스 응답, `--allow-partial` 미사용,
9
+ 키 없는 Zyloo는 정적 6개 유지). 결과는 **39 providers, 1,795→1,799 모델**, 추가 4·제거 0·
10
+ 변경 22(가격 20, OpenRouter 선언 thinking 2), 이미지 카탈로그 54개 변화 없음.
11
+
12
+ 첫 재생성에서는 제거 4·변경 220이 나왔고, 그중 상류 변화가 아닌 항목이 셋이었다.
13
+ 각각 실패하는 검사를 먼저 쓰고(11개 RED) 생성기를 고친 뒤 다시 생성했다.
14
+
15
+ | 결함 | 원인 | 조치 |
16
+ | --- | --- | --- |
17
+ | `kimi-coding` 공급자 4개 전부 소실 | models.dev가 `kimi-for-coding` 키를 `kimi-code-plan-global`(api.kimi.ai)·`kimi-code-plan-cn`(api.kimi.com)으로 분리. 생성기는 옛 키만 읽어 조용히 빈 결과 | 세 키를 순서대로 조회. OMK endpoint(`api.kimi.com/coding`)·헤더·thinking 맵은 그대로. `kimi-coding-catalog.test.ts` |
18
+ | cursor 143·devin 55개 고정-노력 레인에 `xhigh/max` 추가 | 직전 커밋은 `--cursor-only`로 가족 단위 pass를 우회했지만 전체 재생성은 `applyModelMetadata`(Fable→xhigh/max, Opus 5→전체 사다리 등)를 정적 레인에도 적용 | devin/cursor 항목을 pass 이후에 붙여 fast path와 동일하게 유지. `fixed-effort-lanes.test.ts`가 정적 카탈로그와 생성 결과의 동일성을 검사 |
19
+ | OpenCode Zen `deepseek-v4.1-flash`가 구형 V4 맵(`high`, `xhigh→max`)만 받음 | V4.1 계약 보정 조건이 `opencode-go`만 인식 | [Zen 문서](https://opencode.ai/docs/zen/)가 같은 `chat/completions` gateway를 명시하므로 `opencode`도 `off/low/high/max`·`max_tokens`·`supportsReasoningEffort` 적용. `deepseek-v41-native.test.ts` route에 추가 |
20
+
21
+ 두 번째 결함은 cursor/devin 항목이 정적 카탈로그와 다르게 저장될 때 즉시 실패하므로,
22
+ 앞으로 fast path와 전체 재생성이 갈라지면 검사에서 드러난다.
23
+
24
+ ### 추가된 항목
25
+
26
+ | 공급자 | 요청 ID | thinking | 가격(1M) | 근거 |
27
+ | --- | --- | --- | --- | --- |
28
+ | `opencode` | `deepseek-v4.1-flash` | `off/low/high/max`, `thinking.type`+`reasoning_effort`, `max_tokens` | $0.30/$1.20, cache $0.006 | Zen 문서 endpoint·가격표 |
29
+ | `opencode` | `qwen3.8-flash` | Messages 예산 경로(기존 Zen Qwen과 동일) | $0.15/$0.47, cache read $0.016·write $0.20 | Zen 문서 |
30
+ | `openrouter` | `z-ai/glm-5.3-flashx` | mandatory, `low/high/max` (route 선언) | $0.37/$1.25, cache $0.075 | OpenRouter `created` 09-18 |
31
+ | `openrouter` | `prism-ml/ternary-bonsai-2-27b` | optional off, `medium/xhigh` (route 선언) | $0.075/$0.50 | OpenRouter `created` 09-18 |
32
+
33
+ ### 상류 변경(가격·선언)
34
+
35
+ - OpenCode Zen·Vercel의 `gpt-5.6-sol`은 "50% Off" 표시가 끝나 $4/$20(cache $0.40/$5)로 복귀. Vercel `gpt-5.6-sol-fast`는 $8/$40.
36
+ - OpenRouter DeepSeek 계열 인하: `deepseek-v4.1-flash` $0.15/$0.60, `deepseek-v4-pro` $0.54/$1.09, `-latest` 별칭 3개 동반 조정.
37
+ 목록 값이며 DeepSeek 직접 API의 시간대별 가격과 다르다.
38
+ - OpenRouter `moonshotai/kimi-k3`·`~moonshotai/kimi-latest` $1.70/$8.50, `z-ai/glm-5.3` $0.91/$2.86, `meta/muse-glimmer-30b` $0.35/$1.50, Nemotron 3 Ultra·3.5 Lightning 출력 상한 상향.
39
+ - `upstage/solar-pro-3`(`off/minimal~high`)·`solar-pro4`(`off/minimal~max`)가 route 선언을 얻어 thinking 맵이 생겼다.
40
+
41
+ ### 조사했으나 넣지 않은 항목
42
+
43
+ - **Amazon Bedrock Kimi K3** (09-18 GA). [모델 카드](https://docs.aws.amazon.com/bedrock/latest/userguide/model-card-moonshot-ai-kimi-k3.html)
44
+ 기준 ID `global.moonshotai.kimi-k3`(Global $3/$15, cache read $0.30·write $3.75) ·
45
+ `us.moonshotai.kimi-k3`(US $3.30/$16.50), in-region 없음, 1M context, 이미지 입력, Converse·도구·스트리밍 지원.
46
+ 같은 카드가 "Converse는 이전 턴의 reasoning content가 포함되면 `InternalServerException`"을 명시하는데,
47
+ OMK `amazon-bedrock`은 non-Claude 모델의 thinking을 `reasoningContent`로 그대로 replay한다(`convertMessages`).
48
+ 카탈로그만 넣으면 두 번째 턴부터 실패하는 경로를 광고하므로, 공급자에서 이전 턴 reasoning을 제거하는
49
+ 수정과 유료 실검증을 묶은 후속 단위로 미룬다. models.dev bedrock 목록에도 아직 없다.
50
+ - **Qwen3.8-Omni-Flash** (Alibaba, 09-18): OpenRouter·Vercel·models.dev의 tool 지원 목록에 없다. Model Studio 직접 경로는 OMK 내장 공급자가 아니다.
51
+ - **Gemini 3.8 Live / Live Extended Thinking** (09-15~16): 오디오 네이티브 경로로 코딩 카탈로그 소스에 없다.
52
+ - **GPT-6 Astra Law** (`gpt-6-astra-law`): OpenAI가 "coming soon"으로만 공지, API 미제공.
53
+ - **Union Alpha**: `stealth/union-alpha`는 09-18 갱신에서 이미 빠졌고, 정식 `unbiased/pareto`($2.50/$7.50, cache $0.25, thinking 미선언)가 HEAD에 있다. 이번 갱신에서 변화 없음.
54
+
55
+ ### 검증과 한계
56
+
57
+ 표적 vitest 13파일 **149개 통과**(신규 `fixed-effort-lanes`·`kimi-coding-catalog`, 확장한
58
+ `deepseek-v41-native` 포함), 전체 `tsgo --noEmit`, 변경 파일 Biome, module-size·import-cycles
59
+ baseline, `git diff --check` 모두 종료0. 공급자 추론, 전체 `npm run check`, build/install,
60
+ commit/push는 실행하지 않았다. 계정별 사용 가능 여부와 실제 청구액은 검증 범위 밖이다.
61
+
62
+ 변경 단위: `packages/ai/scripts/{generate-models,catalog-thinking}.ts`, 생성 카탈로그, 검사 3파일, 본 문서.
63
+ 제안 메시지: `fix(ai): 모델 카탈로그 09-19 갱신과 생성기 결함 교정 (kimi-coding 소실·고정 레인 확장·Zen V4.1 계약)`.
64
+
65
+ ## 2026-09-17 후속: OpenCode Go DeepSeek V4.1 ID 변경
66
+
67
+ [OpenCode Go 공식 endpoint 목록](https://opencode.ai/docs/go/)의 현재 ID는
68
+ `deepseek-v4.1-flash`다. 직접 DeepSeek의 `deepseek-flash`와 구분한다.
69
+ 9월 17일 카탈로그 갱신은 새 ID를 반영했지만, 생성기의 V4.1 메타데이터 보정은
70
+ 이전 ID만 인식해 `low/max`와 `max_tokens` 설정이 누락됐다.
71
+
72
+ 생성기 조건에 Go의 새 ID를 추가하고 기존 Go ID의 보정도 유지했다. 회귀 테스트는
73
+ 공급자별 실제 요청 ID를 사용하며 `off/low/high/max`, 이미지 입력, 출력 상한,
74
+ 전송 직전 `thinking`과 `reasoning_effort` 검사를 그대로 유지한다.
75
+ ID만 교체한 상태에서도 5개 실패가 재현됐으며 메타데이터 수정 후 통과했다.
76
+
77
+ `node packages/ai/scripts/generate-models.ts`로 생성한 결과 중 해당 Go 모델의
78
+ 메타데이터 변경만 포함했다. 실시간 목록에서 함께 발생한 다른 모델의 추가/삭제,
79
+ 가격/상한 변경은 이번 수정에 포함하지 않았다. 생성 파일 값을 수작업으로 만들지 않았다.
80
+ 공급자 추론이나 계정별 사용 가능 여부는 검증하지 않았다. 아래 9월 10일 표는 당시 기록이다.
81
+
82
+ ## 2026-09-17 갱신: OpenRouter Union Alpha (stealth)
83
+
84
+ `stealth/union-alpha` 추가 요청으로 `npm run models:refresh`를 종료0으로 재생성했다.
85
+ 생성 파일은 손대지 않았다. 전 소스가 응답했고 `--allow-partial`은 쓰지 않았다.
86
+
87
+ | 항목 | 값 |
88
+ | --- | --- |
89
+ | 요청 ID | `stealth/union-alpha` (OpenRouter) |
90
+ | context / maxTokens | 262,144 / 131,072 |
91
+ | 입력 | text, image |
92
+ | tool 지원 | `tools`, `tool_choice` |
93
+ | 가격 | prompt/completion 모두 `0` |
94
+ | **thinking** | **없음 — route가 `reasoning`을 선언하지 않음** |
95
+
96
+ 목록과 `/api/v1/models/stealth/union-alpha/endpoints` 모두
97
+ `supported_parameters`가 `max_tokens, temperature, top_p, tools, tool_choice,
98
+ response_format`이다. `reasoning`도 `include_reasoning`도 없다. 선언이 없으므로
99
+ 수준을 지어내지 않고 `reasoning: false`로 들어갔으며 `thinkingLevelMap`도 없다.
100
+ 이름이 frontier 계열을 연상시킨다는 이유로 effort를 이식하지 않는다.
101
+
102
+ `created`는 2026-09-16으로 직전 갱신(09-09) 이후에 생긴 항목이다. 한 모델만
103
+ 집어넣는 경로가 없어 카탈로그 전체가 8일치 드리프트를 함께 반영한다.
104
+ OpenRouter 371 → 376, 전체 추가 57 · 제거 28(고유 4)이다. 제거는
105
+ `deepseek.r1-v1:0`과 mistral `devstral-small-2` · `mistral-medium` · `pixtral-12b`로,
106
+ 갱신 소스에서 더 이상 선정되지 않았다는 뜻이며 공급자의 폐기 공지나 모든 계정의
107
+ 사용 불가를 뜻하지 않는다.
108
+
109
+ 가격 `0`은 stealth 공개 기간의 목록 값이다. 무상 사용을 보장하지 않으며 stealth
110
+ 해제 시 달라질 수 있다. 실제 청구는 계정에서 따로 확인한다.
111
+
112
+ 표적 검사 `latest-model-thinking` · `catalog-thinking` · `latest-thinking-payload`
113
+ 51개가 통과했다. 공급자 추론은 호출하지 않았다.
114
+
6
115
  ## 2026-09-10 재검증: DeepSeek V4.1 Flash 제공 경로
7
116
 
8
117
  공식 문서·공개 API에서 확인한 기존 OMK 공급자 4곳을 반영했다.
@@ -114,7 +223,7 @@ OpenRouter의 `reasoning.supported_efforts`로 표시할 수준을 만들고,
114
223
 
115
224
  | 모델·route | 이번 정합성 규칙 |
116
225
  | --- | --- |
117
- | GPT-6 Astra, OpenAI/Responses 및 OpenRouter | low·medium·high·xhigh·max. off/minimal 미노출 |
226
+ | GPT-6 Astra, OpenAI/Responses 및 OpenRouter | low·medium·high·xhigh·max. OMK `ultra`는 공식 천장 `max`의 선택기 별칭이며 와이어에 `ultra`를 보내지 않음. off/minimal 미노출 |
118
227
  | Claude Opus 5, Anthropic Messages | adaptive thinking, low·medium·high·xhigh·max. off는 high 이하에서 가능 |
119
228
  | Claude Opus 5, Bedrock | legacy budget 대신 adaptive 및 xhigh 사용. application profile의 표시명 매칭 보존 |
120
229
  | Gemini 3.7/3.8 Flash, Google/Vertex | low·medium·high. minimal은 API 오류. SDK의 off 요청도 LOW로 처리하며 완전 비활성화로 주장하지 않음 |
package/docs/models.md CHANGED
@@ -233,7 +233,7 @@ Current behavior:
233
233
 
234
234
  ### Thinking Level Map
235
235
 
236
- Use `thinkingLevelMap` on a model to describe model-specific thinking controls. `models.json` accepts `off`, `minimal`, `low`, `medium`, `high`, `xhigh`, and `max`. Built-in metadata can also expose the `ultra` CLI tier, but the current `models.json` schema has no `ultra` key.
236
+ Use `thinkingLevelMap` on a model to describe model-specific thinking controls. `models.json` accepts `off`, `minimal`, `low`, `medium`, `high`, `xhigh`, and `max`. Built-in metadata can also expose the `ultra` CLI tier (GPT-6 Astra maps it to documented `max`; GPT-5.6 Sol/Terra/MoA on Codex map it to backend `xhigh`), but the current `models.json` schema has no `ultra` key.
237
237
 
238
238
  | Value | Meaning |
239
239
  | --- | --- |
package/docs/neo.md ADDED
@@ -0,0 +1,134 @@
1
+ # Neo public skills and computer-use setup
2
+
3
+ Status: locally integrated and built on 2026-09-17, not a published release. Neo names the public computer-use workflow in this change; it is not a new model or an independent agent runtime.
4
+
5
+ ## What changes
6
+
7
+ The normal `DefaultResourceLoader` now reads six publicly authored skills from `resources/neo/skills` inside the installed package. No private agent-home content is copied. Explicit, project and user skills retain ownership of matching names; bundled skills fill only missing names. `noSkills` disables automatic bundled loading while preserving explicitly supplied skills, and `OMK_BUNDLED_SKILLS=0` disables just the bundled set. Skill overrides continue to run after resource loading.
8
+
9
+ Both the npm package allowlist and the two binary asset paths include the same `resources` tree. Files remain inside the installation; startup does not write skills into the user's home. A missing bundle produces a loader diagnostic, and `omk neo list` returns a nonzero exit code if one of its required skill files is missing.
10
+
11
+ | Default skill | Purpose |
12
+ | --- | --- |
13
+ | `omk-computeruse` | Neo target/capability routing and observe, act, verify workflow |
14
+ | `omk-browser` | DOM/accessibility interaction, bounded retries and side-effect approval |
15
+ | `omk-site` | Existing-project site implementation, preview and responsive validation |
16
+ | `omk-research` | Version-aware primary documentation and evidence handling |
17
+ | `omk-code-review` | Minimal changes, real regression checks and live-call-path review |
18
+ | `omk-mcp-setup` | Inventory, configuration preview, explicit setup and health verification |
19
+
20
+ These instructions are available independently of the selected model family. Tool calling must actually work. Image interpretation additionally requires compatible model and provider input support. Text-only models should use DOM/accessibility observations. This change does not establish Astra-equivalent performance, add a native desktop driver, or turn an incapable model into a computer-use model.
21
+
22
+ ## Skills and MCPs are different products
23
+
24
+ | Quantity | Meaning |
25
+ | --- | --- |
26
+ | Packaged skill | Instruction file is present in the installation |
27
+ | Loaded skill | Resource loader admitted the file after overrides and disable settings |
28
+ | Offered MCP | Public configuration preset is available |
29
+ | Configured MCP | User selected a server in a configuration file |
30
+ | Connected MCP | The running process completed its connection/handshake |
31
+ | Verified tool | A discovered tool succeeded against the intended target |
32
+
33
+ `omk neo list` reports packaged files and offered presets. It deliberately returns `connected: null` and `connectionStatus: "not_probed"`; it does not manufacture a nonzero MCP connection count. The normal session MCP status remains the connection authority.
34
+
35
+ ## Curated MCP choices
36
+
37
+ | Preset | Distribution | Activation | Scope |
38
+ | --- | --- | --- | --- |
39
+ | `playwright` | Pinned stdio recipe for `@playwright/mcp@0.0.81` | Explicit user setup | Browser actions and accessibility snapshots; compatible browser required |
40
+ | `context7` | Pinned stdio recipe for `@upstash/context7-mcp@4.1.1` | Explicit user setup | External technical documentation queries |
41
+ | Native CUA/desktop driver | Not installed or configured by this change | Separate reviewed setup | Host permissions and host identity must be verified |
42
+ | Chrome personal-profile attachment | Not enabled by default | Separate explicit session approval | May expose existing authenticated state |
43
+ | Stagehand and Browserbase cloud | Not installed or configured by this change | Separate dependency, credentials and cost approval | Optional local library or cloud browser |
44
+ | Account-connected repository/services | Not configured by this change | Per-user authentication and scope approval | No publisher credential is shared |
45
+
46
+ The recipes pin the direct package version, not an entire third-party transitive dependency graph. They do not bundle executables or browser binaries. Installation and tool behavior still need to be tested on the target platform. No remote HTTP URL is advertised as directly loadable by the current stdio-only OMK loader.
47
+
48
+ ## Commands
49
+
50
+ ```bash
51
+ omk neo list
52
+ omk neo setup playwright context7
53
+ omk neo mcp-config playwright context7
54
+ ```
55
+
56
+ All three are local and do not start a process, download a server or connect a browser. `setup` without `--apply` is a dry run. `mcp-config` emits disabled entries only. Existing configuration is never printed.
57
+
58
+ After approving the exact target and the server execution/network effects:
59
+
60
+ ```bash
61
+ # Project-local, in the intended project directory:
62
+ omk neo setup playwright context7 --apply
63
+
64
+ # Alternative: explicitly select the global configuration target:
65
+ omk neo setup playwright context7 --global --apply
66
+ ```
67
+
68
+ Project target: `<cwd>/.omk/mcp.json`. Global target: `~/.omk/mcp.json`, not `~/.omk/agent/mcp.json`. On the next ordinary OMK startup `npx` may download and execute the selected pinned servers. The command itself only creates configuration and reports `configured_not_connected`. A project entry can override a global entry with the same server name.
69
+
70
+ Setup is intentionally no-overwrite. It validates all presets before filesystem changes, writes a complete temporary file with mode `0600` and publishes it through an atomic no-replace hard link. An existing target, including malformed data or a symlink, is preserved. A symlinked `.omk` directory is rejected. Filesystems that do not support hard links fail closed. This is not a defense against a hostile process concurrently replacing an ancestor directory; use a trusted user-owned configuration location. Windows ACL and power-loss durability guarantees are outside this implementation.
71
+
72
+ For an existing configuration, generate disabled entries with `mcp-config`, then review a manual merge without exposing secrets. Do not replace the file to work around the refusal. This change does not alter legacy MCP config precedence or overwrite any account settings.
73
+
74
+ ## Browser safety and capability
75
+
76
+ The Playwright recipe requests `--headless --isolated --sandbox` and bounded action/navigation timeouts. It does not attach to a personal browser, disable TLS checks or request unrestricted file access. The upstream Linux bundled-browser default can disable its sandbox; the explicit positive flag is therefore intentional. A sandbox launch failure must be diagnosed rather than bypassed.
77
+
78
+ Profile isolation is not OS or network isolation. Origin allowlists are not complete redirect or SSRF boundaries. Operator-managed process/network isolation is required for stronger threat models. The workflow rejects instruction authority from pages, tool output and server descriptions. Skills guide the model; they do not independently enforce every permission boundary in the runtime.
79
+
80
+ After configuration, restart the intended OMK process, inspect the actual connection status and tool roster, and perform a read-only health check. Then use an observation before each action and verify the final requested state. A timeout is not permission to repeat a non-idempotent operation. Native desktop, paid cloud and private-account actions remain separate opt-ins.
81
+
82
+ ## Verification and release gates
83
+
84
+ Harness impact: `advance` for distributable capability discovery; `preserve` for existing skill precedence, disable behavior and configuration ownership. Baseline is `739bc6f3b6fe1c89bfe058aad7ec17ad252fb10e` (`0.99.0`).
85
+
86
+ Acceptance: six valid files in the npm and each platform bundle; six default skills in an empty agent/project environment; zero writes on list/dry run; byte-identical preservation of existing MCP config; no false connected count. No performance superiority claim is made.
87
+
88
+ ```bash
89
+ node --experimental-strip-types --test scripts/test/neo-distribution.test.mjs
90
+ cd packages/coding-agent
91
+ node ../../node_modules/vitest/dist/cli.js --run test/neo-distribution.test.ts
92
+ cd ../..
93
+ npm run check
94
+ npm run build
95
+ ```
96
+
97
+ The Node test covers actual catalog/CLI/setup functions, file preservation, symlinks and asset inclusion declarations. The Vitest test additionally exercises the real skill loader and `DefaultResourceLoader`; it requires the repository dependencies and a buildable base. Source inspection of binary copy commands is not a built-binary smoke test. Each final archive must be extracted and `omk neo list` checked before release.
98
+
99
+ Before publishing, run the targeted tests and complete repository gates, verify a clean npm install and real MCP/browser smoke tests, then follow the existing lockstep release procedure. A green test for a leaf module cannot override a failed monorepo build. Do not tag/publish this candidate until all release surfaces agree and blockers are resolved.
100
+
101
+ ## Local installation verification, 2026-09-17
102
+
103
+ Integrated the candidate onto `887152bc5d`. `npm run build` and `tsgo --noEmit`
104
+ passed. Standalone source tests passed 13 checks; Neo, resource-loader and SDK skill
105
+ Vitest suites passed 39 tests. The Neo fixture isolates HOME and the agent directory
106
+ so personal skills cannot contaminate its six-skill assertion.
107
+
108
+ The existing local launcher resolves this checkout's `dist/cli.js`; its `neo list`
109
+ reported all six packaged skills. The built resource loader also selected six skills
110
+ in a clean environment. `npm pack --ignore-scripts --dry-run --json` included all six.
111
+ Run `node --test scripts/test/neo-built-cli.test.mjs` after building for subprocess
112
+ checks of list, write-free preview, apply and no-replace behavior.
113
+
114
+ No live MCP configuration was created or overwritten. The existing Playwright
115
+ connection answered a tab-list request and opened/closed a task-owned blank tab;
116
+ this does not verify the candidate preset's browser or sandbox flags. Existing
117
+ Context7 returned an invalid API-key error, so documentation retrieval is blocked.
118
+ No credentials were changed and no native desktop driver was installed.
119
+
120
+ Full `npm run check` stopped at pre-existing module-size failures in `agent-session.ts`
121
+ and `model-registry.ts`. The documentation link guard also rejects the new untracked
122
+ `neo.md` until it is included in Git; no files were staged to bypass that gate.
123
+ Release-surface and shrinkwrap checks passed. Platform archives, clean dependency
124
+ installation, all-suite tests and published release verification remain unrun.
125
+ Restart OMK to load rebuilt code; changing source does not update an active process.
126
+
127
+ ## Primary source check, 2026-09-16
128
+
129
+ - Playwright MCP release `v0.0.81`: https://github.com/microsoft/playwright-mcp/releases/tag/v0.0.81
130
+ - Exact documented flags: https://github.com/microsoft/playwright-mcp/blob/v0.0.81/README.md
131
+ - Context7 release `@upstash/context7-mcp@4.1.1`: https://github.com/upstash/context7/releases/tag/%40upstash/context7-mcp%404.1.1
132
+ - Context7 stdio CLI: https://github.com/upstash/context7/blob/master/packages/mcp/src/index.ts
133
+
134
+ Upstream source/release inspection is not an installed-server integration test. Credentials, provider quality and target-host permissions are not verified by this document.
package/docs/providers.md CHANGED
@@ -25,7 +25,7 @@ Run `/login` and choose a configured subscription provider to open its account p
25
25
 
26
26
  Use `/logout` to clear all stored accounts for a provider. Tokens are stored in `~/.omk/agent/auth.json` and auto-refresh when expired.
27
27
 
28
- When the status sidebar is pinned, its **USAGE** section lists every configured subscription provider, with the active provider first. OMK reads quota windows from fixed provider endpoints for Codex, Claude, Kimi Code, GLM/ZAI Coding Plan, and native xAI SuperGrok, caches the result, and displays each percentage and reset countdown separately. Claude also passively merges the official `anthropic-ratelimit-unified-*` response headers used by Claude Code. If Anthropic's usage endpoint is rate limited and no complete recent snapshot exists, OMK mirrors Claude Code's own startup quota check with one fixed-endpoint Haiku request capped at one output token, no more than once per OAuth credential per hour. This fallback consumes a small amount of Claude plan quota.
28
+ When the status sidebar is pinned, its **USAGE** section lists every configured subscription provider, with the active provider first. OMK reads quota windows from fixed provider endpoints for Codex, Claude, Kimi Code, GLM/ZAI Coding Plan, native xAI SuperGrok, Devin CLI, and Command Code, caches the result, and displays each percentage and reset countdown separately. Claude also passively merges the official `anthropic-ratelimit-unified-*` response headers used by Claude Code. If Anthropic's usage endpoint is rate limited and no complete recent snapshot exists, OMK mirrors Claude Code's own startup quota check with one fixed-endpoint Haiku request capped at one output token, no more than once per OAuth credential per hour. This fallback consumes a small amount of Claude plan quota.
29
29
 
30
30
  Codex streaming passively merges `x-codex-primary-*`, `x-codex-secondary-*`, and `codex.rate_limits` signals through the non-blocking `StreamOptions.onRateLimit` observer. These signals supplement missing polling windows only when the Codex service returns them; OMK does not infer a missing 5-hour value from a 7-day value.
31
31
 
@@ -33,6 +33,8 @@ Alibaba Model Studio Token Plan is recognized as **QWEN TOKEN PLAN** and reads i
33
33
 
34
34
  With a stored native `xai` OAuth credential, OMK reads `GET https://cli-chat-proxy.grok.com/v1/billing?format=credits` and shows the weekly SuperGrok pool from `config.creditUsagePercent` plus its reset from `config.currentPeriod.end`. `XAI_API_KEY` is a separate API-billing credential and does not authorize this subscription endpoint.
35
35
 
36
+ With a configured `commandcode` API key (`models.json` or auth storage), OMK reads `GET https://api.commandcode.ai/alpha/whoami`, then `/alpha/billing/credits`, `/alpha/billing/subscriptions`, and `/alpha/usage/summary` on that same origin. The rail shows the 5-hour and weekly credit windows plus the monthly pool (`spent / remaining+spent`) and the plan name. OMK never sends the key anywhere except `api.commandcode.ai`, never reads browser cookies, and does not scrape Studio.
37
+
36
38
  ### Model Studio DeepSeek V4
37
39
 
38
40
  Model Studio uses `enable_thinking`, including for DeepSeek. OMK's Chat Completions
@@ -83,6 +85,19 @@ Your account's model access and quota still apply. For presets, effort guidance,
83
85
  the 1M-token context budget, and the `devin-harness` loadout, see the
84
86
  [Devin SWE-2 harness](devin-harness.md).
85
87
 
88
+ The `devin` catalog also carries every other lane `GetCliModelConfigs`
89
+ advertises — each wire UID is its own logical model (`claude-opus-5-high`,
90
+ `gpt-5-6-sol-xhigh`, `gemini-3-8-flash-medium`, `kimi-k3-max`, `glm-5-3-high`,
91
+ `grok-4-6-xhigh`, `deepseek-v4-pro-max`, `swe-1-7`, `inkling-max`, …). Flat
92
+ models pin their declared effort lane, so `/think` is fixed per model; entries
93
+ whose lane is a no-thinking variant report `reasoning: false`. Availability is
94
+ account- and plan-dependent: a lane absent from your catalog fails loudly
95
+ instead of being remapped. Image input is still text-only at the adapter.
96
+
97
+ ```bash
98
+ omk --provider devin --model claude-opus-5-high
99
+ ```
100
+
86
101
  **Authentication.** OMK uses the CLI's PKCE flow at
87
102
  `app.devin.ai/auth/cli/continue` and `api.devin.ai/auth/cli/token`. Its callback
88
103
  binds only to `127.0.0.1:59653`, validates state, and closes after success,
@@ -99,10 +114,12 @@ Devin agent, read browser cookies, or import another application's credentials.
99
114
 
100
115
  **Transport and limits.** The Node-only `devin-agent` adapter uses Connect/protobuf
101
116
  at the fixed HTTPS origin `https://server.codeium.com`. It exchanges the session
102
- token for a user JWT and reads `GetCliModelConfigs` before each turn. The server's
103
- SWE-2 family metadata supplies the effort's exact wire UID; OMK never invents a
104
- `swe-2-max` ID or downgrades an unavailable route. Disabled, internal, ambiguous,
105
- and fast-lane entries are excluded. The family's separate 1M-context entries form
117
+ token for a user JWT and reads `GetCliModelConfigs` before each turn. The logical
118
+ `swe-2` model resolves its effort through the server's SWE-2 family metadata;
119
+ every other catalog model resolves by its own wire UID. OMK never invents a
120
+ `swe-2-max` ID or downgrades an unavailable route. Disabled, internal, and
121
+ ambiguous entries are excluded; fast-lane entries match only when their own UID
122
+ is selected. The family's separate 1M-context entries form
106
123
  a second lane that is selected only when the model's local `contextWindow` is
107
124
  1,000,000 or more (the bundled default); a smaller budget uses the standard lane.
108
125
 
@@ -139,9 +156,49 @@ and the [official manifest](https://static.devin.ai/cli/current/manifest.json)
139
156
  (observed identity `3000.10.21`). Protocol fields follow the third-party
140
157
  [oh-my-pi snapshot](https://github.com/can1357/oh-my-pi/blob/942383f768c5f2f6a620fcab57326c0f59df623a/packages/catalog/src/discovery/devin-proto.ts),
141
158
  not a stable public inference contract; attribution is in `packages/ai/DEVIN-NOTICE`.
142
- Regenerate only this logical model, preserving every other catalog entry, with
159
+ Regenerate only the Devin models, preserving every other catalog entry, with
143
160
  `npm --prefix packages/ai run generate-models -- --devin-only`.
144
161
 
162
+ ### Cursor
163
+
164
+ Run `/login cursor` (PKCE + polling against `cursor.com`/`api2.cursor.sh`), then
165
+ select a `cursor/*` model. `cursor/default` is the Auto router; sibling slugs
166
+ carry their effort and lane (`-low|medium|high|xhigh|max`, `-thinking-*`,
167
+ `-fast`) in the id, mirroring the CLI's flat list. `CURSOR_API_KEY` accepts an
168
+ already-owned access token instead of the OAuth flow.
169
+
170
+ ```bash
171
+ omk --provider cursor --model default
172
+ ```
173
+
174
+ **Transport and limits.** The Node-only `cursor-agent` adapter runs the
175
+ `agent.v1.AgentService/Run` bidirectional RPC over HTTP/2 at `api2.cursor.sh`
176
+ with Connect-framed protobuf. Each `stream()` call is one `Run`:
177
+ `userMessageAction` for a fresh user turn or `resumeAction` otherwise; history
178
+ is replayed through `conversationState.rootPromptMessagesJson` — SHA256-keyed
179
+ JSON message blobs the server fetches back via the kv channel — and system
180
+ prompts ride `requestContext.rules` in the exec handshake. For OpenAI-family
181
+ sibling slugs the adapter splits the effort into a `reasoning` request
182
+ parameter because the Run endpoint rejects sibling `model_id`s; other ids pass
183
+ through whole. `tokenDelta` frames accumulate output usage; plan-specific
184
+ model availability is enforced server-side (free plans serve Auto only).
185
+
186
+ Text, thinking, and reported usage enter the normal OMK agent loop; images
187
+ attach through `selectedContext.selectedImages`. Server exec frames that ask
188
+ the client to run tools are answered with the protocol's `throw` failure
189
+ channel — OMK tools are deliberately not advertised inside the provider, so a
190
+ cursor model reports the capability gap instead of bypassing tool governance.
191
+ Wiring exec frames through governed OMK tools is a coding-agent bridge
192
+ feature, not provider scope. Hosted search/fetch permission queries are
193
+ approved; interactive ones are rejected.
194
+
195
+ The bundled catalog was captured from `GetUsableModels` (2026-09-18; 223
196
+ entries). Regenerate only the Cursor section with
197
+ `npm --prefix packages/ai run generate-models -- --cursor-only`. Protocol
198
+ fields follow the same third-party snapshot attribution as the Devin adapter.
199
+ Live login, plan gating, and quota behavior remain account-dependent; the
200
+ adapter is covered by loopback HTTP/2 protocol tests.
201
+
145
202
  ### OpenAI Codex
146
203
 
147
204
  - Requires ChatGPT Plus or Pro subscription
@@ -153,6 +210,14 @@ Regenerate only this logical model, preserving every other catalog entry, with
153
210
  omk --provider openai-codex --model gpt-5.6-moa --thinking ultra
154
211
  ```
155
212
 
213
+ ### GPT-6 Astra
214
+
215
+ OpenAI-shaped Astra routes (`openai`, `azure-openai-responses`, `opencode`, `github-copilot`, OpenRouter) expose OMK `ultra` in the selector and send `reasoning.effort: "max"`. Official Astra effort values remain `low`, `medium`, `high`, `xhigh`, and `max`; there is no native `ultra` wire value. ChatGPT/Codex account catalogs may still reject `gpt-6-astra`.
216
+
217
+ ```bash
218
+ omk --provider openai --model gpt-6-astra --thinking ultra
219
+ ```
220
+
156
221
  ### Claude Pro/Max
157
222
 
158
223
  Anthropic subscription auth is active for Claude Pro/Max accounts. Third-party harness usage draws from [extra usage](https://claude.ai/settings/usage) and is billed per token, not against Claude plan limits.
@@ -187,6 +252,7 @@ omk
187
252
  | OpenAI | `OPENAI_API_KEY` | `openai` |
188
253
  | DeepSeek | `DEEPSEEK_API_KEY` | `deepseek` |
189
254
  | Devin CLI session token | `DEVIN_API_KEY` | `devin` |
255
+ | Cursor subscription | `CURSOR_API_KEY` | `cursor` |
190
256
  | NVIDIA NIM | `NVIDIA_API_KEY` | `nvidia` |
191
257
  | Google Gemini | `GEMINI_API_KEY` | `google` |
192
258
  | Mistral | `MISTRAL_API_KEY` | `mistral` |
@@ -205,6 +271,7 @@ omk
205
271
  | Fireworks | `FIREWORKS_API_KEY` | `fireworks` |
206
272
  | Together AI | `TOGETHER_API_KEY` | `together` |
207
273
  | Kimi For Coding | `KIMI_API_KEY` | `kimi-coding` |
274
+ | WorkBuddy (CodeBuddy) | `WORKBUDDY_API_KEY` | `workbuddy` |
208
275
  | Meta Model API | `META_API_KEY` (or `META_MODEL_API_KEY`, `MODEL_API_KEY`) | `meta` |
209
276
  | MiniMax | `MINIMAX_API_KEY` | `minimax` |
210
277
  | MiniMax (China) | `MINIMAX_CN_API_KEY` | `minimax-cn` |
@@ -216,6 +283,58 @@ omk
216
283
 
217
284
  Reference for environment variables and `auth.json` keys: [`const envMap`](https://github.com/dmae97/omk/blob/main/packages/ai/src/env-api-keys.ts) in [`packages/ai/src/env-api-keys.ts`](https://github.com/dmae97/omk/blob/main/packages/ai/src/env-api-keys.ts).
218
285
 
286
+ #### WorkBuddy (Tencent CodeBuddy)
287
+
288
+ The cloud inference behind Tencent's CodeBuddy / WorkBuddy agents. Plan keys start
289
+ with `ck_` and are issued by the CodeBuddy login flow:
290
+
291
+ ```bash
292
+ export WORKBUDDY_API_KEY=ck_...
293
+ omk --provider workbuddy --model glm-5.3
294
+ ```
295
+
296
+ Endpoint and limits, verified against the live service on 2026-09-19:
297
+
298
+ - Chat requests go to `https://www.workbuddy.ai/v2/chat/completions` and must
299
+ stream; a non-streaming request is rejected. The same key is accepted by
300
+ `www.codebuddy.ai`, not by the `*.cn` hosts.
301
+ - The first message must be a `system` message. OMK sends the system prompt in
302
+ that position and prepends an empty one when a session has no system prompt.
303
+ - `max_tokens` carries the output cap; `max_completion_tokens` is ignored
304
+ upstream.
305
+ - Images are sent as data URIs, which is the only form the endpoint accepts.
306
+ - Thinking levels expose only the effort values the provider declares for that
307
+ model (`glm-5.3`: low/high/max, `glm-5.2`: high/xhigh, `gpt-5.6-*`:
308
+ low/medium/high/xhigh, …). The endpoint accepts `reasoning_effort`, but its
309
+ effect on reasoning volume is not verified, and no `off` value is offered
310
+ because none was verified. Thinking can therefore not be disabled per request.
311
+ - Model entitlement is per plan: the built-in catalog lists the 27 lanes verified
312
+ for one account, including eight the CLI's bundled product JSON never declares
313
+ (`claude-opus-5`, `claude-opus-4.6`, `claude-sonnet-4.6`,
314
+ `deepseek-v4.1-flash`, `gemini-3.8-flash`, `gpt-6-astra`, `grok-4.6`,
315
+ `hy4-preview`) which a cross-sweep of this repository's own model ids found.
316
+ `glm-5.0` answered `429` while its siblings answered `200`, so it is not
317
+ listed; the CLI's role aliases (`fast-model`, `balanced-model`,
318
+ `primary-model`, `deep-model`) resolve server-side to targets this catalog
319
+ cannot declare and are not listed either.
320
+ - Billing is metered in the provider's own credit unit, which OMK reports as
321
+ zero cost rather than inventing a USD rate. Measured per-call charges on one
322
+ account (small prompts): `claude-opus-5` 0.26, `claude-opus-4.6` 0.20,
323
+ `claude-sonnet-4.6` 0.12, `grok-4.6` 0.06–0.08, `gpt-5.6-sol` 0.04,
324
+ `gemini-3.8-flash` 0.02–0.06, `glm-5.3` 0.01, and 0 credits on `hy3`,
325
+ `deepseek-v3-0324`, `deepseek-v4.1-flash`, `glm-5.2`, `kimi-k2.5/k2.6` and
326
+ `minimax-m3`. A charge scales with tokens, so these are magnitudes, not
327
+ tariffs.
328
+ - Plan allowances (provider documentation, 2026-09-19): Free 100 credits/month,
329
+ Pro $10/month or $96/year for 2,000 credits/month, plus a limited-time
330
+ activity bonus of 30 credits/day on Free and 50/day on Pro. Credits are issued
331
+ monthly, do not carry over, and new accounts get 250 credits valid for 14 days;
332
+ Pro has a 7-day trial of 500 credits. Check the provider console for the
333
+ account's own balance: at the measured rates, the Free plan's 100 credits is
334
+ roughly 380 calls at `claude-opus-5` size, ~830 at `claude-sonnet-4.6`, and
335
+ 1,600-5,000 at `gemini-3.8-flash`, while the 0-credit lanes above did not draw
336
+ on the allowance at all in these probes.
337
+
219
338
  #### NVIDIA NIM
220
339
 
221
340
  Set `NVIDIA_API_KEY` and select a currently listed NVIDIA model with `/model`.
@@ -0,0 +1,56 @@
1
+ # Run usage ledger
2
+
3
+ Status: implemented as an in-memory accounting module and explicit operation adapter.
4
+ Not automatically connected to AgentSession, provider HTTP retries, MCP, or child CLI.
5
+ Existing `RunBudget` request/concurrency/deadline behavior is unchanged.
6
+
7
+ Source: `src/core/run-usage-ledger.ts` and `src/core/run-usage-operation.ts`.
8
+
9
+ ## Contract
10
+
11
+ - `reserve(attemptId, requestId, reservation)` admits an operation only when reported
12
+ consumption + held reservation + proposed reservation fits each supplied cap.
13
+ Retry attempts may share a logical request ID. IDs cannot be reused for attempts.
14
+ - `recordTransport(transportId, attemptId)` records a transport start observed by the
15
+ caller. An application dispatch does not automatically count as an HTTP attempt.
16
+ - `recordUsage(eventId, attemptId, usage)` accepts one cumulative report per attempt.
17
+ Identical redelivery is idempotent; changed payloads and second reports are rejected.
18
+ Reports arriving after settlement or closure still bind to the original attempt.
19
+ - `settle(attemptId)` requires observed operation settlement, not a cancellation request.
20
+ Unknown usage retains its reservation after settlement and blocks new capped admission.
21
+ - `close()` seals admission and transport starts but retains ownership and reservations.
22
+ - Snapshots distinguish the accounted subtotal from `total: null` when usage is missing.
23
+ `estimatedUsd` is an estimate in USD, never invoice-confirmed spending. Token figures
24
+ are caller-normalized reports; the ledger cannot detect provider zero-filled missing usage.
25
+ - Counts and amounts reject negative, non-finite and unsafe arithmetic. Maps are bounded
26
+ by `maxEntries` (default 10,000); there is no automatic eviction of deduplication state.
27
+
28
+ `runUsageOperation` reserves before invoking the callback and settles in `finally`.
29
+ The adapter captures the admitted attempt ID before invoking the callback, so later
30
+ input mutation cannot redirect settlement. Usage reporters must still supply the correct
31
+ attempt ID themselves. The callback promise must represent the operation lifetime. Do not pass a timeout race
32
+ that returns before the underlying work settles. No AbortSignal is treated as proof
33
+ of termination. Failed operations still count as requests/attempts.
34
+
35
+ ## Verification and limits
36
+
37
+ From `packages/coding-agent`:
38
+
39
+ ```sh
40
+ node ../../node_modules/vitest/dist/cli.js run test/run-usage-ledger.test.ts test/run-usage-ownership.test.ts test/run-budget.test.ts test/run-budget-scope.test.ts
41
+ ```
42
+
43
+ The local fixture records main work with two transport retries, continuation, summary,
44
+ and child-labelled work: four logical requests, six transports, eight input tokens.
45
+ These are explicit local adapter events, not real provider, process, or billing evidence.
46
+ Tests cover 6 consumed + 3 reserved + 2 proposed against cap 10, delayed settlement,
47
+ late usage, duplicate/conflicting events, missing usage, bounded input/state, and the
48
+ ownership boundary: denied admission never runs the operation, cancellation retains
49
+ the reservation until observed settlement, and settlement attribution survives caller
50
+ input mutation.
51
+
52
+ No durable replay/restart support, price-table revision binding, invoice corrections,
53
+ work/verification/cleanup partitioning, or automatic whole-run transport instrumentation
54
+ is provided. Actual usage can exceed its reservation: it is recorded honestly and blocks
55
+ later capped admissions rather than being clipped. This is not a hard financial limit.
56
+ R08 end-to-end product integration remains incomplete.