open-multi-agent-kit 0.80.7 → 0.80.8

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 (1470) hide show
  1. package/CHANGELOG.md +4 -30
  2. package/README.md +80 -38
  3. package/dist/agents/jailbreak/index.d.ts +7 -0
  4. package/dist/agents/jailbreak/index.d.ts.map +1 -0
  5. package/dist/agents/jailbreak/index.js +7 -0
  6. package/dist/agents/jailbreak/index.js.map +1 -0
  7. package/dist/agents/jailbreak/subagent-f.d.ts +44 -0
  8. package/dist/agents/jailbreak/subagent-f.d.ts.map +1 -0
  9. package/dist/agents/jailbreak/subagent-f.js +60 -0
  10. package/dist/agents/jailbreak/subagent-f.js.map +1 -0
  11. package/dist/bun/register-bedrock.d.ts.map +1 -1
  12. package/dist/bun/register-bedrock.js +2 -2
  13. package/dist/bun/register-bedrock.js.map +1 -1
  14. package/dist/ci/verify-reporter.d.ts +22 -0
  15. package/dist/ci/verify-reporter.d.ts.map +1 -0
  16. package/dist/ci/verify-reporter.js +50 -0
  17. package/dist/ci/verify-reporter.js.map +1 -0
  18. package/dist/cli/args.d.ts +4 -1
  19. package/dist/cli/args.d.ts.map +1 -1
  20. package/dist/cli/args.js +7 -0
  21. package/dist/cli/args.js.map +1 -1
  22. package/dist/cli/config-selector.d.ts.map +1 -1
  23. package/dist/cli/config-selector.js +1 -1
  24. package/dist/cli/config-selector.js.map +1 -1
  25. package/dist/cli/file-processor.d.ts +1 -1
  26. package/dist/cli/file-processor.d.ts.map +1 -1
  27. package/dist/cli/file-processor.js.map +1 -1
  28. package/dist/cli/initial-message.d.ts +1 -1
  29. package/dist/cli/initial-message.d.ts.map +1 -1
  30. package/dist/cli/initial-message.js.map +1 -1
  31. package/dist/cli/jailbreak-args.d.ts +26 -0
  32. package/dist/cli/jailbreak-args.d.ts.map +1 -0
  33. package/dist/cli/jailbreak-args.js +86 -0
  34. package/dist/cli/jailbreak-args.js.map +1 -0
  35. package/dist/cli/list-models.d.ts.map +1 -1
  36. package/dist/cli/list-models.js +1 -1
  37. package/dist/cli/list-models.js.map +1 -1
  38. package/dist/cli/session-picker.d.ts.map +1 -1
  39. package/dist/cli/session-picker.js +1 -1
  40. package/dist/cli/session-picker.js.map +1 -1
  41. package/dist/commands/doctor-provider.d.ts +19 -0
  42. package/dist/commands/doctor-provider.d.ts.map +1 -0
  43. package/dist/commands/doctor-provider.js +123 -0
  44. package/dist/commands/doctor-provider.js.map +1 -0
  45. package/dist/commands/jailbreak.d.ts +49 -0
  46. package/dist/commands/jailbreak.d.ts.map +1 -0
  47. package/dist/commands/jailbreak.js +201 -0
  48. package/dist/commands/jailbreak.js.map +1 -0
  49. package/dist/config.d.ts +9 -5
  50. package/dist/config.d.ts.map +1 -1
  51. package/dist/config.js +33 -52
  52. package/dist/config.js.map +1 -1
  53. package/dist/core/agent-session-services.d.ts +2 -2
  54. package/dist/core/agent-session-services.d.ts.map +1 -1
  55. package/dist/core/agent-session-services.js.map +1 -1
  56. package/dist/core/agent-session.d.ts +16 -27
  57. package/dist/core/agent-session.d.ts.map +1 -1
  58. package/dist/core/agent-session.js +185 -89
  59. package/dist/core/agent-session.js.map +1 -1
  60. package/dist/core/auth-storage.d.ts +3 -6
  61. package/dist/core/auth-storage.d.ts.map +1 -1
  62. package/dist/core/auth-storage.js +7 -7
  63. package/dist/core/auth-storage.js.map +1 -1
  64. package/dist/core/bash-executor.d.ts +1 -0
  65. package/dist/core/bash-executor.d.ts.map +1 -1
  66. package/dist/core/bash-executor.js +1 -0
  67. package/dist/core/bash-executor.js.map +1 -1
  68. package/dist/core/browser-use.d.ts +45 -0
  69. package/dist/core/browser-use.d.ts.map +1 -0
  70. package/dist/core/browser-use.js +70 -0
  71. package/dist/core/browser-use.js.map +1 -0
  72. package/dist/core/command-safety-parser.d.ts +77 -0
  73. package/dist/core/command-safety-parser.d.ts.map +1 -0
  74. package/dist/core/command-safety-parser.js +763 -0
  75. package/dist/core/command-safety-parser.js.map +1 -0
  76. package/dist/core/command-safety.d.ts.map +1 -1
  77. package/dist/core/command-safety.js +106 -3
  78. package/dist/core/command-safety.js.map +1 -1
  79. package/dist/core/compaction/branch-summarization.d.ts +2 -2
  80. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  81. package/dist/core/compaction/branch-summarization.js +5 -21
  82. package/dist/core/compaction/branch-summarization.js.map +1 -1
  83. package/dist/core/compaction/compaction.d.ts +3 -101
  84. package/dist/core/compaction/compaction.d.ts.map +1 -1
  85. package/dist/core/compaction/compaction.js +21 -656
  86. package/dist/core/compaction/compaction.js.map +1 -1
  87. package/dist/core/compaction/utils.d.ts +2 -2
  88. package/dist/core/compaction/utils.d.ts.map +1 -1
  89. package/dist/core/compaction/utils.js.map +1 -1
  90. package/dist/core/compactor.d.ts +42 -0
  91. package/dist/core/compactor.d.ts.map +1 -0
  92. package/dist/core/compactor.js +131 -0
  93. package/dist/core/compactor.js.map +1 -0
  94. package/dist/core/context-budget-compressors.d.ts +50 -0
  95. package/dist/core/context-budget-compressors.d.ts.map +1 -0
  96. package/dist/core/context-budget-compressors.js +166 -0
  97. package/dist/core/context-budget-compressors.js.map +1 -0
  98. package/dist/core/context-budget-governor-v2.d.ts +7 -0
  99. package/dist/core/context-budget-governor-v2.d.ts.map +1 -0
  100. package/dist/core/context-budget-governor-v2.js +7 -0
  101. package/dist/core/context-budget-governor-v2.js.map +1 -0
  102. package/dist/core/context-budget-governor.d.ts +67 -0
  103. package/dist/core/context-budget-governor.d.ts.map +1 -0
  104. package/dist/core/context-budget-governor.js +224 -0
  105. package/dist/core/context-budget-governor.js.map +1 -0
  106. package/dist/core/context-budget-headroom-candidates.d.ts +3 -0
  107. package/dist/core/context-budget-headroom-candidates.d.ts.map +1 -0
  108. package/dist/core/context-budget-headroom-candidates.js +85 -0
  109. package/dist/core/context-budget-headroom-candidates.js.map +1 -0
  110. package/dist/core/context-budget-headroom-types.d.ts +67 -0
  111. package/dist/core/context-budget-headroom-types.d.ts.map +1 -0
  112. package/dist/core/context-budget-headroom-types.js +46 -0
  113. package/dist/core/context-budget-headroom-types.js.map +1 -0
  114. package/dist/core/context-budget-headroom.d.ts +5 -0
  115. package/dist/core/context-budget-headroom.d.ts.map +1 -0
  116. package/dist/core/context-budget-headroom.js +123 -0
  117. package/dist/core/context-budget-headroom.js.map +1 -0
  118. package/dist/core/context-budget-relevance.d.ts +46 -0
  119. package/dist/core/context-budget-relevance.d.ts.map +1 -0
  120. package/dist/core/context-budget-relevance.js +329 -0
  121. package/dist/core/context-budget-relevance.js.map +1 -0
  122. package/dist/core/context-budget-system-prompt-items.d.ts +19 -0
  123. package/dist/core/context-budget-system-prompt-items.d.ts.map +1 -0
  124. package/dist/core/context-budget-system-prompt-items.js +143 -0
  125. package/dist/core/context-budget-system-prompt-items.js.map +1 -0
  126. package/dist/core/context-budget-system-prompt.d.ts +31 -0
  127. package/dist/core/context-budget-system-prompt.d.ts.map +1 -0
  128. package/dist/core/context-budget-system-prompt.js +87 -0
  129. package/dist/core/context-budget-system-prompt.js.map +1 -0
  130. package/dist/core/context-budget-token-counter.d.ts +34 -0
  131. package/dist/core/context-budget-token-counter.d.ts.map +1 -0
  132. package/dist/core/context-budget-token-counter.js +315 -0
  133. package/dist/core/context-budget-token-counter.js.map +1 -0
  134. package/dist/core/context-budget-v2-coverage.d.ts +5 -0
  135. package/dist/core/context-budget-v2-coverage.d.ts.map +1 -0
  136. package/dist/core/context-budget-v2-coverage.js +58 -0
  137. package/dist/core/context-budget-v2-coverage.js.map +1 -0
  138. package/dist/core/context-budget-v2-plan-hash.d.ts +12 -0
  139. package/dist/core/context-budget-v2-plan-hash.d.ts.map +1 -0
  140. package/dist/core/context-budget-v2-plan-hash.js +38 -0
  141. package/dist/core/context-budget-v2-plan-hash.js.map +1 -0
  142. package/dist/core/context-budget-v2-planner.d.ts +3 -0
  143. package/dist/core/context-budget-v2-planner.d.ts.map +1 -0
  144. package/dist/core/context-budget-v2-planner.js +143 -0
  145. package/dist/core/context-budget-v2-planner.js.map +1 -0
  146. package/dist/core/context-budget-v2-scoring.d.ts +14 -0
  147. package/dist/core/context-budget-v2-scoring.d.ts.map +1 -0
  148. package/dist/core/context-budget-v2-scoring.js +114 -0
  149. package/dist/core/context-budget-v2-scoring.js.map +1 -0
  150. package/dist/core/context-budget-v2-selection.d.ts +32 -0
  151. package/dist/core/context-budget-v2-selection.d.ts.map +1 -0
  152. package/dist/core/context-budget-v2-selection.js +158 -0
  153. package/dist/core/context-budget-v2-selection.js.map +1 -0
  154. package/dist/core/context-budget-v2-tiers.d.ts +15 -0
  155. package/dist/core/context-budget-v2-tiers.d.ts.map +1 -0
  156. package/dist/core/context-budget-v2-tiers.js +68 -0
  157. package/dist/core/context-budget-v2-tiers.js.map +1 -0
  158. package/dist/core/context-budget-v2-types.d.ts +92 -0
  159. package/dist/core/context-budget-v2-types.d.ts.map +1 -0
  160. package/dist/core/context-budget-v2-types.js +24 -0
  161. package/dist/core/context-budget-v2-types.js.map +1 -0
  162. package/dist/core/defaults.d.ts +1 -1
  163. package/dist/core/defaults.d.ts.map +1 -1
  164. package/dist/core/defaults.js.map +1 -1
  165. package/dist/core/diagnostics.d.ts +4 -0
  166. package/dist/core/diagnostics.d.ts.map +1 -1
  167. package/dist/core/diagnostics.js.map +1 -1
  168. package/dist/core/domain-confidence.d.ts +9 -0
  169. package/dist/core/domain-confidence.d.ts.map +1 -0
  170. package/dist/core/domain-confidence.js +39 -0
  171. package/dist/core/domain-confidence.js.map +1 -0
  172. package/dist/core/domain-dispatch.d.ts +44 -0
  173. package/dist/core/domain-dispatch.d.ts.map +1 -0
  174. package/dist/core/domain-dispatch.js +118 -0
  175. package/dist/core/domain-dispatch.js.map +1 -0
  176. package/dist/core/domain-loadouts.d.ts +76 -0
  177. package/dist/core/domain-loadouts.d.ts.map +1 -0
  178. package/dist/core/domain-loadouts.js +981 -0
  179. package/dist/core/domain-loadouts.js.map +1 -0
  180. package/dist/core/domain-registry.d.ts +7 -0
  181. package/dist/core/domain-registry.d.ts.map +1 -0
  182. package/dist/core/domain-registry.js +11 -0
  183. package/dist/core/domain-registry.js.map +1 -0
  184. package/dist/core/domain-router.d.ts +16 -0
  185. package/dist/core/domain-router.d.ts.map +1 -0
  186. package/dist/core/domain-router.js +24 -0
  187. package/dist/core/domain-router.js.map +1 -0
  188. package/dist/core/domain-score.d.ts +13 -0
  189. package/dist/core/domain-score.d.ts.map +1 -0
  190. package/dist/core/domain-score.js +48 -0
  191. package/dist/core/domain-score.js.map +1 -0
  192. package/dist/core/domain-trigger-match.d.ts +14 -0
  193. package/dist/core/domain-trigger-match.d.ts.map +1 -0
  194. package/dist/core/domain-trigger-match.js +51 -0
  195. package/dist/core/domain-trigger-match.js.map +1 -0
  196. package/dist/core/domain-types.d.ts +30 -0
  197. package/dist/core/domain-types.d.ts.map +1 -0
  198. package/dist/core/domain-types.js +2 -0
  199. package/dist/core/domain-types.js.map +1 -0
  200. package/dist/core/exact-cache-policy.d.ts +8 -0
  201. package/dist/core/exact-cache-policy.d.ts.map +1 -1
  202. package/dist/core/exact-cache-policy.js +9 -0
  203. package/dist/core/exact-cache-policy.js.map +1 -1
  204. package/dist/core/exec.d.ts +0 -2
  205. package/dist/core/exec.d.ts.map +1 -1
  206. package/dist/core/exec.js +0 -1
  207. package/dist/core/exec.js.map +1 -1
  208. package/dist/core/export-html/index.d.ts +1 -1
  209. package/dist/core/export-html/index.d.ts.map +1 -1
  210. package/dist/core/export-html/index.js.map +1 -1
  211. package/dist/core/export-html/template.js +1 -3
  212. package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
  213. package/dist/core/export-html/tool-renderer.js.map +1 -1
  214. package/dist/core/extensions/builtin/command-safety-gate.d.ts +3 -0
  215. package/dist/core/extensions/builtin/command-safety-gate.d.ts.map +1 -1
  216. package/dist/core/extensions/builtin/command-safety-gate.js +15 -3
  217. package/dist/core/extensions/builtin/command-safety-gate.js.map +1 -1
  218. package/dist/core/extensions/builtin/todo-checklist.d.ts +20 -0
  219. package/dist/core/extensions/builtin/todo-checklist.d.ts.map +1 -0
  220. package/dist/core/extensions/builtin/todo-checklist.js +70 -0
  221. package/dist/core/extensions/builtin/todo-checklist.js.map +1 -0
  222. package/dist/core/extensions/loader.d.ts +4 -4
  223. package/dist/core/extensions/loader.d.ts.map +1 -1
  224. package/dist/core/extensions/loader.js +57 -92
  225. package/dist/core/extensions/loader.js.map +1 -1
  226. package/dist/core/extensions/runner.d.ts +3 -3
  227. package/dist/core/extensions/runner.d.ts.map +1 -1
  228. package/dist/core/extensions/runner.js +1 -1
  229. package/dist/core/extensions/runner.js.map +1 -1
  230. package/dist/core/extensions/types.d.ts +7 -35
  231. package/dist/core/extensions/types.d.ts.map +1 -1
  232. package/dist/core/extensions/types.js.map +1 -1
  233. package/dist/core/extensions/wrapper.d.ts +1 -1
  234. package/dist/core/extensions/wrapper.d.ts.map +1 -1
  235. package/dist/core/extensions/wrapper.js.map +1 -1
  236. package/dist/core/headroom.d.ts +45 -0
  237. package/dist/core/headroom.d.ts.map +1 -0
  238. package/dist/core/headroom.js +171 -0
  239. package/dist/core/headroom.js.map +1 -0
  240. package/dist/core/hook-inventory.d.ts +4 -2
  241. package/dist/core/hook-inventory.d.ts.map +1 -1
  242. package/dist/core/hook-inventory.js +80 -11
  243. package/dist/core/hook-inventory.js.map +1 -1
  244. package/dist/core/hooks/fail-closed.d.ts +4 -1
  245. package/dist/core/hooks/fail-closed.d.ts.map +1 -1
  246. package/dist/core/hooks/fail-closed.js +79 -5
  247. package/dist/core/hooks/fail-closed.js.map +1 -1
  248. package/dist/core/hooks/index.d.ts +2 -2
  249. package/dist/core/hooks/index.d.ts.map +1 -1
  250. package/dist/core/hooks/index.js +1 -1
  251. package/dist/core/hooks/index.js.map +1 -1
  252. package/dist/core/hooks/types.d.ts +9 -0
  253. package/dist/core/hooks/types.d.ts.map +1 -1
  254. package/dist/core/hooks/types.js.map +1 -1
  255. package/dist/core/keybindings.d.ts +2 -14
  256. package/dist/core/keybindings.d.ts.map +1 -1
  257. package/dist/core/keybindings.js +1 -31
  258. package/dist/core/keybindings.js.map +1 -1
  259. package/dist/core/lean-ctx.d.ts +99 -0
  260. package/dist/core/lean-ctx.d.ts.map +1 -0
  261. package/dist/core/lean-ctx.js +225 -0
  262. package/dist/core/lean-ctx.js.map +1 -0
  263. package/dist/core/loadout-compose.d.ts +53 -0
  264. package/dist/core/loadout-compose.d.ts.map +1 -0
  265. package/dist/core/loadout-compose.js +172 -0
  266. package/dist/core/loadout-compose.js.map +1 -0
  267. package/dist/core/loadout-policy-bridge.d.ts +22 -0
  268. package/dist/core/loadout-policy-bridge.d.ts.map +1 -0
  269. package/dist/core/loadout-policy-bridge.js +52 -0
  270. package/dist/core/loadout-policy-bridge.js.map +1 -0
  271. package/dist/core/loadout-runtime.d.ts +22 -0
  272. package/dist/core/loadout-runtime.d.ts.map +1 -1
  273. package/dist/core/loadout-runtime.js +41 -5
  274. package/dist/core/loadout-runtime.js.map +1 -1
  275. package/dist/core/loadout-safety.d.ts +55 -0
  276. package/dist/core/loadout-safety.d.ts.map +1 -0
  277. package/dist/core/loadout-safety.js +213 -0
  278. package/dist/core/loadout-safety.js.map +1 -0
  279. package/dist/core/loadouts.d.ts +4 -2
  280. package/dist/core/loadouts.d.ts.map +1 -1
  281. package/dist/core/loadouts.js +116 -5
  282. package/dist/core/loadouts.js.map +1 -1
  283. package/dist/core/loop-gates.d.ts +48 -0
  284. package/dist/core/loop-gates.d.ts.map +1 -0
  285. package/dist/core/loop-gates.js +352 -0
  286. package/dist/core/loop-gates.js.map +1 -0
  287. package/dist/core/loop-registry.d.ts +77 -0
  288. package/dist/core/loop-registry.d.ts.map +1 -0
  289. package/dist/core/loop-registry.js +831 -0
  290. package/dist/core/loop-registry.js.map +1 -0
  291. package/dist/core/loop-types.d.ts +194 -0
  292. package/dist/core/loop-types.d.ts.map +1 -0
  293. package/dist/core/loop-types.js +2 -0
  294. package/dist/core/loop-types.js.map +1 -0
  295. package/dist/core/mcp-inventory.d.ts +7 -0
  296. package/dist/core/mcp-inventory.d.ts.map +1 -1
  297. package/dist/core/mcp-inventory.js +5 -1
  298. package/dist/core/mcp-inventory.js.map +1 -1
  299. package/dist/core/mcp-presets.d.ts +43 -2
  300. package/dist/core/mcp-presets.d.ts.map +1 -1
  301. package/dist/core/mcp-presets.js +298 -2
  302. package/dist/core/mcp-presets.js.map +1 -1
  303. package/dist/core/messages.d.ts +3 -3
  304. package/dist/core/messages.d.ts.map +1 -1
  305. package/dist/core/messages.js.map +1 -1
  306. package/dist/core/metrics-sampler.d.ts +11 -0
  307. package/dist/core/metrics-sampler.d.ts.map +1 -1
  308. package/dist/core/metrics-sampler.js +52 -13
  309. package/dist/core/metrics-sampler.js.map +1 -1
  310. package/dist/core/model-registry.d.ts +1 -2
  311. package/dist/core/model-registry.d.ts.map +1 -1
  312. package/dist/core/model-registry.js +18 -41
  313. package/dist/core/model-registry.js.map +1 -1
  314. package/dist/core/model-resolver.d.ts +2 -2
  315. package/dist/core/model-resolver.d.ts.map +1 -1
  316. package/dist/core/model-resolver.js +1 -2
  317. package/dist/core/model-resolver.js.map +1 -1
  318. package/dist/core/package-gallery-identity.d.ts +7 -0
  319. package/dist/core/package-gallery-identity.d.ts.map +1 -0
  320. package/dist/core/package-gallery-identity.js +31 -0
  321. package/dist/core/package-gallery-identity.js.map +1 -0
  322. package/dist/core/package-gallery-install.d.ts +6 -0
  323. package/dist/core/package-gallery-install.d.ts.map +1 -0
  324. package/dist/core/package-gallery-install.js +59 -0
  325. package/dist/core/package-gallery-install.js.map +1 -0
  326. package/dist/core/package-gallery-manifest.d.ts +13 -0
  327. package/dist/core/package-gallery-manifest.d.ts.map +1 -0
  328. package/dist/core/package-gallery-manifest.js +183 -0
  329. package/dist/core/package-gallery-manifest.js.map +1 -0
  330. package/dist/core/package-gallery-trial.d.ts +4 -0
  331. package/dist/core/package-gallery-trial.d.ts.map +1 -0
  332. package/dist/core/package-gallery-trial.js +55 -0
  333. package/dist/core/package-gallery-trial.js.map +1 -0
  334. package/dist/core/package-gallery-types.d.ts +71 -0
  335. package/dist/core/package-gallery-types.d.ts.map +1 -0
  336. package/dist/core/package-gallery-types.js +2 -0
  337. package/dist/core/package-gallery-types.js.map +1 -0
  338. package/dist/core/package-gallery.d.ts +5 -123
  339. package/dist/core/package-gallery.d.ts.map +1 -1
  340. package/dist/core/package-gallery.js +5 -391
  341. package/dist/core/package-gallery.js.map +1 -1
  342. package/dist/core/package-manager.d.ts +0 -69
  343. package/dist/core/package-manager.d.ts.map +1 -1
  344. package/dist/core/package-manager.js +69 -367
  345. package/dist/core/package-manager.js.map +1 -1
  346. package/dist/core/package-procurement.d.ts +4 -4
  347. package/dist/core/package-procurement.d.ts.map +1 -1
  348. package/dist/core/package-procurement.js +29 -17
  349. package/dist/core/package-procurement.js.map +1 -1
  350. package/dist/core/provider-attribution.d.ts +1 -1
  351. package/dist/core/provider-attribution.d.ts.map +1 -1
  352. package/dist/core/provider-attribution.js.map +1 -1
  353. package/dist/core/read-anchors.d.ts +1 -1
  354. package/dist/core/read-anchors.d.ts.map +1 -1
  355. package/dist/core/read-anchors.js +1 -1
  356. package/dist/core/read-anchors.js.map +1 -1
  357. package/dist/core/recovery-checkpoint.d.ts +2 -2
  358. package/dist/core/recovery-checkpoint.d.ts.map +1 -1
  359. package/dist/core/recovery-checkpoint.js +2 -2
  360. package/dist/core/recovery-checkpoint.js.map +1 -1
  361. package/dist/core/resolve-config-value.d.ts +1 -1
  362. package/dist/core/resolve-config-value.d.ts.map +1 -1
  363. package/dist/core/resolve-config-value.js +2 -30
  364. package/dist/core/resolve-config-value.js.map +1 -1
  365. package/dist/core/resource-loader.d.ts +12 -20
  366. package/dist/core/resource-loader.d.ts.map +1 -1
  367. package/dist/core/resource-loader.js +66 -90
  368. package/dist/core/resource-loader.js.map +1 -1
  369. package/dist/core/sandbox-policy-v2.d.ts +49 -0
  370. package/dist/core/sandbox-policy-v2.d.ts.map +1 -0
  371. package/dist/core/sandbox-policy-v2.js +368 -0
  372. package/dist/core/sandbox-policy-v2.js.map +1 -0
  373. package/dist/core/sdk.d.ts +10 -78
  374. package/dist/core/sdk.d.ts.map +1 -1
  375. package/dist/core/sdk.js +97 -139
  376. package/dist/core/sdk.js.map +1 -1
  377. package/dist/core/semantic-cache-policy.d.ts +7 -1
  378. package/dist/core/semantic-cache-policy.d.ts.map +1 -1
  379. package/dist/core/semantic-cache-policy.js +8 -0
  380. package/dist/core/semantic-cache-policy.js.map +1 -1
  381. package/dist/core/session-manager.d.ts +2 -4
  382. package/dist/core/session-manager.d.ts.map +1 -1
  383. package/dist/core/session-manager.js +5 -6
  384. package/dist/core/session-manager.js.map +1 -1
  385. package/dist/core/settings-manager.d.ts +1 -18
  386. package/dist/core/settings-manager.d.ts.map +1 -1
  387. package/dist/core/settings-manager.js +2 -48
  388. package/dist/core/settings-manager.js.map +1 -1
  389. package/dist/core/skills.d.ts +1 -0
  390. package/dist/core/skills.d.ts.map +1 -1
  391. package/dist/core/skills.js +46 -5
  392. package/dist/core/skills.js.map +1 -1
  393. package/dist/core/slash-commands.d.ts.map +1 -1
  394. package/dist/core/slash-commands.js +0 -2
  395. package/dist/core/slash-commands.js.map +1 -1
  396. package/dist/core/subagent-orchestration.d.ts +73 -0
  397. package/dist/core/subagent-orchestration.d.ts.map +1 -0
  398. package/dist/core/subagent-orchestration.js +408 -0
  399. package/dist/core/subagent-orchestration.js.map +1 -0
  400. package/dist/core/system-prompt.d.ts +5 -4
  401. package/dist/core/system-prompt.d.ts.map +1 -1
  402. package/dist/core/system-prompt.js +57 -36
  403. package/dist/core/system-prompt.js.map +1 -1
  404. package/dist/core/timings.d.ts +0 -4
  405. package/dist/core/timings.d.ts.map +1 -1
  406. package/dist/core/timings.js +0 -4
  407. package/dist/core/timings.js.map +1 -1
  408. package/dist/core/todo-state.d.ts +53 -0
  409. package/dist/core/todo-state.d.ts.map +1 -0
  410. package/dist/core/todo-state.js +87 -0
  411. package/dist/core/todo-state.js.map +1 -0
  412. package/dist/core/token-optimizer.d.ts +58 -0
  413. package/dist/core/token-optimizer.d.ts.map +1 -0
  414. package/dist/core/token-optimizer.js +179 -0
  415. package/dist/core/token-optimizer.js.map +1 -0
  416. package/dist/core/tools/bash.d.ts +8 -9
  417. package/dist/core/tools/bash.d.ts.map +1 -1
  418. package/dist/core/tools/bash.js +9 -8
  419. package/dist/core/tools/bash.js.map +1 -1
  420. package/dist/core/tools/edit.d.ts +3 -14
  421. package/dist/core/tools/edit.d.ts.map +1 -1
  422. package/dist/core/tools/edit.js +4 -25
  423. package/dist/core/tools/edit.js.map +1 -1
  424. package/dist/core/tools/find.d.ts +1 -4
  425. package/dist/core/tools/find.d.ts.map +1 -1
  426. package/dist/core/tools/find.js +1 -4
  427. package/dist/core/tools/find.js.map +1 -1
  428. package/dist/core/tools/grep.d.ts +1 -4
  429. package/dist/core/tools/grep.d.ts.map +1 -1
  430. package/dist/core/tools/grep.js +2 -5
  431. package/dist/core/tools/grep.js.map +1 -1
  432. package/dist/core/tools/index.d.ts +2 -2
  433. package/dist/core/tools/index.d.ts.map +1 -1
  434. package/dist/core/tools/index.js.map +1 -1
  435. package/dist/core/tools/ls.d.ts +1 -4
  436. package/dist/core/tools/ls.d.ts.map +1 -1
  437. package/dist/core/tools/ls.js +1 -4
  438. package/dist/core/tools/ls.js.map +1 -1
  439. package/dist/core/tools/read.d.ts +2 -14
  440. package/dist/core/tools/read.d.ts.map +1 -1
  441. package/dist/core/tools/read.js +4 -28
  442. package/dist/core/tools/read.js.map +1 -1
  443. package/dist/core/tools/render-utils.d.ts +1 -1
  444. package/dist/core/tools/render-utils.d.ts.map +1 -1
  445. package/dist/core/tools/render-utils.js +1 -1
  446. package/dist/core/tools/render-utils.js.map +1 -1
  447. package/dist/core/tools/tool-definition-wrapper.d.ts +1 -1
  448. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  449. package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  450. package/dist/core/tools/write.d.ts +2 -4
  451. package/dist/core/tools/write.d.ts.map +1 -1
  452. package/dist/core/tools/write.js +4 -4
  453. package/dist/core/tools/write.js.map +1 -1
  454. package/dist/encoding/index.d.ts +6 -0
  455. package/dist/encoding/index.d.ts.map +1 -0
  456. package/dist/encoding/index.js +6 -0
  457. package/dist/encoding/index.js.map +1 -0
  458. package/dist/encoding/l4-encoder.d.ts +96 -0
  459. package/dist/encoding/l4-encoder.d.ts.map +1 -0
  460. package/dist/encoding/l4-encoder.js +474 -0
  461. package/dist/encoding/l4-encoder.js.map +1 -0
  462. package/dist/fuzzing/index.d.ts +6 -0
  463. package/dist/fuzzing/index.d.ts.map +1 -0
  464. package/dist/fuzzing/index.js +6 -0
  465. package/dist/fuzzing/index.js.map +1 -0
  466. package/dist/fuzzing/mutation-engine.d.ts +93 -0
  467. package/dist/fuzzing/mutation-engine.d.ts.map +1 -0
  468. package/dist/fuzzing/mutation-engine.js +244 -0
  469. package/dist/fuzzing/mutation-engine.js.map +1 -0
  470. package/dist/guardrails/audit-logger.d.ts +4 -0
  471. package/dist/guardrails/audit-logger.d.ts.map +1 -0
  472. package/dist/guardrails/audit-logger.js +28 -0
  473. package/dist/guardrails/audit-logger.js.map +1 -0
  474. package/dist/guardrails/evidence-system.d.ts +61 -0
  475. package/dist/guardrails/evidence-system.d.ts.map +1 -0
  476. package/dist/guardrails/evidence-system.js +302 -0
  477. package/dist/guardrails/evidence-system.js.map +1 -0
  478. package/dist/guardrails/freedomd-adapter.d.ts +16 -0
  479. package/dist/guardrails/freedomd-adapter.d.ts.map +1 -0
  480. package/dist/guardrails/freedomd-adapter.js +87 -0
  481. package/dist/guardrails/freedomd-adapter.js.map +1 -0
  482. package/dist/index.d.ts +4 -19
  483. package/dist/index.d.ts.map +1 -1
  484. package/dist/index.js +2 -17
  485. package/dist/index.js.map +1 -1
  486. package/dist/jailbreak-extension.d.ts +48 -0
  487. package/dist/jailbreak-extension.d.ts.map +1 -0
  488. package/dist/jailbreak-extension.js +47 -0
  489. package/dist/jailbreak-extension.js.map +1 -0
  490. package/dist/main.d.ts.map +1 -1
  491. package/dist/main.js +2 -2
  492. package/dist/main.js.map +1 -1
  493. package/dist/migrations.d.ts +0 -37
  494. package/dist/migrations.d.ts.map +1 -1
  495. package/dist/migrations.js +6 -414
  496. package/dist/migrations.js.map +1 -1
  497. package/dist/modes/interactive/components/armin.d.ts +1 -1
  498. package/dist/modes/interactive/components/armin.d.ts.map +1 -1
  499. package/dist/modes/interactive/components/armin.js.map +1 -1
  500. package/dist/modes/interactive/components/assistant-message.d.ts +2 -2
  501. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  502. package/dist/modes/interactive/components/assistant-message.js +1 -1
  503. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  504. package/dist/modes/interactive/components/bash-execution.d.ts +1 -1
  505. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  506. package/dist/modes/interactive/components/bash-execution.js +1 -1
  507. package/dist/modes/interactive/components/bash-execution.js.map +1 -1
  508. package/dist/modes/interactive/components/bordered-loader.d.ts +1 -1
  509. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
  510. package/dist/modes/interactive/components/bordered-loader.js +1 -1
  511. package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
  512. package/dist/modes/interactive/components/branch-summary-message.d.ts +1 -1
  513. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
  514. package/dist/modes/interactive/components/branch-summary-message.js +1 -1
  515. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  516. package/dist/modes/interactive/components/compaction-summary-message.d.ts +1 -1
  517. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
  518. package/dist/modes/interactive/components/compaction-summary-message.js +1 -1
  519. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
  520. package/dist/modes/interactive/components/config-selector.d.ts +1 -1
  521. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  522. package/dist/modes/interactive/components/config-selector.js +1 -1
  523. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  524. package/dist/modes/interactive/components/control-panel-box.d.ts +15 -0
  525. package/dist/modes/interactive/components/control-panel-box.d.ts.map +1 -0
  526. package/dist/modes/interactive/components/control-panel-box.js +55 -0
  527. package/dist/modes/interactive/components/control-panel-box.js.map +1 -0
  528. package/dist/modes/interactive/components/control-panel-gradient-motion.d.ts.map +1 -1
  529. package/dist/modes/interactive/components/control-panel-gradient-motion.js +2 -36
  530. package/dist/modes/interactive/components/control-panel-gradient-motion.js.map +1 -1
  531. package/dist/modes/interactive/components/control-panel-gradient.d.ts +1 -0
  532. package/dist/modes/interactive/components/control-panel-gradient.d.ts.map +1 -1
  533. package/dist/modes/interactive/components/control-panel-gradient.js +6 -5
  534. package/dist/modes/interactive/components/control-panel-gradient.js.map +1 -1
  535. package/dist/modes/interactive/components/control-panel-layout.d.ts +23 -0
  536. package/dist/modes/interactive/components/control-panel-layout.d.ts.map +1 -0
  537. package/dist/modes/interactive/components/control-panel-layout.js +165 -0
  538. package/dist/modes/interactive/components/control-panel-layout.js.map +1 -0
  539. package/dist/modes/interactive/components/control-panel-runtime-status.d.ts +5 -0
  540. package/dist/modes/interactive/components/control-panel-runtime-status.d.ts.map +1 -0
  541. package/dist/modes/interactive/components/control-panel-runtime-status.js +20 -0
  542. package/dist/modes/interactive/components/control-panel-runtime-status.js.map +1 -0
  543. package/dist/modes/interactive/components/control-panel.d.ts +8 -31
  544. package/dist/modes/interactive/components/control-panel.d.ts.map +1 -1
  545. package/dist/modes/interactive/components/control-panel.js +38 -169
  546. package/dist/modes/interactive/components/control-panel.js.map +1 -1
  547. package/dist/modes/interactive/components/countdown-timer.d.ts +1 -1
  548. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
  549. package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
  550. package/dist/modes/interactive/components/custom-editor.d.ts +1 -1
  551. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  552. package/dist/modes/interactive/components/custom-editor.js +14 -22
  553. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  554. package/dist/modes/interactive/components/custom-message.d.ts +1 -1
  555. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  556. package/dist/modes/interactive/components/custom-message.js +1 -1
  557. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  558. package/dist/modes/interactive/components/daxnuts.d.ts +1 -1
  559. package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -1
  560. package/dist/modes/interactive/components/daxnuts.js.map +1 -1
  561. package/dist/modes/interactive/components/dynamic-border.d.ts +1 -1
  562. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
  563. package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
  564. package/dist/modes/interactive/components/earendil-announcement.d.ts +1 -1
  565. package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -1
  566. package/dist/modes/interactive/components/earendil-announcement.js +1 -1
  567. package/dist/modes/interactive/components/earendil-announcement.js.map +1 -1
  568. package/dist/modes/interactive/components/extension-editor.d.ts +1 -1
  569. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  570. package/dist/modes/interactive/components/extension-editor.js +1 -1
  571. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  572. package/dist/modes/interactive/components/extension-input.d.ts +1 -1
  573. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
  574. package/dist/modes/interactive/components/extension-input.js +1 -1
  575. package/dist/modes/interactive/components/extension-input.js.map +1 -1
  576. package/dist/modes/interactive/components/extension-selector.d.ts +1 -1
  577. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
  578. package/dist/modes/interactive/components/extension-selector.js +1 -1
  579. package/dist/modes/interactive/components/extension-selector.js.map +1 -1
  580. package/dist/modes/interactive/components/footer.d.ts +1 -1
  581. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  582. package/dist/modes/interactive/components/footer.js +1 -9
  583. package/dist/modes/interactive/components/footer.js.map +1 -1
  584. package/dist/modes/interactive/components/index.d.ts +0 -2
  585. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  586. package/dist/modes/interactive/components/index.js +0 -2
  587. package/dist/modes/interactive/components/index.js.map +1 -1
  588. package/dist/modes/interactive/components/keybinding-hints.d.ts +1 -1
  589. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
  590. package/dist/modes/interactive/components/keybinding-hints.js +1 -1
  591. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
  592. package/dist/modes/interactive/components/login-dialog.d.ts +2 -2
  593. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  594. package/dist/modes/interactive/components/login-dialog.js +2 -2
  595. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  596. package/dist/modes/interactive/components/model-selector.d.ts +13 -47
  597. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  598. package/dist/modes/interactive/components/model-selector.js +118 -193
  599. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  600. package/dist/modes/interactive/components/oauth-selector.d.ts +1 -1
  601. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  602. package/dist/modes/interactive/components/oauth-selector.js +1 -1
  603. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  604. package/dist/modes/interactive/components/scoped-models-selector.d.ts +2 -2
  605. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  606. package/dist/modes/interactive/components/scoped-models-selector.js +1 -1
  607. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  608. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
  609. package/dist/modes/interactive/components/session-selector-search.js +1 -1
  610. package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
  611. package/dist/modes/interactive/components/session-selector.d.ts +1 -1
  612. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  613. package/dist/modes/interactive/components/session-selector.js +1 -1
  614. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  615. package/dist/modes/interactive/components/settings-selector.d.ts +3 -3
  616. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  617. package/dist/modes/interactive/components/settings-selector.js +1 -1
  618. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  619. package/dist/modes/interactive/components/show-images-selector.d.ts +1 -1
  620. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
  621. package/dist/modes/interactive/components/show-images-selector.js +1 -1
  622. package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
  623. package/dist/modes/interactive/components/skill-invocation-message.d.ts +1 -1
  624. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  625. package/dist/modes/interactive/components/skill-invocation-message.js +1 -1
  626. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  627. package/dist/modes/interactive/components/theme-selector.d.ts +1 -2
  628. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
  629. package/dist/modes/interactive/components/theme-selector.js +2 -11
  630. package/dist/modes/interactive/components/theme-selector.js.map +1 -1
  631. package/dist/modes/interactive/components/thinking-selector.d.ts +8 -7
  632. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  633. package/dist/modes/interactive/components/thinking-selector.js +48 -7
  634. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  635. package/dist/modes/interactive/components/todo-checklist.d.ts +31 -0
  636. package/dist/modes/interactive/components/todo-checklist.d.ts.map +1 -0
  637. package/dist/modes/interactive/components/todo-checklist.js +121 -0
  638. package/dist/modes/interactive/components/todo-checklist.js.map +1 -0
  639. package/dist/modes/interactive/components/tool-execution.d.ts +1 -1
  640. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  641. package/dist/modes/interactive/components/tool-execution.js +1 -1
  642. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  643. package/dist/modes/interactive/components/tree-selector.d.ts +1 -1
  644. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
  645. package/dist/modes/interactive/components/tree-selector.js +1 -1
  646. package/dist/modes/interactive/components/tree-selector.js.map +1 -1
  647. package/dist/modes/interactive/components/user-message-selector.d.ts +1 -1
  648. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
  649. package/dist/modes/interactive/components/user-message-selector.js +1 -1
  650. package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
  651. package/dist/modes/interactive/components/user-message.d.ts +1 -1
  652. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  653. package/dist/modes/interactive/components/user-message.js +1 -1
  654. package/dist/modes/interactive/components/user-message.js.map +1 -1
  655. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
  656. package/dist/modes/interactive/components/visual-truncate.js +1 -1
  657. package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
  658. package/dist/modes/interactive/interactive-mode.d.ts +3 -8
  659. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  660. package/dist/modes/interactive/interactive-mode.js +74 -232
  661. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  662. package/dist/modes/interactive/theme/omk-control-grid-dark.json +65 -77
  663. package/dist/modes/interactive/theme/omk-neon-control.json +90 -0
  664. package/dist/modes/interactive/theme/rust-forge.json +14 -24
  665. package/dist/modes/interactive/theme/theme.d.ts +1 -1
  666. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  667. package/dist/modes/interactive/theme/theme.js +22 -45
  668. package/dist/modes/interactive/theme/theme.js.map +1 -1
  669. package/dist/modes/print-mode.d.ts +1 -1
  670. package/dist/modes/print-mode.d.ts.map +1 -1
  671. package/dist/modes/print-mode.js.map +1 -1
  672. package/dist/modes/rpc/rpc-client.d.ts +2 -2
  673. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  674. package/dist/modes/rpc/rpc-client.js.map +1 -1
  675. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  676. package/dist/modes/rpc/rpc-mode.js +0 -4
  677. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  678. package/dist/modes/rpc/rpc-types.d.ts +2 -2
  679. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  680. package/dist/modes/rpc/rpc-types.js.map +1 -1
  681. package/dist/modules/index.d.ts +8 -0
  682. package/dist/modules/index.d.ts.map +1 -0
  683. package/dist/modules/index.js +7 -0
  684. package/dist/modules/index.js.map +1 -0
  685. package/dist/modules/lrl-bypass.d.ts +40 -0
  686. package/dist/modules/lrl-bypass.d.ts.map +1 -0
  687. package/dist/modules/lrl-bypass.js +84 -0
  688. package/dist/modules/lrl-bypass.js.map +1 -0
  689. package/dist/modules/lrl-deps.d.ts +38 -0
  690. package/dist/modules/lrl-deps.d.ts.map +1 -0
  691. package/dist/modules/lrl-deps.js +128 -0
  692. package/dist/modules/lrl-deps.js.map +1 -0
  693. package/dist/multiturn/easl-chain.d.ts +113 -0
  694. package/dist/multiturn/easl-chain.d.ts.map +1 -0
  695. package/dist/multiturn/easl-chain.js +351 -0
  696. package/dist/multiturn/easl-chain.js.map +1 -0
  697. package/dist/multiturn/index.d.ts +6 -0
  698. package/dist/multiturn/index.d.ts.map +1 -0
  699. package/dist/multiturn/index.js +6 -0
  700. package/dist/multiturn/index.js.map +1 -0
  701. package/dist/orchestration/lane-grant-auditor.d.ts +4 -0
  702. package/dist/orchestration/lane-grant-auditor.d.ts.map +1 -0
  703. package/dist/orchestration/lane-grant-auditor.js +87 -0
  704. package/dist/orchestration/lane-grant-auditor.js.map +1 -0
  705. package/dist/package-manager-cli.d.ts.map +1 -1
  706. package/dist/package-manager-cli.js +48 -113
  707. package/dist/package-manager-cli.js.map +1 -1
  708. package/dist/routing/fallback-router.d.ts +123 -0
  709. package/dist/routing/fallback-router.d.ts.map +1 -0
  710. package/dist/routing/fallback-router.js +355 -0
  711. package/dist/routing/fallback-router.js.map +1 -0
  712. package/dist/routing/index.d.ts +6 -0
  713. package/dist/routing/index.d.ts.map +1 -0
  714. package/dist/routing/index.js +6 -0
  715. package/dist/routing/index.js.map +1 -0
  716. package/dist/types/evidence.d.ts +117 -0
  717. package/dist/types/evidence.d.ts.map +1 -0
  718. package/dist/types/evidence.js +8 -0
  719. package/dist/types/evidence.js.map +1 -0
  720. package/dist/types/guardrails.d.ts +61 -0
  721. package/dist/types/guardrails.d.ts.map +1 -0
  722. package/dist/types/guardrails.js +9 -0
  723. package/dist/types/guardrails.js.map +1 -0
  724. package/dist/types/jailbreak.d.ts +246 -0
  725. package/dist/types/jailbreak.d.ts.map +1 -0
  726. package/dist/types/jailbreak.js +8 -0
  727. package/dist/types/jailbreak.js.map +1 -0
  728. package/dist/types/lane-grant.d.ts +58 -0
  729. package/dist/types/lane-grant.d.ts.map +1 -0
  730. package/dist/types/lane-grant.js +9 -0
  731. package/dist/types/lane-grant.js.map +1 -0
  732. package/dist/utils/jailbreak/common.d.ts +63 -0
  733. package/dist/utils/jailbreak/common.d.ts.map +1 -0
  734. package/dist/utils/jailbreak/common.js +130 -0
  735. package/dist/utils/jailbreak/common.js.map +1 -0
  736. package/dist/utils/jailbreak/index.d.ts +7 -0
  737. package/dist/utils/jailbreak/index.d.ts.map +1 -0
  738. package/dist/utils/jailbreak/index.js +7 -0
  739. package/dist/utils/jailbreak/index.js.map +1 -0
  740. package/dist/utils/windows-self-update.d.ts.map +1 -1
  741. package/dist/utils/windows-self-update.js +1 -1
  742. package/dist/utils/windows-self-update.js.map +1 -1
  743. package/docs/compaction.md +8 -21
  744. package/docs/custom-provider.md +2 -2
  745. package/docs/development.md +1 -1
  746. package/docs/extensions.md +11 -11
  747. package/docs/loadout-domains/README.md +70 -0
  748. package/docs/loadout-domains/ai-agent-ops.md +94 -0
  749. package/docs/loadout-domains/backend-api.md +116 -0
  750. package/docs/loadout-domains/data-science.md +100 -0
  751. package/docs/loadout-domains/devops-infra.md +85 -0
  752. package/docs/loadout-domains/docs-writing.md +92 -0
  753. package/docs/loadout-domains/frontend-ui.md +128 -0
  754. package/docs/loadout-domains/general.md +62 -0
  755. package/docs/loadout-domains/mobile.md +84 -0
  756. package/docs/loadout-domains/qa-testing.md +87 -0
  757. package/docs/loadout-domains/research.md +80 -0
  758. package/docs/loadout-domains/security-audit.md +97 -0
  759. package/docs/packages.md +7 -48
  760. package/docs/prompt-templates.md +0 -2
  761. package/docs/sdk.md +3 -3
  762. package/docs/security.md +145 -0
  763. package/docs/session-format.md +1 -1
  764. package/docs/themes.md +8 -7
  765. package/docs/tui.md +14 -14
  766. package/docs/usage.md +6 -16
  767. package/examples/extensions/README.md +2 -2
  768. package/examples/extensions/aside-computer-use/README.md +114 -0
  769. package/examples/extensions/aside-computer-use/action-scoring.ts +122 -0
  770. package/examples/extensions/aside-computer-use/assertions.ts +380 -0
  771. package/examples/extensions/aside-computer-use/controller.ts +491 -0
  772. package/examples/extensions/aside-computer-use/evidence.ts +229 -0
  773. package/examples/extensions/aside-computer-use/golden-trace.ts +141 -0
  774. package/examples/extensions/aside-computer-use/index.ts +76 -0
  775. package/examples/extensions/aside-computer-use/mcp-client.ts +381 -0
  776. package/examples/extensions/aside-computer-use/observation-snapshot.ts +121 -0
  777. package/examples/extensions/aside-computer-use/package.json +16 -0
  778. package/examples/extensions/aside-computer-use/policy.ts +257 -0
  779. package/examples/extensions/aside-computer-use/risk-authorize.ts +200 -0
  780. package/examples/extensions/aside-computer-use/risk-classifier.ts +205 -0
  781. package/examples/extensions/aside-computer-use/schema-fingerprint.ts +80 -0
  782. package/examples/extensions/aside-computer-use/session-binding.ts +161 -0
  783. package/examples/extensions/aside-computer-use/tools.ts +449 -0
  784. package/examples/extensions/aside-computer-use/types.ts +217 -0
  785. package/examples/extensions/aside-computer-use/url-origin.ts +132 -0
  786. package/examples/extensions/bash-spawn-hook.ts +1 -1
  787. package/examples/extensions/border-status-editor.ts +2 -2
  788. package/examples/extensions/built-in-tool-renderer.ts +1 -1
  789. package/examples/extensions/custom-compaction.ts +1 -1
  790. package/examples/extensions/custom-footer.ts +2 -2
  791. package/examples/extensions/custom-header.ts +8 -8
  792. package/examples/extensions/custom-provider-anthropic/index.ts +1 -1
  793. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  794. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  795. package/examples/extensions/custom-provider-gitlab-duo/index.ts +1 -1
  796. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  797. package/examples/extensions/custom-provider-gitlab-duo/test.ts +1 -1
  798. package/examples/extensions/doom-overlay/README.md +1 -2
  799. package/examples/extensions/doom-overlay/doom/build/doom.wasm +0 -0
  800. package/examples/extensions/doom-overlay/doom/build.sh +4 -4
  801. package/examples/extensions/doom-overlay/doom/doomgeneric_omk.c +72 -0
  802. package/examples/extensions/doom-overlay/doom-component.ts +2 -2
  803. package/examples/extensions/doom-overlay/doom-keys.ts +1 -1
  804. package/examples/extensions/git-merge-and-resolve.ts +1 -1
  805. package/examples/extensions/github-issue-autocomplete.ts +1 -6
  806. package/examples/extensions/gondolin/index.ts +1 -1
  807. package/examples/extensions/gondolin/package-lock.json +2 -2
  808. package/examples/extensions/gondolin/package.json +1 -1
  809. package/examples/extensions/handoff.ts +2 -2
  810. package/examples/extensions/hello.ts +1 -1
  811. package/examples/extensions/inline-bash.ts +1 -1
  812. package/examples/extensions/input-transform-streaming.ts +1 -1
  813. package/examples/extensions/input-transform.ts +2 -2
  814. package/examples/extensions/mac-system-theme.ts +1 -1
  815. package/examples/extensions/message-renderer.ts +1 -1
  816. package/examples/extensions/minimal-mode.ts +1 -1
  817. package/examples/extensions/modal-editor.ts +1 -1
  818. package/examples/extensions/overlay-qa-tests.ts +7 -7
  819. package/examples/extensions/overlay-test.ts +1 -1
  820. package/examples/extensions/plan-mode/index.ts +3 -3
  821. package/examples/extensions/preset.ts +4 -4
  822. package/examples/extensions/provider-payload.ts +6 -3
  823. package/examples/extensions/qna.ts +1 -1
  824. package/examples/extensions/question.ts +1 -1
  825. package/examples/extensions/questionnaire.ts +1 -1
  826. package/examples/extensions/rpc-demo.ts +1 -1
  827. package/examples/extensions/sandbox/index.ts +2 -2
  828. package/examples/extensions/sandbox/package-lock.json +2 -2
  829. package/examples/extensions/sandbox/package.json +1 -1
  830. package/examples/extensions/shutdown-command.ts +5 -5
  831. package/examples/extensions/snake.ts +1 -1
  832. package/examples/extensions/space-invaders.ts +1 -1
  833. package/examples/extensions/structured-output.ts +1 -1
  834. package/examples/extensions/subagent/agents.ts +2 -2
  835. package/examples/extensions/subagent/index.ts +19 -51
  836. package/examples/extensions/summarize.ts +2 -2
  837. package/examples/extensions/tic-tac-toe.ts +2 -2
  838. package/examples/extensions/todo.ts +2 -2
  839. package/examples/extensions/tool-override.ts +1 -1
  840. package/examples/extensions/tools.ts +1 -1
  841. package/examples/extensions/truncated-tool.ts +1 -1
  842. package/examples/extensions/with-deps/package-lock.json +2 -2
  843. package/examples/extensions/with-deps/package.json +1 -1
  844. package/examples/extensions/working-indicator.ts +3 -3
  845. package/examples/rpc-extension-ui.ts +1 -9
  846. package/examples/sdk/02-custom-model.ts +1 -1
  847. package/examples/sdk/07-context-files.ts +0 -2
  848. package/examples/sdk/12-full-control.ts +1 -1
  849. package/examples/sdk/README.md +1 -1
  850. package/npm-shrinkwrap.json +1805 -0
  851. package/package.json +10 -32
  852. package/dist/core/compaction/pruner-policy.d.ts +0 -84
  853. package/dist/core/compaction/pruner-policy.d.ts.map +0 -1
  854. package/dist/core/compaction/pruner-policy.js +0 -273
  855. package/dist/core/compaction/pruner-policy.js.map +0 -1
  856. package/dist/core/context-graph-identity-resolution.d.ts +0 -114
  857. package/dist/core/context-graph-identity-resolution.d.ts.map +0 -1
  858. package/dist/core/context-graph-identity-resolution.js +0 -127
  859. package/dist/core/context-graph-identity-resolution.js.map +0 -1
  860. package/dist/core/context-graph-memory-store.d.ts +0 -153
  861. package/dist/core/context-graph-memory-store.d.ts.map +0 -1
  862. package/dist/core/context-graph-memory-store.js +0 -377
  863. package/dist/core/context-graph-memory-store.js.map +0 -1
  864. package/dist/core/context-graph-ontology-generation.d.ts +0 -104
  865. package/dist/core/context-graph-ontology-generation.d.ts.map +0 -1
  866. package/dist/core/context-graph-ontology-generation.js +0 -135
  867. package/dist/core/context-graph-ontology-generation.js.map +0 -1
  868. package/dist/core/context-graph-ontology-registry.d.ts +0 -766
  869. package/dist/core/context-graph-ontology-registry.d.ts.map +0 -1
  870. package/dist/core/context-graph-ontology-registry.js +0 -1133
  871. package/dist/core/context-graph-ontology-registry.js.map +0 -1
  872. package/dist/core/context-graph-policy.d.ts +0 -68
  873. package/dist/core/context-graph-policy.d.ts.map +0 -1
  874. package/dist/core/context-graph-policy.js +0 -221
  875. package/dist/core/context-graph-policy.js.map +0 -1
  876. package/dist/core/context-graph-reasoning.d.ts +0 -130
  877. package/dist/core/context-graph-reasoning.d.ts.map +0 -1
  878. package/dist/core/context-graph-reasoning.js +0 -442
  879. package/dist/core/context-graph-reasoning.js.map +0 -1
  880. package/dist/core/context-graph-retrieval.d.ts +0 -120
  881. package/dist/core/context-graph-retrieval.d.ts.map +0 -1
  882. package/dist/core/context-graph-retrieval.js +0 -288
  883. package/dist/core/context-graph-retrieval.js.map +0 -1
  884. package/dist/core/contract-verification.d.ts +0 -78
  885. package/dist/core/contract-verification.d.ts.map +0 -1
  886. package/dist/core/contract-verification.js +0 -110
  887. package/dist/core/contract-verification.js.map +0 -1
  888. package/dist/core/freedom/banner.d.ts +0 -14
  889. package/dist/core/freedom/banner.d.ts.map +0 -1
  890. package/dist/core/freedom/banner.js +0 -22
  891. package/dist/core/freedom/banner.js.map +0 -1
  892. package/dist/core/freedom/config.d.ts +0 -27
  893. package/dist/core/freedom/config.d.ts.map +0 -1
  894. package/dist/core/freedom/config.js +0 -216
  895. package/dist/core/freedom/config.js.map +0 -1
  896. package/dist/core/freedom/index.d.ts +0 -23
  897. package/dist/core/freedom/index.d.ts.map +0 -1
  898. package/dist/core/freedom/index.js +0 -19
  899. package/dist/core/freedom/index.js.map +0 -1
  900. package/dist/core/freedom/policy.d.ts +0 -42
  901. package/dist/core/freedom/policy.d.ts.map +0 -1
  902. package/dist/core/freedom/policy.js +0 -47
  903. package/dist/core/freedom/policy.js.map +0 -1
  904. package/dist/core/freedom/safety-floor.d.ts +0 -73
  905. package/dist/core/freedom/safety-floor.d.ts.map +0 -1
  906. package/dist/core/freedom/safety-floor.js +0 -275
  907. package/dist/core/freedom/safety-floor.js.map +0 -1
  908. package/dist/core/harness-control-events.d.ts +0 -91
  909. package/dist/core/harness-control-events.d.ts.map +0 -1
  910. package/dist/core/harness-control-events.js +0 -514
  911. package/dist/core/harness-control-events.js.map +0 -1
  912. package/dist/core/harness-control-replay.d.ts +0 -31
  913. package/dist/core/harness-control-replay.d.ts.map +0 -1
  914. package/dist/core/harness-control-replay.js +0 -187
  915. package/dist/core/harness-control-replay.js.map +0 -1
  916. package/dist/core/headroom-middleware.d.ts +0 -35
  917. package/dist/core/headroom-middleware.d.ts.map +0 -1
  918. package/dist/core/headroom-middleware.js +0 -166
  919. package/dist/core/headroom-middleware.js.map +0 -1
  920. package/dist/core/lean-context-middleware.d.ts +0 -12
  921. package/dist/core/lean-context-middleware.d.ts.map +0 -1
  922. package/dist/core/lean-context-middleware.js +0 -87
  923. package/dist/core/lean-context-middleware.js.map +0 -1
  924. package/dist/core/lean-context-policy.d.ts +0 -45
  925. package/dist/core/lean-context-policy.d.ts.map +0 -1
  926. package/dist/core/lean-context-policy.js +0 -108
  927. package/dist/core/lean-context-policy.js.map +0 -1
  928. package/dist/core/native-adoption-benchmark.d.ts +0 -166
  929. package/dist/core/native-adoption-benchmark.d.ts.map +0 -1
  930. package/dist/core/native-adoption-benchmark.js +0 -624
  931. package/dist/core/native-adoption-benchmark.js.map +0 -1
  932. package/dist/core/observability-trace.d.ts +0 -80
  933. package/dist/core/observability-trace.d.ts.map +0 -1
  934. package/dist/core/observability-trace.js +0 -140
  935. package/dist/core/observability-trace.js.map +0 -1
  936. package/dist/core/orchestration/checkpoint.d.ts +0 -83
  937. package/dist/core/orchestration/checkpoint.d.ts.map +0 -1
  938. package/dist/core/orchestration/checkpoint.js +0 -152
  939. package/dist/core/orchestration/checkpoint.js.map +0 -1
  940. package/dist/core/orchestration/errors.d.ts +0 -74
  941. package/dist/core/orchestration/errors.d.ts.map +0 -1
  942. package/dist/core/orchestration/errors.js +0 -52
  943. package/dist/core/orchestration/errors.js.map +0 -1
  944. package/dist/core/orchestration/merge-queue.d.ts +0 -121
  945. package/dist/core/orchestration/merge-queue.d.ts.map +0 -1
  946. package/dist/core/orchestration/merge-queue.js +0 -149
  947. package/dist/core/orchestration/merge-queue.js.map +0 -1
  948. package/dist/core/orchestration/recovery.d.ts +0 -106
  949. package/dist/core/orchestration/recovery.d.ts.map +0 -1
  950. package/dist/core/orchestration/recovery.js +0 -110
  951. package/dist/core/orchestration/recovery.js.map +0 -1
  952. package/dist/core/orchestration/replay-ledger.d.ts +0 -76
  953. package/dist/core/orchestration/replay-ledger.d.ts.map +0 -1
  954. package/dist/core/orchestration/replay-ledger.js +0 -395
  955. package/dist/core/orchestration/replay-ledger.js.map +0 -1
  956. package/dist/core/orchestration/scheduler-state.d.ts +0 -78
  957. package/dist/core/orchestration/scheduler-state.d.ts.map +0 -1
  958. package/dist/core/orchestration/scheduler-state.js +0 -185
  959. package/dist/core/orchestration/scheduler-state.js.map +0 -1
  960. package/dist/core/orchestration/scheduler-store.d.ts +0 -309
  961. package/dist/core/orchestration/scheduler-store.d.ts.map +0 -1
  962. package/dist/core/orchestration/scheduler-store.js +0 -368
  963. package/dist/core/orchestration/scheduler-store.js.map +0 -1
  964. package/dist/core/orchestration/sqlite-scheduler-store.d.ts +0 -57
  965. package/dist/core/orchestration/sqlite-scheduler-store.d.ts.map +0 -1
  966. package/dist/core/orchestration/sqlite-scheduler-store.js +0 -528
  967. package/dist/core/orchestration/sqlite-scheduler-store.js.map +0 -1
  968. package/dist/core/orchestration/transaction-coordinator.d.ts +0 -217
  969. package/dist/core/orchestration/transaction-coordinator.d.ts.map +0 -1
  970. package/dist/core/orchestration/transaction-coordinator.js +0 -281
  971. package/dist/core/orchestration/transaction-coordinator.js.map +0 -1
  972. package/dist/core/orchestration/verification-contract.d.ts +0 -197
  973. package/dist/core/orchestration/verification-contract.d.ts.map +0 -1
  974. package/dist/core/orchestration/verification-contract.js +0 -145
  975. package/dist/core/orchestration/verification-contract.js.map +0 -1
  976. package/dist/core/package-composition.d.ts +0 -68
  977. package/dist/core/package-composition.d.ts.map +0 -1
  978. package/dist/core/package-composition.js +0 -304
  979. package/dist/core/package-composition.js.map +0 -1
  980. package/dist/core/package-trial-runtime.d.ts +0 -75
  981. package/dist/core/package-trial-runtime.d.ts.map +0 -1
  982. package/dist/core/package-trial-runtime.js +0 -73
  983. package/dist/core/package-trial-runtime.js.map +0 -1
  984. package/dist/core/package-trial-sandbox.d.ts +0 -27
  985. package/dist/core/package-trial-sandbox.d.ts.map +0 -1
  986. package/dist/core/package-trial-sandbox.js +0 -102
  987. package/dist/core/package-trial-sandbox.js.map +0 -1
  988. package/dist/core/policy-overlays-runtime.d.ts +0 -141
  989. package/dist/core/policy-overlays-runtime.d.ts.map +0 -1
  990. package/dist/core/policy-overlays-runtime.js +0 -720
  991. package/dist/core/policy-overlays-runtime.js.map +0 -1
  992. package/dist/core/read-anchor-registry.d.ts +0 -27
  993. package/dist/core/read-anchor-registry.d.ts.map +0 -1
  994. package/dist/core/read-anchor-registry.js +0 -103
  995. package/dist/core/read-anchor-registry.js.map +0 -1
  996. package/dist/core/read-content-cache.d.ts +0 -22
  997. package/dist/core/read-content-cache.d.ts.map +0 -1
  998. package/dist/core/read-content-cache.js +0 -79
  999. package/dist/core/read-content-cache.js.map +0 -1
  1000. package/dist/core/session-digest.d.ts +0 -57
  1001. package/dist/core/session-digest.d.ts.map +0 -1
  1002. package/dist/core/session-digest.js +0 -193
  1003. package/dist/core/session-digest.js.map +0 -1
  1004. package/dist/core/spec-kit/compiler.d.ts +0 -67
  1005. package/dist/core/spec-kit/compiler.d.ts.map +0 -1
  1006. package/dist/core/spec-kit/compiler.js +0 -268
  1007. package/dist/core/spec-kit/compiler.js.map +0 -1
  1008. package/dist/core/transaction-coordinator.d.ts +0 -30
  1009. package/dist/core/transaction-coordinator.d.ts.map +0 -1
  1010. package/dist/core/transaction-coordinator.js +0 -173
  1011. package/dist/core/transaction-coordinator.js.map +0 -1
  1012. package/dist/modes/interactive/components/mcp-selector.d.ts +0 -30
  1013. package/dist/modes/interactive/components/mcp-selector.d.ts.map +0 -1
  1014. package/dist/modes/interactive/components/mcp-selector.js +0 -155
  1015. package/dist/modes/interactive/components/mcp-selector.js.map +0 -1
  1016. package/dist/modes/interactive/components/model-selector-state.d.ts +0 -101
  1017. package/dist/modes/interactive/components/model-selector-state.d.ts.map +0 -1
  1018. package/dist/modes/interactive/components/model-selector-state.js +0 -261
  1019. package/dist/modes/interactive/components/model-selector-state.js.map +0 -1
  1020. package/dist/modes/interactive/components/skills-selector.d.ts +0 -32
  1021. package/dist/modes/interactive/components/skills-selector.d.ts.map +0 -1
  1022. package/dist/modes/interactive/components/skills-selector.js +0 -130
  1023. package/dist/modes/interactive/components/skills-selector.js.map +0 -1
  1024. package/dist/modes/interactive/theme/omk-blackboard.json +0 -91
  1025. package/dist/modes/interactive/theme/omk-freedom-grid.json +0 -91
  1026. package/dist/modes/interactive/theme/omk-neon-ops.json +0 -90
  1027. package/dist/modes/interactive/theme/omk-slate-light.json +0 -91
  1028. package/examples/extensions/doom-overlay/doom/doomgeneric_pi.c +0 -72
  1029. package/node_modules/@earendil-works/omk-agent-core/README.md +0 -488
  1030. package/node_modules/@earendil-works/omk-agent-core/dist/agent-loop.d.ts +0 -24
  1031. package/node_modules/@earendil-works/omk-agent-core/dist/agent-loop.d.ts.map +0 -1
  1032. package/node_modules/@earendil-works/omk-agent-core/dist/agent-loop.js +0 -553
  1033. package/node_modules/@earendil-works/omk-agent-core/dist/agent-loop.js.map +0 -1
  1034. package/node_modules/@earendil-works/omk-agent-core/dist/agent.d.ts +0 -118
  1035. package/node_modules/@earendil-works/omk-agent-core/dist/agent.d.ts.map +0 -1
  1036. package/node_modules/@earendil-works/omk-agent-core/dist/agent.js +0 -402
  1037. package/node_modules/@earendil-works/omk-agent-core/dist/agent.js.map +0 -1
  1038. package/node_modules/@earendil-works/omk-agent-core/dist/harness/agent-harness.d.ts +0 -95
  1039. package/node_modules/@earendil-works/omk-agent-core/dist/harness/agent-harness.d.ts.map +0 -1
  1040. package/node_modules/@earendil-works/omk-agent-core/dist/harness/agent-harness.js +0 -996
  1041. package/node_modules/@earendil-works/omk-agent-core/dist/harness/agent-harness.js.map +0 -1
  1042. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/branch-summarization.d.ts +0 -53
  1043. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/branch-summarization.d.ts.map +0 -1
  1044. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/branch-summarization.js +0 -175
  1045. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/branch-summarization.js.map +0 -1
  1046. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/compaction.d.ts +0 -117
  1047. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/compaction.d.ts.map +0 -1
  1048. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/compaction.js +0 -568
  1049. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/compaction.js.map +0 -1
  1050. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/utils.d.ts +0 -25
  1051. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/utils.d.ts.map +0 -1
  1052. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/utils.js +0 -131
  1053. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/utils.js.map +0 -1
  1054. package/node_modules/@earendil-works/omk-agent-core/dist/harness/env/nodejs.d.ts +0 -51
  1055. package/node_modules/@earendil-works/omk-agent-core/dist/harness/env/nodejs.d.ts.map +0 -1
  1056. package/node_modules/@earendil-works/omk-agent-core/dist/harness/env/nodejs.js +0 -510
  1057. package/node_modules/@earendil-works/omk-agent-core/dist/harness/env/nodejs.js.map +0 -1
  1058. package/node_modules/@earendil-works/omk-agent-core/dist/harness/messages.d.ts +0 -51
  1059. package/node_modules/@earendil-works/omk-agent-core/dist/harness/messages.d.ts.map +0 -1
  1060. package/node_modules/@earendil-works/omk-agent-core/dist/harness/messages.js +0 -102
  1061. package/node_modules/@earendil-works/omk-agent-core/dist/harness/messages.js.map +0 -1
  1062. package/node_modules/@earendil-works/omk-agent-core/dist/harness/prompt-templates.d.ts +0 -48
  1063. package/node_modules/@earendil-works/omk-agent-core/dist/harness/prompt-templates.d.ts.map +0 -1
  1064. package/node_modules/@earendil-works/omk-agent-core/dist/harness/prompt-templates.js +0 -230
  1065. package/node_modules/@earendil-works/omk-agent-core/dist/harness/prompt-templates.js.map +0 -1
  1066. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-repo.d.ts +0 -26
  1067. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-repo.d.ts.map +0 -1
  1068. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-repo.js +0 -101
  1069. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-repo.js.map +0 -1
  1070. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-storage.d.ts +0 -36
  1071. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-storage.d.ts.map +0 -1
  1072. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-storage.js +0 -273
  1073. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-storage.js.map +0 -1
  1074. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-repo.d.ts +0 -18
  1075. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-repo.d.ts.map +0 -1
  1076. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-repo.js +0 -42
  1077. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-repo.js.map +0 -1
  1078. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-storage.d.ts +0 -25
  1079. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-storage.d.ts.map +0 -1
  1080. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-storage.js +0 -114
  1081. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-storage.js.map +0 -1
  1082. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/repo-utils.d.ts +0 -11
  1083. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/repo-utils.d.ts.map +0 -1
  1084. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/repo-utils.js +0 -39
  1085. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/repo-utils.js.map +0 -1
  1086. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/session.d.ts +0 -33
  1087. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/session.d.ts.map +0 -1
  1088. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/session.js +0 -210
  1089. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/session.js.map +0 -1
  1090. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/uuid.d.ts +0 -2
  1091. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/uuid.d.ts.map +0 -1
  1092. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/uuid.js +0 -50
  1093. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/uuid.js.map +0 -1
  1094. package/node_modules/@earendil-works/omk-agent-core/dist/harness/skills.d.ts +0 -44
  1095. package/node_modules/@earendil-works/omk-agent-core/dist/harness/skills.d.ts.map +0 -1
  1096. package/node_modules/@earendil-works/omk-agent-core/dist/harness/skills.js +0 -311
  1097. package/node_modules/@earendil-works/omk-agent-core/dist/harness/skills.js.map +0 -1
  1098. package/node_modules/@earendil-works/omk-agent-core/dist/harness/system-prompt.d.ts +0 -3
  1099. package/node_modules/@earendil-works/omk-agent-core/dist/harness/system-prompt.d.ts.map +0 -1
  1100. package/node_modules/@earendil-works/omk-agent-core/dist/harness/system-prompt.js +0 -30
  1101. package/node_modules/@earendil-works/omk-agent-core/dist/harness/system-prompt.js.map +0 -1
  1102. package/node_modules/@earendil-works/omk-agent-core/dist/harness/types.d.ts +0 -616
  1103. package/node_modules/@earendil-works/omk-agent-core/dist/harness/types.d.ts.map +0 -1
  1104. package/node_modules/@earendil-works/omk-agent-core/dist/harness/types.js +0 -94
  1105. package/node_modules/@earendil-works/omk-agent-core/dist/harness/types.js.map +0 -1
  1106. package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/shell-output.d.ts +0 -14
  1107. package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/shell-output.d.ts.map +0 -1
  1108. package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/shell-output.js +0 -126
  1109. package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/shell-output.js.map +0 -1
  1110. package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/truncate.d.ts +0 -70
  1111. package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/truncate.d.ts.map +0 -1
  1112. package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/truncate.js +0 -297
  1113. package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/truncate.js.map +0 -1
  1114. package/node_modules/@earendil-works/omk-agent-core/dist/index.d.ts +0 -20
  1115. package/node_modules/@earendil-works/omk-agent-core/dist/index.d.ts.map +0 -1
  1116. package/node_modules/@earendil-works/omk-agent-core/dist/index.js +0 -25
  1117. package/node_modules/@earendil-works/omk-agent-core/dist/index.js.map +0 -1
  1118. package/node_modules/@earendil-works/omk-agent-core/dist/node.d.ts +0 -3
  1119. package/node_modules/@earendil-works/omk-agent-core/dist/node.d.ts.map +0 -1
  1120. package/node_modules/@earendil-works/omk-agent-core/dist/node.js +0 -3
  1121. package/node_modules/@earendil-works/omk-agent-core/dist/node.js.map +0 -1
  1122. package/node_modules/@earendil-works/omk-agent-core/dist/proxy.d.ts +0 -69
  1123. package/node_modules/@earendil-works/omk-agent-core/dist/proxy.d.ts.map +0 -1
  1124. package/node_modules/@earendil-works/omk-agent-core/dist/proxy.js +0 -278
  1125. package/node_modules/@earendil-works/omk-agent-core/dist/proxy.js.map +0 -1
  1126. package/node_modules/@earendil-works/omk-agent-core/dist/types.d.ts +0 -393
  1127. package/node_modules/@earendil-works/omk-agent-core/dist/types.d.ts.map +0 -1
  1128. package/node_modules/@earendil-works/omk-agent-core/dist/types.js +0 -2
  1129. package/node_modules/@earendil-works/omk-agent-core/dist/types.js.map +0 -1
  1130. package/node_modules/@earendil-works/omk-agent-core/package.json +0 -60
  1131. package/node_modules/@earendil-works/omk-ai/README.md +0 -1389
  1132. package/node_modules/@earendil-works/omk-ai/dist/api-registry.d.ts +0 -20
  1133. package/node_modules/@earendil-works/omk-ai/dist/api-registry.d.ts.map +0 -1
  1134. package/node_modules/@earendil-works/omk-ai/dist/api-registry.js +0 -44
  1135. package/node_modules/@earendil-works/omk-ai/dist/api-registry.js.map +0 -1
  1136. package/node_modules/@earendil-works/omk-ai/dist/bedrock-provider.d.ts +0 -5
  1137. package/node_modules/@earendil-works/omk-ai/dist/bedrock-provider.d.ts.map +0 -1
  1138. package/node_modules/@earendil-works/omk-ai/dist/bedrock-provider.js +0 -6
  1139. package/node_modules/@earendil-works/omk-ai/dist/bedrock-provider.js.map +0 -1
  1140. package/node_modules/@earendil-works/omk-ai/dist/cli.d.ts +0 -3
  1141. package/node_modules/@earendil-works/omk-ai/dist/cli.d.ts.map +0 -1
  1142. package/node_modules/@earendil-works/omk-ai/dist/cli.js +0 -130
  1143. package/node_modules/@earendil-works/omk-ai/dist/cli.js.map +0 -1
  1144. package/node_modules/@earendil-works/omk-ai/dist/env-api-keys.d.ts +0 -20
  1145. package/node_modules/@earendil-works/omk-ai/dist/env-api-keys.d.ts.map +0 -1
  1146. package/node_modules/@earendil-works/omk-ai/dist/env-api-keys.js +0 -199
  1147. package/node_modules/@earendil-works/omk-ai/dist/env-api-keys.js.map +0 -1
  1148. package/node_modules/@earendil-works/omk-ai/dist/image-models.d.ts +0 -10
  1149. package/node_modules/@earendil-works/omk-ai/dist/image-models.d.ts.map +0 -1
  1150. package/node_modules/@earendil-works/omk-ai/dist/image-models.generated.d.ts +0 -515
  1151. package/node_modules/@earendil-works/omk-ai/dist/image-models.generated.d.ts.map +0 -1
  1152. package/node_modules/@earendil-works/omk-ai/dist/image-models.generated.js +0 -517
  1153. package/node_modules/@earendil-works/omk-ai/dist/image-models.generated.js.map +0 -1
  1154. package/node_modules/@earendil-works/omk-ai/dist/image-models.js +0 -23
  1155. package/node_modules/@earendil-works/omk-ai/dist/image-models.js.map +0 -1
  1156. package/node_modules/@earendil-works/omk-ai/dist/images-api-registry.d.ts +0 -14
  1157. package/node_modules/@earendil-works/omk-ai/dist/images-api-registry.d.ts.map +0 -1
  1158. package/node_modules/@earendil-works/omk-ai/dist/images-api-registry.js +0 -22
  1159. package/node_modules/@earendil-works/omk-ai/dist/images-api-registry.js.map +0 -1
  1160. package/node_modules/@earendil-works/omk-ai/dist/images.d.ts +0 -4
  1161. package/node_modules/@earendil-works/omk-ai/dist/images.d.ts.map +0 -1
  1162. package/node_modules/@earendil-works/omk-ai/dist/images.js +0 -16
  1163. package/node_modules/@earendil-works/omk-ai/dist/images.js.map +0 -1
  1164. package/node_modules/@earendil-works/omk-ai/dist/index.d.ts +0 -33
  1165. package/node_modules/@earendil-works/omk-ai/dist/index.d.ts.map +0 -1
  1166. package/node_modules/@earendil-works/omk-ai/dist/index.js +0 -21
  1167. package/node_modules/@earendil-works/omk-ai/dist/index.js.map +0 -1
  1168. package/node_modules/@earendil-works/omk-ai/dist/models.d.ts +0 -18
  1169. package/node_modules/@earendil-works/omk-ai/dist/models.d.ts.map +0 -1
  1170. package/node_modules/@earendil-works/omk-ai/dist/models.generated.d.ts +0 -18762
  1171. package/node_modules/@earendil-works/omk-ai/dist/models.generated.d.ts.map +0 -1
  1172. package/node_modules/@earendil-works/omk-ai/dist/models.generated.js +0 -17197
  1173. package/node_modules/@earendil-works/omk-ai/dist/models.generated.js.map +0 -1
  1174. package/node_modules/@earendil-works/omk-ai/dist/models.js +0 -78
  1175. package/node_modules/@earendil-works/omk-ai/dist/models.js.map +0 -1
  1176. package/node_modules/@earendil-works/omk-ai/dist/oauth.d.ts +0 -2
  1177. package/node_modules/@earendil-works/omk-ai/dist/oauth.d.ts.map +0 -1
  1178. package/node_modules/@earendil-works/omk-ai/dist/oauth.js +0 -2
  1179. package/node_modules/@earendil-works/omk-ai/dist/oauth.js.map +0 -1
  1180. package/node_modules/@earendil-works/omk-ai/dist/provider-network.d.ts +0 -39
  1181. package/node_modules/@earendil-works/omk-ai/dist/provider-network.d.ts.map +0 -1
  1182. package/node_modules/@earendil-works/omk-ai/dist/provider-network.js +0 -170
  1183. package/node_modules/@earendil-works/omk-ai/dist/provider-network.js.map +0 -1
  1184. package/node_modules/@earendil-works/omk-ai/dist/providers/amazon-bedrock.d.ts +0 -38
  1185. package/node_modules/@earendil-works/omk-ai/dist/providers/amazon-bedrock.d.ts.map +0 -1
  1186. package/node_modules/@earendil-works/omk-ai/dist/providers/amazon-bedrock.js +0 -826
  1187. package/node_modules/@earendil-works/omk-ai/dist/providers/amazon-bedrock.js.map +0 -1
  1188. package/node_modules/@earendil-works/omk-ai/dist/providers/anthropic.d.ts +0 -77
  1189. package/node_modules/@earendil-works/omk-ai/dist/providers/anthropic.d.ts.map +0 -1
  1190. package/node_modules/@earendil-works/omk-ai/dist/providers/anthropic.js +0 -1123
  1191. package/node_modules/@earendil-works/omk-ai/dist/providers/anthropic.js.map +0 -1
  1192. package/node_modules/@earendil-works/omk-ai/dist/providers/azure-openai-responses.d.ts +0 -15
  1193. package/node_modules/@earendil-works/omk-ai/dist/providers/azure-openai-responses.d.ts.map +0 -1
  1194. package/node_modules/@earendil-works/omk-ai/dist/providers/azure-openai-responses.js +0 -221
  1195. package/node_modules/@earendil-works/omk-ai/dist/providers/azure-openai-responses.js.map +0 -1
  1196. package/node_modules/@earendil-works/omk-ai/dist/providers/cloudflare.d.ts +0 -13
  1197. package/node_modules/@earendil-works/omk-ai/dist/providers/cloudflare.d.ts.map +0 -1
  1198. package/node_modules/@earendil-works/omk-ai/dist/providers/cloudflare.js +0 -26
  1199. package/node_modules/@earendil-works/omk-ai/dist/providers/cloudflare.js.map +0 -1
  1200. package/node_modules/@earendil-works/omk-ai/dist/providers/faux.d.ts +0 -56
  1201. package/node_modules/@earendil-works/omk-ai/dist/providers/faux.d.ts.map +0 -1
  1202. package/node_modules/@earendil-works/omk-ai/dist/providers/faux.js +0 -368
  1203. package/node_modules/@earendil-works/omk-ai/dist/providers/faux.js.map +0 -1
  1204. package/node_modules/@earendil-works/omk-ai/dist/providers/github-copilot-headers.d.ts +0 -8
  1205. package/node_modules/@earendil-works/omk-ai/dist/providers/github-copilot-headers.d.ts.map +0 -1
  1206. package/node_modules/@earendil-works/omk-ai/dist/providers/github-copilot-headers.js +0 -29
  1207. package/node_modules/@earendil-works/omk-ai/dist/providers/github-copilot-headers.js.map +0 -1
  1208. package/node_modules/@earendil-works/omk-ai/dist/providers/google-shared.d.ts +0 -70
  1209. package/node_modules/@earendil-works/omk-ai/dist/providers/google-shared.d.ts.map +0 -1
  1210. package/node_modules/@earendil-works/omk-ai/dist/providers/google-shared.js +0 -331
  1211. package/node_modules/@earendil-works/omk-ai/dist/providers/google-shared.js.map +0 -1
  1212. package/node_modules/@earendil-works/omk-ai/dist/providers/google-vertex.d.ts +0 -15
  1213. package/node_modules/@earendil-works/omk-ai/dist/providers/google-vertex.d.ts.map +0 -1
  1214. package/node_modules/@earendil-works/omk-ai/dist/providers/google-vertex.js +0 -442
  1215. package/node_modules/@earendil-works/omk-ai/dist/providers/google-vertex.js.map +0 -1
  1216. package/node_modules/@earendil-works/omk-ai/dist/providers/google.d.ts +0 -13
  1217. package/node_modules/@earendil-works/omk-ai/dist/providers/google.d.ts.map +0 -1
  1218. package/node_modules/@earendil-works/omk-ai/dist/providers/google.js +0 -402
  1219. package/node_modules/@earendil-works/omk-ai/dist/providers/google.js.map +0 -1
  1220. package/node_modules/@earendil-works/omk-ai/dist/providers/images/openrouter.d.ts +0 -3
  1221. package/node_modules/@earendil-works/omk-ai/dist/providers/images/openrouter.d.ts.map +0 -1
  1222. package/node_modules/@earendil-works/omk-ai/dist/providers/images/openrouter.js +0 -128
  1223. package/node_modules/@earendil-works/omk-ai/dist/providers/images/openrouter.js.map +0 -1
  1224. package/node_modules/@earendil-works/omk-ai/dist/providers/images/register-builtins.d.ts +0 -4
  1225. package/node_modules/@earendil-works/omk-ai/dist/providers/images/register-builtins.d.ts.map +0 -1
  1226. package/node_modules/@earendil-works/omk-ai/dist/providers/images/register-builtins.js +0 -34
  1227. package/node_modules/@earendil-works/omk-ai/dist/providers/images/register-builtins.js.map +0 -1
  1228. package/node_modules/@earendil-works/omk-ai/dist/providers/mistral.d.ts +0 -25
  1229. package/node_modules/@earendil-works/omk-ai/dist/providers/mistral.d.ts.map +0 -1
  1230. package/node_modules/@earendil-works/omk-ai/dist/providers/mistral.js +0 -534
  1231. package/node_modules/@earendil-works/omk-ai/dist/providers/mistral.js.map +0 -1
  1232. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-codex-responses.d.ts +0 -30
  1233. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-codex-responses.d.ts.map +0 -1
  1234. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-codex-responses.js +0 -1171
  1235. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-codex-responses.js.map +0 -1
  1236. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-completions.d.ts +0 -19
  1237. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-completions.d.ts.map +0 -1
  1238. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-completions.js +0 -977
  1239. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-completions.js.map +0 -1
  1240. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-prompt-cache.d.ts +0 -11
  1241. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-prompt-cache.d.ts.map +0 -1
  1242. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-prompt-cache.js +0 -22
  1243. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-prompt-cache.js.map +0 -1
  1244. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses-shared.d.ts +0 -18
  1245. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses-shared.d.ts.map +0 -1
  1246. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses-shared.js +0 -496
  1247. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses-shared.js.map +0 -1
  1248. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses.d.ts +0 -13
  1249. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses.d.ts.map +0 -1
  1250. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses.js +0 -233
  1251. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses.js.map +0 -1
  1252. package/node_modules/@earendil-works/omk-ai/dist/providers/register-builtins.d.ts +0 -35
  1253. package/node_modules/@earendil-works/omk-ai/dist/providers/register-builtins.d.ts.map +0 -1
  1254. package/node_modules/@earendil-works/omk-ai/dist/providers/register-builtins.js +0 -254
  1255. package/node_modules/@earendil-works/omk-ai/dist/providers/register-builtins.js.map +0 -1
  1256. package/node_modules/@earendil-works/omk-ai/dist/providers/simple-options.d.ts +0 -8
  1257. package/node_modules/@earendil-works/omk-ai/dist/providers/simple-options.d.ts.map +0 -1
  1258. package/node_modules/@earendil-works/omk-ai/dist/providers/simple-options.js +0 -42
  1259. package/node_modules/@earendil-works/omk-ai/dist/providers/simple-options.js.map +0 -1
  1260. package/node_modules/@earendil-works/omk-ai/dist/providers/tool-schema.d.ts +0 -13
  1261. package/node_modules/@earendil-works/omk-ai/dist/providers/tool-schema.d.ts.map +0 -1
  1262. package/node_modules/@earendil-works/omk-ai/dist/providers/tool-schema.js +0 -82
  1263. package/node_modules/@earendil-works/omk-ai/dist/providers/tool-schema.js.map +0 -1
  1264. package/node_modules/@earendil-works/omk-ai/dist/providers/transform-messages.d.ts +0 -8
  1265. package/node_modules/@earendil-works/omk-ai/dist/providers/transform-messages.d.ts.map +0 -1
  1266. package/node_modules/@earendil-works/omk-ai/dist/providers/transform-messages.js +0 -184
  1267. package/node_modules/@earendil-works/omk-ai/dist/providers/transform-messages.js.map +0 -1
  1268. package/node_modules/@earendil-works/omk-ai/dist/session-resources.d.ts +0 -4
  1269. package/node_modules/@earendil-works/omk-ai/dist/session-resources.d.ts.map +0 -1
  1270. package/node_modules/@earendil-works/omk-ai/dist/session-resources.js +0 -22
  1271. package/node_modules/@earendil-works/omk-ai/dist/session-resources.js.map +0 -1
  1272. package/node_modules/@earendil-works/omk-ai/dist/stream.d.ts +0 -8
  1273. package/node_modules/@earendil-works/omk-ai/dist/stream.d.ts.map +0 -1
  1274. package/node_modules/@earendil-works/omk-ai/dist/stream.js +0 -77
  1275. package/node_modules/@earendil-works/omk-ai/dist/stream.js.map +0 -1
  1276. package/node_modules/@earendil-works/omk-ai/dist/types.d.ts +0 -570
  1277. package/node_modules/@earendil-works/omk-ai/dist/types.d.ts.map +0 -1
  1278. package/node_modules/@earendil-works/omk-ai/dist/types.js +0 -2
  1279. package/node_modules/@earendil-works/omk-ai/dist/types.js.map +0 -1
  1280. package/node_modules/@earendil-works/omk-ai/dist/utils/abort-signals.d.ts +0 -6
  1281. package/node_modules/@earendil-works/omk-ai/dist/utils/abort-signals.d.ts.map +0 -1
  1282. package/node_modules/@earendil-works/omk-ai/dist/utils/abort-signals.js +0 -34
  1283. package/node_modules/@earendil-works/omk-ai/dist/utils/abort-signals.js.map +0 -1
  1284. package/node_modules/@earendil-works/omk-ai/dist/utils/diagnostics.d.ts +0 -19
  1285. package/node_modules/@earendil-works/omk-ai/dist/utils/diagnostics.d.ts.map +0 -1
  1286. package/node_modules/@earendil-works/omk-ai/dist/utils/diagnostics.js +0 -25
  1287. package/node_modules/@earendil-works/omk-ai/dist/utils/diagnostics.js.map +0 -1
  1288. package/node_modules/@earendil-works/omk-ai/dist/utils/event-stream.d.ts +0 -21
  1289. package/node_modules/@earendil-works/omk-ai/dist/utils/event-stream.d.ts.map +0 -1
  1290. package/node_modules/@earendil-works/omk-ai/dist/utils/event-stream.js +0 -81
  1291. package/node_modules/@earendil-works/omk-ai/dist/utils/event-stream.js.map +0 -1
  1292. package/node_modules/@earendil-works/omk-ai/dist/utils/hash.d.ts +0 -3
  1293. package/node_modules/@earendil-works/omk-ai/dist/utils/hash.d.ts.map +0 -1
  1294. package/node_modules/@earendil-works/omk-ai/dist/utils/hash.js +0 -14
  1295. package/node_modules/@earendil-works/omk-ai/dist/utils/hash.js.map +0 -1
  1296. package/node_modules/@earendil-works/omk-ai/dist/utils/headers.d.ts +0 -2
  1297. package/node_modules/@earendil-works/omk-ai/dist/utils/headers.d.ts.map +0 -1
  1298. package/node_modules/@earendil-works/omk-ai/dist/utils/headers.js +0 -8
  1299. package/node_modules/@earendil-works/omk-ai/dist/utils/headers.js.map +0 -1
  1300. package/node_modules/@earendil-works/omk-ai/dist/utils/json-parse.d.ts +0 -16
  1301. package/node_modules/@earendil-works/omk-ai/dist/utils/json-parse.d.ts.map +0 -1
  1302. package/node_modules/@earendil-works/omk-ai/dist/utils/json-parse.js +0 -113
  1303. package/node_modules/@earendil-works/omk-ai/dist/utils/json-parse.js.map +0 -1
  1304. package/node_modules/@earendil-works/omk-ai/dist/utils/node-http-proxy.d.ts +0 -10
  1305. package/node_modules/@earendil-works/omk-ai/dist/utils/node-http-proxy.d.ts.map +0 -1
  1306. package/node_modules/@earendil-works/omk-ai/dist/utils/node-http-proxy.js +0 -97
  1307. package/node_modules/@earendil-works/omk-ai/dist/utils/node-http-proxy.js.map +0 -1
  1308. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/anthropic.d.ts +0 -25
  1309. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/anthropic.d.ts.map +0 -1
  1310. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/anthropic.js +0 -335
  1311. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/anthropic.js.map +0 -1
  1312. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/device-code.d.ts +0 -21
  1313. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/device-code.d.ts.map +0 -1
  1314. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/device-code.js +0 -56
  1315. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/device-code.js.map +0 -1
  1316. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/github-copilot.d.ts +0 -30
  1317. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/github-copilot.d.ts.map +0 -1
  1318. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/github-copilot.js +0 -280
  1319. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/github-copilot.js.map +0 -1
  1320. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/index.d.ts +0 -58
  1321. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/index.d.ts.map +0 -1
  1322. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/index.js +0 -122
  1323. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/index.js.map +0 -1
  1324. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/oauth-page.d.ts +0 -3
  1325. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/oauth-page.d.ts.map +0 -1
  1326. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/oauth-page.js +0 -105
  1327. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/oauth-page.js.map +0 -1
  1328. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/openai-codex.d.ts +0 -43
  1329. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/openai-codex.d.ts.map +0 -1
  1330. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/openai-codex.js +0 -487
  1331. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/openai-codex.js.map +0 -1
  1332. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/pkce.d.ts +0 -13
  1333. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/pkce.d.ts.map +0 -1
  1334. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/pkce.js +0 -31
  1335. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/pkce.js.map +0 -1
  1336. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/types.d.ts +0 -64
  1337. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/types.d.ts.map +0 -1
  1338. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/types.js +0 -2
  1339. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/types.js.map +0 -1
  1340. package/node_modules/@earendil-works/omk-ai/dist/utils/overflow.d.ts +0 -57
  1341. package/node_modules/@earendil-works/omk-ai/dist/utils/overflow.d.ts.map +0 -1
  1342. package/node_modules/@earendil-works/omk-ai/dist/utils/overflow.js +0 -154
  1343. package/node_modules/@earendil-works/omk-ai/dist/utils/overflow.js.map +0 -1
  1344. package/node_modules/@earendil-works/omk-ai/dist/utils/sanitize-unicode.d.ts +0 -22
  1345. package/node_modules/@earendil-works/omk-ai/dist/utils/sanitize-unicode.d.ts.map +0 -1
  1346. package/node_modules/@earendil-works/omk-ai/dist/utils/sanitize-unicode.js +0 -26
  1347. package/node_modules/@earendil-works/omk-ai/dist/utils/sanitize-unicode.js.map +0 -1
  1348. package/node_modules/@earendil-works/omk-ai/dist/utils/typebox-helpers.d.ts +0 -17
  1349. package/node_modules/@earendil-works/omk-ai/dist/utils/typebox-helpers.d.ts.map +0 -1
  1350. package/node_modules/@earendil-works/omk-ai/dist/utils/typebox-helpers.js +0 -21
  1351. package/node_modules/@earendil-works/omk-ai/dist/utils/typebox-helpers.js.map +0 -1
  1352. package/node_modules/@earendil-works/omk-ai/dist/utils/validation.d.ts +0 -18
  1353. package/node_modules/@earendil-works/omk-ai/dist/utils/validation.d.ts.map +0 -1
  1354. package/node_modules/@earendil-works/omk-ai/dist/utils/validation.js +0 -281
  1355. package/node_modules/@earendil-works/omk-ai/dist/utils/validation.js.map +0 -1
  1356. package/node_modules/@earendil-works/omk-ai/package.json +0 -106
  1357. package/node_modules/@earendil-works/omk-tui/README.md +0 -791
  1358. package/node_modules/@earendil-works/omk-tui/dist/autocomplete.d.ts +0 -54
  1359. package/node_modules/@earendil-works/omk-tui/dist/autocomplete.d.ts.map +0 -1
  1360. package/node_modules/@earendil-works/omk-tui/dist/autocomplete.js +0 -632
  1361. package/node_modules/@earendil-works/omk-tui/dist/autocomplete.js.map +0 -1
  1362. package/node_modules/@earendil-works/omk-tui/dist/components/box.d.ts +0 -22
  1363. package/node_modules/@earendil-works/omk-tui/dist/components/box.d.ts.map +0 -1
  1364. package/node_modules/@earendil-works/omk-tui/dist/components/box.js +0 -104
  1365. package/node_modules/@earendil-works/omk-tui/dist/components/box.js.map +0 -1
  1366. package/node_modules/@earendil-works/omk-tui/dist/components/cancellable-loader.d.ts +0 -22
  1367. package/node_modules/@earendil-works/omk-tui/dist/components/cancellable-loader.d.ts.map +0 -1
  1368. package/node_modules/@earendil-works/omk-tui/dist/components/cancellable-loader.js +0 -35
  1369. package/node_modules/@earendil-works/omk-tui/dist/components/cancellable-loader.js.map +0 -1
  1370. package/node_modules/@earendil-works/omk-tui/dist/components/editor.d.ts +0 -249
  1371. package/node_modules/@earendil-works/omk-tui/dist/components/editor.d.ts.map +0 -1
  1372. package/node_modules/@earendil-works/omk-tui/dist/components/editor.js +0 -1857
  1373. package/node_modules/@earendil-works/omk-tui/dist/components/editor.js.map +0 -1
  1374. package/node_modules/@earendil-works/omk-tui/dist/components/image.d.ts +0 -28
  1375. package/node_modules/@earendil-works/omk-tui/dist/components/image.d.ts.map +0 -1
  1376. package/node_modules/@earendil-works/omk-tui/dist/components/image.js +0 -89
  1377. package/node_modules/@earendil-works/omk-tui/dist/components/image.js.map +0 -1
  1378. package/node_modules/@earendil-works/omk-tui/dist/components/input.d.ts +0 -37
  1379. package/node_modules/@earendil-works/omk-tui/dist/components/input.d.ts.map +0 -1
  1380. package/node_modules/@earendil-works/omk-tui/dist/components/input.js +0 -378
  1381. package/node_modules/@earendil-works/omk-tui/dist/components/input.js.map +0 -1
  1382. package/node_modules/@earendil-works/omk-tui/dist/components/loader.d.ts +0 -31
  1383. package/node_modules/@earendil-works/omk-tui/dist/components/loader.d.ts.map +0 -1
  1384. package/node_modules/@earendil-works/omk-tui/dist/components/loader.js +0 -69
  1385. package/node_modules/@earendil-works/omk-tui/dist/components/loader.js.map +0 -1
  1386. package/node_modules/@earendil-works/omk-tui/dist/components/markdown.d.ts +0 -96
  1387. package/node_modules/@earendil-works/omk-tui/dist/components/markdown.d.ts.map +0 -1
  1388. package/node_modules/@earendil-works/omk-tui/dist/components/markdown.js +0 -644
  1389. package/node_modules/@earendil-works/omk-tui/dist/components/markdown.js.map +0 -1
  1390. package/node_modules/@earendil-works/omk-tui/dist/components/select-list.d.ts +0 -50
  1391. package/node_modules/@earendil-works/omk-tui/dist/components/select-list.d.ts.map +0 -1
  1392. package/node_modules/@earendil-works/omk-tui/dist/components/select-list.js +0 -159
  1393. package/node_modules/@earendil-works/omk-tui/dist/components/select-list.js.map +0 -1
  1394. package/node_modules/@earendil-works/omk-tui/dist/components/settings-list.d.ts +0 -50
  1395. package/node_modules/@earendil-works/omk-tui/dist/components/settings-list.d.ts.map +0 -1
  1396. package/node_modules/@earendil-works/omk-tui/dist/components/settings-list.js +0 -185
  1397. package/node_modules/@earendil-works/omk-tui/dist/components/settings-list.js.map +0 -1
  1398. package/node_modules/@earendil-works/omk-tui/dist/components/spacer.d.ts +0 -12
  1399. package/node_modules/@earendil-works/omk-tui/dist/components/spacer.d.ts.map +0 -1
  1400. package/node_modules/@earendil-works/omk-tui/dist/components/spacer.js +0 -23
  1401. package/node_modules/@earendil-works/omk-tui/dist/components/spacer.js.map +0 -1
  1402. package/node_modules/@earendil-works/omk-tui/dist/components/text.d.ts +0 -19
  1403. package/node_modules/@earendil-works/omk-tui/dist/components/text.d.ts.map +0 -1
  1404. package/node_modules/@earendil-works/omk-tui/dist/components/text.js +0 -89
  1405. package/node_modules/@earendil-works/omk-tui/dist/components/text.js.map +0 -1
  1406. package/node_modules/@earendil-works/omk-tui/dist/components/truncated-text.d.ts +0 -13
  1407. package/node_modules/@earendil-works/omk-tui/dist/components/truncated-text.d.ts.map +0 -1
  1408. package/node_modules/@earendil-works/omk-tui/dist/components/truncated-text.js +0 -51
  1409. package/node_modules/@earendil-works/omk-tui/dist/components/truncated-text.js.map +0 -1
  1410. package/node_modules/@earendil-works/omk-tui/dist/editor-component.d.ts +0 -39
  1411. package/node_modules/@earendil-works/omk-tui/dist/editor-component.d.ts.map +0 -1
  1412. package/node_modules/@earendil-works/omk-tui/dist/editor-component.js +0 -2
  1413. package/node_modules/@earendil-works/omk-tui/dist/editor-component.js.map +0 -1
  1414. package/node_modules/@earendil-works/omk-tui/dist/fuzzy.d.ts +0 -16
  1415. package/node_modules/@earendil-works/omk-tui/dist/fuzzy.d.ts.map +0 -1
  1416. package/node_modules/@earendil-works/omk-tui/dist/fuzzy.js +0 -110
  1417. package/node_modules/@earendil-works/omk-tui/dist/fuzzy.js.map +0 -1
  1418. package/node_modules/@earendil-works/omk-tui/dist/index.d.ts +0 -23
  1419. package/node_modules/@earendil-works/omk-tui/dist/index.d.ts.map +0 -1
  1420. package/node_modules/@earendil-works/omk-tui/dist/index.js +0 -32
  1421. package/node_modules/@earendil-works/omk-tui/dist/index.js.map +0 -1
  1422. package/node_modules/@earendil-works/omk-tui/dist/keybindings.d.ts +0 -212
  1423. package/node_modules/@earendil-works/omk-tui/dist/keybindings.d.ts.map +0 -1
  1424. package/node_modules/@earendil-works/omk-tui/dist/keybindings.js +0 -252
  1425. package/node_modules/@earendil-works/omk-tui/dist/keybindings.js.map +0 -1
  1426. package/node_modules/@earendil-works/omk-tui/dist/keys.d.ts +0 -184
  1427. package/node_modules/@earendil-works/omk-tui/dist/keys.d.ts.map +0 -1
  1428. package/node_modules/@earendil-works/omk-tui/dist/keys.js +0 -1173
  1429. package/node_modules/@earendil-works/omk-tui/dist/keys.js.map +0 -1
  1430. package/node_modules/@earendil-works/omk-tui/dist/kill-ring.d.ts +0 -28
  1431. package/node_modules/@earendil-works/omk-tui/dist/kill-ring.d.ts.map +0 -1
  1432. package/node_modules/@earendil-works/omk-tui/dist/kill-ring.js +0 -44
  1433. package/node_modules/@earendil-works/omk-tui/dist/kill-ring.js.map +0 -1
  1434. package/node_modules/@earendil-works/omk-tui/dist/native-modifiers.d.ts +0 -3
  1435. package/node_modules/@earendil-works/omk-tui/dist/native-modifiers.d.ts.map +0 -1
  1436. package/node_modules/@earendil-works/omk-tui/dist/native-modifiers.js +0 -53
  1437. package/node_modules/@earendil-works/omk-tui/dist/native-modifiers.js.map +0 -1
  1438. package/node_modules/@earendil-works/omk-tui/dist/stdin-buffer.d.ts +0 -50
  1439. package/node_modules/@earendil-works/omk-tui/dist/stdin-buffer.d.ts.map +0 -1
  1440. package/node_modules/@earendil-works/omk-tui/dist/stdin-buffer.js +0 -361
  1441. package/node_modules/@earendil-works/omk-tui/dist/stdin-buffer.js.map +0 -1
  1442. package/node_modules/@earendil-works/omk-tui/dist/terminal-image.d.ts +0 -90
  1443. package/node_modules/@earendil-works/omk-tui/dist/terminal-image.d.ts.map +0 -1
  1444. package/node_modules/@earendil-works/omk-tui/dist/terminal-image.js +0 -366
  1445. package/node_modules/@earendil-works/omk-tui/dist/terminal-image.js.map +0 -1
  1446. package/node_modules/@earendil-works/omk-tui/dist/terminal.d.ts +0 -113
  1447. package/node_modules/@earendil-works/omk-tui/dist/terminal.d.ts.map +0 -1
  1448. package/node_modules/@earendil-works/omk-tui/dist/terminal.js +0 -472
  1449. package/node_modules/@earendil-works/omk-tui/dist/terminal.js.map +0 -1
  1450. package/node_modules/@earendil-works/omk-tui/dist/tui.d.ts +0 -242
  1451. package/node_modules/@earendil-works/omk-tui/dist/tui.d.ts.map +0 -1
  1452. package/node_modules/@earendil-works/omk-tui/dist/tui.js +0 -1221
  1453. package/node_modules/@earendil-works/omk-tui/dist/tui.js.map +0 -1
  1454. package/node_modules/@earendil-works/omk-tui/dist/undo-stack.d.ts +0 -17
  1455. package/node_modules/@earendil-works/omk-tui/dist/undo-stack.d.ts.map +0 -1
  1456. package/node_modules/@earendil-works/omk-tui/dist/undo-stack.js +0 -25
  1457. package/node_modules/@earendil-works/omk-tui/dist/undo-stack.js.map +0 -1
  1458. package/node_modules/@earendil-works/omk-tui/dist/utils.d.ts +0 -84
  1459. package/node_modules/@earendil-works/omk-tui/dist/utils.d.ts.map +0 -1
  1460. package/node_modules/@earendil-works/omk-tui/dist/utils.js +0 -1032
  1461. package/node_modules/@earendil-works/omk-tui/dist/utils.js.map +0 -1
  1462. package/node_modules/@earendil-works/omk-tui/dist/word-navigation.d.ts +0 -25
  1463. package/node_modules/@earendil-works/omk-tui/dist/word-navigation.d.ts.map +0 -1
  1464. package/node_modules/@earendil-works/omk-tui/dist/word-navigation.js +0 -96
  1465. package/node_modules/@earendil-works/omk-tui/dist/word-navigation.js.map +0 -1
  1466. package/node_modules/@earendil-works/omk-tui/native/darwin/prebuilds/darwin-arm64/darwin-modifiers.node +0 -0
  1467. package/node_modules/@earendil-works/omk-tui/native/darwin/prebuilds/darwin-x64/darwin-modifiers.node +0 -0
  1468. package/node_modules/@earendil-works/omk-tui/native/win32/prebuilds/win32-arm64/win32-console-mode.node +0 -0
  1469. package/node_modules/@earendil-works/omk-tui/native/win32/prebuilds/win32-x64/win32-console-mode.node +0 -0
  1470. package/node_modules/@earendil-works/omk-tui/package.json +0 -47
