open-multi-agent-kit 0.80.7 → 0.90.0

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