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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loop-registry.js","sourceRoot":"","sources":["../../src/core/loop-registry.ts"],"names":[],"mappings":"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","sourcesContent":["import type {\n\tLoopBudgetPolicy,\n\tLoopConnectorBinding,\n\tLoopDefinition,\n\tLoopDurableStatePolicy,\n\tLoopHumanGatePolicy,\n\tLoopLevel,\n\tLoopSafetyPolicy,\n\tLoopSchedulePolicy,\n\tLoopSkillBinding,\n\tLoopSubagentPolicy,\n\tLoopValidationDiagnostic,\n\tLoopWatchedScope,\n\tLoopWorktreeIsolationPolicy,\n} from \"./loop-types.ts\";\n\nexport type LoopPatternRisk = \"low\" | \"medium\" | \"high\";\n\nexport type LoopPatternTool = \"grok\" | \"claude-code\" | \"codex\" | \"github-actions\" | \"cursor\" | \"windsurf\" | \"aider\";\n\nexport type LoopPatternTokenCost = \"low\" | \"medium\" | \"high\" | \"very-high\";\n\nexport interface LoopPatternCost {\n\treadonly tokensNoop?: number;\n\treadonly tokensReport?: number;\n\treadonly tokensAction?: number;\n\treadonly suggestedDailyCap?: number;\n\treadonly earlyExitRequired?: boolean;\n\treadonly tokens_noop?: number;\n\treadonly tokens_report?: number;\n\treadonly tokens_action?: number;\n\treadonly suggested_daily_cap?: number;\n\treadonly early_exit_required?: boolean;\n}\n\nexport interface LoopPatternRegistryEntry {\n\treadonly id: string;\n\treadonly name: string;\n\treadonly file: string;\n\treadonly goal: string;\n\treadonly cadence: string;\n\treadonly risk: LoopPatternRisk;\n\treadonly tools: readonly LoopPatternTool[];\n\treadonly skills: readonly string[];\n\treadonly state: string;\n\treadonly phases: readonly string[];\n\treadonly humanGates?: readonly string[];\n\treadonly human_gates?: readonly string[];\n\treadonly starter: string;\n\treadonly weekOneMode?: LoopLevel;\n\treadonly week_one_mode?: LoopLevel;\n\treadonly tokenCost?: LoopPatternTokenCost;\n\treadonly token_cost?: LoopPatternTokenCost;\n\treadonly cost: LoopPatternCost;\n\treadonly nonGoals?: readonly string[];\n\treadonly non_goals?: readonly string[];\n\treadonly triggerKeywords?: readonly string[];\n\treadonly trigger_keywords?: readonly string[];\n\treadonly skillTriggers?: Readonly<Record<string, readonly string[]>>;\n\treadonly skill_triggers?: Readonly<Record<string, readonly string[]>>;\n\treadonly connectors?: readonly LoopConnectorBinding[];\n\treadonly worktree?: Partial<LoopWorktreeIsolationPolicy>;\n\treadonly subagents?: Partial<LoopSubagentPolicy>;\n\treadonly durableState?: Partial<LoopDurableStatePolicy>;\n\treadonly durable_state?: Partial<LoopDurableStatePolicy>;\n\treadonly humanGatePolicy?: Partial<LoopHumanGatePolicy>;\n\treadonly human_gate_policy?: Partial<LoopHumanGatePolicy>;\n}\n\nexport interface LoopPatternRegistryValidationResult {\n\treadonly valid: boolean;\n\treadonly diagnostics: readonly LoopValidationDiagnostic[];\n}\n\nexport interface CompileLoopDefinitionOptions {\n\treadonly id?: string;\n\treadonly repo: string;\n\treadonly scope?: Partial<LoopWatchedScope>;\n\treadonly level?: LoopLevel;\n\treadonly statePath?: string;\n\treadonly runLogPath?: string;\n\treadonly allowedWriteScopes?: readonly string[];\n\treadonly deniedWriteScopes?: readonly string[];\n\treadonly budget?: Partial<LoopBudgetPolicy>;\n\treadonly safety?: Partial<LoopSafetyPolicy>;\n\treadonly schedule?: Partial<LoopSchedulePolicy>;\n\treadonly worktree?: Partial<LoopWorktreeIsolationPolicy>;\n\treadonly skills?: readonly LoopSkillBinding[];\n\treadonly connectors?: readonly LoopConnectorBinding[];\n\treadonly subagents?: Partial<LoopSubagentPolicy>;\n\treadonly durableState?: Partial<LoopDurableStatePolicy>;\n\treadonly humanGates?: Partial<LoopHumanGatePolicy>;\n}\n\ninterface NormalizedCost {\n\treadonly tokensNoop: number;\n\treadonly tokensReport: number;\n\treadonly tokensAction: number;\n\treadonly suggestedDailyCap: number;\n\treadonly earlyExitRequired: boolean;\n}\n\ninterface ParsedCadence {\n\treadonly shortestMinutes: number;\n}\n\nconst WARNING_DIAGNOSTIC_CODES = new Set([\"trigger-overlap\", \"ambiguous-skill-trigger\"]);\n\nconst DENIED_WRITE_SCOPES = [\"**/.env*\", \"**/*secret*\", \"**/*key*\"] as const;\nconst WORKTREE_ISOLATION_MODES: readonly string[] = [\"none\", \"per-run\", \"per-item\"];\nconst WORKTREE_CLEANUP_POLICIES: readonly string[] = [\"after-run\", \"after-merge\", \"manual\"];\nconst CONNECTOR_KINDS: readonly string[] = [\"mcp\", \"connector\"];\nconst CAPABILITY_ACCESS_MODES: readonly string[] = [\"required\", \"optional\"];\nconst SUBAGENT_ROLES: readonly string[] = [\"maker\", \"checker\", \"scout\", \"planner\"];\nconst WORK_ITEM_RISKS: readonly string[] = [\"low\", \"medium\", \"high\"];\n\nexport const OMK_LOOP_SKELETONS: readonly LoopPatternRegistryEntry[] = [\n\t{\n\t\tid: \"omk-daily-triage\",\n\t\tname: \"OMK Daily Triage\",\n\t\tfile: \"omk-daily-triage.md\",\n\t\tgoal: \"Scan CI, issues, PRs, and run state, then report prioritized loop work.\",\n\t\tcadence: \"1d\",\n\t\trisk: \"low\",\n\t\ttools: [\"codex\", \"github-actions\"],\n\t\tskills: [\"loop-triage\", \"evidence-summary\"],\n\t\tstate: \".omk/loops/omk-daily-triage/state.json\",\n\t\tphases: [\"scan\", \"rank\", \"report\", \"escalate\"],\n\t\thumanGates: [\"priority-change\", \"cross-repo-action\"],\n\t\tstarter: \"starters/omk-daily-triage\",\n\t\tweekOneMode: \"L1\",\n\t\ttokenCost: \"medium\",\n\t\tcost: {\n\t\t\ttokensNoop: 5_000,\n\t\t\ttokensReport: 40_000,\n\t\t\ttokensAction: 80_000,\n\t\t\tsuggestedDailyCap: 120_000,\n\t\t\tearlyExitRequired: true,\n\t\t},\n\t\tnonGoals: [\"write code\", \"open pull requests\", \"modify release state\"],\n\t\ttriggerKeywords: [\"daily triage\", \"morning scan\", \"status sweep\"],\n\t\tskillTriggers: {\n\t\t\t\"loop-triage\": [\"ci red\", \"stale pr\", \"untriaged issue\"],\n\t\t\t\"evidence-summary\": [\"run log\", \"state diff\"],\n\t\t},\n\t\tconnectors: [\n\t\t\t{\n\t\t\t\tid: \"github\",\n\t\t\t\tkind: \"connector\",\n\t\t\t\tpurpose: \"Read issues, pull requests, and workflow status.\",\n\t\t\t\taccess: \"required\",\n\t\t\t\ttools: [\"issues\", \"pull-requests\", \"actions\"],\n\t\t\t},\n\t\t],\n\t\tworktree: {\n\t\t\tmode: \"none\",\n\t\t\tcleanup: \"manual\",\n\t\t\trequireCleanCheckout: false,\n\t\t},\n\t\tsubagents: {\n\t\t\trequireMakerChecker: false,\n\t\t\tmakerRole: \"triage-reporter\",\n\t\t\tmaxParallel: 1,\n\t\t},\n\t\thumanGatePolicy: {\n\t\t\trequiredForRisks: [\"high\"],\n\t\t\tgates: [\"priority-change\", \"cross-repo-action\"],\n\t\t\tapprovalRefsRequired: true,\n\t\t},\n\t},\n\t{\n\t\tid: \"omk-isolated-fix\",\n\t\tname: \"OMK Isolated Fix\",\n\t\tfile: \"omk-isolated-fix.md\",\n\t\tgoal: \"Claim one bounded work item, isolate it in a worktree, implement, and verify with maker/checker roles.\",\n\t\tcadence: \"2h-6h\",\n\t\trisk: \"medium\",\n\t\ttools: [\"codex\", \"github-actions\"],\n\t\tskills: [\"focused-implementation\", \"test-debug-loop\", \"code-review\"],\n\t\tstate: \".omk/loops/omk-isolated-fix/state.json\",\n\t\tphases: [\"claim\", \"isolate\", \"implement\", \"check\", \"record\"],\n\t\thumanGates: [\"high-risk-change\", \"scope-expansion\", \"release-impact\"],\n\t\tstarter: \"starters/omk-isolated-fix\",\n\t\tweekOneMode: \"L2\",\n\t\ttokenCost: \"high\",\n\t\tcost: {\n\t\t\ttokensNoop: 8_000,\n\t\t\ttokensReport: 50_000,\n\t\t\ttokensAction: 180_000,\n\t\t\tsuggestedDailyCap: 400_000,\n\t\t\tearlyExitRequired: true,\n\t\t},\n\t\tnonGoals: [\"large refactors\", \"dependency upgrades\", \"release automation\"],\n\t\ttriggerKeywords: [\"bounded fix\", \"loop regression\", \"failing focused test\"],\n\t\tskillTriggers: {\n\t\t\t\"focused-implementation\": [\"implement\", \"fix\", \"migrate\"],\n\t\t\t\"test-debug-loop\": [\"failing test\", \"regression\"],\n\t\t\t\"code-review\": [\"checker\", \"review\"],\n\t\t},\n\t\tconnectors: [\n\t\t\t{\n\t\t\t\tid: \"github\",\n\t\t\t\tkind: \"connector\",\n\t\t\t\tpurpose: \"Read linked issues, PR context, and workflow status.\",\n\t\t\t\taccess: \"required\",\n\t\t\t\ttools: [\"issues\", \"pull-requests\", \"actions\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"context7\",\n\t\t\t\tkind: \"mcp\",\n\t\t\t\tpurpose: \"Fetch current library documentation when implementation touches external APIs.\",\n\t\t\t\taccess: \"optional\",\n\t\t\t\ttools: [\"resolve-library-id\", \"get-library-docs\"],\n\t\t\t},\n\t\t],\n\t\tworktree: {\n\t\t\tmode: \"per-item\",\n\t\t\tbranchPrefix: \"omk/loops/isolated-fix/\",\n\t\t\tcleanup: \"after-run\",\n\t\t\trequireCleanCheckout: true,\n\t\t\tmaxConcurrentWorktrees: 1,\n\t\t},\n\t\tsubagents: {\n\t\t\trequireMakerChecker: true,\n\t\t\tmakerRole: \"implementation-worker\",\n\t\t\tcheckerRole: \"independent-checker\",\n\t\t\tmaxParallel: 2,\n\t\t},\n\t\thumanGatePolicy: {\n\t\t\trequiredForRisks: [\"high\"],\n\t\t\tgates: [\"high-risk-change\", \"scope-expansion\", \"release-impact\"],\n\t\t\tapprovalRefsRequired: true,\n\t\t},\n\t},\n\t{\n\t\tid: \"omk-release-guardian\",\n\t\tname: \"OMK Release Guardian\",\n\t\tfile: \"omk-release-guardian.md\",\n\t\tgoal: \"Guard release readiness with durable run logs, budget ceilings, human approvals, and independent checks.\",\n\t\tcadence: \"6h-1d\",\n\t\trisk: \"high\",\n\t\ttools: [\"codex\", \"github-actions\"],\n\t\tskills: [\"release-audit\", \"security-review\", \"verification-gates\"],\n\t\tstate: \".omk/loops/omk-release-guardian/state.json\",\n\t\tphases: [\"snapshot\", \"audit\", \"gate\", \"escalate\", \"record\"],\n\t\thumanGates: [\"release-cut\", \"publish\", \"security-exception\"],\n\t\tstarter: \"starters/omk-release-guardian\",\n\t\tweekOneMode: \"L3\",\n\t\ttokenCost: \"very-high\",\n\t\tcost: {\n\t\t\ttokensNoop: 12_000,\n\t\t\ttokensReport: 90_000,\n\t\t\ttokensAction: 240_000,\n\t\t\tsuggestedDailyCap: 600_000,\n\t\t\tearlyExitRequired: true,\n\t\t},\n\t\tnonGoals: [\"publish without approval\", \"skip changelog audit\", \"bypass failing verification\"],\n\t\ttriggerKeywords: [\"release\", \"publish\", \"release gate\"],\n\t\tskillTriggers: {\n\t\t\t\"release-audit\": [\"changelog\", \"version\", \"publish\"],\n\t\t\t\"security-review\": [\"secret\", \"credential\", \"security\"],\n\t\t\t\"verification-gates\": [\"smoke test\", \"release blocker\"],\n\t\t},\n\t\tconnectors: [\n\t\t\t{\n\t\t\t\tid: \"github\",\n\t\t\t\tkind: \"connector\",\n\t\t\t\tpurpose: \"Read release branches, workflow status, tags, and pull request approvals.\",\n\t\t\t\taccess: \"required\",\n\t\t\t\ttools: [\"branches\", \"pull-requests\", \"actions\", \"releases\"],\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"playwright\",\n\t\t\t\tkind: \"mcp\",\n\t\t\t\tpurpose: \"Collect browser smoke evidence for release readiness.\",\n\t\t\t\taccess: \"optional\",\n\t\t\t\ttools: [\"navigate\", \"screenshot\", \"assert\"],\n\t\t\t},\n\t\t],\n\t\tworktree: {\n\t\t\tmode: \"per-run\",\n\t\t\tbranchPrefix: \"omk/loops/release-guardian/\",\n\t\t\tcleanup: \"manual\",\n\t\t\trequireCleanCheckout: true,\n\t\t\tmaxConcurrentWorktrees: 1,\n\t\t},\n\t\tsubagents: {\n\t\t\trequireMakerChecker: true,\n\t\t\tmakerRole: \"release-auditor\",\n\t\t\tcheckerRole: \"release-checker\",\n\t\t\tmaxParallel: 3,\n\t\t},\n\t\thumanGatePolicy: {\n\t\t\trequiredForRisks: [\"medium\", \"high\"],\n\t\t\tgates: [\"release-cut\", \"publish\", \"security-exception\"],\n\t\t\tapprovalRefsRequired: true,\n\t\t},\n\t},\n];\n\nexport function validateLoopPatternRegistry(\n\tentries: readonly LoopPatternRegistryEntry[],\n): LoopPatternRegistryValidationResult {\n\tconst diagnostics: LoopValidationDiagnostic[] = [];\n\tconst ids = new Map<string, number>();\n\tconst triggerOwners = new Map<string, { readonly id: string; readonly index: number }>();\n\tconst skillTriggerOwners = new Map<\n\t\tstring,\n\t\t{ readonly id: string; readonly skill: string; readonly index: number }\n\t>();\n\n\tfor (const [index, entry] of entries.entries()) {\n\t\tconst priorIndex = ids.get(entry.id);\n\t\tif (priorIndex !== undefined) {\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: \"duplicate-id\",\n\t\t\t\tmessage: `Duplicate loop pattern id '${entry.id}' also appears at index ${priorIndex}.`,\n\t\t\t\tpath: `[${index}].id`,\n\t\t\t});\n\t\t} else {\n\t\t\tids.set(entry.id, index);\n\t\t}\n\n\t\tif (!isSafeStarterPath(entry.starter)) {\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: \"invalid-starter-path\",\n\t\t\t\tmessage: `Starter path for '${entry.id}' must be a relative, non-traversing path.`,\n\t\t\t\tpath: `[${index}].starter`,\n\t\t\t});\n\t\t}\n\n\t\tif (parseCadence(entry.cadence) === undefined) {\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: \"invalid-cadence\",\n\t\t\t\tmessage: `Cadence for '${entry.id}' must be a positive duration or duration range.`,\n\t\t\t\tpath: `[${index}].cadence`,\n\t\t\t});\n\t\t}\n\n\t\tconst normalizedCost = normalizeCost(entry.cost);\n\t\tif (normalizedCost === undefined) {\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: \"invalid-cost\",\n\t\t\t\tmessage: `Cost for '${entry.id}' must include positive integer noop/report/action token estimates.`,\n\t\t\t\tpath: `[${index}].cost`,\n\t\t\t});\n\t\t} else if (\n\t\t\tnormalizedCost.tokensNoop > normalizedCost.tokensReport ||\n\t\t\tnormalizedCost.tokensReport > normalizedCost.tokensAction\n\t\t) {\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: \"non-monotonic-cost\",\n\t\t\t\tmessage: `Cost for '${entry.id}' must satisfy noop <= report <= action.`,\n\t\t\t\tpath: `[${index}].cost`,\n\t\t\t});\n\t\t}\n\n\t\tdiagnostics.push(...validatePatternPrimitives(entry, index));\n\n\t\tfor (const trigger of normalizedTriggerKeywords(entry)) {\n\t\t\tconst priorOwner = triggerOwners.get(trigger);\n\t\t\tif (priorOwner !== undefined && priorOwner.id !== entry.id) {\n\t\t\t\tdiagnostics.push({\n\t\t\t\t\tcode: \"trigger-overlap\",\n\t\t\t\t\tmessage: `Trigger '${trigger}' is shared by '${priorOwner.id}' and '${entry.id}'.`,\n\t\t\t\t\tpath: `[${index}].triggerKeywords`,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\ttriggerOwners.set(trigger, { id: entry.id, index });\n\t\t\t}\n\t\t}\n\n\t\tfor (const trigger of normalizedSkillTriggers(entry)) {\n\t\t\tconst priorOwner = skillTriggerOwners.get(trigger.term);\n\t\t\tif (priorOwner !== undefined && (priorOwner.id !== entry.id || priorOwner.skill !== trigger.skill)) {\n\t\t\t\tdiagnostics.push({\n\t\t\t\t\tcode: \"ambiguous-skill-trigger\",\n\t\t\t\t\tmessage: `Skill trigger '${trigger.term}' is shared by '${priorOwner.id}/${priorOwner.skill}' and '${entry.id}/${trigger.skill}'.`,\n\t\t\t\t\tpath: `[${index}].skillTriggers.${trigger.skill}`,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tskillTriggerOwners.set(trigger.term, { id: entry.id, skill: trigger.skill, index });\n\t\t\t}\n\t\t}\n\t}\n\n\treturn {\n\t\tvalid: diagnostics.every((diagnostic) => WARNING_DIAGNOSTIC_CODES.has(diagnostic.code)),\n\t\tdiagnostics,\n\t};\n}\n\nexport function compileLoopDefinitionFromPattern(\n\tentry: LoopPatternRegistryEntry,\n\toptions: CompileLoopDefinitionOptions,\n): LoopDefinition {\n\tconst validation = validateLoopPatternRegistry([entry]);\n\tconst errors = validation.diagnostics.filter((diagnostic) => !WARNING_DIAGNOSTIC_CODES.has(diagnostic.code));\n\tif (errors.length > 0) {\n\t\tthrow new Error(`Invalid loop pattern '${entry.id}': ${errors.map((diagnostic) => diagnostic.code).join(\", \")}`);\n\t}\n\n\tconst cost = requireNormalizedCost(entry);\n\tconst cadence = requireParsedCadence(entry);\n\tconst level = options.level ?? entry.weekOneMode ?? entry.week_one_mode ?? \"L1\";\n\tconst defaultBudget = budgetDefaultsForLevel(level, cost, cadence);\n\tconst allowedWriteScopes = level === \"L1\" ? [] : [...(options.allowedWriteScopes ?? [])];\n\tconst defaultSafety = safetyDefaultsForLevel(level, allowedWriteScopes, options.deniedWriteScopes);\n\tconst scope = options.scope ?? {};\n\tconst statePath = options.statePath ?? `.omk/loops/${entry.id}/state.json`;\n\tconst runLogPath = options.runLogPath ?? `.omk/loops/${entry.id}/run-log.ndjson`;\n\tconst schedule = {\n\t\t...scheduleDefaultsForPattern(entry, cadence),\n\t\t...options.schedule,\n\t};\n\tconst worktree = {\n\t\t...worktreeDefaultsForLevel(entry, level),\n\t\t...entry.worktree,\n\t\t...options.worktree,\n\t};\n\tconst skills = options.skills ?? skillBindingsForPattern(entry);\n\tconst connectors = options.connectors ?? [...(entry.connectors ?? [])];\n\tconst subagents = subagentDefaultsForLevel(entry, level, skills, connectors, {\n\t\t...entry.subagents,\n\t\t...options.subagents,\n\t});\n\tconst durableState = {\n\t\t...durableStateDefaultsForPattern(entry, statePath, runLogPath),\n\t\t...(entry.durableState ?? entry.durable_state),\n\t\t...options.durableState,\n\t};\n\tconst humanGates = {\n\t\t...humanGateDefaultsForPattern(entry),\n\t\t...(entry.humanGatePolicy ?? entry.human_gate_policy),\n\t\t...options.humanGates,\n\t};\n\n\treturn {\n\t\tid: options.id ?? entry.id,\n\t\tpattern: entry.id,\n\t\tobjective: entry.goal,\n\t\tnonGoals: entry.nonGoals ?? entry.non_goals ?? [],\n\t\tlevel,\n\t\twatchedScope: {\n\t\t\trepos: scope.repos?.length === undefined || scope.repos.length === 0 ? [options.repo] : scope.repos,\n\t\t\t...(scope.branches === undefined ? {} : { branches: scope.branches }),\n\t\t\t...(scope.paths === undefined ? {} : { paths: scope.paths }),\n\t\t\t...(scope.tickets === undefined ? {} : { tickets: scope.tickets }),\n\t\t},\n\t\tbudget: {\n\t\t\t...defaultBudget,\n\t\t\t...options.budget,\n\t\t},\n\t\tsafety: {\n\t\t\t...defaultSafety,\n\t\t\t...options.safety,\n\t\t\tallowedWriteScopes:\n\t\t\t\tlevel === \"L1\" ? [] : (options.safety?.allowedWriteScopes ?? defaultSafety.allowedWriteScopes),\n\t\t},\n\t\tstatePath,\n\t\trunLogPath,\n\t\tschedule,\n\t\tworktree,\n\t\tskills,\n\t\tconnectors,\n\t\tsubagents,\n\t\tdurableState,\n\t\thumanGates,\n\t};\n}\n\nexport function detectStarterDrift(\n\tentry: LoopPatternRegistryEntry,\n\tavailableStarterIds: readonly string[],\n): LoopPatternRegistryValidationResult {\n\tconst diagnostics: LoopValidationDiagnostic[] = [];\n\tif (!isSafeStarterPath(entry.starter)) {\n\t\tdiagnostics.push({\n\t\t\tcode: \"invalid-starter-path\",\n\t\t\tmessage: `Starter path for '${entry.id}' must be a relative, non-traversing path.`,\n\t\t\tpath: \"starter\",\n\t\t});\n\t\treturn { valid: false, diagnostics };\n\t}\n\n\tconst expected = normalizeStarterIdentifier(entry.starter);\n\tconst expectedId = lastPathSegment(expected);\n\tconst available = new Set(availableStarterIds.map(normalizeStarterIdentifier));\n\tif (!available.has(expected) && !available.has(expectedId)) {\n\t\tdiagnostics.push({\n\t\t\tcode: \"missing-starter\",\n\t\t\tmessage: `Starter '${entry.starter}' for '${entry.id}' is not present in the available starter inventory.`,\n\t\t\tpath: \"starter\",\n\t\t});\n\t}\n\n\treturn { valid: diagnostics.length === 0, diagnostics };\n}\n\nfunction validatePatternPrimitives(\n\tentry: LoopPatternRegistryEntry,\n\tindex: number,\n): readonly LoopValidationDiagnostic[] {\n\tconst diagnostics: LoopValidationDiagnostic[] = [];\n\n\tif (entry.skills.length === 0) {\n\t\tdiagnostics.push({\n\t\t\tcode: \"skills-required\",\n\t\t\tmessage: `Loop pattern '${entry.id}' must declare at least one OMK skill.`,\n\t\t\tpath: `[${index}].skills`,\n\t\t});\n\t}\n\tpushNonEmptyUniqueDiagnostics(diagnostics, entry.skills, `[${index}].skills`, \"skill\");\n\tpushNonEmptyUniqueDiagnostics(diagnostics, entry.phases, `[${index}].phases`, \"phase\");\n\tpushNonEmptyUniqueDiagnostics(\n\t\tdiagnostics,\n\t\tentry.humanGates ?? entry.human_gates ?? [],\n\t\t`[${index}].humanGates`,\n\t\t\"human-gate\",\n\t);\n\tpushConnectorDiagnostics(diagnostics, entry, index);\n\tpushWorktreeDiagnostics(diagnostics, entry, index);\n\tpushSubagentDiagnostics(diagnostics, entry, index);\n\tpushDurableStateDiagnostics(diagnostics, entry, index);\n\tpushHumanGatePolicyDiagnostics(diagnostics, entry, index);\n\n\treturn diagnostics;\n}\n\nfunction scheduleDefaultsForPattern(entry: LoopPatternRegistryEntry, cadence: ParsedCadence): LoopSchedulePolicy {\n\treturn {\n\t\tmode: \"interval\",\n\t\tcadence: entry.cadence,\n\t\tshortestIntervalMinutes: cadence.shortestMinutes,\n\t\trunOn: [\"schedule\"],\n\t\tjitterMinutes: Math.min(15, Math.max(1, Math.floor(cadence.shortestMinutes * 0.1))),\n\t};\n}\n\nfunction worktreeDefaultsForLevel(entry: LoopPatternRegistryEntry, level: LoopLevel): LoopWorktreeIsolationPolicy {\n\tif (level === \"L1\") {\n\t\treturn {\n\t\t\tmode: \"none\",\n\t\t\tcleanup: \"manual\",\n\t\t\trequireCleanCheckout: false,\n\t\t};\n\t}\n\n\treturn {\n\t\tmode: level === \"L2\" ? \"per-item\" : \"per-run\",\n\t\tbranchPrefix: `omk/loops/${entry.id}/`,\n\t\tcleanup: level === \"L2\" ? \"after-run\" : \"manual\",\n\t\trequireCleanCheckout: true,\n\t\tmaxConcurrentWorktrees: 1,\n\t};\n}\n\nfunction skillBindingsForPattern(entry: LoopPatternRegistryEntry): readonly LoopSkillBinding[] {\n\tconst triggerMap = entry.skillTriggers ?? entry.skill_triggers ?? {};\n\treturn uniqueTrimmedStrings(entry.skills).map((id) => {\n\t\tconst triggerKeywords = uniqueNormalizedTerms(triggerMap[id] ?? []);\n\t\treturn {\n\t\t\tid,\n\t\t\tpurpose: `Enable ${id} for ${entry.id}.`,\n\t\t\taccess: \"required\",\n\t\t\t...(triggerKeywords.length === 0 ? {} : { triggerKeywords }),\n\t\t};\n\t});\n}\n\nfunction subagentDefaultsForLevel(\n\tentry: LoopPatternRegistryEntry,\n\tlevel: LoopLevel,\n\tskills: readonly LoopSkillBinding[],\n\tconnectors: readonly LoopConnectorBinding[],\n\toverrides: Partial<LoopSubagentPolicy>,\n): LoopSubagentPolicy {\n\tconst requireMakerChecker = overrides.requireMakerChecker ?? level !== \"L1\";\n\tconst makerRole = nonEmptyString(overrides.makerRole) ?? `${entry.id}-maker`;\n\tconst checkerRole =\n\t\tnonEmptyString(overrides.checkerRole) ?? (requireMakerChecker ? `${entry.id}-checker` : undefined);\n\tconst skillIds = skills.map((skill) => skill.id);\n\tconst connectorIds = connectors.map((connector) => connector.id);\n\tconst roles = overrides.roles ?? [\n\t\t{\n\t\t\tid: makerRole,\n\t\t\trole: \"maker\" as const,\n\t\t\tskills: skillIds,\n\t\t\tconnectors: connectorIds,\n\t\t},\n\t\t...(checkerRole === undefined\n\t\t\t? []\n\t\t\t: [\n\t\t\t\t\t{\n\t\t\t\t\t\tid: checkerRole,\n\t\t\t\t\t\trole: \"checker\" as const,\n\t\t\t\t\t\tskills: skillIds,\n\t\t\t\t\t\tconnectors: connectorIds,\n\t\t\t\t\t\tindependentFrom: [makerRole],\n\t\t\t\t\t},\n\t\t\t\t]),\n\t];\n\n\treturn {\n\t\tmaxParallel: overrides.maxParallel ?? (level === \"L3\" ? 3 : level === \"L2\" ? 2 : 1),\n\t\trequireMakerChecker,\n\t\tmakerRole,\n\t\t...(checkerRole === undefined ? {} : { checkerRole }),\n\t\troles,\n\t};\n}\n\nfunction durableStateDefaultsForPattern(\n\tentry: LoopPatternRegistryEntry,\n\tstatePath: string,\n\trunLogPath: string,\n): LoopDurableStatePolicy {\n\treturn {\n\t\tstatePath,\n\t\trunLogPath,\n\t\tbudgetLedgerPath: `.omk/loops/${entry.id}/budget-ledger.ndjson`,\n\t\tretentionDays: 30,\n\t\trequireReplayableEvidence: true,\n\t};\n}\n\nfunction humanGateDefaultsForPattern(entry: LoopPatternRegistryEntry): LoopHumanGatePolicy {\n\tconst gates = normalizedHumanGateIds(entry);\n\treturn {\n\t\tgates: gates.length === 0 ? [\"high-risk-change\"] : gates,\n\t\trequiredForRisks: [\"high\"],\n\t\tapprovalRefsRequired: true,\n\t};\n}\n\nfunction pushNonEmptyUniqueDiagnostics(\n\tdiagnostics: LoopValidationDiagnostic[],\n\tvalues: readonly string[],\n\tpath: string,\n\tlabel: string,\n): void {\n\tconst seen = new Set<string>();\n\tfor (const [valueIndex, value] of values.entries()) {\n\t\tconst normalized = normalizeTerm(value);\n\t\tif (normalized.length === 0) {\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: `${label}-id-required`,\n\t\t\t\tmessage: `${label} id must be non-empty.`,\n\t\t\t\tpath: `${path}[${valueIndex}]`,\n\t\t\t});\n\t\t\tcontinue;\n\t\t}\n\t\tif (seen.has(normalized)) {\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: `${label}-duplicate`,\n\t\t\t\tmessage: `${label} id '${value}' is declared more than once.`,\n\t\t\t\tpath: `${path}[${valueIndex}]`,\n\t\t\t});\n\t\t}\n\t\tseen.add(normalized);\n\t}\n}\n\nfunction pushConnectorDiagnostics(\n\tdiagnostics: LoopValidationDiagnostic[],\n\tentry: LoopPatternRegistryEntry,\n\tindex: number,\n): void {\n\tconst connectors = entry.connectors ?? [];\n\tconst seen = new Set<string>();\n\tfor (const [connectorIndex, connector] of connectors.entries()) {\n\t\tconst basePath = `[${index}].connectors[${connectorIndex}]`;\n\t\tconst id = normalizeTerm(connector.id);\n\t\tif (!id) {\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: \"connector-id-required\",\n\t\t\t\tmessage: `Connector id for '${entry.id}' must be non-empty.`,\n\t\t\t\tpath: `${basePath}.id`,\n\t\t\t});\n\t\t} else if (seen.has(id)) {\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: \"connector-duplicate\",\n\t\t\t\tmessage: `Connector '${connector.id}' is declared more than once for '${entry.id}'.`,\n\t\t\t\tpath: `${basePath}.id`,\n\t\t\t});\n\t\t}\n\t\tseen.add(id);\n\n\t\tif (!CONNECTOR_KINDS.includes(connector.kind)) {\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: \"connector-kind-invalid\",\n\t\t\t\tmessage: `Connector '${connector.id}' has invalid kind '${connector.kind}'.`,\n\t\t\t\tpath: `${basePath}.kind`,\n\t\t\t});\n\t\t}\n\t\tif (!CAPABILITY_ACCESS_MODES.includes(connector.access)) {\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: \"connector-access-invalid\",\n\t\t\t\tmessage: `Connector '${connector.id}' has invalid access '${connector.access}'.`,\n\t\t\t\tpath: `${basePath}.access`,\n\t\t\t});\n\t\t}\n\t\tif (!nonEmptyString(connector.purpose)) {\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: \"connector-purpose-required\",\n\t\t\t\tmessage: `Connector '${connector.id}' must declare a purpose.`,\n\t\t\t\tpath: `${basePath}.purpose`,\n\t\t\t});\n\t\t}\n\t\tif (connector.tools?.some((tool) => tool.trim().length === 0)) {\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: \"connector-tool-required\",\n\t\t\t\tmessage: `Connector '${connector.id}' has an empty tool id.`,\n\t\t\t\tpath: `${basePath}.tools`,\n\t\t\t});\n\t\t}\n\t}\n}\n\nfunction pushWorktreeDiagnostics(\n\tdiagnostics: LoopValidationDiagnostic[],\n\tentry: LoopPatternRegistryEntry,\n\tindex: number,\n): void {\n\tconst worktree = entry.worktree;\n\tif (worktree === undefined) {\n\t\treturn;\n\t}\n\n\tif (worktree.mode !== undefined && !WORKTREE_ISOLATION_MODES.includes(worktree.mode)) {\n\t\tdiagnostics.push({\n\t\t\tcode: \"worktree-mode-invalid\",\n\t\t\tmessage: `Worktree mode '${worktree.mode}' is not supported.`,\n\t\t\tpath: `[${index}].worktree.mode`,\n\t\t});\n\t}\n\tif (worktree.cleanup !== undefined && !WORKTREE_CLEANUP_POLICIES.includes(worktree.cleanup)) {\n\t\tdiagnostics.push({\n\t\t\tcode: \"worktree-cleanup-invalid\",\n\t\t\tmessage: `Worktree cleanup '${worktree.cleanup}' is not supported.`,\n\t\t\tpath: `[${index}].worktree.cleanup`,\n\t\t});\n\t}\n\tif (worktree.branchPrefix !== undefined && !isSafeBranchPrefix(worktree.branchPrefix)) {\n\t\tdiagnostics.push({\n\t\t\tcode: \"worktree-branch-prefix-invalid\",\n\t\t\tmessage: `Worktree branchPrefix for '${entry.id}' must be relative and non-empty.`,\n\t\t\tpath: `[${index}].worktree.branchPrefix`,\n\t\t});\n\t}\n\tif (worktree.maxConcurrentWorktrees !== undefined && !isPositiveInteger(worktree.maxConcurrentWorktrees)) {\n\t\tdiagnostics.push({\n\t\t\tcode: \"worktree-concurrency-invalid\",\n\t\t\tmessage: `Worktree maxConcurrentWorktrees for '${entry.id}' must be a positive integer.`,\n\t\t\tpath: `[${index}].worktree.maxConcurrentWorktrees`,\n\t\t});\n\t}\n}\n\nfunction pushSubagentDiagnostics(\n\tdiagnostics: LoopValidationDiagnostic[],\n\tentry: LoopPatternRegistryEntry,\n\tindex: number,\n): void {\n\tconst subagents = entry.subagents;\n\tif (subagents === undefined) {\n\t\treturn;\n\t}\n\n\tif (subagents.maxParallel !== undefined && !isPositiveInteger(subagents.maxParallel)) {\n\t\tdiagnostics.push({\n\t\t\tcode: \"subagent-max-parallel-invalid\",\n\t\t\tmessage: `Subagent maxParallel for '${entry.id}' must be a positive integer.`,\n\t\t\tpath: `[${index}].subagents.maxParallel`,\n\t\t});\n\t}\n\tif (subagents.makerRole !== undefined && !nonEmptyString(subagents.makerRole)) {\n\t\tdiagnostics.push({\n\t\t\tcode: \"subagent-maker-required\",\n\t\t\tmessage: `Subagent makerRole for '${entry.id}' must be non-empty.`,\n\t\t\tpath: `[${index}].subagents.makerRole`,\n\t\t});\n\t}\n\tif (subagents.requireMakerChecker === true && !nonEmptyString(subagents.checkerRole)) {\n\t\tdiagnostics.push({\n\t\t\tcode: \"subagent-checker-required\",\n\t\t\tmessage: `Maker/checker loop '${entry.id}' must declare a checkerRole.`,\n\t\t\tpath: `[${index}].subagents.checkerRole`,\n\t\t});\n\t}\n\n\tfor (const [roleIndex, role] of (subagents.roles ?? []).entries()) {\n\t\tconst basePath = `[${index}].subagents.roles[${roleIndex}]`;\n\t\tif (!nonEmptyString(role.id)) {\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: \"subagent-role-id-required\",\n\t\t\t\tmessage: `Subagent role id for '${entry.id}' must be non-empty.`,\n\t\t\t\tpath: `${basePath}.id`,\n\t\t\t});\n\t\t}\n\t\tif (!SUBAGENT_ROLES.includes(role.role)) {\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: \"subagent-role-invalid\",\n\t\t\t\tmessage: `Subagent role '${role.role}' is not supported.`,\n\t\t\t\tpath: `${basePath}.role`,\n\t\t\t});\n\t\t}\n\t\tpushNonEmptyUniqueDiagnostics(diagnostics, role.skills, `${basePath}.skills`, \"subagent-skill\");\n\t\tpushNonEmptyUniqueDiagnostics(diagnostics, role.connectors, `${basePath}.connectors`, \"subagent-connector\");\n\t}\n}\n\nfunction pushDurableStateDiagnostics(\n\tdiagnostics: LoopValidationDiagnostic[],\n\tentry: LoopPatternRegistryEntry,\n\tindex: number,\n): void {\n\tconst durableState = entry.durableState ?? entry.durable_state;\n\tif (durableState === undefined) {\n\t\treturn;\n\t}\n\n\tpushSafeRelativePathDiagnostic(diagnostics, durableState.statePath, `[${index}].durableState.statePath`);\n\tpushSafeRelativePathDiagnostic(diagnostics, durableState.runLogPath, `[${index}].durableState.runLogPath`);\n\tpushSafeRelativePathDiagnostic(\n\t\tdiagnostics,\n\t\tdurableState.budgetLedgerPath,\n\t\t`[${index}].durableState.budgetLedgerPath`,\n\t);\n\tpushSafeRelativePathDiagnostic(diagnostics, durableState.checkpointPath, `[${index}].durableState.checkpointPath`);\n\tif (durableState.retentionDays !== undefined && !isPositiveInteger(durableState.retentionDays)) {\n\t\tdiagnostics.push({\n\t\t\tcode: \"durable-state-retention-invalid\",\n\t\t\tmessage: `Durable state retentionDays for '${entry.id}' must be a positive integer.`,\n\t\t\tpath: `[${index}].durableState.retentionDays`,\n\t\t});\n\t}\n}\n\nfunction pushHumanGatePolicyDiagnostics(\n\tdiagnostics: LoopValidationDiagnostic[],\n\tentry: LoopPatternRegistryEntry,\n\tindex: number,\n): void {\n\tconst policy = entry.humanGatePolicy ?? entry.human_gate_policy;\n\tif (policy === undefined) {\n\t\treturn;\n\t}\n\n\tpushNonEmptyUniqueDiagnostics(diagnostics, policy.gates ?? [], `[${index}].humanGatePolicy.gates`, \"human-gate\");\n\tfor (const [riskIndex, risk] of (policy.requiredForRisks ?? []).entries()) {\n\t\tif (!WORK_ITEM_RISKS.includes(risk)) {\n\t\t\tdiagnostics.push({\n\t\t\t\tcode: \"human-gate-risk-invalid\",\n\t\t\t\tmessage: `Human gate risk '${risk}' is not supported.`,\n\t\t\t\tpath: `[${index}].humanGatePolicy.requiredForRisks[${riskIndex}]`,\n\t\t\t});\n\t\t}\n\t}\n}\n\nfunction pushSafeRelativePathDiagnostic(\n\tdiagnostics: LoopValidationDiagnostic[],\n\tvalue: string | undefined,\n\tpath: string,\n): void {\n\tif (value !== undefined && !isSafeStarterPath(value)) {\n\t\tdiagnostics.push({\n\t\t\tcode: \"invalid-durable-state-path\",\n\t\t\tmessage: `${path} must be a relative, non-traversing path.`,\n\t\t\tpath,\n\t\t});\n\t}\n}\n\nfunction budgetDefaultsForLevel(level: LoopLevel, cost: NormalizedCost, cadence: ParsedCadence): LoopBudgetPolicy {\n\tconst maxRunsPerDay = Math.max(1, Math.ceil(1440 / cadence.shortestMinutes));\n\tif (level === \"L1\") {\n\t\treturn {\n\t\t\tmaxRunsPerDay,\n\t\t\tmaxTokensPerDay: cost.suggestedDailyCap,\n\t\t\tmaxSubagentsPerRun: 1,\n\t\t\tmaxAttemptsPerItem: 1,\n\t\t\tmaxAutoPrsPerDay: 0,\n\t\t\tslowDownAtRatio: cost.earlyExitRequired ? 0.75 : 0.9,\n\t\t};\n\t}\n\tif (level === \"L2\") {\n\t\treturn {\n\t\t\tmaxRunsPerDay,\n\t\t\tmaxTokensPerDay: cost.suggestedDailyCap,\n\t\t\tmaxSubagentsPerRun: 3,\n\t\t\tmaxAttemptsPerItem: 2,\n\t\t\tmaxAutoPrsPerDay: 0,\n\t\t\tslowDownAtRatio: cost.earlyExitRequired ? 0.75 : 0.9,\n\t\t};\n\t}\n\treturn {\n\t\tmaxRunsPerDay,\n\t\tmaxTokensPerDay: cost.suggestedDailyCap,\n\t\tmaxSubagentsPerRun: 5,\n\t\tmaxAttemptsPerItem: 3,\n\t\tmaxAutoPrsPerDay: 1,\n\t\tslowDownAtRatio: cost.earlyExitRequired ? 0.75 : 0.9,\n\t};\n}\n\nfunction safetyDefaultsForLevel(\n\tlevel: LoopLevel,\n\tallowedWriteScopes: readonly string[],\n\tdeniedWriteScopes: readonly string[] | undefined,\n): LoopSafetyPolicy {\n\treturn {\n\t\trequireIndependentVerifier: level !== \"L1\",\n\t\trequireHumanGateForHighRisk: true,\n\t\tallowedWriteScopes,\n\t\tdeniedWriteScopes: deniedWriteScopes ?? DENIED_WRITE_SCOPES,\n\t\tmaxWriteScopeCount: allowedWriteScopes.length,\n\t};\n}\n\nfunction isSafeStarterPath(starter: string): boolean {\n\tconst normalized = normalizeSlashes(starter).trim();\n\tif (normalized.length === 0) return false;\n\tif (normalized.startsWith(\"/\")) return false;\n\tif (/^[A-Za-z]:\\//.test(normalized)) return false;\n\treturn !normalized.split(\"/\").some((segment) => segment === \"..\");\n}\n\nfunction parseCadence(cadence: string): ParsedCadence | undefined {\n\tconst parts = cadence.split(\"-\");\n\tif (parts.length === 0 || parts.length > 2) return undefined;\n\tconst minutes = parts.map(parseDurationMinutes);\n\tif (minutes.some((value) => value === undefined)) return undefined;\n\tconst concreteMinutes = minutes.filter((value): value is number => value !== undefined);\n\treturn { shortestMinutes: Math.min(...concreteMinutes) };\n}\n\nfunction parseDurationMinutes(value: string): number | undefined {\n\tconst match = /^(?<amount>[1-9][0-9]*)(?<unit>[mhd])$/.exec(value);\n\tif (match?.groups === undefined) return undefined;\n\tconst amount = Number(match.groups.amount);\n\tif (!Number.isSafeInteger(amount) || amount <= 0) return undefined;\n\tconst unit = match.groups.unit;\n\tif (unit === \"m\") return amount;\n\tif (unit === \"h\") return amount * 60;\n\treturn amount * 1440;\n}\n\nfunction normalizeCost(cost: LoopPatternCost): NormalizedCost | undefined {\n\tconst tokensNoop = cost.tokensNoop ?? cost.tokens_noop;\n\tconst tokensReport = cost.tokensReport ?? cost.tokens_report;\n\tconst tokensAction = cost.tokensAction ?? cost.tokens_action;\n\tconst suggestedDailyCap = cost.suggestedDailyCap ?? cost.suggested_daily_cap;\n\tconst earlyExitRequired = cost.earlyExitRequired ?? cost.early_exit_required;\n\tif (\n\t\t!isPositiveInteger(tokensNoop) ||\n\t\t!isPositiveInteger(tokensReport) ||\n\t\t!isPositiveInteger(tokensAction) ||\n\t\t!isPositiveInteger(suggestedDailyCap) ||\n\t\ttypeof earlyExitRequired !== \"boolean\"\n\t) {\n\t\treturn undefined;\n\t}\n\treturn { tokensNoop, tokensReport, tokensAction, suggestedDailyCap, earlyExitRequired };\n}\n\nfunction requireNormalizedCost(entry: LoopPatternRegistryEntry): NormalizedCost {\n\tconst cost = normalizeCost(entry.cost);\n\tif (cost === undefined) throw new Error(`Invalid loop pattern '${entry.id}': invalid-cost`);\n\treturn cost;\n}\n\nfunction requireParsedCadence(entry: LoopPatternRegistryEntry): ParsedCadence {\n\tconst cadence = parseCadence(entry.cadence);\n\tif (cadence === undefined) throw new Error(`Invalid loop pattern '${entry.id}': invalid-cadence`);\n\treturn cadence;\n}\n\nfunction isPositiveInteger(value: number | undefined): value is number {\n\treturn typeof value === \"number\" && Number.isSafeInteger(value) && value > 0;\n}\n\nfunction normalizedTriggerKeywords(entry: LoopPatternRegistryEntry): readonly string[] {\n\treturn uniqueNormalizedTerms(entry.triggerKeywords ?? entry.trigger_keywords ?? []);\n}\n\nfunction normalizedSkillTriggers(\n\tentry: LoopPatternRegistryEntry,\n): readonly { readonly skill: string; readonly term: string }[] {\n\tconst triggerMap = entry.skillTriggers ?? entry.skill_triggers ?? {};\n\tconst triggers: { readonly skill: string; readonly term: string }[] = [];\n\tfor (const [skill, terms] of Object.entries(triggerMap)) {\n\t\tfor (const term of uniqueNormalizedTerms(terms)) {\n\t\t\ttriggers.push({ skill, term });\n\t\t}\n\t}\n\treturn triggers;\n}\n\nfunction normalizedHumanGateIds(entry: LoopPatternRegistryEntry): readonly string[] {\n\treturn uniqueTrimmedStrings(entry.humanGates ?? entry.human_gates ?? []);\n}\n\nfunction uniqueNormalizedTerms(terms: readonly string[]): readonly string[] {\n\tconst normalized = terms.map(normalizeTerm).filter((term) => term.length > 0);\n\treturn [...new Set(normalized)];\n}\n\nfunction uniqueTrimmedStrings(values: readonly string[]): readonly string[] {\n\tconst seen = new Set<string>();\n\tconst unique: string[] = [];\n\tfor (const value of values) {\n\t\tconst trimmed = value.trim();\n\t\tconst normalized = normalizeTerm(trimmed);\n\t\tif (trimmed.length === 0 || seen.has(normalized)) {\n\t\t\tcontinue;\n\t\t}\n\t\tseen.add(normalized);\n\t\tunique.push(trimmed);\n\t}\n\treturn unique;\n}\n\nfunction normalizeTerm(term: string): string {\n\treturn term.toLowerCase().trim().replace(/\\s+/g, \" \");\n}\n\nfunction nonEmptyString(value: string | undefined): string | undefined {\n\tconst trimmed = value?.trim();\n\treturn trimmed ? trimmed : undefined;\n}\n\nfunction normalizeStarterIdentifier(starter: string): string {\n\tconst normalized = normalizeSlashes(starter).trim().replace(/^\\.\\//, \"\").replace(/\\/+$/g, \"\");\n\treturn normalized.length === 0 ? starter : normalized;\n}\n\nfunction normalizeSlashes(value: string): string {\n\treturn value.replace(/\\\\/g, \"/\");\n}\n\nfunction isSafeBranchPrefix(branchPrefix: string): boolean {\n\tconst normalized = normalizeSlashes(branchPrefix).trim();\n\tif (normalized.length === 0) return false;\n\tif (normalized.startsWith(\"/\") || normalized.includes(\"..\")) return false;\n\treturn !/\\s/.test(normalized);\n}\n\nfunction lastPathSegment(value: string): string {\n\tconst parts = value.split(\"/\").filter((part) => part.length > 0);\n\treturn parts.at(-1) ?? value;\n}\n"]}
@@ -0,0 +1,194 @@
1
+ export type LoopLevel = "L1" | "L2" | "L3";
2
+ export type LoopStatus = "ready" | "active" | "paused" | "retired";
3
+ export type LoopRunCause = "schedule" | "manual" | "event";
4
+ export type LoopScheduleMode = "manual" | "interval" | "event";
5
+ export type LoopWorktreeIsolationMode = "none" | "per-run" | "per-item";
6
+ export type LoopWorktreeCleanupPolicy = "after-run" | "after-merge" | "manual";
7
+ export type LoopCapabilityAccess = "required" | "optional";
8
+ export type LoopConnectorKind = "mcp" | "connector";
9
+ export type LoopSubagentRoleKind = "maker" | "checker" | "scout" | "planner";
10
+ export type LoopRunOutcome = "report-only" | "fix-proposed" | "no-op" | "escalated" | "budget-blocked" | "collision-skipped" | "verifier-failed" | "killed";
11
+ export type LoopWorkItemStatus = "new" | "watch" | "reported" | "claimed" | "executing" | "verifying" | "accepted" | "escalated" | "closed";
12
+ export type LoopWorkItemRisk = "low" | "medium" | "high";
13
+ export type LoopWorkItemSource = "ci" | "pr" | "issue" | "state" | "manual" | "docs";
14
+ export interface LoopWatchedScope {
15
+ readonly repos: readonly string[];
16
+ readonly branches?: readonly string[];
17
+ readonly paths?: readonly string[];
18
+ readonly tickets?: readonly string[];
19
+ }
20
+ export interface LoopBudgetPolicy {
21
+ readonly maxRunsPerDay: number;
22
+ readonly maxTokensPerDay: number;
23
+ readonly maxSubagentsPerRun: number;
24
+ readonly maxAttemptsPerItem: number;
25
+ readonly maxAutoPrsPerDay?: number;
26
+ readonly slowDownAtRatio?: number;
27
+ }
28
+ export interface LoopSafetyPolicy {
29
+ readonly requireIndependentVerifier: boolean;
30
+ readonly requireHumanGateForHighRisk: boolean;
31
+ readonly allowedWriteScopes: readonly string[];
32
+ readonly deniedWriteScopes?: readonly string[];
33
+ readonly maxWriteScopeCount?: number;
34
+ }
35
+ export interface LoopSchedulePolicy {
36
+ readonly mode: LoopScheduleMode;
37
+ readonly cadence: string;
38
+ readonly shortestIntervalMinutes: number;
39
+ readonly runOn: readonly LoopRunCause[];
40
+ readonly jitterMinutes?: number;
41
+ }
42
+ export interface LoopWorktreeIsolationPolicy {
43
+ readonly mode: LoopWorktreeIsolationMode;
44
+ readonly branchPrefix?: string;
45
+ readonly baseRef?: string;
46
+ readonly cleanup: LoopWorktreeCleanupPolicy;
47
+ readonly requireCleanCheckout: boolean;
48
+ readonly maxConcurrentWorktrees?: number;
49
+ }
50
+ export interface LoopSkillBinding {
51
+ readonly id: string;
52
+ readonly purpose: string;
53
+ readonly access: LoopCapabilityAccess;
54
+ readonly triggerKeywords?: readonly string[];
55
+ }
56
+ export interface LoopConnectorBinding {
57
+ readonly id: string;
58
+ readonly kind: LoopConnectorKind;
59
+ readonly purpose: string;
60
+ readonly access: LoopCapabilityAccess;
61
+ readonly tools?: readonly string[];
62
+ }
63
+ export interface LoopSubagentRole {
64
+ readonly id: string;
65
+ readonly role: LoopSubagentRoleKind;
66
+ readonly skills: readonly string[];
67
+ readonly connectors: readonly string[];
68
+ readonly independentFrom?: readonly string[];
69
+ }
70
+ export interface LoopSubagentPolicy {
71
+ readonly maxParallel: number;
72
+ readonly requireMakerChecker: boolean;
73
+ readonly makerRole: string;
74
+ readonly checkerRole?: string;
75
+ readonly roles: readonly LoopSubagentRole[];
76
+ }
77
+ export interface LoopDurableStatePolicy {
78
+ readonly statePath: string;
79
+ readonly runLogPath: string;
80
+ readonly budgetLedgerPath: string;
81
+ readonly checkpointPath?: string;
82
+ readonly retentionDays: number;
83
+ readonly requireReplayableEvidence: boolean;
84
+ }
85
+ export interface LoopHumanGatePolicy {
86
+ readonly gates: readonly string[];
87
+ readonly requiredForRisks: readonly LoopWorkItemRisk[];
88
+ readonly approvalRefsRequired: boolean;
89
+ readonly escalationTargets?: readonly string[];
90
+ }
91
+ export interface LoopDefinition {
92
+ readonly id: string;
93
+ readonly pattern: string;
94
+ readonly objective: string;
95
+ readonly nonGoals: readonly string[];
96
+ readonly level: LoopLevel;
97
+ readonly watchedScope: LoopWatchedScope;
98
+ readonly budget: LoopBudgetPolicy;
99
+ readonly safety: LoopSafetyPolicy;
100
+ readonly statePath: string;
101
+ readonly runLogPath: string;
102
+ readonly schedule?: LoopSchedulePolicy;
103
+ readonly worktree?: LoopWorktreeIsolationPolicy;
104
+ readonly skills?: readonly LoopSkillBinding[];
105
+ readonly connectors?: readonly LoopConnectorBinding[];
106
+ readonly subagents?: LoopSubagentPolicy;
107
+ readonly durableState?: LoopDurableStatePolicy;
108
+ readonly humanGates?: LoopHumanGatePolicy;
109
+ }
110
+ export interface LoopBudgetUsage {
111
+ readonly runs: number;
112
+ readonly tokensEstimate: number;
113
+ readonly subagentSpawns: number;
114
+ readonly autoPrs: number;
115
+ }
116
+ export interface LoopWorkItem {
117
+ readonly id: string;
118
+ readonly source: LoopWorkItemSource;
119
+ readonly sourceRef: string;
120
+ readonly title: string;
121
+ readonly status: LoopWorkItemStatus;
122
+ readonly risk: LoopWorkItemRisk;
123
+ readonly actingOn: string;
124
+ readonly firstSeenAt: string;
125
+ readonly lastSeenAt: string;
126
+ readonly attemptCount: number;
127
+ readonly evidenceRefs: readonly string[];
128
+ readonly lastFailureFingerprint?: string;
129
+ }
130
+ export interface LoopLease {
131
+ readonly workItemId: string;
132
+ readonly actingOn: string;
133
+ readonly ownerRunId: string;
134
+ readonly leaseExpiresAt: string;
135
+ }
136
+ export interface LoopState {
137
+ readonly loopId: string;
138
+ readonly status: LoopStatus;
139
+ readonly lastRunAt?: string;
140
+ readonly killSwitch?: boolean;
141
+ readonly highPriority: readonly LoopWorkItem[];
142
+ readonly watchList: readonly LoopWorkItem[];
143
+ readonly humanInbox: readonly LoopWorkItem[];
144
+ readonly recentNoise: readonly string[];
145
+ readonly leases: readonly LoopLease[];
146
+ readonly budgetUsedToday: LoopBudgetUsage;
147
+ }
148
+ export interface LoopBudgetEstimate {
149
+ readonly runs: number;
150
+ readonly tokensEstimate: number;
151
+ readonly subagentSpawns: number;
152
+ readonly autoPrs?: number;
153
+ }
154
+ export interface LoopBudgetReservation {
155
+ readonly loopId: string;
156
+ readonly reservationId: string;
157
+ readonly estimate: LoopBudgetEstimate;
158
+ readonly reservedAt: string;
159
+ }
160
+ export interface LoopRunLogEntry {
161
+ readonly runId: string;
162
+ readonly loopId: string;
163
+ readonly pattern: string;
164
+ readonly level: LoopLevel;
165
+ readonly startedAt: string;
166
+ readonly durationMs: number;
167
+ readonly itemsFound: number;
168
+ readonly actionsTaken: number;
169
+ readonly escalations: number;
170
+ readonly tokensEstimate: number;
171
+ readonly budgetDelta: LoopBudgetUsage;
172
+ readonly outcome: LoopRunOutcome;
173
+ readonly stateRevision: string;
174
+ readonly evidenceRefs: readonly string[];
175
+ readonly inputSnapshotHash: string;
176
+ readonly promptHash: string;
177
+ readonly toolVersions: Readonly<Record<string, string>>;
178
+ }
179
+ export interface LoopStatePatch {
180
+ readonly highPriority?: readonly LoopWorkItem[];
181
+ readonly watchList?: readonly LoopWorkItem[];
182
+ readonly humanInbox?: readonly LoopWorkItem[];
183
+ readonly recentNoise?: readonly string[];
184
+ readonly leases?: readonly LoopLease[];
185
+ readonly budgetUsedToday?: LoopBudgetUsage;
186
+ readonly lastRunAt?: string;
187
+ readonly status?: LoopStatus;
188
+ }
189
+ export interface LoopValidationDiagnostic {
190
+ readonly code: string;
191
+ readonly message: string;
192
+ readonly path?: string;
193
+ }
194
+ //# sourceMappingURL=loop-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loop-types.d.ts","sourceRoot":"","sources":["../../src/core/loop-types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE3C,MAAM,MAAM,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;AAEnE,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE3D,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,CAAC;AAE/D,MAAM,MAAM,yBAAyB,GAAG,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;AAExE,MAAM,MAAM,yBAAyB,GAAG,WAAW,GAAG,aAAa,GAAG,QAAQ,CAAC;AAE/E,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG,UAAU,CAAC;AAE3D,MAAM,MAAM,iBAAiB,GAAG,KAAK,GAAG,WAAW,CAAC;AAEpD,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AAE7E,MAAM,MAAM,cAAc,GACvB,aAAa,GACb,cAAc,GACd,OAAO,GACP,WAAW,GACX,gBAAgB,GAChB,mBAAmB,GACnB,iBAAiB,GACjB,QAAQ,CAAC;AAEZ,MAAM,MAAM,kBAAkB,GAC3B,KAAK,GACL,OAAO,GACP,UAAU,GACV,SAAS,GACT,WAAW,GACX,WAAW,GACX,UAAU,GACV,WAAW,GACX,QAAQ,CAAC;AAEZ,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEzD,MAAM,MAAM,kBAAkB,GAAG,IAAI,GAAG,IAAI,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AAErF,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAED,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,0BAA0B,EAAE,OAAO,CAAC;IAC7C,QAAQ,CAAC,2BAA2B,EAAE,OAAO,CAAC;IAC9C,QAAQ,CAAC,kBAAkB,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/C,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC/C,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,uBAAuB,EAAE,MAAM,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;IACxC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,2BAA2B;IAC3C,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC;IACzC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,yBAAyB,CAAC;IAC5C,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACzC;AAED,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACtC,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7C;AAED,MAAM,WAAW,oBAAoB;IACpC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACtC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACnC;AAED,MAAM,WAAW,gBAAgB;IAChC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,oBAAoB,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7C;AAED,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,mBAAmB,EAAE,OAAO,CAAC;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,SAAS,gBAAgB,EAAE,CAAC;CAC5C;AAED,MAAM,WAAW,sBAAsB;IACtC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,yBAAyB,EAAE,OAAO,CAAC;CAC5C;AAED,MAAM,WAAW,mBAAmB;IACnC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,gBAAgB,EAAE,SAAS,gBAAgB,EAAE,CAAC;IACvD,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC/C;AAED,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,gBAAgB,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,2BAA2B,CAAC;IAChD,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC9C,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACtD,QAAQ,CAAC,SAAS,CAAC,EAAE,kBAAkB,CAAC;IACxC,QAAQ,CAAC,YAAY,CAAC,EAAE,sBAAsB,CAAC;IAC/C,QAAQ,CAAC,UAAU,CAAC,EAAE,mBAAmB,CAAC;CAC1C;AAED,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACzC;AAED,MAAM,WAAW,SAAS;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,SAAS;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,YAAY,EAAE,SAAS,YAAY,EAAE,CAAC;IAC/C,QAAQ,CAAC,SAAS,EAAE,SAAS,YAAY,EAAE,CAAC;IAC5C,QAAQ,CAAC,UAAU,EAAE,SAAS,YAAY,EAAE,CAAC;IAC7C,QAAQ,CAAC,WAAW,EAAE,SAAS,MAAM,EAAE,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,SAAS,SAAS,EAAE,CAAC;IACtC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;CAC1C;AAED,MAAM,WAAW,kBAAkB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,qBAAqB;IACrC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAC;IACtC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACxD;AAED,MAAM,WAAW,cAAc;IAC9B,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IAChD,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IAC7C,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IAC9C,QAAQ,CAAC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;IACvC,QAAQ,CAAC,eAAe,CAAC,EAAE,eAAe,CAAC;IAC3C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,UAAU,CAAC;CAC7B;AAED,MAAM,WAAW,wBAAwB;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;CACvB","sourcesContent":["export type LoopLevel = \"L1\" | \"L2\" | \"L3\";\n\nexport type LoopStatus = \"ready\" | \"active\" | \"paused\" | \"retired\";\n\nexport type LoopRunCause = \"schedule\" | \"manual\" | \"event\";\n\nexport type LoopScheduleMode = \"manual\" | \"interval\" | \"event\";\n\nexport type LoopWorktreeIsolationMode = \"none\" | \"per-run\" | \"per-item\";\n\nexport type LoopWorktreeCleanupPolicy = \"after-run\" | \"after-merge\" | \"manual\";\n\nexport type LoopCapabilityAccess = \"required\" | \"optional\";\n\nexport type LoopConnectorKind = \"mcp\" | \"connector\";\n\nexport type LoopSubagentRoleKind = \"maker\" | \"checker\" | \"scout\" | \"planner\";\n\nexport type LoopRunOutcome =\n\t| \"report-only\"\n\t| \"fix-proposed\"\n\t| \"no-op\"\n\t| \"escalated\"\n\t| \"budget-blocked\"\n\t| \"collision-skipped\"\n\t| \"verifier-failed\"\n\t| \"killed\";\n\nexport type LoopWorkItemStatus =\n\t| \"new\"\n\t| \"watch\"\n\t| \"reported\"\n\t| \"claimed\"\n\t| \"executing\"\n\t| \"verifying\"\n\t| \"accepted\"\n\t| \"escalated\"\n\t| \"closed\";\n\nexport type LoopWorkItemRisk = \"low\" | \"medium\" | \"high\";\n\nexport type LoopWorkItemSource = \"ci\" | \"pr\" | \"issue\" | \"state\" | \"manual\" | \"docs\";\n\nexport interface LoopWatchedScope {\n\treadonly repos: readonly string[];\n\treadonly branches?: readonly string[];\n\treadonly paths?: readonly string[];\n\treadonly tickets?: readonly string[];\n}\n\nexport interface LoopBudgetPolicy {\n\treadonly maxRunsPerDay: number;\n\treadonly maxTokensPerDay: number;\n\treadonly maxSubagentsPerRun: number;\n\treadonly maxAttemptsPerItem: number;\n\treadonly maxAutoPrsPerDay?: number;\n\treadonly slowDownAtRatio?: number;\n}\n\nexport interface LoopSafetyPolicy {\n\treadonly requireIndependentVerifier: boolean;\n\treadonly requireHumanGateForHighRisk: boolean;\n\treadonly allowedWriteScopes: readonly string[];\n\treadonly deniedWriteScopes?: readonly string[];\n\treadonly maxWriteScopeCount?: number;\n}\n\nexport interface LoopSchedulePolicy {\n\treadonly mode: LoopScheduleMode;\n\treadonly cadence: string;\n\treadonly shortestIntervalMinutes: number;\n\treadonly runOn: readonly LoopRunCause[];\n\treadonly jitterMinutes?: number;\n}\n\nexport interface LoopWorktreeIsolationPolicy {\n\treadonly mode: LoopWorktreeIsolationMode;\n\treadonly branchPrefix?: string;\n\treadonly baseRef?: string;\n\treadonly cleanup: LoopWorktreeCleanupPolicy;\n\treadonly requireCleanCheckout: boolean;\n\treadonly maxConcurrentWorktrees?: number;\n}\n\nexport interface LoopSkillBinding {\n\treadonly id: string;\n\treadonly purpose: string;\n\treadonly access: LoopCapabilityAccess;\n\treadonly triggerKeywords?: readonly string[];\n}\n\nexport interface LoopConnectorBinding {\n\treadonly id: string;\n\treadonly kind: LoopConnectorKind;\n\treadonly purpose: string;\n\treadonly access: LoopCapabilityAccess;\n\treadonly tools?: readonly string[];\n}\n\nexport interface LoopSubagentRole {\n\treadonly id: string;\n\treadonly role: LoopSubagentRoleKind;\n\treadonly skills: readonly string[];\n\treadonly connectors: readonly string[];\n\treadonly independentFrom?: readonly string[];\n}\n\nexport interface LoopSubagentPolicy {\n\treadonly maxParallel: number;\n\treadonly requireMakerChecker: boolean;\n\treadonly makerRole: string;\n\treadonly checkerRole?: string;\n\treadonly roles: readonly LoopSubagentRole[];\n}\n\nexport interface LoopDurableStatePolicy {\n\treadonly statePath: string;\n\treadonly runLogPath: string;\n\treadonly budgetLedgerPath: string;\n\treadonly checkpointPath?: string;\n\treadonly retentionDays: number;\n\treadonly requireReplayableEvidence: boolean;\n}\n\nexport interface LoopHumanGatePolicy {\n\treadonly gates: readonly string[];\n\treadonly requiredForRisks: readonly LoopWorkItemRisk[];\n\treadonly approvalRefsRequired: boolean;\n\treadonly escalationTargets?: readonly string[];\n}\n\nexport interface LoopDefinition {\n\treadonly id: string;\n\treadonly pattern: string;\n\treadonly objective: string;\n\treadonly nonGoals: readonly string[];\n\treadonly level: LoopLevel;\n\treadonly watchedScope: LoopWatchedScope;\n\treadonly budget: LoopBudgetPolicy;\n\treadonly safety: LoopSafetyPolicy;\n\treadonly statePath: string;\n\treadonly runLogPath: string;\n\treadonly schedule?: LoopSchedulePolicy;\n\treadonly worktree?: LoopWorktreeIsolationPolicy;\n\treadonly skills?: readonly LoopSkillBinding[];\n\treadonly connectors?: readonly LoopConnectorBinding[];\n\treadonly subagents?: LoopSubagentPolicy;\n\treadonly durableState?: LoopDurableStatePolicy;\n\treadonly humanGates?: LoopHumanGatePolicy;\n}\n\nexport interface LoopBudgetUsage {\n\treadonly runs: number;\n\treadonly tokensEstimate: number;\n\treadonly subagentSpawns: number;\n\treadonly autoPrs: number;\n}\n\nexport interface LoopWorkItem {\n\treadonly id: string;\n\treadonly source: LoopWorkItemSource;\n\treadonly sourceRef: string;\n\treadonly title: string;\n\treadonly status: LoopWorkItemStatus;\n\treadonly risk: LoopWorkItemRisk;\n\treadonly actingOn: string;\n\treadonly firstSeenAt: string;\n\treadonly lastSeenAt: string;\n\treadonly attemptCount: number;\n\treadonly evidenceRefs: readonly string[];\n\treadonly lastFailureFingerprint?: string;\n}\n\nexport interface LoopLease {\n\treadonly workItemId: string;\n\treadonly actingOn: string;\n\treadonly ownerRunId: string;\n\treadonly leaseExpiresAt: string;\n}\n\nexport interface LoopState {\n\treadonly loopId: string;\n\treadonly status: LoopStatus;\n\treadonly lastRunAt?: string;\n\treadonly killSwitch?: boolean;\n\treadonly highPriority: readonly LoopWorkItem[];\n\treadonly watchList: readonly LoopWorkItem[];\n\treadonly humanInbox: readonly LoopWorkItem[];\n\treadonly recentNoise: readonly string[];\n\treadonly leases: readonly LoopLease[];\n\treadonly budgetUsedToday: LoopBudgetUsage;\n}\n\nexport interface LoopBudgetEstimate {\n\treadonly runs: number;\n\treadonly tokensEstimate: number;\n\treadonly subagentSpawns: number;\n\treadonly autoPrs?: number;\n}\n\nexport interface LoopBudgetReservation {\n\treadonly loopId: string;\n\treadonly reservationId: string;\n\treadonly estimate: LoopBudgetEstimate;\n\treadonly reservedAt: string;\n}\n\nexport interface LoopRunLogEntry {\n\treadonly runId: string;\n\treadonly loopId: string;\n\treadonly pattern: string;\n\treadonly level: LoopLevel;\n\treadonly startedAt: string;\n\treadonly durationMs: number;\n\treadonly itemsFound: number;\n\treadonly actionsTaken: number;\n\treadonly escalations: number;\n\treadonly tokensEstimate: number;\n\treadonly budgetDelta: LoopBudgetUsage;\n\treadonly outcome: LoopRunOutcome;\n\treadonly stateRevision: string;\n\treadonly evidenceRefs: readonly string[];\n\treadonly inputSnapshotHash: string;\n\treadonly promptHash: string;\n\treadonly toolVersions: Readonly<Record<string, string>>;\n}\n\nexport interface LoopStatePatch {\n\treadonly highPriority?: readonly LoopWorkItem[];\n\treadonly watchList?: readonly LoopWorkItem[];\n\treadonly humanInbox?: readonly LoopWorkItem[];\n\treadonly recentNoise?: readonly string[];\n\treadonly leases?: readonly LoopLease[];\n\treadonly budgetUsedToday?: LoopBudgetUsage;\n\treadonly lastRunAt?: string;\n\treadonly status?: LoopStatus;\n}\n\nexport interface LoopValidationDiagnostic {\n\treadonly code: string;\n\treadonly message: string;\n\treadonly path?: string;\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=loop-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loop-types.js","sourceRoot":"","sources":["../../src/core/loop-types.ts"],"names":[],"mappings":"","sourcesContent":["export type LoopLevel = \"L1\" | \"L2\" | \"L3\";\n\nexport type LoopStatus = \"ready\" | \"active\" | \"paused\" | \"retired\";\n\nexport type LoopRunCause = \"schedule\" | \"manual\" | \"event\";\n\nexport type LoopScheduleMode = \"manual\" | \"interval\" | \"event\";\n\nexport type LoopWorktreeIsolationMode = \"none\" | \"per-run\" | \"per-item\";\n\nexport type LoopWorktreeCleanupPolicy = \"after-run\" | \"after-merge\" | \"manual\";\n\nexport type LoopCapabilityAccess = \"required\" | \"optional\";\n\nexport type LoopConnectorKind = \"mcp\" | \"connector\";\n\nexport type LoopSubagentRoleKind = \"maker\" | \"checker\" | \"scout\" | \"planner\";\n\nexport type LoopRunOutcome =\n\t| \"report-only\"\n\t| \"fix-proposed\"\n\t| \"no-op\"\n\t| \"escalated\"\n\t| \"budget-blocked\"\n\t| \"collision-skipped\"\n\t| \"verifier-failed\"\n\t| \"killed\";\n\nexport type LoopWorkItemStatus =\n\t| \"new\"\n\t| \"watch\"\n\t| \"reported\"\n\t| \"claimed\"\n\t| \"executing\"\n\t| \"verifying\"\n\t| \"accepted\"\n\t| \"escalated\"\n\t| \"closed\";\n\nexport type LoopWorkItemRisk = \"low\" | \"medium\" | \"high\";\n\nexport type LoopWorkItemSource = \"ci\" | \"pr\" | \"issue\" | \"state\" | \"manual\" | \"docs\";\n\nexport interface LoopWatchedScope {\n\treadonly repos: readonly string[];\n\treadonly branches?: readonly string[];\n\treadonly paths?: readonly string[];\n\treadonly tickets?: readonly string[];\n}\n\nexport interface LoopBudgetPolicy {\n\treadonly maxRunsPerDay: number;\n\treadonly maxTokensPerDay: number;\n\treadonly maxSubagentsPerRun: number;\n\treadonly maxAttemptsPerItem: number;\n\treadonly maxAutoPrsPerDay?: number;\n\treadonly slowDownAtRatio?: number;\n}\n\nexport interface LoopSafetyPolicy {\n\treadonly requireIndependentVerifier: boolean;\n\treadonly requireHumanGateForHighRisk: boolean;\n\treadonly allowedWriteScopes: readonly string[];\n\treadonly deniedWriteScopes?: readonly string[];\n\treadonly maxWriteScopeCount?: number;\n}\n\nexport interface LoopSchedulePolicy {\n\treadonly mode: LoopScheduleMode;\n\treadonly cadence: string;\n\treadonly shortestIntervalMinutes: number;\n\treadonly runOn: readonly LoopRunCause[];\n\treadonly jitterMinutes?: number;\n}\n\nexport interface LoopWorktreeIsolationPolicy {\n\treadonly mode: LoopWorktreeIsolationMode;\n\treadonly branchPrefix?: string;\n\treadonly baseRef?: string;\n\treadonly cleanup: LoopWorktreeCleanupPolicy;\n\treadonly requireCleanCheckout: boolean;\n\treadonly maxConcurrentWorktrees?: number;\n}\n\nexport interface LoopSkillBinding {\n\treadonly id: string;\n\treadonly purpose: string;\n\treadonly access: LoopCapabilityAccess;\n\treadonly triggerKeywords?: readonly string[];\n}\n\nexport interface LoopConnectorBinding {\n\treadonly id: string;\n\treadonly kind: LoopConnectorKind;\n\treadonly purpose: string;\n\treadonly access: LoopCapabilityAccess;\n\treadonly tools?: readonly string[];\n}\n\nexport interface LoopSubagentRole {\n\treadonly id: string;\n\treadonly role: LoopSubagentRoleKind;\n\treadonly skills: readonly string[];\n\treadonly connectors: readonly string[];\n\treadonly independentFrom?: readonly string[];\n}\n\nexport interface LoopSubagentPolicy {\n\treadonly maxParallel: number;\n\treadonly requireMakerChecker: boolean;\n\treadonly makerRole: string;\n\treadonly checkerRole?: string;\n\treadonly roles: readonly LoopSubagentRole[];\n}\n\nexport interface LoopDurableStatePolicy {\n\treadonly statePath: string;\n\treadonly runLogPath: string;\n\treadonly budgetLedgerPath: string;\n\treadonly checkpointPath?: string;\n\treadonly retentionDays: number;\n\treadonly requireReplayableEvidence: boolean;\n}\n\nexport interface LoopHumanGatePolicy {\n\treadonly gates: readonly string[];\n\treadonly requiredForRisks: readonly LoopWorkItemRisk[];\n\treadonly approvalRefsRequired: boolean;\n\treadonly escalationTargets?: readonly string[];\n}\n\nexport interface LoopDefinition {\n\treadonly id: string;\n\treadonly pattern: string;\n\treadonly objective: string;\n\treadonly nonGoals: readonly string[];\n\treadonly level: LoopLevel;\n\treadonly watchedScope: LoopWatchedScope;\n\treadonly budget: LoopBudgetPolicy;\n\treadonly safety: LoopSafetyPolicy;\n\treadonly statePath: string;\n\treadonly runLogPath: string;\n\treadonly schedule?: LoopSchedulePolicy;\n\treadonly worktree?: LoopWorktreeIsolationPolicy;\n\treadonly skills?: readonly LoopSkillBinding[];\n\treadonly connectors?: readonly LoopConnectorBinding[];\n\treadonly subagents?: LoopSubagentPolicy;\n\treadonly durableState?: LoopDurableStatePolicy;\n\treadonly humanGates?: LoopHumanGatePolicy;\n}\n\nexport interface LoopBudgetUsage {\n\treadonly runs: number;\n\treadonly tokensEstimate: number;\n\treadonly subagentSpawns: number;\n\treadonly autoPrs: number;\n}\n\nexport interface LoopWorkItem {\n\treadonly id: string;\n\treadonly source: LoopWorkItemSource;\n\treadonly sourceRef: string;\n\treadonly title: string;\n\treadonly status: LoopWorkItemStatus;\n\treadonly risk: LoopWorkItemRisk;\n\treadonly actingOn: string;\n\treadonly firstSeenAt: string;\n\treadonly lastSeenAt: string;\n\treadonly attemptCount: number;\n\treadonly evidenceRefs: readonly string[];\n\treadonly lastFailureFingerprint?: string;\n}\n\nexport interface LoopLease {\n\treadonly workItemId: string;\n\treadonly actingOn: string;\n\treadonly ownerRunId: string;\n\treadonly leaseExpiresAt: string;\n}\n\nexport interface LoopState {\n\treadonly loopId: string;\n\treadonly status: LoopStatus;\n\treadonly lastRunAt?: string;\n\treadonly killSwitch?: boolean;\n\treadonly highPriority: readonly LoopWorkItem[];\n\treadonly watchList: readonly LoopWorkItem[];\n\treadonly humanInbox: readonly LoopWorkItem[];\n\treadonly recentNoise: readonly string[];\n\treadonly leases: readonly LoopLease[];\n\treadonly budgetUsedToday: LoopBudgetUsage;\n}\n\nexport interface LoopBudgetEstimate {\n\treadonly runs: number;\n\treadonly tokensEstimate: number;\n\treadonly subagentSpawns: number;\n\treadonly autoPrs?: number;\n}\n\nexport interface LoopBudgetReservation {\n\treadonly loopId: string;\n\treadonly reservationId: string;\n\treadonly estimate: LoopBudgetEstimate;\n\treadonly reservedAt: string;\n}\n\nexport interface LoopRunLogEntry {\n\treadonly runId: string;\n\treadonly loopId: string;\n\treadonly pattern: string;\n\treadonly level: LoopLevel;\n\treadonly startedAt: string;\n\treadonly durationMs: number;\n\treadonly itemsFound: number;\n\treadonly actionsTaken: number;\n\treadonly escalations: number;\n\treadonly tokensEstimate: number;\n\treadonly budgetDelta: LoopBudgetUsage;\n\treadonly outcome: LoopRunOutcome;\n\treadonly stateRevision: string;\n\treadonly evidenceRefs: readonly string[];\n\treadonly inputSnapshotHash: string;\n\treadonly promptHash: string;\n\treadonly toolVersions: Readonly<Record<string, string>>;\n}\n\nexport interface LoopStatePatch {\n\treadonly highPriority?: readonly LoopWorkItem[];\n\treadonly watchList?: readonly LoopWorkItem[];\n\treadonly humanInbox?: readonly LoopWorkItem[];\n\treadonly recentNoise?: readonly string[];\n\treadonly leases?: readonly LoopLease[];\n\treadonly budgetUsedToday?: LoopBudgetUsage;\n\treadonly lastRunAt?: string;\n\treadonly status?: LoopStatus;\n}\n\nexport interface LoopValidationDiagnostic {\n\treadonly code: string;\n\treadonly message: string;\n\treadonly path?: string;\n}\n"]}
@@ -10,6 +10,7 @@
10
10
  * 2. ~/.omk/mcp.json (global, omk)
