open-multi-agent-kit 0.80.7 → 0.80.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1470) hide show
  1. package/CHANGELOG.md +4 -30
  2. package/README.md +80 -38
  3. package/dist/agents/jailbreak/index.d.ts +7 -0
  4. package/dist/agents/jailbreak/index.d.ts.map +1 -0
  5. package/dist/agents/jailbreak/index.js +7 -0
  6. package/dist/agents/jailbreak/index.js.map +1 -0
  7. package/dist/agents/jailbreak/subagent-f.d.ts +44 -0
  8. package/dist/agents/jailbreak/subagent-f.d.ts.map +1 -0
  9. package/dist/agents/jailbreak/subagent-f.js +60 -0
  10. package/dist/agents/jailbreak/subagent-f.js.map +1 -0
  11. package/dist/bun/register-bedrock.d.ts.map +1 -1
  12. package/dist/bun/register-bedrock.js +2 -2
  13. package/dist/bun/register-bedrock.js.map +1 -1
  14. package/dist/ci/verify-reporter.d.ts +22 -0
  15. package/dist/ci/verify-reporter.d.ts.map +1 -0
  16. package/dist/ci/verify-reporter.js +50 -0
  17. package/dist/ci/verify-reporter.js.map +1 -0
  18. package/dist/cli/args.d.ts +4 -1
  19. package/dist/cli/args.d.ts.map +1 -1
  20. package/dist/cli/args.js +7 -0
  21. package/dist/cli/args.js.map +1 -1
  22. package/dist/cli/config-selector.d.ts.map +1 -1
  23. package/dist/cli/config-selector.js +1 -1
  24. package/dist/cli/config-selector.js.map +1 -1
  25. package/dist/cli/file-processor.d.ts +1 -1
  26. package/dist/cli/file-processor.d.ts.map +1 -1
  27. package/dist/cli/file-processor.js.map +1 -1
  28. package/dist/cli/initial-message.d.ts +1 -1
  29. package/dist/cli/initial-message.d.ts.map +1 -1
  30. package/dist/cli/initial-message.js.map +1 -1
  31. package/dist/cli/jailbreak-args.d.ts +26 -0
  32. package/dist/cli/jailbreak-args.d.ts.map +1 -0
  33. package/dist/cli/jailbreak-args.js +86 -0
  34. package/dist/cli/jailbreak-args.js.map +1 -0
  35. package/dist/cli/list-models.d.ts.map +1 -1
  36. package/dist/cli/list-models.js +1 -1
  37. package/dist/cli/list-models.js.map +1 -1
  38. package/dist/cli/session-picker.d.ts.map +1 -1
  39. package/dist/cli/session-picker.js +1 -1
  40. package/dist/cli/session-picker.js.map +1 -1
  41. package/dist/commands/doctor-provider.d.ts +19 -0
  42. package/dist/commands/doctor-provider.d.ts.map +1 -0
  43. package/dist/commands/doctor-provider.js +123 -0
  44. package/dist/commands/doctor-provider.js.map +1 -0
  45. package/dist/commands/jailbreak.d.ts +49 -0
  46. package/dist/commands/jailbreak.d.ts.map +1 -0
  47. package/dist/commands/jailbreak.js +201 -0
  48. package/dist/commands/jailbreak.js.map +1 -0
  49. package/dist/config.d.ts +9 -5
  50. package/dist/config.d.ts.map +1 -1
  51. package/dist/config.js +33 -52
  52. package/dist/config.js.map +1 -1
  53. package/dist/core/agent-session-services.d.ts +2 -2
  54. package/dist/core/agent-session-services.d.ts.map +1 -1
  55. package/dist/core/agent-session-services.js.map +1 -1
  56. package/dist/core/agent-session.d.ts +16 -27
  57. package/dist/core/agent-session.d.ts.map +1 -1
  58. package/dist/core/agent-session.js +185 -89
  59. package/dist/core/agent-session.js.map +1 -1
  60. package/dist/core/auth-storage.d.ts +3 -6
  61. package/dist/core/auth-storage.d.ts.map +1 -1
  62. package/dist/core/auth-storage.js +7 -7
  63. package/dist/core/auth-storage.js.map +1 -1
  64. package/dist/core/bash-executor.d.ts +1 -0
  65. package/dist/core/bash-executor.d.ts.map +1 -1
  66. package/dist/core/bash-executor.js +1 -0
  67. package/dist/core/bash-executor.js.map +1 -1
  68. package/dist/core/browser-use.d.ts +45 -0
  69. package/dist/core/browser-use.d.ts.map +1 -0
  70. package/dist/core/browser-use.js +70 -0
  71. package/dist/core/browser-use.js.map +1 -0
  72. package/dist/core/command-safety-parser.d.ts +77 -0
  73. package/dist/core/command-safety-parser.d.ts.map +1 -0
  74. package/dist/core/command-safety-parser.js +763 -0
  75. package/dist/core/command-safety-parser.js.map +1 -0
  76. package/dist/core/command-safety.d.ts.map +1 -1
  77. package/dist/core/command-safety.js +106 -3
  78. package/dist/core/command-safety.js.map +1 -1
  79. package/dist/core/compaction/branch-summarization.d.ts +2 -2
  80. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  81. package/dist/core/compaction/branch-summarization.js +5 -21
  82. package/dist/core/compaction/branch-summarization.js.map +1 -1
  83. package/dist/core/compaction/compaction.d.ts +3 -101
  84. package/dist/core/compaction/compaction.d.ts.map +1 -1
  85. package/dist/core/compaction/compaction.js +21 -656
  86. package/dist/core/compaction/compaction.js.map +1 -1
  87. package/dist/core/compaction/utils.d.ts +2 -2
  88. package/dist/core/compaction/utils.d.ts.map +1 -1
  89. package/dist/core/compaction/utils.js.map +1 -1
  90. package/dist/core/compactor.d.ts +42 -0
  91. package/dist/core/compactor.d.ts.map +1 -0
  92. package/dist/core/compactor.js +131 -0
  93. package/dist/core/compactor.js.map +1 -0
  94. package/dist/core/context-budget-compressors.d.ts +50 -0
  95. package/dist/core/context-budget-compressors.d.ts.map +1 -0
  96. package/dist/core/context-budget-compressors.js +166 -0
  97. package/dist/core/context-budget-compressors.js.map +1 -0
  98. package/dist/core/context-budget-governor-v2.d.ts +7 -0
  99. package/dist/core/context-budget-governor-v2.d.ts.map +1 -0
  100. package/dist/core/context-budget-governor-v2.js +7 -0
  101. package/dist/core/context-budget-governor-v2.js.map +1 -0
  102. package/dist/core/context-budget-governor.d.ts +67 -0
  103. package/dist/core/context-budget-governor.d.ts.map +1 -0
  104. package/dist/core/context-budget-governor.js +224 -0
  105. package/dist/core/context-budget-governor.js.map +1 -0
  106. package/dist/core/context-budget-headroom-candidates.d.ts +3 -0
  107. package/dist/core/context-budget-headroom-candidates.d.ts.map +1 -0
  108. package/dist/core/context-budget-headroom-candidates.js +85 -0
  109. package/dist/core/context-budget-headroom-candidates.js.map +1 -0
  110. package/dist/core/context-budget-headroom-types.d.ts +67 -0
  111. package/dist/core/context-budget-headroom-types.d.ts.map +1 -0
  112. package/dist/core/context-budget-headroom-types.js +46 -0
  113. package/dist/core/context-budget-headroom-types.js.map +1 -0
  114. package/dist/core/context-budget-headroom.d.ts +5 -0
  115. package/dist/core/context-budget-headroom.d.ts.map +1 -0
  116. package/dist/core/context-budget-headroom.js +123 -0
  117. package/dist/core/context-budget-headroom.js.map +1 -0
  118. package/dist/core/context-budget-relevance.d.ts +46 -0
  119. package/dist/core/context-budget-relevance.d.ts.map +1 -0
  120. package/dist/core/context-budget-relevance.js +329 -0
  121. package/dist/core/context-budget-relevance.js.map +1 -0
  122. package/dist/core/context-budget-system-prompt-items.d.ts +19 -0
  123. package/dist/core/context-budget-system-prompt-items.d.ts.map +1 -0
  124. package/dist/core/context-budget-system-prompt-items.js +143 -0
  125. package/dist/core/context-budget-system-prompt-items.js.map +1 -0
  126. package/dist/core/context-budget-system-prompt.d.ts +31 -0
  127. package/dist/core/context-budget-system-prompt.d.ts.map +1 -0
  128. package/dist/core/context-budget-system-prompt.js +87 -0
  129. package/dist/core/context-budget-system-prompt.js.map +1 -0
  130. package/dist/core/context-budget-token-counter.d.ts +34 -0
  131. package/dist/core/context-budget-token-counter.d.ts.map +1 -0
  132. package/dist/core/context-budget-token-counter.js +315 -0
  133. package/dist/core/context-budget-token-counter.js.map +1 -0
  134. package/dist/core/context-budget-v2-coverage.d.ts +5 -0
  135. package/dist/core/context-budget-v2-coverage.d.ts.map +1 -0
  136. package/dist/core/context-budget-v2-coverage.js +58 -0
  137. package/dist/core/context-budget-v2-coverage.js.map +1 -0
  138. package/dist/core/context-budget-v2-plan-hash.d.ts +12 -0
  139. package/dist/core/context-budget-v2-plan-hash.d.ts.map +1 -0
  140. package/dist/core/context-budget-v2-plan-hash.js +38 -0
  141. package/dist/core/context-budget-v2-plan-hash.js.map +1 -0
  142. package/dist/core/context-budget-v2-planner.d.ts +3 -0
  143. package/dist/core/context-budget-v2-planner.d.ts.map +1 -0
  144. package/dist/core/context-budget-v2-planner.js +143 -0
  145. package/dist/core/context-budget-v2-planner.js.map +1 -0
  146. package/dist/core/context-budget-v2-scoring.d.ts +14 -0
  147. package/dist/core/context-budget-v2-scoring.d.ts.map +1 -0
  148. package/dist/core/context-budget-v2-scoring.js +114 -0
  149. package/dist/core/context-budget-v2-scoring.js.map +1 -0
  150. package/dist/core/context-budget-v2-selection.d.ts +32 -0
  151. package/dist/core/context-budget-v2-selection.d.ts.map +1 -0
  152. package/dist/core/context-budget-v2-selection.js +158 -0
  153. package/dist/core/context-budget-v2-selection.js.map +1 -0
  154. package/dist/core/context-budget-v2-tiers.d.ts +15 -0
  155. package/dist/core/context-budget-v2-tiers.d.ts.map +1 -0
  156. package/dist/core/context-budget-v2-tiers.js +68 -0
  157. package/dist/core/context-budget-v2-tiers.js.map +1 -0
  158. package/dist/core/context-budget-v2-types.d.ts +92 -0
  159. package/dist/core/context-budget-v2-types.d.ts.map +1 -0
  160. package/dist/core/context-budget-v2-types.js +24 -0
  161. package/dist/core/context-budget-v2-types.js.map +1 -0
  162. package/dist/core/defaults.d.ts +1 -1
  163. package/dist/core/defaults.d.ts.map +1 -1
  164. package/dist/core/defaults.js.map +1 -1
  165. package/dist/core/diagnostics.d.ts +4 -0
  166. package/dist/core/diagnostics.d.ts.map +1 -1
  167. package/dist/core/diagnostics.js.map +1 -1
  168. package/dist/core/domain-confidence.d.ts +9 -0
  169. package/dist/core/domain-confidence.d.ts.map +1 -0
  170. package/dist/core/domain-confidence.js +39 -0
  171. package/dist/core/domain-confidence.js.map +1 -0
  172. package/dist/core/domain-dispatch.d.ts +44 -0
  173. package/dist/core/domain-dispatch.d.ts.map +1 -0
  174. package/dist/core/domain-dispatch.js +118 -0
  175. package/dist/core/domain-dispatch.js.map +1 -0
  176. package/dist/core/domain-loadouts.d.ts +76 -0
  177. package/dist/core/domain-loadouts.d.ts.map +1 -0
  178. package/dist/core/domain-loadouts.js +981 -0
  179. package/dist/core/domain-loadouts.js.map +1 -0
  180. package/dist/core/domain-registry.d.ts +7 -0
  181. package/dist/core/domain-registry.d.ts.map +1 -0
  182. package/dist/core/domain-registry.js +11 -0
  183. package/dist/core/domain-registry.js.map +1 -0
  184. package/dist/core/domain-router.d.ts +16 -0
  185. package/dist/core/domain-router.d.ts.map +1 -0
  186. package/dist/core/domain-router.js +24 -0
  187. package/dist/core/domain-router.js.map +1 -0
  188. package/dist/core/domain-score.d.ts +13 -0
  189. package/dist/core/domain-score.d.ts.map +1 -0
  190. package/dist/core/domain-score.js +48 -0
  191. package/dist/core/domain-score.js.map +1 -0
  192. package/dist/core/domain-trigger-match.d.ts +14 -0
  193. package/dist/core/domain-trigger-match.d.ts.map +1 -0
  194. package/dist/core/domain-trigger-match.js +51 -0
  195. package/dist/core/domain-trigger-match.js.map +1 -0
  196. package/dist/core/domain-types.d.ts +30 -0
  197. package/dist/core/domain-types.d.ts.map +1 -0
  198. package/dist/core/domain-types.js +2 -0
  199. package/dist/core/domain-types.js.map +1 -0
  200. package/dist/core/exact-cache-policy.d.ts +8 -0
  201. package/dist/core/exact-cache-policy.d.ts.map +1 -1
  202. package/dist/core/exact-cache-policy.js +9 -0
  203. package/dist/core/exact-cache-policy.js.map +1 -1
  204. package/dist/core/exec.d.ts +0 -2
  205. package/dist/core/exec.d.ts.map +1 -1
  206. package/dist/core/exec.js +0 -1
  207. package/dist/core/exec.js.map +1 -1
  208. package/dist/core/export-html/index.d.ts +1 -1
  209. package/dist/core/export-html/index.d.ts.map +1 -1
  210. package/dist/core/export-html/index.js.map +1 -1
  211. package/dist/core/export-html/template.js +1 -3
  212. package/dist/core/export-html/tool-renderer.d.ts.map +1 -1
  213. package/dist/core/export-html/tool-renderer.js.map +1 -1
  214. package/dist/core/extensions/builtin/command-safety-gate.d.ts +3 -0
  215. package/dist/core/extensions/builtin/command-safety-gate.d.ts.map +1 -1
  216. package/dist/core/extensions/builtin/command-safety-gate.js +15 -3
  217. package/dist/core/extensions/builtin/command-safety-gate.js.map +1 -1
  218. package/dist/core/extensions/builtin/todo-checklist.d.ts +20 -0
  219. package/dist/core/extensions/builtin/todo-checklist.d.ts.map +1 -0
  220. package/dist/core/extensions/builtin/todo-checklist.js +70 -0
  221. package/dist/core/extensions/builtin/todo-checklist.js.map +1 -0
  222. package/dist/core/extensions/loader.d.ts +4 -4
  223. package/dist/core/extensions/loader.d.ts.map +1 -1
  224. package/dist/core/extensions/loader.js +57 -92
  225. package/dist/core/extensions/loader.js.map +1 -1
  226. package/dist/core/extensions/runner.d.ts +3 -3
  227. package/dist/core/extensions/runner.d.ts.map +1 -1
  228. package/dist/core/extensions/runner.js +1 -1
  229. package/dist/core/extensions/runner.js.map +1 -1
  230. package/dist/core/extensions/types.d.ts +7 -35
  231. package/dist/core/extensions/types.d.ts.map +1 -1
  232. package/dist/core/extensions/types.js.map +1 -1
  233. package/dist/core/extensions/wrapper.d.ts +1 -1
  234. package/dist/core/extensions/wrapper.d.ts.map +1 -1
  235. package/dist/core/extensions/wrapper.js.map +1 -1
  236. package/dist/core/headroom.d.ts +45 -0
  237. package/dist/core/headroom.d.ts.map +1 -0
  238. package/dist/core/headroom.js +171 -0
  239. package/dist/core/headroom.js.map +1 -0
  240. package/dist/core/hook-inventory.d.ts +4 -2
  241. package/dist/core/hook-inventory.d.ts.map +1 -1
  242. package/dist/core/hook-inventory.js +80 -11
  243. package/dist/core/hook-inventory.js.map +1 -1
  244. package/dist/core/hooks/fail-closed.d.ts +4 -1
  245. package/dist/core/hooks/fail-closed.d.ts.map +1 -1
  246. package/dist/core/hooks/fail-closed.js +79 -5
  247. package/dist/core/hooks/fail-closed.js.map +1 -1
  248. package/dist/core/hooks/index.d.ts +2 -2
  249. package/dist/core/hooks/index.d.ts.map +1 -1
  250. package/dist/core/hooks/index.js +1 -1
  251. package/dist/core/hooks/index.js.map +1 -1
  252. package/dist/core/hooks/types.d.ts +9 -0
  253. package/dist/core/hooks/types.d.ts.map +1 -1
  254. package/dist/core/hooks/types.js.map +1 -1
  255. package/dist/core/keybindings.d.ts +2 -14
  256. package/dist/core/keybindings.d.ts.map +1 -1
  257. package/dist/core/keybindings.js +1 -31
  258. package/dist/core/keybindings.js.map +1 -1
  259. package/dist/core/lean-ctx.d.ts +99 -0
  260. package/dist/core/lean-ctx.d.ts.map +1 -0
  261. package/dist/core/lean-ctx.js +225 -0
  262. package/dist/core/lean-ctx.js.map +1 -0
  263. package/dist/core/loadout-compose.d.ts +53 -0
  264. package/dist/core/loadout-compose.d.ts.map +1 -0
  265. package/dist/core/loadout-compose.js +172 -0
  266. package/dist/core/loadout-compose.js.map +1 -0
  267. package/dist/core/loadout-policy-bridge.d.ts +22 -0
  268. package/dist/core/loadout-policy-bridge.d.ts.map +1 -0
  269. package/dist/core/loadout-policy-bridge.js +52 -0
  270. package/dist/core/loadout-policy-bridge.js.map +1 -0
  271. package/dist/core/loadout-runtime.d.ts +22 -0
  272. package/dist/core/loadout-runtime.d.ts.map +1 -1
  273. package/dist/core/loadout-runtime.js +41 -5
  274. package/dist/core/loadout-runtime.js.map +1 -1
  275. package/dist/core/loadout-safety.d.ts +55 -0
  276. package/dist/core/loadout-safety.d.ts.map +1 -0
  277. package/dist/core/loadout-safety.js +213 -0
  278. package/dist/core/loadout-safety.js.map +1 -0
  279. package/dist/core/loadouts.d.ts +4 -2
  280. package/dist/core/loadouts.d.ts.map +1 -1
  281. package/dist/core/loadouts.js +116 -5
  282. package/dist/core/loadouts.js.map +1 -1
  283. package/dist/core/loop-gates.d.ts +48 -0
  284. package/dist/core/loop-gates.d.ts.map +1 -0
  285. package/dist/core/loop-gates.js +352 -0
  286. package/dist/core/loop-gates.js.map +1 -0
  287. package/dist/core/loop-registry.d.ts +77 -0
  288. package/dist/core/loop-registry.d.ts.map +1 -0
  289. package/dist/core/loop-registry.js +831 -0
  290. package/dist/core/loop-registry.js.map +1 -0
  291. package/dist/core/loop-types.d.ts +194 -0
  292. package/dist/core/loop-types.d.ts.map +1 -0
  293. package/dist/core/loop-types.js +2 -0
  294. package/dist/core/loop-types.js.map +1 -0
  295. package/dist/core/mcp-inventory.d.ts +7 -0
  296. package/dist/core/mcp-inventory.d.ts.map +1 -1
  297. package/dist/core/mcp-inventory.js +5 -1
  298. package/dist/core/mcp-inventory.js.map +1 -1
  299. package/dist/core/mcp-presets.d.ts +43 -2
  300. package/dist/core/mcp-presets.d.ts.map +1 -1
  301. package/dist/core/mcp-presets.js +298 -2
  302. package/dist/core/mcp-presets.js.map +1 -1
  303. package/dist/core/messages.d.ts +3 -3
  304. package/dist/core/messages.d.ts.map +1 -1
  305. package/dist/core/messages.js.map +1 -1
  306. package/dist/core/metrics-sampler.d.ts +11 -0
  307. package/dist/core/metrics-sampler.d.ts.map +1 -1
  308. package/dist/core/metrics-sampler.js +52 -13
  309. package/dist/core/metrics-sampler.js.map +1 -1
  310. package/dist/core/model-registry.d.ts +1 -2
  311. package/dist/core/model-registry.d.ts.map +1 -1
  312. package/dist/core/model-registry.js +18 -41
  313. package/dist/core/model-registry.js.map +1 -1
  314. package/dist/core/model-resolver.d.ts +2 -2
  315. package/dist/core/model-resolver.d.ts.map +1 -1
  316. package/dist/core/model-resolver.js +1 -2
  317. package/dist/core/model-resolver.js.map +1 -1
  318. package/dist/core/package-gallery-identity.d.ts +7 -0
  319. package/dist/core/package-gallery-identity.d.ts.map +1 -0
  320. package/dist/core/package-gallery-identity.js +31 -0
  321. package/dist/core/package-gallery-identity.js.map +1 -0
  322. package/dist/core/package-gallery-install.d.ts +6 -0
  323. package/dist/core/package-gallery-install.d.ts.map +1 -0
  324. package/dist/core/package-gallery-install.js +59 -0
  325. package/dist/core/package-gallery-install.js.map +1 -0
  326. package/dist/core/package-gallery-manifest.d.ts +13 -0
  327. package/dist/core/package-gallery-manifest.d.ts.map +1 -0
  328. package/dist/core/package-gallery-manifest.js +183 -0
  329. package/dist/core/package-gallery-manifest.js.map +1 -0
  330. package/dist/core/package-gallery-trial.d.ts +4 -0
  331. package/dist/core/package-gallery-trial.d.ts.map +1 -0
  332. package/dist/core/package-gallery-trial.js +55 -0
  333. package/dist/core/package-gallery-trial.js.map +1 -0
  334. package/dist/core/package-gallery-types.d.ts +71 -0
  335. package/dist/core/package-gallery-types.d.ts.map +1 -0
  336. package/dist/core/package-gallery-types.js +2 -0
  337. package/dist/core/package-gallery-types.js.map +1 -0
  338. package/dist/core/package-gallery.d.ts +5 -123
  339. package/dist/core/package-gallery.d.ts.map +1 -1
  340. package/dist/core/package-gallery.js +5 -391
  341. package/dist/core/package-gallery.js.map +1 -1
  342. package/dist/core/package-manager.d.ts +0 -69
  343. package/dist/core/package-manager.d.ts.map +1 -1
  344. package/dist/core/package-manager.js +69 -367
  345. package/dist/core/package-manager.js.map +1 -1
  346. package/dist/core/package-procurement.d.ts +4 -4
  347. package/dist/core/package-procurement.d.ts.map +1 -1
  348. package/dist/core/package-procurement.js +29 -17
  349. package/dist/core/package-procurement.js.map +1 -1
  350. package/dist/core/provider-attribution.d.ts +1 -1
  351. package/dist/core/provider-attribution.d.ts.map +1 -1
  352. package/dist/core/provider-attribution.js.map +1 -1
  353. package/dist/core/read-anchors.d.ts +1 -1
  354. package/dist/core/read-anchors.d.ts.map +1 -1
  355. package/dist/core/read-anchors.js +1 -1
  356. package/dist/core/read-anchors.js.map +1 -1
  357. package/dist/core/recovery-checkpoint.d.ts +2 -2
  358. package/dist/core/recovery-checkpoint.d.ts.map +1 -1
  359. package/dist/core/recovery-checkpoint.js +2 -2
  360. package/dist/core/recovery-checkpoint.js.map +1 -1
  361. package/dist/core/resolve-config-value.d.ts +1 -1
  362. package/dist/core/resolve-config-value.d.ts.map +1 -1
  363. package/dist/core/resolve-config-value.js +2 -30
  364. package/dist/core/resolve-config-value.js.map +1 -1
  365. package/dist/core/resource-loader.d.ts +12 -20
  366. package/dist/core/resource-loader.d.ts.map +1 -1
  367. package/dist/core/resource-loader.js +66 -90
  368. package/dist/core/resource-loader.js.map +1 -1
  369. package/dist/core/sandbox-policy-v2.d.ts +49 -0
  370. package/dist/core/sandbox-policy-v2.d.ts.map +1 -0
  371. package/dist/core/sandbox-policy-v2.js +368 -0
  372. package/dist/core/sandbox-policy-v2.js.map +1 -0
  373. package/dist/core/sdk.d.ts +10 -78
  374. package/dist/core/sdk.d.ts.map +1 -1
  375. package/dist/core/sdk.js +97 -139
  376. package/dist/core/sdk.js.map +1 -1
  377. package/dist/core/semantic-cache-policy.d.ts +7 -1
  378. package/dist/core/semantic-cache-policy.d.ts.map +1 -1
  379. package/dist/core/semantic-cache-policy.js +8 -0
  380. package/dist/core/semantic-cache-policy.js.map +1 -1
  381. package/dist/core/session-manager.d.ts +2 -4
  382. package/dist/core/session-manager.d.ts.map +1 -1
  383. package/dist/core/session-manager.js +5 -6
  384. package/dist/core/session-manager.js.map +1 -1
  385. package/dist/core/settings-manager.d.ts +1 -18
  386. package/dist/core/settings-manager.d.ts.map +1 -1
  387. package/dist/core/settings-manager.js +2 -48
  388. package/dist/core/settings-manager.js.map +1 -1
  389. package/dist/core/skills.d.ts +1 -0
  390. package/dist/core/skills.d.ts.map +1 -1
  391. package/dist/core/skills.js +46 -5
  392. package/dist/core/skills.js.map +1 -1
  393. package/dist/core/slash-commands.d.ts.map +1 -1
  394. package/dist/core/slash-commands.js +0 -2
  395. package/dist/core/slash-commands.js.map +1 -1
  396. package/dist/core/subagent-orchestration.d.ts +73 -0
  397. package/dist/core/subagent-orchestration.d.ts.map +1 -0
  398. package/dist/core/subagent-orchestration.js +408 -0
  399. package/dist/core/subagent-orchestration.js.map +1 -0
  400. package/dist/core/system-prompt.d.ts +5 -4
  401. package/dist/core/system-prompt.d.ts.map +1 -1
  402. package/dist/core/system-prompt.js +57 -36
  403. package/dist/core/system-prompt.js.map +1 -1
  404. package/dist/core/timings.d.ts +0 -4
  405. package/dist/core/timings.d.ts.map +1 -1
  406. package/dist/core/timings.js +0 -4
  407. package/dist/core/timings.js.map +1 -1
  408. package/dist/core/todo-state.d.ts +53 -0
  409. package/dist/core/todo-state.d.ts.map +1 -0
  410. package/dist/core/todo-state.js +87 -0
  411. package/dist/core/todo-state.js.map +1 -0
  412. package/dist/core/token-optimizer.d.ts +58 -0
  413. package/dist/core/token-optimizer.d.ts.map +1 -0
  414. package/dist/core/token-optimizer.js +179 -0
  415. package/dist/core/token-optimizer.js.map +1 -0
  416. package/dist/core/tools/bash.d.ts +8 -9
  417. package/dist/core/tools/bash.d.ts.map +1 -1
  418. package/dist/core/tools/bash.js +9 -8
  419. package/dist/core/tools/bash.js.map +1 -1
  420. package/dist/core/tools/edit.d.ts +3 -14
  421. package/dist/core/tools/edit.d.ts.map +1 -1
  422. package/dist/core/tools/edit.js +4 -25
  423. package/dist/core/tools/edit.js.map +1 -1
  424. package/dist/core/tools/find.d.ts +1 -4
  425. package/dist/core/tools/find.d.ts.map +1 -1
  426. package/dist/core/tools/find.js +1 -4
  427. package/dist/core/tools/find.js.map +1 -1
  428. package/dist/core/tools/grep.d.ts +1 -4
  429. package/dist/core/tools/grep.d.ts.map +1 -1
  430. package/dist/core/tools/grep.js +2 -5
  431. package/dist/core/tools/grep.js.map +1 -1
  432. package/dist/core/tools/index.d.ts +2 -2
  433. package/dist/core/tools/index.d.ts.map +1 -1
  434. package/dist/core/tools/index.js.map +1 -1
  435. package/dist/core/tools/ls.d.ts +1 -4
  436. package/dist/core/tools/ls.d.ts.map +1 -1
  437. package/dist/core/tools/ls.js +1 -4
  438. package/dist/core/tools/ls.js.map +1 -1
  439. package/dist/core/tools/read.d.ts +2 -14
  440. package/dist/core/tools/read.d.ts.map +1 -1
  441. package/dist/core/tools/read.js +4 -28
  442. package/dist/core/tools/read.js.map +1 -1
  443. package/dist/core/tools/render-utils.d.ts +1 -1
  444. package/dist/core/tools/render-utils.d.ts.map +1 -1
  445. package/dist/core/tools/render-utils.js +1 -1
  446. package/dist/core/tools/render-utils.js.map +1 -1
  447. package/dist/core/tools/tool-definition-wrapper.d.ts +1 -1
  448. package/dist/core/tools/tool-definition-wrapper.d.ts.map +1 -1
  449. package/dist/core/tools/tool-definition-wrapper.js.map +1 -1
  450. package/dist/core/tools/write.d.ts +2 -4
  451. package/dist/core/tools/write.d.ts.map +1 -1
  452. package/dist/core/tools/write.js +4 -4
  453. package/dist/core/tools/write.js.map +1 -1
  454. package/dist/encoding/index.d.ts +6 -0
  455. package/dist/encoding/index.d.ts.map +1 -0
  456. package/dist/encoding/index.js +6 -0
  457. package/dist/encoding/index.js.map +1 -0
  458. package/dist/encoding/l4-encoder.d.ts +96 -0
  459. package/dist/encoding/l4-encoder.d.ts.map +1 -0
  460. package/dist/encoding/l4-encoder.js +474 -0
  461. package/dist/encoding/l4-encoder.js.map +1 -0
  462. package/dist/fuzzing/index.d.ts +6 -0
  463. package/dist/fuzzing/index.d.ts.map +1 -0
  464. package/dist/fuzzing/index.js +6 -0
  465. package/dist/fuzzing/index.js.map +1 -0
  466. package/dist/fuzzing/mutation-engine.d.ts +93 -0
  467. package/dist/fuzzing/mutation-engine.d.ts.map +1 -0
  468. package/dist/fuzzing/mutation-engine.js +244 -0
  469. package/dist/fuzzing/mutation-engine.js.map +1 -0
  470. package/dist/guardrails/audit-logger.d.ts +4 -0
  471. package/dist/guardrails/audit-logger.d.ts.map +1 -0
  472. package/dist/guardrails/audit-logger.js +28 -0
  473. package/dist/guardrails/audit-logger.js.map +1 -0
  474. package/dist/guardrails/evidence-system.d.ts +61 -0
  475. package/dist/guardrails/evidence-system.d.ts.map +1 -0
  476. package/dist/guardrails/evidence-system.js +302 -0
  477. package/dist/guardrails/evidence-system.js.map +1 -0
  478. package/dist/guardrails/freedomd-adapter.d.ts +16 -0
  479. package/dist/guardrails/freedomd-adapter.d.ts.map +1 -0
  480. package/dist/guardrails/freedomd-adapter.js +87 -0
  481. package/dist/guardrails/freedomd-adapter.js.map +1 -0
  482. package/dist/index.d.ts +4 -19
  483. package/dist/index.d.ts.map +1 -1
  484. package/dist/index.js +2 -17
  485. package/dist/index.js.map +1 -1
  486. package/dist/jailbreak-extension.d.ts +48 -0
  487. package/dist/jailbreak-extension.d.ts.map +1 -0
  488. package/dist/jailbreak-extension.js +47 -0
  489. package/dist/jailbreak-extension.js.map +1 -0
  490. package/dist/main.d.ts.map +1 -1
  491. package/dist/main.js +2 -2
  492. package/dist/main.js.map +1 -1
  493. package/dist/migrations.d.ts +0 -37
  494. package/dist/migrations.d.ts.map +1 -1
  495. package/dist/migrations.js +6 -414
  496. package/dist/migrations.js.map +1 -1
  497. package/dist/modes/interactive/components/armin.d.ts +1 -1
  498. package/dist/modes/interactive/components/armin.d.ts.map +1 -1
  499. package/dist/modes/interactive/components/armin.js.map +1 -1
  500. package/dist/modes/interactive/components/assistant-message.d.ts +2 -2
  501. package/dist/modes/interactive/components/assistant-message.d.ts.map +1 -1
  502. package/dist/modes/interactive/components/assistant-message.js +1 -1
  503. package/dist/modes/interactive/components/assistant-message.js.map +1 -1
  504. package/dist/modes/interactive/components/bash-execution.d.ts +1 -1
  505. package/dist/modes/interactive/components/bash-execution.d.ts.map +1 -1
  506. package/dist/modes/interactive/components/bash-execution.js +1 -1
  507. package/dist/modes/interactive/components/bash-execution.js.map +1 -1
  508. package/dist/modes/interactive/components/bordered-loader.d.ts +1 -1
  509. package/dist/modes/interactive/components/bordered-loader.d.ts.map +1 -1
  510. package/dist/modes/interactive/components/bordered-loader.js +1 -1
  511. package/dist/modes/interactive/components/bordered-loader.js.map +1 -1
  512. package/dist/modes/interactive/components/branch-summary-message.d.ts +1 -1
  513. package/dist/modes/interactive/components/branch-summary-message.d.ts.map +1 -1
  514. package/dist/modes/interactive/components/branch-summary-message.js +1 -1
  515. package/dist/modes/interactive/components/branch-summary-message.js.map +1 -1
  516. package/dist/modes/interactive/components/compaction-summary-message.d.ts +1 -1
  517. package/dist/modes/interactive/components/compaction-summary-message.d.ts.map +1 -1
  518. package/dist/modes/interactive/components/compaction-summary-message.js +1 -1
  519. package/dist/modes/interactive/components/compaction-summary-message.js.map +1 -1
  520. package/dist/modes/interactive/components/config-selector.d.ts +1 -1
  521. package/dist/modes/interactive/components/config-selector.d.ts.map +1 -1
  522. package/dist/modes/interactive/components/config-selector.js +1 -1
  523. package/dist/modes/interactive/components/config-selector.js.map +1 -1
  524. package/dist/modes/interactive/components/control-panel-box.d.ts +15 -0
  525. package/dist/modes/interactive/components/control-panel-box.d.ts.map +1 -0
  526. package/dist/modes/interactive/components/control-panel-box.js +55 -0
  527. package/dist/modes/interactive/components/control-panel-box.js.map +1 -0
  528. package/dist/modes/interactive/components/control-panel-gradient-motion.d.ts.map +1 -1
  529. package/dist/modes/interactive/components/control-panel-gradient-motion.js +2 -36
  530. package/dist/modes/interactive/components/control-panel-gradient-motion.js.map +1 -1
  531. package/dist/modes/interactive/components/control-panel-gradient.d.ts +1 -0
  532. package/dist/modes/interactive/components/control-panel-gradient.d.ts.map +1 -1
  533. package/dist/modes/interactive/components/control-panel-gradient.js +6 -5
  534. package/dist/modes/interactive/components/control-panel-gradient.js.map +1 -1
  535. package/dist/modes/interactive/components/control-panel-layout.d.ts +23 -0
  536. package/dist/modes/interactive/components/control-panel-layout.d.ts.map +1 -0
  537. package/dist/modes/interactive/components/control-panel-layout.js +165 -0
  538. package/dist/modes/interactive/components/control-panel-layout.js.map +1 -0
  539. package/dist/modes/interactive/components/control-panel-runtime-status.d.ts +5 -0
  540. package/dist/modes/interactive/components/control-panel-runtime-status.d.ts.map +1 -0
  541. package/dist/modes/interactive/components/control-panel-runtime-status.js +20 -0
  542. package/dist/modes/interactive/components/control-panel-runtime-status.js.map +1 -0
  543. package/dist/modes/interactive/components/control-panel.d.ts +8 -31
  544. package/dist/modes/interactive/components/control-panel.d.ts.map +1 -1
  545. package/dist/modes/interactive/components/control-panel.js +38 -169
  546. package/dist/modes/interactive/components/control-panel.js.map +1 -1
  547. package/dist/modes/interactive/components/countdown-timer.d.ts +1 -1
  548. package/dist/modes/interactive/components/countdown-timer.d.ts.map +1 -1
  549. package/dist/modes/interactive/components/countdown-timer.js.map +1 -1
  550. package/dist/modes/interactive/components/custom-editor.d.ts +1 -1
  551. package/dist/modes/interactive/components/custom-editor.d.ts.map +1 -1
  552. package/dist/modes/interactive/components/custom-editor.js +14 -22
  553. package/dist/modes/interactive/components/custom-editor.js.map +1 -1
  554. package/dist/modes/interactive/components/custom-message.d.ts +1 -1
  555. package/dist/modes/interactive/components/custom-message.d.ts.map +1 -1
  556. package/dist/modes/interactive/components/custom-message.js +1 -1
  557. package/dist/modes/interactive/components/custom-message.js.map +1 -1
  558. package/dist/modes/interactive/components/daxnuts.d.ts +1 -1
  559. package/dist/modes/interactive/components/daxnuts.d.ts.map +1 -1
  560. package/dist/modes/interactive/components/daxnuts.js.map +1 -1
  561. package/dist/modes/interactive/components/dynamic-border.d.ts +1 -1
  562. package/dist/modes/interactive/components/dynamic-border.d.ts.map +1 -1
  563. package/dist/modes/interactive/components/dynamic-border.js.map +1 -1
  564. package/dist/modes/interactive/components/earendil-announcement.d.ts +1 -1
  565. package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -1
  566. package/dist/modes/interactive/components/earendil-announcement.js +1 -1
  567. package/dist/modes/interactive/components/earendil-announcement.js.map +1 -1
  568. package/dist/modes/interactive/components/extension-editor.d.ts +1 -1
  569. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  570. package/dist/modes/interactive/components/extension-editor.js +1 -1
  571. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  572. package/dist/modes/interactive/components/extension-input.d.ts +1 -1
  573. package/dist/modes/interactive/components/extension-input.d.ts.map +1 -1
  574. package/dist/modes/interactive/components/extension-input.js +1 -1
  575. package/dist/modes/interactive/components/extension-input.js.map +1 -1
  576. package/dist/modes/interactive/components/extension-selector.d.ts +1 -1
  577. package/dist/modes/interactive/components/extension-selector.d.ts.map +1 -1
  578. package/dist/modes/interactive/components/extension-selector.js +1 -1
  579. package/dist/modes/interactive/components/extension-selector.js.map +1 -1
  580. package/dist/modes/interactive/components/footer.d.ts +1 -1
  581. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  582. package/dist/modes/interactive/components/footer.js +1 -9
  583. package/dist/modes/interactive/components/footer.js.map +1 -1
  584. package/dist/modes/interactive/components/index.d.ts +0 -2
  585. package/dist/modes/interactive/components/index.d.ts.map +1 -1
  586. package/dist/modes/interactive/components/index.js +0 -2
  587. package/dist/modes/interactive/components/index.js.map +1 -1
  588. package/dist/modes/interactive/components/keybinding-hints.d.ts +1 -1
  589. package/dist/modes/interactive/components/keybinding-hints.d.ts.map +1 -1
  590. package/dist/modes/interactive/components/keybinding-hints.js +1 -1
  591. package/dist/modes/interactive/components/keybinding-hints.js.map +1 -1
  592. package/dist/modes/interactive/components/login-dialog.d.ts +2 -2
  593. package/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
  594. package/dist/modes/interactive/components/login-dialog.js +2 -2
  595. package/dist/modes/interactive/components/login-dialog.js.map +1 -1
  596. package/dist/modes/interactive/components/model-selector.d.ts +13 -47
  597. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  598. package/dist/modes/interactive/components/model-selector.js +118 -193
  599. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  600. package/dist/modes/interactive/components/oauth-selector.d.ts +1 -1
  601. package/dist/modes/interactive/components/oauth-selector.d.ts.map +1 -1
  602. package/dist/modes/interactive/components/oauth-selector.js +1 -1
  603. package/dist/modes/interactive/components/oauth-selector.js.map +1 -1
  604. package/dist/modes/interactive/components/scoped-models-selector.d.ts +2 -2
  605. package/dist/modes/interactive/components/scoped-models-selector.d.ts.map +1 -1
  606. package/dist/modes/interactive/components/scoped-models-selector.js +1 -1
  607. package/dist/modes/interactive/components/scoped-models-selector.js.map +1 -1
  608. package/dist/modes/interactive/components/session-selector-search.d.ts.map +1 -1
  609. package/dist/modes/interactive/components/session-selector-search.js +1 -1
  610. package/dist/modes/interactive/components/session-selector-search.js.map +1 -1
  611. package/dist/modes/interactive/components/session-selector.d.ts +1 -1
  612. package/dist/modes/interactive/components/session-selector.d.ts.map +1 -1
  613. package/dist/modes/interactive/components/session-selector.js +1 -1
  614. package/dist/modes/interactive/components/session-selector.js.map +1 -1
  615. package/dist/modes/interactive/components/settings-selector.d.ts +3 -3
  616. package/dist/modes/interactive/components/settings-selector.d.ts.map +1 -1
  617. package/dist/modes/interactive/components/settings-selector.js +1 -1
  618. package/dist/modes/interactive/components/settings-selector.js.map +1 -1
  619. package/dist/modes/interactive/components/show-images-selector.d.ts +1 -1
  620. package/dist/modes/interactive/components/show-images-selector.d.ts.map +1 -1
  621. package/dist/modes/interactive/components/show-images-selector.js +1 -1
  622. package/dist/modes/interactive/components/show-images-selector.js.map +1 -1
  623. package/dist/modes/interactive/components/skill-invocation-message.d.ts +1 -1
  624. package/dist/modes/interactive/components/skill-invocation-message.d.ts.map +1 -1
  625. package/dist/modes/interactive/components/skill-invocation-message.js +1 -1
  626. package/dist/modes/interactive/components/skill-invocation-message.js.map +1 -1
  627. package/dist/modes/interactive/components/theme-selector.d.ts +1 -2
  628. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
  629. package/dist/modes/interactive/components/theme-selector.js +2 -11
  630. package/dist/modes/interactive/components/theme-selector.js.map +1 -1
  631. package/dist/modes/interactive/components/thinking-selector.d.ts +8 -7
  632. package/dist/modes/interactive/components/thinking-selector.d.ts.map +1 -1
  633. package/dist/modes/interactive/components/thinking-selector.js +48 -7
  634. package/dist/modes/interactive/components/thinking-selector.js.map +1 -1
  635. package/dist/modes/interactive/components/todo-checklist.d.ts +31 -0
  636. package/dist/modes/interactive/components/todo-checklist.d.ts.map +1 -0
  637. package/dist/modes/interactive/components/todo-checklist.js +121 -0
  638. package/dist/modes/interactive/components/todo-checklist.js.map +1 -0
  639. package/dist/modes/interactive/components/tool-execution.d.ts +1 -1
  640. package/dist/modes/interactive/components/tool-execution.d.ts.map +1 -1
  641. package/dist/modes/interactive/components/tool-execution.js +1 -1
  642. package/dist/modes/interactive/components/tool-execution.js.map +1 -1
  643. package/dist/modes/interactive/components/tree-selector.d.ts +1 -1
  644. package/dist/modes/interactive/components/tree-selector.d.ts.map +1 -1
  645. package/dist/modes/interactive/components/tree-selector.js +1 -1
  646. package/dist/modes/interactive/components/tree-selector.js.map +1 -1
  647. package/dist/modes/interactive/components/user-message-selector.d.ts +1 -1
  648. package/dist/modes/interactive/components/user-message-selector.d.ts.map +1 -1
  649. package/dist/modes/interactive/components/user-message-selector.js +1 -1
  650. package/dist/modes/interactive/components/user-message-selector.js.map +1 -1
  651. package/dist/modes/interactive/components/user-message.d.ts +1 -1
  652. package/dist/modes/interactive/components/user-message.d.ts.map +1 -1
  653. package/dist/modes/interactive/components/user-message.js +1 -1
  654. package/dist/modes/interactive/components/user-message.js.map +1 -1
  655. package/dist/modes/interactive/components/visual-truncate.d.ts.map +1 -1
  656. package/dist/modes/interactive/components/visual-truncate.js +1 -1
  657. package/dist/modes/interactive/components/visual-truncate.js.map +1 -1
  658. package/dist/modes/interactive/interactive-mode.d.ts +3 -8
  659. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  660. package/dist/modes/interactive/interactive-mode.js +74 -232
  661. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  662. package/dist/modes/interactive/theme/omk-control-grid-dark.json +65 -77
  663. package/dist/modes/interactive/theme/omk-neon-control.json +90 -0
  664. package/dist/modes/interactive/theme/rust-forge.json +14 -24
  665. package/dist/modes/interactive/theme/theme.d.ts +1 -1
  666. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  667. package/dist/modes/interactive/theme/theme.js +22 -45
  668. package/dist/modes/interactive/theme/theme.js.map +1 -1
  669. package/dist/modes/print-mode.d.ts +1 -1
  670. package/dist/modes/print-mode.d.ts.map +1 -1
  671. package/dist/modes/print-mode.js.map +1 -1
  672. package/dist/modes/rpc/rpc-client.d.ts +2 -2
  673. package/dist/modes/rpc/rpc-client.d.ts.map +1 -1
  674. package/dist/modes/rpc/rpc-client.js.map +1 -1
  675. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  676. package/dist/modes/rpc/rpc-mode.js +0 -4
  677. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  678. package/dist/modes/rpc/rpc-types.d.ts +2 -2
  679. package/dist/modes/rpc/rpc-types.d.ts.map +1 -1
  680. package/dist/modes/rpc/rpc-types.js.map +1 -1
  681. package/dist/modules/index.d.ts +8 -0
  682. package/dist/modules/index.d.ts.map +1 -0
  683. package/dist/modules/index.js +7 -0
  684. package/dist/modules/index.js.map +1 -0
  685. package/dist/modules/lrl-bypass.d.ts +40 -0
  686. package/dist/modules/lrl-bypass.d.ts.map +1 -0
  687. package/dist/modules/lrl-bypass.js +84 -0
  688. package/dist/modules/lrl-bypass.js.map +1 -0
  689. package/dist/modules/lrl-deps.d.ts +38 -0
  690. package/dist/modules/lrl-deps.d.ts.map +1 -0
  691. package/dist/modules/lrl-deps.js +128 -0
  692. package/dist/modules/lrl-deps.js.map +1 -0
  693. package/dist/multiturn/easl-chain.d.ts +113 -0
  694. package/dist/multiturn/easl-chain.d.ts.map +1 -0
  695. package/dist/multiturn/easl-chain.js +351 -0
  696. package/dist/multiturn/easl-chain.js.map +1 -0
  697. package/dist/multiturn/index.d.ts +6 -0
  698. package/dist/multiturn/index.d.ts.map +1 -0
  699. package/dist/multiturn/index.js +6 -0
  700. package/dist/multiturn/index.js.map +1 -0
  701. package/dist/orchestration/lane-grant-auditor.d.ts +4 -0
  702. package/dist/orchestration/lane-grant-auditor.d.ts.map +1 -0
  703. package/dist/orchestration/lane-grant-auditor.js +87 -0
  704. package/dist/orchestration/lane-grant-auditor.js.map +1 -0
  705. package/dist/package-manager-cli.d.ts.map +1 -1
  706. package/dist/package-manager-cli.js +48 -113
  707. package/dist/package-manager-cli.js.map +1 -1
  708. package/dist/routing/fallback-router.d.ts +123 -0
  709. package/dist/routing/fallback-router.d.ts.map +1 -0
  710. package/dist/routing/fallback-router.js +355 -0
  711. package/dist/routing/fallback-router.js.map +1 -0
  712. package/dist/routing/index.d.ts +6 -0
  713. package/dist/routing/index.d.ts.map +1 -0
  714. package/dist/routing/index.js +6 -0
  715. package/dist/routing/index.js.map +1 -0
  716. package/dist/types/evidence.d.ts +117 -0
  717. package/dist/types/evidence.d.ts.map +1 -0
  718. package/dist/types/evidence.js +8 -0
  719. package/dist/types/evidence.js.map +1 -0
  720. package/dist/types/guardrails.d.ts +61 -0
  721. package/dist/types/guardrails.d.ts.map +1 -0
  722. package/dist/types/guardrails.js +9 -0
  723. package/dist/types/guardrails.js.map +1 -0
  724. package/dist/types/jailbreak.d.ts +246 -0
  725. package/dist/types/jailbreak.d.ts.map +1 -0
  726. package/dist/types/jailbreak.js +8 -0
  727. package/dist/types/jailbreak.js.map +1 -0
  728. package/dist/types/lane-grant.d.ts +58 -0
  729. package/dist/types/lane-grant.d.ts.map +1 -0
  730. package/dist/types/lane-grant.js +9 -0
  731. package/dist/types/lane-grant.js.map +1 -0
  732. package/dist/utils/jailbreak/common.d.ts +63 -0
  733. package/dist/utils/jailbreak/common.d.ts.map +1 -0
  734. package/dist/utils/jailbreak/common.js +130 -0
  735. package/dist/utils/jailbreak/common.js.map +1 -0
  736. package/dist/utils/jailbreak/index.d.ts +7 -0
  737. package/dist/utils/jailbreak/index.d.ts.map +1 -0
  738. package/dist/utils/jailbreak/index.js +7 -0
  739. package/dist/utils/jailbreak/index.js.map +1 -0
  740. package/dist/utils/windows-self-update.d.ts.map +1 -1
  741. package/dist/utils/windows-self-update.js +1 -1
  742. package/dist/utils/windows-self-update.js.map +1 -1
  743. package/docs/compaction.md +8 -21
  744. package/docs/custom-provider.md +2 -2
  745. package/docs/development.md +1 -1
  746. package/docs/extensions.md +11 -11
  747. package/docs/loadout-domains/README.md +70 -0
  748. package/docs/loadout-domains/ai-agent-ops.md +94 -0
  749. package/docs/loadout-domains/backend-api.md +116 -0
  750. package/docs/loadout-domains/data-science.md +100 -0
  751. package/docs/loadout-domains/devops-infra.md +85 -0
  752. package/docs/loadout-domains/docs-writing.md +92 -0
  753. package/docs/loadout-domains/frontend-ui.md +128 -0
  754. package/docs/loadout-domains/general.md +62 -0
  755. package/docs/loadout-domains/mobile.md +84 -0
  756. package/docs/loadout-domains/qa-testing.md +87 -0
  757. package/docs/loadout-domains/research.md +80 -0
  758. package/docs/loadout-domains/security-audit.md +97 -0
  759. package/docs/packages.md +7 -48
  760. package/docs/prompt-templates.md +0 -2
  761. package/docs/sdk.md +3 -3
  762. package/docs/security.md +145 -0
  763. package/docs/session-format.md +1 -1
  764. package/docs/themes.md +8 -7
  765. package/docs/tui.md +14 -14
  766. package/docs/usage.md +6 -16
  767. package/examples/extensions/README.md +2 -2
  768. package/examples/extensions/aside-computer-use/README.md +114 -0
  769. package/examples/extensions/aside-computer-use/action-scoring.ts +122 -0
  770. package/examples/extensions/aside-computer-use/assertions.ts +380 -0
  771. package/examples/extensions/aside-computer-use/controller.ts +491 -0
  772. package/examples/extensions/aside-computer-use/evidence.ts +229 -0
  773. package/examples/extensions/aside-computer-use/golden-trace.ts +141 -0
  774. package/examples/extensions/aside-computer-use/index.ts +76 -0
  775. package/examples/extensions/aside-computer-use/mcp-client.ts +381 -0
  776. package/examples/extensions/aside-computer-use/observation-snapshot.ts +121 -0
  777. package/examples/extensions/aside-computer-use/package.json +16 -0
  778. package/examples/extensions/aside-computer-use/policy.ts +257 -0
  779. package/examples/extensions/aside-computer-use/risk-authorize.ts +200 -0
  780. package/examples/extensions/aside-computer-use/risk-classifier.ts +205 -0
  781. package/examples/extensions/aside-computer-use/schema-fingerprint.ts +80 -0
  782. package/examples/extensions/aside-computer-use/session-binding.ts +161 -0
  783. package/examples/extensions/aside-computer-use/tools.ts +449 -0
  784. package/examples/extensions/aside-computer-use/types.ts +217 -0
  785. package/examples/extensions/aside-computer-use/url-origin.ts +132 -0
  786. package/examples/extensions/bash-spawn-hook.ts +1 -1
  787. package/examples/extensions/border-status-editor.ts +2 -2
  788. package/examples/extensions/built-in-tool-renderer.ts +1 -1
  789. package/examples/extensions/custom-compaction.ts +1 -1
  790. package/examples/extensions/custom-footer.ts +2 -2
  791. package/examples/extensions/custom-header.ts +8 -8
  792. package/examples/extensions/custom-provider-anthropic/index.ts +1 -1
  793. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  794. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  795. package/examples/extensions/custom-provider-gitlab-duo/index.ts +1 -1
  796. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  797. package/examples/extensions/custom-provider-gitlab-duo/test.ts +1 -1
  798. package/examples/extensions/doom-overlay/README.md +1 -2
  799. package/examples/extensions/doom-overlay/doom/build/doom.wasm +0 -0
  800. package/examples/extensions/doom-overlay/doom/build.sh +4 -4
  801. package/examples/extensions/doom-overlay/doom/doomgeneric_omk.c +72 -0
  802. package/examples/extensions/doom-overlay/doom-component.ts +2 -2
  803. package/examples/extensions/doom-overlay/doom-keys.ts +1 -1
  804. package/examples/extensions/git-merge-and-resolve.ts +1 -1
  805. package/examples/extensions/github-issue-autocomplete.ts +1 -6
  806. package/examples/extensions/gondolin/index.ts +1 -1
  807. package/examples/extensions/gondolin/package-lock.json +2 -2
  808. package/examples/extensions/gondolin/package.json +1 -1
  809. package/examples/extensions/handoff.ts +2 -2
  810. package/examples/extensions/hello.ts +1 -1
  811. package/examples/extensions/inline-bash.ts +1 -1
  812. package/examples/extensions/input-transform-streaming.ts +1 -1
  813. package/examples/extensions/input-transform.ts +2 -2
  814. package/examples/extensions/mac-system-theme.ts +1 -1
  815. package/examples/extensions/message-renderer.ts +1 -1
  816. package/examples/extensions/minimal-mode.ts +1 -1
  817. package/examples/extensions/modal-editor.ts +1 -1
  818. package/examples/extensions/overlay-qa-tests.ts +7 -7
  819. package/examples/extensions/overlay-test.ts +1 -1
  820. package/examples/extensions/plan-mode/index.ts +3 -3
  821. package/examples/extensions/preset.ts +4 -4
  822. package/examples/extensions/provider-payload.ts +6 -3
  823. package/examples/extensions/qna.ts +1 -1
  824. package/examples/extensions/question.ts +1 -1
  825. package/examples/extensions/questionnaire.ts +1 -1
  826. package/examples/extensions/rpc-demo.ts +1 -1
  827. package/examples/extensions/sandbox/index.ts +2 -2
  828. package/examples/extensions/sandbox/package-lock.json +2 -2
  829. package/examples/extensions/sandbox/package.json +1 -1
  830. package/examples/extensions/shutdown-command.ts +5 -5
  831. package/examples/extensions/snake.ts +1 -1
  832. package/examples/extensions/space-invaders.ts +1 -1
  833. package/examples/extensions/structured-output.ts +1 -1
  834. package/examples/extensions/subagent/agents.ts +2 -2
  835. package/examples/extensions/subagent/index.ts +19 -51
  836. package/examples/extensions/summarize.ts +2 -2
  837. package/examples/extensions/tic-tac-toe.ts +2 -2
  838. package/examples/extensions/todo.ts +2 -2
  839. package/examples/extensions/tool-override.ts +1 -1
  840. package/examples/extensions/tools.ts +1 -1
  841. package/examples/extensions/truncated-tool.ts +1 -1
  842. package/examples/extensions/with-deps/package-lock.json +2 -2
  843. package/examples/extensions/with-deps/package.json +1 -1
  844. package/examples/extensions/working-indicator.ts +3 -3
  845. package/examples/rpc-extension-ui.ts +1 -9
  846. package/examples/sdk/02-custom-model.ts +1 -1
  847. package/examples/sdk/07-context-files.ts +0 -2
  848. package/examples/sdk/12-full-control.ts +1 -1
  849. package/examples/sdk/README.md +1 -1
  850. package/npm-shrinkwrap.json +1805 -0
  851. package/package.json +10 -32
  852. package/dist/core/compaction/pruner-policy.d.ts +0 -84
  853. package/dist/core/compaction/pruner-policy.d.ts.map +0 -1
  854. package/dist/core/compaction/pruner-policy.js +0 -273
  855. package/dist/core/compaction/pruner-policy.js.map +0 -1
  856. package/dist/core/context-graph-identity-resolution.d.ts +0 -114
  857. package/dist/core/context-graph-identity-resolution.d.ts.map +0 -1
  858. package/dist/core/context-graph-identity-resolution.js +0 -127
  859. package/dist/core/context-graph-identity-resolution.js.map +0 -1
  860. package/dist/core/context-graph-memory-store.d.ts +0 -153
  861. package/dist/core/context-graph-memory-store.d.ts.map +0 -1
  862. package/dist/core/context-graph-memory-store.js +0 -377
  863. package/dist/core/context-graph-memory-store.js.map +0 -1
  864. package/dist/core/context-graph-ontology-generation.d.ts +0 -104
  865. package/dist/core/context-graph-ontology-generation.d.ts.map +0 -1
  866. package/dist/core/context-graph-ontology-generation.js +0 -135
  867. package/dist/core/context-graph-ontology-generation.js.map +0 -1
  868. package/dist/core/context-graph-ontology-registry.d.ts +0 -766
  869. package/dist/core/context-graph-ontology-registry.d.ts.map +0 -1
  870. package/dist/core/context-graph-ontology-registry.js +0 -1133
  871. package/dist/core/context-graph-ontology-registry.js.map +0 -1
  872. package/dist/core/context-graph-policy.d.ts +0 -68
  873. package/dist/core/context-graph-policy.d.ts.map +0 -1
  874. package/dist/core/context-graph-policy.js +0 -221
  875. package/dist/core/context-graph-policy.js.map +0 -1
  876. package/dist/core/context-graph-reasoning.d.ts +0 -130
  877. package/dist/core/context-graph-reasoning.d.ts.map +0 -1
  878. package/dist/core/context-graph-reasoning.js +0 -442
  879. package/dist/core/context-graph-reasoning.js.map +0 -1
  880. package/dist/core/context-graph-retrieval.d.ts +0 -120
  881. package/dist/core/context-graph-retrieval.d.ts.map +0 -1
  882. package/dist/core/context-graph-retrieval.js +0 -288
  883. package/dist/core/context-graph-retrieval.js.map +0 -1
  884. package/dist/core/contract-verification.d.ts +0 -78
  885. package/dist/core/contract-verification.d.ts.map +0 -1
  886. package/dist/core/contract-verification.js +0 -110
  887. package/dist/core/contract-verification.js.map +0 -1
  888. package/dist/core/freedom/banner.d.ts +0 -14
  889. package/dist/core/freedom/banner.d.ts.map +0 -1
  890. package/dist/core/freedom/banner.js +0 -22
  891. package/dist/core/freedom/banner.js.map +0 -1
  892. package/dist/core/freedom/config.d.ts +0 -27
  893. package/dist/core/freedom/config.d.ts.map +0 -1
  894. package/dist/core/freedom/config.js +0 -216
  895. package/dist/core/freedom/config.js.map +0 -1
  896. package/dist/core/freedom/index.d.ts +0 -23
  897. package/dist/core/freedom/index.d.ts.map +0 -1
  898. package/dist/core/freedom/index.js +0 -19
  899. package/dist/core/freedom/index.js.map +0 -1
  900. package/dist/core/freedom/policy.d.ts +0 -42
  901. package/dist/core/freedom/policy.d.ts.map +0 -1
  902. package/dist/core/freedom/policy.js +0 -47
  903. package/dist/core/freedom/policy.js.map +0 -1
  904. package/dist/core/freedom/safety-floor.d.ts +0 -73
  905. package/dist/core/freedom/safety-floor.d.ts.map +0 -1
  906. package/dist/core/freedom/safety-floor.js +0 -275
  907. package/dist/core/freedom/safety-floor.js.map +0 -1
  908. package/dist/core/harness-control-events.d.ts +0 -91
  909. package/dist/core/harness-control-events.d.ts.map +0 -1
  910. package/dist/core/harness-control-events.js +0 -514
  911. package/dist/core/harness-control-events.js.map +0 -1
  912. package/dist/core/harness-control-replay.d.ts +0 -31
  913. package/dist/core/harness-control-replay.d.ts.map +0 -1
  914. package/dist/core/harness-control-replay.js +0 -187
  915. package/dist/core/harness-control-replay.js.map +0 -1
  916. package/dist/core/headroom-middleware.d.ts +0 -35
  917. package/dist/core/headroom-middleware.d.ts.map +0 -1
  918. package/dist/core/headroom-middleware.js +0 -166
  919. package/dist/core/headroom-middleware.js.map +0 -1
  920. package/dist/core/lean-context-middleware.d.ts +0 -12
  921. package/dist/core/lean-context-middleware.d.ts.map +0 -1
  922. package/dist/core/lean-context-middleware.js +0 -87
  923. package/dist/core/lean-context-middleware.js.map +0 -1
  924. package/dist/core/lean-context-policy.d.ts +0 -45
  925. package/dist/core/lean-context-policy.d.ts.map +0 -1
  926. package/dist/core/lean-context-policy.js +0 -108
  927. package/dist/core/lean-context-policy.js.map +0 -1
  928. package/dist/core/native-adoption-benchmark.d.ts +0 -166
  929. package/dist/core/native-adoption-benchmark.d.ts.map +0 -1
  930. package/dist/core/native-adoption-benchmark.js +0 -624
  931. package/dist/core/native-adoption-benchmark.js.map +0 -1
  932. package/dist/core/observability-trace.d.ts +0 -80
  933. package/dist/core/observability-trace.d.ts.map +0 -1
  934. package/dist/core/observability-trace.js +0 -140
  935. package/dist/core/observability-trace.js.map +0 -1
  936. package/dist/core/orchestration/checkpoint.d.ts +0 -83
  937. package/dist/core/orchestration/checkpoint.d.ts.map +0 -1
  938. package/dist/core/orchestration/checkpoint.js +0 -152
  939. package/dist/core/orchestration/checkpoint.js.map +0 -1
  940. package/dist/core/orchestration/errors.d.ts +0 -74
  941. package/dist/core/orchestration/errors.d.ts.map +0 -1
  942. package/dist/core/orchestration/errors.js +0 -52
  943. package/dist/core/orchestration/errors.js.map +0 -1
  944. package/dist/core/orchestration/merge-queue.d.ts +0 -121
  945. package/dist/core/orchestration/merge-queue.d.ts.map +0 -1
  946. package/dist/core/orchestration/merge-queue.js +0 -149
  947. package/dist/core/orchestration/merge-queue.js.map +0 -1
  948. package/dist/core/orchestration/recovery.d.ts +0 -106
  949. package/dist/core/orchestration/recovery.d.ts.map +0 -1
  950. package/dist/core/orchestration/recovery.js +0 -110
  951. package/dist/core/orchestration/recovery.js.map +0 -1
  952. package/dist/core/orchestration/replay-ledger.d.ts +0 -76
  953. package/dist/core/orchestration/replay-ledger.d.ts.map +0 -1
  954. package/dist/core/orchestration/replay-ledger.js +0 -395
  955. package/dist/core/orchestration/replay-ledger.js.map +0 -1
  956. package/dist/core/orchestration/scheduler-state.d.ts +0 -78
  957. package/dist/core/orchestration/scheduler-state.d.ts.map +0 -1
  958. package/dist/core/orchestration/scheduler-state.js +0 -185
  959. package/dist/core/orchestration/scheduler-state.js.map +0 -1
  960. package/dist/core/orchestration/scheduler-store.d.ts +0 -309
  961. package/dist/core/orchestration/scheduler-store.d.ts.map +0 -1
  962. package/dist/core/orchestration/scheduler-store.js +0 -368
  963. package/dist/core/orchestration/scheduler-store.js.map +0 -1
  964. package/dist/core/orchestration/sqlite-scheduler-store.d.ts +0 -57
  965. package/dist/core/orchestration/sqlite-scheduler-store.d.ts.map +0 -1
  966. package/dist/core/orchestration/sqlite-scheduler-store.js +0 -528
  967. package/dist/core/orchestration/sqlite-scheduler-store.js.map +0 -1
  968. package/dist/core/orchestration/transaction-coordinator.d.ts +0 -217
  969. package/dist/core/orchestration/transaction-coordinator.d.ts.map +0 -1
  970. package/dist/core/orchestration/transaction-coordinator.js +0 -281
  971. package/dist/core/orchestration/transaction-coordinator.js.map +0 -1
  972. package/dist/core/orchestration/verification-contract.d.ts +0 -197
  973. package/dist/core/orchestration/verification-contract.d.ts.map +0 -1
  974. package/dist/core/orchestration/verification-contract.js +0 -145
  975. package/dist/core/orchestration/verification-contract.js.map +0 -1
  976. package/dist/core/package-composition.d.ts +0 -68
  977. package/dist/core/package-composition.d.ts.map +0 -1
  978. package/dist/core/package-composition.js +0 -304
  979. package/dist/core/package-composition.js.map +0 -1
  980. package/dist/core/package-trial-runtime.d.ts +0 -75
  981. package/dist/core/package-trial-runtime.d.ts.map +0 -1
  982. package/dist/core/package-trial-runtime.js +0 -73
  983. package/dist/core/package-trial-runtime.js.map +0 -1
  984. package/dist/core/package-trial-sandbox.d.ts +0 -27
  985. package/dist/core/package-trial-sandbox.d.ts.map +0 -1
  986. package/dist/core/package-trial-sandbox.js +0 -102
  987. package/dist/core/package-trial-sandbox.js.map +0 -1
  988. package/dist/core/policy-overlays-runtime.d.ts +0 -141
  989. package/dist/core/policy-overlays-runtime.d.ts.map +0 -1
  990. package/dist/core/policy-overlays-runtime.js +0 -720
  991. package/dist/core/policy-overlays-runtime.js.map +0 -1
  992. package/dist/core/read-anchor-registry.d.ts +0 -27
  993. package/dist/core/read-anchor-registry.d.ts.map +0 -1
  994. package/dist/core/read-anchor-registry.js +0 -103
  995. package/dist/core/read-anchor-registry.js.map +0 -1
  996. package/dist/core/read-content-cache.d.ts +0 -22
  997. package/dist/core/read-content-cache.d.ts.map +0 -1
  998. package/dist/core/read-content-cache.js +0 -79
  999. package/dist/core/read-content-cache.js.map +0 -1
  1000. package/dist/core/session-digest.d.ts +0 -57
  1001. package/dist/core/session-digest.d.ts.map +0 -1
  1002. package/dist/core/session-digest.js +0 -193
  1003. package/dist/core/session-digest.js.map +0 -1
  1004. package/dist/core/spec-kit/compiler.d.ts +0 -67
  1005. package/dist/core/spec-kit/compiler.d.ts.map +0 -1
  1006. package/dist/core/spec-kit/compiler.js +0 -268
  1007. package/dist/core/spec-kit/compiler.js.map +0 -1
  1008. package/dist/core/transaction-coordinator.d.ts +0 -30
  1009. package/dist/core/transaction-coordinator.d.ts.map +0 -1
  1010. package/dist/core/transaction-coordinator.js +0 -173
  1011. package/dist/core/transaction-coordinator.js.map +0 -1
  1012. package/dist/modes/interactive/components/mcp-selector.d.ts +0 -30
  1013. package/dist/modes/interactive/components/mcp-selector.d.ts.map +0 -1
  1014. package/dist/modes/interactive/components/mcp-selector.js +0 -155
  1015. package/dist/modes/interactive/components/mcp-selector.js.map +0 -1
  1016. package/dist/modes/interactive/components/model-selector-state.d.ts +0 -101
  1017. package/dist/modes/interactive/components/model-selector-state.d.ts.map +0 -1
  1018. package/dist/modes/interactive/components/model-selector-state.js +0 -261
  1019. package/dist/modes/interactive/components/model-selector-state.js.map +0 -1
  1020. package/dist/modes/interactive/components/skills-selector.d.ts +0 -32
  1021. package/dist/modes/interactive/components/skills-selector.d.ts.map +0 -1
  1022. package/dist/modes/interactive/components/skills-selector.js +0 -130
  1023. package/dist/modes/interactive/components/skills-selector.js.map +0 -1
  1024. package/dist/modes/interactive/theme/omk-blackboard.json +0 -91
  1025. package/dist/modes/interactive/theme/omk-freedom-grid.json +0 -91
  1026. package/dist/modes/interactive/theme/omk-neon-ops.json +0 -90
  1027. package/dist/modes/interactive/theme/omk-slate-light.json +0 -91
  1028. package/examples/extensions/doom-overlay/doom/doomgeneric_pi.c +0 -72
  1029. package/node_modules/@earendil-works/omk-agent-core/README.md +0 -488
  1030. package/node_modules/@earendil-works/omk-agent-core/dist/agent-loop.d.ts +0 -24
  1031. package/node_modules/@earendil-works/omk-agent-core/dist/agent-loop.d.ts.map +0 -1
  1032. package/node_modules/@earendil-works/omk-agent-core/dist/agent-loop.js +0 -553
  1033. package/node_modules/@earendil-works/omk-agent-core/dist/agent-loop.js.map +0 -1
  1034. package/node_modules/@earendil-works/omk-agent-core/dist/agent.d.ts +0 -118
  1035. package/node_modules/@earendil-works/omk-agent-core/dist/agent.d.ts.map +0 -1
  1036. package/node_modules/@earendil-works/omk-agent-core/dist/agent.js +0 -402
  1037. package/node_modules/@earendil-works/omk-agent-core/dist/agent.js.map +0 -1
  1038. package/node_modules/@earendil-works/omk-agent-core/dist/harness/agent-harness.d.ts +0 -95
  1039. package/node_modules/@earendil-works/omk-agent-core/dist/harness/agent-harness.d.ts.map +0 -1
  1040. package/node_modules/@earendil-works/omk-agent-core/dist/harness/agent-harness.js +0 -996
  1041. package/node_modules/@earendil-works/omk-agent-core/dist/harness/agent-harness.js.map +0 -1
  1042. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/branch-summarization.d.ts +0 -53
  1043. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/branch-summarization.d.ts.map +0 -1
  1044. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/branch-summarization.js +0 -175
  1045. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/branch-summarization.js.map +0 -1
  1046. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/compaction.d.ts +0 -117
  1047. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/compaction.d.ts.map +0 -1
  1048. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/compaction.js +0 -568
  1049. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/compaction.js.map +0 -1
  1050. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/utils.d.ts +0 -25
  1051. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/utils.d.ts.map +0 -1
  1052. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/utils.js +0 -131
  1053. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/utils.js.map +0 -1
  1054. package/node_modules/@earendil-works/omk-agent-core/dist/harness/env/nodejs.d.ts +0 -51
  1055. package/node_modules/@earendil-works/omk-agent-core/dist/harness/env/nodejs.d.ts.map +0 -1
  1056. package/node_modules/@earendil-works/omk-agent-core/dist/harness/env/nodejs.js +0 -510
  1057. package/node_modules/@earendil-works/omk-agent-core/dist/harness/env/nodejs.js.map +0 -1
  1058. package/node_modules/@earendil-works/omk-agent-core/dist/harness/messages.d.ts +0 -51
  1059. package/node_modules/@earendil-works/omk-agent-core/dist/harness/messages.d.ts.map +0 -1
  1060. package/node_modules/@earendil-works/omk-agent-core/dist/harness/messages.js +0 -102
  1061. package/node_modules/@earendil-works/omk-agent-core/dist/harness/messages.js.map +0 -1
  1062. package/node_modules/@earendil-works/omk-agent-core/dist/harness/prompt-templates.d.ts +0 -48
  1063. package/node_modules/@earendil-works/omk-agent-core/dist/harness/prompt-templates.d.ts.map +0 -1
  1064. package/node_modules/@earendil-works/omk-agent-core/dist/harness/prompt-templates.js +0 -230
  1065. package/node_modules/@earendil-works/omk-agent-core/dist/harness/prompt-templates.js.map +0 -1
  1066. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-repo.d.ts +0 -26
  1067. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-repo.d.ts.map +0 -1
  1068. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-repo.js +0 -101
  1069. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-repo.js.map +0 -1
  1070. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-storage.d.ts +0 -36
  1071. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-storage.d.ts.map +0 -1
  1072. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-storage.js +0 -273
  1073. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-storage.js.map +0 -1
  1074. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-repo.d.ts +0 -18
  1075. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-repo.d.ts.map +0 -1
  1076. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-repo.js +0 -42
  1077. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-repo.js.map +0 -1
  1078. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-storage.d.ts +0 -25
  1079. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-storage.d.ts.map +0 -1
  1080. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-storage.js +0 -114
  1081. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-storage.js.map +0 -1
  1082. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/repo-utils.d.ts +0 -11
  1083. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/repo-utils.d.ts.map +0 -1
  1084. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/repo-utils.js +0 -39
  1085. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/repo-utils.js.map +0 -1
  1086. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/session.d.ts +0 -33
  1087. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/session.d.ts.map +0 -1
  1088. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/session.js +0 -210
  1089. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/session.js.map +0 -1
  1090. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/uuid.d.ts +0 -2
  1091. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/uuid.d.ts.map +0 -1
  1092. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/uuid.js +0 -50
  1093. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/uuid.js.map +0 -1
  1094. package/node_modules/@earendil-works/omk-agent-core/dist/harness/skills.d.ts +0 -44
  1095. package/node_modules/@earendil-works/omk-agent-core/dist/harness/skills.d.ts.map +0 -1
  1096. package/node_modules/@earendil-works/omk-agent-core/dist/harness/skills.js +0 -311
  1097. package/node_modules/@earendil-works/omk-agent-core/dist/harness/skills.js.map +0 -1
  1098. package/node_modules/@earendil-works/omk-agent-core/dist/harness/system-prompt.d.ts +0 -3
  1099. package/node_modules/@earendil-works/omk-agent-core/dist/harness/system-prompt.d.ts.map +0 -1
  1100. package/node_modules/@earendil-works/omk-agent-core/dist/harness/system-prompt.js +0 -30
  1101. package/node_modules/@earendil-works/omk-agent-core/dist/harness/system-prompt.js.map +0 -1
  1102. package/node_modules/@earendil-works/omk-agent-core/dist/harness/types.d.ts +0 -616
  1103. package/node_modules/@earendil-works/omk-agent-core/dist/harness/types.d.ts.map +0 -1
  1104. package/node_modules/@earendil-works/omk-agent-core/dist/harness/types.js +0 -94
  1105. package/node_modules/@earendil-works/omk-agent-core/dist/harness/types.js.map +0 -1
  1106. package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/shell-output.d.ts +0 -14
  1107. package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/shell-output.d.ts.map +0 -1
  1108. package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/shell-output.js +0 -126
  1109. package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/shell-output.js.map +0 -1
  1110. package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/truncate.d.ts +0 -70
  1111. package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/truncate.d.ts.map +0 -1
  1112. package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/truncate.js +0 -297
  1113. package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/truncate.js.map +0 -1
  1114. package/node_modules/@earendil-works/omk-agent-core/dist/index.d.ts +0 -20
  1115. package/node_modules/@earendil-works/omk-agent-core/dist/index.d.ts.map +0 -1
  1116. package/node_modules/@earendil-works/omk-agent-core/dist/index.js +0 -25
  1117. package/node_modules/@earendil-works/omk-agent-core/dist/index.js.map +0 -1
  1118. package/node_modules/@earendil-works/omk-agent-core/dist/node.d.ts +0 -3
  1119. package/node_modules/@earendil-works/omk-agent-core/dist/node.d.ts.map +0 -1
  1120. package/node_modules/@earendil-works/omk-agent-core/dist/node.js +0 -3
  1121. package/node_modules/@earendil-works/omk-agent-core/dist/node.js.map +0 -1
  1122. package/node_modules/@earendil-works/omk-agent-core/dist/proxy.d.ts +0 -69
  1123. package/node_modules/@earendil-works/omk-agent-core/dist/proxy.d.ts.map +0 -1
  1124. package/node_modules/@earendil-works/omk-agent-core/dist/proxy.js +0 -278
  1125. package/node_modules/@earendil-works/omk-agent-core/dist/proxy.js.map +0 -1
  1126. package/node_modules/@earendil-works/omk-agent-core/dist/types.d.ts +0 -393
  1127. package/node_modules/@earendil-works/omk-agent-core/dist/types.d.ts.map +0 -1
  1128. package/node_modules/@earendil-works/omk-agent-core/dist/types.js +0 -2
  1129. package/node_modules/@earendil-works/omk-agent-core/dist/types.js.map +0 -1
  1130. package/node_modules/@earendil-works/omk-agent-core/package.json +0 -60
  1131. package/node_modules/@earendil-works/omk-ai/README.md +0 -1389
  1132. package/node_modules/@earendil-works/omk-ai/dist/api-registry.d.ts +0 -20
  1133. package/node_modules/@earendil-works/omk-ai/dist/api-registry.d.ts.map +0 -1
  1134. package/node_modules/@earendil-works/omk-ai/dist/api-registry.js +0 -44
  1135. package/node_modules/@earendil-works/omk-ai/dist/api-registry.js.map +0 -1
  1136. package/node_modules/@earendil-works/omk-ai/dist/bedrock-provider.d.ts +0 -5
  1137. package/node_modules/@earendil-works/omk-ai/dist/bedrock-provider.d.ts.map +0 -1
  1138. package/node_modules/@earendil-works/omk-ai/dist/bedrock-provider.js +0 -6
  1139. package/node_modules/@earendil-works/omk-ai/dist/bedrock-provider.js.map +0 -1
  1140. package/node_modules/@earendil-works/omk-ai/dist/cli.d.ts +0 -3
  1141. package/node_modules/@earendil-works/omk-ai/dist/cli.d.ts.map +0 -1
  1142. package/node_modules/@earendil-works/omk-ai/dist/cli.js +0 -130
  1143. package/node_modules/@earendil-works/omk-ai/dist/cli.js.map +0 -1
  1144. package/node_modules/@earendil-works/omk-ai/dist/env-api-keys.d.ts +0 -20
  1145. package/node_modules/@earendil-works/omk-ai/dist/env-api-keys.d.ts.map +0 -1
  1146. package/node_modules/@earendil-works/omk-ai/dist/env-api-keys.js +0 -199
  1147. package/node_modules/@earendil-works/omk-ai/dist/env-api-keys.js.map +0 -1
  1148. package/node_modules/@earendil-works/omk-ai/dist/image-models.d.ts +0 -10
  1149. package/node_modules/@earendil-works/omk-ai/dist/image-models.d.ts.map +0 -1
  1150. package/node_modules/@earendil-works/omk-ai/dist/image-models.generated.d.ts +0 -515
  1151. package/node_modules/@earendil-works/omk-ai/dist/image-models.generated.d.ts.map +0 -1
  1152. package/node_modules/@earendil-works/omk-ai/dist/image-models.generated.js +0 -517
  1153. package/node_modules/@earendil-works/omk-ai/dist/image-models.generated.js.map +0 -1
  1154. package/node_modules/@earendil-works/omk-ai/dist/image-models.js +0 -23
  1155. package/node_modules/@earendil-works/omk-ai/dist/image-models.js.map +0 -1
  1156. package/node_modules/@earendil-works/omk-ai/dist/images-api-registry.d.ts +0 -14
  1157. package/node_modules/@earendil-works/omk-ai/dist/images-api-registry.d.ts.map +0 -1
  1158. package/node_modules/@earendil-works/omk-ai/dist/images-api-registry.js +0 -22
  1159. package/node_modules/@earendil-works/omk-ai/dist/images-api-registry.js.map +0 -1
  1160. package/node_modules/@earendil-works/omk-ai/dist/images.d.ts +0 -4
  1161. package/node_modules/@earendil-works/omk-ai/dist/images.d.ts.map +0 -1
  1162. package/node_modules/@earendil-works/omk-ai/dist/images.js +0 -16
  1163. package/node_modules/@earendil-works/omk-ai/dist/images.js.map +0 -1
  1164. package/node_modules/@earendil-works/omk-ai/dist/index.d.ts +0 -33
  1165. package/node_modules/@earendil-works/omk-ai/dist/index.d.ts.map +0 -1
  1166. package/node_modules/@earendil-works/omk-ai/dist/index.js +0 -21
  1167. package/node_modules/@earendil-works/omk-ai/dist/index.js.map +0 -1
  1168. package/node_modules/@earendil-works/omk-ai/dist/models.d.ts +0 -18
  1169. package/node_modules/@earendil-works/omk-ai/dist/models.d.ts.map +0 -1
  1170. package/node_modules/@earendil-works/omk-ai/dist/models.generated.d.ts +0 -18762
  1171. package/node_modules/@earendil-works/omk-ai/dist/models.generated.d.ts.map +0 -1
  1172. package/node_modules/@earendil-works/omk-ai/dist/models.generated.js +0 -17197
  1173. package/node_modules/@earendil-works/omk-ai/dist/models.generated.js.map +0 -1
  1174. package/node_modules/@earendil-works/omk-ai/dist/models.js +0 -78
  1175. package/node_modules/@earendil-works/omk-ai/dist/models.js.map +0 -1
  1176. package/node_modules/@earendil-works/omk-ai/dist/oauth.d.ts +0 -2
  1177. package/node_modules/@earendil-works/omk-ai/dist/oauth.d.ts.map +0 -1
  1178. package/node_modules/@earendil-works/omk-ai/dist/oauth.js +0 -2
  1179. package/node_modules/@earendil-works/omk-ai/dist/oauth.js.map +0 -1
  1180. package/node_modules/@earendil-works/omk-ai/dist/provider-network.d.ts +0 -39
  1181. package/node_modules/@earendil-works/omk-ai/dist/provider-network.d.ts.map +0 -1
  1182. package/node_modules/@earendil-works/omk-ai/dist/provider-network.js +0 -170
  1183. package/node_modules/@earendil-works/omk-ai/dist/provider-network.js.map +0 -1
  1184. package/node_modules/@earendil-works/omk-ai/dist/providers/amazon-bedrock.d.ts +0 -38
  1185. package/node_modules/@earendil-works/omk-ai/dist/providers/amazon-bedrock.d.ts.map +0 -1
  1186. package/node_modules/@earendil-works/omk-ai/dist/providers/amazon-bedrock.js +0 -826
  1187. package/node_modules/@earendil-works/omk-ai/dist/providers/amazon-bedrock.js.map +0 -1
  1188. package/node_modules/@earendil-works/omk-ai/dist/providers/anthropic.d.ts +0 -77
  1189. package/node_modules/@earendil-works/omk-ai/dist/providers/anthropic.d.ts.map +0 -1
  1190. package/node_modules/@earendil-works/omk-ai/dist/providers/anthropic.js +0 -1123
  1191. package/node_modules/@earendil-works/omk-ai/dist/providers/anthropic.js.map +0 -1
  1192. package/node_modules/@earendil-works/omk-ai/dist/providers/azure-openai-responses.d.ts +0 -15
  1193. package/node_modules/@earendil-works/omk-ai/dist/providers/azure-openai-responses.d.ts.map +0 -1
  1194. package/node_modules/@earendil-works/omk-ai/dist/providers/azure-openai-responses.js +0 -221
  1195. package/node_modules/@earendil-works/omk-ai/dist/providers/azure-openai-responses.js.map +0 -1
  1196. package/node_modules/@earendil-works/omk-ai/dist/providers/cloudflare.d.ts +0 -13
  1197. package/node_modules/@earendil-works/omk-ai/dist/providers/cloudflare.d.ts.map +0 -1
  1198. package/node_modules/@earendil-works/omk-ai/dist/providers/cloudflare.js +0 -26
  1199. package/node_modules/@earendil-works/omk-ai/dist/providers/cloudflare.js.map +0 -1
  1200. package/node_modules/@earendil-works/omk-ai/dist/providers/faux.d.ts +0 -56
  1201. package/node_modules/@earendil-works/omk-ai/dist/providers/faux.d.ts.map +0 -1
  1202. package/node_modules/@earendil-works/omk-ai/dist/providers/faux.js +0 -368
  1203. package/node_modules/@earendil-works/omk-ai/dist/providers/faux.js.map +0 -1
  1204. package/node_modules/@earendil-works/omk-ai/dist/providers/github-copilot-headers.d.ts +0 -8
  1205. package/node_modules/@earendil-works/omk-ai/dist/providers/github-copilot-headers.d.ts.map +0 -1
  1206. package/node_modules/@earendil-works/omk-ai/dist/providers/github-copilot-headers.js +0 -29
  1207. package/node_modules/@earendil-works/omk-ai/dist/providers/github-copilot-headers.js.map +0 -1
  1208. package/node_modules/@earendil-works/omk-ai/dist/providers/google-shared.d.ts +0 -70
  1209. package/node_modules/@earendil-works/omk-ai/dist/providers/google-shared.d.ts.map +0 -1
  1210. package/node_modules/@earendil-works/omk-ai/dist/providers/google-shared.js +0 -331
  1211. package/node_modules/@earendil-works/omk-ai/dist/providers/google-shared.js.map +0 -1
  1212. package/node_modules/@earendil-works/omk-ai/dist/providers/google-vertex.d.ts +0 -15
  1213. package/node_modules/@earendil-works/omk-ai/dist/providers/google-vertex.d.ts.map +0 -1
  1214. package/node_modules/@earendil-works/omk-ai/dist/providers/google-vertex.js +0 -442
  1215. package/node_modules/@earendil-works/omk-ai/dist/providers/google-vertex.js.map +0 -1
  1216. package/node_modules/@earendil-works/omk-ai/dist/providers/google.d.ts +0 -13
  1217. package/node_modules/@earendil-works/omk-ai/dist/providers/google.d.ts.map +0 -1
  1218. package/node_modules/@earendil-works/omk-ai/dist/providers/google.js +0 -402
  1219. package/node_modules/@earendil-works/omk-ai/dist/providers/google.js.map +0 -1
  1220. package/node_modules/@earendil-works/omk-ai/dist/providers/images/openrouter.d.ts +0 -3
  1221. package/node_modules/@earendil-works/omk-ai/dist/providers/images/openrouter.d.ts.map +0 -1
  1222. package/node_modules/@earendil-works/omk-ai/dist/providers/images/openrouter.js +0 -128
  1223. package/node_modules/@earendil-works/omk-ai/dist/providers/images/openrouter.js.map +0 -1
  1224. package/node_modules/@earendil-works/omk-ai/dist/providers/images/register-builtins.d.ts +0 -4
  1225. package/node_modules/@earendil-works/omk-ai/dist/providers/images/register-builtins.d.ts.map +0 -1
  1226. package/node_modules/@earendil-works/omk-ai/dist/providers/images/register-builtins.js +0 -34
  1227. package/node_modules/@earendil-works/omk-ai/dist/providers/images/register-builtins.js.map +0 -1
  1228. package/node_modules/@earendil-works/omk-ai/dist/providers/mistral.d.ts +0 -25
  1229. package/node_modules/@earendil-works/omk-ai/dist/providers/mistral.d.ts.map +0 -1
  1230. package/node_modules/@earendil-works/omk-ai/dist/providers/mistral.js +0 -534
  1231. package/node_modules/@earendil-works/omk-ai/dist/providers/mistral.js.map +0 -1
  1232. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-codex-responses.d.ts +0 -30
  1233. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-codex-responses.d.ts.map +0 -1
  1234. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-codex-responses.js +0 -1171
  1235. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-codex-responses.js.map +0 -1
  1236. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-completions.d.ts +0 -19
  1237. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-completions.d.ts.map +0 -1
  1238. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-completions.js +0 -977
  1239. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-completions.js.map +0 -1
  1240. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-prompt-cache.d.ts +0 -11
  1241. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-prompt-cache.d.ts.map +0 -1
  1242. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-prompt-cache.js +0 -22
  1243. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-prompt-cache.js.map +0 -1
  1244. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses-shared.d.ts +0 -18
  1245. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses-shared.d.ts.map +0 -1
  1246. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses-shared.js +0 -496
  1247. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses-shared.js.map +0 -1
  1248. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses.d.ts +0 -13
  1249. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses.d.ts.map +0 -1
  1250. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses.js +0 -233
  1251. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses.js.map +0 -1
  1252. package/node_modules/@earendil-works/omk-ai/dist/providers/register-builtins.d.ts +0 -35
  1253. package/node_modules/@earendil-works/omk-ai/dist/providers/register-builtins.d.ts.map +0 -1
  1254. package/node_modules/@earendil-works/omk-ai/dist/providers/register-builtins.js +0 -254
  1255. package/node_modules/@earendil-works/omk-ai/dist/providers/register-builtins.js.map +0 -1
  1256. package/node_modules/@earendil-works/omk-ai/dist/providers/simple-options.d.ts +0 -8
  1257. package/node_modules/@earendil-works/omk-ai/dist/providers/simple-options.d.ts.map +0 -1
  1258. package/node_modules/@earendil-works/omk-ai/dist/providers/simple-options.js +0 -42
  1259. package/node_modules/@earendil-works/omk-ai/dist/providers/simple-options.js.map +0 -1
  1260. package/node_modules/@earendil-works/omk-ai/dist/providers/tool-schema.d.ts +0 -13
  1261. package/node_modules/@earendil-works/omk-ai/dist/providers/tool-schema.d.ts.map +0 -1
  1262. package/node_modules/@earendil-works/omk-ai/dist/providers/tool-schema.js +0 -82
  1263. package/node_modules/@earendil-works/omk-ai/dist/providers/tool-schema.js.map +0 -1
  1264. package/node_modules/@earendil-works/omk-ai/dist/providers/transform-messages.d.ts +0 -8
  1265. package/node_modules/@earendil-works/omk-ai/dist/providers/transform-messages.d.ts.map +0 -1
  1266. package/node_modules/@earendil-works/omk-ai/dist/providers/transform-messages.js +0 -184
  1267. package/node_modules/@earendil-works/omk-ai/dist/providers/transform-messages.js.map +0 -1
  1268. package/node_modules/@earendil-works/omk-ai/dist/session-resources.d.ts +0 -4
  1269. package/node_modules/@earendil-works/omk-ai/dist/session-resources.d.ts.map +0 -1
  1270. package/node_modules/@earendil-works/omk-ai/dist/session-resources.js +0 -22
  1271. package/node_modules/@earendil-works/omk-ai/dist/session-resources.js.map +0 -1
  1272. package/node_modules/@earendil-works/omk-ai/dist/stream.d.ts +0 -8
  1273. package/node_modules/@earendil-works/omk-ai/dist/stream.d.ts.map +0 -1
  1274. package/node_modules/@earendil-works/omk-ai/dist/stream.js +0 -77
  1275. package/node_modules/@earendil-works/omk-ai/dist/stream.js.map +0 -1
  1276. package/node_modules/@earendil-works/omk-ai/dist/types.d.ts +0 -570
  1277. package/node_modules/@earendil-works/omk-ai/dist/types.d.ts.map +0 -1
  1278. package/node_modules/@earendil-works/omk-ai/dist/types.js +0 -2
  1279. package/node_modules/@earendil-works/omk-ai/dist/types.js.map +0 -1
  1280. package/node_modules/@earendil-works/omk-ai/dist/utils/abort-signals.d.ts +0 -6
  1281. package/node_modules/@earendil-works/omk-ai/dist/utils/abort-signals.d.ts.map +0 -1
  1282. package/node_modules/@earendil-works/omk-ai/dist/utils/abort-signals.js +0 -34
  1283. package/node_modules/@earendil-works/omk-ai/dist/utils/abort-signals.js.map +0 -1
  1284. package/node_modules/@earendil-works/omk-ai/dist/utils/diagnostics.d.ts +0 -19
  1285. package/node_modules/@earendil-works/omk-ai/dist/utils/diagnostics.d.ts.map +0 -1
  1286. package/node_modules/@earendil-works/omk-ai/dist/utils/diagnostics.js +0 -25
  1287. package/node_modules/@earendil-works/omk-ai/dist/utils/diagnostics.js.map +0 -1
  1288. package/node_modules/@earendil-works/omk-ai/dist/utils/event-stream.d.ts +0 -21
  1289. package/node_modules/@earendil-works/omk-ai/dist/utils/event-stream.d.ts.map +0 -1
  1290. package/node_modules/@earendil-works/omk-ai/dist/utils/event-stream.js +0 -81
  1291. package/node_modules/@earendil-works/omk-ai/dist/utils/event-stream.js.map +0 -1
  1292. package/node_modules/@earendil-works/omk-ai/dist/utils/hash.d.ts +0 -3
  1293. package/node_modules/@earendil-works/omk-ai/dist/utils/hash.d.ts.map +0 -1
  1294. package/node_modules/@earendil-works/omk-ai/dist/utils/hash.js +0 -14
  1295. package/node_modules/@earendil-works/omk-ai/dist/utils/hash.js.map +0 -1
  1296. package/node_modules/@earendil-works/omk-ai/dist/utils/headers.d.ts +0 -2
  1297. package/node_modules/@earendil-works/omk-ai/dist/utils/headers.d.ts.map +0 -1
  1298. package/node_modules/@earendil-works/omk-ai/dist/utils/headers.js +0 -8
  1299. package/node_modules/@earendil-works/omk-ai/dist/utils/headers.js.map +0 -1
  1300. package/node_modules/@earendil-works/omk-ai/dist/utils/json-parse.d.ts +0 -16
  1301. package/node_modules/@earendil-works/omk-ai/dist/utils/json-parse.d.ts.map +0 -1
  1302. package/node_modules/@earendil-works/omk-ai/dist/utils/json-parse.js +0 -113
  1303. package/node_modules/@earendil-works/omk-ai/dist/utils/json-parse.js.map +0 -1
  1304. package/node_modules/@earendil-works/omk-ai/dist/utils/node-http-proxy.d.ts +0 -10
  1305. package/node_modules/@earendil-works/omk-ai/dist/utils/node-http-proxy.d.ts.map +0 -1
  1306. package/node_modules/@earendil-works/omk-ai/dist/utils/node-http-proxy.js +0 -97
  1307. package/node_modules/@earendil-works/omk-ai/dist/utils/node-http-proxy.js.map +0 -1
  1308. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/anthropic.d.ts +0 -25
  1309. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/anthropic.d.ts.map +0 -1
  1310. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/anthropic.js +0 -335
  1311. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/anthropic.js.map +0 -1
  1312. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/device-code.d.ts +0 -21
  1313. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/device-code.d.ts.map +0 -1
  1314. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/device-code.js +0 -56
  1315. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/device-code.js.map +0 -1
  1316. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/github-copilot.d.ts +0 -30
  1317. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/github-copilot.d.ts.map +0 -1
  1318. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/github-copilot.js +0 -280
  1319. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/github-copilot.js.map +0 -1
  1320. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/index.d.ts +0 -58
  1321. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/index.d.ts.map +0 -1
  1322. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/index.js +0 -122
  1323. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/index.js.map +0 -1
  1324. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/oauth-page.d.ts +0 -3
  1325. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/oauth-page.d.ts.map +0 -1
  1326. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/oauth-page.js +0 -105
  1327. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/oauth-page.js.map +0 -1
  1328. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/openai-codex.d.ts +0 -43
  1329. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/openai-codex.d.ts.map +0 -1
  1330. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/openai-codex.js +0 -487
  1331. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/openai-codex.js.map +0 -1
  1332. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/pkce.d.ts +0 -13
  1333. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/pkce.d.ts.map +0 -1
  1334. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/pkce.js +0 -31
  1335. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/pkce.js.map +0 -1
  1336. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/types.d.ts +0 -64
  1337. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/types.d.ts.map +0 -1
  1338. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/types.js +0 -2
  1339. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/types.js.map +0 -1
  1340. package/node_modules/@earendil-works/omk-ai/dist/utils/overflow.d.ts +0 -57
  1341. package/node_modules/@earendil-works/omk-ai/dist/utils/overflow.d.ts.map +0 -1
  1342. package/node_modules/@earendil-works/omk-ai/dist/utils/overflow.js +0 -154
  1343. package/node_modules/@earendil-works/omk-ai/dist/utils/overflow.js.map +0 -1
  1344. package/node_modules/@earendil-works/omk-ai/dist/utils/sanitize-unicode.d.ts +0 -22
  1345. package/node_modules/@earendil-works/omk-ai/dist/utils/sanitize-unicode.d.ts.map +0 -1
  1346. package/node_modules/@earendil-works/omk-ai/dist/utils/sanitize-unicode.js +0 -26
  1347. package/node_modules/@earendil-works/omk-ai/dist/utils/sanitize-unicode.js.map +0 -1
  1348. package/node_modules/@earendil-works/omk-ai/dist/utils/typebox-helpers.d.ts +0 -17
  1349. package/node_modules/@earendil-works/omk-ai/dist/utils/typebox-helpers.d.ts.map +0 -1
  1350. package/node_modules/@earendil-works/omk-ai/dist/utils/typebox-helpers.js +0 -21
  1351. package/node_modules/@earendil-works/omk-ai/dist/utils/typebox-helpers.js.map +0 -1
  1352. package/node_modules/@earendil-works/omk-ai/dist/utils/validation.d.ts +0 -18
  1353. package/node_modules/@earendil-works/omk-ai/dist/utils/validation.d.ts.map +0 -1
  1354. package/node_modules/@earendil-works/omk-ai/dist/utils/validation.js +0 -281
  1355. package/node_modules/@earendil-works/omk-ai/dist/utils/validation.js.map +0 -1
  1356. package/node_modules/@earendil-works/omk-ai/package.json +0 -106
  1357. package/node_modules/@earendil-works/omk-tui/README.md +0 -791
  1358. package/node_modules/@earendil-works/omk-tui/dist/autocomplete.d.ts +0 -54
  1359. package/node_modules/@earendil-works/omk-tui/dist/autocomplete.d.ts.map +0 -1
  1360. package/node_modules/@earendil-works/omk-tui/dist/autocomplete.js +0 -632
  1361. package/node_modules/@earendil-works/omk-tui/dist/autocomplete.js.map +0 -1
  1362. package/node_modules/@earendil-works/omk-tui/dist/components/box.d.ts +0 -22
  1363. package/node_modules/@earendil-works/omk-tui/dist/components/box.d.ts.map +0 -1
  1364. package/node_modules/@earendil-works/omk-tui/dist/components/box.js +0 -104
  1365. package/node_modules/@earendil-works/omk-tui/dist/components/box.js.map +0 -1
  1366. package/node_modules/@earendil-works/omk-tui/dist/components/cancellable-loader.d.ts +0 -22
  1367. package/node_modules/@earendil-works/omk-tui/dist/components/cancellable-loader.d.ts.map +0 -1
  1368. package/node_modules/@earendil-works/omk-tui/dist/components/cancellable-loader.js +0 -35
  1369. package/node_modules/@earendil-works/omk-tui/dist/components/cancellable-loader.js.map +0 -1
  1370. package/node_modules/@earendil-works/omk-tui/dist/components/editor.d.ts +0 -249
  1371. package/node_modules/@earendil-works/omk-tui/dist/components/editor.d.ts.map +0 -1
  1372. package/node_modules/@earendil-works/omk-tui/dist/components/editor.js +0 -1857
  1373. package/node_modules/@earendil-works/omk-tui/dist/components/editor.js.map +0 -1
  1374. package/node_modules/@earendil-works/omk-tui/dist/components/image.d.ts +0 -28
  1375. package/node_modules/@earendil-works/omk-tui/dist/components/image.d.ts.map +0 -1
  1376. package/node_modules/@earendil-works/omk-tui/dist/components/image.js +0 -89
  1377. package/node_modules/@earendil-works/omk-tui/dist/components/image.js.map +0 -1
  1378. package/node_modules/@earendil-works/omk-tui/dist/components/input.d.ts +0 -37
  1379. package/node_modules/@earendil-works/omk-tui/dist/components/input.d.ts.map +0 -1
  1380. package/node_modules/@earendil-works/omk-tui/dist/components/input.js +0 -378
  1381. package/node_modules/@earendil-works/omk-tui/dist/components/input.js.map +0 -1
  1382. package/node_modules/@earendil-works/omk-tui/dist/components/loader.d.ts +0 -31
  1383. package/node_modules/@earendil-works/omk-tui/dist/components/loader.d.ts.map +0 -1
  1384. package/node_modules/@earendil-works/omk-tui/dist/components/loader.js +0 -69
  1385. package/node_modules/@earendil-works/omk-tui/dist/components/loader.js.map +0 -1
  1386. package/node_modules/@earendil-works/omk-tui/dist/components/markdown.d.ts +0 -96
  1387. package/node_modules/@earendil-works/omk-tui/dist/components/markdown.d.ts.map +0 -1
  1388. package/node_modules/@earendil-works/omk-tui/dist/components/markdown.js +0 -644
  1389. package/node_modules/@earendil-works/omk-tui/dist/components/markdown.js.map +0 -1
  1390. package/node_modules/@earendil-works/omk-tui/dist/components/select-list.d.ts +0 -50
  1391. package/node_modules/@earendil-works/omk-tui/dist/components/select-list.d.ts.map +0 -1
  1392. package/node_modules/@earendil-works/omk-tui/dist/components/select-list.js +0 -159
  1393. package/node_modules/@earendil-works/omk-tui/dist/components/select-list.js.map +0 -1
  1394. package/node_modules/@earendil-works/omk-tui/dist/components/settings-list.d.ts +0 -50
  1395. package/node_modules/@earendil-works/omk-tui/dist/components/settings-list.d.ts.map +0 -1
  1396. package/node_modules/@earendil-works/omk-tui/dist/components/settings-list.js +0 -185
  1397. package/node_modules/@earendil-works/omk-tui/dist/components/settings-list.js.map +0 -1
  1398. package/node_modules/@earendil-works/omk-tui/dist/components/spacer.d.ts +0 -12
  1399. package/node_modules/@earendil-works/omk-tui/dist/components/spacer.d.ts.map +0 -1
  1400. package/node_modules/@earendil-works/omk-tui/dist/components/spacer.js +0 -23
  1401. package/node_modules/@earendil-works/omk-tui/dist/components/spacer.js.map +0 -1
  1402. package/node_modules/@earendil-works/omk-tui/dist/components/text.d.ts +0 -19
  1403. package/node_modules/@earendil-works/omk-tui/dist/components/text.d.ts.map +0 -1
  1404. package/node_modules/@earendil-works/omk-tui/dist/components/text.js +0 -89
  1405. package/node_modules/@earendil-works/omk-tui/dist/components/text.js.map +0 -1
  1406. package/node_modules/@earendil-works/omk-tui/dist/components/truncated-text.d.ts +0 -13
  1407. package/node_modules/@earendil-works/omk-tui/dist/components/truncated-text.d.ts.map +0 -1
  1408. package/node_modules/@earendil-works/omk-tui/dist/components/truncated-text.js +0 -51
  1409. package/node_modules/@earendil-works/omk-tui/dist/components/truncated-text.js.map +0 -1
  1410. package/node_modules/@earendil-works/omk-tui/dist/editor-component.d.ts +0 -39
  1411. package/node_modules/@earendil-works/omk-tui/dist/editor-component.d.ts.map +0 -1
  1412. package/node_modules/@earendil-works/omk-tui/dist/editor-component.js +0 -2
  1413. package/node_modules/@earendil-works/omk-tui/dist/editor-component.js.map +0 -1
  1414. package/node_modules/@earendil-works/omk-tui/dist/fuzzy.d.ts +0 -16
  1415. package/node_modules/@earendil-works/omk-tui/dist/fuzzy.d.ts.map +0 -1
  1416. package/node_modules/@earendil-works/omk-tui/dist/fuzzy.js +0 -110
  1417. package/node_modules/@earendil-works/omk-tui/dist/fuzzy.js.map +0 -1
  1418. package/node_modules/@earendil-works/omk-tui/dist/index.d.ts +0 -23
  1419. package/node_modules/@earendil-works/omk-tui/dist/index.d.ts.map +0 -1
  1420. package/node_modules/@earendil-works/omk-tui/dist/index.js +0 -32
  1421. package/node_modules/@earendil-works/omk-tui/dist/index.js.map +0 -1
  1422. package/node_modules/@earendil-works/omk-tui/dist/keybindings.d.ts +0 -212
  1423. package/node_modules/@earendil-works/omk-tui/dist/keybindings.d.ts.map +0 -1
  1424. package/node_modules/@earendil-works/omk-tui/dist/keybindings.js +0 -252
  1425. package/node_modules/@earendil-works/omk-tui/dist/keybindings.js.map +0 -1
  1426. package/node_modules/@earendil-works/omk-tui/dist/keys.d.ts +0 -184
  1427. package/node_modules/@earendil-works/omk-tui/dist/keys.d.ts.map +0 -1
  1428. package/node_modules/@earendil-works/omk-tui/dist/keys.js +0 -1173
  1429. package/node_modules/@earendil-works/omk-tui/dist/keys.js.map +0 -1
  1430. package/node_modules/@earendil-works/omk-tui/dist/kill-ring.d.ts +0 -28
  1431. package/node_modules/@earendil-works/omk-tui/dist/kill-ring.d.ts.map +0 -1
  1432. package/node_modules/@earendil-works/omk-tui/dist/kill-ring.js +0 -44
  1433. package/node_modules/@earendil-works/omk-tui/dist/kill-ring.js.map +0 -1
  1434. package/node_modules/@earendil-works/omk-tui/dist/native-modifiers.d.ts +0 -3
  1435. package/node_modules/@earendil-works/omk-tui/dist/native-modifiers.d.ts.map +0 -1
  1436. package/node_modules/@earendil-works/omk-tui/dist/native-modifiers.js +0 -53
  1437. package/node_modules/@earendil-works/omk-tui/dist/native-modifiers.js.map +0 -1
  1438. package/node_modules/@earendil-works/omk-tui/dist/stdin-buffer.d.ts +0 -50
  1439. package/node_modules/@earendil-works/omk-tui/dist/stdin-buffer.d.ts.map +0 -1
  1440. package/node_modules/@earendil-works/omk-tui/dist/stdin-buffer.js +0 -361
  1441. package/node_modules/@earendil-works/omk-tui/dist/stdin-buffer.js.map +0 -1
  1442. package/node_modules/@earendil-works/omk-tui/dist/terminal-image.d.ts +0 -90
  1443. package/node_modules/@earendil-works/omk-tui/dist/terminal-image.d.ts.map +0 -1
  1444. package/node_modules/@earendil-works/omk-tui/dist/terminal-image.js +0 -366
  1445. package/node_modules/@earendil-works/omk-tui/dist/terminal-image.js.map +0 -1
  1446. package/node_modules/@earendil-works/omk-tui/dist/terminal.d.ts +0 -113
  1447. package/node_modules/@earendil-works/omk-tui/dist/terminal.d.ts.map +0 -1
  1448. package/node_modules/@earendil-works/omk-tui/dist/terminal.js +0 -472
  1449. package/node_modules/@earendil-works/omk-tui/dist/terminal.js.map +0 -1
  1450. package/node_modules/@earendil-works/omk-tui/dist/tui.d.ts +0 -242
  1451. package/node_modules/@earendil-works/omk-tui/dist/tui.d.ts.map +0 -1
  1452. package/node_modules/@earendil-works/omk-tui/dist/tui.js +0 -1221
  1453. package/node_modules/@earendil-works/omk-tui/dist/tui.js.map +0 -1
  1454. package/node_modules/@earendil-works/omk-tui/dist/undo-stack.d.ts +0 -17
  1455. package/node_modules/@earendil-works/omk-tui/dist/undo-stack.d.ts.map +0 -1
  1456. package/node_modules/@earendil-works/omk-tui/dist/undo-stack.js +0 -25
  1457. package/node_modules/@earendil-works/omk-tui/dist/undo-stack.js.map +0 -1
  1458. package/node_modules/@earendil-works/omk-tui/dist/utils.d.ts +0 -84
  1459. package/node_modules/@earendil-works/omk-tui/dist/utils.d.ts.map +0 -1
  1460. package/node_modules/@earendil-works/omk-tui/dist/utils.js +0 -1032
  1461. package/node_modules/@earendil-works/omk-tui/dist/utils.js.map +0 -1
  1462. package/node_modules/@earendil-works/omk-tui/dist/word-navigation.d.ts +0 -25
  1463. package/node_modules/@earendil-works/omk-tui/dist/word-navigation.d.ts.map +0 -1
  1464. package/node_modules/@earendil-works/omk-tui/dist/word-navigation.js +0 -96
  1465. package/node_modules/@earendil-works/omk-tui/dist/word-navigation.js.map +0 -1
  1466. package/node_modules/@earendil-works/omk-tui/native/darwin/prebuilds/darwin-arm64/darwin-modifiers.node +0 -0
  1467. package/node_modules/@earendil-works/omk-tui/native/darwin/prebuilds/darwin-x64/darwin-modifiers.node +0 -0
  1468. package/node_modules/@earendil-works/omk-tui/native/win32/prebuilds/win32-arm64/win32-console-mode.node +0 -0
  1469. package/node_modules/@earendil-works/omk-tui/native/win32/prebuilds/win32-x64/win32-console-mode.node +0 -0
  1470. package/node_modules/@earendil-works/omk-tui/package.json +0 -47
