open-multi-agent-kit 0.80.6 → 0.80.7

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 (981) hide show
  1. package/CHANGELOG.md +11 -1
  2. package/README.md +22 -14
  3. package/dist/cli/config-selector.d.ts +1 -1
  4. package/dist/cli/config-selector.d.ts.map +1 -1
  5. package/dist/cli/config-selector.js +1 -1
  6. package/dist/cli/config-selector.js.map +1 -1
  7. package/dist/config.d.ts +1 -0
  8. package/dist/config.d.ts.map +1 -1
  9. package/dist/config.js +9 -8
  10. package/dist/config.js.map +1 -1
  11. package/dist/core/agent-session.d.ts +45 -6
  12. package/dist/core/agent-session.d.ts.map +1 -1
  13. package/dist/core/agent-session.js +197 -13
  14. package/dist/core/agent-session.js.map +1 -1
  15. package/dist/core/auth-storage.d.ts +4 -1
  16. package/dist/core/auth-storage.d.ts.map +1 -1
  17. package/dist/core/auth-storage.js +5 -5
  18. package/dist/core/auth-storage.js.map +1 -1
  19. package/dist/core/bash-executor.d.ts.map +1 -1
  20. package/dist/core/bash-executor.js +1 -1
  21. package/dist/core/bash-executor.js.map +1 -1
  22. package/dist/core/command-safety.d.ts +11 -0
  23. package/dist/core/command-safety.d.ts.map +1 -0
  24. package/dist/core/command-safety.js +528 -0
  25. package/dist/core/command-safety.js.map +1 -0
  26. package/dist/core/compaction/branch-summarization.d.ts.map +1 -1
  27. package/dist/core/compaction/branch-summarization.js +14 -4
  28. package/dist/core/compaction/branch-summarization.js.map +1 -1
  29. package/dist/core/compaction/compaction.d.ts +18 -1
  30. package/dist/core/compaction/compaction.d.ts.map +1 -1
  31. package/dist/core/compaction/compaction.js +80 -42
  32. package/dist/core/compaction/compaction.js.map +1 -1
  33. package/dist/core/compaction/pruner-policy.d.ts +84 -0
  34. package/dist/core/compaction/pruner-policy.d.ts.map +1 -0
  35. package/dist/core/compaction/pruner-policy.js +273 -0
  36. package/dist/core/compaction/pruner-policy.js.map +1 -0
  37. package/dist/core/context-graph-identity-resolution.d.ts +114 -0
  38. package/dist/core/context-graph-identity-resolution.d.ts.map +1 -0
  39. package/dist/core/context-graph-identity-resolution.js +127 -0
  40. package/dist/core/context-graph-identity-resolution.js.map +1 -0
  41. package/dist/core/context-graph-memory-store.d.ts +153 -0
  42. package/dist/core/context-graph-memory-store.d.ts.map +1 -0
  43. package/dist/core/context-graph-memory-store.js +377 -0
  44. package/dist/core/context-graph-memory-store.js.map +1 -0
  45. package/dist/core/context-graph-ontology-generation.d.ts +104 -0
  46. package/dist/core/context-graph-ontology-generation.d.ts.map +1 -0
  47. package/dist/core/context-graph-ontology-generation.js +135 -0
  48. package/dist/core/context-graph-ontology-generation.js.map +1 -0
  49. package/dist/core/context-graph-ontology-registry.d.ts +766 -0
  50. package/dist/core/context-graph-ontology-registry.d.ts.map +1 -0
  51. package/dist/core/context-graph-ontology-registry.js +1133 -0
  52. package/dist/core/context-graph-ontology-registry.js.map +1 -0
  53. package/dist/core/context-graph-policy.d.ts +68 -0
  54. package/dist/core/context-graph-policy.d.ts.map +1 -0
  55. package/dist/core/context-graph-policy.js +221 -0
  56. package/dist/core/context-graph-policy.js.map +1 -0
  57. package/dist/core/context-graph-reasoning.d.ts +130 -0
  58. package/dist/core/context-graph-reasoning.d.ts.map +1 -0
  59. package/dist/core/context-graph-reasoning.js +442 -0
  60. package/dist/core/context-graph-reasoning.js.map +1 -0
  61. package/dist/core/context-graph-retrieval.d.ts +120 -0
  62. package/dist/core/context-graph-retrieval.d.ts.map +1 -0
  63. package/dist/core/context-graph-retrieval.js +288 -0
  64. package/dist/core/context-graph-retrieval.js.map +1 -0
  65. package/dist/core/contract-verification.d.ts +78 -0
  66. package/dist/core/contract-verification.d.ts.map +1 -0
  67. package/dist/core/contract-verification.js +110 -0
  68. package/dist/core/contract-verification.js.map +1 -0
  69. package/dist/core/exact-cache-policy.d.ts +100 -0
  70. package/dist/core/exact-cache-policy.d.ts.map +1 -0
  71. package/dist/core/exact-cache-policy.js +175 -0
  72. package/dist/core/exact-cache-policy.js.map +1 -0
  73. package/dist/core/exec.d.ts +2 -0
  74. package/dist/core/exec.d.ts.map +1 -1
  75. package/dist/core/exec.js +1 -0
  76. package/dist/core/exec.js.map +1 -1
  77. package/dist/core/export-html/template.js +2 -2
  78. package/dist/core/extensions/builtin/command-safety-gate.d.ts +77 -0
  79. package/dist/core/extensions/builtin/command-safety-gate.d.ts.map +1 -0
  80. package/dist/core/extensions/builtin/command-safety-gate.js +147 -0
  81. package/dist/core/extensions/builtin/command-safety-gate.js.map +1 -0
  82. package/dist/core/extensions/loader.d.ts +4 -4
  83. package/dist/core/extensions/loader.d.ts.map +1 -1
  84. package/dist/core/extensions/loader.js +94 -56
  85. package/dist/core/extensions/loader.js.map +1 -1
  86. package/dist/core/extensions/runner.d.ts.map +1 -1
  87. package/dist/core/extensions/runner.js +1 -1
  88. package/dist/core/extensions/runner.js.map +1 -1
  89. package/dist/core/extensions/types.d.ts +38 -10
  90. package/dist/core/extensions/types.d.ts.map +1 -1
  91. package/dist/core/extensions/types.js.map +1 -1
  92. package/dist/core/freedom/banner.d.ts +14 -0
  93. package/dist/core/freedom/banner.d.ts.map +1 -0
  94. package/dist/core/freedom/banner.js +22 -0
  95. package/dist/core/freedom/banner.js.map +1 -0
  96. package/dist/core/freedom/config.d.ts +27 -0
  97. package/dist/core/freedom/config.d.ts.map +1 -0
  98. package/dist/core/freedom/config.js +216 -0
  99. package/dist/core/freedom/config.js.map +1 -0
  100. package/dist/core/freedom/index.d.ts +23 -0
  101. package/dist/core/freedom/index.d.ts.map +1 -0
  102. package/dist/core/freedom/index.js +19 -0
  103. package/dist/core/freedom/index.js.map +1 -0
  104. package/dist/core/freedom/policy.d.ts +42 -0
  105. package/dist/core/freedom/policy.d.ts.map +1 -0
  106. package/dist/core/freedom/policy.js +47 -0
  107. package/dist/core/freedom/policy.js.map +1 -0
  108. package/dist/core/freedom/safety-floor.d.ts +73 -0
  109. package/dist/core/freedom/safety-floor.d.ts.map +1 -0
  110. package/dist/core/freedom/safety-floor.js +275 -0
  111. package/dist/core/freedom/safety-floor.js.map +1 -0
  112. package/dist/core/harness-control-events.d.ts +13 -1
  113. package/dist/core/harness-control-events.d.ts.map +1 -1
  114. package/dist/core/harness-control-events.js +216 -41
  115. package/dist/core/harness-control-events.js.map +1 -1
  116. package/dist/core/harness-control-replay.d.ts +7 -2
  117. package/dist/core/harness-control-replay.d.ts.map +1 -1
  118. package/dist/core/harness-control-replay.js +36 -4
  119. package/dist/core/harness-control-replay.js.map +1 -1
  120. package/dist/core/headroom-middleware.d.ts +35 -0
  121. package/dist/core/headroom-middleware.d.ts.map +1 -0
  122. package/dist/core/headroom-middleware.js +166 -0
  123. package/dist/core/headroom-middleware.js.map +1 -0
  124. package/dist/core/hook-inventory.d.ts +23 -0
  125. package/dist/core/hook-inventory.d.ts.map +1 -0
  126. package/dist/core/hook-inventory.js +50 -0
  127. package/dist/core/hook-inventory.js.map +1 -0
  128. package/dist/core/lean-context-middleware.d.ts +12 -0
  129. package/dist/core/lean-context-middleware.d.ts.map +1 -0
  130. package/dist/core/lean-context-middleware.js +87 -0
  131. package/dist/core/lean-context-middleware.js.map +1 -0
  132. package/dist/core/lean-context-policy.d.ts +45 -0
  133. package/dist/core/lean-context-policy.d.ts.map +1 -0
  134. package/dist/core/lean-context-policy.js +108 -0
  135. package/dist/core/lean-context-policy.js.map +1 -0
  136. package/dist/core/loadout-access-policy.d.ts +41 -0
  137. package/dist/core/loadout-access-policy.d.ts.map +1 -0
  138. package/dist/core/loadout-access-policy.js +182 -0
  139. package/dist/core/loadout-access-policy.js.map +1 -0
  140. package/dist/core/loadout-runtime.d.ts +84 -0
  141. package/dist/core/loadout-runtime.d.ts.map +1 -0
  142. package/dist/core/loadout-runtime.js +157 -0
  143. package/dist/core/loadout-runtime.js.map +1 -0
  144. package/dist/core/loadouts.d.ts +147 -0
  145. package/dist/core/loadouts.d.ts.map +1 -0
  146. package/dist/core/loadouts.js +442 -0
  147. package/dist/core/loadouts.js.map +1 -0
  148. package/dist/core/mcp-inventory.d.ts +34 -0
  149. package/dist/core/mcp-inventory.d.ts.map +1 -1
  150. package/dist/core/mcp-inventory.js +53 -1
  151. package/dist/core/mcp-inventory.js.map +1 -1
  152. package/dist/core/mcp-presets.d.ts +57 -0
  153. package/dist/core/mcp-presets.d.ts.map +1 -0
  154. package/dist/core/mcp-presets.js +81 -0
  155. package/dist/core/mcp-presets.js.map +1 -0
  156. package/dist/core/model-registry.d.ts +1 -0
  157. package/dist/core/model-registry.d.ts.map +1 -1
  158. package/dist/core/model-registry.js +40 -17
  159. package/dist/core/model-registry.js.map +1 -1
  160. package/dist/core/model-resolver.d.ts.map +1 -1
  161. package/dist/core/model-resolver.js +1 -0
  162. package/dist/core/model-resolver.js.map +1 -1
  163. package/dist/core/native-adoption-benchmark.d.ts +166 -0
  164. package/dist/core/native-adoption-benchmark.d.ts.map +1 -0
  165. package/dist/core/native-adoption-benchmark.js +624 -0
  166. package/dist/core/native-adoption-benchmark.js.map +1 -0
  167. package/dist/core/observability-trace.d.ts +80 -0
  168. package/dist/core/observability-trace.d.ts.map +1 -0
  169. package/dist/core/observability-trace.js +140 -0
  170. package/dist/core/observability-trace.js.map +1 -0
  171. package/dist/core/orchestration/checkpoint.d.ts +83 -0
  172. package/dist/core/orchestration/checkpoint.d.ts.map +1 -0
  173. package/dist/core/orchestration/checkpoint.js +152 -0
  174. package/dist/core/orchestration/checkpoint.js.map +1 -0
  175. package/dist/core/orchestration/errors.d.ts +74 -0
  176. package/dist/core/orchestration/errors.d.ts.map +1 -0
  177. package/dist/core/orchestration/errors.js +52 -0
  178. package/dist/core/orchestration/errors.js.map +1 -0
  179. package/dist/core/orchestration/merge-queue.d.ts +121 -0
  180. package/dist/core/orchestration/merge-queue.d.ts.map +1 -0
  181. package/dist/core/orchestration/merge-queue.js +149 -0
  182. package/dist/core/orchestration/merge-queue.js.map +1 -0
  183. package/dist/core/orchestration/recovery.d.ts +106 -0
  184. package/dist/core/orchestration/recovery.d.ts.map +1 -0
  185. package/dist/core/orchestration/recovery.js +110 -0
  186. package/dist/core/orchestration/recovery.js.map +1 -0
  187. package/dist/core/orchestration/replay-ledger.d.ts +76 -0
  188. package/dist/core/orchestration/replay-ledger.d.ts.map +1 -0
  189. package/dist/core/orchestration/replay-ledger.js +395 -0
  190. package/dist/core/orchestration/replay-ledger.js.map +1 -0
  191. package/dist/core/orchestration/scheduler-state.d.ts +78 -0
  192. package/dist/core/orchestration/scheduler-state.d.ts.map +1 -0
  193. package/dist/core/orchestration/scheduler-state.js +185 -0
  194. package/dist/core/orchestration/scheduler-state.js.map +1 -0
  195. package/dist/core/orchestration/scheduler-store.d.ts +309 -0
  196. package/dist/core/orchestration/scheduler-store.d.ts.map +1 -0
  197. package/dist/core/orchestration/scheduler-store.js +368 -0
  198. package/dist/core/orchestration/scheduler-store.js.map +1 -0
  199. package/dist/core/orchestration/sqlite-scheduler-store.d.ts +57 -0
  200. package/dist/core/orchestration/sqlite-scheduler-store.d.ts.map +1 -0
  201. package/dist/core/orchestration/sqlite-scheduler-store.js +528 -0
  202. package/dist/core/orchestration/sqlite-scheduler-store.js.map +1 -0
  203. package/dist/core/orchestration/transaction-coordinator.d.ts +217 -0
  204. package/dist/core/orchestration/transaction-coordinator.d.ts.map +1 -0
  205. package/dist/core/orchestration/transaction-coordinator.js +281 -0
  206. package/dist/core/orchestration/transaction-coordinator.js.map +1 -0
  207. package/dist/core/orchestration/verification-contract.d.ts +197 -0
  208. package/dist/core/orchestration/verification-contract.d.ts.map +1 -0
  209. package/dist/core/orchestration/verification-contract.js +145 -0
  210. package/dist/core/orchestration/verification-contract.js.map +1 -0
  211. package/dist/core/package-composition.d.ts +68 -0
  212. package/dist/core/package-composition.d.ts.map +1 -0
  213. package/dist/core/package-composition.js +304 -0
  214. package/dist/core/package-composition.js.map +1 -0
  215. package/dist/core/package-gallery.d.ts +124 -0
  216. package/dist/core/package-gallery.d.ts.map +1 -0
  217. package/dist/core/package-gallery.js +392 -0
  218. package/dist/core/package-gallery.js.map +1 -0
  219. package/dist/core/package-manager.d.ts +69 -0
  220. package/dist/core/package-manager.d.ts.map +1 -1
  221. package/dist/core/package-manager.js +367 -69
  222. package/dist/core/package-manager.js.map +1 -1
  223. package/dist/core/package-procurement.d.ts +268 -0
  224. package/dist/core/package-procurement.d.ts.map +1 -0
  225. package/dist/core/package-procurement.js +697 -0
  226. package/dist/core/package-procurement.js.map +1 -0
  227. package/dist/core/package-trial-runtime.d.ts +75 -0
  228. package/dist/core/package-trial-runtime.d.ts.map +1 -0
  229. package/dist/core/package-trial-runtime.js +73 -0
  230. package/dist/core/package-trial-runtime.js.map +1 -0
  231. package/dist/core/package-trial-sandbox.d.ts +27 -0
  232. package/dist/core/package-trial-sandbox.d.ts.map +1 -0
  233. package/dist/core/package-trial-sandbox.js +102 -0
  234. package/dist/core/package-trial-sandbox.js.map +1 -0
  235. package/dist/core/policy-overlays-runtime.d.ts +141 -0
  236. package/dist/core/policy-overlays-runtime.d.ts.map +1 -0
  237. package/dist/core/policy-overlays-runtime.js +720 -0
  238. package/dist/core/policy-overlays-runtime.js.map +1 -0
  239. package/dist/core/read-anchor-registry.d.ts +27 -0
  240. package/dist/core/read-anchor-registry.d.ts.map +1 -0
  241. package/dist/core/read-anchor-registry.js +103 -0
  242. package/dist/core/read-anchor-registry.js.map +1 -0
  243. package/dist/core/read-anchors.d.ts +110 -0
  244. package/dist/core/read-anchors.d.ts.map +1 -0
  245. package/dist/core/read-anchors.js +193 -0
  246. package/dist/core/read-anchors.js.map +1 -0
  247. package/dist/core/read-content-cache.d.ts +22 -0
  248. package/dist/core/read-content-cache.d.ts.map +1 -0
  249. package/dist/core/read-content-cache.js +79 -0
  250. package/dist/core/read-content-cache.js.map +1 -0
  251. package/dist/core/recovery-checkpoint.d.ts +196 -0
  252. package/dist/core/recovery-checkpoint.d.ts.map +1 -0
  253. package/dist/core/recovery-checkpoint.js +382 -0
  254. package/dist/core/recovery-checkpoint.js.map +1 -0
  255. package/dist/core/resolve-config-value.d.ts +1 -1
  256. package/dist/core/resolve-config-value.d.ts.map +1 -1
  257. package/dist/core/resolve-config-value.js +30 -2
  258. package/dist/core/resolve-config-value.js.map +1 -1
  259. package/dist/core/resource-loader.d.ts +23 -21
  260. package/dist/core/resource-loader.d.ts.map +1 -1
  261. package/dist/core/resource-loader.js +93 -15
  262. package/dist/core/resource-loader.js.map +1 -1
  263. package/dist/core/sandbox/backend.d.ts +25 -0
  264. package/dist/core/sandbox/backend.d.ts.map +1 -0
  265. package/dist/core/sandbox/backend.js +150 -0
  266. package/dist/core/sandbox/backend.js.map +1 -0
  267. package/dist/core/sandbox/env.d.ts +6 -0
  268. package/dist/core/sandbox/env.d.ts.map +1 -0
  269. package/dist/core/sandbox/env.js +46 -0
  270. package/dist/core/sandbox/env.js.map +1 -0
  271. package/dist/core/sandbox/path-resolver.d.ts +4 -0
  272. package/dist/core/sandbox/path-resolver.d.ts.map +1 -0
  273. package/dist/core/sandbox/path-resolver.js +44 -0
  274. package/dist/core/sandbox/path-resolver.js.map +1 -0
  275. package/dist/core/sandbox/policy.d.ts +87 -0
  276. package/dist/core/sandbox/policy.d.ts.map +1 -0
  277. package/dist/core/sandbox/policy.js +280 -0
  278. package/dist/core/sandbox/policy.js.map +1 -0
  279. package/dist/core/sandbox/spawn.d.ts +20 -0
  280. package/dist/core/sandbox/spawn.d.ts.map +1 -0
  281. package/dist/core/sandbox/spawn.js +80 -0
  282. package/dist/core/sandbox/spawn.js.map +1 -0
  283. package/dist/core/sdk.d.ts +83 -4
  284. package/dist/core/sdk.d.ts.map +1 -1
  285. package/dist/core/sdk.js +143 -55
  286. package/dist/core/sdk.js.map +1 -1
  287. package/dist/core/semantic-cache-policy.d.ts +45 -0
  288. package/dist/core/semantic-cache-policy.d.ts.map +1 -0
  289. package/dist/core/semantic-cache-policy.js +220 -0
  290. package/dist/core/semantic-cache-policy.js.map +1 -0
  291. package/dist/core/session-digest.d.ts +57 -0
  292. package/dist/core/session-digest.d.ts.map +1 -0
  293. package/dist/core/session-digest.js +193 -0
  294. package/dist/core/session-digest.js.map +1 -0
  295. package/dist/core/session-manager.d.ts +2 -2
  296. package/dist/core/session-manager.d.ts.map +1 -1
  297. package/dist/core/session-manager.js +5 -4
  298. package/dist/core/session-manager.js.map +1 -1
  299. package/dist/core/settings-manager.d.ts +14 -0
  300. package/dist/core/settings-manager.d.ts.map +1 -1
  301. package/dist/core/settings-manager.js +43 -2
  302. package/dist/core/settings-manager.js.map +1 -1
  303. package/dist/core/system-prompt.d.ts.map +1 -1
  304. package/dist/core/system-prompt.js +25 -7
  305. package/dist/core/system-prompt.js.map +1 -1
  306. package/dist/core/telemetry.d.ts.map +1 -1
  307. package/dist/core/telemetry.js +1 -1
  308. package/dist/core/telemetry.js.map +1 -1
  309. package/dist/core/timings.d.ts +1 -1
  310. package/dist/core/timings.d.ts.map +1 -1
  311. package/dist/core/timings.js +2 -2
  312. package/dist/core/timings.js.map +1 -1
  313. package/dist/core/tools/bash.d.ts +28 -3
  314. package/dist/core/tools/bash.d.ts.map +1 -1
  315. package/dist/core/tools/bash.js +53 -10
  316. package/dist/core/tools/bash.js.map +1 -1
  317. package/dist/core/tools/edit.d.ts +12 -0
  318. package/dist/core/tools/edit.d.ts.map +1 -1
  319. package/dist/core/tools/edit.js +24 -0
  320. package/dist/core/tools/edit.js.map +1 -1
  321. package/dist/core/tools/find.d.ts +3 -0
  322. package/dist/core/tools/find.d.ts.map +1 -1
  323. package/dist/core/tools/find.js +3 -0
  324. package/dist/core/tools/find.js.map +1 -1
  325. package/dist/core/tools/grep.d.ts +3 -0
  326. package/dist/core/tools/grep.d.ts.map +1 -1
  327. package/dist/core/tools/grep.js +4 -1
  328. package/dist/core/tools/grep.js.map +1 -1
  329. package/dist/core/tools/index.d.ts +1 -1
  330. package/dist/core/tools/index.d.ts.map +1 -1
  331. package/dist/core/tools/index.js.map +1 -1
  332. package/dist/core/tools/ls.d.ts +3 -0
  333. package/dist/core/tools/ls.d.ts.map +1 -1
  334. package/dist/core/tools/ls.js +3 -0
  335. package/dist/core/tools/ls.js.map +1 -1
  336. package/dist/core/tools/output-accumulator.d.ts.map +1 -1
  337. package/dist/core/tools/output-accumulator.js +1 -1
  338. package/dist/core/tools/output-accumulator.js.map +1 -1
  339. package/dist/core/tools/read.d.ts +13 -0
  340. package/dist/core/tools/read.d.ts.map +1 -1
  341. package/dist/core/tools/read.js +29 -2
  342. package/dist/core/tools/read.js.map +1 -1
  343. package/dist/core/tools/write.d.ts +3 -0
  344. package/dist/core/tools/write.d.ts.map +1 -1
  345. package/dist/core/tools/write.js +3 -0
  346. package/dist/core/tools/write.js.map +1 -1
  347. package/dist/index.d.ts +19 -4
  348. package/dist/index.d.ts.map +1 -1
  349. package/dist/index.js +17 -2
  350. package/dist/index.js.map +1 -1
  351. package/dist/main.d.ts.map +1 -1
  352. package/dist/main.js +4 -6
  353. package/dist/main.js.map +1 -1
  354. package/dist/migrations.d.ts.map +1 -1
  355. package/dist/migrations.js +1 -1
  356. package/dist/migrations.js.map +1 -1
  357. package/dist/modes/interactive/components/control-panel-gradient-motion.d.ts +28 -0
  358. package/dist/modes/interactive/components/control-panel-gradient-motion.d.ts.map +1 -0
  359. package/dist/modes/interactive/components/control-panel-gradient-motion.js +146 -0
  360. package/dist/modes/interactive/components/control-panel-gradient-motion.js.map +1 -0
  361. package/dist/modes/interactive/components/control-panel-gradient.d.ts +27 -0
  362. package/dist/modes/interactive/components/control-panel-gradient.d.ts.map +1 -0
  363. package/dist/modes/interactive/components/control-panel-gradient.js +127 -0
  364. package/dist/modes/interactive/components/control-panel-gradient.js.map +1 -0
  365. package/dist/modes/interactive/components/control-panel.d.ts +28 -1
  366. package/dist/modes/interactive/components/control-panel.d.ts.map +1 -1
  367. package/dist/modes/interactive/components/control-panel.js +153 -3
  368. package/dist/modes/interactive/components/control-panel.js.map +1 -1
  369. package/dist/modes/interactive/components/earendil-announcement.d.ts.map +1 -1
  370. package/dist/modes/interactive/components/earendil-announcement.js +1 -1
  371. package/dist/modes/interactive/components/earendil-announcement.js.map +1 -1
  372. package/dist/modes/interactive/components/extension-editor.d.ts.map +1 -1
  373. package/dist/modes/interactive/components/extension-editor.js +1 -1
  374. package/dist/modes/interactive/components/extension-editor.js.map +1 -1
  375. package/dist/modes/interactive/components/footer.d.ts.map +1 -1
  376. package/dist/modes/interactive/components/footer.js +8 -0
  377. package/dist/modes/interactive/components/footer.js.map +1 -1
  378. package/dist/modes/interactive/components/mcp-selector.d.ts +2 -0
  379. package/dist/modes/interactive/components/mcp-selector.d.ts.map +1 -1
  380. package/dist/modes/interactive/components/mcp-selector.js +18 -1
  381. package/dist/modes/interactive/components/mcp-selector.js.map +1 -1
  382. package/dist/modes/interactive/components/model-selector-state.d.ts +101 -0
  383. package/dist/modes/interactive/components/model-selector-state.d.ts.map +1 -0
  384. package/dist/modes/interactive/components/model-selector-state.js +261 -0
  385. package/dist/modes/interactive/components/model-selector-state.js.map +1 -0
  386. package/dist/modes/interactive/components/model-selector.d.ts +44 -10
  387. package/dist/modes/interactive/components/model-selector.d.ts.map +1 -1
  388. package/dist/modes/interactive/components/model-selector.js +163 -110
  389. package/dist/modes/interactive/components/model-selector.js.map +1 -1
  390. package/dist/modes/interactive/components/theme-selector.d.ts +1 -0
  391. package/dist/modes/interactive/components/theme-selector.d.ts.map +1 -1
  392. package/dist/modes/interactive/components/theme-selector.js +10 -1
  393. package/dist/modes/interactive/components/theme-selector.js.map +1 -1
  394. package/dist/modes/interactive/interactive-mode.d.ts +4 -2
  395. package/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
  396. package/dist/modes/interactive/interactive-mode.js +61 -13
  397. package/dist/modes/interactive/interactive-mode.js.map +1 -1
  398. package/dist/modes/interactive/theme/omk-blackboard.json +91 -0
  399. package/dist/modes/interactive/theme/omk-freedom-grid.json +91 -0
  400. package/dist/modes/interactive/theme/omk-neon-ops.json +90 -0
  401. package/dist/modes/interactive/theme/omk-slate-light.json +91 -0
  402. package/dist/modes/interactive/theme/theme.d.ts.map +1 -1
  403. package/dist/modes/interactive/theme/theme.js +14 -0
  404. package/dist/modes/interactive/theme/theme.js.map +1 -1
  405. package/dist/modes/print-mode.d.ts +2 -2
  406. package/dist/modes/print-mode.d.ts.map +1 -1
  407. package/dist/modes/print-mode.js +2 -2
  408. package/dist/modes/print-mode.js.map +1 -1
  409. package/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
  410. package/dist/modes/rpc/rpc-mode.js +4 -0
  411. package/dist/modes/rpc/rpc-mode.js.map +1 -1
  412. package/dist/package-manager-cli.d.ts.map +1 -1
  413. package/dist/package-manager-cli.js +114 -49
  414. package/dist/package-manager-cli.js.map +1 -1
  415. package/dist/utils/clipboard-image.d.ts.map +1 -1
  416. package/dist/utils/clipboard-image.js +1 -1
  417. package/dist/utils/clipboard-image.js.map +1 -1
  418. package/dist/utils/omk-user-agent.d.ts +2 -0
  419. package/dist/utils/omk-user-agent.d.ts.map +1 -0
  420. package/dist/utils/{pi-user-agent.js → omk-user-agent.js} +2 -2
  421. package/dist/utils/omk-user-agent.js.map +1 -0
  422. package/dist/utils/tools-manager.d.ts.map +1 -1
  423. package/dist/utils/tools-manager.js +1 -1
  424. package/dist/utils/tools-manager.js.map +1 -1
  425. package/dist/utils/version-check.d.ts +5 -5
  426. package/dist/utils/version-check.d.ts.map +1 -1
  427. package/dist/utils/version-check.js +8 -11
  428. package/dist/utils/version-check.js.map +1 -1
  429. package/dist/utils/windows-self-update.d.ts.map +1 -1
  430. package/dist/utils/windows-self-update.js +1 -1
  431. package/dist/utils/windows-self-update.js.map +1 -1
  432. package/docs/packages.md +47 -6
  433. package/docs/prompt-templates.md +2 -0
  434. package/docs/usage.md +16 -6
  435. package/examples/README.md +1 -1
  436. package/examples/extensions/README.md +11 -11
  437. package/examples/extensions/auto-commit-on-exit.ts +6 -6
  438. package/examples/extensions/bash-spawn-hook.ts +4 -4
  439. package/examples/extensions/bookmark.ts +5 -5
  440. package/examples/extensions/border-status-editor.ts +7 -7
  441. package/examples/extensions/built-in-tool-renderer.ts +6 -6
  442. package/examples/extensions/claude-rules.ts +4 -4
  443. package/examples/extensions/commands.ts +5 -5
  444. package/examples/extensions/confirm-destructive.ts +3 -3
  445. package/examples/extensions/custom-compaction.ts +3 -3
  446. package/examples/extensions/custom-footer.ts +2 -2
  447. package/examples/extensions/custom-header.ts +5 -5
  448. package/examples/extensions/custom-provider-anthropic/index.ts +4 -4
  449. package/examples/extensions/custom-provider-anthropic/package-lock.json +2 -2
  450. package/examples/extensions/custom-provider-anthropic/package.json +1 -1
  451. package/examples/extensions/custom-provider-gitlab-duo/index.ts +3 -3
  452. package/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
  453. package/examples/extensions/dirty-repo-guard.ts +7 -7
  454. package/examples/extensions/doom-overlay/README.md +3 -3
  455. package/examples/extensions/doom-overlay/doom/build.sh +2 -2
  456. package/examples/extensions/doom-overlay/doom/doomgeneric_pi.c +1 -1
  457. package/examples/extensions/doom-overlay/index.ts +3 -3
  458. package/examples/extensions/dynamic-resources/dynamic.json +1 -1
  459. package/examples/extensions/dynamic-resources/index.ts +2 -2
  460. package/examples/extensions/dynamic-tools.ts +4 -4
  461. package/examples/extensions/event-bus.ts +8 -8
  462. package/examples/extensions/file-trigger.ts +3 -3
  463. package/examples/extensions/git-checkpoint.ts +7 -7
  464. package/examples/extensions/git-merge-and-resolve.ts +14 -14
  465. package/examples/extensions/github-issue-autocomplete.ts +6 -6
  466. package/examples/extensions/gondolin/index.ts +16 -16
  467. package/examples/extensions/gondolin/package-lock.json +2 -2
  468. package/examples/extensions/gondolin/package.json +1 -1
  469. package/examples/extensions/handoff.ts +2 -2
  470. package/examples/extensions/hello.ts +2 -2
  471. package/examples/extensions/hidden-thinking-label.ts +4 -4
  472. package/examples/extensions/inline-bash.ts +5 -5
  473. package/examples/extensions/input-transform-streaming.ts +5 -5
  474. package/examples/extensions/input-transform.ts +5 -5
  475. package/examples/extensions/interactive-shell.ts +3 -3
  476. package/examples/extensions/mac-system-theme.ts +5 -5
  477. package/examples/extensions/message-renderer.ts +4 -4
  478. package/examples/extensions/minimal-mode.ts +9 -9
  479. package/examples/extensions/modal-editor.ts +3 -3
  480. package/examples/extensions/model-status.ts +3 -3
  481. package/examples/extensions/notify.ts +5 -5
  482. package/examples/extensions/overlay-qa-tests.ts +20 -20
  483. package/examples/extensions/overlay-test.ts +3 -3
  484. package/examples/extensions/permission-gate.ts +2 -2
  485. package/examples/extensions/pirate.ts +4 -4
  486. package/examples/extensions/plan-mode/index.ts +22 -22
  487. package/examples/extensions/preset.ts +30 -30
  488. package/examples/extensions/prompt-customizer.ts +3 -3
  489. package/examples/extensions/protected-paths.ts +2 -2
  490. package/examples/extensions/provider-payload.ts +5 -5
  491. package/examples/extensions/qna.ts +2 -2
  492. package/examples/extensions/question.ts +2 -2
  493. package/examples/extensions/questionnaire.ts +2 -2
  494. package/examples/extensions/rainbow-editor.ts +3 -3
  495. package/examples/extensions/reload-runtime.ts +4 -4
  496. package/examples/extensions/rpc-demo.ts +10 -10
  497. package/examples/extensions/sandbox/index.ts +17 -17
  498. package/examples/extensions/sandbox/package-lock.json +2 -2
  499. package/examples/extensions/sandbox/package.json +1 -1
  500. package/examples/extensions/send-user-message.ts +13 -13
  501. package/examples/extensions/session-name.ts +4 -4
  502. package/examples/extensions/shutdown-command.ts +10 -10
  503. package/examples/extensions/snake.ts +3 -3
  504. package/examples/extensions/space-invaders.ts +3 -3
  505. package/examples/extensions/ssh.ts +12 -12
  506. package/examples/extensions/status-line.ts +4 -4
  507. package/examples/extensions/structured-output.ts +2 -2
  508. package/examples/extensions/subagent/README.md +13 -13
  509. package/examples/extensions/subagent/agents.ts +2 -2
  510. package/examples/extensions/subagent/index.ts +53 -21
  511. package/examples/extensions/summarize.ts +2 -2
  512. package/examples/extensions/system-prompt-header.ts +3 -3
  513. package/examples/extensions/tic-tac-toe.ts +15 -15
  514. package/examples/extensions/timed-confirm.ts +4 -4
  515. package/examples/extensions/titlebar-spinner.ts +9 -9
  516. package/examples/extensions/todo.ts +5 -5
  517. package/examples/extensions/tool-override.ts +5 -5
  518. package/examples/extensions/tools.ts +10 -10
  519. package/examples/extensions/trigger-compact.ts +3 -3
  520. package/examples/extensions/truncated-tool.ts +3 -3
  521. package/examples/extensions/widget-placement.ts +2 -2
  522. package/examples/extensions/with-deps/index.ts +2 -2
  523. package/examples/extensions/with-deps/package-lock.json +2 -2
  524. package/examples/extensions/with-deps/package.json +1 -1
  525. package/examples/extensions/working-indicator.ts +7 -7
  526. package/examples/extensions/working-message-test.ts +3 -3
  527. package/examples/sdk/01-minimal.ts +1 -1
  528. package/examples/sdk/03-custom-prompt.ts +1 -1
  529. package/examples/sdk/04-skills.ts +1 -1
  530. package/examples/sdk/05-tools.ts +1 -1
  531. package/examples/sdk/06-extensions.ts +11 -11
  532. package/examples/sdk/07-context-files.ts +2 -0
  533. package/examples/sdk/08-prompt-templates.ts +1 -1
  534. package/examples/sdk/09-api-keys-and-oauth.ts +2 -2
  535. package/examples/sdk/README.md +2 -2
  536. package/node_modules/@earendil-works/omk-agent-core/README.md +488 -0
  537. package/node_modules/@earendil-works/omk-agent-core/dist/agent-loop.d.ts +24 -0
  538. package/node_modules/@earendil-works/omk-agent-core/dist/agent-loop.d.ts.map +1 -0
  539. package/node_modules/@earendil-works/omk-agent-core/dist/agent-loop.js +553 -0
  540. package/node_modules/@earendil-works/omk-agent-core/dist/agent-loop.js.map +1 -0
  541. package/node_modules/@earendil-works/omk-agent-core/dist/agent.d.ts +118 -0
  542. package/node_modules/@earendil-works/omk-agent-core/dist/agent.d.ts.map +1 -0
  543. package/node_modules/@earendil-works/omk-agent-core/dist/agent.js +402 -0
  544. package/node_modules/@earendil-works/omk-agent-core/dist/agent.js.map +1 -0
  545. package/node_modules/@earendil-works/omk-agent-core/dist/harness/agent-harness.d.ts +95 -0
  546. package/node_modules/@earendil-works/omk-agent-core/dist/harness/agent-harness.d.ts.map +1 -0
  547. package/node_modules/@earendil-works/omk-agent-core/dist/harness/agent-harness.js +996 -0
  548. package/node_modules/@earendil-works/omk-agent-core/dist/harness/agent-harness.js.map +1 -0
  549. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/branch-summarization.d.ts +53 -0
  550. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/branch-summarization.d.ts.map +1 -0
  551. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/branch-summarization.js +175 -0
  552. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/branch-summarization.js.map +1 -0
  553. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/compaction.d.ts +117 -0
  554. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/compaction.d.ts.map +1 -0
  555. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/compaction.js +568 -0
  556. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/compaction.js.map +1 -0
  557. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/utils.d.ts +25 -0
  558. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/utils.d.ts.map +1 -0
  559. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/utils.js +131 -0
  560. package/node_modules/@earendil-works/omk-agent-core/dist/harness/compaction/utils.js.map +1 -0
  561. package/node_modules/@earendil-works/omk-agent-core/dist/harness/env/nodejs.d.ts +51 -0
  562. package/node_modules/@earendil-works/omk-agent-core/dist/harness/env/nodejs.d.ts.map +1 -0
  563. package/node_modules/@earendil-works/omk-agent-core/dist/harness/env/nodejs.js +510 -0
  564. package/node_modules/@earendil-works/omk-agent-core/dist/harness/env/nodejs.js.map +1 -0
  565. package/node_modules/@earendil-works/omk-agent-core/dist/harness/messages.d.ts +51 -0
  566. package/node_modules/@earendil-works/omk-agent-core/dist/harness/messages.d.ts.map +1 -0
  567. package/node_modules/@earendil-works/omk-agent-core/dist/harness/messages.js +102 -0
  568. package/node_modules/@earendil-works/omk-agent-core/dist/harness/messages.js.map +1 -0
  569. package/node_modules/@earendil-works/omk-agent-core/dist/harness/prompt-templates.d.ts +48 -0
  570. package/node_modules/@earendil-works/omk-agent-core/dist/harness/prompt-templates.d.ts.map +1 -0
  571. package/node_modules/@earendil-works/omk-agent-core/dist/harness/prompt-templates.js +230 -0
  572. package/node_modules/@earendil-works/omk-agent-core/dist/harness/prompt-templates.js.map +1 -0
  573. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-repo.d.ts +26 -0
  574. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-repo.d.ts.map +1 -0
  575. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-repo.js +101 -0
  576. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-repo.js.map +1 -0
  577. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-storage.d.ts +36 -0
  578. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-storage.d.ts.map +1 -0
  579. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-storage.js +273 -0
  580. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/jsonl-storage.js.map +1 -0
  581. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-repo.d.ts +18 -0
  582. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-repo.d.ts.map +1 -0
  583. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-repo.js +42 -0
  584. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-repo.js.map +1 -0
  585. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-storage.d.ts +25 -0
  586. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-storage.d.ts.map +1 -0
  587. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-storage.js +114 -0
  588. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/memory-storage.js.map +1 -0
  589. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/repo-utils.d.ts +11 -0
  590. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/repo-utils.d.ts.map +1 -0
  591. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/repo-utils.js +39 -0
  592. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/repo-utils.js.map +1 -0
  593. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/session.d.ts +33 -0
  594. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/session.d.ts.map +1 -0
  595. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/session.js +210 -0
  596. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/session.js.map +1 -0
  597. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/uuid.d.ts +2 -0
  598. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/uuid.d.ts.map +1 -0
  599. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/uuid.js +50 -0
  600. package/node_modules/@earendil-works/omk-agent-core/dist/harness/session/uuid.js.map +1 -0
  601. package/node_modules/@earendil-works/omk-agent-core/dist/harness/skills.d.ts +44 -0
  602. package/node_modules/@earendil-works/omk-agent-core/dist/harness/skills.d.ts.map +1 -0
  603. package/node_modules/@earendil-works/omk-agent-core/dist/harness/skills.js +311 -0
  604. package/node_modules/@earendil-works/omk-agent-core/dist/harness/skills.js.map +1 -0
  605. package/node_modules/@earendil-works/omk-agent-core/dist/harness/system-prompt.d.ts +3 -0
  606. package/node_modules/@earendil-works/omk-agent-core/dist/harness/system-prompt.d.ts.map +1 -0
  607. package/node_modules/@earendil-works/omk-agent-core/dist/harness/system-prompt.js +30 -0
  608. package/node_modules/@earendil-works/omk-agent-core/dist/harness/system-prompt.js.map +1 -0
  609. package/node_modules/@earendil-works/omk-agent-core/dist/harness/types.d.ts +616 -0
  610. package/node_modules/@earendil-works/omk-agent-core/dist/harness/types.d.ts.map +1 -0
  611. package/node_modules/@earendil-works/omk-agent-core/dist/harness/types.js +94 -0
  612. package/node_modules/@earendil-works/omk-agent-core/dist/harness/types.js.map +1 -0
  613. package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/shell-output.d.ts +14 -0
  614. package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/shell-output.d.ts.map +1 -0
  615. package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/shell-output.js +126 -0
  616. package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/shell-output.js.map +1 -0
  617. package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/truncate.d.ts +70 -0
  618. package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/truncate.d.ts.map +1 -0
  619. package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/truncate.js +297 -0
  620. package/node_modules/@earendil-works/omk-agent-core/dist/harness/utils/truncate.js.map +1 -0
  621. package/node_modules/@earendil-works/omk-agent-core/dist/index.d.ts +20 -0
  622. package/node_modules/@earendil-works/omk-agent-core/dist/index.d.ts.map +1 -0
  623. package/node_modules/@earendil-works/omk-agent-core/dist/index.js +25 -0
  624. package/node_modules/@earendil-works/omk-agent-core/dist/index.js.map +1 -0
  625. package/node_modules/@earendil-works/omk-agent-core/dist/node.d.ts +3 -0
  626. package/node_modules/@earendil-works/omk-agent-core/dist/node.d.ts.map +1 -0
  627. package/node_modules/@earendil-works/omk-agent-core/dist/node.js +3 -0
  628. package/node_modules/@earendil-works/omk-agent-core/dist/node.js.map +1 -0
  629. package/node_modules/@earendil-works/omk-agent-core/dist/proxy.d.ts +69 -0
  630. package/node_modules/@earendil-works/omk-agent-core/dist/proxy.d.ts.map +1 -0
  631. package/node_modules/@earendil-works/omk-agent-core/dist/proxy.js +278 -0
  632. package/node_modules/@earendil-works/omk-agent-core/dist/proxy.js.map +1 -0
  633. package/node_modules/@earendil-works/omk-agent-core/dist/types.d.ts +393 -0
  634. package/node_modules/@earendil-works/omk-agent-core/dist/types.d.ts.map +1 -0
  635. package/node_modules/@earendil-works/omk-agent-core/dist/types.js +2 -0
  636. package/node_modules/@earendil-works/omk-agent-core/dist/types.js.map +1 -0
  637. package/node_modules/@earendil-works/omk-agent-core/package.json +60 -0
  638. package/node_modules/@earendil-works/omk-ai/README.md +1389 -0
  639. package/node_modules/@earendil-works/omk-ai/dist/api-registry.d.ts +20 -0
  640. package/node_modules/@earendil-works/omk-ai/dist/api-registry.d.ts.map +1 -0
  641. package/node_modules/@earendil-works/omk-ai/dist/api-registry.js +44 -0
  642. package/node_modules/@earendil-works/omk-ai/dist/api-registry.js.map +1 -0
  643. package/node_modules/@earendil-works/omk-ai/dist/bedrock-provider.d.ts +5 -0
  644. package/node_modules/@earendil-works/omk-ai/dist/bedrock-provider.d.ts.map +1 -0
  645. package/node_modules/@earendil-works/omk-ai/dist/bedrock-provider.js +6 -0
  646. package/node_modules/@earendil-works/omk-ai/dist/bedrock-provider.js.map +1 -0
  647. package/node_modules/@earendil-works/omk-ai/dist/cli.d.ts +3 -0
  648. package/node_modules/@earendil-works/omk-ai/dist/cli.d.ts.map +1 -0
  649. package/node_modules/@earendil-works/omk-ai/dist/cli.js +130 -0
  650. package/node_modules/@earendil-works/omk-ai/dist/cli.js.map +1 -0
  651. package/node_modules/@earendil-works/omk-ai/dist/env-api-keys.d.ts +20 -0
  652. package/node_modules/@earendil-works/omk-ai/dist/env-api-keys.d.ts.map +1 -0
  653. package/node_modules/@earendil-works/omk-ai/dist/env-api-keys.js +199 -0
  654. package/node_modules/@earendil-works/omk-ai/dist/env-api-keys.js.map +1 -0
  655. package/node_modules/@earendil-works/omk-ai/dist/image-models.d.ts +10 -0
  656. package/node_modules/@earendil-works/omk-ai/dist/image-models.d.ts.map +1 -0
  657. package/node_modules/@earendil-works/omk-ai/dist/image-models.generated.d.ts +515 -0
  658. package/node_modules/@earendil-works/omk-ai/dist/image-models.generated.d.ts.map +1 -0
  659. package/node_modules/@earendil-works/omk-ai/dist/image-models.generated.js +517 -0
  660. package/node_modules/@earendil-works/omk-ai/dist/image-models.generated.js.map +1 -0
  661. package/node_modules/@earendil-works/omk-ai/dist/image-models.js +23 -0
  662. package/node_modules/@earendil-works/omk-ai/dist/image-models.js.map +1 -0
  663. package/node_modules/@earendil-works/omk-ai/dist/images-api-registry.d.ts +14 -0
  664. package/node_modules/@earendil-works/omk-ai/dist/images-api-registry.d.ts.map +1 -0
  665. package/node_modules/@earendil-works/omk-ai/dist/images-api-registry.js +22 -0
  666. package/node_modules/@earendil-works/omk-ai/dist/images-api-registry.js.map +1 -0
  667. package/node_modules/@earendil-works/omk-ai/dist/images.d.ts +4 -0
  668. package/node_modules/@earendil-works/omk-ai/dist/images.d.ts.map +1 -0
  669. package/node_modules/@earendil-works/omk-ai/dist/images.js +16 -0
  670. package/node_modules/@earendil-works/omk-ai/dist/images.js.map +1 -0
  671. package/node_modules/@earendil-works/omk-ai/dist/index.d.ts +33 -0
  672. package/node_modules/@earendil-works/omk-ai/dist/index.d.ts.map +1 -0
  673. package/node_modules/@earendil-works/omk-ai/dist/index.js +21 -0
  674. package/node_modules/@earendil-works/omk-ai/dist/index.js.map +1 -0
  675. package/node_modules/@earendil-works/omk-ai/dist/models.d.ts +18 -0
  676. package/node_modules/@earendil-works/omk-ai/dist/models.d.ts.map +1 -0
  677. package/node_modules/@earendil-works/omk-ai/dist/models.generated.d.ts +18762 -0
  678. package/node_modules/@earendil-works/omk-ai/dist/models.generated.d.ts.map +1 -0
  679. package/node_modules/@earendil-works/omk-ai/dist/models.generated.js +17197 -0
  680. package/node_modules/@earendil-works/omk-ai/dist/models.generated.js.map +1 -0
  681. package/node_modules/@earendil-works/omk-ai/dist/models.js +78 -0
  682. package/node_modules/@earendil-works/omk-ai/dist/models.js.map +1 -0
  683. package/node_modules/@earendil-works/omk-ai/dist/oauth.d.ts +2 -0
  684. package/node_modules/@earendil-works/omk-ai/dist/oauth.d.ts.map +1 -0
  685. package/node_modules/@earendil-works/omk-ai/dist/oauth.js +2 -0
  686. package/node_modules/@earendil-works/omk-ai/dist/oauth.js.map +1 -0
  687. package/node_modules/@earendil-works/omk-ai/dist/provider-network.d.ts +39 -0
  688. package/node_modules/@earendil-works/omk-ai/dist/provider-network.d.ts.map +1 -0
  689. package/node_modules/@earendil-works/omk-ai/dist/provider-network.js +170 -0
  690. package/node_modules/@earendil-works/omk-ai/dist/provider-network.js.map +1 -0
  691. package/node_modules/@earendil-works/omk-ai/dist/providers/amazon-bedrock.d.ts +38 -0
  692. package/node_modules/@earendil-works/omk-ai/dist/providers/amazon-bedrock.d.ts.map +1 -0
  693. package/node_modules/@earendil-works/omk-ai/dist/providers/amazon-bedrock.js +826 -0
  694. package/node_modules/@earendil-works/omk-ai/dist/providers/amazon-bedrock.js.map +1 -0
  695. package/node_modules/@earendil-works/omk-ai/dist/providers/anthropic.d.ts +77 -0
  696. package/node_modules/@earendil-works/omk-ai/dist/providers/anthropic.d.ts.map +1 -0
  697. package/node_modules/@earendil-works/omk-ai/dist/providers/anthropic.js +1123 -0
  698. package/node_modules/@earendil-works/omk-ai/dist/providers/anthropic.js.map +1 -0
  699. package/node_modules/@earendil-works/omk-ai/dist/providers/azure-openai-responses.d.ts +15 -0
  700. package/node_modules/@earendil-works/omk-ai/dist/providers/azure-openai-responses.d.ts.map +1 -0
  701. package/node_modules/@earendil-works/omk-ai/dist/providers/azure-openai-responses.js +221 -0
  702. package/node_modules/@earendil-works/omk-ai/dist/providers/azure-openai-responses.js.map +1 -0
  703. package/node_modules/@earendil-works/omk-ai/dist/providers/cloudflare.d.ts +13 -0
  704. package/node_modules/@earendil-works/omk-ai/dist/providers/cloudflare.d.ts.map +1 -0
  705. package/node_modules/@earendil-works/omk-ai/dist/providers/cloudflare.js +26 -0
  706. package/node_modules/@earendil-works/omk-ai/dist/providers/cloudflare.js.map +1 -0
  707. package/node_modules/@earendil-works/omk-ai/dist/providers/faux.d.ts +56 -0
  708. package/node_modules/@earendil-works/omk-ai/dist/providers/faux.d.ts.map +1 -0
  709. package/node_modules/@earendil-works/omk-ai/dist/providers/faux.js +368 -0
  710. package/node_modules/@earendil-works/omk-ai/dist/providers/faux.js.map +1 -0
  711. package/node_modules/@earendil-works/omk-ai/dist/providers/github-copilot-headers.d.ts +8 -0
  712. package/node_modules/@earendil-works/omk-ai/dist/providers/github-copilot-headers.d.ts.map +1 -0
  713. package/node_modules/@earendil-works/omk-ai/dist/providers/github-copilot-headers.js +29 -0
  714. package/node_modules/@earendil-works/omk-ai/dist/providers/github-copilot-headers.js.map +1 -0
  715. package/node_modules/@earendil-works/omk-ai/dist/providers/google-shared.d.ts +70 -0
  716. package/node_modules/@earendil-works/omk-ai/dist/providers/google-shared.d.ts.map +1 -0
  717. package/node_modules/@earendil-works/omk-ai/dist/providers/google-shared.js +331 -0
  718. package/node_modules/@earendil-works/omk-ai/dist/providers/google-shared.js.map +1 -0
  719. package/node_modules/@earendil-works/omk-ai/dist/providers/google-vertex.d.ts +15 -0
  720. package/node_modules/@earendil-works/omk-ai/dist/providers/google-vertex.d.ts.map +1 -0
  721. package/node_modules/@earendil-works/omk-ai/dist/providers/google-vertex.js +442 -0
  722. package/node_modules/@earendil-works/omk-ai/dist/providers/google-vertex.js.map +1 -0
  723. package/node_modules/@earendil-works/omk-ai/dist/providers/google.d.ts +13 -0
  724. package/node_modules/@earendil-works/omk-ai/dist/providers/google.d.ts.map +1 -0
  725. package/node_modules/@earendil-works/omk-ai/dist/providers/google.js +402 -0
  726. package/node_modules/@earendil-works/omk-ai/dist/providers/google.js.map +1 -0
  727. package/node_modules/@earendil-works/omk-ai/dist/providers/images/openrouter.d.ts +3 -0
  728. package/node_modules/@earendil-works/omk-ai/dist/providers/images/openrouter.d.ts.map +1 -0
  729. package/node_modules/@earendil-works/omk-ai/dist/providers/images/openrouter.js +128 -0
  730. package/node_modules/@earendil-works/omk-ai/dist/providers/images/openrouter.js.map +1 -0
  731. package/node_modules/@earendil-works/omk-ai/dist/providers/images/register-builtins.d.ts +4 -0
  732. package/node_modules/@earendil-works/omk-ai/dist/providers/images/register-builtins.d.ts.map +1 -0
  733. package/node_modules/@earendil-works/omk-ai/dist/providers/images/register-builtins.js +34 -0
  734. package/node_modules/@earendil-works/omk-ai/dist/providers/images/register-builtins.js.map +1 -0
  735. package/node_modules/@earendil-works/omk-ai/dist/providers/mistral.d.ts +25 -0
  736. package/node_modules/@earendil-works/omk-ai/dist/providers/mistral.d.ts.map +1 -0
  737. package/node_modules/@earendil-works/omk-ai/dist/providers/mistral.js +534 -0
  738. package/node_modules/@earendil-works/omk-ai/dist/providers/mistral.js.map +1 -0
  739. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-codex-responses.d.ts +30 -0
  740. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-codex-responses.d.ts.map +1 -0
  741. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-codex-responses.js +1171 -0
  742. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-codex-responses.js.map +1 -0
  743. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-completions.d.ts +19 -0
  744. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-completions.d.ts.map +1 -0
  745. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-completions.js +977 -0
  746. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-completions.js.map +1 -0
  747. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-prompt-cache.d.ts +11 -0
  748. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-prompt-cache.d.ts.map +1 -0
  749. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-prompt-cache.js +22 -0
  750. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-prompt-cache.js.map +1 -0
  751. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses-shared.d.ts +18 -0
  752. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses-shared.d.ts.map +1 -0
  753. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses-shared.js +496 -0
  754. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses-shared.js.map +1 -0
  755. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses.d.ts +13 -0
  756. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses.d.ts.map +1 -0
  757. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses.js +233 -0
  758. package/node_modules/@earendil-works/omk-ai/dist/providers/openai-responses.js.map +1 -0
  759. package/node_modules/@earendil-works/omk-ai/dist/providers/register-builtins.d.ts +35 -0
  760. package/node_modules/@earendil-works/omk-ai/dist/providers/register-builtins.d.ts.map +1 -0
  761. package/node_modules/@earendil-works/omk-ai/dist/providers/register-builtins.js +254 -0
  762. package/node_modules/@earendil-works/omk-ai/dist/providers/register-builtins.js.map +1 -0
  763. package/node_modules/@earendil-works/omk-ai/dist/providers/simple-options.d.ts +8 -0
  764. package/node_modules/@earendil-works/omk-ai/dist/providers/simple-options.d.ts.map +1 -0
  765. package/node_modules/@earendil-works/omk-ai/dist/providers/simple-options.js +42 -0
  766. package/node_modules/@earendil-works/omk-ai/dist/providers/simple-options.js.map +1 -0
  767. package/node_modules/@earendil-works/omk-ai/dist/providers/tool-schema.d.ts +13 -0
  768. package/node_modules/@earendil-works/omk-ai/dist/providers/tool-schema.d.ts.map +1 -0
  769. package/node_modules/@earendil-works/omk-ai/dist/providers/tool-schema.js +82 -0
  770. package/node_modules/@earendil-works/omk-ai/dist/providers/tool-schema.js.map +1 -0
  771. package/node_modules/@earendil-works/omk-ai/dist/providers/transform-messages.d.ts +8 -0
  772. package/node_modules/@earendil-works/omk-ai/dist/providers/transform-messages.d.ts.map +1 -0
  773. package/node_modules/@earendil-works/omk-ai/dist/providers/transform-messages.js +184 -0
  774. package/node_modules/@earendil-works/omk-ai/dist/providers/transform-messages.js.map +1 -0
  775. package/node_modules/@earendil-works/omk-ai/dist/session-resources.d.ts +4 -0
  776. package/node_modules/@earendil-works/omk-ai/dist/session-resources.d.ts.map +1 -0
  777. package/node_modules/@earendil-works/omk-ai/dist/session-resources.js +22 -0
  778. package/node_modules/@earendil-works/omk-ai/dist/session-resources.js.map +1 -0
  779. package/node_modules/@earendil-works/omk-ai/dist/stream.d.ts +8 -0
  780. package/node_modules/@earendil-works/omk-ai/dist/stream.d.ts.map +1 -0
  781. package/node_modules/@earendil-works/omk-ai/dist/stream.js +77 -0
  782. package/node_modules/@earendil-works/omk-ai/dist/stream.js.map +1 -0
  783. package/node_modules/@earendil-works/omk-ai/dist/types.d.ts +570 -0
  784. package/node_modules/@earendil-works/omk-ai/dist/types.d.ts.map +1 -0
  785. package/node_modules/@earendil-works/omk-ai/dist/types.js +2 -0
  786. package/node_modules/@earendil-works/omk-ai/dist/types.js.map +1 -0
  787. package/node_modules/@earendil-works/omk-ai/dist/utils/abort-signals.d.ts +6 -0
  788. package/node_modules/@earendil-works/omk-ai/dist/utils/abort-signals.d.ts.map +1 -0
  789. package/node_modules/@earendil-works/omk-ai/dist/utils/abort-signals.js +34 -0
  790. package/node_modules/@earendil-works/omk-ai/dist/utils/abort-signals.js.map +1 -0
  791. package/node_modules/@earendil-works/omk-ai/dist/utils/diagnostics.d.ts +19 -0
  792. package/node_modules/@earendil-works/omk-ai/dist/utils/diagnostics.d.ts.map +1 -0
  793. package/node_modules/@earendil-works/omk-ai/dist/utils/diagnostics.js +25 -0
  794. package/node_modules/@earendil-works/omk-ai/dist/utils/diagnostics.js.map +1 -0
  795. package/node_modules/@earendil-works/omk-ai/dist/utils/event-stream.d.ts +21 -0
  796. package/node_modules/@earendil-works/omk-ai/dist/utils/event-stream.d.ts.map +1 -0
  797. package/node_modules/@earendil-works/omk-ai/dist/utils/event-stream.js +81 -0
  798. package/node_modules/@earendil-works/omk-ai/dist/utils/event-stream.js.map +1 -0
  799. package/node_modules/@earendil-works/omk-ai/dist/utils/hash.d.ts +3 -0
  800. package/node_modules/@earendil-works/omk-ai/dist/utils/hash.d.ts.map +1 -0
  801. package/node_modules/@earendil-works/omk-ai/dist/utils/hash.js +14 -0
  802. package/node_modules/@earendil-works/omk-ai/dist/utils/hash.js.map +1 -0
  803. package/node_modules/@earendil-works/omk-ai/dist/utils/headers.d.ts +2 -0
  804. package/node_modules/@earendil-works/omk-ai/dist/utils/headers.d.ts.map +1 -0
  805. package/node_modules/@earendil-works/omk-ai/dist/utils/headers.js +8 -0
  806. package/node_modules/@earendil-works/omk-ai/dist/utils/headers.js.map +1 -0
  807. package/node_modules/@earendil-works/omk-ai/dist/utils/json-parse.d.ts +16 -0
  808. package/node_modules/@earendil-works/omk-ai/dist/utils/json-parse.d.ts.map +1 -0
  809. package/node_modules/@earendil-works/omk-ai/dist/utils/json-parse.js +113 -0
  810. package/node_modules/@earendil-works/omk-ai/dist/utils/json-parse.js.map +1 -0
  811. package/node_modules/@earendil-works/omk-ai/dist/utils/node-http-proxy.d.ts +10 -0
  812. package/node_modules/@earendil-works/omk-ai/dist/utils/node-http-proxy.d.ts.map +1 -0
  813. package/node_modules/@earendil-works/omk-ai/dist/utils/node-http-proxy.js +97 -0
  814. package/node_modules/@earendil-works/omk-ai/dist/utils/node-http-proxy.js.map +1 -0
  815. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/anthropic.d.ts +25 -0
  816. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/anthropic.d.ts.map +1 -0
  817. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/anthropic.js +335 -0
  818. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/anthropic.js.map +1 -0
  819. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/device-code.d.ts +21 -0
  820. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/device-code.d.ts.map +1 -0
  821. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/device-code.js +56 -0
  822. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/device-code.js.map +1 -0
  823. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/github-copilot.d.ts +30 -0
  824. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/github-copilot.d.ts.map +1 -0
  825. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/github-copilot.js +280 -0
  826. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/github-copilot.js.map +1 -0
  827. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/index.d.ts +58 -0
  828. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/index.d.ts.map +1 -0
  829. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/index.js +122 -0
  830. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/index.js.map +1 -0
  831. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/oauth-page.d.ts +3 -0
  832. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/oauth-page.d.ts.map +1 -0
  833. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/oauth-page.js +105 -0
  834. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/oauth-page.js.map +1 -0
  835. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/openai-codex.d.ts +43 -0
  836. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/openai-codex.d.ts.map +1 -0
  837. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/openai-codex.js +487 -0
  838. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/openai-codex.js.map +1 -0
  839. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/pkce.d.ts +13 -0
  840. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/pkce.d.ts.map +1 -0
  841. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/pkce.js +31 -0
  842. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/pkce.js.map +1 -0
  843. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/types.d.ts +64 -0
  844. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/types.d.ts.map +1 -0
  845. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/types.js +2 -0
  846. package/node_modules/@earendil-works/omk-ai/dist/utils/oauth/types.js.map +1 -0
  847. package/node_modules/@earendil-works/omk-ai/dist/utils/overflow.d.ts +57 -0
  848. package/node_modules/@earendil-works/omk-ai/dist/utils/overflow.d.ts.map +1 -0
  849. package/node_modules/@earendil-works/omk-ai/dist/utils/overflow.js +154 -0
  850. package/node_modules/@earendil-works/omk-ai/dist/utils/overflow.js.map +1 -0
  851. package/node_modules/@earendil-works/omk-ai/dist/utils/sanitize-unicode.d.ts +22 -0
  852. package/node_modules/@earendil-works/omk-ai/dist/utils/sanitize-unicode.d.ts.map +1 -0
  853. package/node_modules/@earendil-works/omk-ai/dist/utils/sanitize-unicode.js +26 -0
  854. package/node_modules/@earendil-works/omk-ai/dist/utils/sanitize-unicode.js.map +1 -0
  855. package/node_modules/@earendil-works/omk-ai/dist/utils/typebox-helpers.d.ts +17 -0
  856. package/node_modules/@earendil-works/omk-ai/dist/utils/typebox-helpers.d.ts.map +1 -0
  857. package/node_modules/@earendil-works/omk-ai/dist/utils/typebox-helpers.js +21 -0
  858. package/node_modules/@earendil-works/omk-ai/dist/utils/typebox-helpers.js.map +1 -0
  859. package/node_modules/@earendil-works/omk-ai/dist/utils/validation.d.ts +18 -0
  860. package/node_modules/@earendil-works/omk-ai/dist/utils/validation.d.ts.map +1 -0
  861. package/node_modules/@earendil-works/omk-ai/dist/utils/validation.js +281 -0
  862. package/node_modules/@earendil-works/omk-ai/dist/utils/validation.js.map +1 -0
  863. package/node_modules/@earendil-works/omk-ai/package.json +106 -0
  864. package/node_modules/@earendil-works/omk-tui/README.md +791 -0
  865. package/node_modules/@earendil-works/omk-tui/dist/autocomplete.d.ts +54 -0
  866. package/node_modules/@earendil-works/omk-tui/dist/autocomplete.d.ts.map +1 -0
  867. package/node_modules/@earendil-works/omk-tui/dist/autocomplete.js +632 -0
  868. package/node_modules/@earendil-works/omk-tui/dist/autocomplete.js.map +1 -0
  869. package/node_modules/@earendil-works/omk-tui/dist/components/box.d.ts +22 -0
  870. package/node_modules/@earendil-works/omk-tui/dist/components/box.d.ts.map +1 -0
  871. package/node_modules/@earendil-works/omk-tui/dist/components/box.js +104 -0
  872. package/node_modules/@earendil-works/omk-tui/dist/components/box.js.map +1 -0
  873. package/node_modules/@earendil-works/omk-tui/dist/components/cancellable-loader.d.ts +22 -0
  874. package/node_modules/@earendil-works/omk-tui/dist/components/cancellable-loader.d.ts.map +1 -0
  875. package/node_modules/@earendil-works/omk-tui/dist/components/cancellable-loader.js +35 -0
  876. package/node_modules/@earendil-works/omk-tui/dist/components/cancellable-loader.js.map +1 -0
  877. package/node_modules/@earendil-works/omk-tui/dist/components/editor.d.ts +249 -0
  878. package/node_modules/@earendil-works/omk-tui/dist/components/editor.d.ts.map +1 -0
  879. package/node_modules/@earendil-works/omk-tui/dist/components/editor.js +1857 -0
  880. package/node_modules/@earendil-works/omk-tui/dist/components/editor.js.map +1 -0
  881. package/node_modules/@earendil-works/omk-tui/dist/components/image.d.ts +28 -0
  882. package/node_modules/@earendil-works/omk-tui/dist/components/image.d.ts.map +1 -0
  883. package/node_modules/@earendil-works/omk-tui/dist/components/image.js +89 -0
  884. package/node_modules/@earendil-works/omk-tui/dist/components/image.js.map +1 -0
  885. package/node_modules/@earendil-works/omk-tui/dist/components/input.d.ts +37 -0
  886. package/node_modules/@earendil-works/omk-tui/dist/components/input.d.ts.map +1 -0
  887. package/node_modules/@earendil-works/omk-tui/dist/components/input.js +378 -0
  888. package/node_modules/@earendil-works/omk-tui/dist/components/input.js.map +1 -0
  889. package/node_modules/@earendil-works/omk-tui/dist/components/loader.d.ts +31 -0
  890. package/node_modules/@earendil-works/omk-tui/dist/components/loader.d.ts.map +1 -0
  891. package/node_modules/@earendil-works/omk-tui/dist/components/loader.js +69 -0
  892. package/node_modules/@earendil-works/omk-tui/dist/components/loader.js.map +1 -0
  893. package/node_modules/@earendil-works/omk-tui/dist/components/markdown.d.ts +96 -0
  894. package/node_modules/@earendil-works/omk-tui/dist/components/markdown.d.ts.map +1 -0
  895. package/node_modules/@earendil-works/omk-tui/dist/components/markdown.js +644 -0
  896. package/node_modules/@earendil-works/omk-tui/dist/components/markdown.js.map +1 -0
  897. package/node_modules/@earendil-works/omk-tui/dist/components/select-list.d.ts +50 -0
  898. package/node_modules/@earendil-works/omk-tui/dist/components/select-list.d.ts.map +1 -0
  899. package/node_modules/@earendil-works/omk-tui/dist/components/select-list.js +159 -0
  900. package/node_modules/@earendil-works/omk-tui/dist/components/select-list.js.map +1 -0
  901. package/node_modules/@earendil-works/omk-tui/dist/components/settings-list.d.ts +50 -0
  902. package/node_modules/@earendil-works/omk-tui/dist/components/settings-list.d.ts.map +1 -0
  903. package/node_modules/@earendil-works/omk-tui/dist/components/settings-list.js +185 -0
  904. package/node_modules/@earendil-works/omk-tui/dist/components/settings-list.js.map +1 -0
  905. package/node_modules/@earendil-works/omk-tui/dist/components/spacer.d.ts +12 -0
  906. package/node_modules/@earendil-works/omk-tui/dist/components/spacer.d.ts.map +1 -0
  907. package/node_modules/@earendil-works/omk-tui/dist/components/spacer.js +23 -0
  908. package/node_modules/@earendil-works/omk-tui/dist/components/spacer.js.map +1 -0
  909. package/node_modules/@earendil-works/omk-tui/dist/components/text.d.ts +19 -0
  910. package/node_modules/@earendil-works/omk-tui/dist/components/text.d.ts.map +1 -0
  911. package/node_modules/@earendil-works/omk-tui/dist/components/text.js +89 -0
  912. package/node_modules/@earendil-works/omk-tui/dist/components/text.js.map +1 -0
  913. package/node_modules/@earendil-works/omk-tui/dist/components/truncated-text.d.ts +13 -0
  914. package/node_modules/@earendil-works/omk-tui/dist/components/truncated-text.d.ts.map +1 -0
  915. package/node_modules/@earendil-works/omk-tui/dist/components/truncated-text.js +51 -0
  916. package/node_modules/@earendil-works/omk-tui/dist/components/truncated-text.js.map +1 -0
  917. package/node_modules/@earendil-works/omk-tui/dist/editor-component.d.ts +39 -0
  918. package/node_modules/@earendil-works/omk-tui/dist/editor-component.d.ts.map +1 -0
  919. package/node_modules/@earendil-works/omk-tui/dist/editor-component.js +2 -0
  920. package/node_modules/@earendil-works/omk-tui/dist/editor-component.js.map +1 -0
  921. package/node_modules/@earendil-works/omk-tui/dist/fuzzy.d.ts +16 -0
  922. package/node_modules/@earendil-works/omk-tui/dist/fuzzy.d.ts.map +1 -0
  923. package/node_modules/@earendil-works/omk-tui/dist/fuzzy.js +110 -0
  924. package/node_modules/@earendil-works/omk-tui/dist/fuzzy.js.map +1 -0
  925. package/node_modules/@earendil-works/omk-tui/dist/index.d.ts +23 -0
  926. package/node_modules/@earendil-works/omk-tui/dist/index.d.ts.map +1 -0
  927. package/node_modules/@earendil-works/omk-tui/dist/index.js +32 -0
  928. package/node_modules/@earendil-works/omk-tui/dist/index.js.map +1 -0
  929. package/node_modules/@earendil-works/omk-tui/dist/keybindings.d.ts +212 -0
  930. package/node_modules/@earendil-works/omk-tui/dist/keybindings.d.ts.map +1 -0
  931. package/node_modules/@earendil-works/omk-tui/dist/keybindings.js +252 -0
  932. package/node_modules/@earendil-works/omk-tui/dist/keybindings.js.map +1 -0
  933. package/node_modules/@earendil-works/omk-tui/dist/keys.d.ts +184 -0
  934. package/node_modules/@earendil-works/omk-tui/dist/keys.d.ts.map +1 -0
  935. package/node_modules/@earendil-works/omk-tui/dist/keys.js +1173 -0
  936. package/node_modules/@earendil-works/omk-tui/dist/keys.js.map +1 -0
  937. package/node_modules/@earendil-works/omk-tui/dist/kill-ring.d.ts +28 -0
  938. package/node_modules/@earendil-works/omk-tui/dist/kill-ring.d.ts.map +1 -0
  939. package/node_modules/@earendil-works/omk-tui/dist/kill-ring.js +44 -0
  940. package/node_modules/@earendil-works/omk-tui/dist/kill-ring.js.map +1 -0
  941. package/node_modules/@earendil-works/omk-tui/dist/native-modifiers.d.ts +3 -0
  942. package/node_modules/@earendil-works/omk-tui/dist/native-modifiers.d.ts.map +1 -0
  943. package/node_modules/@earendil-works/omk-tui/dist/native-modifiers.js +53 -0
  944. package/node_modules/@earendil-works/omk-tui/dist/native-modifiers.js.map +1 -0
  945. package/node_modules/@earendil-works/omk-tui/dist/stdin-buffer.d.ts +50 -0
  946. package/node_modules/@earendil-works/omk-tui/dist/stdin-buffer.d.ts.map +1 -0
  947. package/node_modules/@earendil-works/omk-tui/dist/stdin-buffer.js +361 -0
  948. package/node_modules/@earendil-works/omk-tui/dist/stdin-buffer.js.map +1 -0
  949. package/node_modules/@earendil-works/omk-tui/dist/terminal-image.d.ts +90 -0
  950. package/node_modules/@earendil-works/omk-tui/dist/terminal-image.d.ts.map +1 -0
  951. package/node_modules/@earendil-works/omk-tui/dist/terminal-image.js +366 -0
  952. package/node_modules/@earendil-works/omk-tui/dist/terminal-image.js.map +1 -0
  953. package/node_modules/@earendil-works/omk-tui/dist/terminal.d.ts +113 -0
  954. package/node_modules/@earendil-works/omk-tui/dist/terminal.d.ts.map +1 -0
  955. package/node_modules/@earendil-works/omk-tui/dist/terminal.js +472 -0
  956. package/node_modules/@earendil-works/omk-tui/dist/terminal.js.map +1 -0
  957. package/node_modules/@earendil-works/omk-tui/dist/tui.d.ts +242 -0
  958. package/node_modules/@earendil-works/omk-tui/dist/tui.d.ts.map +1 -0
  959. package/node_modules/@earendil-works/omk-tui/dist/tui.js +1221 -0
  960. package/node_modules/@earendil-works/omk-tui/dist/tui.js.map +1 -0
  961. package/node_modules/@earendil-works/omk-tui/dist/undo-stack.d.ts +17 -0
  962. package/node_modules/@earendil-works/omk-tui/dist/undo-stack.d.ts.map +1 -0
  963. package/node_modules/@earendil-works/omk-tui/dist/undo-stack.js +25 -0
  964. package/node_modules/@earendil-works/omk-tui/dist/undo-stack.js.map +1 -0
  965. package/node_modules/@earendil-works/omk-tui/dist/utils.d.ts +84 -0
  966. package/node_modules/@earendil-works/omk-tui/dist/utils.d.ts.map +1 -0
  967. package/node_modules/@earendil-works/omk-tui/dist/utils.js +1032 -0
  968. package/node_modules/@earendil-works/omk-tui/dist/utils.js.map +1 -0
  969. package/node_modules/@earendil-works/omk-tui/dist/word-navigation.d.ts +25 -0
  970. package/node_modules/@earendil-works/omk-tui/dist/word-navigation.d.ts.map +1 -0
  971. package/node_modules/@earendil-works/omk-tui/dist/word-navigation.js +96 -0
  972. package/node_modules/@earendil-works/omk-tui/dist/word-navigation.js.map +1 -0
  973. package/node_modules/@earendil-works/omk-tui/native/darwin/prebuilds/darwin-arm64/darwin-modifiers.node +0 -0
  974. package/node_modules/@earendil-works/omk-tui/native/darwin/prebuilds/darwin-x64/darwin-modifiers.node +0 -0
  975. package/node_modules/@earendil-works/omk-tui/native/win32/prebuilds/win32-arm64/win32-console-mode.node +0 -0
  976. package/node_modules/@earendil-works/omk-tui/native/win32/prebuilds/win32-x64/win32-console-mode.node +0 -0
  977. package/node_modules/@earendil-works/omk-tui/package.json +47 -0
  978. package/package.json +22 -6
  979. package/dist/utils/pi-user-agent.d.ts +0 -2
  980. package/dist/utils/pi-user-agent.d.ts.map +0 -1
  981. package/dist/utils/pi-user-agent.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  import { createHash } from "node:crypto";