11
11
  * 3. <cwd>/.omk/mcp.json (project, highest priority)
12
12
  */
13
+ import { type McpAuthDecision, type McpCapabilityDecision, type McpSamplingDecision } from "./mcp-presets.ts";
13
14
  export type McpInventoryNetworkMode = "none" | "loopback" | "domain-allowlist" | "all-explicit";
14
15
  export interface McpInventoryNetworkDecision {
15
16
  allowed: boolean;
@@ -28,6 +29,9 @@ export interface McpServerEntry {
28
29
  argsCount: number;
29
30
  autoApproveCount: number;
30
31
  networkDecision: McpInventoryNetworkDecision;
32
+ capabilityDecision: McpCapabilityDecision;
33
+ samplingDecision: McpSamplingDecision;
34
+ authDecision: McpAuthDecision;
31
35
  startupTimeoutSec?: number;
32
36
  overriddenBy?: string;
33
37
  }
@@ -48,6 +52,9 @@ export interface McpBuiltinPresetEntry {
48
52
  startupTimeoutSec: number;
49
53
  autoApproveCount: number;
50
54
  networkDecision: McpInventoryNetworkDecision;
55
+ capabilityDecision: McpCapabilityDecision;
56
+ samplingDecision: McpSamplingDecision;
57
+ authDecision: McpAuthDecision;
51
58
  installHint: string;
52
59
  notes: string[];
53
60
  configured: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-inventory.d.ts","sourceRoot":"","sources":["../../src/core/mcp-inventory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAOH,MAAM,MAAM,uBAAuB,GAAG,MAAM,GAAG,UAAU,GAAG,kBAAkB,GAAG,cAAc,CAAC;AAEhG,MAAM,WAAW,2BAA2B;IAC3C,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,uBAAuB,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,2BAA2B,CAAC;IAC7C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,2BAA2B,CAAC;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC5B,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,OAAO,EAAE,qBAAqB,EAAE,CAAC;IACjC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAClE,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC5C;AAoID;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,GAAE,MAAsB,EAAE,IAAI,GAAE,MAAqB,GAAG,YAAY,CA8CvG","sourcesContent":["/**\n * Read-only MCP inventory reader.\n *\n * Aggregates MCP server configuration from up to three on-disk sources without\n * starting, stopping, or modifying any server. Secret values from `env` are\n * never exposed — only the key names are returned to callers.\n *\n * Source precedence (later wins on name collision):\n * 1. ~/.kimi/mcp.json (global, legacy/kimi)\n * 2. ~/.omk/mcp.json (global, omk)\n * 3. <cwd>/.omk/mcp.json (project, highest priority)\n */\n\nimport fs from \"node:fs\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport { listBuiltinMcpPresets, summarizeBuiltinMcpPreset } from \"./mcp-presets.ts\";\n\nexport type McpInventoryNetworkMode = \"none\" | \"loopback\" | \"domain-allowlist\" | \"all-explicit\";\n\nexport interface McpInventoryNetworkDecision {\n\tallowed: boolean;\n\tmode: McpInventoryNetworkMode;\n\trule: string;\n\treason: string;\n\tallowedDomains: string[];\n\tdeniedDomains: string[];\n\tallowUnixSockets: string[];\n}\n\nexport interface McpServerEntry {\n\tname: string;\n\tsource: string;\n\tcommandSummary: string;\n\tenvKeys: string[];\n\targsCount: number;\n\tautoApproveCount: number;\n\tnetworkDecision: McpInventoryNetworkDecision;\n\tstartupTimeoutSec?: number;\n\toverriddenBy?: string;\n}\n\nexport interface McpBuiltinPresetEntry {\n\tname: string;\n\tlabel: string;\n\tdescription: string;\n\thomepage: string;\n\trepository: string;\n\tlicense: string;\n\texactPackageSpec: string;\n\tgitTag: string;\n\tgitCommit: string;\n\tcommandSummary: string;\n\tenvKeys: string[];\n\trequiredEnvKeys: string[];\n\toptionalEnvKeys: string[];\n\tstartupTimeoutSec: number;\n\tautoApproveCount: number;\n\tnetworkDecision: McpInventoryNetworkDecision;\n\tinstallHint: string;\n\tnotes: string[];\n\tconfigured: boolean;\n\tconfiguredBy?: string;\n}\n\nexport interface McpInventory {\n\tentries: McpServerEntry[];\n\tpresets: McpBuiltinPresetEntry[];\n\tsources: { path: string; exists: boolean; serverCount: number }[];\n\terrors: { path: string; message: string }[];\n}\n\ninterface RawServer {\n\tcommand?: unknown;\n\targs?: unknown;\n\tenv?: unknown;\n\tautoApprove?: unknown;\n\tstartup_timeout_sec?: unknown;\n\tnetwork?: unknown;\n}\n\nfunction readJsonSafe(filePath: string): { value: unknown; error?: string } {\n\ttry {\n\t\tconst raw = fs.readFileSync(filePath, \"utf8\");\n\t\treturn { value: JSON.parse(raw) };\n\t} catch (err) {\n\t\tif ((err as NodeJS.ErrnoException)?.code === \"ENOENT\") {\n\t\t\treturn { value: null };\n\t\t}\n\t\treturn { value: null, error: err instanceof Error ? err.message : String(err) };\n\t}\n}\n\nfunction summarizeCommand(server: RawServer): string {\n\tif (typeof server.command !== \"string\" || !server.command) {\n\t\treturn \"<unknown>\";\n\t}\n\tconst base = path.basename(server.command);\n\tif (Array.isArray(server.args) && server.args.length > 0) {\n\t\tconst first = server.args.find((a) => typeof a === \"string\" && !a.startsWith(\"-\")) as string | undefined;\n\t\tif (first) {\n\t\t\treturn `${base} ${first}`.trim();\n\t\t}\n\t}\n\treturn base;\n}\n\nfunction isMcpInventoryNetworkMode(value: unknown): value is McpInventoryNetworkMode {\n\treturn value === \"none\" || value === \"loopback\" || value === \"domain-allowlist\" || value === \"all-explicit\";\n}\n\nfunction stringList(value: unknown): string[] {\n\tif (!Array.isArray(value)) return [];\n\treturn value\n\t\t.filter((entry): entry is string => typeof entry === \"string\")\n\t\t.map((entry) => entry.trim())\n\t\t.filter((entry) => entry.length > 0);\n}\n\nfunction mcpNetworkDecision(\n\tallowed: boolean,\n\tmode: McpInventoryNetworkMode,\n\trule: string,\n\treason: string,\n\tmetadata: Pick<McpInventoryNetworkDecision, \"allowedDomains\" | \"deniedDomains\" | \"allowUnixSockets\"> = {\n\t\tallowedDomains: [],\n\t\tdeniedDomains: [],\n\t\tallowUnixSockets: [],\n\t},\n): McpInventoryNetworkDecision {\n\treturn { allowed, mode, rule, reason, ...metadata };\n}\n\nfunction decideMcpInventoryNetwork(rawNetwork: unknown): McpInventoryNetworkDecision {\n\tif (!rawNetwork || typeof rawNetwork !== \"object\" || Array.isArray(rawNetwork)) {\n\t\treturn mcpNetworkDecision(\n\t\t\tfalse,\n\t\t\t\"none\",\n\t\t\t\"mcp.network.unspecified\",\n\t\t\t\"MCP server network access is denied until an explicit network policy is present.\",\n\t\t);\n\t}\n\n\tconst network = rawNetwork as Record<string, unknown>;\n\tconst mode = network.mode;\n\tconst allowedDomains = stringList(network.allowedDomains);\n\tconst deniedDomains = stringList(network.deniedDomains);\n\tconst allowUnixSockets = stringList(network.allowUnixSockets);\n\tconst metadata = { allowedDomains, deniedDomains, allowUnixSockets };\n\n\tif (!isMcpInventoryNetworkMode(mode)) {\n\t\treturn mcpNetworkDecision(false, \"none\", \"mcp.network.invalid_mode\", \"MCP network mode is invalid.\", metadata);\n\t}\n\tif (mode === \"none\") {\n\t\treturn mcpNetworkDecision(false, mode, \"mcp.network.none\", \"MCP server network access is disabled.\", metadata);\n\t}\n\tif (mode === \"domain-allowlist\" && allowedDomains.length === 0) {\n\t\treturn mcpNetworkDecision(\n\t\t\tfalse,\n\t\t\tmode,\n\t\t\t\"mcp.network.empty_allowlist\",\n\t\t\t\"MCP domain allowlist mode requires at least one allowed domain.\",\n\t\t\tmetadata,\n\t\t);\n\t}\n\treturn mcpNetworkDecision(\n\t\ttrue,\n\t\tmode,\n\t\t`mcp.network.${mode}`,\n\t\t\"MCP server network access is explicitly configured.\",\n\t\tmetadata,\n\t);\n}\n\nfunction toEntry(name: string, server: RawServer, source: string): McpServerEntry {\n\tconst envKeys =\n\t\tserver.env && typeof server.env === \"object\" && !Array.isArray(server.env)\n\t\t\t? Object.keys(server.env as Record<string, unknown>)\n\t\t\t: [];\n\tconst argsCount = Array.isArray(server.args) ? server.args.length : 0;\n\tconst autoApproveCount = Array.isArray(server.autoApprove) ? server.autoApprove.length : 0;\n\tconst startupTimeoutSec = typeof server.startup_timeout_sec === \"number\" ? server.startup_timeout_sec : undefined;\n\treturn {\n\t\tname,\n\t\tsource,\n\t\tcommandSummary: summarizeCommand(server),\n\t\tenvKeys,\n\t\targsCount,\n\t\tautoApproveCount,\n\t\tnetworkDecision: decideMcpInventoryNetwork(server.network),\n\t\tstartupTimeoutSec,\n\t};\n}\n\nfunction extractServers(raw: unknown): Record<string, RawServer> {\n\tif (!raw || typeof raw !== \"object\") return {};\n\tconst root = raw as Record<string, unknown>;\n\tconst candidate = root.mcpServers ?? root.servers ?? root.mcp_servers;\n\tif (!candidate || typeof candidate !== \"object\" || Array.isArray(candidate)) return {};\n\treturn candidate as Record<string, RawServer>;\n}\n\n/**\n * Build the MCP inventory by merging all configured sources.\n * The returned object is safe to render in the UI — env values are never included.\n */\nexport function loadMcpInventory(cwd: string = process.cwd(), home: string = os.homedir()): McpInventory {\n\tconst candidatePaths = [\n\t\tpath.join(home, \".kimi\", \"mcp.json\"),\n\t\tpath.join(home, \".omk\", \"mcp.json\"),\n\t\tpath.join(cwd, \".omk\", \"mcp.json\"),\n\t];\n\n\tconst sources: McpInventory[\"sources\"] = [];\n\tconst errors: McpInventory[\"errors\"] = [];\n\tconst merged = new Map<string, McpServerEntry>();\n\n\tfor (const filePath of candidatePaths) {\n\t\tconst exists = fs.existsSync(filePath);\n\t\tconst { value, error } = readJsonSafe(filePath);\n\t\tif (error) {\n\t\t\terrors.push({ path: filePath, message: error });\n\t\t}\n\t\tconst servers = extractServers(value);\n\t\tconst names = Object.keys(servers).sort();\n\t\tsources.push({ path: filePath, exists, serverCount: names.length });\n\n\t\tfor (const name of names) {\n\t\t\tconst server = servers[name];\n\t\t\tif (!server || typeof server !== \"object\") continue;\n\t\t\tconst entry = toEntry(name, server as RawServer, filePath);\n\t\t\tconst previous = merged.get(name);\n\t\t\tif (previous) {\n\t\t\t\tprevious.overriddenBy = filePath;\n\t\t\t}\n\t\t\tmerged.set(name, entry);\n\t\t}\n\t}\n\n\tconst entries = Array.from(merged.values()).sort((a, b) => a.name.localeCompare(b.name));\n\tconst presets = listBuiltinMcpPresets()\n\t\t.map((preset): McpBuiltinPresetEntry => {\n\t\t\tconst configuredEntry = merged.get(preset.name);\n\t\t\treturn {\n\t\t\t\t...summarizeBuiltinMcpPreset(preset),\n\t\t\t\tnetworkDecision: configuredEntry?.networkDecision ?? decideMcpInventoryNetwork(undefined),\n\t\t\t\tconfigured: configuredEntry !== undefined,\n\t\t\t\t...(configuredEntry ? { configuredBy: configuredEntry.source } : {}),\n\t\t\t};\n\t\t})\n\t\t.sort((a, b) => a.name.localeCompare(b.name));\n\treturn { entries, presets, sources, errors };\n}\n"]}