@@ -1 +1 @@
1
- {"version":3,"file":"model-resolver.js","sourceRoot":"","sources":["../../src/core/model-resolver.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Model resolution, scoping, and initial selection\n */\n\nimport type { ThinkingLevel } from \"@earendil-works/omk-agent-core\";\nimport { type Api, type KnownProvider, type Model, modelsAreEqual } from \"@earendil-works/omk-ai\";\nimport chalk from \"chalk\";\nimport { minimatch } from \"minimatch\";\nimport { isValidThinkingLevel } from \"../cli/args.ts\";\nimport { DEFAULT_THINKING_LEVEL } from \"./defaults.ts\";\nimport type { ModelRegistry } from \"./model-registry.ts\";\n\n/** Default model IDs for each known provider */\nexport const defaultModelPerProvider: Record<KnownProvider, string> = {\n\t\"amazon-bedrock\": \"us.anthropic.claude-opus-4-6-v1\",\n\t\"ant-ling\": \"Ring-2.6-1T\",\n\tanthropic: \"claude-opus-4-8\",\n\topenai: \"gpt-5.4\",\n\t\"azure-openai-responses\": \"gpt-5.4\",\n\t\"openai-codex\": \"gpt-5.5\",\n\tnvidia: \"nvidia/nemotron-3-super-120b-a12b\",\n\tdeepseek: \"deepseek-v4-pro\",\n\tgoogle: \"gemini-3.1-pro-preview\",\n\t\"google-vertex\": \"gemini-3.1-pro-preview\",\n\t\"github-copilot\": \"gpt-5.4\",\n\topenrouter: \"moonshotai/kimi-k2.6\",\n\t\"vercel-ai-gateway\": \"zai/glm-5.1\",\n\txai: \"grok-4.20-0309-reasoning\",\n\tgroq: \"openai/gpt-oss-120b\",\n\tcerebras: \"zai-glm-4.7\",\n\tzai: \"glm-5.1\",\n\t\"zai-coding-cn\": \"glm-5.1\",\n\tmistral: \"devstral-medium-latest\",\n\tminimax: \"MiniMax-M2.7\",\n\t\"minimax-cn\": \"MiniMax-M2.7\",\n\tmoonshotai: \"kimi-k2.6\",\n\t\"moonshotai-cn\": \"kimi-k2.6\",\n\thuggingface: \"moonshotai/Kimi-K2.6\",\n\tfireworks: \"accounts/fireworks/models/kimi-k2p6\",\n\ttogether: \"moonshotai/Kimi-K2.6\",\n\topencode: \"kimi-k2.6\",\n\t\"opencode-go\": \"kimi-k2.6\",\n\t\"kimi-coding\": \"kimi-for-coding\",\n\tduckcoding: \"claude-fable-5\",\n\t\"cloudflare-workers-ai\": \"@cf/moonshotai/kimi-k2.6\",\n\t\"cloudflare-ai-gateway\": \"workers-ai/@cf/moonshotai/kimi-k2.6\",\n\txiaomi: \"mimo-v2.5-pro\",\n\t\"xiaomi-token-plan-cn\": \"mimo-v2.5-pro\",\n\t\"xiaomi-token-plan-ams\": \"mimo-v2.5-pro\",\n\t\"xiaomi-token-plan-sgp\": \"mimo-v2.5-pro\",\n};\n\nexport interface ScopedModel {\n\tmodel: Model<Api>;\n\t/** Thinking level if explicitly specified in pattern (e.g., \"model:high\"), undefined otherwise */\n\tthinkingLevel?: ThinkingLevel;\n}\n\n/**\n * Helper to check if a model ID looks like an alias (no date suffix)\n * Dates are typically in format: -20241022 or -20250929\n */\nfunction isAlias(id: string): boolean {\n\t// Check if ID ends with -latest\n\tif (id.endsWith(\"-latest\")) return true;\n\n\t// Check if ID ends with a date pattern (-YYYYMMDD)\n\tconst datePattern = /-\\d{8}$/;\n\treturn !datePattern.test(id);\n}\n\n/**\n * Find an exact model reference match.\n * Supports either a bare model id or a canonical provider/modelId reference.\n * When matching by bare id, ambiguous matches across providers are rejected.\n */\nexport function findExactModelReferenceMatch(\n\tmodelReference: string,\n\tavailableModels: Model<Api>[],\n): Model<Api> | undefined {\n\tconst trimmedReference = modelReference.trim();\n\tif (!trimmedReference) {\n\t\treturn undefined;\n\t}\n\n\tconst normalizedReference = trimmedReference.toLowerCase();\n\n\tconst canonicalMatches = availableModels.filter(\n\t\t(model) => `${model.provider}/${model.id}`.toLowerCase() === normalizedReference,\n\t);\n\tif (canonicalMatches.length === 1) {\n\t\treturn canonicalMatches[0];\n\t}\n\tif (canonicalMatches.length > 1) {\n\t\treturn undefined;\n\t}\n\n\tconst slashIndex = trimmedReference.indexOf(\"/\");\n\tif (slashIndex !== -1) {\n\t\tconst provider = trimmedReference.substring(0, slashIndex).trim();\n\t\tconst modelId = trimmedReference.substring(slashIndex + 1).trim();\n\t\tif (provider && modelId) {\n\t\t\tconst providerMatches = availableModels.filter(\n\t\t\t\t(model) =>\n\t\t\t\t\tmodel.provider.toLowerCase() === provider.toLowerCase() &&\n\t\t\t\t\tmodel.id.toLowerCase() === modelId.toLowerCase(),\n\t\t\t);\n\t\t\tif (providerMatches.length === 1) {\n\t\t\t\treturn providerMatches[0];\n\t\t\t}\n\t\t\tif (providerMatches.length > 1) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t}\n\t}\n\n\tconst idMatches = availableModels.filter((model) => model.id.toLowerCase() === normalizedReference);\n\treturn idMatches.length === 1 ? idMatches[0] : undefined;\n}\n\n/**\n * Try to match a pattern to a model from the available models list.\n * Returns the matched model or undefined if no match found.\n */\nfunction tryMatchModel(modelPattern: string, availableModels: Model<Api>[]): Model<Api> | undefined {\n\tconst exactMatch = findExactModelReferenceMatch(modelPattern, availableModels);\n\tif (exactMatch) {\n\t\treturn exactMatch;\n\t}\n\n\t// No exact match - fall back to partial matching\n\tconst matches = availableModels.filter(\n\t\t(m) =>\n\t\t\tm.id.toLowerCase().includes(modelPattern.toLowerCase()) ||\n\t\t\tm.name?.toLowerCase().includes(modelPattern.toLowerCase()),\n\t);\n\n\tif (matches.length === 0) {\n\t\treturn undefined;\n\t}\n\n\t// Separate into aliases and dated versions\n\tconst aliases = matches.filter((m) => isAlias(m.id));\n\tconst datedVersions = matches.filter((m) => !isAlias(m.id));\n\n\tif (aliases.length > 0) {\n\t\t// Prefer alias - if multiple aliases, pick the one that sorts highest\n\t\taliases.sort((a, b) => b.id.localeCompare(a.id));\n\t\treturn aliases[0];\n\t} else {\n\t\t// No alias found, pick latest dated version\n\t\tdatedVersions.sort((a, b) => b.id.localeCompare(a.id));\n\t\treturn datedVersions[0];\n\t}\n}\n\nexport interface ParsedModelResult {\n\tmodel: Model<Api> | undefined;\n\t/** Thinking level if explicitly specified in pattern, undefined otherwise */\n\tthinkingLevel?: ThinkingLevel;\n\twarning: string | undefined;\n}\n\nfunction buildFallbackModel(provider: string, modelId: string, availableModels: Model<Api>[]): Model<Api> | undefined {\n\tconst providerModels = availableModels.filter((m) => m.provider === provider);\n\tif (providerModels.length === 0) return undefined;\n\n\tconst defaultId = defaultModelPerProvider[provider as KnownProvider];\n\tconst baseModel = defaultId\n\t\t? (providerModels.find((m) => m.id === defaultId) ?? providerModels[0])\n\t\t: providerModels[0];\n\n\treturn {\n\t\t...baseModel,\n\t\tid: modelId,\n\t\tname: modelId,\n\t};\n}\n\n/**\n * Parse a pattern to extract model and thinking level.\n * Handles models with colons in their IDs (e.g., OpenRouter's :exacto suffix).\n *\n * Algorithm:\n * 1. Try to match full pattern as a model\n * 2. If found, return it with \"off\" thinking level\n * 3. If not found and has colons, split on last colon:\n * - If suffix is valid thinking level, use it and recurse on prefix\n * - If suffix is invalid, warn and recurse on prefix with \"off\"\n *\n * @internal Exported for testing\n */\nexport function parseModelPattern(\n\tpattern: string,\n\tavailableModels: Model<Api>[],\n\toptions?: { allowInvalidThinkingLevelFallback?: boolean },\n): ParsedModelResult {\n\t// Try exact match first\n\tconst exactMatch = tryMatchModel(pattern, availableModels);\n\tif (exactMatch) {\n\t\treturn { model: exactMatch, thinkingLevel: undefined, warning: undefined };\n\t}\n\n\t// No match - try splitting on last colon if present\n\tconst lastColonIndex = pattern.lastIndexOf(\":\");\n\tif (lastColonIndex === -1) {\n\t\t// No colons, pattern simply doesn't match any model\n\t\treturn { model: undefined, thinkingLevel: undefined, warning: undefined };\n\t}\n\n\tconst prefix = pattern.substring(0, lastColonIndex);\n\tconst suffix = pattern.substring(lastColonIndex + 1);\n\n\tif (isValidThinkingLevel(suffix)) {\n\t\t// Valid thinking level - recurse on prefix and use this level\n\t\tconst result = parseModelPattern(prefix, availableModels, options);\n\t\tif (result.model) {\n\t\t\t// Only use this thinking level if no warning from inner recursion\n\t\t\treturn {\n\t\t\t\tmodel: result.model,\n\t\t\t\tthinkingLevel: result.warning ? undefined : suffix,\n\t\t\t\twarning: result.warning,\n\t\t\t};\n\t\t}\n\t\treturn result;\n\t} else {\n\t\t// Invalid suffix\n\t\tconst allowFallback = options?.allowInvalidThinkingLevelFallback ?? true;\n\t\tif (!allowFallback) {\n\t\t\t// In strict mode (CLI --model parsing), treat it as part of the model id and fail.\n\t\t\t// This avoids accidentally resolving to a different model.\n\t\t\treturn { model: undefined, thinkingLevel: undefined, warning: undefined };\n\t\t}\n\n\t\t// Scope mode: recurse on prefix and warn\n\t\tconst result = parseModelPattern(prefix, availableModels, options);\n\t\tif (result.model) {\n\t\t\treturn {\n\t\t\t\tmodel: result.model,\n\t\t\t\tthinkingLevel: undefined,\n\t\t\t\twarning: `Invalid thinking level \"${suffix}\" in pattern \"${pattern}\". Using default instead.`,\n\t\t\t};\n\t\t}\n\t\treturn result;\n\t}\n}\n\n/**\n * Resolve model patterns to actual Model objects with optional thinking levels\n * Format: \"pattern:level\" where :level is optional\n * For each pattern, finds all matching models and picks the best version:\n * 1. Prefer alias (e.g., claude-sonnet-4-5) over dated versions (claude-sonnet-4-5-20250929)\n * 2. If no alias, pick the latest dated version\n *\n * Supports models with colons in their IDs (e.g., OpenRouter's model:exacto).\n * The algorithm tries to match the full pattern first, then progressively\n * strips colon-suffixes to find a match.\n */\nexport async function resolveModelScope(patterns: string[], modelRegistry: ModelRegistry): Promise<ScopedModel[]> {\n\tconst availableModels = await modelRegistry.getAvailable();\n\tconst scopedModels: ScopedModel[] = [];\n\n\tfor (const pattern of patterns) {\n\t\t// Check if pattern contains glob characters\n\t\tif (pattern.includes(\"*\") || pattern.includes(\"?\") || pattern.includes(\"[\")) {\n\t\t\t// Extract optional thinking level suffix (e.g., \"provider/*:high\")\n\t\t\tconst colonIdx = pattern.lastIndexOf(\":\");\n\t\t\tlet globPattern = pattern;\n\t\t\tlet thinkingLevel: ThinkingLevel | undefined;\n\n\t\t\tif (colonIdx !== -1) {\n\t\t\t\tconst suffix = pattern.substring(colonIdx + 1);\n\t\t\t\tif (isValidThinkingLevel(suffix)) {\n\t\t\t\t\tthinkingLevel = suffix;\n\t\t\t\t\tglobPattern = pattern.substring(0, colonIdx);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Match against \"provider/modelId\" format OR just model ID\n\t\t\t// This allows \"*sonnet*\" to match without requiring \"anthropic/*sonnet*\"\n\t\t\tconst matchingModels = availableModels.filter((m) => {\n\t\t\t\tconst fullId = `${m.provider}/${m.id}`;\n\t\t\t\treturn minimatch(fullId, globPattern, { nocase: true }) || minimatch(m.id, globPattern, { nocase: true });\n\t\t\t});\n\n\t\t\tif (matchingModels.length === 0) {\n\t\t\t\tconsole.warn(chalk.yellow(`Warning: No models match pattern \"${pattern}\"`));\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tfor (const model of matchingModels) {\n\t\t\t\tif (!scopedModels.find((sm) => modelsAreEqual(sm.model, model))) {\n\t\t\t\t\tscopedModels.push({ model, thinkingLevel });\n\t\t\t\t}\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst { model, thinkingLevel, warning } = parseModelPattern(pattern, availableModels);\n\n\t\tif (warning) {\n\t\t\tconsole.warn(chalk.yellow(`Warning: ${warning}`));\n\t\t}\n\n\t\tif (!model) {\n\t\t\tconsole.warn(chalk.yellow(`Warning: No models match pattern \"${pattern}\"`));\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Avoid duplicates\n\t\tif (!scopedModels.find((sm) => modelsAreEqual(sm.model, model))) {\n\t\t\tscopedModels.push({ model, thinkingLevel });\n\t\t}\n\t}\n\n\treturn scopedModels;\n}\n\nexport interface ResolveCliModelResult {\n\tmodel: Model<Api> | undefined;\n\tthinkingLevel?: ThinkingLevel;\n\twarning: string | undefined;\n\t/**\n\t * Error message suitable for CLI display.\n\t * When set, model will be undefined.\n\t */\n\terror: string | undefined;\n}\n\n/**\n * Resolve a single model from CLI flags.\n *\n * Supports:\n * - --provider <provider> --model <pattern>\n * - --model <provider>/<pattern>\n * - Fuzzy matching (same rules as model scoping: exact id, then partial id/name)\n *\n * Note: This does not apply the thinking level by itself, but it may *parse* and\n * return a thinking level from \"<pattern>:<thinking>\" so the caller can apply it.\n */\nexport function resolveCliModel(options: {\n\tcliProvider?: string;\n\tcliModel?: string;\n\tmodelRegistry: ModelRegistry;\n}): ResolveCliModelResult {\n\tconst { cliProvider, cliModel, modelRegistry } = options;\n\n\tif (!cliModel) {\n\t\treturn { model: undefined, warning: undefined, error: undefined };\n\t}\n\n\t// Important: use *all* models here, not just models with pre-configured auth.\n\t// This allows \"--api-key\" to be used for first-time setup.\n\tconst availableModels = modelRegistry.getAll();\n\tif (availableModels.length === 0) {\n\t\treturn {\n\t\t\tmodel: undefined,\n\t\t\twarning: undefined,\n\t\t\terror: \"No models available. Check your installation or add models to models.json.\",\n\t\t};\n\t}\n\n\t// Build canonical provider lookup (case-insensitive)\n\tconst providerMap = new Map<string, string>();\n\tfor (const m of availableModels) {\n\t\tproviderMap.set(m.provider.toLowerCase(), m.provider);\n\t}\n\n\tlet provider = cliProvider ? providerMap.get(cliProvider.toLowerCase()) : undefined;\n\tif (cliProvider && !provider) {\n\t\treturn {\n\t\t\tmodel: undefined,\n\t\t\twarning: undefined,\n\t\t\terror: `Unknown provider \"${cliProvider}\". Use --list-models to see available providers/models.`,\n\t\t};\n\t}\n\n\t// If no explicit --provider, try to interpret \"provider/model\" format first.\n\t// When the prefix before the first slash matches a known provider, prefer that\n\t// interpretation over matching models whose IDs literally contain slashes\n\t// (e.g. \"zai/glm-5\" should resolve to provider=zai, model=glm-5, not to a\n\t// vercel-ai-gateway model with id \"zai/glm-5\").\n\tlet pattern = cliModel;\n\tlet inferredProvider = false;\n\n\tif (!provider) {\n\t\tconst slashIndex = cliModel.indexOf(\"/\");\n\t\tif (slashIndex !== -1) {\n\t\t\tconst maybeProvider = cliModel.substring(0, slashIndex);\n\t\t\tconst canonical = providerMap.get(maybeProvider.toLowerCase());\n\t\t\tif (canonical) {\n\t\t\t\tprovider = canonical;\n\t\t\t\tpattern = cliModel.substring(slashIndex + 1);\n\t\t\t\tinferredProvider = true;\n\t\t\t}\n\t\t}\n\t}\n\n\t// If no provider was inferred from the slash, try exact matches without provider inference.\n\t// This handles models whose IDs naturally contain slashes (e.g. OpenRouter-style IDs).\n\tif (!provider) {\n\t\tconst lower = cliModel.toLowerCase();\n\t\tconst exact = availableModels.find(\n\t\t\t(m) => m.id.toLowerCase() === lower || `${m.provider}/${m.id}`.toLowerCase() === lower,\n\t\t);\n\t\tif (exact) {\n\t\t\treturn { model: exact, warning: undefined, thinkingLevel: undefined, error: undefined };\n\t\t}\n\t}\n\n\tif (cliProvider && provider) {\n\t\t// If both were provided, tolerate --model <provider>/<pattern> by stripping the provider prefix\n\t\tconst prefix = `${provider}/`;\n\t\tif (cliModel.toLowerCase().startsWith(prefix.toLowerCase())) {\n\t\t\tpattern = cliModel.substring(prefix.length);\n\t\t}\n\t}\n\n\tconst candidates = provider ? availableModels.filter((m) => m.provider === provider) : availableModels;\n\tconst { model, thinkingLevel, warning } = parseModelPattern(pattern, candidates, {\n\t\tallowInvalidThinkingLevelFallback: false,\n\t});\n\n\tif (model) {\n\t\treturn { model, thinkingLevel, warning, error: undefined };\n\t}\n\n\t// If we inferred a provider from the slash but found no match within that provider,\n\t// fall back to matching the full input as a raw model id across all models.\n\t// This handles OpenRouter-style IDs like \"openai/gpt-4o:extended\" where \"openai\"\n\t// looks like a provider but the full string is actually a model id on openrouter.\n\tif (inferredProvider) {\n\t\tconst lower = cliModel.toLowerCase();\n\t\tconst exact = availableModels.find(\n\t\t\t(m) => m.id.toLowerCase() === lower || `${m.provider}/${m.id}`.toLowerCase() === lower,\n\t\t);\n\t\tif (exact) {\n\t\t\treturn { model: exact, warning: undefined, thinkingLevel: undefined, error: undefined };\n\t\t}\n\t\t// Also try parseModelPattern on the full input against all models\n\t\tconst fallback = parseModelPattern(cliModel, availableModels, {\n\t\t\tallowInvalidThinkingLevelFallback: false,\n\t\t});\n\t\tif (fallback.model) {\n\t\t\treturn {\n\t\t\t\tmodel: fallback.model,\n\t\t\t\tthinkingLevel: fallback.thinkingLevel,\n\t\t\t\twarning: fallback.warning,\n\t\t\t\terror: undefined,\n\t\t\t};\n\t\t}\n\t}\n\n\tif (provider) {\n\t\tconst fallbackModel = buildFallbackModel(provider, pattern, availableModels);\n\t\tif (fallbackModel) {\n\t\t\tconst fallbackWarning = warning\n\t\t\t\t? `${warning} Model \"${pattern}\" not found for provider \"${provider}\". Using custom model id.`\n\t\t\t\t: `Model \"${pattern}\" not found for provider \"${provider}\". Using custom model id.`;\n\t\t\treturn { model: fallbackModel, thinkingLevel: undefined, warning: fallbackWarning, error: undefined };\n\t\t}\n\t}\n\n\tconst display = provider ? `${provider}/${pattern}` : cliModel;\n\treturn {\n\t\tmodel: undefined,\n\t\tthinkingLevel: undefined,\n\t\twarning,\n\t\terror: `Model \"${display}\" not found. Use --list-models to see available models.`,\n\t};\n}\n\nexport interface InitialModelResult {\n\tmodel: Model<Api> | undefined;\n\tthinkingLevel: ThinkingLevel;\n\tfallbackMessage: string | undefined;\n}\n\n/**\n * Find the initial model to use based on priority:\n * 1. CLI args (provider + model)\n * 2. First model from scoped models (if not continuing/resuming)\n * 3. Restored from session (if continuing/resuming)\n * 4. Saved default from settings\n * 5. First available model with valid API key\n */\nexport async function findInitialModel(options: {\n\tcliProvider?: string;\n\tcliModel?: string;\n\tscopedModels: ScopedModel[];\n\tisContinuing: boolean;\n\tdefaultProvider?: string;\n\tdefaultModelId?: string;\n\tdefaultThinkingLevel?: ThinkingLevel;\n\tmodelRegistry: ModelRegistry;\n}): Promise<InitialModelResult> {\n\tconst {\n\t\tcliProvider,\n\t\tcliModel,\n\t\tscopedModels,\n\t\tisContinuing,\n\t\tdefaultProvider,\n\t\tdefaultModelId,\n\t\tdefaultThinkingLevel,\n\t\tmodelRegistry,\n\t} = options;\n\n\tlet model: Model<Api> | undefined;\n\tlet thinkingLevel: ThinkingLevel = DEFAULT_THINKING_LEVEL;\n\n\t// 1. CLI args take priority\n\tif (cliProvider && cliModel) {\n\t\tconst resolved = resolveCliModel({\n\t\t\tcliProvider,\n\t\t\tcliModel,\n\t\t\tmodelRegistry,\n\t\t});\n\t\tif (resolved.error) {\n\t\t\tconsole.error(chalk.red(resolved.error));\n\t\t\tprocess.exit(1);\n\t\t}\n\t\tif (resolved.model) {\n\t\t\treturn { model: resolved.model, thinkingLevel: DEFAULT_THINKING_LEVEL, fallbackMessage: undefined };\n\t\t}\n\t}\n\n\t// 2. Use first model from scoped models (skip if continuing/resuming)\n\tif (scopedModels.length > 0 && !isContinuing) {\n\t\treturn {\n\t\t\tmodel: scopedModels[0].model,\n\t\t\tthinkingLevel: scopedModels[0].thinkingLevel ?? defaultThinkingLevel ?? DEFAULT_THINKING_LEVEL,\n\t\t\tfallbackMessage: undefined,\n\t\t};\n\t}\n\n\t// 3. Try saved default from settings\n\tif (defaultProvider && defaultModelId) {\n\t\tconst found = modelRegistry.find(defaultProvider, defaultModelId);\n\t\tif (found) {\n\t\t\tmodel = found;\n\t\t\tif (defaultThinkingLevel) {\n\t\t\t\tthinkingLevel = defaultThinkingLevel;\n\t\t\t}\n\t\t\treturn { model, thinkingLevel, fallbackMessage: undefined };\n\t\t}\n\t}\n\n\t// 4. Try first available model with valid API key\n\tconst availableModels = await modelRegistry.getAvailable();\n\n\tif (availableModels.length > 0) {\n\t\t// Try to find a default model from known providers\n\t\tfor (const provider of Object.keys(defaultModelPerProvider) as KnownProvider[]) {\n\t\t\tconst defaultId = defaultModelPerProvider[provider];\n\t\t\tconst match = availableModels.find((m) => m.provider === provider && m.id === defaultId);\n\t\t\tif (match) {\n\t\t\t\treturn { model: match, thinkingLevel: DEFAULT_THINKING_LEVEL, fallbackMessage: undefined };\n\t\t\t}\n\t\t}\n\n\t\t// If no default found, use first available\n\t\treturn { model: availableModels[0], thinkingLevel: DEFAULT_THINKING_LEVEL, fallbackMessage: undefined };\n\t}\n\n\t// 5. No model found\n\treturn { model: undefined, thinkingLevel: DEFAULT_THINKING_LEVEL, fallbackMessage: undefined };\n}\n\n/**\n * Restore model from session, with fallback to available models\n */\nexport async function restoreModelFromSession(\n\tsavedProvider: string,\n\tsavedModelId: string,\n\tcurrentModel: Model<Api> | undefined,\n\tshouldPrintMessages: boolean,\n\tmodelRegistry: ModelRegistry,\n): Promise<{ model: Model<Api> | undefined; fallbackMessage: string | undefined }> {\n\tconst restoredModel = modelRegistry.find(savedProvider, savedModelId);\n\n\t// Check if restored model exists and still has auth configured\n\tconst hasConfiguredAuth = restoredModel ? modelRegistry.hasConfiguredAuth(restoredModel) : false;\n\n\tif (restoredModel && hasConfiguredAuth) {\n\t\tif (shouldPrintMessages) {\n\t\t\tconsole.log(chalk.dim(`Restored model: ${savedProvider}/${savedModelId}`));\n\t\t}\n\t\treturn { model: restoredModel, fallbackMessage: undefined };\n\t}\n\n\t// Model not found or no API key - fall back\n\tconst reason = !restoredModel ? \"model no longer exists\" : \"no auth configured\";\n\n\tif (shouldPrintMessages) {\n\t\tconsole.error(chalk.yellow(`Warning: Could not restore model ${savedProvider}/${savedModelId} (${reason}).`));\n\t}\n\n\t// If we already have a model, use it as fallback\n\tif (currentModel) {\n\t\tif (shouldPrintMessages) {\n\t\t\tconsole.log(chalk.dim(`Falling back to: ${currentModel.provider}/${currentModel.id}`));\n\t\t}\n\t\treturn {\n\t\t\tmodel: currentModel,\n\t\t\tfallbackMessage: `Could not restore model ${savedProvider}/${savedModelId} (${reason}). Using ${currentModel.provider}/${currentModel.id}.`,\n\t\t};\n\t}\n\n\t// Try to find any available model\n\tconst availableModels = await modelRegistry.getAvailable();\n\n\tif (availableModels.length > 0) {\n\t\t// Try to find a default model from known providers\n\t\tlet fallbackModel: Model<Api> | undefined;\n\t\tfor (const provider of Object.keys(defaultModelPerProvider) as KnownProvider[]) {\n\t\t\tconst defaultId = defaultModelPerProvider[provider];\n\t\t\tconst match = availableModels.find((m) => m.provider === provider && m.id === defaultId);\n\t\t\tif (match) {\n\t\t\t\tfallbackModel = match;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// If no default found, use first available\n\t\tif (!fallbackModel) {\n\t\t\tfallbackModel = availableModels[0];\n\t\t}\n\n\t\tif (shouldPrintMessages) {\n\t\t\tconsole.log(chalk.dim(`Falling back to: ${fallbackModel.provider}/${fallbackModel.id}`));\n\t\t}\n\n\t\treturn {\n\t\t\tmodel: fallbackModel,\n\t\t\tfallbackMessage: `Could not restore model ${savedProvider}/${savedModelId} (${reason}). Using ${fallbackModel.provider}/${fallbackModel.id}.`,\n\t\t};\n\t}\n\n\t// No models available\n\treturn { model: undefined, fallbackMessage: undefined };\n}\n"]}
1
+ {"version":3,"file":"model-resolver.js","sourceRoot":"","sources":["../../src/core/model-resolver.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Model resolution, scoping, and initial selection\n */\n\nimport chalk from \"chalk\";\nimport { minimatch } from \"minimatch\";\nimport type { ThinkingLevel } from \"omk-agent-core\";\nimport { type Api, type KnownProvider, type Model, modelsAreEqual } from \"omk-ai\";\nimport { isValidThinkingLevel } from \"../cli/args.ts\";\nimport { DEFAULT_THINKING_LEVEL } from \"./defaults.ts\";\nimport type { ModelRegistry } from \"./model-registry.ts\";\n\n/** Default model IDs for each known provider */\nexport const defaultModelPerProvider: Record<KnownProvider, string> = {\n\t\"amazon-bedrock\": \"us.anthropic.claude-opus-4-6-v1\",\n\t\"ant-ling\": \"Ring-2.6-1T\",\n\tanthropic: \"claude-opus-4-8\",\n\topenai: \"gpt-5.4\",\n\t\"azure-openai-responses\": \"gpt-5.4\",\n\t\"openai-codex\": \"gpt-5.5\",\n\tnvidia: \"nvidia/nemotron-3-super-120b-a12b\",\n\tdeepseek: \"deepseek-v4-pro\",\n\tgoogle: \"gemini-3.1-pro-preview\",\n\t\"google-vertex\": \"gemini-3.1-pro-preview\",\n\t\"github-copilot\": \"gpt-5.4\",\n\topenrouter: \"moonshotai/kimi-k2.6\",\n\t\"vercel-ai-gateway\": \"zai/glm-5.1\",\n\txai: \"grok-4.20-0309-reasoning\",\n\tgroq: \"openai/gpt-oss-120b\",\n\tcerebras: \"zai-glm-4.7\",\n\tzai: \"glm-5.1\",\n\t\"zai-coding-cn\": \"glm-5.1\",\n\tmistral: \"devstral-medium-latest\",\n\tminimax: \"MiniMax-M2.7\",\n\t\"minimax-cn\": \"MiniMax-M2.7\",\n\tmoonshotai: \"kimi-k2.6\",\n\t\"moonshotai-cn\": \"kimi-k2.6\",\n\thuggingface: \"moonshotai/Kimi-K2.6\",\n\tfireworks: \"accounts/fireworks/models/kimi-k2p6\",\n\ttogether: \"moonshotai/Kimi-K2.6\",\n\topencode: \"kimi-k2.6\",\n\t\"opencode-go\": \"kimi-k2.6\",\n\t\"kimi-coding\": \"kimi-for-coding\",\n\t\"cloudflare-workers-ai\": \"@cf/moonshotai/kimi-k2.6\",\n\t\"cloudflare-ai-gateway\": \"workers-ai/@cf/moonshotai/kimi-k2.6\",\n\txiaomi: \"mimo-v2.5-pro\",\n\t\"xiaomi-token-plan-cn\": \"mimo-v2.5-pro\",\n\t\"xiaomi-token-plan-ams\": \"mimo-v2.5-pro\",\n\t\"xiaomi-token-plan-sgp\": \"mimo-v2.5-pro\",\n};\n\nexport interface ScopedModel {\n\tmodel: Model<Api>;\n\t/** Thinking level if explicitly specified in pattern (e.g., \"model:high\"), undefined otherwise */\n\tthinkingLevel?: ThinkingLevel;\n}\n\n/**\n * Helper to check if a model ID looks like an alias (no date suffix)\n * Dates are typically in format: -20241022 or -20250929\n */\nfunction isAlias(id: string): boolean {\n\t// Check if ID ends with -latest\n\tif (id.endsWith(\"-latest\")) return true;\n\n\t// Check if ID ends with a date pattern (-YYYYMMDD)\n\tconst datePattern = /-\\d{8}$/;\n\treturn !datePattern.test(id);\n}\n\n/**\n * Find an exact model reference match.\n * Supports either a bare model id or a canonical provider/modelId reference.\n * When matching by bare id, ambiguous matches across providers are rejected.\n */\nexport function findExactModelReferenceMatch(\n\tmodelReference: string,\n\tavailableModels: Model<Api>[],\n): Model<Api> | undefined {\n\tconst trimmedReference = modelReference.trim();\n\tif (!trimmedReference) {\n\t\treturn undefined;\n\t}\n\n\tconst normalizedReference = trimmedReference.toLowerCase();\n\n\tconst canonicalMatches = availableModels.filter(\n\t\t(model) => `${model.provider}/${model.id}`.toLowerCase() === normalizedReference,\n\t);\n\tif (canonicalMatches.length === 1) {\n\t\treturn canonicalMatches[0];\n\t}\n\tif (canonicalMatches.length > 1) {\n\t\treturn undefined;\n\t}\n\n\tconst slashIndex = trimmedReference.indexOf(\"/\");\n\tif (slashIndex !== -1) {\n\t\tconst provider = trimmedReference.substring(0, slashIndex).trim();\n\t\tconst modelId = trimmedReference.substring(slashIndex + 1).trim();\n\t\tif (provider && modelId) {\n\t\t\tconst providerMatches = availableModels.filter(\n\t\t\t\t(model) =>\n\t\t\t\t\tmodel.provider.toLowerCase() === provider.toLowerCase() &&\n\t\t\t\t\tmodel.id.toLowerCase() === modelId.toLowerCase(),\n\t\t\t);\n\t\t\tif (providerMatches.length === 1) {\n\t\t\t\treturn providerMatches[0];\n\t\t\t}\n\t\t\tif (providerMatches.length > 1) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t}\n\t}\n\n\tconst idMatches = availableModels.filter((model) => model.id.toLowerCase() === normalizedReference);\n\treturn idMatches.length === 1 ? idMatches[0] : undefined;\n}\n\n/**\n * Try to match a pattern to a model from the available models list.\n * Returns the matched model or undefined if no match found.\n */\nfunction tryMatchModel(modelPattern: string, availableModels: Model<Api>[]): Model<Api> | undefined {\n\tconst exactMatch = findExactModelReferenceMatch(modelPattern, availableModels);\n\tif (exactMatch) {\n\t\treturn exactMatch;\n\t}\n\n\t// No exact match - fall back to partial matching\n\tconst matches = availableModels.filter(\n\t\t(m) =>\n\t\t\tm.id.toLowerCase().includes(modelPattern.toLowerCase()) ||\n\t\t\tm.name?.toLowerCase().includes(modelPattern.toLowerCase()),\n\t);\n\n\tif (matches.length === 0) {\n\t\treturn undefined;\n\t}\n\n\t// Separate into aliases and dated versions\n\tconst aliases = matches.filter((m) => isAlias(m.id));\n\tconst datedVersions = matches.filter((m) => !isAlias(m.id));\n\n\tif (aliases.length > 0) {\n\t\t// Prefer alias - if multiple aliases, pick the one that sorts highest\n\t\taliases.sort((a, b) => b.id.localeCompare(a.id));\n\t\treturn aliases[0];\n\t} else {\n\t\t// No alias found, pick latest dated version\n\t\tdatedVersions.sort((a, b) => b.id.localeCompare(a.id));\n\t\treturn datedVersions[0];\n\t}\n}\n\nexport interface ParsedModelResult {\n\tmodel: Model<Api> | undefined;\n\t/** Thinking level if explicitly specified in pattern, undefined otherwise */\n\tthinkingLevel?: ThinkingLevel;\n\twarning: string | undefined;\n}\n\nfunction buildFallbackModel(provider: string, modelId: string, availableModels: Model<Api>[]): Model<Api> | undefined {\n\tconst providerModels = availableModels.filter((m) => m.provider === provider);\n\tif (providerModels.length === 0) return undefined;\n\n\tconst defaultId = defaultModelPerProvider[provider as KnownProvider];\n\tconst baseModel = defaultId\n\t\t? (providerModels.find((m) => m.id === defaultId) ?? providerModels[0])\n\t\t: providerModels[0];\n\n\treturn {\n\t\t...baseModel,\n\t\tid: modelId,\n\t\tname: modelId,\n\t};\n}\n\n/**\n * Parse a pattern to extract model and thinking level.\n * Handles models with colons in their IDs (e.g., OpenRouter's :exacto suffix).\n *\n * Algorithm:\n * 1. Try to match full pattern as a model\n * 2. If found, return it with \"off\" thinking level\n * 3. If not found and has colons, split on last colon:\n * - If suffix is valid thinking level, use it and recurse on prefix\n * - If suffix is invalid, warn and recurse on prefix with \"off\"\n *\n * @internal Exported for testing\n */\nexport function parseModelPattern(\n\tpattern: string,\n\tavailableModels: Model<Api>[],\n\toptions?: { allowInvalidThinkingLevelFallback?: boolean },\n): ParsedModelResult {\n\t// Try exact match first\n\tconst exactMatch = tryMatchModel(pattern, availableModels);\n\tif (exactMatch) {\n\t\treturn { model: exactMatch, thinkingLevel: undefined, warning: undefined };\n\t}\n\n\t// No match - try splitting on last colon if present\n\tconst lastColonIndex = pattern.lastIndexOf(\":\");\n\tif (lastColonIndex === -1) {\n\t\t// No colons, pattern simply doesn't match any model\n\t\treturn { model: undefined, thinkingLevel: undefined, warning: undefined };\n\t}\n\n\tconst prefix = pattern.substring(0, lastColonIndex);\n\tconst suffix = pattern.substring(lastColonIndex + 1);\n\n\tif (isValidThinkingLevel(suffix)) {\n\t\t// Valid thinking level - recurse on prefix and use this level\n\t\tconst result = parseModelPattern(prefix, availableModels, options);\n\t\tif (result.model) {\n\t\t\t// Only use this thinking level if no warning from inner recursion\n\t\t\treturn {\n\t\t\t\tmodel: result.model,\n\t\t\t\tthinkingLevel: result.warning ? undefined : suffix,\n\t\t\t\twarning: result.warning,\n\t\t\t};\n\t\t}\n\t\treturn result;\n\t} else {\n\t\t// Invalid suffix\n\t\tconst allowFallback = options?.allowInvalidThinkingLevelFallback ?? true;\n\t\tif (!allowFallback) {\n\t\t\t// In strict mode (CLI --model parsing), treat it as part of the model id and fail.\n\t\t\t// This avoids accidentally resolving to a different model.\n\t\t\treturn { model: undefined, thinkingLevel: undefined, warning: undefined };\n\t\t}\n\n\t\t// Scope mode: recurse on prefix and warn\n\t\tconst result = parseModelPattern(prefix, availableModels, options);\n\t\tif (result.model) {\n\t\t\treturn {\n\t\t\t\tmodel: result.model,\n\t\t\t\tthinkingLevel: undefined,\n\t\t\t\twarning: `Invalid thinking level \"${suffix}\" in pattern \"${pattern}\". Using default instead.`,\n\t\t\t};\n\t\t}\n\t\treturn result;\n\t}\n}\n\n/**\n * Resolve model patterns to actual Model objects with optional thinking levels\n * Format: \"pattern:level\" where :level is optional\n * For each pattern, finds all matching models and picks the best version:\n * 1. Prefer alias (e.g., claude-sonnet-4-5) over dated versions (claude-sonnet-4-5-20250929)\n * 2. If no alias, pick the latest dated version\n *\n * Supports models with colons in their IDs (e.g., OpenRouter's model:exacto).\n * The algorithm tries to match the full pattern first, then progressively\n * strips colon-suffixes to find a match.\n */\nexport async function resolveModelScope(patterns: string[], modelRegistry: ModelRegistry): Promise<ScopedModel[]> {\n\tconst availableModels = await modelRegistry.getAvailable();\n\tconst scopedModels: ScopedModel[] = [];\n\n\tfor (const pattern of patterns) {\n\t\t// Check if pattern contains glob characters\n\t\tif (pattern.includes(\"*\") || pattern.includes(\"?\") || pattern.includes(\"[\")) {\n\t\t\t// Extract optional thinking level suffix (e.g., \"provider/*:high\")\n\t\t\tconst colonIdx = pattern.lastIndexOf(\":\");\n\t\t\tlet globPattern = pattern;\n\t\t\tlet thinkingLevel: ThinkingLevel | undefined;\n\n\t\t\tif (colonIdx !== -1) {\n\t\t\t\tconst suffix = pattern.substring(colonIdx + 1);\n\t\t\t\tif (isValidThinkingLevel(suffix)) {\n\t\t\t\t\tthinkingLevel = suffix;\n\t\t\t\t\tglobPattern = pattern.substring(0, colonIdx);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Match against \"provider/modelId\" format OR just model ID\n\t\t\t// This allows \"*sonnet*\" to match without requiring \"anthropic/*sonnet*\"\n\t\t\tconst matchingModels = availableModels.filter((m) => {\n\t\t\t\tconst fullId = `${m.provider}/${m.id}`;\n\t\t\t\treturn minimatch(fullId, globPattern, { nocase: true }) || minimatch(m.id, globPattern, { nocase: true });\n\t\t\t});\n\n\t\t\tif (matchingModels.length === 0) {\n\t\t\t\tconsole.warn(chalk.yellow(`Warning: No models match pattern \"${pattern}\"`));\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tfor (const model of matchingModels) {\n\t\t\t\tif (!scopedModels.find((sm) => modelsAreEqual(sm.model, model))) {\n\t\t\t\t\tscopedModels.push({ model, thinkingLevel });\n\t\t\t\t}\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst { model, thinkingLevel, warning } = parseModelPattern(pattern, availableModels);\n\n\t\tif (warning) {\n\t\t\tconsole.warn(chalk.yellow(`Warning: ${warning}`));\n\t\t}\n\n\t\tif (!model) {\n\t\t\tconsole.warn(chalk.yellow(`Warning: No models match pattern \"${pattern}\"`));\n\t\t\tcontinue;\n\t\t}\n\n\t\t// Avoid duplicates\n\t\tif (!scopedModels.find((sm) => modelsAreEqual(sm.model, model))) {\n\t\t\tscopedModels.push({ model, thinkingLevel });\n\t\t}\n\t}\n\n\treturn scopedModels;\n}\n\nexport interface ResolveCliModelResult {\n\tmodel: Model<Api> | undefined;\n\tthinkingLevel?: ThinkingLevel;\n\twarning: string | undefined;\n\t/**\n\t * Error message suitable for CLI display.\n\t * When set, model will be undefined.\n\t */\n\terror: string | undefined;\n}\n\n/**\n * Resolve a single model from CLI flags.\n *\n * Supports:\n * - --provider <provider> --model <pattern>\n * - --model <provider>/<pattern>\n * - Fuzzy matching (same rules as model scoping: exact id, then partial id/name)\n *\n * Note: This does not apply the thinking level by itself, but it may *parse* and\n * return a thinking level from \"<pattern>:<thinking>\" so the caller can apply it.\n */\nexport function resolveCliModel(options: {\n\tcliProvider?: string;\n\tcliModel?: string;\n\tmodelRegistry: ModelRegistry;\n}): ResolveCliModelResult {\n\tconst { cliProvider, cliModel, modelRegistry } = options;\n\n\tif (!cliModel) {\n\t\treturn { model: undefined, warning: undefined, error: undefined };\n\t}\n\n\t// Important: use *all* models here, not just models with pre-configured auth.\n\t// This allows \"--api-key\" to be used for first-time setup.\n\tconst availableModels = modelRegistry.getAll();\n\tif (availableModels.length === 0) {\n\t\treturn {\n\t\t\tmodel: undefined,\n\t\t\twarning: undefined,\n\t\t\terror: \"No models available. Check your installation or add models to models.json.\",\n\t\t};\n\t}\n\n\t// Build canonical provider lookup (case-insensitive)\n\tconst providerMap = new Map<string, string>();\n\tfor (const m of availableModels) {\n\t\tproviderMap.set(m.provider.toLowerCase(), m.provider);\n\t}\n\n\tlet provider = cliProvider ? providerMap.get(cliProvider.toLowerCase()) : undefined;\n\tif (cliProvider && !provider) {\n\t\treturn {\n\t\t\tmodel: undefined,\n\t\t\twarning: undefined,\n\t\t\terror: `Unknown provider \"${cliProvider}\". Use --list-models to see available providers/models.`,\n\t\t};\n\t}\n\n\t// If no explicit --provider, try to interpret \"provider/model\" format first.\n\t// When the prefix before the first slash matches a known provider, prefer that\n\t// interpretation over matching models whose IDs literally contain slashes\n\t// (e.g. \"zai/glm-5\" should resolve to provider=zai, model=glm-5, not to a\n\t// vercel-ai-gateway model with id \"zai/glm-5\").\n\tlet pattern = cliModel;\n\tlet inferredProvider = false;\n\n\tif (!provider) {\n\t\tconst slashIndex = cliModel.indexOf(\"/\");\n\t\tif (slashIndex !== -1) {\n\t\t\tconst maybeProvider = cliModel.substring(0, slashIndex);\n\t\t\tconst canonical = providerMap.get(maybeProvider.toLowerCase());\n\t\t\tif (canonical) {\n\t\t\t\tprovider = canonical;\n\t\t\t\tpattern = cliModel.substring(slashIndex + 1);\n\t\t\t\tinferredProvider = true;\n\t\t\t}\n\t\t}\n\t}\n\n\t// If no provider was inferred from the slash, try exact matches without provider inference.\n\t// This handles models whose IDs naturally contain slashes (e.g. OpenRouter-style IDs).\n\tif (!provider) {\n\t\tconst lower = cliModel.toLowerCase();\n\t\tconst exact = availableModels.find(\n\t\t\t(m) => m.id.toLowerCase() === lower || `${m.provider}/${m.id}`.toLowerCase() === lower,\n\t\t);\n\t\tif (exact) {\n\t\t\treturn { model: exact, warning: undefined, thinkingLevel: undefined, error: undefined };\n\t\t}\n\t}\n\n\tif (cliProvider && provider) {\n\t\t// If both were provided, tolerate --model <provider>/<pattern> by stripping the provider prefix\n\t\tconst prefix = `${provider}/`;\n\t\tif (cliModel.toLowerCase().startsWith(prefix.toLowerCase())) {\n\t\t\tpattern = cliModel.substring(prefix.length);\n\t\t}\n\t}\n\n\tconst candidates = provider ? availableModels.filter((m) => m.provider === provider) : availableModels;\n\tconst { model, thinkingLevel, warning } = parseModelPattern(pattern, candidates, {\n\t\tallowInvalidThinkingLevelFallback: false,\n\t});\n\n\tif (model) {\n\t\treturn { model, thinkingLevel, warning, error: undefined };\n\t}\n\n\t// If we inferred a provider from the slash but found no match within that provider,\n\t// fall back to matching the full input as a raw model id across all models.\n\t// This handles OpenRouter-style IDs like \"openai/gpt-4o:extended\" where \"openai\"\n\t// looks like a provider but the full string is actually a model id on openrouter.\n\tif (inferredProvider) {\n\t\tconst lower = cliModel.toLowerCase();\n\t\tconst exact = availableModels.find(\n\t\t\t(m) => m.id.toLowerCase() === lower || `${m.provider}/${m.id}`.toLowerCase() === lower,\n\t\t);\n\t\tif (exact) {\n\t\t\treturn { model: exact, warning: undefined, thinkingLevel: undefined, error: undefined };\n\t\t}\n\t\t// Also try parseModelPattern on the full input against all models\n\t\tconst fallback = parseModelPattern(cliModel, availableModels, {\n\t\t\tallowInvalidThinkingLevelFallback: false,\n\t\t});\n\t\tif (fallback.model) {\n\t\t\treturn {\n\t\t\t\tmodel: fallback.model,\n\t\t\t\tthinkingLevel: fallback.thinkingLevel,\n\t\t\t\twarning: fallback.warning,\n\t\t\t\terror: undefined,\n\t\t\t};\n\t\t}\n\t}\n\n\tif (provider) {\n\t\tconst fallbackModel = buildFallbackModel(provider, pattern, availableModels);\n\t\tif (fallbackModel) {\n\t\t\tconst fallbackWarning = warning\n\t\t\t\t? `${warning} Model \"${pattern}\" not found for provider \"${provider}\". Using custom model id.`\n\t\t\t\t: `Model \"${pattern}\" not found for provider \"${provider}\". Using custom model id.`;\n\t\t\treturn { model: fallbackModel, thinkingLevel: undefined, warning: fallbackWarning, error: undefined };\n\t\t}\n\t}\n\n\tconst display = provider ? `${provider}/${pattern}` : cliModel;\n\treturn {\n\t\tmodel: undefined,\n\t\tthinkingLevel: undefined,\n\t\twarning,\n\t\terror: `Model \"${display}\" not found. Use --list-models to see available models.`,\n\t};\n}\n\nexport interface InitialModelResult {\n\tmodel: Model<Api> | undefined;\n\tthinkingLevel: ThinkingLevel;\n\tfallbackMessage: string | undefined;\n}\n\n/**\n * Find the initial model to use based on priority:\n * 1. CLI args (provider + model)\n * 2. First model from scoped models (if not continuing/resuming)\n * 3. Restored from session (if continuing/resuming)\n * 4. Saved default from settings\n * 5. First available model with valid API key\n */\nexport async function findInitialModel(options: {\n\tcliProvider?: string;\n\tcliModel?: string;\n\tscopedModels: ScopedModel[];\n\tisContinuing: boolean;\n\tdefaultProvider?: string;\n\tdefaultModelId?: string;\n\tdefaultThinkingLevel?: ThinkingLevel;\n\tmodelRegistry: ModelRegistry;\n}): Promise<InitialModelResult> {\n\tconst {\n\t\tcliProvider,\n\t\tcliModel,\n\t\tscopedModels,\n\t\tisContinuing,\n\t\tdefaultProvider,\n\t\tdefaultModelId,\n\t\tdefaultThinkingLevel,\n\t\tmodelRegistry,\n\t} = options;\n\n\tlet model: Model<Api> | undefined;\n\tlet thinkingLevel: ThinkingLevel = DEFAULT_THINKING_LEVEL;\n\n\t// 1. CLI args take priority\n\tif (cliProvider && cliModel) {\n\t\tconst resolved = resolveCliModel({\n\t\t\tcliProvider,\n\t\t\tcliModel,\n\t\t\tmodelRegistry,\n\t\t});\n\t\tif (resolved.error) {\n\t\t\tconsole.error(chalk.red(resolved.error));\n\t\t\tprocess.exit(1);\n\t\t}\n\t\tif (resolved.model) {\n\t\t\treturn { model: resolved.model, thinkingLevel: DEFAULT_THINKING_LEVEL, fallbackMessage: undefined };\n\t\t}\n\t}\n\n\t// 2. Use first model from scoped models (skip if continuing/resuming)\n\tif (scopedModels.length > 0 && !isContinuing) {\n\t\treturn {\n\t\t\tmodel: scopedModels[0].model,\n\t\t\tthinkingLevel: scopedModels[0].thinkingLevel ?? defaultThinkingLevel ?? DEFAULT_THINKING_LEVEL,\n\t\t\tfallbackMessage: undefined,\n\t\t};\n\t}\n\n\t// 3. Try saved default from settings\n\tif (defaultProvider && defaultModelId) {\n\t\tconst found = modelRegistry.find(defaultProvider, defaultModelId);\n\t\tif (found) {\n\t\t\tmodel = found;\n\t\t\tif (defaultThinkingLevel) {\n\t\t\t\tthinkingLevel = defaultThinkingLevel;\n\t\t\t}\n\t\t\treturn { model, thinkingLevel, fallbackMessage: undefined };\n\t\t}\n\t}\n\n\t// 4. Try first available model with valid API key\n\tconst availableModels = await modelRegistry.getAvailable();\n\n\tif (availableModels.length > 0) {\n\t\t// Try to find a default model from known providers\n\t\tfor (const provider of Object.keys(defaultModelPerProvider) as KnownProvider[]) {\n\t\t\tconst defaultId = defaultModelPerProvider[provider];\n\t\t\tconst match = availableModels.find((m) => m.provider === provider && m.id === defaultId);\n\t\t\tif (match) {\n\t\t\t\treturn { model: match, thinkingLevel: DEFAULT_THINKING_LEVEL, fallbackMessage: undefined };\n\t\t\t}\n\t\t}\n\n\t\t// If no default found, use first available\n\t\treturn { model: availableModels[0], thinkingLevel: DEFAULT_THINKING_LEVEL, fallbackMessage: undefined };\n\t}\n\n\t// 5. No model found\n\treturn { model: undefined, thinkingLevel: DEFAULT_THINKING_LEVEL, fallbackMessage: undefined };\n}\n\n/**\n * Restore model from session, with fallback to available models\n */\nexport async function restoreModelFromSession(\n\tsavedProvider: string,\n\tsavedModelId: string,\n\tcurrentModel: Model<Api> | undefined,\n\tshouldPrintMessages: boolean,\n\tmodelRegistry: ModelRegistry,\n): Promise<{ model: Model<Api> | undefined; fallbackMessage: string | undefined }> {\n\tconst restoredModel = modelRegistry.find(savedProvider, savedModelId);\n\n\t// Check if restored model exists and still has auth configured\n\tconst hasConfiguredAuth = restoredModel ? modelRegistry.hasConfiguredAuth(restoredModel) : false;\n\n\tif (restoredModel && hasConfiguredAuth) {\n\t\tif (shouldPrintMessages) {\n\t\t\tconsole.log(chalk.dim(`Restored model: ${savedProvider}/${savedModelId}`));\n\t\t}\n\t\treturn { model: restoredModel, fallbackMessage: undefined };\n\t}\n\n\t// Model not found or no API key - fall back\n\tconst reason = !restoredModel ? \"model no longer exists\" : \"no auth configured\";\n\n\tif (shouldPrintMessages) {\n\t\tconsole.error(chalk.yellow(`Warning: Could not restore model ${savedProvider}/${savedModelId} (${reason}).`));\n\t}\n\n\t// If we already have a model, use it as fallback\n\tif (currentModel) {\n\t\tif (shouldPrintMessages) {\n\t\t\tconsole.log(chalk.dim(`Falling back to: ${currentModel.provider}/${currentModel.id}`));\n\t\t}\n\t\treturn {\n\t\t\tmodel: currentModel,\n\t\t\tfallbackMessage: `Could not restore model ${savedProvider}/${savedModelId} (${reason}). Using ${currentModel.provider}/${currentModel.id}.`,\n\t\t};\n\t}\n\n\t// Try to find any available model\n\tconst availableModels = await modelRegistry.getAvailable();\n\n\tif (availableModels.length > 0) {\n\t\t// Try to find a default model from known providers\n\t\tlet fallbackModel: Model<Api> | undefined;\n\t\tfor (const provider of Object.keys(defaultModelPerProvider) as KnownProvider[]) {\n\t\t\tconst defaultId = defaultModelPerProvider[provider];\n\t\t\tconst match = availableModels.find((m) => m.provider === provider && m.id === defaultId);\n\t\t\tif (match) {\n\t\t\t\tfallbackModel = match;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// If no default found, use first available\n\t\tif (!fallbackModel) {\n\t\t\tfallbackModel = availableModels[0];\n\t\t}\n\n\t\tif (shouldPrintMessages) {\n\t\t\tconsole.log(chalk.dim(`Falling back to: ${fallbackModel.provider}/${fallbackModel.id}`));\n\t\t}\n\n\t\treturn {\n\t\t\tmodel: fallbackModel,\n\t\t\tfallbackMessage: `Could not restore model ${savedProvider}/${savedModelId} (${reason}). Using ${fallbackModel.provider}/${fallbackModel.id}.`,\n\t\t};\n\t}\n\n\t// No models available\n\treturn { model: undefined, fallbackMessage: undefined };\n}\n"]}
@@ -0,0 +1,7 @@
1
+ import type { GalleryPackageIdentity } from "./package-gallery-types.ts";
2
+ export declare function normalizeRepoIdentity(repo: string): string;
3
+ export declare function trialIdentity(identity: GalleryPackageIdentity): string;
4
+ export declare function dedupeGalleryEntries<T extends {
5
+ readonly identity: GalleryPackageIdentity;
6
+ }>(entries: readonly T[]): T[];
7
+ //# sourceMappingURL=package-gallery-identity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-gallery-identity.d.ts","sourceRoot":"","sources":["../../src/core/package-gallery-identity.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAEzE,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,sBAAsB,GAAG,MAAM,CAItE;AAQD,wBAAgB,oBAAoB,CAAC,CAAC,SAAS;IAAE,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,CAAA;CAAE,EAC3F,OAAO,EAAE,SAAS,CAAC,EAAE,GACnB,CAAC,EAAE,CAUL","sourcesContent":["import { resolve } from \"node:path\";\nimport type { GalleryPackageIdentity } from \"./package-gallery-types.ts\";\n\nexport function normalizeRepoIdentity(repo: string): string {\n\treturn repo.trim().replace(/\\.git$/i, \"\");\n}\n\nexport function trialIdentity(identity: GalleryPackageIdentity): string {\n\tif (identity.kind === \"npm\") return `npm:${identity.name}`;\n\tif (identity.kind === \"git\") return `git:${normalizeRepoIdentity(identity.repo)}`;\n\treturn `local:${resolve(identity.path)}`;\n}\n\nfunction identityKey(identity: GalleryPackageIdentity): string {\n\tif (identity.kind === \"npm\") return `npm:${identity.name}`;\n\tif (identity.kind === \"git\") return `git:${normalizeRepoIdentity(identity.repo)}`;\n\treturn `local:${resolve(identity.path)}`;\n}\n\nexport function dedupeGalleryEntries<T extends { readonly identity: GalleryPackageIdentity }>(\n\tentries: readonly T[],\n): T[] {\n\tconst seen = new Set<string>();\n\tconst deduped: T[] = [];\n\tfor (const entry of entries) {\n\t\tconst key = identityKey(entry.identity);\n\t\tif (seen.has(key)) continue;\n\t\tseen.add(key);\n\t\tdeduped.push(entry);\n\t}\n\treturn deduped;\n}\n"]}
@@ -0,0 +1,31 @@
1
+ import { resolve } from "node:path";
2
+ export function normalizeRepoIdentity(repo) {
3
+ return repo.trim().replace(/\.git$/i, "");
4
+ }
5
+ export function trialIdentity(identity) {
6
+ if (identity.kind === "npm")
7
+ return `npm:${identity.name}`;
8
+ if (identity.kind === "git")
9
+ return `git:${normalizeRepoIdentity(identity.repo)}`;
10
+ return `local:${resolve(identity.path)}`;
11
+ }
12
+ function identityKey(identity) {
13
+ if (identity.kind === "npm")
14
+ return `npm:${identity.name}`;
15
+ if (identity.kind === "git")
16
+ return `git:${normalizeRepoIdentity(identity.repo)}`;
17
+ return `local:${resolve(identity.path)}`;
18
+ }
19
+ export function dedupeGalleryEntries(entries) {
20
+ const seen = new Set();
21
+ const deduped = [];
22
+ for (const entry of entries) {
23
+ const key = identityKey(entry.identity);
24
+ if (seen.has(key))
25
+ continue;
26
+ seen.add(key);
27
+ deduped.push(entry);
28
+ }
29
+ return deduped;
30
+ }
31
+ //# sourceMappingURL=package-gallery-identity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-gallery-identity.js","sourceRoot":"","sources":["../../src/core/package-gallery-identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC,MAAM,UAAU,qBAAqB,CAAC,IAAY,EAAU;IAC3D,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;AAAA,CAC1C;AAED,MAAM,UAAU,aAAa,CAAC,QAAgC,EAAU;IACvE,IAAI,QAAQ,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC3D,IAAI,QAAQ,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,OAAO,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IAClF,OAAO,SAAS,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;AAAA,CACzC;AAED,SAAS,WAAW,CAAC,QAAgC,EAAU;IAC9D,IAAI,QAAQ,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC3D,IAAI,QAAQ,CAAC,IAAI,KAAK,KAAK;QAAE,OAAO,OAAO,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IAClF,OAAO,SAAS,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;AAAA,CACzC;AAED,MAAM,UAAU,oBAAoB,CACnC,OAAqB,EACf;IACN,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,OAAO,GAAQ,EAAE,CAAC;IACxB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,GAAG,GAAG,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,OAAO,CAAC;AAAA,CACf","sourcesContent":["import { resolve } from \"node:path\";\nimport type { GalleryPackageIdentity } from \"./package-gallery-types.ts\";\n\nexport function normalizeRepoIdentity(repo: string): string {\n\treturn repo.trim().replace(/\\.git$/i, \"\");\n}\n\nexport function trialIdentity(identity: GalleryPackageIdentity): string {\n\tif (identity.kind === \"npm\") return `npm:${identity.name}`;\n\tif (identity.kind === \"git\") return `git:${normalizeRepoIdentity(identity.repo)}`;\n\treturn `local:${resolve(identity.path)}`;\n}\n\nfunction identityKey(identity: GalleryPackageIdentity): string {\n\tif (identity.kind === \"npm\") return `npm:${identity.name}`;\n\tif (identity.kind === \"git\") return `git:${normalizeRepoIdentity(identity.repo)}`;\n\treturn `local:${resolve(identity.path)}`;\n}\n\nexport function dedupeGalleryEntries<T extends { readonly identity: GalleryPackageIdentity }>(\n\tentries: readonly T[],\n): T[] {\n\tconst seen = new Set<string>();\n\tconst deduped: T[] = [];\n\tfor (const entry of entries) {\n\t\tconst key = identityKey(entry.identity);\n\t\tif (seen.has(key)) continue;\n\t\tseen.add(key);\n\t\tdeduped.push(entry);\n\t}\n\treturn deduped;\n}\n"]}
@@ -0,0 +1,6 @@
1
+ import type { GalleryInstallSpec, GalleryPackageIdentity, GalleryTrialReview } from "./package-gallery-types.ts";
2
+ export declare function buildGalleryInstallSpec(identity: GalleryPackageIdentity, codeExecution: boolean, options?: {
3
+ readonly local?: boolean;
4
+ }): GalleryInstallSpec;
5
+ export declare function buildGalleryInstallSpecFromReview(identity: GalleryPackageIdentity, review: GalleryTrialReview): GalleryInstallSpec;
6
+ //# sourceMappingURL=package-gallery-install.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-gallery-install.d.ts","sourceRoot":"","sources":["../../src/core/package-gallery-install.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAGjH,wBAAgB,uBAAuB,CACtC,QAAQ,EAAE,sBAAsB,EAChC,aAAa,EAAE,OAAO,EACtB,OAAO,GAAE;IAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GACxC,kBAAkB,CAmCpB;AAED,wBAAgB,iCAAiC,CAChD,QAAQ,EAAE,sBAAsB,EAChC,MAAM,EAAE,kBAAkB,GACxB,kBAAkB,CAMpB","sourcesContent":["import { assessGalleryTrialGate } from \"./package-gallery-trial.ts\";\nimport type { GalleryInstallSpec, GalleryPackageIdentity, GalleryTrialReview } from \"./package-gallery-types.ts\";\nimport { validateExactNpmVersion } from \"./package-procurement.ts\";\n\nexport function buildGalleryInstallSpec(\n\tidentity: GalleryPackageIdentity,\n\tcodeExecution: boolean,\n\toptions: { readonly local?: boolean } = {},\n): GalleryInstallSpec {\n\tif (identity.kind === \"npm\") {\n\t\tconst version = assertExactVersion(identity.version);\n\t\tconst source = `npm:${identity.name}@${version}`;\n\t\treturn {\n\t\t\tkind: \"npm\",\n\t\t\tsource,\n\t\t\tinstallCommand: `omk install ${source}`,\n\t\t\ttryEphemeralCommand: `omk -e ${source}`,\n\t\t\ttrust: codeExecution ? \"code-execution\" : \"declarative\",\n\t\t};\n\t}\n\tif (identity.kind === \"git\") {\n\t\tif (!isFullCommitSha(identity.ref)) {\n\t\t\tthrow new Error(\"Gallery git install requires a full commit SHA.\");\n\t\t}\n\t\tconst source = `git:${identity.repo}@${identity.ref}`;\n\t\treturn {\n\t\t\tkind: \"git\",\n\t\t\tsource,\n\t\t\tinstallCommand: `omk install ${source}`,\n\t\t\ttryEphemeralCommand: `omk -e ${source}`,\n\t\t\ttrust: codeExecution ? \"code-execution\" : \"declarative\",\n\t\t};\n\t}\n\tif (options.local !== true) {\n\t\tthrow new Error(\"Gallery local installs require an explicit local option.\");\n\t}\n\treturn {\n\t\tkind: \"local\",\n\t\tsource: identity.path,\n\t\tinstallCommand: `omk install ${identity.path} -l`,\n\t\ttryEphemeralCommand: `omk -e ${identity.path}`,\n\t\ttrust: codeExecution ? \"code-execution\" : \"declarative\",\n\t};\n}\n\nexport function buildGalleryInstallSpecFromReview(\n\tidentity: GalleryPackageIdentity,\n\treview: GalleryTrialReview,\n): GalleryInstallSpec {\n\tconst status = assessGalleryTrialGate(identity, review);\n\tif (status.outcome === \"blocked\") {\n\t\tthrow new Error(`Gallery trial blocked: ${status.reasons.join(\", \")}`);\n\t}\n\treturn buildGalleryInstallSpec(identity, expectedResourcesRequireCode(review));\n}\n\nfunction assertExactVersion(version: string | undefined): string {\n\tconst verdict = validateExactNpmVersion(version);\n\tif (!verdict.ok) {\n\t\tthrow new Error(`Gallery npm install requires an exact pinned version: ${verdict.message}`);\n\t}\n\treturn verdict.version;\n}\n\nfunction isFullCommitSha(ref: string | undefined): ref is string {\n\treturn typeof ref === \"string\" && /^(?:[0-9a-f]{40}|[0-9a-f]{64})$/i.test(ref);\n}\n\nfunction expectedResourcesRequireCode(review: GalleryTrialReview): boolean {\n\treturn (\n\t\treview.candidate?.expectedResources?.some((resource) => resource === \"extension\" || resource === \"tool\") ?? false\n\t);\n}\n"]}
@@ -0,0 +1,59 @@
1
+ import { assessGalleryTrialGate } from "./package-gallery-trial.js";
2
+ import { validateExactNpmVersion } from "./package-procurement.js";
3
+ export function buildGalleryInstallSpec(identity, codeExecution, options = {}) {
4
+ if (identity.kind === "npm") {
5
+ const version = assertExactVersion(identity.version);
6
+ const source = `npm:${identity.name}@${version}`;
7
+ return {
8
+ kind: "npm",
9
+ source,
10
+ installCommand: `omk install ${source}`,
11
+ tryEphemeralCommand: `omk -e ${source}`,
12
+ trust: codeExecution ? "code-execution" : "declarative",
13
+ };
14
+ }
15
+ if (identity.kind === "git") {
16
+ if (!isFullCommitSha(identity.ref)) {
17
+ throw new Error("Gallery git install requires a full commit SHA.");
18
+ }
19
+ const source = `git:${identity.repo}@${identity.ref}`;
20
+ return {
21
+ kind: "git",
22
+ source,
23
+ installCommand: `omk install ${source}`,
24
+ tryEphemeralCommand: `omk -e ${source}`,
25
+ trust: codeExecution ? "code-execution" : "declarative",
26
+ };
27
+ }
28
+ if (options.local !== true) {
29
+ throw new Error("Gallery local installs require an explicit local option.");
30
+ }
31
+ return {
32
+ kind: "local",
33
+ source: identity.path,
34
+ installCommand: `omk install ${identity.path} -l`,
35
+ tryEphemeralCommand: `omk -e ${identity.path}`,
36
+ trust: codeExecution ? "code-execution" : "declarative",
37
+ };
38
+ }
39
+ export function buildGalleryInstallSpecFromReview(identity, review) {
40
+ const status = assessGalleryTrialGate(identity, review);
41
+ if (status.outcome === "blocked") {
42
+ throw new Error(`Gallery trial blocked: ${status.reasons.join(", ")}`);
43
+ }
44
+ return buildGalleryInstallSpec(identity, expectedResourcesRequireCode(review));
45
+ }
46
+ function assertExactVersion(version) {
47
+ const verdict = validateExactNpmVersion(version);
48
+ if (!verdict.ok) {
49
+ throw new Error(`Gallery npm install requires an exact pinned version: ${verdict.message}`);
50
+ }
51
+ return verdict.version;
52
+ }
53
+ function isFullCommitSha(ref) {
54
+ return typeof ref === "string" && /^(?:[0-9a-f]{40}|[0-9a-f]{64})$/i.test(ref);
55
+ }
56
+ function expectedResourcesRequireCode(review) {
57
+ return (review.candidate?.expectedResources?.some((resource) => resource === "extension" || resource === "tool") ?? false);
58
+ }
59
+ //# sourceMappingURL=package-gallery-install.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-gallery-install.js","sourceRoot":"","sources":["../../src/core/package-gallery-install.ts"],"names":[],"mappings":"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","sourcesContent":["import { assessGalleryTrialGate } from \"./package-gallery-trial.ts\";\nimport type { GalleryInstallSpec, GalleryPackageIdentity, GalleryTrialReview } from \"./package-gallery-types.ts\";\nimport { validateExactNpmVersion } from \"./package-procurement.ts\";\n\nexport function buildGalleryInstallSpec(\n\tidentity: GalleryPackageIdentity,\n\tcodeExecution: boolean,\n\toptions: { readonly local?: boolean } = {},\n): GalleryInstallSpec {\n\tif (identity.kind === \"npm\") {\n\t\tconst version = assertExactVersion(identity.version);\n\t\tconst source = `npm:${identity.name}@${version}`;\n\t\treturn {\n\t\t\tkind: \"npm\",\n\t\t\tsource,\n\t\t\tinstallCommand: `omk install ${source}`,\n\t\t\ttryEphemeralCommand: `omk -e ${source}`,\n\t\t\ttrust: codeExecution ? \"code-execution\" : \"declarative\",\n\t\t};\n\t}\n\tif (identity.kind === \"git\") {\n\t\tif (!isFullCommitSha(identity.ref)) {\n\t\t\tthrow new Error(\"Gallery git install requires a full commit SHA.\");\n\t\t}\n\t\tconst source = `git:${identity.repo}@${identity.ref}`;\n\t\treturn {\n\t\t\tkind: \"git\",\n\t\t\tsource,\n\t\t\tinstallCommand: `omk install ${source}`,\n\t\t\ttryEphemeralCommand: `omk -e ${source}`,\n\t\t\ttrust: codeExecution ? \"code-execution\" : \"declarative\",\n\t\t};\n\t}\n\tif (options.local !== true) {\n\t\tthrow new Error(\"Gallery local installs require an explicit local option.\");\n\t}\n\treturn {\n\t\tkind: \"local\",\n\t\tsource: identity.path,\n\t\tinstallCommand: `omk install ${identity.path} -l`,\n\t\ttryEphemeralCommand: `omk -e ${identity.path}`,\n\t\ttrust: codeExecution ? \"code-execution\" : \"declarative\",\n\t};\n}\n\nexport function buildGalleryInstallSpecFromReview(\n\tidentity: GalleryPackageIdentity,\n\treview: GalleryTrialReview,\n): GalleryInstallSpec {\n\tconst status = assessGalleryTrialGate(identity, review);\n\tif (status.outcome === \"blocked\") {\n\t\tthrow new Error(`Gallery trial blocked: ${status.reasons.join(\", \")}`);\n\t}\n\treturn buildGalleryInstallSpec(identity, expectedResourcesRequireCode(review));\n}\n\nfunction assertExactVersion(version: string | undefined): string {\n\tconst verdict = validateExactNpmVersion(version);\n\tif (!verdict.ok) {\n\t\tthrow new Error(`Gallery npm install requires an exact pinned version: ${verdict.message}`);\n\t}\n\treturn verdict.version;\n}\n\nfunction isFullCommitSha(ref: string | undefined): ref is string {\n\treturn typeof ref === \"string\" && /^(?:[0-9a-f]{40}|[0-9a-f]{64})$/i.test(ref);\n}\n\nfunction expectedResourcesRequireCode(review: GalleryTrialReview): boolean {\n\treturn (\n\t\treview.candidate?.expectedResources?.some((resource) => resource === \"extension\" || resource === \"tool\") ?? false\n\t);\n}\n"]}
@@ -0,0 +1,13 @@
1
+ import { type GalleryManifest, type GalleryPreview, type GalleryPreviewInput, type GalleryResourceType } from "./package-gallery-types.ts";
2
+ export declare function normalizeGalleryManifest(input: unknown): GalleryManifest | null;
3
+ export declare function hasGalleryKeyword(input: unknown): boolean;
4
+ export declare function classifyGalleryResourceTypes(manifest: GalleryManifest | null, conventionDirs?: readonly string[]): GalleryResourceType[];
5
+ export declare function resolveGalleryTypeFacet(value: string | undefined): GalleryResourceType | undefined;
6
+ export declare function filterGalleryEntriesByType<T extends {
7
+ readonly resourceTypes: readonly GalleryResourceType[];
8
+ }>(entries: readonly T[], type: string | undefined): T[];
9
+ export declare function isValidGalleryVideoUrl(value: string | undefined): value is string;
10
+ export declare function isValidGalleryImageUrl(value: string | undefined): value is string;
11
+ export declare function selectGalleryPreview(input: GalleryPreviewInput): GalleryPreview | null;
12
+ export declare function filterManifestEntriesInsideRoot(root: string, entries: readonly string[]): string[];
13
+ //# sourceMappingURL=package-gallery-manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-gallery-manifest.d.ts","sourceRoot":"","sources":["../../src/core/package-gallery-manifest.ts"],"names":[],"mappings":"AAEA,OAAO,EAEN,KAAK,eAAe,EAEpB,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,MAAM,4BAA4B,CAAC;AAuBpC,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,GAAG,IAAI,CAoB/E;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAGzD;AAED,wBAAgB,4BAA4B,CAC3C,QAAQ,EAAE,eAAe,GAAG,IAAI,EAChC,cAAc,GAAE,SAAS,MAAM,EAAO,GACpC,mBAAmB,EAAE,CAavB;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,mBAAmB,GAAG,SAAS,CAkBlG;AAED,wBAAgB,0BAA0B,CAAC,CAAC,SAAS;IAAE,QAAQ,CAAC,aAAa,EAAE,SAAS,mBAAmB,EAAE,CAAA;CAAE,EAC9G,OAAO,EAAE,SAAS,CAAC,EAAE,EACrB,IAAI,EAAE,MAAM,GAAG,SAAS,GACtB,CAAC,EAAE,CAKL;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,IAAI,MAAM,CAEjF;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,IAAI,MAAM,CAEjF;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,mBAAmB,GAAG,cAAc,GAAG,IAAI,CAWtF;AAED,wBAAgB,+BAA+B,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAkBlG","sourcesContent":["import { existsSync, realpathSync } from \"node:fs\";\nimport { dirname, isAbsolute, relative, resolve } from \"node:path\";\nimport {\n\tGALLERY_RESOURCE_ORDER,\n\ttype GalleryManifest,\n\ttype GalleryManifestKey,\n\ttype GalleryPreview,\n\ttype GalleryPreviewInput,\n\ttype GalleryResourceType,\n} from \"./package-gallery-types.ts\";\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null;\n}\n\nfunction normalizeStringArray(value: unknown): string[] {\n\tif (!Array.isArray(value)) return [];\n\treturn value\n\t\t.filter((item): item is string => typeof item === \"string\")\n\t\t.map((item) => item.trim())\n\t\t.filter(Boolean);\n}\n\nfunction normalizeOptionalString(value: unknown): string | undefined {\n\treturn typeof value === \"string\" && value.trim().length > 0 ? value.trim() : undefined;\n}\n\nfunction manifestSection(input: Record<string, unknown>, key: GalleryManifestKey): Record<string, unknown> | undefined {\n\tconst section = input[key];\n\treturn isRecord(section) ? section : undefined;\n}\n\nexport function normalizeGalleryManifest(input: unknown): GalleryManifest | null {\n\tif (!isRecord(input)) return null;\n\n\tconst manifestKey: GalleryManifestKey | undefined = manifestSection(input, \"omk\") ? \"omk\" : undefined;\n\tif (!manifestKey) return null;\n\n\tconst section = manifestSection(input, manifestKey);\n\tif (!section) return null;\n\n\tconst manifest: GalleryManifest = {\n\t\tmanifestKey,\n\t\textensions: normalizeStringArray(section.extensions),\n\t\tskills: normalizeStringArray(section.skills),\n\t\tprompts: normalizeStringArray(section.prompts),\n\t\tthemes: normalizeStringArray(section.themes),\n\t\tvideo: normalizeOptionalString(section.video),\n\t\timage: normalizeOptionalString(section.image),\n\t\tdescription: normalizeOptionalString(section.description),\n\t};\n\treturn hasManifestResource(manifest) ? manifest : null;\n}\n\nexport function hasGalleryKeyword(input: unknown): boolean {\n\tif (!isRecord(input) || !Array.isArray(input.keywords)) return false;\n\treturn input.keywords.some((keyword) => keyword === \"omk-package\");\n}\n\nexport function classifyGalleryResourceTypes(\n\tmanifest: GalleryManifest | null,\n\tconventionDirs: readonly string[] = [],\n): GalleryResourceType[] {\n\tconst types = new Set<GalleryResourceType>();\n\tif ((manifest?.extensions.length ?? 0) > 0) types.add(\"extension\");\n\tif ((manifest?.skills.length ?? 0) > 0) types.add(\"skill\");\n\tif ((manifest?.prompts.length ?? 0) > 0) types.add(\"prompt\");\n\tif ((manifest?.themes.length ?? 0) > 0) types.add(\"theme\");\n\n\tfor (const dir of conventionDirs) {\n\t\tconst facet = resolveGalleryTypeFacet(dir);\n\t\tif (facet) types.add(facet);\n\t}\n\n\treturn GALLERY_RESOURCE_ORDER.filter((type) => types.has(type));\n}\n\nexport function resolveGalleryTypeFacet(value: string | undefined): GalleryResourceType | undefined {\n\tconst normalized = value?.trim().toLowerCase();\n\tswitch (normalized) {\n\t\tcase \"extension\":\n\t\tcase \"extensions\":\n\t\t\treturn \"extension\";\n\t\tcase \"skill\":\n\t\tcase \"skills\":\n\t\t\treturn \"skill\";\n\t\tcase \"prompt\":\n\t\tcase \"prompts\":\n\t\t\treturn \"prompt\";\n\t\tcase \"theme\":\n\t\tcase \"themes\":\n\t\t\treturn \"theme\";\n\t\tdefault:\n\t\t\treturn undefined;\n\t}\n}\n\nexport function filterGalleryEntriesByType<T extends { readonly resourceTypes: readonly GalleryResourceType[] }>(\n\tentries: readonly T[],\n\ttype: string | undefined,\n): T[] {\n\tconst facet = resolveGalleryTypeFacet(type);\n\tif (type === undefined) return [...entries];\n\tif (!facet) return [];\n\treturn entries.filter((entry) => entry.resourceTypes.includes(facet));\n}\n\nexport function isValidGalleryVideoUrl(value: string | undefined): value is string {\n\treturn isValidHttpsMediaUrl(value, new Set([\".mp4\"]));\n}\n\nexport function isValidGalleryImageUrl(value: string | undefined): value is string {\n\treturn isValidHttpsMediaUrl(value, new Set([\".png\", \".jpg\", \".jpeg\", \".webp\"]));\n}\n\nexport function selectGalleryPreview(input: GalleryPreviewInput): GalleryPreview | null {\n\tif (isValidGalleryVideoUrl(input.video)) {\n\t\treturn { kind: \"video\", url: input.video };\n\t}\n\tif (isValidGalleryImageUrl(input.image)) {\n\t\treturn { kind: \"image\", url: input.image };\n\t}\n\tif (input.themeName && input.resourceTypes?.includes(\"theme\")) {\n\t\treturn { kind: \"generated-theme\", marker: input.themeName };\n\t}\n\treturn null;\n}\n\nexport function filterManifestEntriesInsideRoot(root: string, entries: readonly string[]): string[] {\n\tconst rootAbs = resolve(root);\n\tconst rootExists = existsSync(rootAbs);\n\tconst rootReal = realpathOrSelf(rootAbs);\n\treturn entries.flatMap((entry) => {\n\t\tconst trimmed = entry.trim();\n\t\tif (!trimmed || isAbsolute(trimmed)) return [];\n\n\t\tconst candidate = resolve(rootAbs, trimmed);\n\t\tif (!isInsideRoot(rootAbs, candidate)) return [];\n\t\tif (rootExists) {\n\t\t\tconst checked = nearestExistingRealpath(candidate);\n\t\t\tif (checked !== undefined && !isInsideRoot(rootReal, checked)) return [];\n\t\t}\n\n\t\tconst rel = toSlashPath(relative(rootAbs, candidate));\n\t\treturn rel && !rel.startsWith(\"..\") ? [rel] : [];\n\t});\n}\n\nfunction hasManifestResource(manifest: GalleryManifest): boolean {\n\treturn (\n\t\tmanifest.extensions.length > 0 ||\n\t\tmanifest.skills.length > 0 ||\n\t\tmanifest.prompts.length > 0 ||\n\t\tmanifest.themes.length > 0 ||\n\t\tmanifest.video !== undefined ||\n\t\tmanifest.image !== undefined ||\n\t\tmanifest.description !== undefined\n\t);\n}\n\nfunction isValidHttpsMediaUrl(value: string | undefined, extensions: ReadonlySet<string>): value is string {\n\tif (!value) return false;\n\ttry {\n\t\tconst url = new URL(value);\n\t\tif (url.protocol !== \"https:\") return false;\n\t\tif (url.username || url.password) return false;\n\t\tconst lowerPath = url.pathname.toLowerCase();\n\t\treturn [...extensions].some((extension) => lowerPath.endsWith(extension));\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction toSlashPath(path: string): string {\n\treturn path.replace(/\\\\/g, \"/\");\n}\n\nfunction isInsideRoot(root: string, candidate: string): boolean {\n\tconst rel = relative(root, candidate);\n\treturn rel === \"\" || (!rel.startsWith(\"..\") && !isAbsolute(rel));\n}\n\nfunction realpathOrSelf(path: string): string {\n\ttry {\n\t\treturn realpathSync(path);\n\t} catch {\n\t\treturn path;\n\t}\n}\n\nfunction nearestExistingRealpath(path: string): string | undefined {\n\tlet current = path;\n\twhile (true) {\n\t\tif (existsSync(current)) {\n\t\t\treturn realpathOrSelf(current);\n\t\t}\n\t\tconst parent = dirname(current);\n\t\tif (parent === current) {\n\t\t\treturn undefined;\n\t\t}\n\t\tcurrent = parent;\n\t}\n}\n"]}
@@ -0,0 +1,183 @@
1
+ import { existsSync, realpathSync } from "node:fs";
2
+ import { dirname, isAbsolute, relative, resolve } from "node:path";
3
+ import { GALLERY_RESOURCE_ORDER, } from "./package-gallery-types.js";
4
+ function isRecord(value) {
5
+ return typeof value === "object" && value !== null;
6
+ }
7
+ function normalizeStringArray(value) {
8
+ if (!Array.isArray(value))
9
+ return [];
10
+ return value
11
+ .filter((item) => typeof item === "string")
12
+ .map((item) => item.trim())
13
+ .filter(Boolean);
14
+ }
15
+ function normalizeOptionalString(value) {
16
+ return typeof value === "string" && value.trim().length > 0 ? value.trim() : undefined;
17
+ }
18
+ function manifestSection(input, key) {
19
+ const section = input[key];
20
+ return isRecord(section) ? section : undefined;
21
+ }
22
+ export function normalizeGalleryManifest(input) {
23
+ if (!isRecord(input))
24
+ return null;
25
+ const manifestKey = manifestSection(input, "omk") ? "omk" : undefined;
26
+ if (!manifestKey)
27
+ return null;
28
+ const section = manifestSection(input, manifestKey);
29
+ if (!section)
30
+ return null;
31
+ const manifest = {
32
+ manifestKey,
33
+ extensions: normalizeStringArray(section.extensions),
34
+ skills: normalizeStringArray(section.skills),
35
+ prompts: normalizeStringArray(section.prompts),
36
+ themes: normalizeStringArray(section.themes),
37
+ video: normalizeOptionalString(section.video),
38
+ image: normalizeOptionalString(section.image),
39
+ description: normalizeOptionalString(section.description),
40
+ };
41
+ return hasManifestResource(manifest) ? manifest : null;
42
+ }
43
+ export function hasGalleryKeyword(input) {
44
+ if (!isRecord(input) || !Array.isArray(input.keywords))
45
+ return false;
46
+ return input.keywords.some((keyword) => keyword === "omk-package");
47
+ }
48
+ export function classifyGalleryResourceTypes(manifest, conventionDirs = []) {
49
+ const types = new Set();
50
+ if ((manifest?.extensions.length ?? 0) > 0)
51
+ types.add("extension");
52
+ if ((manifest?.skills.length ?? 0) > 0)
53
+ types.add("skill");
54
+ if ((manifest?.prompts.length ?? 0) > 0)
55
+ types.add("prompt");
56
+ if ((manifest?.themes.length ?? 0) > 0)
57
+ types.add("theme");
58
+ for (const dir of conventionDirs) {
59
+ const facet = resolveGalleryTypeFacet(dir);
60
+ if (facet)
61
+ types.add(facet);
62
+ }
63
+ return GALLERY_RESOURCE_ORDER.filter((type) => types.has(type));
64
+ }
65
+ export function resolveGalleryTypeFacet(value) {
66
+ const normalized = value?.trim().toLowerCase();
67
+ switch (normalized) {
68
+ case "extension":
69
+ case "extensions":
70
+ return "extension";
71
+ case "skill":
72
+ case "skills":
73
+ return "skill";
74
+ case "prompt":
75
+ case "prompts":
76
+ return "prompt";
77
+ case "theme":
78
+ case "themes":
79
+ return "theme";
80
+ default:
81
+ return undefined;
82
+ }
83
+ }
84
+ export function filterGalleryEntriesByType(entries, type) {
85
+ const facet = resolveGalleryTypeFacet(type);
86
+ if (type === undefined)
87
+ return [...entries];
88
+ if (!facet)
89
+ return [];
90
+ return entries.filter((entry) => entry.resourceTypes.includes(facet));
91
+ }
92
+ export function isValidGalleryVideoUrl(value) {
93
+ return isValidHttpsMediaUrl(value, new Set([".mp4"]));
94
+ }
95
+ export function isValidGalleryImageUrl(value) {
96
+ return isValidHttpsMediaUrl(value, new Set([".png", ".jpg", ".jpeg", ".webp"]));
97
+ }
98
+ export function selectGalleryPreview(input) {
99
+ if (isValidGalleryVideoUrl(input.video)) {
100
+ return { kind: "video", url: input.video };
101
+ }
102
+ if (isValidGalleryImageUrl(input.image)) {
103
+ return { kind: "image", url: input.image };
104
+ }
105
+ if (input.themeName && input.resourceTypes?.includes("theme")) {
106
+ return { kind: "generated-theme", marker: input.themeName };
107
+ }
108
+ return null;
109
+ }
110
+ export function filterManifestEntriesInsideRoot(root, entries) {
111
+ const rootAbs = resolve(root);
112
+ const rootExists = existsSync(rootAbs);
113
+ const rootReal = realpathOrSelf(rootAbs);
114
+ return entries.flatMap((entry) => {
115
+ const trimmed = entry.trim();
116
+ if (!trimmed || isAbsolute(trimmed))
117
+ return [];
118
+ const candidate = resolve(rootAbs, trimmed);
119
+ if (!isInsideRoot(rootAbs, candidate))
120
+ return [];
121
+ if (rootExists) {
122
+ const checked = nearestExistingRealpath(candidate);
123
+ if (checked !== undefined && !isInsideRoot(rootReal, checked))
124
+ return [];
125
+ }
126
+ const rel = toSlashPath(relative(rootAbs, candidate));
127
+ return rel && !rel.startsWith("..") ? [rel] : [];
128
+ });
129
+ }
130
+ function hasManifestResource(manifest) {
131
+ return (manifest.extensions.length > 0 ||
132
+ manifest.skills.length > 0 ||
133
+ manifest.prompts.length > 0 ||
134
+ manifest.themes.length > 0 ||
135
+ manifest.video !== undefined ||
136
+ manifest.image !== undefined ||
137
+ manifest.description !== undefined);
138
+ }
139
+ function isValidHttpsMediaUrl(value, extensions) {
140
+ if (!value)
141
+ return false;
142
+ try {
143
+ const url = new URL(value);
144
+ if (url.protocol !== "https:")
145
+ return false;
146
+ if (url.username || url.password)
147
+ return false;
148
+ const lowerPath = url.pathname.toLowerCase();
149
+ return [...extensions].some((extension) => lowerPath.endsWith(extension));
150
+ }
151
+ catch {
152
+ return false;
153
+ }
154
+ }
155
+ function toSlashPath(path) {
156
+ return path.replace(/\\/g, "/");
157
+ }
158
+ function isInsideRoot(root, candidate) {
159
+ const rel = relative(root, candidate);
160
+ return rel === "" || (!rel.startsWith("..") && !isAbsolute(rel));
161
+ }
162
+ function realpathOrSelf(path) {
163
+ try {
164
+ return realpathSync(path);
165
+ }
166
+ catch {
167
+ return path;
168
+ }
169
+ }
170
+ function nearestExistingRealpath(path) {
171
+ let current = path;
172
+ while (true) {
173
+ if (existsSync(current)) {
174
+ return realpathOrSelf(current);
175
+ }
176
+ const parent = dirname(current);
177
+ if (parent === current) {
178
+ return undefined;
179
+ }
180
+ current = parent;
181
+ }
182
+ }
183
+ //# sourceMappingURL=package-gallery-manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-gallery-manifest.js","sourceRoot":"","sources":["../../src/core/package-gallery-manifest.ts"],"names":[],"mappings":"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","sourcesContent":["import { existsSync, realpathSync } from \"node:fs\";\nimport { dirname, isAbsolute, relative, resolve } from \"node:path\";\nimport {\n\tGALLERY_RESOURCE_ORDER,\n\ttype GalleryManifest,\n\ttype GalleryManifestKey,\n\ttype GalleryPreview,\n\ttype GalleryPreviewInput,\n\ttype GalleryResourceType,\n} from \"./package-gallery-types.ts\";\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n\treturn typeof value === \"object\" && value !== null;\n}\n\nfunction normalizeStringArray(value: unknown): string[] {\n\tif (!Array.isArray(value)) return [];\n\treturn value\n\t\t.filter((item): item is string => typeof item === \"string\")\n\t\t.map((item) => item.trim())\n\t\t.filter(Boolean);\n}\n\nfunction normalizeOptionalString(value: unknown): string | undefined {\n\treturn typeof value === \"string\" && value.trim().length > 0 ? value.trim() : undefined;\n}\n\nfunction manifestSection(input: Record<string, unknown>, key: GalleryManifestKey): Record<string, unknown> | undefined {\n\tconst section = input[key];\n\treturn isRecord(section) ? section : undefined;\n}\n\nexport function normalizeGalleryManifest(input: unknown): GalleryManifest | null {\n\tif (!isRecord(input)) return null;\n\n\tconst manifestKey: GalleryManifestKey | undefined = manifestSection(input, \"omk\") ? \"omk\" : undefined;\n\tif (!manifestKey) return null;\n\n\tconst section = manifestSection(input, manifestKey);\n\tif (!section) return null;\n\n\tconst manifest: GalleryManifest = {\n\t\tmanifestKey,\n\t\textensions: normalizeStringArray(section.extensions),\n\t\tskills: normalizeStringArray(section.skills),\n\t\tprompts: normalizeStringArray(section.prompts),\n\t\tthemes: normalizeStringArray(section.themes),\n\t\tvideo: normalizeOptionalString(section.video),\n\t\timage: normalizeOptionalString(section.image),\n\t\tdescription: normalizeOptionalString(section.description),\n\t};\n\treturn hasManifestResource(manifest) ? manifest : null;\n}\n\nexport function hasGalleryKeyword(input: unknown): boolean {\n\tif (!isRecord(input) || !Array.isArray(input.keywords)) return false;\n\treturn input.keywords.some((keyword) => keyword === \"omk-package\");\n}\n\nexport function classifyGalleryResourceTypes(\n\tmanifest: GalleryManifest | null,\n\tconventionDirs: readonly string[] = [],\n): GalleryResourceType[] {\n\tconst types = new Set<GalleryResourceType>();\n\tif ((manifest?.extensions.length ?? 0) > 0) types.add(\"extension\");\n\tif ((manifest?.skills.length ?? 0) > 0) types.add(\"skill\");\n\tif ((manifest?.prompts.length ?? 0) > 0) types.add(\"prompt\");\n\tif ((manifest?.themes.length ?? 0) > 0) types.add(\"theme\");\n\n\tfor (const dir of conventionDirs) {\n\t\tconst facet = resolveGalleryTypeFacet(dir);\n\t\tif (facet) types.add(facet);\n\t}\n\n\treturn GALLERY_RESOURCE_ORDER.filter((type) => types.has(type));\n}\n\nexport function resolveGalleryTypeFacet(value: string | undefined): GalleryResourceType | undefined {\n\tconst normalized = value?.trim().toLowerCase();\n\tswitch (normalized) {\n\t\tcase \"extension\":\n\t\tcase \"extensions\":\n\t\t\treturn \"extension\";\n\t\tcase \"skill\":\n\t\tcase \"skills\":\n\t\t\treturn \"skill\";\n\t\tcase \"prompt\":\n\t\tcase \"prompts\":\n\t\t\treturn \"prompt\";\n\t\tcase \"theme\":\n\t\tcase \"themes\":\n\t\t\treturn \"theme\";\n\t\tdefault:\n\t\t\treturn undefined;\n\t}\n}\n\nexport function filterGalleryEntriesByType<T extends { readonly resourceTypes: readonly GalleryResourceType[] }>(\n\tentries: readonly T[],\n\ttype: string | undefined,\n): T[] {\n\tconst facet = resolveGalleryTypeFacet(type);\n\tif (type === undefined) return [...entries];\n\tif (!facet) return [];\n\treturn entries.filter((entry) => entry.resourceTypes.includes(facet));\n}\n\nexport function isValidGalleryVideoUrl(value: string | undefined): value is string {\n\treturn isValidHttpsMediaUrl(value, new Set([\".mp4\"]));\n}\n\nexport function isValidGalleryImageUrl(value: string | undefined): value is string {\n\treturn isValidHttpsMediaUrl(value, new Set([\".png\", \".jpg\", \".jpeg\", \".webp\"]));\n}\n\nexport function selectGalleryPreview(input: GalleryPreviewInput): GalleryPreview | null {\n\tif (isValidGalleryVideoUrl(input.video)) {\n\t\treturn { kind: \"video\", url: input.video };\n\t}\n\tif (isValidGalleryImageUrl(input.image)) {\n\t\treturn { kind: \"image\", url: input.image };\n\t}\n\tif (input.themeName && input.resourceTypes?.includes(\"theme\")) {\n\t\treturn { kind: \"generated-theme\", marker: input.themeName };\n\t}\n\treturn null;\n}\n\nexport function filterManifestEntriesInsideRoot(root: string, entries: readonly string[]): string[] {\n\tconst rootAbs = resolve(root);\n\tconst rootExists = existsSync(rootAbs);\n\tconst rootReal = realpathOrSelf(rootAbs);\n\treturn entries.flatMap((entry) => {\n\t\tconst trimmed = entry.trim();\n\t\tif (!trimmed || isAbsolute(trimmed)) return [];\n\n\t\tconst candidate = resolve(rootAbs, trimmed);\n\t\tif (!isInsideRoot(rootAbs, candidate)) return [];\n\t\tif (rootExists) {\n\t\t\tconst checked = nearestExistingRealpath(candidate);\n\t\t\tif (checked !== undefined && !isInsideRoot(rootReal, checked)) return [];\n\t\t}\n\n\t\tconst rel = toSlashPath(relative(rootAbs, candidate));\n\t\treturn rel && !rel.startsWith(\"..\") ? [rel] : [];\n\t});\n}\n\nfunction hasManifestResource(manifest: GalleryManifest): boolean {\n\treturn (\n\t\tmanifest.extensions.length > 0 ||\n\t\tmanifest.skills.length > 0 ||\n\t\tmanifest.prompts.length > 0 ||\n\t\tmanifest.themes.length > 0 ||\n\t\tmanifest.video !== undefined ||\n\t\tmanifest.image !== undefined ||\n\t\tmanifest.description !== undefined\n\t);\n}\n\nfunction isValidHttpsMediaUrl(value: string | undefined, extensions: ReadonlySet<string>): value is string {\n\tif (!value) return false;\n\ttry {\n\t\tconst url = new URL(value);\n\t\tif (url.protocol !== \"https:\") return false;\n\t\tif (url.username || url.password) return false;\n\t\tconst lowerPath = url.pathname.toLowerCase();\n\t\treturn [...extensions].some((extension) => lowerPath.endsWith(extension));\n\t} catch {\n\t\treturn false;\n\t}\n}\n\nfunction toSlashPath(path: string): string {\n\treturn path.replace(/\\\\/g, \"/\");\n}\n\nfunction isInsideRoot(root: string, candidate: string): boolean {\n\tconst rel = relative(root, candidate);\n\treturn rel === \"\" || (!rel.startsWith(\"..\") && !isAbsolute(rel));\n}\n\nfunction realpathOrSelf(path: string): string {\n\ttry {\n\t\treturn realpathSync(path);\n\t} catch {\n\t\treturn path;\n\t}\n}\n\nfunction nearestExistingRealpath(path: string): string | undefined {\n\tlet current = path;\n\twhile (true) {\n\t\tif (existsSync(current)) {\n\t\t\treturn realpathOrSelf(current);\n\t\t}\n\t\tconst parent = dirname(current);\n\t\tif (parent === current) {\n\t\t\treturn undefined;\n\t\t}\n\t\tcurrent = parent;\n\t}\n}\n"]}
@@ -0,0 +1,4 @@
1
+ import type { GalleryPackageIdentity, GalleryTrialGateStatus, GalleryTrialReviewInput } from "./package-gallery-types.ts";
2
+ export declare function inferExtensionCapabilityBadges(source: string): string[];
3
+ export declare function assessGalleryTrialGate(identity: GalleryPackageIdentity, review: GalleryTrialReviewInput): GalleryTrialGateStatus;
4
+ //# sourceMappingURL=package-gallery-trial.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package-gallery-trial.d.ts","sourceRoot":"","sources":["../../src/core/package-gallery-trial.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACX,sBAAsB,EACtB,sBAAsB,EACtB,uBAAuB,EACvB,MAAM,4BAA4B,CAAC;AAEpC,wBAAgB,8BAA8B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CASvE;AAED,wBAAgB,sBAAsB,CACrC,QAAQ,EAAE,sBAAsB,EAChC,MAAM,EAAE,uBAAuB,GAC7B,sBAAsB,CAwBxB","sourcesContent":["import { trialIdentity } from \"./package-gallery-identity.ts\";\nimport type {\n\tGalleryPackageIdentity,\n\tGalleryTrialGateStatus,\n\tGalleryTrialReviewInput,\n} from \"./package-gallery-types.ts\";\n\nexport function inferExtensionCapabilityBadges(source: string): string[] {\n\tconst stripped = stripCommentsAndStrings(source);\n\tconst badges = new Set<string>();\n\tif (/\\bomk\\s*\\.\\s*registerTool\\s*\\(/.test(stripped)) badges.add(\"tools\");\n\tif (/\\bomk\\s*\\.\\s*on\\s*\\(/.test(stripped)) badges.add(\"hooks\");\n\tif (/\\bomk\\s*\\.\\s*registerProvider\\s*\\(/.test(stripped)) badges.add(\"provider\");\n\tif (/\\bomk\\s*\\.\\s*registerMessageRenderer\\s*\\(/.test(stripped)) badges.add(\"ui\");\n\tif (/session_before_compact/.test(source) && /\\bomk\\s*\\.\\s*on\\s*\\(/.test(stripped)) badges.add(\"compaction\");\n\treturn [\"tools\", \"hooks\", \"provider\", \"ui\", \"compaction\"].filter((badge) => badges.has(badge));\n}\n\nexport function assessGalleryTrialGate(\n\tidentity: GalleryPackageIdentity,\n\treview: GalleryTrialReviewInput,\n): GalleryTrialGateStatus {\n\tconst reasons: string[] = [];\n\n\tif (!review.pinned) reasons.push(\"exact-pin-required\");\n\tfor (const capability of review.capabilities) {\n\t\tif (capability === \"credential-read\" || capability === \"host-socket\") {\n\t\t\treasons.push(`capability-hard-block: ${capability}`);\n\t\t}\n\t}\n\tif (review.licenseVerdict === \"reject\") reasons.push(\"license-blocked\");\n\tif (review.lifecycleVerdict === \"reject\") reasons.push(\"lifecycle-scripts-blocked\");\n\tif (review.pathCompatibility === \"legacy-hardcoded\") reasons.push(\"legacy-hardcoded-paths\");\n\tif (review.adoption === \"reject\" || review.adoption === \"deferred\") {\n\t\treasons.push(...review.rejectedReasons);\n\t}\n\n\tconst dedupedReasons = unique(reasons);\n\treturn {\n\t\toutcome: dedupedReasons.length === 0 ? \"admitted\" : \"blocked\",\n\t\tidentity: trialIdentity(identity),\n\t\tadoption: review.adoption,\n\t\tpinned: review.pinned,\n\t\treasons: dedupedReasons,\n\t};\n}\n\nfunction stripCommentsAndStrings(source: string): string {\n\treturn source\n\t\t.replace(/\\/\\*[\\s\\S]*?\\*\\//g, \"\")\n\t\t.replace(/\\/\\/.*$/gm, \"\")\n\t\t.replace(/\"(?:\\\\.|[^\"\\\\])*\"/g, '\"\"')\n\t\t.replace(/'(?:\\\\.|[^'\\\\])*'/g, \"''\")\n\t\t.replace(/`(?:\\\\.|[^`\\\\])*`/g, \"``\");\n}\n\nfunction unique(values: readonly string[]): string[] {\n\treturn [...new Set(values)];\n}\n"]}