2
- import { chmodSync, existsSync, mkdirSync, readdirSync, readFileSync, rmSync, statSync, writeFileSync } from "node:fs";
2
+ import { chmodSync, existsSync, mkdirSync, readdirSync, readFileSync, realpathSync, rmSync, statSync, writeFileSync, } from "node:fs";
3
3
  import { homedir } from "node:os";
4
4
  function getEnv() {
5
5
  if (process.platform !== "linux" || Object.keys(process.env).length > 0) {
@@ -29,15 +29,95 @@ import { spawnProcess, spawnProcessSync } from "../utils/child-process.js";
29
29
  import { parseGitUrl } from "../utils/git.js";
30
30
  import { canonicalizePath, isLocalPath, markPathIgnoredByCloudSync, resolvePath } from "../utils/paths.js";
31
31
  import { isStdoutTakenOver } from "./output-guard.js";
32
+ import { isPathInsideRootByRealpath, resolveManifestEntryInsideRoot } from "./package-gallery.js";
33
+ import { validateExactNpmVersion, validateGitRef } from "./package-procurement.js";
34
+ import { createTrialRuntimePlan } from "./package-trial-runtime.js";
32
35
  const NETWORK_TIMEOUT_MS = 10000;
33
36
  const UPDATE_CHECK_CONCURRENCY = 4;
34
37
  const GIT_UPDATE_CONCURRENCY = 4;
35
38
  function isOfflineModeEnabled() {
36
- const value = process.env.OMK_OFFLINE ?? process.env.PI_OFFLINE;
39
+ const value = process.env.OMK_OFFLINE;
37
40
  if (!value)
38
41
  return false;
39
42
  return value === "1" || value.toLowerCase() === "true" || value.toLowerCase() === "yes";
40
43
  }
44
+ export function buildGitDependencyInstallArgs(hasConfiguredNpmCommand, allowScripts = false) {
45
+ // Default (allowScripts=false) appends --ignore-scripts, leaving the historical arg vector byte-identical.
46
+ // Opt-in allowScripts simply omits --ignore-scripts so reviewed packages may run lifecycle scripts.
47
+ const scriptArgs = allowScripts ? [] : ["--ignore-scripts"];
48
+ if (hasConfiguredNpmCommand) {
49
+ return ["install", ...scriptArgs];
50
+ }
51
+ return ["install", "--omit=dev", ...scriptArgs];
52
+ }
53
+ export function buildNpmInstallArgs(packageManagerName, specs, installRoot, allowScripts = false) {
54
+ // Extension packages run inside OMK and resolve OMK APIs through loader aliases/virtual modules.
55
+ // Disable peer dependency resolution for managed installs (npm's --legacy-peer-deps, and
56
+ // equivalent bun/pnpm settings) so package managers do not install or solve host-provided
57
+ // @earendil-works/omk-* peers. Stale auto-installed legacy peers can otherwise block updates.
58
+ //
59
+ // Lifecycle scripts stay disabled by default (--ignore-scripts). allowScripts=true omits that flag
60
+ // for the whole install unit; npm/pnpm/bun cannot scope script execution to specific top-level specs.
61
+ const scriptArgs = allowScripts ? [] : ["--ignore-scripts"];
62
+ if (packageManagerName === "bun") {
63
+ return ["install", ...specs, "--cwd", installRoot, "--omit=peer", ...scriptArgs];
64
+ }
65
+ if (packageManagerName === "pnpm") {
66
+ return [
67
+ "install",
68
+ ...specs,
69
+ "--prefix",
70
+ installRoot,
71
+ "--config.auto-install-peers=false",
72
+ "--config.strict-peer-dependencies=false",
73
+ "--config.strict-dep-builds=false",
74
+ ...scriptArgs,
75
+ ];
76
+ }
77
+ return ["install", ...specs, "--prefix", installRoot, "--legacy-peer-deps", ...scriptArgs];
78
+ }
79
+ // Entries that can never describe a real npm/git canonical key. Rejecting them keeps membership a strict
80
+ // exact-string match (no glob/minimatch/semver/override semantics) even if such junk lands in settings.
81
+ const ALLOW_SCRIPT_ENTRY_FORBIDDEN = /[*?\s\u0000-\u001f]/;
82
+ function isUsableAllowScriptEntry(entry) {
83
+ if (!entry)
84
+ return false;
85
+ if (ALLOW_SCRIPT_ENTRY_FORBIDDEN.test(entry))
86
+ return false;
87
+ // Filter-style override prefixes are not allowlist semantics.
88
+ if (entry.startsWith("!") || entry.startsWith("+") || entry.startsWith("-"))
89
+ return false;
90
+ return true;
91
+ }
92
+ function parseNpmPackageName(spec) {
93
+ const match = spec.match(/^(@?[^@]+(?:\/[^@]+)?)(?:@(.+))?$/);
94
+ return match?.[1] ?? spec;
95
+ }
96
+ /**
97
+ * Exact-match membership for npm install units. Returns true only when the install unit is non-empty and
98
+ * EVERY top-level spec is listed (by `npm:<name>` identity or `npm:<spec>`). Mixed/partial lists stay false
99
+ * so a single unlisted spec keeps the whole install fail-closed under --ignore-scripts.
100
+ */
101
+ export function isNpmInstallAllowed(specs, allowList) {
102
+ if (specs.length === 0)
103
+ return false;
104
+ const allowed = new Set(allowList.filter(isUsableAllowScriptEntry));
105
+ if (allowed.size === 0)
106
+ return false;
107
+ return specs.every((spec) => {
108
+ const name = parseNpmPackageName(spec);
109
+ return allowed.has(`npm:${name}`) || allowed.has(`npm:${spec}`);
110
+ });
111
+ }
112
+ /** Exact-match membership for a git install unit by `git:<host>/<path>` identity or `...@<ref>` spec. */
113
+ export function isGitInstallAllowed(source, allowList) {
114
+ const allowed = new Set(allowList.filter(isUsableAllowScriptEntry));
115
+ if (allowed.size === 0)
116
+ return false;
117
+ const identity = `git:${source.host}/${source.path}`;
118
+ const spec = source.ref ? `${identity}@${source.ref}` : identity;
119
+ return allowed.has(identity) || allowed.has(spec);
120
+ }
41
121
  /** Thrown when an `onMissing` callback explicitly requests aborting resolution. */
42
122
  export class MissingSourceError extends Error {
43
123
  constructor(source) {
@@ -74,6 +154,14 @@ const IGNORE_FILE_NAMES = [".gitignore", ".ignore", ".fdignore"];
74
154
  function toPosixPath(p) {
75
155
  return p.split(sep).join("/");
76
156
  }
157
+ function realpathKey(path) {
158
+ try {
159
+ return realpathSync(path);
160
+ }
161
+ catch {
162
+ return resolve(path);
163
+ }
164
+ }
77
165
  function getHomeDir() {
78
166
  return process.env.HOME || homedir();
79
167
  }
@@ -146,10 +234,16 @@ function splitPatterns(entries) {
146
234
  }
147
235
  return { plain, patterns };
148
236
  }
149
- function collectFiles(dir, filePattern, skipNodeModules = true, ignoreMatcher, rootDir) {
237
+ function collectFiles(dir, filePattern, skipNodeModules = true, ignoreMatcher, rootDir, containmentRoot, seenDirs = new Set()) {
150
238
  const files = [];
151
239
  if (!existsSync(dir))
152
240
  return files;
241
+ if (containmentRoot && !isPathInsideRootByRealpath(containmentRoot, dir))
242
+ return files;
243
+ const dirKey = realpathKey(dir);
244
+ if (seenDirs.has(dirKey))
245
+ return files;
246
+ seenDirs.add(dirKey);
153
247
  const root = rootDir ?? dir;
154
248
  const ig = ignoreMatcher ?? ignore();
155
249
  addIgnoreRules(ig, dir, root);
@@ -161,6 +255,8 @@ function collectFiles(dir, filePattern, skipNodeModules = true, ignoreMatcher, r
161
255
  if (skipNodeModules && entry.name === "node_modules")
162
256
  continue;
163
257
  const fullPath = join(dir, entry.name);
258
+ if (containmentRoot && !isPathInsideRootByRealpath(containmentRoot, fullPath))
259
+ continue;
164
260
  let isDir = entry.isDirectory();
165
261
  let isFile = entry.isFile();
166
262
  if (entry.isSymbolicLink()) {
@@ -178,7 +274,7 @@ function collectFiles(dir, filePattern, skipNodeModules = true, ignoreMatcher, r
178
274
  if (ig.ignores(ignorePath))
179
275
  continue;
180
276
  if (isDir) {
181
- files.push(...collectFiles(fullPath, filePattern, skipNodeModules, ig, root));
277
+ files.push(...collectFiles(fullPath, filePattern, skipNodeModules, ig, root, containmentRoot, seenDirs));
182
278
  }
183
279
  else if (isFile && filePattern.test(entry.name)) {
184
280
  files.push(fullPath);
@@ -190,10 +286,16 @@ function collectFiles(dir, filePattern, skipNodeModules = true, ignoreMatcher, r
190
286
  }
191
287
  return files;
192
288
  }
193
- function collectSkillEntries(dir, mode, ignoreMatcher, rootDir) {
289
+ function collectSkillEntries(dir, mode, ignoreMatcher, rootDir, containmentRoot, seenDirs = new Set()) {
194
290
  const entries = [];
195
291
  if (!existsSync(dir))
196
292
  return entries;
293
+ if (containmentRoot && !isPathInsideRootByRealpath(containmentRoot, dir))
294
+ return entries;
295
+ const dirKey = realpathKey(dir);
296
+ if (seenDirs.has(dirKey))
297
+ return entries;
298
+ seenDirs.add(dirKey);
197
299
  const root = rootDir ?? dir;
198
300
  const ig = ignoreMatcher ?? ignore();
199
301
  addIgnoreRules(ig, dir, root);
@@ -204,6 +306,8 @@ function collectSkillEntries(dir, mode, ignoreMatcher, rootDir) {
204
306
  continue;
205
307
  }
206
308
  const fullPath = join(dir, entry.name);
309
+ if (containmentRoot && !isPathInsideRootByRealpath(containmentRoot, fullPath))
310
+ continue;
207
311
  let isFile = entry.isFile();
208
312
  if (entry.isSymbolicLink()) {
209
313
  try {
@@ -225,6 +329,8 @@ function collectSkillEntries(dir, mode, ignoreMatcher, rootDir) {
225
329
  if (entry.name === "node_modules")
226
330
  continue;
227
331
  const fullPath = join(dir, entry.name);
332
+ if (containmentRoot && !isPathInsideRootByRealpath(containmentRoot, fullPath))
333
+ continue;
228
334
  let isDir = entry.isDirectory();
229
335
  let isFile = entry.isFile();
230
336
  if (entry.isSymbolicLink()) {
@@ -238,7 +344,7 @@ function collectSkillEntries(dir, mode, ignoreMatcher, rootDir) {
238
344
  }
239
345
  }
240
346
  const relPath = toPosixPath(relative(root, fullPath));
241
- if (mode === "pi" && dir === root && isFile && entry.name.endsWith(".md") && !ig.ignores(relPath)) {
347
+ if (mode === "omk" && dir === root && isFile && entry.name.endsWith(".md") && !ig.ignores(relPath)) {
242
348
  entries.push(fullPath);
243
349
  continue;
244
350
  }
@@ -246,7 +352,7 @@ function collectSkillEntries(dir, mode, ignoreMatcher, rootDir) {
246
352
  continue;
247
353
  if (ig.ignores(`${relPath}/`))
248
354
  continue;
249
- entries.push(...collectSkillEntries(fullPath, mode, ig, root));
355
+ entries.push(...collectSkillEntries(fullPath, mode, ig, root, containmentRoot, seenDirs));
250
356
  }
251
357
  }
252
358
  catch {
@@ -370,16 +476,25 @@ function readOmkManifestFile(packageJsonPath) {
370
476
  return null;
371
477
  }
372
478
  }
373
- function resolveExtensionEntries(dir) {
479
+ function resolveExtensionEntries(dir, containmentRoot) {
480
+ if (containmentRoot && !isPathInsideRootByRealpath(containmentRoot, dir))
481
+ return null;
374
482
  const packageJsonPath = join(dir, "package.json");
375
483
  if (existsSync(packageJsonPath)) {
376
484
  const manifest = readOmkManifestFile(packageJsonPath);
377
485
  if (manifest?.extensions?.length) {
378
486
  const entries = [];
379
487
  for (const extPath of manifest.extensions) {
380
- const resolvedExtPath = resolve(dir, extPath);
381
- if (existsSync(resolvedExtPath)) {
382
- entries.push(resolvedExtPath);
488
+ const resolvedExtPath = containmentRoot
489
+ ? resolveManifestEntryInsideRoot(containmentRoot, extPath, dir)
490
+ : extPath.trim()
491
+ ? resolve(dir, extPath)
492
+ : undefined;
493
+ if (!resolvedExtPath)
494
+ continue;
495
+ const candidate = containmentRoot ? resolve(containmentRoot, resolvedExtPath) : resolvedExtPath;
496
+ if (existsSync(candidate) && (!containmentRoot || isPathInsideRootByRealpath(containmentRoot, candidate))) {
497
+ entries.push(candidate);
383
498
  }
384
499
  }
385
500
  if (entries.length > 0) {
@@ -389,20 +504,26 @@ function resolveExtensionEntries(dir) {
389
504
  }
390
505
  const indexTs = join(dir, "index.ts");
391
506
  const indexJs = join(dir, "index.js");
392
- if (existsSync(indexTs)) {
507
+ if (existsSync(indexTs) && (!containmentRoot || isPathInsideRootByRealpath(containmentRoot, indexTs))) {
393
508
  return [indexTs];
394
509
  }
395
- if (existsSync(indexJs)) {
510
+ if (existsSync(indexJs) && (!containmentRoot || isPathInsideRootByRealpath(containmentRoot, indexJs))) {
396
511
  return [indexJs];
397
512
  }
398
513
  return null;
399
514
  }
400
- function collectAutoExtensionEntries(dir) {
515
+ function collectAutoExtensionEntries(dir, containmentRoot, seenDirs = new Set()) {
401
516
  const entries = [];
402
517
  if (!existsSync(dir))
403
518
  return entries;
519
+ if (containmentRoot && !isPathInsideRootByRealpath(containmentRoot, dir))
520
+ return entries;
521
+ const dirKey = realpathKey(dir);
522
+ if (seenDirs.has(dirKey))
523
+ return entries;
524
+ seenDirs.add(dirKey);
404
525
  // First check if this directory itself has explicit extension entries (package.json or index)
405
- const rootEntries = resolveExtensionEntries(dir);
526
+ const rootEntries = resolveExtensionEntries(dir, containmentRoot);
406
527
  if (rootEntries) {
407
528
  return rootEntries;
408
529
  }
@@ -417,6 +538,8 @@ function collectAutoExtensionEntries(dir) {
417
538
  if (entry.name === "node_modules")
418
539
  continue;
419
540
  const fullPath = join(dir, entry.name);
541
+ if (containmentRoot && !isPathInsideRootByRealpath(containmentRoot, fullPath))
542
+ continue;
420
543
  let isDir = entry.isDirectory();
421
544
  let isFile = entry.isFile();
422
545
  if (entry.isSymbolicLink()) {
@@ -437,7 +560,7 @@ function collectAutoExtensionEntries(dir) {
437
560
  entries.push(fullPath);
438
561
  }
439
562
  else if (isDir) {
440
- const resolvedEntries = resolveExtensionEntries(fullPath);
563
+ const resolvedEntries = resolveExtensionEntries(fullPath, containmentRoot);
441
564
  if (resolvedEntries) {
442
565
  entries.push(...resolvedEntries);
443
566
  }
@@ -453,14 +576,14 @@ function collectAutoExtensionEntries(dir) {
453
576
  * Collect resource files from a directory based on resource type.
454
577
  * Extensions use smart discovery (index.ts in subdirs), others use recursive collection.
455
578
  */
456
- function collectResourceFiles(dir, resourceType) {
579
+ function collectResourceFiles(dir, resourceType, containmentRoot) {
457
580
  if (resourceType === "skills") {
458
- return collectSkillEntries(dir, "pi");
581
+ return collectSkillEntries(dir, "omk", undefined, undefined, containmentRoot);
459
582
  }
460
583
  if (resourceType === "extensions") {
461
- return collectAutoExtensionEntries(dir);
584
+ return collectAutoExtensionEntries(dir, containmentRoot);
462
585
  }
463
- return collectFiles(dir, FILE_PATTERNS[resourceType]);
586
+ return collectFiles(dir, FILE_PATTERNS[resourceType], true, undefined, undefined, containmentRoot);
464
587
  }
465
588
  function matchesAnyPattern(filePath, patterns, baseDir) {
466
589
  const rel = toPosixPath(relative(baseDir, filePath));
@@ -586,6 +709,8 @@ export class DefaultPackageManager {
586
709
  cwd;
587
710
  agentDir;
588
711
  settingsManager;
712
+ trialRuntime;
713
+ trialCleanups = [];
589
714
  globalNpmRoot;
590
715
  globalNpmRootCommandKey;
591
716
  progressCallback;
@@ -593,10 +718,18 @@ export class DefaultPackageManager {
593
718
  this.cwd = resolvePath(options.cwd);
594
719
  this.agentDir = resolvePath(options.agentDir);
595
720
  this.settingsManager = options.settingsManager;
721
+ this.trialRuntime = options.trialRuntime;
596
722
  }
597
723
  setProgressCallback(callback) {
598
724
  this.progressCallback = callback;
599
725
  }
726
+ cleanupTemporaryTrialInstalls() {
727
+ const cleanups = this.trialCleanups;
728
+ this.trialCleanups = [];
729
+ for (const cleanup of cleanups) {
730
+ this.cleanupTrialInstall(cleanup, cleanup.installRoot);
731
+ }
732
+ }
600
733
  addSourceToSettings(source, options) {
601
734
  const scope = options?.local ? "project" : "user";
602
735
  const currentSettings = scope === "project" ? this.settingsManager.getProjectSettings() : this.settingsManager.getGlobalSettings();
@@ -677,6 +810,29 @@ export class DefaultPackageManager {
677
810
  throw error;
678
811
  }
679
812
  }
813
+ cleanupTrialInstall(plan, source) {
814
+ this.emitProgress({ type: "start", action: "remove", source, message: "Cleaning temporary trial install..." });
815
+ try {
816
+ const tempRoot = resolve(getExtensionTempFolder(this.agentDir));
817
+ const installRoot = resolve(plan.installRoot);
818
+ if (installRoot !== tempRoot && !installRoot.startsWith(`${tempRoot}${sep}`)) {
819
+ throw new Error(`Refusing to clean trial install outside temp root: ${installRoot}`);
820
+ }
821
+ for (const removePath of plan.removePaths) {
822
+ const resolvedRemovePath = resolve(removePath);
823
+ if (resolvedRemovePath !== installRoot) {
824
+ throw new Error(`Refusing to clean unexpected trial path: ${resolvedRemovePath}`);
825
+ }
826
+ rmSync(resolvedRemovePath, { recursive: plan.recursive, force: plan.force });
827
+ }
828
+ this.emitProgress({ type: "complete", action: "remove", source });
829
+ }
830
+ catch (error) {
831
+ const message = error instanceof Error ? error.message : String(error);
832
+ this.emitProgress({ type: "error", action: "remove", source, message });
833
+ console.error(`Warning: failed to clean temporary trial install ${source}: ${message}`);
834
+ }
835
+ }
680
836
  async resolve(onMissing) {
681
837
  const accumulator = this.createAccumulator();
682
838
  const globalSettings = this.settingsManager.getGlobalSettings();
@@ -747,6 +903,9 @@ export class DefaultPackageManager {
747
903
  const parsed = this.parseSource(source);
748
904
  const scope = options?.local ? "project" : "user";
749
905
  await this.withProgress("install", source, `Installing ${source}...`, async () => {
906
+ // Procurement admission: enforce exact pinning before any install side effect. This is a pure
907
+ // gate (no fetch/clone/npm install). Local sources are exempt to preserve existing behavior.
908
+ this.assertInstallAdmission(parsed, source, options?.resolvedCommit);
750
909
  if (parsed.type === "npm") {
751
910
  await this.installNpm(parsed, scope, false);
752
911
  return;
@@ -766,9 +925,42 @@ export class DefaultPackageManager {
766
925
  });
767
926
  }
768
927
  async installAndPersist(source, options) {
928
+ // install() runs the procurement admission gate first; if it throws, settings are never mutated,
929
+ // so a non-pinned/non-local source can be neither installed nor persisted.
769
930
  await this.install(source, options);
770
931
  this.addSourceToSettings(source, options);
771
932
  }
933
+ /**
934
+ * Procurement admission gate for explicit installs (and installAndPersist via install()).
935
+ *
936
+ * Pure check: no fetch, clone, npm install, or other dependency-install side effect. It reuses the
937
+ * native procurement validators (`validateExactNpmVersion`, `validateGitRef`) so the installer never
938
+ * runs against an unpinned, mutable, or range/dist-tag source. Rules:
939
+ * - non-local npm packages must carry an exact pinned version (no missing/range/wildcard/dist-tag);
940
+ * - git packages must use a full commit SHA, or a tag anchored to a reviewed resolved commit SHA
941
+ * supplied through `options.resolvedCommit`.
942
+ * Local sources are exempt so local development paths keep working unchanged.
943
+ *
944
+ * Only the explicit install/persist entry point is gated. resolve()'s auto-install of
945
+ * already-configured packages is intentionally left unchanged so existing settings keep loading.
946
+ */
947
+ assertInstallAdmission(parsed, source, resolvedCommit) {
948
+ if (parsed.type === "local") {
949
+ return;
950
+ }
951
+ if (parsed.type === "npm") {
952
+ const { version } = this.parseNpmSpec(parsed.spec);
953
+ const verdict = validateExactNpmVersion(version);
954
+ if (!verdict.ok) {
955
+ throw new Error(`Refusing to install ${source}: non-local npm packages require an exact pinned version (e.g. npm:${parsed.name}@1.2.3). ${verdict.message}.`);
956
+ }
957
+ return;
958
+ }
959
+ const verdict = validateGitRef(parsed.ref, resolvedCommit);
960
+ if (!verdict.ok) {
961
+ throw new Error(`Refusing to install ${source}: git packages require a full commit SHA, or a reviewed resolved tag (pass options.resolvedCommit with the full SHA the tag points to). ${verdict.message}.`);
962
+ }
963
+ }
772
964
  async remove(source, options) {
773
965
  const parsed = this.parseSource(source);
774
966
  const scope = options?.local ? "project" : "user";
@@ -900,7 +1092,10 @@ export class DefaultPackageManager {
900
1092
  async installNpmBatch(specs, scope) {
901
1093
  const installRoot = this.getNpmInstallRoot(scope, false);
902
1094
  this.ensureNpmProject(installRoot);
903
- await this.runNpmCommand(this.getNpmInstallArgs(specs, installRoot));
1095
+ const allowScripts = this.shouldAllowNpmInstallScripts(specs);
1096
+ const unit = specs.length === 1 ? `npm:${parseNpmPackageName(specs[0])}` : `${scope} npm packages`;
1097
+ this.logInstallScriptDecision(unit, allowScripts);
1098
+ await this.runNpmCommand(this.getNpmInstallArgs(specs, installRoot, allowScripts));
904
1099
  }
905
1100
  async checkForAvailableUpdates() {
906
1101
  if (isOfflineModeEnabled()) {
@@ -1064,8 +1259,12 @@ export class DefaultPackageManager {
1064
1259
  }
1065
1260
  }
1066
1261
  async installParsedSource(parsed, scope) {
1262
+ if (scope === "temporary") {
1263
+ await this.installTemporaryTrialSource(parsed);
1264
+ return;
1265
+ }
1067
1266
  if (parsed.type === "npm") {
1068
- await this.installNpm(parsed, scope, scope === "temporary");
1267
+ await this.installNpm(parsed, scope, false);
1069
1268
  return;
1070
1269
  }
1071
1270
  if (parsed.type === "git") {
@@ -1073,6 +1272,15 @@ export class DefaultPackageManager {
1073
1272
  return;
1074
1273
  }
1075
1274
  }
1275
+ async installTemporaryTrialSource(parsed) {
1276
+ if (parsed.type === "npm") {
1277
+ await this.installTemporaryNpmTrial(parsed);
1278
+ return;
1279
+ }
1280
+ if (parsed.type === "git") {
1281
+ throw new Error("git temporary trial installs are deferred until package-trial-sandbox exposes shell-free git executor steps");
1282
+ }
1283
+ }
1076
1284
  getPackageSourceString(pkg) {
1077
1285
  return typeof pkg === "string" ? pkg : pkg.source;
1078
1286
  }
@@ -1419,47 +1627,123 @@ export class DefaultPackageManager {
1419
1627
  const packageManagerCommand = separatorIndex >= 0 ? commandParts[separatorIndex + 1] : npmCommand.command;
1420
1628
  return packageManagerCommand ? basename(packageManagerCommand).replace(/\.(cmd|exe)$/i, "") : "";
1421
1629
  }
1630
+ getTrialPackageManagerName() {
1631
+ const packageManagerName = this.getPackageManagerName();
1632
+ if (packageManagerName === "npm" || packageManagerName === "pnpm" || packageManagerName === "bun") {
1633
+ return packageManagerName;
1634
+ }
1635
+ throw new Error(`temporary npm trial installs do not support package manager: ${packageManagerName || "unknown"}`);
1636
+ }
1422
1637
  async runNpmCommand(args, options) {
1423
1638
  const npmCommand = this.getNpmCommand();
1424
1639
  await this.runCommand(npmCommand.command, [...npmCommand.args, ...args], options);
1425
1640
  }
1426
- getGitDependencyInstallArgs() {
1641
+ getGitDependencyInstallArgs(allowScripts) {
1427
1642
  const configuredCommand = this.settingsManager.getNpmCommand();
1428
- if (configuredCommand && configuredCommand.length > 0) {
1429
- return ["install"];
1430
- }
1431
- return ["install", "--omit=dev"];
1643
+ return buildGitDependencyInstallArgs(Boolean(configuredCommand && configuredCommand.length > 0), allowScripts);
1432
1644
  }
1433
1645
  runNpmCommandSync(args) {
1434
1646
  const npmCommand = this.getNpmCommand();
1435
1647
  return this.runCommandSync(npmCommand.command, [...npmCommand.args, ...args]);
1436
1648
  }
1437
- getNpmInstallArgs(specs, installRoot) {
1438
- const packageManagerName = this.getPackageManagerName();
1439
- // Extension packages run inside pi and resolve pi APIs through loader aliases/virtual modules.
1440
- // Disable peer dependency resolution for managed installs (npm's --legacy-peer-deps, and
1441
- // equivalent bun/pnpm settings) so package managers do not install or solve host-provided
1442
- // @earendil-works/omk-* peers. Stale auto-installed pi peers can otherwise block updates.
1443
- if (packageManagerName === "bun") {
1444
- return ["install", ...specs, "--cwd", installRoot, "--omit=peer"];
1445
- }
1446
- if (packageManagerName === "pnpm") {
1447
- return [
1448
- "install",
1449
- ...specs,
1450
- "--prefix",
1451
- installRoot,
1452
- "--config.auto-install-peers=false",
1453
- "--config.strict-peer-dependencies=false",
1454
- "--config.strict-dep-builds=false",
1455
- ];
1456
- }
1457
- return ["install", ...specs, "--prefix", installRoot, "--legacy-peer-deps"];
1649
+ getNpmInstallArgs(specs, installRoot, allowScripts) {
1650
+ return buildNpmInstallArgs(this.getPackageManagerName(), specs, installRoot, allowScripts);
1651
+ }
1652
+ // Caller-side exact-match membership. The pure builders stay membership-agnostic; only here do we read the
1653
+ // configured allowlist and decide whether an install unit may run lifecycle scripts.
1654
+ shouldAllowNpmInstallScripts(specs) {
1655
+ return isNpmInstallAllowed(specs, this.settingsManager.getInstallAllowScripts());
1656
+ }
1657
+ shouldAllowGitInstallScripts(source) {
1658
+ return isGitInstallAllowed(source, this.settingsManager.getInstallAllowScripts());
1659
+ }
1660
+ logInstallScriptDecision(unit, allowScripts) {
1661
+ if (allowScripts) {
1662
+ console.error(`[omk install] lifecycle scripts enabled for ${unit} via install.allowScripts; dependency tree scripts may run.`);
1663
+ }
1664
+ else {
1665
+ console.error(`[omk install] lifecycle scripts disabled for ${unit} (default --ignore-scripts).`);
1666
+ }
1667
+ }
1668
+ /**
1669
+ * Validate a CLI `--allow-scripts <name>` value against an install source and return the canonical allowlist
1670
+ * entry to persist. Exact match only; an unrelated name yields `{ ok: false, expected }` so the CLI can abort
1671
+ * and print the manual settings example.
1672
+ */
1673
+ resolveInstallAllowScriptEntry(source, requested) {
1674
+ const parsed = this.parseSource(source);
1675
+ const value = requested.trim();
1676
+ if (parsed.type === "npm") {
1677
+ const identity = `npm:${parsed.name}`;
1678
+ const spec = `npm:${parsed.spec}`;
1679
+ const accepted = new Set([identity, spec, parsed.name, parsed.spec]);
1680
+ if (accepted.has(value)) {
1681
+ return { ok: true, entry: parsed.pinned ? spec : identity };
1682
+ }
1683
+ return { ok: false, expected: parsed.pinned ? [identity, spec] : [identity] };
1684
+ }
1685
+ if (parsed.type === "git") {
1686
+ const identity = `git:${parsed.host}/${parsed.path}`;
1687
+ const spec = parsed.ref ? `${identity}@${parsed.ref}` : identity;
1688
+ const shorthand = `${parsed.host}/${parsed.path}`;
1689
+ const shorthandSpec = parsed.ref ? `${shorthand}@${parsed.ref}` : shorthand;
1690
+ const accepted = new Set([identity, spec, shorthand, shorthandSpec]);
1691
+ if (accepted.has(value)) {
1692
+ return { ok: true, entry: spec };
1693
+ }
1694
+ return { ok: false, expected: parsed.ref ? [identity, spec] : [identity] };
1695
+ }
1696
+ return { ok: false, expected: [] };
1697
+ }
1698
+ async installTemporaryNpmTrial(source) {
1699
+ const trial = this.trialRuntime;
1700
+ if (!trial) {
1701
+ throw new Error("temporary npm trial installs require PackageManagerOptions.trialRuntime");
1702
+ }
1703
+ if (trial.policy.mode === "off") {
1704
+ throw new Error("temporary npm trial installs require audit or enforce sandbox mode");
1705
+ }
1706
+ const installRoot = this.getTemporaryNpmInstallRoot(source);
1707
+ const npmCommand = this.getNpmCommand();
1708
+ const runtime = createTrialRuntimePlan({
1709
+ source: `npm:${source.spec}`,
1710
+ installRoot,
1711
+ packageManagerName: this.getTrialPackageManagerName(),
1712
+ packageManagerCommand: [npmCommand.command, ...npmCommand.args],
1713
+ policy: trial.policy,
1714
+ backend: trial.backend ?? { platform: "unsupported", backendAvailable: false },
1715
+ resolver: trial.resolver,
1716
+ env: trial.env?.() ?? getEnv(),
1717
+ });
1718
+ if (!runtime.ok) {
1719
+ throw new Error(`temporary npm trial install rejected: ${runtime.reason}`);
1720
+ }
1721
+ this.emitProgress({
1722
+ type: "progress",
1723
+ action: "install",
1724
+ source: `npm:${source.spec}`,
1725
+ message: `trial plan accepted: ${runtime.audit.sandboxRule}`,
1726
+ });
1727
+ try {
1728
+ this.ensureNpmProject(installRoot);
1729
+ await this.runCommand(runtime.executor.command, [...runtime.executor.args], {
1730
+ cwd: runtime.executor.cwd,
1731
+ env: runtime.executor.env,
1732
+ });
1733
+ trial.onAudit?.(runtime.audit);
1734
+ this.trialCleanups.push(runtime.cleanup);
1735
+ }
1736
+ catch (error) {
1737
+ this.cleanupTrialInstall(runtime.cleanup, `npm:${source.spec}`);
1738
+ throw error;
1739
+ }
1458
1740
  }
1459
1741
  async installNpm(source, scope, temporary) {
1460
1742
  const installRoot = this.getNpmInstallRoot(scope, temporary);
1461
1743
  this.ensureNpmProject(installRoot);
1462
- await this.runNpmCommand(this.getNpmInstallArgs([source.spec], installRoot));
1744
+ const allowScripts = this.shouldAllowNpmInstallScripts([source.spec]);
1745
+ this.logInstallScriptDecision(`npm:${source.name}`, allowScripts);
1746
+ await this.runNpmCommand(this.getNpmInstallArgs([source.spec], installRoot, allowScripts));
1463
1747
  }
1464
1748
  async uninstallNpm(source, scope) {
1465
1749
  const installRoot = this.getNpmInstallRoot(scope, false);
@@ -1473,14 +1757,15 @@ export class DefaultPackageManager {
1473
1757
  await this.runNpmCommand(["uninstall", source.name, "--prefix", installRoot]);
1474
1758
  }
1475
1759
  async installGit(source, scope) {
1760
+ const allowScripts = this.shouldAllowGitInstallScripts(source);
1476
1761
  const targetDir = this.getGitInstallPath(source, scope);
1477
1762
  if (existsSync(targetDir)) {
1478
1763
  if (source.ref) {
1479
- await this.ensureGitRef(targetDir, ["fetch", "origin", source.ref], "FETCH_HEAD");
1764
+ await this.ensureGitRef(targetDir, ["fetch", "origin", source.ref], "FETCH_HEAD", allowScripts);
1480
1765
  return;
1481
1766
  }
1482
1767
  const target = await this.getLocalGitUpdateTarget(targetDir);
1483
- await this.ensureGitRef(targetDir, target.fetchArgs, target.ref);
1768
+ await this.ensureGitRef(targetDir, target.fetchArgs, target.ref, allowScripts);
1484
1769
  return;
1485
1770
  }
1486
1771
  const gitRoot = this.getGitInstallRoot(scope);
@@ -1494,7 +1779,8 @@ export class DefaultPackageManager {
1494
1779
  }
1495
1780
  const packageJsonPath = join(targetDir, "package.json");
1496
1781
  if (existsSync(packageJsonPath)) {
1497
- await this.runNpmCommand(this.getGitDependencyInstallArgs(), { cwd: targetDir });
1782
+ this.logInstallScriptDecision(`git:${source.host}/${source.path}`, allowScripts);
1783
+ await this.runNpmCommand(this.getGitDependencyInstallArgs(allowScripts), { cwd: targetDir });
1498
1784
  }
1499
1785
  }
1500
1786
  async updateGit(source, scope) {
@@ -1503,14 +1789,15 @@ export class DefaultPackageManager {
1503
1789
  await this.installGit(source, scope);
1504
1790
  return;
1505
1791
  }
1792
+ const allowScripts = this.shouldAllowGitInstallScripts(source);
1506
1793
  if (source.ref) {
1507
- await this.ensureGitRef(targetDir, ["fetch", "origin", source.ref], "FETCH_HEAD");
1794
+ await this.ensureGitRef(targetDir, ["fetch", "origin", source.ref], "FETCH_HEAD", allowScripts);
1508
1795
  return;
1509
1796
  }
1510
1797
  const target = await this.getLocalGitUpdateTarget(targetDir);
1511
- await this.ensureGitRef(targetDir, target.fetchArgs, target.ref);
1798
+ await this.ensureGitRef(targetDir, target.fetchArgs, target.ref, allowScripts);
1512
1799
  }
1513
- async ensureGitRef(targetDir, fetchArgs, ref) {
1800
+ async ensureGitRef(targetDir, fetchArgs, ref, allowScripts) {
1514
1801
  // Fetch only the ref we will reset to, avoiding unrelated branch/tag noise.
1515
1802
  await this.runCommand("git", fetchArgs, { cwd: targetDir });
1516
1803
  const localHead = await this.runCommandCapture("git", ["rev-parse", "HEAD"], {
@@ -1530,7 +1817,8 @@ export class DefaultPackageManager {
1530
1817
  await this.runCommand("git", ["clean", "-fdx"], { cwd: targetDir });
1531
1818
  const packageJsonPath = join(targetDir, "package.json");
1532
1819
  if (existsSync(packageJsonPath)) {
1533
- await this.runNpmCommand(this.getGitDependencyInstallArgs(), { cwd: targetDir });
1820
+ this.logInstallScriptDecision(`git:${basename(targetDir)}`, allowScripts);
1821
+ await this.runNpmCommand(this.getGitDependencyInstallArgs(allowScripts), { cwd: targetDir });
1534
1822
  }
1535
1823
  }
1536
1824
  async refreshTemporaryGitSource(source, sourceStr) {
@@ -1584,7 +1872,7 @@ export class DefaultPackageManager {
1584
1872
  this.ensureGitIgnore(installRoot);
1585
1873
  const packageJsonPath = join(installRoot, "package.json");
1586
1874
  if (!existsSync(packageJsonPath)) {
1587
- const pkgJson = { name: "pi-extensions", private: true };
1875
+ const pkgJson = { name: "omk-extensions", private: true };
1588
1876
  writeFileSync(packageJsonPath, JSON.stringify(pkgJson, null, 2), "utf-8");
1589
1877
  }
1590
1878
  }
@@ -1635,9 +1923,12 @@ export class DefaultPackageManager {
1635
1923
  }
1636
1924
  return undefined;
1637
1925
  }
1926
+ getTemporaryNpmInstallRoot(source) {
1927
+ return this.getTemporaryDir("npm", source.spec);
1928
+ }
1638
1929
  getManagedNpmInstallPath(source, scope) {
1639
1930
  if (scope === "temporary") {
1640
- return join(this.getTemporaryDir("npm"), "node_modules", source.name);
1931
+ return join(this.getTemporaryNpmInstallRoot(source), "node_modules", source.name);
1641
1932
  }
1642
1933
  if (scope === "project") {
1643
1934
  return join(this.cwd, CONFIG_DIR_NAME, "npm", "node_modules", source.name);
@@ -1737,7 +2028,7 @@ export class DefaultPackageManager {
1737
2028
  const dir = join(packageRoot, resourceType);
1738
2029
  if (existsSync(dir)) {
1739
2030
  // Collect all files from the directory (all enabled by default)
1740
- const files = collectResourceFiles(dir, resourceType);
2031
+ const files = collectResourceFiles(dir, resourceType, packageRoot);
1741
2032
  for (const f of files) {
1742
2033
  this.addResource(this.getTargetMap(accumulator, resourceType), f, metadata, true);
1743
2034
  }
@@ -1756,7 +2047,7 @@ export class DefaultPackageManager {
1756
2047
  const dir = join(packageRoot, resourceType);
1757
2048
  if (existsSync(dir)) {
1758
2049
  // Collect all files from the directory (all enabled by default)
1759
- const files = collectResourceFiles(dir, resourceType);
2050
+ const files = collectResourceFiles(dir, resourceType, packageRoot);
1760
2051
  for (const f of files) {
1761
2052
  this.addResource(target, f, metadata, true);
1762
2053
  }
@@ -1796,7 +2087,7 @@ export class DefaultPackageManager {
1796
2087
  if (!existsSync(conventionDir)) {
1797
2088
  return { allFiles: [], enabledByManifest: new Set() };
1798
2089
  }
1799
- const allFiles = collectResourceFiles(conventionDir, resourceType);
2090
+ const allFiles = collectResourceFiles(conventionDir, resourceType, packageRoot);
1800
2091
  return { allFiles, enabledByManifest: new Set(allFiles) };
1801
2092
  }
1802
2093
  readOmkManifest(packageRoot) {
@@ -1826,7 +2117,10 @@ export class DefaultPackageManager {
1826
2117
  }
1827
2118
  }
1828
2119
  collectFilesFromManifestEntries(entries, root, resourceType) {
1829
- const sourceEntries = entries.filter((entry) => !isOverridePattern(entry));
2120
+ const sourceEntries = entries
2121
+ .filter((entry) => !isOverridePattern(entry))
2122
+ .map((entry) => resolveManifestEntryInsideRoot(root, entry))
2123
+ .filter((entry) => Boolean(entry));
1830
2124
  const resolved = sourceEntries.flatMap((entry) => {
1831
2125
  if (!hasGlobPattern(entry)) {
1832
2126
  return [resolve(root, entry)];
@@ -1836,9 +2130,11 @@ export class DefaultPackageManager {
1836
2130
  absolute: true,
1837
2131
  dot: false,
1838
2132
  nodir: false,
1839
- }).map((match) => resolve(match));
2133
+ })
2134
+ .map((match) => resolve(match))
2135
+ .filter((match) => isPathInsideRootByRealpath(root, match));
1840
2136
  });
1841
- return this.collectFilesFromPaths(resolved, resourceType);
2137
+ return this.collectFilesFromPaths(resolved, resourceType, root);
1842
2138
  }
1843
2139
  resolveLocalEntries(entries, resourceType, target, metadata, baseDir) {
1844
2140
  if (entries.length === 0)
@@ -1903,7 +2199,7 @@ export class DefaultPackageManager {
1903
2199
  // Project extensions from .omk/
1904
2200
  addResources("extensions", collectAutoExtensionEntries(projectDirs.extensions), projectMetadata, projectOverrides.extensions, projectBaseDir);
1905
2201
  // Project skills from .omk/
1906
- addResources("skills", collectAutoSkillEntries(projectDirs.skills, "pi"), projectMetadata, projectOverrides.skills, projectBaseDir);
2202
+ addResources("skills", collectAutoSkillEntries(projectDirs.skills, "omk"), projectMetadata, projectOverrides.skills, projectBaseDir);
1907
2203
  // Project skills from .agents/ (each with its own baseDir)
1908
2204
  for (const agentsSkillsDir of projectAgentsSkillDirs) {
1909
2205
  const agentsBaseDir = dirname(agentsSkillsDir); // the .agents directory
@@ -1918,7 +2214,7 @@ export class DefaultPackageManager {
1918
2214
  // User extensions from ~/.omk/agent/
1919
2215
  addResources("extensions", collectAutoExtensionEntries(userDirs.extensions), userMetadata, userOverrides.extensions, globalBaseDir);
1920
2216
  // User skills from ~/.omk/agent/
1921
- addResources("skills", collectAutoSkillEntries(userDirs.skills, "pi"), userMetadata, userOverrides.skills, globalBaseDir);
2217
+ addResources("skills", collectAutoSkillEntries(userDirs.skills, "omk"), userMetadata, userOverrides.skills, globalBaseDir);
1922
2218
  // User skills from ~/.agents/ (with its own baseDir)
1923
2219
  const userAgentsBaseDir = dirname(userAgentsSkillsDir);
1924
2220
  const userAgentsMetadata = {
@@ -1929,18 +2225,20 @@ export class DefaultPackageManager {
1929
2225
  addResources("prompts", collectAutoPromptEntries(userDirs.prompts), userMetadata, userOverrides.prompts, globalBaseDir);
1930
2226
  addResources("themes", collectAutoThemeEntries(userDirs.themes), userMetadata, userOverrides.themes, globalBaseDir);
1931
2227
  }
1932
- collectFilesFromPaths(paths, resourceType) {
2228
+ collectFilesFromPaths(paths, resourceType, containmentRoot) {
1933
2229
  const files = [];
1934
2230
  for (const p of paths) {
1935
2231
  if (!existsSync(p))
1936
2232
  continue;
2233
+ if (containmentRoot && !isPathInsideRootByRealpath(containmentRoot, p))
2234
+ continue;
1937
2235
  try {
1938
2236
  const stats = statSync(p);
1939
2237
  if (stats.isFile()) {
1940
2238
  files.push(p);
1941
2239
  }
1942
2240
  else if (stats.isDirectory()) {
1943
- files.push(...collectResourceFiles(p, resourceType));
2241
+ files.push(...collectResourceFiles(p, resourceType, containmentRoot));
1944
2242
  }
1945
2243
  }
1946
2244
  catch {
@@ -2003,7 +2301,7 @@ export class DefaultPackageManager {
2003
2301
  };
2004
2302
  }
2005
2303
  spawnCommand(command, args, options) {
2006
- const env = getEnv();
2304
+ const env = options?.env ?? getEnv();
2007
2305
  return spawnProcess(command, args, {
2008
2306
  cwd: options?.cwd,
2009
2307
  stdio: isStdoutTakenOver() ? ["ignore", 2, 2] : "inherit",