1
+ {"version":3,"file":"mcp-inventory.d.ts","sourceRoot":"","sources":["../../src/core/mcp-inventory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,EAKN,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EAExB,MAAM,kBAAkB,CAAC;AAE1B,MAAM,MAAM,uBAAuB,GAAG,MAAM,GAAG,UAAU,GAAG,kBAAkB,GAAG,cAAc,CAAC;AAEhG,MAAM,WAAW,2BAA2B;IAC3C,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,uBAAuB,CAAC;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,2BAA2B,CAAC;IAC7C,kBAAkB,EAAE,qBAAqB,CAAC;IAC1C,gBAAgB,EAAE,mBAAmB,CAAC;IACtC,YAAY,EAAE,eAAe,CAAC;IAC9B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACrC,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,2BAA2B,CAAC;IAC7C,kBAAkB,EAAE,qBAAqB,CAAC;IAC1C,gBAAgB,EAAE,mBAAmB,CAAC;IACtC,YAAY,EAAE,eAAe,CAAC;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC5B,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,OAAO,EAAE,qBAAqB,EAAE,CAAC;IACjC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,WAAW,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAClE,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC5C;AA6ID;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,GAAE,MAAsB,EAAE,IAAI,GAAE,MAAqB,GAAG,YAAY,CA8CvG","sourcesContent":["/**\n * Read-only MCP inventory reader.\n *\n * Aggregates MCP server configuration from up to three on-disk sources without\n * starting, stopping, or modifying any server. Secret values from `env` are\n * never exposed — only the key names are returned to callers.\n *\n * Source precedence (later wins on name collision):\n * 1. ~/.kimi/mcp.json (global, legacy/kimi)\n * 2. ~/.omk/mcp.json (global, omk)\n * 3. <cwd>/.omk/mcp.json (project, highest priority)\n */\n\nimport fs from \"node:fs\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport {\n\tdecideMcpAuth,\n\tdecideMcpCapabilities,\n\tdecideMcpSampling,\n\tlistBuiltinMcpPresets,\n\ttype McpAuthDecision,\n\ttype McpCapabilityDecision,\n\ttype McpSamplingDecision,\n\tsummarizeBuiltinMcpPreset,\n} from \"./mcp-presets.ts\";\n\nexport type McpInventoryNetworkMode = \"none\" | \"loopback\" | \"domain-allowlist\" | \"all-explicit\";\n\nexport interface McpInventoryNetworkDecision {\n\tallowed: boolean;\n\tmode: McpInventoryNetworkMode;\n\trule: string;\n\treason: string;\n\tallowedDomains: string[];\n\tdeniedDomains: string[];\n\tallowUnixSockets: string[];\n}\n\nexport interface McpServerEntry {\n\tname: string;\n\tsource: string;\n\tcommandSummary: string;\n\tenvKeys: string[];\n\targsCount: number;\n\tautoApproveCount: number;\n\tnetworkDecision: McpInventoryNetworkDecision;\n\tcapabilityDecision: McpCapabilityDecision;\n\tsamplingDecision: McpSamplingDecision;\n\tauthDecision: McpAuthDecision;\n\tstartupTimeoutSec?: number;\n\toverriddenBy?: string;\n}\n\nexport interface McpBuiltinPresetEntry {\n\tname: string;\n\tlabel: string;\n\tdescription: string;\n\thomepage: string;\n\trepository: string;\n\tlicense: string;\n\texactPackageSpec: string;\n\tgitTag: string;\n\tgitCommit: string;\n\tcommandSummary: string;\n\tenvKeys: string[];\n\trequiredEnvKeys: string[];\n\toptionalEnvKeys: string[];\n\tstartupTimeoutSec: number;\n\tautoApproveCount: number;\n\tnetworkDecision: McpInventoryNetworkDecision;\n\tcapabilityDecision: McpCapabilityDecision;\n\tsamplingDecision: McpSamplingDecision;\n\tauthDecision: McpAuthDecision;\n\tinstallHint: string;\n\tnotes: string[];\n\tconfigured: boolean;\n\tconfiguredBy?: string;\n}\n\nexport interface McpInventory {\n\tentries: McpServerEntry[];\n\tpresets: McpBuiltinPresetEntry[];\n\tsources: { path: string; exists: boolean; serverCount: number }[];\n\terrors: { path: string; message: string }[];\n}\n\ninterface RawServer {\n\tcommand?: unknown;\n\targs?: unknown;\n\tenv?: unknown;\n\tautoApprove?: unknown;\n\tstartup_timeout_sec?: unknown;\n\tnetwork?: unknown;\n\tcapabilities?: unknown;\n\tsampling?: unknown;\n\tsamplingPolicy?: unknown;\n\tauth?: unknown;\n\tauthPolicy?: unknown;\n}\n\nfunction readJsonSafe(filePath: string): { value: unknown; error?: string } {\n\ttry {\n\t\tconst raw = fs.readFileSync(filePath, \"utf8\");\n\t\treturn { value: JSON.parse(raw) };\n\t} catch (err) {\n\t\tif ((err as NodeJS.ErrnoException)?.code === \"ENOENT\") {\n\t\t\treturn { value: null };\n\t\t}\n\t\treturn { value: null, error: err instanceof Error ? err.message : String(err) };\n\t}\n}\n\nfunction summarizeCommand(server: RawServer): string {\n\tif (typeof server.command !== \"string\" || !server.command) {\n\t\treturn \"<unknown>\";\n\t}\n\tconst base = path.basename(server.command);\n\tif (Array.isArray(server.args) && server.args.length > 0) {\n\t\tconst first = server.args.find((a) => typeof a === \"string\" && !a.startsWith(\"-\")) as string | undefined;\n\t\tif (first) {\n\t\t\treturn `${base} ${first}`.trim();\n\t\t}\n\t}\n\treturn base;\n}\n\nfunction isMcpInventoryNetworkMode(value: unknown): value is McpInventoryNetworkMode {\n\treturn value === \"none\" || value === \"loopback\" || value === \"domain-allowlist\" || value === \"all-explicit\";\n}\n\nfunction stringList(value: unknown): string[] {\n\tif (!Array.isArray(value)) return [];\n\treturn value\n\t\t.filter((entry): entry is string => typeof entry === \"string\")\n\t\t.map((entry) => entry.trim())\n\t\t.filter((entry) => entry.length > 0);\n}\n\nfunction mcpNetworkDecision(\n\tallowed: boolean,\n\tmode: McpInventoryNetworkMode,\n\trule: string,\n\treason: string,\n\tmetadata: Pick<McpInventoryNetworkDecision, \"allowedDomains\" | \"deniedDomains\" | \"allowUnixSockets\"> = {\n\t\tallowedDomains: [],\n\t\tdeniedDomains: [],\n\t\tallowUnixSockets: [],\n\t},\n): McpInventoryNetworkDecision {\n\treturn { allowed, mode, rule, reason, ...metadata };\n}\n\nfunction decideMcpInventoryNetwork(rawNetwork: unknown): McpInventoryNetworkDecision {\n\tif (!rawNetwork || typeof rawNetwork !== \"object\" || Array.isArray(rawNetwork)) {\n\t\treturn mcpNetworkDecision(\n\t\t\tfalse,\n\t\t\t\"none\",\n\t\t\t\"mcp.network.unspecified\",\n\t\t\t\"MCP server network access is denied until an explicit network policy is present.\",\n\t\t);\n\t}\n\n\tconst network = rawNetwork as Record<string, unknown>;\n\tconst mode = network.mode;\n\tconst allowedDomains = stringList(network.allowedDomains);\n\tconst deniedDomains = stringList(network.deniedDomains);\n\tconst allowUnixSockets = stringList(network.allowUnixSockets);\n\tconst metadata = { allowedDomains, deniedDomains, allowUnixSockets };\n\n\tif (!isMcpInventoryNetworkMode(mode)) {\n\t\treturn mcpNetworkDecision(false, \"none\", \"mcp.network.invalid_mode\", \"MCP network mode is invalid.\", metadata);\n\t}\n\tif (mode === \"none\") {\n\t\treturn mcpNetworkDecision(false, mode, \"mcp.network.none\", \"MCP server network access is disabled.\", metadata);\n\t}\n\tif (mode === \"domain-allowlist\" && allowedDomains.length === 0) {\n\t\treturn mcpNetworkDecision(\n\t\t\tfalse,\n\t\t\tmode,\n\t\t\t\"mcp.network.empty_allowlist\",\n\t\t\t\"MCP domain allowlist mode requires at least one allowed domain.\",\n\t\t\tmetadata,\n\t\t);\n\t}\n\treturn mcpNetworkDecision(\n\t\ttrue,\n\t\tmode,\n\t\t`mcp.network.${mode}`,\n\t\t\"MCP server network access is explicitly configured.\",\n\t\tmetadata,\n\t);\n}\n\nfunction toEntry(name: string, server: RawServer, source: string): McpServerEntry {\n\tconst envKeys =\n\t\tserver.env && typeof server.env === \"object\" && !Array.isArray(server.env)\n\t\t\t? Object.keys(server.env as Record<string, unknown>)\n\t\t\t: [];\n\tconst argsCount = Array.isArray(server.args) ? server.args.length : 0;\n\tconst autoApproveCount = Array.isArray(server.autoApprove) ? server.autoApprove.length : 0;\n\tconst startupTimeoutSec = typeof server.startup_timeout_sec === \"number\" ? server.startup_timeout_sec : undefined;\n\tconst capabilityDecision = decideMcpCapabilities(server.capabilities);\n\treturn {\n\t\tname,\n\t\tsource,\n\t\tcommandSummary: summarizeCommand(server),\n\t\tenvKeys,\n\t\targsCount,\n\t\tautoApproveCount,\n\t\tnetworkDecision: decideMcpInventoryNetwork(server.network),\n\t\tcapabilityDecision,\n\t\tsamplingDecision: decideMcpSampling(capabilityDecision, server.samplingPolicy ?? server.sampling),\n\t\tauthDecision: decideMcpAuth(server.authPolicy ?? server.auth, envKeys),\n\t\tstartupTimeoutSec,\n\t};\n}\n\nfunction extractServers(raw: unknown): Record<string, RawServer> {\n\tif (!raw || typeof raw !== \"object\") return {};\n\tconst root = raw as Record<string, unknown>;\n\tconst candidate = root.mcpServers ?? root.servers ?? root.mcp_servers;\n\tif (!candidate || typeof candidate !== \"object\" || Array.isArray(candidate)) return {};\n\treturn candidate as Record<string, RawServer>;\n}\n\n/**\n * Build the MCP inventory by merging all configured sources.\n * The returned object is safe to render in the UI — env values are never included.\n */\nexport function loadMcpInventory(cwd: string = process.cwd(), home: string = os.homedir()): McpInventory {\n\tconst candidatePaths = [\n\t\tpath.join(home, \".kimi\", \"mcp.json\"),\n\t\tpath.join(home, \".omk\", \"mcp.json\"),\n\t\tpath.join(cwd, \".omk\", \"mcp.json\"),\n\t];\n\n\tconst sources: McpInventory[\"sources\"] = [];\n\tconst errors: McpInventory[\"errors\"] = [];\n\tconst merged = new Map<string, McpServerEntry>();\n\n\tfor (const filePath of candidatePaths) {\n\t\tconst exists = fs.existsSync(filePath);\n\t\tconst { value, error } = readJsonSafe(filePath);\n\t\tif (error) {\n\t\t\terrors.push({ path: filePath, message: error });\n\t\t}\n\t\tconst servers = extractServers(value);\n\t\tconst names = Object.keys(servers).sort();\n\t\tsources.push({ path: filePath, exists, serverCount: names.length });\n\n\t\tfor (const name of names) {\n\t\t\tconst server = servers[name];\n\t\t\tif (!server || typeof server !== \"object\") continue;\n\t\t\tconst entry = toEntry(name, server as RawServer, filePath);\n\t\t\tconst previous = merged.get(name);\n\t\t\tif (previous) {\n\t\t\t\tprevious.overriddenBy = filePath;\n\t\t\t}\n\t\t\tmerged.set(name, entry);\n\t\t}\n\t}\n\n\tconst entries = Array.from(merged.values()).sort((a, b) => a.name.localeCompare(b.name));\n\tconst presets = listBuiltinMcpPresets()\n\t\t.map((preset): McpBuiltinPresetEntry => {\n\t\t\tconst configuredEntry = merged.get(preset.name);\n\t\t\treturn {\n\t\t\t\t...summarizeBuiltinMcpPreset(preset),\n\t\t\t\tnetworkDecision: configuredEntry?.networkDecision ?? decideMcpInventoryNetwork(undefined),\n\t\t\t\tconfigured: configuredEntry !== undefined,\n\t\t\t\t...(configuredEntry ? { configuredBy: configuredEntry.source } : {}),\n\t\t\t};\n\t\t})\n\t\t.sort((a, b) => a.name.localeCompare(b.name));\n\treturn { entries, presets, sources, errors };\n}\n"]}
@@ -13,7 +13,7 @@
13
13
  import fs from "node:fs";
14
14
  import os from "node:os";
15
15
  import path from "node:path";
16
- import { listBuiltinMcpPresets, summarizeBuiltinMcpPreset } from "./mcp-presets.js";
16
+ import { decideMcpAuth, decideMcpCapabilities, decideMcpSampling, listBuiltinMcpPresets, summarizeBuiltinMcpPreset, } from "./mcp-presets.js";
17
17
  function readJsonSafe(filePath) {
18
18
  try {
19
19
  const raw = fs.readFileSync(filePath, "utf8");
@@ -85,6 +85,7 @@ function toEntry(name, server, source) {
85
85
  const argsCount = Array.isArray(server.args) ? server.args.length : 0;
86
86
  const autoApproveCount = Array.isArray(server.autoApprove) ? server.autoApprove.length : 0;
87
87
  const startupTimeoutSec = typeof server.startup_timeout_sec === "number" ? server.startup_timeout_sec : undefined;
88
+ const capabilityDecision = decideMcpCapabilities(server.capabilities);
88
89
  return {
89
90
  name,
90
91
  source,
@@ -93,6 +94,9 @@ function toEntry(name, server, source) {
93
94
  argsCount,
94
95
  autoApproveCount,
95
96
  networkDecision: decideMcpInventoryNetwork(server.network),
97
+ capabilityDecision,
98
+ samplingDecision: decideMcpSampling(capabilityDecision, server.samplingPolicy ?? server.sampling),
99
+ authDecision: decideMcpAuth(server.authPolicy ?? server.auth, envKeys),
96
100
  startupTimeoutSec,
97
101
  };
98
102
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-inventory.js","sourceRoot":"","sources":["../../src/core/mcp-inventory.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,qBAAqB,EAAE,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AAiEpF,SAAS,YAAY,CAAC,QAAgB,EAAsC;IAC3E,IAAI,CAAC;QACJ,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC9C,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;IACnC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACd,IAAK,GAA6B,EAAE,IAAI,KAAK,QAAQ,EAAE,CAAC;YACvD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QACxB,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;IACjF,CAAC;AAAA,CACD;AAED,SAAS,gBAAgB,CAAC,MAAiB,EAAU;IACpD,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAC3D,OAAO,WAAW,CAAC;IACpB,CAAC;IACD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAuB,CAAC;QACzG,IAAI,KAAK,EAAE,CAAC;YACX,OAAO,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC,IAAI,EAAE,CAAC;QAClC,CAAC;IACF,CAAC;IACD,OAAO,IAAI,CAAC;AAAA,CACZ;AAED,SAAS,yBAAyB,CAAC,KAAc,EAAoC;IACpF,OAAO,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,UAAU,IAAI,KAAK,KAAK,kBAAkB,IAAI,KAAK,KAAK,cAAc,CAAC;AAAA,CAC5G;AAED,SAAS,UAAU,CAAC,KAAc,EAAY;IAC7C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACrC,OAAO,KAAK;SACV,MAAM,CAAC,CAAC,KAAK,EAAmB,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC;SAC7D,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAC5B,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAAA,CACtC;AAED,SAAS,kBAAkB,CAC1B,OAAgB,EAChB,IAA6B,EAC7B,IAAY,EACZ,MAAc,EACd,QAAQ,GAA+F;IACtG,cAAc,EAAE,EAAE;IAClB,aAAa,EAAE,EAAE;IACjB,gBAAgB,EAAE,EAAE;CACpB,EAC6B;IAC9B,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,CAAC;AAAA,CACpD;AAED,SAAS,yBAAyB,CAAC,UAAmB,EAA+B;IACpF,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QAChF,OAAO,kBAAkB,CACxB,KAAK,EACL,MAAM,EACN,yBAAyB,EACzB,kFAAkF,CAClF,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,UAAqC,CAAC;IACtD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAC1B,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC1D,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACxD,MAAM,gBAAgB,GAAG,UAAU,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC9D,MAAM,QAAQ,GAAG,EAAE,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAE,CAAC;IAErE,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC;QACtC,OAAO,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,0BAA0B,EAAE,8BAA8B,EAAE,QAAQ,CAAC,CAAC;IAChH,CAAC;IACD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACrB,OAAO,kBAAkB,CAAC,KAAK,EAAE,IAAI,EAAE,kBAAkB,EAAE,wCAAwC,EAAE,QAAQ,CAAC,CAAC;IAChH,CAAC;IACD,IAAI,IAAI,KAAK,kBAAkB,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChE,OAAO,kBAAkB,CACxB,KAAK,EACL,IAAI,EACJ,6BAA6B,EAC7B,iEAAiE,EACjE,QAAQ,CACR,CAAC;IACH,CAAC;IACD,OAAO,kBAAkB,CACxB,IAAI,EACJ,IAAI,EACJ,eAAe,IAAI,EAAE,EACrB,qDAAqD,EACrD,QAAQ,CACR,CAAC;AAAA,CACF;AAED,SAAS,OAAO,CAAC,IAAY,EAAE,MAAiB,EAAE,MAAc,EAAkB;IACjF,MAAM,OAAO,GACZ,MAAM,CAAC,GAAG,IAAI,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC;QACzE,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAA8B,CAAC;QACpD,CAAC,CAAC,EAAE,CAAC;IACP,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACtE,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3F,MAAM,iBAAiB,GAAG,OAAO,MAAM,CAAC,mBAAmB,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC;IAClH,OAAO;QACN,IAAI;QACJ,MAAM;QACN,cAAc,EAAE,gBAAgB,CAAC,MAAM,CAAC;QACxC,OAAO;QACP,SAAS;QACT,gBAAgB;QAChB,eAAe,EAAE,yBAAyB,CAAC,MAAM,CAAC,OAAO,CAAC;QAC1D,iBAAiB;KACjB,CAAC;AAAA,CACF;AAED,SAAS,cAAc,CAAC,GAAY,EAA6B;IAChE,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IAC/C,MAAM,IAAI,GAAG,GAA8B,CAAC;IAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,WAAW,CAAC;IACtE,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;QAAE,OAAO,EAAE,CAAC;IACvF,OAAO,SAAsC,CAAC;AAAA,CAC9C;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,GAAG,GAAW,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,GAAW,EAAE,CAAC,OAAO,EAAE,EAAgB;IACxG,MAAM,cAAc,GAAG;QACtB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,UAAU,CAAC;QACpC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,UAAU,CAAC;KAClC,CAAC;IAEF,MAAM,OAAO,GAA4B,EAAE,CAAC;IAC5C,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAI,GAAG,EAA0B,CAAC;IAEjD,KAAK,MAAM,QAAQ,IAAI,cAAc,EAAE,CAAC;QACvC,MAAM,MAAM,GAAG,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QACvC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,KAAK,EAAE,CAAC;YACX,MAAM,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QACjD,CAAC;QACD,MAAM,OAAO,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;QAC1C,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAEpE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YAC1B,MAAM,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;gBAAE,SAAS;YACpD,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,MAAmB,EAAE,QAAQ,CAAC,CAAC;YAC3D,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,QAAQ,EAAE,CAAC;gBACd,QAAQ,CAAC,YAAY,GAAG,QAAQ,CAAC;YAClC,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACzB,CAAC;IACF,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACzF,MAAM,OAAO,GAAG,qBAAqB,EAAE;SACrC,GAAG,CAAC,CAAC,MAAM,EAAyB,EAAE,CAAC;QACvC,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAChD,OAAO;YACN,GAAG,yBAAyB,CAAC,MAAM,CAAC;YACpC,eAAe,EAAE,eAAe,EAAE,eAAe,IAAI,yBAAyB,CAAC,SAAS,CAAC;YACzF,UAAU,EAAE,eAAe,KAAK,SAAS;YACzC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,eAAe,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACpE,CAAC;IAAA,CACF,CAAC;SACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/C,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAAA,CAC7C","sourcesContent":["/**\n * Read-only MCP inventory reader.\n *\n * Aggregates MCP server configuration from up to three on-disk sources without\n * starting, stopping, or modifying any server. Secret values from `env` are\n * never exposed — only the key names are returned to callers.\n *\n * Source precedence (later wins on name collision):\n * 1. ~/.kimi/mcp.json (global, legacy/kimi)\n * 2. ~/.omk/mcp.json (global, omk)\n * 3. <cwd>/.omk/mcp.json (project, highest priority)\n */\n\nimport fs from \"node:fs\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport { listBuiltinMcpPresets, summarizeBuiltinMcpPreset } from \"./mcp-presets.ts\";\n\nexport type McpInventoryNetworkMode = \"none\" | \"loopback\" | \"domain-allowlist\" | \"all-explicit\";\n\nexport interface McpInventoryNetworkDecision {\n\tallowed: boolean;\n\tmode: McpInventoryNetworkMode;\n\trule: string;\n\treason: string;\n\tallowedDomains: string[];\n\tdeniedDomains: string[];\n\tallowUnixSockets: string[];\n}\n\nexport interface McpServerEntry {\n\tname: string;\n\tsource: string;\n\tcommandSummary: string;\n\tenvKeys: string[];\n\targsCount: number;\n\tautoApproveCount: number;\n\tnetworkDecision: McpInventoryNetworkDecision;\n\tstartupTimeoutSec?: number;\n\toverriddenBy?: string;\n}\n\nexport interface McpBuiltinPresetEntry {\n\tname: string;\n\tlabel: string;\n\tdescription: string;\n\thomepage: string;\n\trepository: string;\n\tlicense: string;\n\texactPackageSpec: string;\n\tgitTag: string;\n\tgitCommit: string;\n\tcommandSummary: string;\n\tenvKeys: string[];\n\trequiredEnvKeys: string[];\n\toptionalEnvKeys: string[];\n\tstartupTimeoutSec: number;\n\tautoApproveCount: number;\n\tnetworkDecision: McpInventoryNetworkDecision;\n\tinstallHint: string;\n\tnotes: string[];\n\tconfigured: boolean;\n\tconfiguredBy?: string;\n}\n\nexport interface McpInventory {\n\tentries: McpServerEntry[];\n\tpresets: McpBuiltinPresetEntry[];\n\tsources: { path: string; exists: boolean; serverCount: number }[];\n\terrors: { path: string; message: string }[];\n}\n\ninterface RawServer {\n\tcommand?: unknown;\n\targs?: unknown;\n\tenv?: unknown;\n\tautoApprove?: unknown;\n\tstartup_timeout_sec?: unknown;\n\tnetwork?: unknown;\n}\n\nfunction readJsonSafe(filePath: string): { value: unknown; error?: string } {\n\ttry {\n\t\tconst raw = fs.readFileSync(filePath, \"utf8\");\n\t\treturn { value: JSON.parse(raw) };\n\t} catch (err) {\n\t\tif ((err as NodeJS.ErrnoException)?.code === \"ENOENT\") {\n\t\t\treturn { value: null };\n\t\t}\n\t\treturn { value: null, error: err instanceof Error ? err.message : String(err) };\n\t}\n}\n\nfunction summarizeCommand(server: RawServer): string {\n\tif (typeof server.command !== \"string\" || !server.command) {\n\t\treturn \"<unknown>\";\n\t}\n\tconst base = path.basename(server.command);\n\tif (Array.isArray(server.args) && server.args.length > 0) {\n\t\tconst first = server.args.find((a) => typeof a === \"string\" && !a.startsWith(\"-\")) as string | undefined;\n\t\tif (first) {\n\t\t\treturn `${base} ${first}`.trim();\n\t\t}\n\t}\n\treturn base;\n}\n\nfunction isMcpInventoryNetworkMode(value: unknown): value is McpInventoryNetworkMode {\n\treturn value === \"none\" || value === \"loopback\" || value === \"domain-allowlist\" || value === \"all-explicit\";\n}\n\nfunction stringList(value: unknown): string[] {\n\tif (!Array.isArray(value)) return [];\n\treturn value\n\t\t.filter((entry): entry is string => typeof entry === \"string\")\n\t\t.map((entry) => entry.trim())\n\t\t.filter((entry) => entry.length > 0);\n}\n\nfunction mcpNetworkDecision(\n\tallowed: boolean,\n\tmode: McpInventoryNetworkMode,\n\trule: string,\n\treason: string,\n\tmetadata: Pick<McpInventoryNetworkDecision, \"allowedDomains\" | \"deniedDomains\" | \"allowUnixSockets\"> = {\n\t\tallowedDomains: [],\n\t\tdeniedDomains: [],\n\t\tallowUnixSockets: [],\n\t},\n): McpInventoryNetworkDecision {\n\treturn { allowed, mode, rule, reason, ...metadata };\n}\n\nfunction decideMcpInventoryNetwork(rawNetwork: unknown): McpInventoryNetworkDecision {\n\tif (!rawNetwork || typeof rawNetwork !== \"object\" || Array.isArray(rawNetwork)) {\n\t\treturn mcpNetworkDecision(\n\t\t\tfalse,\n\t\t\t\"none\",\n\t\t\t\"mcp.network.unspecified\",\n\t\t\t\"MCP server network access is denied until an explicit network policy is present.\",\n\t\t);\n\t}\n\n\tconst network = rawNetwork as Record<string, unknown>;\n\tconst mode = network.mode;\n\tconst allowedDomains = stringList(network.allowedDomains);\n\tconst deniedDomains = stringList(network.deniedDomains);\n\tconst allowUnixSockets = stringList(network.allowUnixSockets);\n\tconst metadata = { allowedDomains, deniedDomains, allowUnixSockets };\n\n\tif (!isMcpInventoryNetworkMode(mode)) {\n\t\treturn mcpNetworkDecision(false, \"none\", \"mcp.network.invalid_mode\", \"MCP network mode is invalid.\", metadata);\n\t}\n\tif (mode === \"none\") {\n\t\treturn mcpNetworkDecision(false, mode, \"mcp.network.none\", \"MCP server network access is disabled.\", metadata);\n\t}\n\tif (mode === \"domain-allowlist\" && allowedDomains.length === 0) {\n\t\treturn mcpNetworkDecision(\n\t\t\tfalse,\n\t\t\tmode,\n\t\t\t\"mcp.network.empty_allowlist\",\n\t\t\t\"MCP domain allowlist mode requires at least one allowed domain.\",\n\t\t\tmetadata,\n\t\t);\n\t}\n\treturn mcpNetworkDecision(\n\t\ttrue,\n\t\tmode,\n\t\t`mcp.network.${mode}`,\n\t\t\"MCP server network access is explicitly configured.\",\n\t\tmetadata,\n\t);\n}\n\nfunction toEntry(name: string, server: RawServer, source: string): McpServerEntry {\n\tconst envKeys =\n\t\tserver.env && typeof server.env === \"object\" && !Array.isArray(server.env)\n\t\t\t? Object.keys(server.env as Record<string, unknown>)\n\t\t\t: [];\n\tconst argsCount = Array.isArray(server.args) ? server.args.length : 0;\n\tconst autoApproveCount = Array.isArray(server.autoApprove) ? server.autoApprove.length : 0;\n\tconst startupTimeoutSec = typeof server.startup_timeout_sec === \"number\" ? server.startup_timeout_sec : undefined;\n\treturn {\n\t\tname,\n\t\tsource,\n\t\tcommandSummary: summarizeCommand(server),\n\t\tenvKeys,\n\t\targsCount,\n\t\tautoApproveCount,\n\t\tnetworkDecision: decideMcpInventoryNetwork(server.network),\n\t\tstartupTimeoutSec,\n\t};\n}\n\nfunction extractServers(raw: unknown): Record<string, RawServer> {\n\tif (!raw || typeof raw !== \"object\") return {};\n\tconst root = raw as Record<string, unknown>;\n\tconst candidate = root.mcpServers ?? root.servers ?? root.mcp_servers;\n\tif (!candidate || typeof candidate !== \"object\" || Array.isArray(candidate)) return {};\n\treturn candidate as Record<string, RawServer>;\n}\n\n/**\n * Build the MCP inventory by merging all configured sources.\n * The returned object is safe to render in the UI — env values are never included.\n */\nexport function loadMcpInventory(cwd: string = process.cwd(), home: string = os.homedir()): McpInventory {\n\tconst candidatePaths = [\n\t\tpath.join(home, \".kimi\", \"mcp.json\"),\n\t\tpath.join(home, \".omk\", \"mcp.json\"),\n\t\tpath.join(cwd, \".omk\", \"mcp.json\"),\n\t];\n\n\tconst sources: McpInventory[\"sources\"] = [];\n\tconst errors: McpInventory[\"errors\"] = [];\n\tconst merged = new Map<string, McpServerEntry>();\n\n\tfor (const filePath of candidatePaths) {\n\t\tconst exists = fs.existsSync(filePath);\n\t\tconst { value, error } = readJsonSafe(filePath);\n\t\tif (error) {\n\t\t\terrors.push({ path: filePath, message: error });\n\t\t}\n\t\tconst servers = extractServers(value);\n\t\tconst names = Object.keys(servers).sort();\n\t\tsources.push({ path: filePath, exists, serverCount: names.length });\n\n\t\tfor (const name of names) {\n\t\t\tconst server = servers[name];\n\t\t\tif (!server || typeof server !== \"object\") continue;\n\t\t\tconst entry = toEntry(name, server as RawServer, filePath);\n\t\t\tconst previous = merged.get(name);\n\t\t\tif (previous) {\n\t\t\t\tprevious.overriddenBy = filePath;\n\t\t\t}\n\t\t\tmerged.set(name, entry);\n\t\t}\n\t}\n\n\tconst entries = Array.from(merged.values()).sort((a, b) => a.name.localeCompare(b.name));\n\tconst presets = listBuiltinMcpPresets()\n\t\t.map((preset): McpBuiltinPresetEntry => {\n\t\t\tconst configuredEntry = merged.get(preset.name);\n\t\t\treturn {\n\t\t\t\t...summarizeBuiltinMcpPreset(preset),\n\t\t\t\tnetworkDecision: configuredEntry?.networkDecision ?? decideMcpInventoryNetwork(undefined),\n\t\t\t\tconfigured: configuredEntry !== undefined,\n\t\t\t\t...(configuredEntry ? { configuredBy: configuredEntry.source } : {}),\n\t\t\t};\n\t\t})\n\t\t.sort((a, b) => a.name.localeCompare(b.name));\n\treturn { entries, presets, sources, errors };\n}\n"]}
1
+ {"version":3,"file":"mcp-inventory.js","sourceRoot":"","sources":["../../src/core/mcp-inventory.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Read-only MCP inventory reader.\n *\n * Aggregates MCP server configuration from up to three on-disk sources without\n * starting, stopping, or modifying any server. Secret values from `env` are\n * never exposed — only the key names are returned to callers.\n *\n * Source precedence (later wins on name collision):\n * 1. ~/.kimi/mcp.json (global, legacy/kimi)\n * 2. ~/.omk/mcp.json (global, omk)\n * 3. <cwd>/.omk/mcp.json (project, highest priority)\n */\n\nimport fs from \"node:fs\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport {\n\tdecideMcpAuth,\n\tdecideMcpCapabilities,\n\tdecideMcpSampling,\n\tlistBuiltinMcpPresets,\n\ttype McpAuthDecision,\n\ttype McpCapabilityDecision,\n\ttype McpSamplingDecision,\n\tsummarizeBuiltinMcpPreset,\n} from \"./mcp-presets.ts\";\n\nexport type McpInventoryNetworkMode = \"none\" | \"loopback\" | \"domain-allowlist\" | \"all-explicit\";\n\nexport interface McpInventoryNetworkDecision {\n\tallowed: boolean;\n\tmode: McpInventoryNetworkMode;\n\trule: string;\n\treason: string;\n\tallowedDomains: string[];\n\tdeniedDomains: string[];\n\tallowUnixSockets: string[];\n}\n\nexport interface McpServerEntry {\n\tname: string;\n\tsource: string;\n\tcommandSummary: string;\n\tenvKeys: string[];\n\targsCount: number;\n\tautoApproveCount: number;\n\tnetworkDecision: McpInventoryNetworkDecision;\n\tcapabilityDecision: McpCapabilityDecision;\n\tsamplingDecision: McpSamplingDecision;\n\tauthDecision: McpAuthDecision;\n\tstartupTimeoutSec?: number;\n\toverriddenBy?: string;\n}\n\nexport interface McpBuiltinPresetEntry {\n\tname: string;\n\tlabel: string;\n\tdescription: string;\n\thomepage: string;\n\trepository: string;\n\tlicense: string;\n\texactPackageSpec: string;\n\tgitTag: string;\n\tgitCommit: string;\n\tcommandSummary: string;\n\tenvKeys: string[];\n\trequiredEnvKeys: string[];\n\toptionalEnvKeys: string[];\n\tstartupTimeoutSec: number;\n\tautoApproveCount: number;\n\tnetworkDecision: McpInventoryNetworkDecision;\n\tcapabilityDecision: McpCapabilityDecision;\n\tsamplingDecision: McpSamplingDecision;\n\tauthDecision: McpAuthDecision;\n\tinstallHint: string;\n\tnotes: string[];\n\tconfigured: boolean;\n\tconfiguredBy?: string;\n}\n\nexport interface McpInventory {\n\tentries: McpServerEntry[];\n\tpresets: McpBuiltinPresetEntry[];\n\tsources: { path: string; exists: boolean; serverCount: number }[];\n\terrors: { path: string; message: string }[];\n}\n\ninterface RawServer {\n\tcommand?: unknown;\n\targs?: unknown;\n\tenv?: unknown;\n\tautoApprove?: unknown;\n\tstartup_timeout_sec?: unknown;\n\tnetwork?: unknown;\n\tcapabilities?: unknown;\n\tsampling?: unknown;\n\tsamplingPolicy?: unknown;\n\tauth?: unknown;\n\tauthPolicy?: unknown;\n}\n\nfunction readJsonSafe(filePath: string): { value: unknown; error?: string } {\n\ttry {\n\t\tconst raw = fs.readFileSync(filePath, \"utf8\");\n\t\treturn { value: JSON.parse(raw) };\n\t} catch (err) {\n\t\tif ((err as NodeJS.ErrnoException)?.code === \"ENOENT\") {\n\t\t\treturn { value: null };\n\t\t}\n\t\treturn { value: null, error: err instanceof Error ? err.message : String(err) };\n\t}\n}\n\nfunction summarizeCommand(server: RawServer): string {\n\tif (typeof server.command !== \"string\" || !server.command) {\n\t\treturn \"<unknown>\";\n\t}\n\tconst base = path.basename(server.command);\n\tif (Array.isArray(server.args) && server.args.length > 0) {\n\t\tconst first = server.args.find((a) => typeof a === \"string\" && !a.startsWith(\"-\")) as string | undefined;\n\t\tif (first) {\n\t\t\treturn `${base} ${first}`.trim();\n\t\t}\n\t}\n\treturn base;\n}\n\nfunction isMcpInventoryNetworkMode(value: unknown): value is McpInventoryNetworkMode {\n\treturn value === \"none\" || value === \"loopback\" || value === \"domain-allowlist\" || value === \"all-explicit\";\n}\n\nfunction stringList(value: unknown): string[] {\n\tif (!Array.isArray(value)) return [];\n\treturn value\n\t\t.filter((entry): entry is string => typeof entry === \"string\")\n\t\t.map((entry) => entry.trim())\n\t\t.filter((entry) => entry.length > 0);\n}\n\nfunction mcpNetworkDecision(\n\tallowed: boolean,\n\tmode: McpInventoryNetworkMode,\n\trule: string,\n\treason: string,\n\tmetadata: Pick<McpInventoryNetworkDecision, \"allowedDomains\" | \"deniedDomains\" | \"allowUnixSockets\"> = {\n\t\tallowedDomains: [],\n\t\tdeniedDomains: [],\n\t\tallowUnixSockets: [],\n\t},\n): McpInventoryNetworkDecision {\n\treturn { allowed, mode, rule, reason, ...metadata };\n}\n\nfunction decideMcpInventoryNetwork(rawNetwork: unknown): McpInventoryNetworkDecision {\n\tif (!rawNetwork || typeof rawNetwork !== \"object\" || Array.isArray(rawNetwork)) {\n\t\treturn mcpNetworkDecision(\n\t\t\tfalse,\n\t\t\t\"none\",\n\t\t\t\"mcp.network.unspecified\",\n\t\t\t\"MCP server network access is denied until an explicit network policy is present.\",\n\t\t);\n\t}\n\n\tconst network = rawNetwork as Record<string, unknown>;\n\tconst mode = network.mode;\n\tconst allowedDomains = stringList(network.allowedDomains);\n\tconst deniedDomains = stringList(network.deniedDomains);\n\tconst allowUnixSockets = stringList(network.allowUnixSockets);\n\tconst metadata = { allowedDomains, deniedDomains, allowUnixSockets };\n\n\tif (!isMcpInventoryNetworkMode(mode)) {\n\t\treturn mcpNetworkDecision(false, \"none\", \"mcp.network.invalid_mode\", \"MCP network mode is invalid.\", metadata);\n\t}\n\tif (mode === \"none\") {\n\t\treturn mcpNetworkDecision(false, mode, \"mcp.network.none\", \"MCP server network access is disabled.\", metadata);\n\t}\n\tif (mode === \"domain-allowlist\" && allowedDomains.length === 0) {\n\t\treturn mcpNetworkDecision(\n\t\t\tfalse,\n\t\t\tmode,\n\t\t\t\"mcp.network.empty_allowlist\",\n\t\t\t\"MCP domain allowlist mode requires at least one allowed domain.\",\n\t\t\tmetadata,\n\t\t);\n\t}\n\treturn mcpNetworkDecision(\n\t\ttrue,\n\t\tmode,\n\t\t`mcp.network.${mode}`,\n\t\t\"MCP server network access is explicitly configured.\",\n\t\tmetadata,\n\t);\n}\n\nfunction toEntry(name: string, server: RawServer, source: string): McpServerEntry {\n\tconst envKeys =\n\t\tserver.env && typeof server.env === \"object\" && !Array.isArray(server.env)\n\t\t\t? Object.keys(server.env as Record<string, unknown>)\n\t\t\t: [];\n\tconst argsCount = Array.isArray(server.args) ? server.args.length : 0;\n\tconst autoApproveCount = Array.isArray(server.autoApprove) ? server.autoApprove.length : 0;\n\tconst startupTimeoutSec = typeof server.startup_timeout_sec === \"number\" ? server.startup_timeout_sec : undefined;\n\tconst capabilityDecision = decideMcpCapabilities(server.capabilities);\n\treturn {\n\t\tname,\n\t\tsource,\n\t\tcommandSummary: summarizeCommand(server),\n\t\tenvKeys,\n\t\targsCount,\n\t\tautoApproveCount,\n\t\tnetworkDecision: decideMcpInventoryNetwork(server.network),\n\t\tcapabilityDecision,\n\t\tsamplingDecision: decideMcpSampling(capabilityDecision, server.samplingPolicy ?? server.sampling),\n\t\tauthDecision: decideMcpAuth(server.authPolicy ?? server.auth, envKeys),\n\t\tstartupTimeoutSec,\n\t};\n}\n\nfunction extractServers(raw: unknown): Record<string, RawServer> {\n\tif (!raw || typeof raw !== \"object\") return {};\n\tconst root = raw as Record<string, unknown>;\n\tconst candidate = root.mcpServers ?? root.servers ?? root.mcp_servers;\n\tif (!candidate || typeof candidate !== \"object\" || Array.isArray(candidate)) return {};\n\treturn candidate as Record<string, RawServer>;\n}\n\n/**\n * Build the MCP inventory by merging all configured sources.\n * The returned object is safe to render in the UI — env values are never included.\n */\nexport function loadMcpInventory(cwd: string = process.cwd(), home: string = os.homedir()): McpInventory {\n\tconst candidatePaths = [\n\t\tpath.join(home, \".kimi\", \"mcp.json\"),\n\t\tpath.join(home, \".omk\", \"mcp.json\"),\n\t\tpath.join(cwd, \".omk\", \"mcp.json\"),\n\t];\n\n\tconst sources: McpInventory[\"sources\"] = [];\n\tconst errors: McpInventory[\"errors\"] = [];\n\tconst merged = new Map<string, McpServerEntry>();\n\n\tfor (const filePath of candidatePaths) {\n\t\tconst exists = fs.existsSync(filePath);\n\t\tconst { value, error } = readJsonSafe(filePath);\n\t\tif (error) {\n\t\t\terrors.push({ path: filePath, message: error });\n\t\t}\n\t\tconst servers = extractServers(value);\n\t\tconst names = Object.keys(servers).sort();\n\t\tsources.push({ path: filePath, exists, serverCount: names.length });\n\n\t\tfor (const name of names) {\n\t\t\tconst server = servers[name];\n\t\t\tif (!server || typeof server !== \"object\") continue;\n\t\t\tconst entry = toEntry(name, server as RawServer, filePath);\n\t\t\tconst previous = merged.get(name);\n\t\t\tif (previous) {\n\t\t\t\tprevious.overriddenBy = filePath;\n\t\t\t}\n\t\t\tmerged.set(name, entry);\n\t\t}\n\t}\n\n\tconst entries = Array.from(merged.values()).sort((a, b) => a.name.localeCompare(b.name));\n\tconst presets = listBuiltinMcpPresets()\n\t\t.map((preset): McpBuiltinPresetEntry => {\n\t\t\tconst configuredEntry = merged.get(preset.name);\n\t\t\treturn {\n\t\t\t\t...summarizeBuiltinMcpPreset(preset),\n\t\t\t\tnetworkDecision: configuredEntry?.networkDecision ?? decideMcpInventoryNetwork(undefined),\n\t\t\t\tconfigured: configuredEntry !== undefined,\n\t\t\t\t...(configuredEntry ? { configuredBy: configuredEntry.source } : {}),\n\t\t\t};\n\t\t})\n\t\t.sort((a, b) => a.name.localeCompare(b.name));\n\treturn { entries, presets, sources, errors };\n}\n"]}