@@ -1,217 +0,0 @@
1
- /**
2
- * Phase 1: fail-closed, ledger-gated transaction coordinator (pure algorithms).
3
- *
4
- * These functions are deterministic and side-effect free except through the
5
- * injected in-memory transaction/store callbacks. No SQLite or filesystem is
6
- * wired here; the real durable store is injected later. The invariant enforced
7
- * is: no state-changing mutation commits unless its required ledger event was
8
- * durably appended (JSONL fsync) and mirrored, in that order.
9
- *
10
- * Reference: .omk/runs/omk-autonomous-harness-remediation-plan/algorithm-plan.md
11
- * (Phase 1) and audit-transaction.md.
12
- */
13
- import { type TransactionPhase } from "./errors.ts";
14
- /**
15
- * A canonical, content-addressed ledger event record. `eventHash` is derived
16
- * deterministically from the identity + state hashes, which is what makes
17
- * idempotency detection (same key + same hash => no-op) reliable.
18
- */
19
- export interface LedgerRecord {
20
- operationId: string;
21
- runId: string;
22
- nodeId: string;
23
- eventType: string;
24
- phase: TransactionPhase;
25
- idempotencyKey: string;
26
- beforeStateHash: string;
27
- afterStateHash: string;
28
- eventHash: string;
29
- attemptId?: string;
30
- }
31
- /**
32
- * Identity + intent for a single ledger-gated mutation. `mutate` is pure: it
33
- * receives the snapshot and returns the staged next state without committing.
34
- */
35
- export interface LedgerGatedTransactionRequest<S> {
36
- runId: string;
37
- nodeId: string;
38
- operationId: string;
39
- eventType: string;
40
- phase: TransactionPhase;
41
- idempotencyKey: string;
42
- mutate: (before: S) => S;
43
- attemptId?: string;
44
- }
45
- /**
46
- * Injected transaction handle (a single `BEGIN IMMEDIATE` scope). The fake used
47
- * in tests and the real SQLite-backed handle implement this surface.
48
- *
49
- * Contract:
50
- * - `appendRequiredEvent` simulates the durable JSONL append + fsync. It escapes
51
- * transactional rollback (an appended event stays on disk).
52
- * - `mirrorEvent` stages the SQLite mirror insert inside the open transaction.
53
- * - `commit` applies the staged mirror + state; `rollback` discards them.
54
- */
55
- export interface LedgerGatedTransactionHandle<S> {
56
- snapshot: () => S;
57
- findByIdempotencyKey: (key: string) => LedgerRecord | undefined;
58
- appendRequiredEvent: (record: LedgerRecord) => void;
59
- mirrorEvent: (record: LedgerRecord) => void;
60
- commit: (state: S) => void;
61
- rollback: () => void;
62
- }
63
- export interface LedgerGatedTransactionDeps<S> {
64
- begin: () => LedgerGatedTransactionHandle<S>;
65
- hashState?: (state: S) => string;
66
- }
67
- export type LedgerGatedTransactionStatus = "committed" | "noop";
68
- export interface LedgerGatedTransactionResult<S> {
69
- status: LedgerGatedTransactionStatus;
70
- applied: boolean;
71
- record: LedgerRecord;
72
- state: S;
73
- }
74
- /**
75
- * Default state hash. Callers with non-JSON state must inject `hashState`.
76
- */
77
- export declare function coordinatorStateHash(state: unknown): string;
78
- /**
79
- * Deterministically derive a content hash for a ledger event from its identity
80
- * and state transition. Volatile fields are excluded so replays are stable.
81
- */
82
- export declare function computeCoordinatorEventHash(input: {
83
- operationId: string;
84
- runId: string;
85
- nodeId: string;
86
- eventType: string;
87
- phase: TransactionPhase;
88
- idempotencyKey: string;
89
- beforeStateHash: string;
90
- afterStateHash: string;
91
- attemptId?: string;
92
- }): string;
93
- /**
94
- * Build a complete ledger record (including `eventHash`) from a request and the
95
- * computed before/after state hashes.
96
- */
97
- export declare function buildLedgerRecord(request: {
98
- operationId: string;
99
- runId: string;
100
- nodeId: string;
101
- eventType: string;
102
- phase: TransactionPhase;
103
- idempotencyKey: string;
104
- attemptId?: string;
105
- }, beforeStateHash: string, afterStateHash: string): LedgerRecord;
106
- /**
107
- * Run one fail-closed, ledger-gated state-changing transaction.
108
- *
109
- * ```text
110
- * BEGIN IMMEDIATE
111
- * before = snapshot()
112
- * staged = mutate(before) # no commit yet
113
- * record = ledger event with before/after state hashes
114
- * idempotency:
115
- * same key + same eventHash -> rollback, no-op
116
- * same key + different hash -> rollback, IDEMPOTENCY_CONFLICT
117
- * appendRequiredEvent(record) # durable JSONL append + fsync
118
- * fail -> rollback, LEDGER_APPEND_REQUIRED_FAILED
119
- * mirrorEvent(record) # same transaction
120
- * fail -> rollback, SQLITE_MIRROR_FAILED (ledger durable; replay repairs)
121
- * commit(staged)
122
- * fail -> rollback, SQLITE_COMMIT_AFTER_LEDGER_FAILED (ledger durable)
123
- * ```
124
- *
125
- * Any failure leaves the injected store unmutated (transaction rolled back);
126
- * only the durable ledger append can survive, which recovery/replay reconciles.
127
- */
128
- export declare function runLedgerGatedTransaction<S>(deps: LedgerGatedTransactionDeps<S>, request: LedgerGatedTransactionRequest<S>): LedgerGatedTransactionResult<S>;
129
- /**
130
- * A single side-effecting step that must record a receipt after its side effect.
131
- * Each step declares a stable `receiptId` so a durable receipt can short-circuit
132
- * re-execution on replay.
133
- */
134
- export interface ReceiptedStep {
135
- id: string;
136
- receiptId: string;
137
- sequence: number;
138
- idempotent: boolean;
139
- beforeStateHash: string;
140
- afterStateHash: string;
141
- run: () => void;
142
- }
143
- export interface ReceiptHandle {
144
- findReceipt: (receiptId: string) => LedgerRecord | undefined;
145
- appendReceiptEvent: (record: LedgerRecord) => void;
146
- }
147
- export interface ReceiptApplyRequest {
148
- runId: string;
149
- nodeId: string;
150
- operationId: string;
151
- attemptId?: string;
152
- eventType?: string;
153
- steps: readonly ReceiptedStep[];
154
- }
155
- export type ReceiptApplyStatus = "completed" | "in_doubt";
156
- export interface ReceiptApplyResult {
157
- status: ReceiptApplyStatus;
158
- executedStepIds: string[];
159
- skippedStepIds: string[];
160
- appliedReceipts: LedgerRecord[];
161
- stoppedAtStepId?: string;
162
- reason?: string;
163
- }
164
- /**
165
- * Apply side-effecting steps in deterministic sequence order, recording a
166
- * required receipt after each side effect.
167
- *
168
- * Fail-closed rule (algorithm-plan Phase 1, test 3): if a receipt append fails
169
- * after its side effect ran, stop executing further side effects and return
170
- * `in_doubt` — UNLESS a durable idempotent receipt for that step exists, in
171
- * which case the side effect is provably recorded and execution continues.
172
- *
173
- * Steps whose receipt is already durably recorded are skipped (idempotent
174
- * replay) and never re-run.
175
- */
176
- export declare function applyReceiptedSteps(handle: ReceiptHandle, request: ReceiptApplyRequest): ReceiptApplyResult;
177
- /**
178
- * A registered compensator and its forward-execution status.
179
- */
180
- export interface CompensatorExecutionStep {
181
- id: string;
182
- sequence: number;
183
- idempotent: boolean;
184
- applied: boolean;
185
- run: () => void;
186
- }
187
- export interface CompensationHandle {
188
- appendCompensationStart: (record: LedgerRecord) => void;
189
- appendCompensationReceipt: (record: LedgerRecord) => void;
190
- }
191
- export interface GatedCompensationRequest {
192
- runId: string;
193
- nodeId: string;
194
- operationId: string;
195
- idempotencyKey: string;
196
- beforeStateHash: string;
197
- afterStateHash: string;
198
- attemptId?: string;
199
- steps: readonly CompensatorExecutionStep[];
200
- }
201
- export interface GatedCompensationResult {
202
- status: "rolled_back";
203
- executedStepIds: string[];
204
- receipts: LedgerRecord[];
205
- }
206
- /**
207
- * Run compensation fail-closed (algorithm-plan Phase 1, test 4 + invariant I7).
208
- *
209
- * 1. Refuse to auto-compensate if any NON-idempotent step was already applied
210
- * (state is ambiguous): throw COMPENSATION_FAILED before anything runs.
211
- * 2. The compensation start is itself ledger-gated: if its required event cannot
212
- * be appended, throw RequiredAuditWriteError and run NO compensators.
213
- * 3. Only idempotent compensators run, in reverse execution order, each
214
- * recording a compensation receipt.
215
- */
216
- export declare function runGatedCompensation(handle: CompensationHandle, request: GatedCompensationRequest): GatedCompensationResult;
217
- //# sourceMappingURL=transaction-coordinator.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transaction-coordinator.d.ts","sourceRoot":"","sources":["../../../src/core/orchestration/transaction-coordinator.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Phase 1: fail-closed, ledger-gated transaction coordinator (pure algorithms).\n *\n * These functions are deterministic and side-effect free except through the\n * injected in-memory transaction/store callbacks. No SQLite or filesystem is\n * wired here; the real durable store is injected later. The invariant enforced\n * is: no state-changing mutation commits unless its required ledger event was\n * durably appended (JSONL fsync) and mirrored, in that order.\n *\n * Reference: .omk/runs/omk-autonomous-harness-remediation-plan/algorithm-plan.md\n * (Phase 1) and audit-transaction.md.\n */\n\nimport {\n\tCoordinatorError,\n\ttype CoordinatorRecoverability,\n\tRequiredAuditWriteError,\n\ttype TransactionPhase,\n} from \"./errors.ts\";\nimport { type JsonValue, sha256Hex, stableStringify } from \"./replay-ledger.ts\";\n\n/**\n * A canonical, content-addressed ledger event record. `eventHash` is derived\n * deterministically from the identity + state hashes, which is what makes\n * idempotency detection (same key + same hash => no-op) reliable.\n */\nexport interface LedgerRecord {\n\toperationId: string;\n\trunId: string;\n\tnodeId: string;\n\teventType: string;\n\tphase: TransactionPhase;\n\tidempotencyKey: string;\n\tbeforeStateHash: string;\n\tafterStateHash: string;\n\teventHash: string;\n\tattemptId?: string;\n}\n\n/**\n * Identity + intent for a single ledger-gated mutation. `mutate` is pure: it\n * receives the snapshot and returns the staged next state without committing.\n */\nexport interface LedgerGatedTransactionRequest<S> {\n\trunId: string;\n\tnodeId: string;\n\toperationId: string;\n\teventType: string;\n\tphase: TransactionPhase;\n\tidempotencyKey: string;\n\tmutate: (before: S) => S;\n\tattemptId?: string;\n}\n\n/**\n * Injected transaction handle (a single `BEGIN IMMEDIATE` scope). The fake used\n * in tests and the real SQLite-backed handle implement this surface.\n *\n * Contract:\n * - `appendRequiredEvent` simulates the durable JSONL append + fsync. It escapes\n * transactional rollback (an appended event stays on disk).\n * - `mirrorEvent` stages the SQLite mirror insert inside the open transaction.\n * - `commit` applies the staged mirror + state; `rollback` discards them.\n */\nexport interface LedgerGatedTransactionHandle<S> {\n\tsnapshot: () => S;\n\tfindByIdempotencyKey: (key: string) => LedgerRecord | undefined;\n\tappendRequiredEvent: (record: LedgerRecord) => void;\n\tmirrorEvent: (record: LedgerRecord) => void;\n\tcommit: (state: S) => void;\n\trollback: () => void;\n}\n\nexport interface LedgerGatedTransactionDeps<S> {\n\tbegin: () => LedgerGatedTransactionHandle<S>;\n\thashState?: (state: S) => string;\n}\n\nexport type LedgerGatedTransactionStatus = \"committed\" | \"noop\";\n\nexport interface LedgerGatedTransactionResult<S> {\n\tstatus: LedgerGatedTransactionStatus;\n\tapplied: boolean;\n\trecord: LedgerRecord;\n\tstate: S;\n}\n\n/**\n * Default state hash. Callers with non-JSON state must inject `hashState`.\n */\nexport function coordinatorStateHash(state: unknown): string {\n\treturn sha256Hex(stableStringify(state as JsonValue));\n}\n\n/**\n * Deterministically derive a content hash for a ledger event from its identity\n * and state transition. Volatile fields are excluded so replays are stable.\n */\nexport function computeCoordinatorEventHash(input: {\n\toperationId: string;\n\trunId: string;\n\tnodeId: string;\n\teventType: string;\n\tphase: TransactionPhase;\n\tidempotencyKey: string;\n\tbeforeStateHash: string;\n\tafterStateHash: string;\n\tattemptId?: string;\n}): string {\n\tconst canonical: { readonly [key: string]: JsonValue } = {\n\t\toperationId: input.operationId,\n\t\trunId: input.runId,\n\t\tnodeId: input.nodeId,\n\t\teventType: input.eventType,\n\t\tphase: input.phase,\n\t\tidempotencyKey: input.idempotencyKey,\n\t\tbeforeStateHash: input.beforeStateHash,\n\t\tafterStateHash: input.afterStateHash,\n\t\tattemptId: input.attemptId ?? null,\n\t};\n\treturn sha256Hex(stableStringify(canonical));\n}\n\n/**\n * Build a complete ledger record (including `eventHash`) from a request and the\n * computed before/after state hashes.\n */\nexport function buildLedgerRecord(\n\trequest: {\n\t\toperationId: string;\n\t\trunId: string;\n\t\tnodeId: string;\n\t\teventType: string;\n\t\tphase: TransactionPhase;\n\t\tidempotencyKey: string;\n\t\tattemptId?: string;\n\t},\n\tbeforeStateHash: string,\n\tafterStateHash: string,\n): LedgerRecord {\n\tconst eventHash = computeCoordinatorEventHash({\n\t\toperationId: request.operationId,\n\t\trunId: request.runId,\n\t\tnodeId: request.nodeId,\n\t\teventType: request.eventType,\n\t\tphase: request.phase,\n\t\tidempotencyKey: request.idempotencyKey,\n\t\tbeforeStateHash,\n\t\tafterStateHash,\n\t\tattemptId: request.attemptId,\n\t});\n\treturn {\n\t\toperationId: request.operationId,\n\t\trunId: request.runId,\n\t\tnodeId: request.nodeId,\n\t\teventType: request.eventType,\n\t\tphase: request.phase,\n\t\tidempotencyKey: request.idempotencyKey,\n\t\tbeforeStateHash,\n\t\tafterStateHash,\n\t\teventHash,\n\t\t...(request.attemptId === undefined ? {} : { attemptId: request.attemptId }),\n\t};\n}\n\nfunction errorContext(\n\trequest: {\n\t\trunId: string;\n\t\tnodeId: string;\n\t\toperationId: string;\n\t\tphase: TransactionPhase;\n\t\teventType: string;\n\t\tattemptId?: string;\n\t},\n\trecoverability: CoordinatorRecoverability,\n\tcause?: unknown,\n): {\n\trunId: string;\n\tnodeId: string;\n\toperationId: string;\n\tphase: TransactionPhase;\n\teventType: string;\n\trecoverability: CoordinatorRecoverability;\n\tattemptId?: string;\n\tcause?: unknown;\n} {\n\treturn {\n\t\trunId: request.runId,\n\t\tnodeId: request.nodeId,\n\t\toperationId: request.operationId,\n\t\tphase: request.phase,\n\t\teventType: request.eventType,\n\t\trecoverability,\n\t\tattemptId: request.attemptId,\n\t\tcause,\n\t};\n}\n\n/**\n * Run one fail-closed, ledger-gated state-changing transaction.\n *\n * ```text\n * BEGIN IMMEDIATE\n * before = snapshot()\n * staged = mutate(before) # no commit yet\n * record = ledger event with before/after state hashes\n * idempotency:\n * same key + same eventHash -> rollback, no-op\n * same key + different hash -> rollback, IDEMPOTENCY_CONFLICT\n * appendRequiredEvent(record) # durable JSONL append + fsync\n * fail -> rollback, LEDGER_APPEND_REQUIRED_FAILED\n * mirrorEvent(record) # same transaction\n * fail -> rollback, SQLITE_MIRROR_FAILED (ledger durable; replay repairs)\n * commit(staged)\n * fail -> rollback, SQLITE_COMMIT_AFTER_LEDGER_FAILED (ledger durable)\n * ```\n *\n * Any failure leaves the injected store unmutated (transaction rolled back);\n * only the durable ledger append can survive, which recovery/replay reconciles.\n */\nexport function runLedgerGatedTransaction<S>(\n\tdeps: LedgerGatedTransactionDeps<S>,\n\trequest: LedgerGatedTransactionRequest<S>,\n): LedgerGatedTransactionResult<S> {\n\tconst hashState = deps.hashState ?? coordinatorStateHash;\n\tconst handle = deps.begin();\n\tlet settled = false;\n\tconst rollbackOnce = (): void => {\n\t\tif (!settled) {\n\t\t\tsettled = true;\n\t\t\thandle.rollback();\n\t\t}\n\t};\n\n\ttry {\n\t\tconst before = handle.snapshot();\n\t\tconst staged = request.mutate(before);\n\t\tconst record = buildLedgerRecord(request, hashState(before), hashState(staged));\n\n\t\tconst existing = handle.findByIdempotencyKey(request.idempotencyKey);\n\t\tif (existing !== undefined) {\n\t\t\trollbackOnce();\n\t\t\tif (existing.eventHash === record.eventHash) {\n\t\t\t\treturn { status: \"noop\", applied: false, record: existing, state: before };\n\t\t\t}\n\t\t\tthrow new CoordinatorError(\n\t\t\t\t\"IDEMPOTENCY_CONFLICT\",\n\t\t\t\t`idempotency key \"${request.idempotencyKey}\" already recorded with a different event hash`,\n\t\t\t\terrorContext(request, \"operator\"),\n\t\t\t);\n\t\t}\n\n\t\ttry {\n\t\t\thandle.appendRequiredEvent(record);\n\t\t} catch (cause) {\n\t\t\trollbackOnce();\n\t\t\tthrow new RequiredAuditWriteError(\n\t\t\t\t`required ledger append failed for \"${request.eventType}\"`,\n\t\t\t\terrorContext(request, \"rollback\", cause),\n\t\t\t);\n\t\t}\n\n\t\ttry {\n\t\t\thandle.mirrorEvent(record);\n\t\t} catch (cause) {\n\t\t\trollbackOnce();\n\t\t\tthrow new CoordinatorError(\n\t\t\t\t\"SQLITE_MIRROR_FAILED\",\n\t\t\t\t`sqlite mirror failed after ledger append for \"${request.eventType}\"`,\n\t\t\t\terrorContext(request, \"in_doubt\", cause),\n\t\t\t);\n\t\t}\n\n\t\ttry {\n\t\t\thandle.commit(staged);\n\t\t\tsettled = true;\n\t\t} catch (cause) {\n\t\t\trollbackOnce();\n\t\t\tthrow new CoordinatorError(\n\t\t\t\t\"SQLITE_COMMIT_AFTER_LEDGER_FAILED\",\n\t\t\t\t`sqlite commit failed after ledger append for \"${request.eventType}\"`,\n\t\t\t\terrorContext(request, \"in_doubt\", cause),\n\t\t\t);\n\t\t}\n\n\t\treturn { status: \"committed\", applied: true, record, state: staged };\n\t} catch (error) {\n\t\trollbackOnce();\n\t\tthrow error;\n\t}\n}\n\n/**\n * A single side-effecting step that must record a receipt after its side effect.\n * Each step declares a stable `receiptId` so a durable receipt can short-circuit\n * re-execution on replay.\n */\nexport interface ReceiptedStep {\n\tid: string;\n\treceiptId: string;\n\tsequence: number;\n\tidempotent: boolean;\n\tbeforeStateHash: string;\n\tafterStateHash: string;\n\trun: () => void;\n}\n\nexport interface ReceiptHandle {\n\tfindReceipt: (receiptId: string) => LedgerRecord | undefined;\n\tappendReceiptEvent: (record: LedgerRecord) => void;\n}\n\nexport interface ReceiptApplyRequest {\n\trunId: string;\n\tnodeId: string;\n\toperationId: string;\n\tattemptId?: string;\n\teventType?: string;\n\tsteps: readonly ReceiptedStep[];\n}\n\nexport type ReceiptApplyStatus = \"completed\" | \"in_doubt\";\n\nexport interface ReceiptApplyResult {\n\tstatus: ReceiptApplyStatus;\n\texecutedStepIds: string[];\n\tskippedStepIds: string[];\n\tappliedReceipts: LedgerRecord[];\n\tstoppedAtStepId?: string;\n\treason?: string;\n}\n\n/**\n * Apply side-effecting steps in deterministic sequence order, recording a\n * required receipt after each side effect.\n *\n * Fail-closed rule (algorithm-plan Phase 1, test 3): if a receipt append fails\n * after its side effect ran, stop executing further side effects and return\n * `in_doubt` — UNLESS a durable idempotent receipt for that step exists, in\n * which case the side effect is provably recorded and execution continues.\n *\n * Steps whose receipt is already durably recorded are skipped (idempotent\n * replay) and never re-run.\n */\nexport function applyReceiptedSteps(handle: ReceiptHandle, request: ReceiptApplyRequest): ReceiptApplyResult {\n\tconst eventType = request.eventType ?? \"scheduler.node.receipt\";\n\tconst ordered = [...request.steps].sort((a, b) => a.sequence - b.sequence);\n\tconst executedStepIds: string[] = [];\n\tconst skippedStepIds: string[] = [];\n\tconst appliedReceipts: LedgerRecord[] = [];\n\n\tfor (const step of ordered) {\n\t\tconst pre = handle.findReceipt(step.receiptId);\n\t\tif (pre !== undefined) {\n\t\t\t// Receipt already durable: idempotent replay, do not re-run the side effect.\n\t\t\tskippedStepIds.push(step.id);\n\t\t\tappliedReceipts.push(pre);\n\t\t\tcontinue;\n\t\t}\n\n\t\tstep.run();\n\t\texecutedStepIds.push(step.id);\n\n\t\tconst record = buildLedgerRecord(\n\t\t\t{\n\t\t\t\toperationId: request.operationId,\n\t\t\t\trunId: request.runId,\n\t\t\t\tnodeId: request.nodeId,\n\t\t\t\teventType,\n\t\t\t\tphase: \"receipt\",\n\t\t\t\tidempotencyKey: step.receiptId,\n\t\t\t\tattemptId: request.attemptId,\n\t\t\t},\n\t\t\tstep.beforeStateHash,\n\t\t\tstep.afterStateHash,\n\t\t);\n\n\t\ttry {\n\t\t\thandle.appendReceiptEvent(record);\n\t\t\tappliedReceipts.push(record);\n\t\t} catch {\n\t\t\tconst post = handle.findReceipt(step.receiptId);\n\t\t\tif (post !== undefined) {\n\t\t\t\t// Receipt persisted despite the append error: recoverable, keep going.\n\t\t\t\tappliedReceipts.push(post);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tstatus: \"in_doubt\",\n\t\t\t\texecutedStepIds,\n\t\t\t\tskippedStepIds,\n\t\t\t\tappliedReceipts,\n\t\t\t\tstoppedAtStepId: step.id,\n\t\t\t\treason: `receipt append failed after side effect for step \"${step.id}\" with no durable receipt`,\n\t\t\t};\n\t\t}\n\t}\n\n\treturn { status: \"completed\", executedStepIds, skippedStepIds, appliedReceipts };\n}\n\n/**\n * A registered compensator and its forward-execution status.\n */\nexport interface CompensatorExecutionStep {\n\tid: string;\n\tsequence: number;\n\tidempotent: boolean;\n\tapplied: boolean;\n\trun: () => void;\n}\n\nexport interface CompensationHandle {\n\tappendCompensationStart: (record: LedgerRecord) => void;\n\tappendCompensationReceipt: (record: LedgerRecord) => void;\n}\n\nexport interface GatedCompensationRequest {\n\trunId: string;\n\tnodeId: string;\n\toperationId: string;\n\tidempotencyKey: string;\n\tbeforeStateHash: string;\n\tafterStateHash: string;\n\tattemptId?: string;\n\tsteps: readonly CompensatorExecutionStep[];\n}\n\nexport interface GatedCompensationResult {\n\tstatus: \"rolled_back\";\n\texecutedStepIds: string[];\n\treceipts: LedgerRecord[];\n}\n\n/**\n * Run compensation fail-closed (algorithm-plan Phase 1, test 4 + invariant I7).\n *\n * 1. Refuse to auto-compensate if any NON-idempotent step was already applied\n * (state is ambiguous): throw COMPENSATION_FAILED before anything runs.\n * 2. The compensation start is itself ledger-gated: if its required event cannot\n * be appended, throw RequiredAuditWriteError and run NO compensators.\n * 3. Only idempotent compensators run, in reverse execution order, each\n * recording a compensation receipt.\n */\nexport function runGatedCompensation(\n\thandle: CompensationHandle,\n\trequest: GatedCompensationRequest,\n): GatedCompensationResult {\n\tconst baseContext = {\n\t\trunId: request.runId,\n\t\tnodeId: request.nodeId,\n\t\toperationId: request.operationId,\n\t\tphase: \"compensate\" as TransactionPhase,\n\t\teventType: \"scheduler.node.compensating\",\n\t\tattemptId: request.attemptId,\n\t};\n\n\tfor (const step of request.steps) {\n\t\tif (!step.idempotent && step.applied) {\n\t\t\tthrow new CoordinatorError(\n\t\t\t\t\"COMPENSATION_FAILED\",\n\t\t\t\t`cannot auto-compensate non-idempotent step \"${step.id}\" that was already applied`,\n\t\t\t\t{ ...baseContext, recoverability: \"in_doubt\" },\n\t\t\t);\n\t\t}\n\t}\n\n\tconst startRecord = buildLedgerRecord(\n\t\t{\n\t\t\toperationId: request.operationId,\n\t\t\trunId: request.runId,\n\t\t\tnodeId: request.nodeId,\n\t\t\teventType: \"scheduler.node.compensating\",\n\t\t\tphase: \"compensate\",\n\t\t\tidempotencyKey: request.idempotencyKey,\n\t\t\tattemptId: request.attemptId,\n\t\t},\n\t\trequest.beforeStateHash,\n\t\trequest.afterStateHash,\n\t);\n\n\ttry {\n\t\thandle.appendCompensationStart(startRecord);\n\t} catch (cause) {\n\t\tthrow new RequiredAuditWriteError(\"required compensation-start ledger append failed\", { ...baseContext, cause });\n\t}\n\n\tconst reversed = request.steps.filter((step) => step.idempotent).sort((a, b) => b.sequence - a.sequence);\n\tconst executedStepIds: string[] = [];\n\tconst receipts: LedgerRecord[] = [];\n\n\tfor (const step of reversed) {\n\t\ttry {\n\t\t\tstep.run();\n\t\t} catch (cause) {\n\t\t\tthrow new CoordinatorError(\"COMPENSATION_FAILED\", `compensator \"${step.id}\" failed`, {\n\t\t\t\t...baseContext,\n\t\t\t\trecoverability: \"in_doubt\",\n\t\t\t\tcause,\n\t\t\t});\n\t\t}\n\t\texecutedStepIds.push(step.id);\n\t\tconst receipt = buildLedgerRecord(\n\t\t\t{\n\t\t\t\toperationId: request.operationId,\n\t\t\t\trunId: request.runId,\n\t\t\t\tnodeId: request.nodeId,\n\t\t\t\teventType: \"scheduler.node.compensation.receipt\",\n\t\t\t\tphase: \"compensate\",\n\t\t\t\tidempotencyKey: `${request.idempotencyKey}:${step.id}`,\n\t\t\t\tattemptId: request.attemptId,\n\t\t\t},\n\t\t\trequest.beforeStateHash,\n\t\t\trequest.afterStateHash,\n\t\t);\n\t\thandle.appendCompensationReceipt(receipt);\n\t\treceipts.push(receipt);\n\t}\n\n\treturn { status: \"rolled_back\", executedStepIds, receipts };\n}\n"]}
@@ -1,281 +0,0 @@
1
- /**
2
- * Phase 1: fail-closed, ledger-gated transaction coordinator (pure algorithms).
3
- *
4
- * These functions are deterministic and side-effect free except through the
5
- * injected in-memory transaction/store callbacks. No SQLite or filesystem is
6
- * wired here; the real durable store is injected later. The invariant enforced
7
- * is: no state-changing mutation commits unless its required ledger event was
8
- * durably appended (JSONL fsync) and mirrored, in that order.
9
- *
10
- * Reference: .omk/runs/omk-autonomous-harness-remediation-plan/algorithm-plan.md
11
- * (Phase 1) and audit-transaction.md.
12
- */
13
- import { CoordinatorError, RequiredAuditWriteError, } from "./errors.js";
14
- import { sha256Hex, stableStringify } from "./replay-ledger.js";
15
- /**
16
- * Default state hash. Callers with non-JSON state must inject `hashState`.
17
- */
18
- export function coordinatorStateHash(state) {
19
- return sha256Hex(stableStringify(state));
20
- }
21
- /**
22
- * Deterministically derive a content hash for a ledger event from its identity
23
- * and state transition. Volatile fields are excluded so replays are stable.
24
- */
25
- export function computeCoordinatorEventHash(input) {
26
- const canonical = {
27
- operationId: input.operationId,
28
- runId: input.runId,
29
- nodeId: input.nodeId,
30
- eventType: input.eventType,
31
- phase: input.phase,
32
- idempotencyKey: input.idempotencyKey,
33
- beforeStateHash: input.beforeStateHash,
34
- afterStateHash: input.afterStateHash,
35
- attemptId: input.attemptId ?? null,
36
- };
37
- return sha256Hex(stableStringify(canonical));
38
- }
39
- /**
40
- * Build a complete ledger record (including `eventHash`) from a request and the
41
- * computed before/after state hashes.
42
- */
43
- export function buildLedgerRecord(request, beforeStateHash, afterStateHash) {
44
- const eventHash = computeCoordinatorEventHash({
45
- operationId: request.operationId,
46
- runId: request.runId,
47
- nodeId: request.nodeId,
48
- eventType: request.eventType,
49
- phase: request.phase,
50
- idempotencyKey: request.idempotencyKey,
51
- beforeStateHash,
52
- afterStateHash,
53
- attemptId: request.attemptId,
54
- });
55
- return {
56
- operationId: request.operationId,
57
- runId: request.runId,
58
- nodeId: request.nodeId,
59
- eventType: request.eventType,
60
- phase: request.phase,
61
- idempotencyKey: request.idempotencyKey,
62
- beforeStateHash,
63
- afterStateHash,
64
- eventHash,
65
- ...(request.attemptId === undefined ? {} : { attemptId: request.attemptId }),
66
- };
67
- }
68
- function errorContext(request, recoverability, cause) {
69
- return {
70
- runId: request.runId,
71
- nodeId: request.nodeId,
72
- operationId: request.operationId,
73
- phase: request.phase,
74
- eventType: request.eventType,
75
- recoverability,
76
- attemptId: request.attemptId,
77
- cause,
78
- };
79
- }
80
- /**
81
- * Run one fail-closed, ledger-gated state-changing transaction.
82
- *
83
- * ```text
84
- * BEGIN IMMEDIATE
85
- * before = snapshot()
86
- * staged = mutate(before) # no commit yet
87
- * record = ledger event with before/after state hashes
88
- * idempotency:
89
- * same key + same eventHash -> rollback, no-op
90
- * same key + different hash -> rollback, IDEMPOTENCY_CONFLICT
91
- * appendRequiredEvent(record) # durable JSONL append + fsync
92
- * fail -> rollback, LEDGER_APPEND_REQUIRED_FAILED
93
- * mirrorEvent(record) # same transaction
94
- * fail -> rollback, SQLITE_MIRROR_FAILED (ledger durable; replay repairs)
95
- * commit(staged)
96
- * fail -> rollback, SQLITE_COMMIT_AFTER_LEDGER_FAILED (ledger durable)
97
- * ```
98
- *
99
- * Any failure leaves the injected store unmutated (transaction rolled back);
100
- * only the durable ledger append can survive, which recovery/replay reconciles.
101
- */
102
- export function runLedgerGatedTransaction(deps, request) {
103
- const hashState = deps.hashState ?? coordinatorStateHash;
104
- const handle = deps.begin();
105
- let settled = false;
106
- const rollbackOnce = () => {
107
- if (!settled) {
108
- settled = true;
109
- handle.rollback();
110
- }
111
- };
112
- try {
113
- const before = handle.snapshot();
114
- const staged = request.mutate(before);
115
- const record = buildLedgerRecord(request, hashState(before), hashState(staged));
116
- const existing = handle.findByIdempotencyKey(request.idempotencyKey);
117
- if (existing !== undefined) {
118
- rollbackOnce();
119
- if (existing.eventHash === record.eventHash) {
120
- return { status: "noop", applied: false, record: existing, state: before };
121
- }
122
- throw new CoordinatorError("IDEMPOTENCY_CONFLICT", `idempotency key "${request.idempotencyKey}" already recorded with a different event hash`, errorContext(request, "operator"));
123
- }
124
- try {
125
- handle.appendRequiredEvent(record);
126
- }
127
- catch (cause) {
128
- rollbackOnce();
129
- throw new RequiredAuditWriteError(`required ledger append failed for "${request.eventType}"`, errorContext(request, "rollback", cause));
130
- }
131
- try {
132
- handle.mirrorEvent(record);
133
- }
134
- catch (cause) {
135
- rollbackOnce();
136
- throw new CoordinatorError("SQLITE_MIRROR_FAILED", `sqlite mirror failed after ledger append for "${request.eventType}"`, errorContext(request, "in_doubt", cause));
137
- }
138
- try {
139
- handle.commit(staged);
140
- settled = true;
141
- }
142
- catch (cause) {
143
- rollbackOnce();
144
- throw new CoordinatorError("SQLITE_COMMIT_AFTER_LEDGER_FAILED", `sqlite commit failed after ledger append for "${request.eventType}"`, errorContext(request, "in_doubt", cause));
145
- }
146
- return { status: "committed", applied: true, record, state: staged };
147
- }
148
- catch (error) {
149
- rollbackOnce();
150
- throw error;
151
- }
152
- }
153
- /**
154
- * Apply side-effecting steps in deterministic sequence order, recording a
155
- * required receipt after each side effect.
156
- *
157
- * Fail-closed rule (algorithm-plan Phase 1, test 3): if a receipt append fails
158
- * after its side effect ran, stop executing further side effects and return
159
- * `in_doubt` — UNLESS a durable idempotent receipt for that step exists, in
160
- * which case the side effect is provably recorded and execution continues.
161
- *
162
- * Steps whose receipt is already durably recorded are skipped (idempotent
163
- * replay) and never re-run.
164
- */
165
- export function applyReceiptedSteps(handle, request) {
166
- const eventType = request.eventType ?? "scheduler.node.receipt";
167
- const ordered = [...request.steps].sort((a, b) => a.sequence - b.sequence);
168
- const executedStepIds = [];
169
- const skippedStepIds = [];
170
- const appliedReceipts = [];
171
- for (const step of ordered) {
172
- const pre = handle.findReceipt(step.receiptId);
173
- if (pre !== undefined) {
174
- // Receipt already durable: idempotent replay, do not re-run the side effect.
175
- skippedStepIds.push(step.id);
176
- appliedReceipts.push(pre);
177
- continue;
178
- }
179
- step.run();
180
- executedStepIds.push(step.id);
181
- const record = buildLedgerRecord({
182
- operationId: request.operationId,
183
- runId: request.runId,
184
- nodeId: request.nodeId,
185
- eventType,
186
- phase: "receipt",
187
- idempotencyKey: step.receiptId,
188
- attemptId: request.attemptId,
189
- }, step.beforeStateHash, step.afterStateHash);
190
- try {
191
- handle.appendReceiptEvent(record);
192
- appliedReceipts.push(record);
193
- }
194
- catch {
195
- const post = handle.findReceipt(step.receiptId);
196
- if (post !== undefined) {
197
- // Receipt persisted despite the append error: recoverable, keep going.
198
- appliedReceipts.push(post);
199
- continue;
200
- }
201
- return {
202
- status: "in_doubt",
203
- executedStepIds,
204
- skippedStepIds,
205
- appliedReceipts,
206
- stoppedAtStepId: step.id,
207
- reason: `receipt append failed after side effect for step "${step.id}" with no durable receipt`,
208
- };
209
- }
210
- }
211
- return { status: "completed", executedStepIds, skippedStepIds, appliedReceipts };
212
- }
213
- /**
214
- * Run compensation fail-closed (algorithm-plan Phase 1, test 4 + invariant I7).
215
- *
216
- * 1. Refuse to auto-compensate if any NON-idempotent step was already applied
217
- * (state is ambiguous): throw COMPENSATION_FAILED before anything runs.
218
- * 2. The compensation start is itself ledger-gated: if its required event cannot
219
- * be appended, throw RequiredAuditWriteError and run NO compensators.
220
- * 3. Only idempotent compensators run, in reverse execution order, each
221
- * recording a compensation receipt.
222
- */
223
- export function runGatedCompensation(handle, request) {
224
- const baseContext = {
225
- runId: request.runId,
226
- nodeId: request.nodeId,
227
- operationId: request.operationId,
228
- phase: "compensate",
229
- eventType: "scheduler.node.compensating",
230
- attemptId: request.attemptId,
231
- };
232
- for (const step of request.steps) {
233
- if (!step.idempotent && step.applied) {
234
- throw new CoordinatorError("COMPENSATION_FAILED", `cannot auto-compensate non-idempotent step "${step.id}" that was already applied`, { ...baseContext, recoverability: "in_doubt" });
235
- }
236
- }
237
- const startRecord = buildLedgerRecord({
238
- operationId: request.operationId,
239
- runId: request.runId,
240
- nodeId: request.nodeId,
241
- eventType: "scheduler.node.compensating",
242
- phase: "compensate",
243
- idempotencyKey: request.idempotencyKey,
244
- attemptId: request.attemptId,
245
- }, request.beforeStateHash, request.afterStateHash);
246
- try {
247
- handle.appendCompensationStart(startRecord);
248
- }
249
- catch (cause) {
250
- throw new RequiredAuditWriteError("required compensation-start ledger append failed", { ...baseContext, cause });
251
- }
252
- const reversed = request.steps.filter((step) => step.idempotent).sort((a, b) => b.sequence - a.sequence);
253
- const executedStepIds = [];
254
- const receipts = [];
255
- for (const step of reversed) {
256
- try {
257
- step.run();
258
- }
259
- catch (cause) {
260
- throw new CoordinatorError("COMPENSATION_FAILED", `compensator "${step.id}" failed`, {
261
- ...baseContext,
262
- recoverability: "in_doubt",
263
- cause,
264
- });
265
- }
266
- executedStepIds.push(step.id);
267
- const receipt = buildLedgerRecord({
268
- operationId: request.operationId,
269
- runId: request.runId,
270
- nodeId: request.nodeId,
271
- eventType: "scheduler.node.compensation.receipt",
272
- phase: "compensate",
273
- idempotencyKey: `${request.idempotencyKey}:${step.id}`,
274
- attemptId: request.attemptId,
275
- }, request.beforeStateHash, request.afterStateHash);
276
- handle.appendCompensationReceipt(receipt);
277
- receipts.push(receipt);
278
- }
279
- return { status: "rolled_back", executedStepIds, receipts };
280
- }
281
- //# sourceMappingURL=transaction-coordinator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"transaction-coordinator.js","sourceRoot":"","sources":["../../../src/core/orchestration/transaction-coordinator.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Phase 1: fail-closed, ledger-gated transaction coordinator (pure algorithms).\n *\n * These functions are deterministic and side-effect free except through the\n * injected in-memory transaction/store callbacks. No SQLite or filesystem is\n * wired here; the real durable store is injected later. The invariant enforced\n * is: no state-changing mutation commits unless its required ledger event was\n * durably appended (JSONL fsync) and mirrored, in that order.\n *\n * Reference: .omk/runs/omk-autonomous-harness-remediation-plan/algorithm-plan.md\n * (Phase 1) and audit-transaction.md.\n */\n\nimport {\n\tCoordinatorError,\n\ttype CoordinatorRecoverability,\n\tRequiredAuditWriteError,\n\ttype TransactionPhase,\n} from \"./errors.ts\";\nimport { type JsonValue, sha256Hex, stableStringify } from \"./replay-ledger.ts\";\n\n/**\n * A canonical, content-addressed ledger event record. `eventHash` is derived\n * deterministically from the identity + state hashes, which is what makes\n * idempotency detection (same key + same hash => no-op) reliable.\n */\nexport interface LedgerRecord {\n\toperationId: string;\n\trunId: string;\n\tnodeId: string;\n\teventType: string;\n\tphase: TransactionPhase;\n\tidempotencyKey: string;\n\tbeforeStateHash: string;\n\tafterStateHash: string;\n\teventHash: string;\n\tattemptId?: string;\n}\n\n/**\n * Identity + intent for a single ledger-gated mutation. `mutate` is pure: it\n * receives the snapshot and returns the staged next state without committing.\n */\nexport interface LedgerGatedTransactionRequest<S> {\n\trunId: string;\n\tnodeId: string;\n\toperationId: string;\n\teventType: string;\n\tphase: TransactionPhase;\n\tidempotencyKey: string;\n\tmutate: (before: S) => S;\n\tattemptId?: string;\n}\n\n/**\n * Injected transaction handle (a single `BEGIN IMMEDIATE` scope). The fake used\n * in tests and the real SQLite-backed handle implement this surface.\n *\n * Contract:\n * - `appendRequiredEvent` simulates the durable JSONL append + fsync. It escapes\n * transactional rollback (an appended event stays on disk).\n * - `mirrorEvent` stages the SQLite mirror insert inside the open transaction.\n * - `commit` applies the staged mirror + state; `rollback` discards them.\n */\nexport interface LedgerGatedTransactionHandle<S> {\n\tsnapshot: () => S;\n\tfindByIdempotencyKey: (key: string) => LedgerRecord | undefined;\n\tappendRequiredEvent: (record: LedgerRecord) => void;\n\tmirrorEvent: (record: LedgerRecord) => void;\n\tcommit: (state: S) => void;\n\trollback: () => void;\n}\n\nexport interface LedgerGatedTransactionDeps<S> {\n\tbegin: () => LedgerGatedTransactionHandle<S>;\n\thashState?: (state: S) => string;\n}\n\nexport type LedgerGatedTransactionStatus = \"committed\" | \"noop\";\n\nexport interface LedgerGatedTransactionResult<S> {\n\tstatus: LedgerGatedTransactionStatus;\n\tapplied: boolean;\n\trecord: LedgerRecord;\n\tstate: S;\n}\n\n/**\n * Default state hash. Callers with non-JSON state must inject `hashState`.\n */\nexport function coordinatorStateHash(state: unknown): string {\n\treturn sha256Hex(stableStringify(state as JsonValue));\n}\n\n/**\n * Deterministically derive a content hash for a ledger event from its identity\n * and state transition. Volatile fields are excluded so replays are stable.\n */\nexport function computeCoordinatorEventHash(input: {\n\toperationId: string;\n\trunId: string;\n\tnodeId: string;\n\teventType: string;\n\tphase: TransactionPhase;\n\tidempotencyKey: string;\n\tbeforeStateHash: string;\n\tafterStateHash: string;\n\tattemptId?: string;\n}): string {\n\tconst canonical: { readonly [key: string]: JsonValue } = {\n\t\toperationId: input.operationId,\n\t\trunId: input.runId,\n\t\tnodeId: input.nodeId,\n\t\teventType: input.eventType,\n\t\tphase: input.phase,\n\t\tidempotencyKey: input.idempotencyKey,\n\t\tbeforeStateHash: input.beforeStateHash,\n\t\tafterStateHash: input.afterStateHash,\n\t\tattemptId: input.attemptId ?? null,\n\t};\n\treturn sha256Hex(stableStringify(canonical));\n}\n\n/**\n * Build a complete ledger record (including `eventHash`) from a request and the\n * computed before/after state hashes.\n */\nexport function buildLedgerRecord(\n\trequest: {\n\t\toperationId: string;\n\t\trunId: string;\n\t\tnodeId: string;\n\t\teventType: string;\n\t\tphase: TransactionPhase;\n\t\tidempotencyKey: string;\n\t\tattemptId?: string;\n\t},\n\tbeforeStateHash: string,\n\tafterStateHash: string,\n): LedgerRecord {\n\tconst eventHash = computeCoordinatorEventHash({\n\t\toperationId: request.operationId,\n\t\trunId: request.runId,\n\t\tnodeId: request.nodeId,\n\t\teventType: request.eventType,\n\t\tphase: request.phase,\n\t\tidempotencyKey: request.idempotencyKey,\n\t\tbeforeStateHash,\n\t\tafterStateHash,\n\t\tattemptId: request.attemptId,\n\t});\n\treturn {\n\t\toperationId: request.operationId,\n\t\trunId: request.runId,\n\t\tnodeId: request.nodeId,\n\t\teventType: request.eventType,\n\t\tphase: request.phase,\n\t\tidempotencyKey: request.idempotencyKey,\n\t\tbeforeStateHash,\n\t\tafterStateHash,\n\t\teventHash,\n\t\t...(request.attemptId === undefined ? {} : { attemptId: request.attemptId }),\n\t};\n}\n\nfunction errorContext(\n\trequest: {\n\t\trunId: string;\n\t\tnodeId: string;\n\t\toperationId: string;\n\t\tphase: TransactionPhase;\n\t\teventType: string;\n\t\tattemptId?: string;\n\t},\n\trecoverability: CoordinatorRecoverability,\n\tcause?: unknown,\n): {\n\trunId: string;\n\tnodeId: string;\n\toperationId: string;\n\tphase: TransactionPhase;\n\teventType: string;\n\trecoverability: CoordinatorRecoverability;\n\tattemptId?: string;\n\tcause?: unknown;\n} {\n\treturn {\n\t\trunId: request.runId,\n\t\tnodeId: request.nodeId,\n\t\toperationId: request.operationId,\n\t\tphase: request.phase,\n\t\teventType: request.eventType,\n\t\trecoverability,\n\t\tattemptId: request.attemptId,\n\t\tcause,\n\t};\n}\n\n/**\n * Run one fail-closed, ledger-gated state-changing transaction.\n *\n * ```text\n * BEGIN IMMEDIATE\n * before = snapshot()\n * staged = mutate(before) # no commit yet\n * record = ledger event with before/after state hashes\n * idempotency:\n * same key + same eventHash -> rollback, no-op\n * same key + different hash -> rollback, IDEMPOTENCY_CONFLICT\n * appendRequiredEvent(record) # durable JSONL append + fsync\n * fail -> rollback, LEDGER_APPEND_REQUIRED_FAILED\n * mirrorEvent(record) # same transaction\n * fail -> rollback, SQLITE_MIRROR_FAILED (ledger durable; replay repairs)\n * commit(staged)\n * fail -> rollback, SQLITE_COMMIT_AFTER_LEDGER_FAILED (ledger durable)\n * ```\n *\n * Any failure leaves the injected store unmutated (transaction rolled back);\n * only the durable ledger append can survive, which recovery/replay reconciles.\n */\nexport function runLedgerGatedTransaction<S>(\n\tdeps: LedgerGatedTransactionDeps<S>,\n\trequest: LedgerGatedTransactionRequest<S>,\n): LedgerGatedTransactionResult<S> {\n\tconst hashState = deps.hashState ?? coordinatorStateHash;\n\tconst handle = deps.begin();\n\tlet settled = false;\n\tconst rollbackOnce = (): void => {\n\t\tif (!settled) {\n\t\t\tsettled = true;\n\t\t\thandle.rollback();\n\t\t}\n\t};\n\n\ttry {\n\t\tconst before = handle.snapshot();\n\t\tconst staged = request.mutate(before);\n\t\tconst record = buildLedgerRecord(request, hashState(before), hashState(staged));\n\n\t\tconst existing = handle.findByIdempotencyKey(request.idempotencyKey);\n\t\tif (existing !== undefined) {\n\t\t\trollbackOnce();\n\t\t\tif (existing.eventHash === record.eventHash) {\n\t\t\t\treturn { status: \"noop\", applied: false, record: existing, state: before };\n\t\t\t}\n\t\t\tthrow new CoordinatorError(\n\t\t\t\t\"IDEMPOTENCY_CONFLICT\",\n\t\t\t\t`idempotency key \"${request.idempotencyKey}\" already recorded with a different event hash`,\n\t\t\t\terrorContext(request, \"operator\"),\n\t\t\t);\n\t\t}\n\n\t\ttry {\n\t\t\thandle.appendRequiredEvent(record);\n\t\t} catch (cause) {\n\t\t\trollbackOnce();\n\t\t\tthrow new RequiredAuditWriteError(\n\t\t\t\t`required ledger append failed for \"${request.eventType}\"`,\n\t\t\t\terrorContext(request, \"rollback\", cause),\n\t\t\t);\n\t\t}\n\n\t\ttry {\n\t\t\thandle.mirrorEvent(record);\n\t\t} catch (cause) {\n\t\t\trollbackOnce();\n\t\t\tthrow new CoordinatorError(\n\t\t\t\t\"SQLITE_MIRROR_FAILED\",\n\t\t\t\t`sqlite mirror failed after ledger append for \"${request.eventType}\"`,\n\t\t\t\terrorContext(request, \"in_doubt\", cause),\n\t\t\t);\n\t\t}\n\n\t\ttry {\n\t\t\thandle.commit(staged);\n\t\t\tsettled = true;\n\t\t} catch (cause) {\n\t\t\trollbackOnce();\n\t\t\tthrow new CoordinatorError(\n\t\t\t\t\"SQLITE_COMMIT_AFTER_LEDGER_FAILED\",\n\t\t\t\t`sqlite commit failed after ledger append for \"${request.eventType}\"`,\n\t\t\t\terrorContext(request, \"in_doubt\", cause),\n\t\t\t);\n\t\t}\n\n\t\treturn { status: \"committed\", applied: true, record, state: staged };\n\t} catch (error) {\n\t\trollbackOnce();\n\t\tthrow error;\n\t}\n}\n\n/**\n * A single side-effecting step that must record a receipt after its side effect.\n * Each step declares a stable `receiptId` so a durable receipt can short-circuit\n * re-execution on replay.\n */\nexport interface ReceiptedStep {\n\tid: string;\n\treceiptId: string;\n\tsequence: number;\n\tidempotent: boolean;\n\tbeforeStateHash: string;\n\tafterStateHash: string;\n\trun: () => void;\n}\n\nexport interface ReceiptHandle {\n\tfindReceipt: (receiptId: string) => LedgerRecord | undefined;\n\tappendReceiptEvent: (record: LedgerRecord) => void;\n}\n\nexport interface ReceiptApplyRequest {\n\trunId: string;\n\tnodeId: string;\n\toperationId: string;\n\tattemptId?: string;\n\teventType?: string;\n\tsteps: readonly ReceiptedStep[];\n}\n\nexport type ReceiptApplyStatus = \"completed\" | \"in_doubt\";\n\nexport interface ReceiptApplyResult {\n\tstatus: ReceiptApplyStatus;\n\texecutedStepIds: string[];\n\tskippedStepIds: string[];\n\tappliedReceipts: LedgerRecord[];\n\tstoppedAtStepId?: string;\n\treason?: string;\n}\n\n/**\n * Apply side-effecting steps in deterministic sequence order, recording a\n * required receipt after each side effect.\n *\n * Fail-closed rule (algorithm-plan Phase 1, test 3): if a receipt append fails\n * after its side effect ran, stop executing further side effects and return\n * `in_doubt` — UNLESS a durable idempotent receipt for that step exists, in\n * which case the side effect is provably recorded and execution continues.\n *\n * Steps whose receipt is already durably recorded are skipped (idempotent\n * replay) and never re-run.\n */\nexport function applyReceiptedSteps(handle: ReceiptHandle, request: ReceiptApplyRequest): ReceiptApplyResult {\n\tconst eventType = request.eventType ?? \"scheduler.node.receipt\";\n\tconst ordered = [...request.steps].sort((a, b) => a.sequence - b.sequence);\n\tconst executedStepIds: string[] = [];\n\tconst skippedStepIds: string[] = [];\n\tconst appliedReceipts: LedgerRecord[] = [];\n\n\tfor (const step of ordered) {\n\t\tconst pre = handle.findReceipt(step.receiptId);\n\t\tif (pre !== undefined) {\n\t\t\t// Receipt already durable: idempotent replay, do not re-run the side effect.\n\t\t\tskippedStepIds.push(step.id);\n\t\t\tappliedReceipts.push(pre);\n\t\t\tcontinue;\n\t\t}\n\n\t\tstep.run();\n\t\texecutedStepIds.push(step.id);\n\n\t\tconst record = buildLedgerRecord(\n\t\t\t{\n\t\t\t\toperationId: request.operationId,\n\t\t\t\trunId: request.runId,\n\t\t\t\tnodeId: request.nodeId,\n\t\t\t\teventType,\n\t\t\t\tphase: \"receipt\",\n\t\t\t\tidempotencyKey: step.receiptId,\n\t\t\t\tattemptId: request.attemptId,\n\t\t\t},\n\t\t\tstep.beforeStateHash,\n\t\t\tstep.afterStateHash,\n\t\t);\n\n\t\ttry {\n\t\t\thandle.appendReceiptEvent(record);\n\t\t\tappliedReceipts.push(record);\n\t\t} catch {\n\t\t\tconst post = handle.findReceipt(step.receiptId);\n\t\t\tif (post !== undefined) {\n\t\t\t\t// Receipt persisted despite the append error: recoverable, keep going.\n\t\t\t\tappliedReceipts.push(post);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\treturn {\n\t\t\t\tstatus: \"in_doubt\",\n\t\t\t\texecutedStepIds,\n\t\t\t\tskippedStepIds,\n\t\t\t\tappliedReceipts,\n\t\t\t\tstoppedAtStepId: step.id,\n\t\t\t\treason: `receipt append failed after side effect for step \"${step.id}\" with no durable receipt`,\n\t\t\t};\n\t\t}\n\t}\n\n\treturn { status: \"completed\", executedStepIds, skippedStepIds, appliedReceipts };\n}\n\n/**\n * A registered compensator and its forward-execution status.\n */\nexport interface CompensatorExecutionStep {\n\tid: string;\n\tsequence: number;\n\tidempotent: boolean;\n\tapplied: boolean;\n\trun: () => void;\n}\n\nexport interface CompensationHandle {\n\tappendCompensationStart: (record: LedgerRecord) => void;\n\tappendCompensationReceipt: (record: LedgerRecord) => void;\n}\n\nexport interface GatedCompensationRequest {\n\trunId: string;\n\tnodeId: string;\n\toperationId: string;\n\tidempotencyKey: string;\n\tbeforeStateHash: string;\n\tafterStateHash: string;\n\tattemptId?: string;\n\tsteps: readonly CompensatorExecutionStep[];\n}\n\nexport interface GatedCompensationResult {\n\tstatus: \"rolled_back\";\n\texecutedStepIds: string[];\n\treceipts: LedgerRecord[];\n}\n\n/**\n * Run compensation fail-closed (algorithm-plan Phase 1, test 4 + invariant I7).\n *\n * 1. Refuse to auto-compensate if any NON-idempotent step was already applied\n * (state is ambiguous): throw COMPENSATION_FAILED before anything runs.\n * 2. The compensation start is itself ledger-gated: if its required event cannot\n * be appended, throw RequiredAuditWriteError and run NO compensators.\n * 3. Only idempotent compensators run, in reverse execution order, each\n * recording a compensation receipt.\n */\nexport function runGatedCompensation(\n\thandle: CompensationHandle,\n\trequest: GatedCompensationRequest,\n): GatedCompensationResult {\n\tconst baseContext = {\n\t\trunId: request.runId,\n\t\tnodeId: request.nodeId,\n\t\toperationId: request.operationId,\n\t\tphase: \"compensate\" as TransactionPhase,\n\t\teventType: \"scheduler.node.compensating\",\n\t\tattemptId: request.attemptId,\n\t};\n\n\tfor (const step of request.steps) {\n\t\tif (!step.idempotent && step.applied) {\n\t\t\tthrow new CoordinatorError(\n\t\t\t\t\"COMPENSATION_FAILED\",\n\t\t\t\t`cannot auto-compensate non-idempotent step \"${step.id}\" that was already applied`,\n\t\t\t\t{ ...baseContext, recoverability: \"in_doubt\" },\n\t\t\t);\n\t\t}\n\t}\n\n\tconst startRecord = buildLedgerRecord(\n\t\t{\n\t\t\toperationId: request.operationId,\n\t\t\trunId: request.runId,\n\t\t\tnodeId: request.nodeId,\n\t\t\teventType: \"scheduler.node.compensating\",\n\t\t\tphase: \"compensate\",\n\t\t\tidempotencyKey: request.idempotencyKey,\n\t\t\tattemptId: request.attemptId,\n\t\t},\n\t\trequest.beforeStateHash,\n\t\trequest.afterStateHash,\n\t);\n\n\ttry {\n\t\thandle.appendCompensationStart(startRecord);\n\t} catch (cause) {\n\t\tthrow new RequiredAuditWriteError(\"required compensation-start ledger append failed\", { ...baseContext, cause });\n\t}\n\n\tconst reversed = request.steps.filter((step) => step.idempotent).sort((a, b) => b.sequence - a.sequence);\n\tconst executedStepIds: string[] = [];\n\tconst receipts: LedgerRecord[] = [];\n\n\tfor (const step of reversed) {\n\t\ttry {\n\t\t\tstep.run();\n\t\t} catch (cause) {\n\t\t\tthrow new CoordinatorError(\"COMPENSATION_FAILED\", `compensator \"${step.id}\" failed`, {\n\t\t\t\t...baseContext,\n\t\t\t\trecoverability: \"in_doubt\",\n\t\t\t\tcause,\n\t\t\t});\n\t\t}\n\t\texecutedStepIds.push(step.id);\n\t\tconst receipt = buildLedgerRecord(\n\t\t\t{\n\t\t\t\toperationId: request.operationId,\n\t\t\t\trunId: request.runId,\n\t\t\t\tnodeId: request.nodeId,\n\t\t\t\teventType: \"scheduler.node.compensation.receipt\",\n\t\t\t\tphase: \"compensate\",\n\t\t\t\tidempotencyKey: `${request.idempotencyKey}:${step.id}`,\n\t\t\t\tattemptId: request.attemptId,\n\t\t\t},\n\t\t\trequest.beforeStateHash,\n\t\t\trequest.afterStateHash,\n\t\t);\n\t\thandle.appendCompensationReceipt(receipt);\n\t\treceipts.push(receipt);\n\t}\n\n\treturn { status: \"rolled_back\", executedStepIds, receipts };\n}\n"]}