@skaile/workspaces 6.1.0 → 6.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (381) hide show
  1. package/CHANGELOG.md +48 -0
  2. package/dist/{asset-feeds-HJFV7UPW.js → asset-feeds-KPKCE64E.js} +26 -26
  3. package/dist/{asset-feeds-HJFV7UPW.js.map → asset-feeds-KPKCE64E.js.map} +1 -1
  4. package/dist/asset-manager/catalog-deployer.js +10 -10
  5. package/dist/asset-manager/fragments.js +1 -1
  6. package/dist/asset-manager/index.js +18 -18
  7. package/dist/asset-manager/installer.js +13 -13
  8. package/dist/asset-manager/renderers.js +11 -11
  9. package/dist/asset-manager/src/index.d.ts +149 -16
  10. package/dist/asset-manager/src/index.d.ts.map +1 -1
  11. package/dist/asset-manager/src/installer.d.ts +9 -0
  12. package/dist/asset-manager/src/installer.d.ts.map +1 -1
  13. package/dist/asset-manager/src/renderers.d.ts +7 -0
  14. package/dist/asset-manager/src/renderers.d.ts.map +1 -1
  15. package/dist/bridge/harnesses/claude-sdk.js +15 -15
  16. package/dist/bridge/harnesses/codex.js +24 -17
  17. package/dist/bridge/harnesses/codex.js.map +1 -1
  18. package/dist/bridge/harnesses/continue.js +14 -14
  19. package/dist/bridge/harnesses/echo.js +4 -4
  20. package/dist/bridge/harnesses/gemini.js +10 -10
  21. package/dist/bridge/harnesses/goose.js +14 -14
  22. package/dist/bridge/harnesses/omp.js +15 -8
  23. package/dist/bridge/harnesses/omp.js.map +1 -1
  24. package/dist/bridge/harnesses/opencode.js +14 -14
  25. package/dist/bridge/harnesses/qwen.js +10 -10
  26. package/dist/bridge/index.js +19 -19
  27. package/dist/bridge/src/harness-model-check.d.ts +15 -0
  28. package/dist/bridge/src/harness-model-check.d.ts.map +1 -1
  29. package/dist/bridge/src/harnesses/_subprocess-cli.d.ts.map +1 -1
  30. package/dist/bridge/src/harnesses/codex.d.ts.map +1 -1
  31. package/dist/bridge/src/harnesses/omp.d.ts.map +1 -1
  32. package/dist/bridge/src/index.d.ts +1 -1
  33. package/dist/bridge/src/index.d.ts.map +1 -1
  34. package/dist/bridge/src/runner-private-env.d.ts +7 -0
  35. package/dist/bridge/src/runner-private-env.d.ts.map +1 -1
  36. package/dist/{chunk-DIGFA7Z5.js → chunk-27SXN33H.js} +13 -5
  37. package/dist/chunk-27SXN33H.js.map +1 -0
  38. package/dist/{chunk-AITJ7ELM.js → chunk-2XM3ZH36.js} +59 -23
  39. package/dist/chunk-2XM3ZH36.js.map +1 -0
  40. package/dist/{chunk-KUQAJVYT.js → chunk-3HACK2Z7.js} +142 -28
  41. package/dist/chunk-3HACK2Z7.js.map +1 -0
  42. package/dist/{chunk-J72MO2WA.js → chunk-5JPW27BI.js} +10 -9
  43. package/dist/chunk-5JPW27BI.js.map +1 -0
  44. package/dist/{chunk-AATHJRKL.js → chunk-5LQ62LNT.js} +4 -4
  45. package/dist/{chunk-AATHJRKL.js.map → chunk-5LQ62LNT.js.map} +1 -1
  46. package/dist/{chunk-S2XHGWQC.js → chunk-6CYKTHNT.js} +44 -15
  47. package/dist/chunk-6CYKTHNT.js.map +1 -0
  48. package/dist/{chunk-XFIEVEU7.js → chunk-6OHZUUR7.js} +5 -4
  49. package/dist/chunk-6OHZUUR7.js.map +1 -0
  50. package/dist/{chunk-E572OHGY.js → chunk-76FLBODK.js} +4 -3
  51. package/dist/chunk-76FLBODK.js.map +1 -0
  52. package/dist/{chunk-HPMQRAIF.js → chunk-7DRFKAJZ.js} +7 -7
  53. package/dist/{chunk-HPMQRAIF.js.map → chunk-7DRFKAJZ.js.map} +1 -1
  54. package/dist/{chunk-EX3GLAL6.js → chunk-7H6XRCPG.js} +5 -5
  55. package/dist/{chunk-EX3GLAL6.js.map → chunk-7H6XRCPG.js.map} +1 -1
  56. package/dist/{chunk-4FVIT5DI.js → chunk-7Y6S4XLL.js} +3 -3
  57. package/dist/{chunk-4FVIT5DI.js.map → chunk-7Y6S4XLL.js.map} +1 -1
  58. package/dist/{chunk-RDTLPOPD.js → chunk-BEYNH2LS.js} +4 -4
  59. package/dist/{chunk-RDTLPOPD.js.map → chunk-BEYNH2LS.js.map} +1 -1
  60. package/dist/{chunk-GNZBFSRB.js → chunk-BOT64P3U.js} +4 -4
  61. package/dist/{chunk-GNZBFSRB.js.map → chunk-BOT64P3U.js.map} +1 -1
  62. package/dist/{chunk-VMVDAZLA.js → chunk-BRK5QZKI.js} +108 -19
  63. package/dist/chunk-BRK5QZKI.js.map +1 -0
  64. package/dist/{chunk-QSYQOTWN.js → chunk-BY5WIRCU.js} +58 -5
  65. package/dist/chunk-BY5WIRCU.js.map +1 -0
  66. package/dist/{chunk-Z7ZEZZB6.js → chunk-C5HFK34M.js} +3 -3
  67. package/dist/chunk-C5HFK34M.js.map +1 -0
  68. package/dist/{chunk-ABFPSVIS.js → chunk-COAFAYBS.js} +31 -7
  69. package/dist/chunk-COAFAYBS.js.map +1 -0
  70. package/dist/{chunk-YLLVSR2U.js → chunk-E5NQRHEB.js} +30 -7
  71. package/dist/chunk-E5NQRHEB.js.map +1 -0
  72. package/dist/{chunk-BFMYYNDT.js → chunk-F3D25RGM.js} +11 -3
  73. package/dist/chunk-F3D25RGM.js.map +1 -0
  74. package/dist/{chunk-QAKUD6QN.js → chunk-GF5JXQIZ.js} +3 -3
  75. package/dist/{chunk-QAKUD6QN.js.map → chunk-GF5JXQIZ.js.map} +1 -1
  76. package/dist/{chunk-ZFUZ5AKM.js → chunk-I7LC5TDY.js} +3 -3
  77. package/dist/{chunk-ZFUZ5AKM.js.map → chunk-I7LC5TDY.js.map} +1 -1
  78. package/dist/{chunk-NB7SYQYP.js → chunk-ICSGNT5P.js} +7 -7
  79. package/dist/{chunk-NB7SYQYP.js.map → chunk-ICSGNT5P.js.map} +1 -1
  80. package/dist/{chunk-CEKW3KXP.js → chunk-ITFCWMOY.js} +18 -15
  81. package/dist/chunk-ITFCWMOY.js.map +1 -0
  82. package/dist/{chunk-LSSYC5IC.js → chunk-IZQOO6MN.js} +2 -2
  83. package/dist/{chunk-LSSYC5IC.js.map → chunk-IZQOO6MN.js.map} +1 -1
  84. package/dist/{chunk-7LP7RCZI.js → chunk-JFLQICIU.js} +5 -5
  85. package/dist/{chunk-7LP7RCZI.js.map → chunk-JFLQICIU.js.map} +1 -1
  86. package/dist/{chunk-COYF6IG2.js → chunk-JJJ2G4K2.js} +5 -5
  87. package/dist/{chunk-COYF6IG2.js.map → chunk-JJJ2G4K2.js.map} +1 -1
  88. package/dist/{chunk-RHN5MRQO.js → chunk-JMIKGAUA.js} +27 -5
  89. package/dist/chunk-JMIKGAUA.js.map +1 -0
  90. package/dist/{chunk-DGTI65OC.js → chunk-K3R2UKG7.js} +17 -11
  91. package/dist/chunk-K3R2UKG7.js.map +1 -0
  92. package/dist/{chunk-3GMOPFWH.js → chunk-KB56WBQ3.js} +4 -4
  93. package/dist/{chunk-3GMOPFWH.js.map → chunk-KB56WBQ3.js.map} +1 -1
  94. package/dist/{chunk-ZHGKAZJ7.js → chunk-KJSC2ZD6.js} +56 -8
  95. package/dist/chunk-KJSC2ZD6.js.map +1 -0
  96. package/dist/{chunk-ZBHZLWV3.js → chunk-KPKGWXUJ.js} +4 -4
  97. package/dist/{chunk-ZBHZLWV3.js.map → chunk-KPKGWXUJ.js.map} +1 -1
  98. package/dist/{chunk-EJPMNDTP.js → chunk-KXJMQTOU.js} +3 -3
  99. package/dist/{chunk-EJPMNDTP.js.map → chunk-KXJMQTOU.js.map} +1 -1
  100. package/dist/{chunk-7HX6FNKL.js → chunk-LRBP3234.js} +41 -56
  101. package/dist/chunk-LRBP3234.js.map +1 -0
  102. package/dist/{chunk-FKQNBCDW.js → chunk-M4OG2YN4.js} +4 -4
  103. package/dist/{chunk-FKQNBCDW.js.map → chunk-M4OG2YN4.js.map} +1 -1
  104. package/dist/{chunk-UI745XC3.js → chunk-MAZ3UXJK.js} +13 -7
  105. package/dist/chunk-MAZ3UXJK.js.map +1 -0
  106. package/dist/{chunk-ASWTQQ7E.js → chunk-MM4YO3EL.js} +3 -3
  107. package/dist/{chunk-ASWTQQ7E.js.map → chunk-MM4YO3EL.js.map} +1 -1
  108. package/dist/{chunk-6YR4ALVX.js → chunk-OCQNUV4T.js} +7 -7
  109. package/dist/{chunk-6YR4ALVX.js.map → chunk-OCQNUV4T.js.map} +1 -1
  110. package/dist/{chunk-4MUDQCBP.js → chunk-PJJSBZZP.js} +3 -3
  111. package/dist/{chunk-4MUDQCBP.js.map → chunk-PJJSBZZP.js.map} +1 -1
  112. package/dist/{chunk-HWNK3F3X.js → chunk-PKBLJI23.js} +588 -76
  113. package/dist/chunk-PKBLJI23.js.map +1 -0
  114. package/dist/{chunk-NOA6EJXE.js → chunk-PKE3PXOK.js} +3 -3
  115. package/dist/{chunk-NOA6EJXE.js.map → chunk-PKE3PXOK.js.map} +1 -1
  116. package/dist/{chunk-AZ2H6R5I.js → chunk-PMWRM4EJ.js} +74 -39
  117. package/dist/chunk-PMWRM4EJ.js.map +1 -0
  118. package/dist/{chunk-VYVTEMAW.js → chunk-PNUM7GUY.js} +3 -3
  119. package/dist/{chunk-VYVTEMAW.js.map → chunk-PNUM7GUY.js.map} +1 -1
  120. package/dist/{chunk-X3YGUKCG.js → chunk-Q5RN4PWV.js} +3 -3
  121. package/dist/{chunk-X3YGUKCG.js.map → chunk-Q5RN4PWV.js.map} +1 -1
  122. package/dist/{chunk-BBBCJSSU.js → chunk-QIHL3YPL.js} +4 -4
  123. package/dist/{chunk-BBBCJSSU.js.map → chunk-QIHL3YPL.js.map} +1 -1
  124. package/dist/{chunk-HMISULVD.js → chunk-QK7AG5AV.js} +4 -4
  125. package/dist/{chunk-HMISULVD.js.map → chunk-QK7AG5AV.js.map} +1 -1
  126. package/dist/{chunk-ZDLUQLI6.js → chunk-QPWR3YMY.js} +15 -5
  127. package/dist/chunk-QPWR3YMY.js.map +1 -0
  128. package/dist/{chunk-SVTMNSPI.js → chunk-QXKUFROW.js} +5 -5
  129. package/dist/{chunk-SVTMNSPI.js.map → chunk-QXKUFROW.js.map} +1 -1
  130. package/dist/{chunk-5Y2KGB4H.js → chunk-RQMIZONH.js} +34 -9
  131. package/dist/chunk-RQMIZONH.js.map +1 -0
  132. package/dist/{chunk-LSI2IVFT.js → chunk-RXGPFAMN.js} +4 -3
  133. package/dist/chunk-RXGPFAMN.js.map +1 -0
  134. package/dist/{chunk-NUA33BYO.js → chunk-S2H3RBK7.js} +42 -15
  135. package/dist/chunk-S2H3RBK7.js.map +1 -0
  136. package/dist/{chunk-2LAPHLDH.js → chunk-SJNZ4WPA.js} +44 -35
  137. package/dist/chunk-SJNZ4WPA.js.map +1 -0
  138. package/dist/{chunk-QEULL4Q3.js → chunk-T2VBPVWZ.js} +77 -18
  139. package/dist/chunk-T2VBPVWZ.js.map +1 -0
  140. package/dist/{chunk-Z3VKUWAX.js → chunk-TSTRH4SM.js} +3 -3
  141. package/dist/{chunk-Z3VKUWAX.js.map → chunk-TSTRH4SM.js.map} +1 -1
  142. package/dist/{chunk-5J4NPGFM.js → chunk-TZERN27L.js} +5 -5
  143. package/dist/{chunk-5J4NPGFM.js.map → chunk-TZERN27L.js.map} +1 -1
  144. package/dist/{chunk-XGULGQA3.js → chunk-U673DB5U.js} +4 -4
  145. package/dist/{chunk-XGULGQA3.js.map → chunk-U673DB5U.js.map} +1 -1
  146. package/dist/{chunk-IRYKRKVQ.js → chunk-URCJIV7T.js} +3 -3
  147. package/dist/{chunk-IRYKRKVQ.js.map → chunk-URCJIV7T.js.map} +1 -1
  148. package/dist/{chunk-ADPM6AYF.js → chunk-VSX2G7LA.js} +3 -3
  149. package/dist/{chunk-ADPM6AYF.js.map → chunk-VSX2G7LA.js.map} +1 -1
  150. package/dist/{chunk-ILLTBKDJ.js → chunk-X37JUNEW.js} +4 -4
  151. package/dist/{chunk-ILLTBKDJ.js.map → chunk-X37JUNEW.js.map} +1 -1
  152. package/dist/{chunk-IHFGPHCT.js → chunk-Z3IRZBXB.js} +49 -25
  153. package/dist/chunk-Z3IRZBXB.js.map +1 -0
  154. package/dist/{chunk-ZAELRYKS.js → chunk-ZWJCRHP3.js} +3 -3
  155. package/dist/{chunk-ZAELRYKS.js.map → chunk-ZWJCRHP3.js.map} +1 -1
  156. package/dist/{claude-code-RE46FJXI.js → claude-code-BBMNVH2J.js} +5 -5
  157. package/dist/{claude-code-RE46FJXI.js.map → claude-code-BBMNVH2J.js.map} +1 -1
  158. package/dist/cli/index.js +348 -141
  159. package/dist/cli/index.js.map +1 -1
  160. package/dist/cli/src/commands/asset-cmd.d.ts.map +1 -1
  161. package/dist/cli/src/commands/catalog.d.ts.map +1 -1
  162. package/dist/cli/src/commands/config.d.ts.map +1 -1
  163. package/dist/cli/src/commands/diff.d.ts.map +1 -1
  164. package/dist/cli/src/commands/harness.d.ts.map +1 -1
  165. package/dist/cli/src/commands/integration.d.ts.map +1 -1
  166. package/dist/cli/src/commands/library-cmd.d.ts.map +1 -1
  167. package/dist/cli/src/commands/library-index.d.ts +8 -1
  168. package/dist/cli/src/commands/library-index.d.ts.map +1 -1
  169. package/dist/cli/src/commands/migrate-assets.d.ts.map +1 -1
  170. package/dist/cli/src/commands/outdated.d.ts.map +1 -1
  171. package/dist/cli/src/commands/plugin-registry-cmd.d.ts.map +1 -1
  172. package/dist/cli/src/commands/project.d.ts.map +1 -1
  173. package/dist/cli/src/commands/rebuild.d.ts.map +1 -1
  174. package/dist/cli/src/commands/run.d.ts.map +1 -1
  175. package/dist/cli/src/commands/serve-preflight.d.ts +31 -1
  176. package/dist/cli/src/commands/serve-preflight.d.ts.map +1 -1
  177. package/dist/cli/src/commands/serve.d.ts +10 -0
  178. package/dist/cli/src/commands/serve.d.ts.map +1 -1
  179. package/dist/cli/src/commands/source-manifest-publish.d.ts.map +1 -1
  180. package/dist/cli/src/commands/source-manifest.d.ts +19 -7
  181. package/dist/cli/src/commands/source-manifest.d.ts.map +1 -1
  182. package/dist/cli/src/commands/validate-instances.d.ts.map +1 -1
  183. package/dist/cli/src/commands/validate.d.ts.map +1 -1
  184. package/dist/cli/src/commands/why.d.ts.map +1 -1
  185. package/dist/cli/src/config-checks.d.ts +23 -5
  186. package/dist/cli/src/config-checks.d.ts.map +1 -1
  187. package/dist/cli/src/harness-error.d.ts +12 -1
  188. package/dist/cli/src/harness-error.d.ts.map +1 -1
  189. package/dist/cli/src/helpers.d.ts +18 -8
  190. package/dist/cli/src/helpers.d.ts.map +1 -1
  191. package/dist/cli/src/plugin-store/index.d.ts +10 -1
  192. package/dist/cli/src/plugin-store/index.d.ts.map +1 -1
  193. package/dist/cli/src/plugin-store/spec.d.ts +8 -0
  194. package/dist/cli/src/plugin-store/spec.d.ts.map +1 -1
  195. package/dist/cli/src/skill-checks.d.ts +2 -2
  196. package/dist/cli/src/skill-checks.d.ts.map +1 -1
  197. package/dist/connectors/config.js +5 -5
  198. package/dist/connectors/index.js +22 -22
  199. package/dist/connectors/src/connector-manager.d.ts.map +1 -1
  200. package/dist/connectors-47EM6C2P.js +48 -0
  201. package/dist/{connectors-7THEF7YA.js.map → connectors-47EM6C2P.js.map} +1 -1
  202. package/dist/core/framework.js +1 -1
  203. package/dist/core/index.js +9 -9
  204. package/dist/core/manifest.js +2 -2
  205. package/dist/core/models.js +1 -1
  206. package/dist/core/provider-registry-credentials.js +2 -2
  207. package/dist/core/provider-registry.js +1 -1
  208. package/dist/core/publish-manifest.js +3 -3
  209. package/dist/core/ref.js +1 -1
  210. package/dist/core/runtime-assets.js +5 -5
  211. package/dist/core/src/framework.d.ts +5 -3
  212. package/dist/core/src/framework.d.ts.map +1 -1
  213. package/dist/core/src/index.d.ts +2 -1
  214. package/dist/core/src/index.d.ts.map +1 -1
  215. package/dist/core/src/lock.d.ts +12 -0
  216. package/dist/core/src/lock.d.ts.map +1 -1
  217. package/dist/core/src/manifest.d.ts +15 -0
  218. package/dist/core/src/manifest.d.ts.map +1 -1
  219. package/dist/core/src/models.d.ts +7 -0
  220. package/dist/core/src/models.d.ts.map +1 -1
  221. package/dist/core/src/provider-registry.d.ts +6 -0
  222. package/dist/core/src/provider-registry.d.ts.map +1 -1
  223. package/dist/core/src/workspace-config.d.ts +10 -1
  224. package/dist/core/src/workspace-config.d.ts.map +1 -1
  225. package/dist/core/src/workspace-yaml-editor.d.ts.map +1 -1
  226. package/dist/core/workspace-config.js +4 -4
  227. package/dist/deploy/index.js +9 -9
  228. package/dist/discovery/index.js +5 -5
  229. package/dist/discovery/src/parse-manifest.d.ts.map +1 -1
  230. package/dist/{ensure-sources-IH7CHSJF.js → ensure-sources-K5EFNC3L.js} +35 -21
  231. package/dist/ensure-sources-K5EFNC3L.js.map +1 -0
  232. package/dist/factory-assets/connectors/box.js +22 -22
  233. package/dist/factory-assets/connectors/deploy.js +22 -22
  234. package/dist/factory-assets/connectors/devserver.js +22 -22
  235. package/dist/factory-assets/connectors/flow/adapter.js +22 -22
  236. package/dist/factory-assets/connectors/flow/engine.js +10 -10
  237. package/dist/factory-assets/connectors/flow/run-flow.d.ts.map +1 -1
  238. package/dist/factory-assets/connectors/flow/run-flow.js +24 -24
  239. package/dist/factory-assets/connectors/flow.js +22 -22
  240. package/dist/factory-assets/connectors/git.js +22 -22
  241. package/dist/factory-assets/connectors/gmail.js +22 -22
  242. package/dist/factory-assets/connectors/googledrive.js +22 -22
  243. package/dist/factory-assets/connectors/local.js +22 -22
  244. package/dist/factory-assets/connectors/mattermost.js +22 -22
  245. package/dist/factory-assets/connectors/memory.js +22 -22
  246. package/dist/factory-assets/connectors/minio.js +22 -22
  247. package/dist/factory-assets/connectors/postgres.js +22 -22
  248. package/dist/factory-assets/connectors/s3.js +22 -22
  249. package/dist/factory-assets/connectors/sharepoint.js +22 -22
  250. package/dist/factory-assets/connectors/sqlite.js +22 -22
  251. package/dist/factory-assets/connectors/static-server.js +22 -22
  252. package/dist/factory-assets/connectors/tunnel.js +22 -22
  253. package/dist/factory-assets/connectors/webdav.js +22 -22
  254. package/dist/factory-assets/connectors/xstate-store.js +22 -22
  255. package/dist/factory-assets/connectors/xstate.js +22 -22
  256. package/dist/flows-KLBNSKLO.js +26 -0
  257. package/dist/{flows-4JZQ3XFK.js.map → flows-KLBNSKLO.js.map} +1 -1
  258. package/dist/helpers-LUSV2ICC.js +52 -0
  259. package/dist/{helpers-JNMK3FC2.js.map → helpers-LUSV2ICC.js.map} +1 -1
  260. package/dist/library/index.js +14 -14
  261. package/dist/library/install.js +5 -5
  262. package/dist/library/src/index.d.ts +1 -1
  263. package/dist/library/src/index.d.ts.map +1 -1
  264. package/dist/library/src/install/index.d.ts +1 -1
  265. package/dist/library/src/install/index.d.ts.map +1 -1
  266. package/dist/library/src/install/install-from-manifest.d.ts +13 -0
  267. package/dist/library/src/install/install-from-manifest.d.ts.map +1 -1
  268. package/dist/library/src/install/source-fetch-github.d.ts.map +1 -1
  269. package/dist/library/src/manifest-writer.d.ts.map +1 -1
  270. package/dist/library/src/remote/remote-catalog-source.d.ts +3 -1
  271. package/dist/library/src/remote/remote-catalog-source.d.ts.map +1 -1
  272. package/dist/library/src/remote/rest-catalog-source.d.ts +3 -2
  273. package/dist/library/src/remote/rest-catalog-source.d.ts.map +1 -1
  274. package/dist/{library-publish-I3UWXAHI.js → library-publish-XMRCKRNR.js} +54 -55
  275. package/dist/library-publish-XMRCKRNR.js.map +1 -0
  276. package/dist/model-endpoint/index.js +12 -12
  277. package/dist/model-endpoint/src/openai-chat.d.ts +7 -2
  278. package/dist/model-endpoint/src/openai-chat.d.ts.map +1 -1
  279. package/dist/model-endpoint/src/openai-shared.d.ts +8 -0
  280. package/dist/model-endpoint/src/openai-shared.d.ts.map +1 -1
  281. package/dist/model-endpoint/src/server.d.ts.map +1 -1
  282. package/dist/model-endpoint/src/types.d.ts +1 -1
  283. package/dist/model-endpoint/src/types.d.ts.map +1 -1
  284. package/dist/model-endpoint/src/usage-cost.d.ts +23 -0
  285. package/dist/model-endpoint/src/usage-cost.d.ts.map +1 -0
  286. package/dist/open-library-XBR46DJL.js +56 -0
  287. package/dist/{open-library-NKKUJLWA.js.map → open-library-XBR46DJL.js.map} +1 -1
  288. package/dist/open-registry-W562DCDL.js +32 -0
  289. package/dist/{open-registry-BYAXSHUI.js.map → open-registry-W562DCDL.js.map} +1 -1
  290. package/dist/paths-2AZXB3QL.js +22 -0
  291. package/dist/{paths-UKWE35XS.js.map → paths-2AZXB3QL.js.map} +1 -1
  292. package/dist/plugin-store-36SIL4TV.js +23 -0
  293. package/dist/{plugin-store-ABE35NRX.js.map → plugin-store-36SIL4TV.js.map} +1 -1
  294. package/dist/project-D7GN7WLS.js +86 -0
  295. package/dist/{project-BIPK47JK.js.map → project-D7GN7WLS.js.map} +1 -1
  296. package/dist/resolver/index.js +10 -10
  297. package/dist/runner/index.js +39 -39
  298. package/dist/runner/src/capability-roundtrip.d.ts +7 -6
  299. package/dist/runner/src/capability-roundtrip.d.ts.map +1 -1
  300. package/dist/runner/src/serve.d.ts +6 -5
  301. package/dist/runner/src/serve.d.ts.map +1 -1
  302. package/dist/sdk/asset-manager.js +18 -18
  303. package/dist/sdk/bridge.js +19 -19
  304. package/dist/sdk/core.js +9 -9
  305. package/dist/sdk/flow.js +10 -10
  306. package/dist/sdk/index.js +39 -39
  307. package/dist/sdk/resolver.js +10 -10
  308. package/dist/sdk/runner.js +39 -39
  309. package/dist/sdk/transport/ws/server.js +10 -10
  310. package/dist/sdk/transport/ws.js +10 -10
  311. package/dist/sdk/transport.js +10 -10
  312. package/dist/{serve-preflight-FLTIBTEX.js → serve-preflight-CGA5G3AE.js} +63 -35
  313. package/dist/serve-preflight-CGA5G3AE.js.map +1 -0
  314. package/dist/{setup-AG6NFHSN.js → setup-IBDNJAOU.js} +31 -31
  315. package/dist/{setup-AG6NFHSN.js.map → setup-IBDNJAOU.js.map} +1 -1
  316. package/dist/skills-CTTO7SZK.js +26 -0
  317. package/dist/{skills-UQYUHVKO.js.map → skills-CTTO7SZK.js.map} +1 -1
  318. package/dist/source-2DJ5KNOI.js +85 -0
  319. package/dist/{source-ASEHI2XS.js.map → source-2DJ5KNOI.js.map} +1 -1
  320. package/dist/source-fetch-github-RWHV4I5Z.js +4 -0
  321. package/dist/{source-fetch-github-ST4MFL3D.js.map → source-fetch-github-RWHV4I5Z.js.map} +1 -1
  322. package/dist/{source-manifest-publish-IEVV3W6J.js → source-manifest-publish-IYWUMUCY.js} +54 -56
  323. package/dist/source-manifest-publish-IYWUMUCY.js.map +1 -0
  324. package/dist/transport/index.js +10 -10
  325. package/dist/transport/ws/server.js +10 -10
  326. package/dist/transport/ws.js +10 -10
  327. package/dist/tui/index.js +47 -40
  328. package/dist/tui/index.js.map +1 -1
  329. package/dist/tui/src/repl.d.ts.map +1 -1
  330. package/dist/types/manifests.js +1 -1
  331. package/dist/types/src/manifests/index.d.ts +1 -1
  332. package/dist/types/src/manifests/index.d.ts.map +1 -1
  333. package/dist/types/src/manifests/scaffold-body.d.ts +2 -0
  334. package/dist/types/src/manifests/scaffold-body.d.ts.map +1 -1
  335. package/dist/workspace-plugin/adapters/mcp.js +29 -29
  336. package/dist/workspace-plugin/adapters/omp.js +15 -15
  337. package/dist/workspace-plugin/index.js +2 -2
  338. package/package.json +1 -1
  339. package/dist/chunk-2LAPHLDH.js.map +0 -1
  340. package/dist/chunk-5Y2KGB4H.js.map +0 -1
  341. package/dist/chunk-7HX6FNKL.js.map +0 -1
  342. package/dist/chunk-ABFPSVIS.js.map +0 -1
  343. package/dist/chunk-AITJ7ELM.js.map +0 -1
  344. package/dist/chunk-AZ2H6R5I.js.map +0 -1
  345. package/dist/chunk-BFMYYNDT.js.map +0 -1
  346. package/dist/chunk-CEKW3KXP.js.map +0 -1
  347. package/dist/chunk-DGTI65OC.js.map +0 -1
  348. package/dist/chunk-DIGFA7Z5.js.map +0 -1
  349. package/dist/chunk-E572OHGY.js.map +0 -1
  350. package/dist/chunk-HWNK3F3X.js.map +0 -1
  351. package/dist/chunk-IHFGPHCT.js.map +0 -1
  352. package/dist/chunk-J72MO2WA.js.map +0 -1
  353. package/dist/chunk-KUQAJVYT.js.map +0 -1
  354. package/dist/chunk-LSI2IVFT.js.map +0 -1
  355. package/dist/chunk-NUA33BYO.js.map +0 -1
  356. package/dist/chunk-QEULL4Q3.js.map +0 -1
  357. package/dist/chunk-QSYQOTWN.js.map +0 -1
  358. package/dist/chunk-RHN5MRQO.js.map +0 -1
  359. package/dist/chunk-S2XHGWQC.js.map +0 -1
  360. package/dist/chunk-UI745XC3.js.map +0 -1
  361. package/dist/chunk-VMVDAZLA.js.map +0 -1
  362. package/dist/chunk-XFIEVEU7.js.map +0 -1
  363. package/dist/chunk-YLLVSR2U.js.map +0 -1
  364. package/dist/chunk-Z7ZEZZB6.js.map +0 -1
  365. package/dist/chunk-ZDLUQLI6.js.map +0 -1
  366. package/dist/chunk-ZHGKAZJ7.js.map +0 -1
  367. package/dist/connectors-7THEF7YA.js +0 -48
  368. package/dist/ensure-sources-IH7CHSJF.js.map +0 -1
  369. package/dist/flows-4JZQ3XFK.js +0 -26
  370. package/dist/helpers-JNMK3FC2.js +0 -38
  371. package/dist/library-publish-I3UWXAHI.js.map +0 -1
  372. package/dist/open-library-NKKUJLWA.js +0 -42
  373. package/dist/open-registry-BYAXSHUI.js +0 -32
  374. package/dist/paths-UKWE35XS.js +0 -22
  375. package/dist/plugin-store-ABE35NRX.js +0 -23
  376. package/dist/project-BIPK47JK.js +0 -86
  377. package/dist/serve-preflight-FLTIBTEX.js.map +0 -1
  378. package/dist/skills-UQYUHVKO.js +0 -26
  379. package/dist/source-ASEHI2XS.js +0 -85
  380. package/dist/source-fetch-github-ST4MFL3D.js +0 -4
  381. package/dist/source-manifest-publish-IEVV3W6J.js.map +0 -1
package/dist/cli/index.js CHANGED
@@ -1,95 +1,95 @@
1
1
  #!/usr/bin/env node
2
- import { makeValidateCommand, scanIdentities } from '../chunk-IHFGPHCT.js';
3
- import { storeNotInstallableReason, mcpNotRunnableHere } from '../chunk-EX3GLAL6.js';
4
- import { makeProvidersCommand, loadRegistryView, addProviderEntry, ProviderRegistryWriteError, removeProviderEntry } from '../chunk-NB7SYQYP.js';
5
- import { makeInstallCommand, makeCheckCommand, makeCleanCommand, pinComposedAgents, reportRewritten, reportReplaced, reportRelocked, reportMoved, reportStoreNotChecked, globalProblems, editedConventionFiles, supportsInstallManifest, runYamlInstall, REF_HINT, reportInstalledSoftDeps } from '../chunk-CEKW3KXP.js';
6
- import { unknownHarnessMessage, reportProjectConfig, driverAliasOption, foldDriverFlag, friendlyHarnessError, harnessErrorNotes, isRecord } from '../chunk-7HX6FNKL.js';
2
+ import { makeValidateCommand, scanIdentities } from '../chunk-Z3IRZBXB.js';
3
+ import { storeNotInstallableReason, mcpNotRunnableHere } from '../chunk-7H6XRCPG.js';
4
+ import { makeProvidersCommand, loadRegistryView, addProviderEntry, ProviderRegistryWriteError, removeProviderEntry } from '../chunk-ICSGNT5P.js';
5
+ import { makeInstallCommand, makeCheckCommand, makeCleanCommand, pinComposedAgents, reportRewritten, reportReplaced, reportRelocked, reportMoved, reportStoreNotChecked, globalProblems, editedConventionFiles, supportsInstallManifest, runYamlInstall, REF_HINT, reportInstalledSoftDeps } from '../chunk-ITFCWMOY.js';
6
+ import { reportUnknownHarnesses, reportProjectConfig, agentInstanceErrorLines, isRecord } from '../chunk-LRBP3234.js';
7
7
  import { createSpinner } from '../chunk-NESV47MF.js';
8
- import { loadDeclaredPlugins } from '../chunk-QSYQOTWN.js';
9
- import { getStoreConfig, storeFetch, isStoreAuthenticated, getStoreToken } from '../chunk-3GMOPFWH.js';
10
- import { makeSourceCommand, syncProjectSources, divergedSourceClones } from '../chunk-AZ2H6R5I.js';
11
- import { libraryAssetRefusals, deviceLogin, loadStoreAuthConfig, logout, hasStoredAuth, exitOnLibrarySymlinks, resolveLibraryPublisherDetailed, getStoreIdentity, warnLibraryNameFallback, indexLibrary, warnIgnoredDomainFiles, removedDomainOption, rejectRemovedDomainOption, requireValidPublisherOrExit, exitOnManifestPublisherProblems, findAssetManifestFile, checkAssetFile, registerLibraryAsset, DOMAIN_REMOVED_HINT, reportLibrarySymlinks, checkAsset, manifestPublisherProblems, exitOnManifestPathProblems, manifestRequiresProblems, composeRefContext, registeredAssetKeys, assetEntryRef, duplicateAssetMessage, manifestParseFailureLine, manifestParseErrorText, unresolvedManifestDependencies, findEntryManifestFile, unheldRequiresOfFile, warnLegacyBundleFiles, checkComposeKinds } from '../chunk-AITJ7ELM.js';
12
- import { openCatalogSource, LocalCatalogDisabledError, openLibraryManager, openLibrary } from '../chunk-RDTLPOPD.js';
13
- import { AI_RESOURCES } from '../chunk-AATHJRKL.js';
14
- import { status, enable, disable, install, uninstall } from '../chunk-ASWTQQ7E.js';
15
- import { logErr, S, logOk, logInfo, logWarn, TARGET_DEFAULT_HINT, parseHarnessFilter, requireProjectConfig, deferredWarnings, warnPlaceholderBodies, warnFilesOnlyDelegates, reportLegacyOmpCopies, logNoProject, warnLegacyClaudeCopies, kindColorPad, kindColor, colorRef, formatSoftDepSection, bareSoftDepName, formatSoftDepHint, formatRelativeTime, formatSoftDepRemovePreview, formatSoftDepAddPreview, fitWidth, KIND_COL_WIDTH } from '../chunk-QEULL4Q3.js';
16
- import { getKindRegistry, getKnownKinds } from '../chunk-COYF6IG2.js';
8
+ import { loadDeclaredPlugins } from '../chunk-BY5WIRCU.js';
9
+ import { getStoreConfig, storeFetch, isStoreAuthenticated, getStoreToken } from '../chunk-KB56WBQ3.js';
10
+ import { makeSourceCommand, syncProjectSources, divergedSourceClones } from '../chunk-PMWRM4EJ.js';
11
+ import { libraryAssetRefusals, manifestEntryRenames, deviceLogin, loadStoreAuthConfig, logout, hasStoredAuth, exitOnLibrarySymlinks, resolveLibraryPublisherDetailed, getStoreIdentity, warnLibraryNameFallback, indexLibrary, warnIgnoredDomainFiles, removedDomainOption, rejectRemovedDomainOption, requireValidPublisherOrExit, exitOnManifestPublisherProblems, findAssetManifestFile, checkAssetFile, registerLibraryAsset, DOMAIN_REMOVED_HINT, reportLibrarySymlinks, checkAsset, manifestPublisherProblems, exitOnManifestPathProblems, manifestRequiresProblems, composeRefContext, registeredAssetKeys, assetEntryRef, duplicateAssetMessage, manifestParseFailureLine, manifestParseErrorText, unresolvedManifestDependencies, findEntryManifestFile, unheldRequiresOfFile, warnLegacyBundleFiles, checkComposeKinds } from '../chunk-2XM3ZH36.js';
12
+ import { openCatalogSource, LocalCatalogDisabledError, openLibraryManager, openLibrary } from '../chunk-BEYNH2LS.js';
13
+ import { AI_RESOURCES } from '../chunk-5LQ62LNT.js';
14
+ import { status, enable, disable, install, uninstall } from '../chunk-MM4YO3EL.js';
15
+ import { logErr, unknownHarnessTargetMessage, S, logOk, logInfo, logWarnErr, unknownHarnessMessage, logWarn, TARGET_DEFAULT_HINT, parseHarnessFilter, requireProjectConfig, deferredWarnings, warnPlaceholderBodies, warnFilesOnlyDelegates, reportLegacyOmpCopies, logNoProject, warnStaleHarnessCopies, kindColorPad, kindColor, colorRef, formatSoftDepSection, bareSoftDepName, driverAliasOption, foldDriverFlag, friendlyHarnessError, harnessErrorNotes, formatSoftDepHint, formatRelativeTime, formatSoftDepRemovePreview, formatSoftDepAddPreview, fitWidth, KIND_COL_WIDTH } from '../chunk-T2VBPVWZ.js';
16
+ import { getKindRegistry, getKnownKinds } from '../chunk-JJJ2G4K2.js';
17
17
  import { LocalSecretsProvider } from '../chunk-ILFGVSTJ.js';
18
- import { resolveInstanceAgentDir, instanceSessionOverrides, runAgentChat, isCompositionError, resolveSessionId, loadSessionById, loadSession, listSessions, setCurrentSession, deleteSession, clearSession, loadAgentManifest, hashAgentFiles, createCompositionContentSource, compileComposition, manifestModelForHarness, instanceForSession, resolveAgentInstance, describeComposition, MarkdownStreamer, createFinalTextFallback } from '../chunk-2LAPHLDH.js';
19
- import '../chunk-QAKUD6QN.js';
20
- import '../chunk-6YR4ALVX.js';
21
- import '../chunk-ZAELRYKS.js';
22
- import '../chunk-X3YGUKCG.js';
18
+ import { resolveInstanceAgentDir, instanceSessionOverrides, runAgentChat, isCompositionError, resolveSessionId, loadSessionById, loadSession, listSessions, setCurrentSession, deleteSession, clearSession, loadAgentManifest, hashAgentFiles, createCompositionContentSource, compileComposition, manifestModelForHarness, instanceForSession, resolveAgentInstance, describeComposition, MarkdownStreamer, createFinalTextFallback } from '../chunk-SJNZ4WPA.js';
19
+ import '../chunk-GF5JXQIZ.js';
20
+ import '../chunk-OCQNUV4T.js';
21
+ import '../chunk-ZWJCRHP3.js';
22
+ import '../chunk-Q5RN4PWV.js';
23
23
  import '../chunk-WYZXSJBK.js';
24
- import '../chunk-HMISULVD.js';
25
- import '../chunk-Z3VKUWAX.js';
24
+ import '../chunk-QK7AG5AV.js';
25
+ import '../chunk-TSTRH4SM.js';
26
26
  import '../chunk-KW37WNXY.js';
27
27
  import '../chunk-3MWQKQUB.js';
28
- import '../chunk-KUQAJVYT.js';
28
+ import '../chunk-3HACK2Z7.js';
29
29
  import '../chunk-O7SG5PC2.js';
30
30
  import '../chunk-7QBNJTTQ.js';
31
31
  import '../chunk-O2SYFJWP.js';
32
- import '../chunk-EJPMNDTP.js';
32
+ import '../chunk-KXJMQTOU.js';
33
33
  import '../chunk-32NA4TVC.js';
34
34
  import '../chunk-W3UDISS2.js';
35
- import '../chunk-ZFUZ5AKM.js';
36
- import { runFlow, resumeFlow } from '../chunk-J72MO2WA.js';
35
+ import '../chunk-I7LC5TDY.js';
36
+ import { runFlow, resumeFlow } from '../chunk-5JPW27BI.js';
37
37
  import '../chunk-4R6DROGN.js';
38
- import { parseSkillRequirements, validateRequirements } from '../chunk-IRYKRKVQ.js';
39
- import '../chunk-VYVTEMAW.js';
40
- import '../chunk-DGTI65OC.js';
38
+ import { parseSkillRequirements, validateRequirements } from '../chunk-URCJIV7T.js';
39
+ import '../chunk-PNUM7GUY.js';
40
+ import '../chunk-K3R2UKG7.js';
41
41
  import '../chunk-6GWSDPBP.js';
42
- import '../chunk-BBBCJSSU.js';
43
- import { checkHarnessModel, checkModelProvider } from '../chunk-5Y2KGB4H.js';
44
- import '../chunk-7LP7RCZI.js';
45
- import '../chunk-SVTMNSPI.js';
46
- import '../chunk-XGULGQA3.js';
42
+ import '../chunk-QIHL3YPL.js';
43
+ import { checkHarnessModel, checkModelProvider } from '../chunk-RQMIZONH.js';
44
+ import '../chunk-JFLQICIU.js';
45
+ import '../chunk-QXKUFROW.js';
46
+ import '../chunk-U673DB5U.js';
47
47
  import '../chunk-LOO5CB5M.js';
48
48
  import '../chunk-BIRW3HOG.js';
49
- import '../chunk-5J4NPGFM.js';
50
- import '../chunk-GNZBFSRB.js';
51
- import '../chunk-XFIEVEU7.js';
49
+ import '../chunk-TZERN27L.js';
50
+ import '../chunk-BOT64P3U.js';
51
+ import '../chunk-6OHZUUR7.js';
52
52
  import '../chunk-7DN6JKP2.js';
53
- import '../chunk-FKQNBCDW.js';
54
- import { listHarnesses, getProviderPreset, AI_PROVIDER_PRESETS } from '../chunk-ILLTBKDJ.js';
53
+ import '../chunk-M4OG2YN4.js';
54
+ import { listHarnesses, getProviderPreset, AI_PROVIDER_PRESETS } from '../chunk-X37JUNEW.js';
55
55
  import '../chunk-G5SUWZEU.js';
56
56
  import '../chunk-IFGTRL2I.js';
57
- import { loadFlow, flowLookupRoots, findFlowFileInRoots, loadAllFlowEntries } from '../chunk-4MUDQCBP.js';
57
+ import { loadFlow, flowLookupRoots, findFlowFileInRoots, loadAllFlowEntries } from '../chunk-PJJSBZZP.js';
58
58
  import '../chunk-WD3L5QSU.js';
59
- import { nodeLabel, nodeSkillAsset, nodeIsInert, nodeIsOptional, nodeRunKind } from '../chunk-7RGTAEG6.js';
59
+ import { nodeLabel, nodeSkillAsset, nodeIsInert, nodeIsOptional, nodeRunKind, nodeAssets } from '../chunk-7RGTAEG6.js';
60
60
  import '../chunk-JCPD4QRM.js';
61
- import { setLibraryAssetCheck, LibraryEntryError, AssetManager, parseRefTolerant, MissingManifestError, parseCanonicalLockKey, normalizeRepoUrl, FACTORY_SOURCE_URL } from '../chunk-HWNK3F3X.js';
62
- import { CatalogHttpError, libraryDirMissing, missingLibraryDirMessage, cloneOrInitGitRepo, trackOriginBranch, stampManifestPublisher, isGitRepo, ensureGitRepo, conflictingAssetRoot, scanUnlistedAssets, setManifestPublisher, LIBRARY_OWNERSHIPS, assertManifestEditable, installLibraryAsset, getStoreManifestsDir, assertValidLibraryName, unparsableAssetFiles, syncManifestWithDisk, renamedLibraryName, storeManifestFile, getDefaultValue, isSecretPlaceholder } from '../chunk-S2XHGWQC.js';
63
- import { flowFileNameError, SEMVER_RE } from '../chunk-UI745XC3.js';
64
- import '../chunk-YLLVSR2U.js';
65
- import '../chunk-BFMYYNDT.js';
61
+ import { setLibraryAssetCheck, setRenamedEntryLookup, LibraryEntryError, AssetManager, parseRefTolerant, MissingManifestError, parseCanonicalLockKey, normalizeRepoUrl } from '../chunk-PKBLJI23.js';
62
+ import { CatalogHttpError, libraryDirMissing, missingLibraryDirMessage, cloneOrInitGitRepo, trackOriginBranch, stampManifestPublisher, isGitRepo, ensureGitRepo, conflictingAssetRoot, scanUnlistedAssets, setManifestPublisher, LIBRARY_OWNERSHIPS, assertManifestEditable, installLibraryAsset, getStoreManifestsDir, assertValidLibraryName, unparsableAssetFiles, syncManifestWithDisk, renamedLibraryName, storeManifestFile, getDefaultValue, isSecretPlaceholder } from '../chunk-6CYKTHNT.js';
63
+ import { flowFileNameError, SEMVER_RE } from '../chunk-MAZ3UXJK.js';
64
+ import '../chunk-E5NQRHEB.js';
65
+ import '../chunk-F3D25RGM.js';
66
66
  import '../chunk-3TXEJN4W.js';
67
67
  import '../chunk-ISHJITXJ.js';
68
68
  import '../chunk-LNFKL23K.js';
69
69
  import '../chunk-JRN5QF4C.js';
70
70
  import '../chunk-NUELZWCF.js';
71
- import { installTargetOf, SCAFFOLD_KINDS } from '../chunk-NUA33BYO.js';
72
- import '../chunk-NOA6EJXE.js';
71
+ import { installTargetOf, SCAFFOLD_KINDS } from '../chunk-S2H3RBK7.js';
72
+ import '../chunk-PKE3PXOK.js';
73
73
  import '../chunk-KTBKW2FI.js';
74
74
  import '../chunk-UQ6LFBPZ.js';
75
- import '../chunk-ABFPSVIS.js';
76
- import { effectiveComposes, validatePreset, validateAgent, composeSlotDiagnostics, agentDeprecationDiagnostics, SLOT_ID_PATTERN } from '../chunk-E572OHGY.js';
77
- import { loadSettings, globalSettingsPath, resolveSettings, projectSettingsPath, saveSettings, WorkspaceYamlEditor, resolveLibraryDir, checkAgentSkillConformance, resolveSettingsWithSources, resolveConfiguredHarnessName, readLock, globalInstallDir, GLOBAL_INSTALL_DIR_NAME, workspaceProviderRegistryPath, userProviderRegistryPath, loadProviderRegistryFile, aiResourceRoots } from '../chunk-VMVDAZLA.js';
75
+ import '../chunk-COAFAYBS.js';
76
+ import { effectiveComposes, validatePreset, validateAgent, composeSlotDiagnostics, agentDeprecationDiagnostics, SLOT_ID_PATTERN } from '../chunk-76FLBODK.js';
77
+ import { loadSettings, globalSettingsPath, resolveSettings, projectSettingsPath, saveSettings, WorkspaceYamlEditor, resolveLibraryDir, checkAgentSkillConformance, resolveSettingsWithSources, resolveConfiguredHarnessName, readLock, FACTORY_SOURCE_URL, globalInstallDir, GLOBAL_INSTALL_DIR_NAME, workspaceProviderRegistryPath, userProviderRegistryPath, loadProviderRegistryFile, aiResourceRoots } from '../chunk-BRK5QZKI.js';
78
78
  import '../chunk-4GY63JU6.js';
79
- import { factoryAssetRoots } from '../chunk-ZDLUQLI6.js';
79
+ import { factoryAssetRoots } from '../chunk-QPWR3YMY.js';
80
80
  import { deployedDir } from '../chunk-5KRMNUL4.js';
81
- import { DEFAULT_HARNESS_ID, HARNESS_DEFAULTS } from '../chunk-Z7ZEZZB6.js';
81
+ import { DEFAULT_HARNESS_ID, HARNESS_DEFAULTS } from '../chunk-C5HFK34M.js';
82
82
  import { findKindDirs } from '../chunk-MWXYN6NY.js';
83
- import { SourceEntryError, LegacyKeyError, resolveSkWorkspaceConfig, sourceCacheKey, getGlobalCacheDir, resolveAgentDir, AgentRefResolutionError, resolveAgentDefinitionDir, effectiveAgentInstances, matchPin, coerceVersion, loadSkWorkspaceConfig, findWorkspaceRoot, isWorkspaceConfigFilename, SKAILE_YAML_DEFAULT, AGENT_PROFILE_FIELDS } from '../chunk-ZHGKAZJ7.js';
83
+ import { SourceEntryError, LegacyKeyError, resolveSkWorkspaceConfig, sourceCacheKey, getGlobalCacheDir, resolveAgentDir, AgentRefResolutionError, resolveAgentDefinitionDir, effectiveAgentInstances, matchPin, coerceVersion, loadSkWorkspaceConfig, findWorkspaceRoot, isWorkspaceConfigFilename, SKAILE_YAML_DEFAULT, AGENT_PROFILE_FIELDS } from '../chunk-KJSC2ZD6.js';
84
84
  import { globalCacheRoot, globalSkaileDir, userConfigPath } from '../chunk-L5VSIPQD.js';
85
85
  import { HARNESS_TARGETS, SUPPORTED_HARNESSES, harnessNameForHarnessId } from '../chunk-VTETQCR6.js';
86
- import { SKAILE_MANIFEST_FILENAME, loadSkPublishManifest, decodeSkaileManifest, LIBRARY_GITIGNORE, librarySymlinkMessage, isNonAssetPath, isNonAssetDir, encodeSkaileManifest } from '../chunk-ZBHZLWV3.js';
86
+ import { SKAILE_MANIFEST_FILENAME, loadSkPublishManifest, decodeSkaileManifest, LIBRARY_GITIGNORE, librarySymlinkMessage, isNonAssetPath, isNonAssetDir, encodeSkaileManifest } from '../chunk-KPKGWXUJ.js';
87
87
  import { pluginTitle } from '../chunk-RVRB27AN.js';
88
- import { dedupeRequirements, parseFrontmatter, scanDirectory, parseRequires } from '../chunk-RHN5MRQO.js';
89
- import { parseAssetRef, isValidPublisher, PUBLISHER_HINT, isValidAssetName, ASSET_NAME_HINT, depToStr, assetRefToStr, slugifyAssetName, parseAssetRefLoose } from '../chunk-LSSYC5IC.js';
90
- import { portableSpawn, portableSpawnSync } from '../chunk-ADPM6AYF.js';
88
+ import { setWalkTruncationSink, dedupeRequirements, parseFrontmatter, scanDirectory, parseRequires } from '../chunk-JMIKGAUA.js';
89
+ import { parseAssetRef, isValidPublisher, PUBLISHER_HINT, isValidAssetName, ASSET_NAME_HINT, depToStr, assetRefToStr, slugifyAssetName, parseAssetRefLoose } from '../chunk-IZQOO6MN.js';
90
+ import { portableSpawn, portableSpawnSync } from '../chunk-VSX2G7LA.js';
91
91
  import { openSqlite } from '../chunk-DKXNKFKP.js';
92
- import { parseModelRef, resolveEntryBaseUrl } from '../chunk-LSI2IVFT.js';
92
+ import { parseModelRef, resolveEntryBaseUrl } from '../chunk-RXGPFAMN.js';
93
93
  import '../chunk-C3CAXQMA.js';
94
94
  import { registerLogStore, LogStore, StdoutSink } from '../chunk-BOFL7GIF.js';
95
95
  import '../chunk-NSBPE2FW.js';
@@ -226,15 +226,17 @@ async function runSearch(kind, query, opts) {
226
226
  const showStore = !opts.local;
227
227
  const { resolveConfig } = await import('../library/index.js');
228
228
  const airGapped = resolveConfig({ projectDir: path19__default.resolve(opts.projectDir) }).catalog.cache_ttl === 0;
229
- if (showLocal) {
230
- await searchLocal(query, kind, opts, showStore, airGapped);
231
- }
232
- if (showStore) {
233
- await searchStore(query, kind, opts, airGapped);
229
+ const localHits = showLocal ? await searchLocal(query, kind, opts, showStore, airGapped) : false;
230
+ const store = showStore ? await searchStore(query, kind, opts, airGapped) : "skipped";
231
+ if (showLocal && showStore && !localHits && store !== "hits") {
232
+ const what = query ? ` for "${query}"` : kind ? ` for kind "${kind}"` : "";
233
+ logInfo(
234
+ store === "empty" ? `No results${what} (local and store).` : `No local results${what}; the store was not searched.`
235
+ );
234
236
  }
235
237
  }
236
238
  async function searchIndex(query, kind, projectDir) {
237
- const { openLibrary: openLibrary2 } = await import('../open-library-NKKUJLWA.js');
239
+ const { openLibrary: openLibrary2 } = await import('../open-library-XBR46DJL.js');
238
240
  const library = await openLibrary2();
239
241
  try {
240
242
  const { libraryDirMissing: libraryDirMissing2 } = await import('../library/index.js');
@@ -409,14 +411,14 @@ async function withAddVersions(entries, projectDir) {
409
411
  }
410
412
  async function searchLocal(query, kind, opts, showStore, airGapped) {
411
413
  const projectDir = path19__default.resolve(opts.projectDir);
412
- const { restoreSourceReaders } = await import('../source-ASEHI2XS.js');
414
+ const { restoreSourceReaders } = await import('../source-2DJ5KNOI.js');
413
415
  for (const name of await restoreSourceReaders(projectDir)) {
414
416
  logInfo(`Re-registered source "${name}" (its library entry was removed elsewhere).`);
415
417
  }
416
418
  const factory = await searchFactory(projectDir, query, kind);
417
419
  let entries = unionEntries(await searchIndex(query, kind, projectDir), factory);
418
420
  if (entries.length === 0 && !query && !kind && !airGapped) {
419
- const { autoSyncForSearch } = await import('../source-ASEHI2XS.js');
421
+ const { autoSyncForSearch } = await import('../source-2DJ5KNOI.js');
420
422
  if (await autoSyncForSearch(projectDir)) {
421
423
  entries = unionEntries(await searchIndex(query, kind, projectDir), factory);
422
424
  }
@@ -427,7 +429,7 @@ async function searchLocal(query, kind, opts, showStore, airGapped) {
427
429
  query ? `No entries matching "${query}".` : kind ? `No "${kind}" assets found in this project's sources.` : "No assets found. Run `skaile source sync` first."
428
430
  );
429
431
  }
430
- return;
432
+ return false;
431
433
  }
432
434
  if (showStore) {
433
435
  console.log(`
@@ -439,6 +441,7 @@ async function searchLocal(query, kind, opts, showStore, airGapped) {
439
441
  projectDir
440
442
  )
441
443
  );
444
+ return true;
442
445
  }
443
446
  var MIN_LOCAL_DESCRIPTION_WIDTH = 10;
444
447
  function layoutLocalTable(rows, width, style = {}) {
@@ -531,9 +534,9 @@ function formatStoreRows(assets, indent, width = terminalWidth()) {
531
534
  async function searchStore(query, kind, opts, airGapped) {
532
535
  if (airGapped && !opts.store) {
533
536
  logInfo("air-gapped (cache_ttl: 0) \u2014 local sources only");
534
- return;
537
+ return "skipped";
535
538
  }
536
- const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError: LocalCatalogDisabledError2 } = await import('../open-library-NKKUJLWA.js');
539
+ const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError: LocalCatalogDisabledError2 } = await import('../open-library-XBR46DJL.js');
537
540
  try {
538
541
  const remote = await openCatalogSource2({ projectDir: path19__default.resolve(opts.projectDir) });
539
542
  const assets = await remote.listAssets(kind ? { kind } : {});
@@ -546,6 +549,7 @@ async function searchStore(query, kind, opts, airGapped) {
546
549
  logInfo("No results in store");
547
550
  }
548
551
  for (const note of storeSelectionNotes(sel, " ")) console.log(note);
552
+ return sel.shown.length > 0 ? "hits" : "empty";
549
553
  } catch (e) {
550
554
  const local = e instanceof LocalCatalogDisabledError2;
551
555
  if (opts.store) {
@@ -558,6 +562,7 @@ async function searchStore(query, kind, opts, airGapped) {
558
562
  local ? "remote catalog disabled (catalog.url: local) \u2014 showing local results only" : "store unavailable \u2014 showing local results only (run with --store to see the error)"
559
563
  );
560
564
  }
565
+ return "skipped";
561
566
  }
562
567
  }
563
568
  async function describeStoreFailure(err, projectDir) {
@@ -642,6 +647,9 @@ function makeAddCommand() {
642
647
  return new Command("add").description("Add to skaile.yaml + deploy").argument("<ref>", "Asset reference (kind:@<publisher>/name#<version>)").option("--project-dir <path>", "Project directory", process.cwd()).option("--global", "Record in ~/.skaile/skaile.yaml + deploy to every global harness").option(
643
648
  "--harness <ids>",
644
649
  "Comma-separated global harnesses to deploy into (default: all resolved); implies --global"
650
+ ).option(
651
+ "--only",
652
+ "with --harness on an asset that is already global: replace its harness set (default: add to it)"
645
653
  ).option("--target <agent>", `Harness target (${TARGET_DEFAULT_HINT})`).option(
646
654
  "--link",
647
655
  "symlink local-path assets instead of copying (dev loop; machine-local, not for committing)"
@@ -660,6 +668,10 @@ function makeAddCommand() {
660
668
  process.exit(1);
661
669
  }
662
670
  const harnesses = parseHarnessFilter(opts.harness);
671
+ if (opts.only && harnesses === void 0) {
672
+ logErr("--only needs --harness: it replaces the set of harnesses the asset goes to.");
673
+ process.exit(1);
674
+ }
663
675
  if (!opts.global && harnesses === void 0) requireProjectConfig(opts.projectDir);
664
676
  const warnings = deferredWarnings();
665
677
  const collisionKeys = [];
@@ -687,6 +699,12 @@ function makeAddCommand() {
687
699
  const added = await am2.add(ref, {
688
700
  link: opts.link,
689
701
  force: opts.force,
702
+ only: opts.only === true,
703
+ onDroppedCopy: (droppedRef, harness, copy) => logInfo(
704
+ S.dim(
705
+ `${harness} is no longer in the set of ${droppedRef} but still holds ${copy.replace(homedir(), "~")} (delete it with skaile remove ${droppedRef} --global --harness ${harness})`
706
+ )
707
+ ),
690
708
  onLibraryOrigin: (deployedRef, library) => libraryOf.set(deployedRef, library),
691
709
  onPlaceholderBody: (deployedRef) => placeholderBodies.push(deployedRef),
692
710
  onPlaceholderDescription: (deployedRef) => placeholderDescriptions.push(deployedRef),
@@ -748,24 +766,24 @@ function makeAddCommand() {
748
766
  logInfo(
749
767
  `Recorded in skaile.yaml (store bytes are fetched + verified into .skaile/cache/store). ${kind} assets are not deployed into the harness target \u2014 they are composed when skaile runs the agent.`
750
768
  );
751
- else logInfo("Nothing to deploy (already up to date).");
769
+ else {
770
+ logInfo("Nothing to deploy (already up to date).");
771
+ if (am2.global) reportGlobalPaths(am2, [parsedRef]);
772
+ }
752
773
  } else {
753
774
  for (const a of added) {
754
775
  const library = libraryOf.get(a);
755
776
  logOk(library ? `${a} (library ${library})` : a);
756
777
  }
757
778
  warnPlaceholderBodies(placeholderBodies, placeholderDescriptions);
758
- if (!am2.global) warnFilesOnlyDelegates(am2.projectDir, am2.harness);
779
+ if (!am2.global && added.some((a) => a.startsWith("agent:"))) {
780
+ warnFilesOnlyDelegates(am2.projectDir, am2.harness);
781
+ }
759
782
  if (am2.global) {
760
- for (const a of added) {
761
- const { kind, name } = parseAssetRef(a);
762
- const component = installTargetOf(getKindRegistry(), kind);
763
- if (!component) continue;
764
- for (const harness of am2.deployTargets()) {
765
- const dir = deployedDir(component, name, harness, true);
766
- if (existsSync(dir)) logInfo(S.dim(`${harness}: ${dir.replace(homedir(), "~")}`));
767
- }
768
- }
783
+ reportGlobalPaths(
784
+ am2,
785
+ added.map((a) => parseAssetRef(a))
786
+ );
769
787
  reportLegacyOmpCopies(am2.takeLegacyCopiesRemoved(), am2.takeLegacyCopiesKept());
770
788
  }
771
789
  if (added.length > 1) {
@@ -794,12 +812,23 @@ function makeAddCommand() {
794
812
  }
795
813
  });
796
814
  }
815
+ function reportGlobalPaths(am2, assets) {
816
+ for (const { kind, name } of assets) {
817
+ const component = installTargetOf(getKindRegistry(), kind);
818
+ if (!component) continue;
819
+ for (const harness of am2.deployTargets()) {
820
+ const dir = deployedDir(component, name, harness, true);
821
+ if (existsSync(dir)) logInfo(S.dim(`${harness}: ${dir.replace(homedir(), "~")}`));
822
+ }
823
+ }
824
+ }
797
825
  function printAddPlan(plan) {
798
826
  const line = (item, label) => {
799
827
  logInfo(
800
828
  `${label} ${colorRef(item.ref)}${item.version ? `#${item.version}` : ""} (${item.origin})`
801
829
  );
802
830
  for (const folder of item.folders) console.log(` folder: ${S.dim(folder)}`);
831
+ for (const file of item.renders) console.log(` writes: ${S.dim(file)}`);
803
832
  if (item.files.length > 0) console.log(` files: ${S.dim(item.files.join(", "))}`);
804
833
  };
805
834
  for (const item of plan.filter((i) => i.requested)) line(item, "Would add");
@@ -853,7 +882,8 @@ function makeRemoveCommand() {
853
882
  ", "
854
883
  )} (lock entry) \u2014 it was kept; remove that asset to delete it, or \`skaile remove ${ref} --force\`` : void 0;
855
884
  if (!result.changed) {
856
- logErr(`Not deployed or declared: ${ref}`);
885
+ const otherKind = await am2.otherKindHint(ref);
886
+ logErr(`Not deployed or declared: ${ref}${otherKind ? `. ${otherKind}` : ""}`);
857
887
  if (keptNote) logInfo(keptNote);
858
888
  if (ownerNote) logInfo(ownerNote);
859
889
  process.exitCode = 1;
@@ -898,6 +928,7 @@ function makeListCommand() {
898
928
  runGlobalList(kind, opts, harnesses);
899
929
  return;
900
930
  }
931
+ if (await reportUnknownHarnesses(path19__default.resolve(opts.projectDir)) > 0) process.exit(1);
901
932
  const am2 = new AssetManager({
902
933
  registry: getKindRegistry(),
903
934
  projectDir: path19__default.resolve(opts.projectDir),
@@ -917,7 +948,7 @@ function makeListCommand() {
917
948
  }
918
949
  if (declared.length === 0) {
919
950
  logInfo("No dependencies declared in skaile.yaml.");
920
- warnLegacyClaudeCopies(am2);
951
+ warnStaleHarnessCopies(am2);
921
952
  return;
922
953
  }
923
954
  const kindW = Math.max(4, ...declared.map((e) => e.kind.length));
@@ -943,7 +974,7 @@ function makeListCommand() {
943
974
  const invalid = declared.filter((e) => e.state === "invalid").length;
944
975
  if (invalid > 0)
945
976
  logInfo(`${invalid} invalid \u2014 fix the ${S.cmd("skaile.yaml")} dependencies entry.`);
946
- warnLegacyClaudeCopies(am2);
977
+ warnStaleHarnessCopies(am2);
947
978
  console.log();
948
979
  });
949
980
  }
@@ -1069,7 +1100,7 @@ async function resolveInfoEntry(am2, ref, opts) {
1069
1100
  return { entry: match ?? deployed };
1070
1101
  }
1071
1102
  const lookup = opts.storeLookup ?? (async (filter) => {
1072
- const { resolveCatalogSource } = await import('../open-library-NKKUJLWA.js');
1103
+ const { resolveCatalogSource } = await import('../open-library-XBR46DJL.js');
1073
1104
  const { source, close } = await resolveCatalogSource({ projectDir: opts.projectDir });
1074
1105
  try {
1075
1106
  return await source.listAssets(filter);
@@ -1085,7 +1116,7 @@ async function resolveInfoEntry(am2, ref, opts) {
1085
1116
  );
1086
1117
  return { entry: hit ? catalogAssetToEntry(hit) : null };
1087
1118
  } catch (err) {
1088
- const { LocalCatalogDisabledError: LocalCatalogDisabledError2 } = await import('../open-library-NKKUJLWA.js');
1119
+ const { LocalCatalogDisabledError: LocalCatalogDisabledError2 } = await import('../open-library-XBR46DJL.js');
1089
1120
  const storeNote = err instanceof Error ? err.message : String(err);
1090
1121
  const disabled = err instanceof LocalCatalogDisabledError2 || /catalog\.url/i.test(storeNote);
1091
1122
  return { entry: null, storeNote, ...disabled ? { storeDisabled: true } : {} };
@@ -1113,7 +1144,8 @@ function makeInfoCommand() {
1113
1144
  }
1114
1145
  const entry = lookup.entry;
1115
1146
  if (!entry) {
1116
- logErr(infoNotFoundHint(ref, lookup));
1147
+ const otherKind = await am2.otherKindHint(ref);
1148
+ logErr(`${infoNotFoundHint(ref, lookup)}${otherKind ? ` ${otherKind}` : ""}`);
1117
1149
  process.exit(1);
1118
1150
  }
1119
1151
  const softDeps = await am2.softDepsOf([ref]);
@@ -1440,10 +1472,11 @@ function makeAssetCommand() {
1440
1472
  getKindRegistry(),
1441
1473
  norm.content
1442
1474
  );
1443
- if (checked.errors.length > 0) {
1444
- for (const f of checked.errors) logErr(`${norm.name}/SKILL.md [${f.tag}] \u2014 ${f.text}`);
1475
+ const refusals = [...checked.errors, ...checked.advisories.filter((f) => f.scaffoldBody)];
1476
+ if (refusals.length > 0) {
1477
+ for (const f of refusals) logErr(`${norm.name}/SKILL.md [${f.tag}] \u2014 ${f.text}`);
1445
1478
  logErr(
1446
- `Not imported: ${checked.errors.length} problem(s) in SKILL.md. Fix them in ${src.skillFile} (or drop --no-normalize) and run the import again.`
1479
+ `Not imported: ${refusals.length} problem(s) in SKILL.md. Fix them in ${src.skillFile} (or drop --no-normalize) and run the import again.`
1447
1480
  );
1448
1481
  process.exit(1);
1449
1482
  }
@@ -1807,7 +1840,7 @@ function makeCatalogCommand() {
1807
1840
  return catalog;
1808
1841
  }
1809
1842
  async function runLocalCatalogTest(projectDir) {
1810
- const { resolveCatalogSource } = await import('../open-library-NKKUJLWA.js');
1843
+ const { resolveCatalogSource } = await import('../open-library-XBR46DJL.js');
1811
1844
  let resolved;
1812
1845
  try {
1813
1846
  resolved = await resolveCatalogSource({ projectDir });
@@ -1983,7 +2016,7 @@ async function scanLibraryFlowEntries() {
1983
2016
  const { LocalIndex, resolveIndexPath, scanAuthoringLibraries } = await import('../library/index.js');
1984
2017
  const indexPath = resolveIndexPath();
1985
2018
  if (!existsSync(indexPath)) return entries;
1986
- const { getKindRegistry: getKindRegistry2 } = await import('../open-registry-BYAXSHUI.js');
2019
+ const { getKindRegistry: getKindRegistry2 } = await import('../open-registry-W562DCDL.js');
1987
2020
  const index = new LocalIndex({ indexPath });
1988
2021
  try {
1989
2022
  for (const { library, assets } of await scanAuthoringLibraries(index, getKindRegistry2())) {
@@ -2248,6 +2281,12 @@ function printModelSelectionSection(config, projectDir) {
2248
2281
  console.log(
2249
2282
  ` ${S.dim("no AI provider is configured \u2014 add one with")} ${S.cmd("skaile providers add <id> --preset <preset>")}`
2250
2283
  );
2284
+ } else if (resolved.fallback) {
2285
+ console.log(` ${S.label("selector:".padEnd(16))} ${selector}`);
2286
+ console.log(
2287
+ ` ${S.label("passed on as:".padEnd(16))} the model id ${resolved.modelId ?? selector} ${S.dim("(no provider selected)")}`
2288
+ );
2289
+ for (const warning of resolved.warnings) logWarn(warning);
2251
2290
  } else {
2252
2291
  const entry = registry.providers[resolved.providerId];
2253
2292
  console.log(` ${S.label("selector:".padEnd(16))} ${selector}`);
@@ -2294,6 +2333,7 @@ async function showConfig(opts) {
2294
2333
  logErr(error instanceof Error ? error.message : String(error));
2295
2334
  process.exit(1);
2296
2335
  }
2336
+ if (await reportUnknownHarnesses(projectDir) > 0) process.exit(1);
2297
2337
  printEffectiveSection(config, sources);
2298
2338
  printWorkspaceDefaultsSection(wsDefaults);
2299
2339
  printModelSelectionSection(config, projectDir);
@@ -2432,6 +2472,13 @@ function makeConfigCommand() {
2432
2472
  logWarn(
2433
2473
  "no AI provider is configured yet \u2014 add one with `skaile providers add <id> --preset <preset>`"
2434
2474
  );
2475
+ } else if (resolved.fallback) {
2476
+ console.log(
2477
+ S.dim(
2478
+ ` \u2192 passed on as the model id ${resolved.modelId ?? value} (no provider selected)`
2479
+ )
2480
+ );
2481
+ for (const warning of resolved.warnings) logWarn(warning);
2435
2482
  } else {
2436
2483
  console.log(
2437
2484
  S.dim(
@@ -3115,7 +3162,7 @@ async function ensureTargetsRegistered(projectDir) {
3115
3162
  const { resolveSkWorkspaceConfig: resolveSkWorkspaceConfig2 } = await import('../core/index.js');
3116
3163
  const config = resolveSkWorkspaceConfig2(projectDir);
3117
3164
  if (config.plugins && config.plugins.length > 0) {
3118
- const { ensurePluginsLoaded } = await import('../plugin-store-ABE35NRX.js');
3165
+ const { ensurePluginsLoaded } = await import('../plugin-store-36SIL4TV.js');
3119
3166
  const result = await ensurePluginsLoaded(projectDir, config.plugins, pluginRegistry);
3120
3167
  for (const f of result.failed) logWarn(f.error);
3121
3168
  }
@@ -3274,7 +3321,10 @@ function makeDiffCommand() {
3274
3321
  );
3275
3322
  switch (result.status) {
3276
3323
  case "not-found":
3277
- if (problems.length === 0) logErr(`Asset not found: ${ref}`);
3324
+ if (problems.length === 0) {
3325
+ const hint = await am2.otherKindHint(ref);
3326
+ logErr(`Asset not found: ${ref}${hint ? `. ${hint}` : ""}`);
3327
+ }
3278
3328
  break;
3279
3329
  case "not-deployed":
3280
3330
  if (problems.length === 0) {
@@ -3395,7 +3445,7 @@ function makeHarnessCommand() {
3395
3445
  async function runHarnessSet(name, projectDir) {
3396
3446
  const target = parseHarnessTarget(name);
3397
3447
  if (!target) {
3398
- logErr(`Unknown harness "${name}". Supported: ${SUPPORTED_HARNESSES.join(", ")}`);
3448
+ logErr(unknownHarnessTargetMessage(name));
3399
3449
  process.exit(1);
3400
3450
  }
3401
3451
  requireProjectConfig(projectDir);
@@ -3746,7 +3796,7 @@ var TOGGLE_SUPPORTED = ["claude-code"];
3746
3796
  function resolveHarness(harness) {
3747
3797
  if (harness === "all") return [...ALL_HARNESSES];
3748
3798
  if (harness === "claude-code" || harness === "omp" || harness === "codex") return [harness];
3749
- logErr(`Unknown harness "${harness}". Supported: ${ALL_HARNESSES.join(", ")}, all`);
3799
+ logErr(unknownHarnessTargetMessage(harness, ["all"]));
3750
3800
  return null;
3751
3801
  }
3752
3802
  function withHarness(raw, fallback) {
@@ -4350,6 +4400,16 @@ function warnUnlistedAssets(unlisted, name) {
4350
4400
  );
4351
4401
  }
4352
4402
  }
4403
+ function warnManifestNeedsCommit(libPath, name) {
4404
+ const status4 = spawnSync("git", ["status", "--porcelain", "--", SKAILE_MANIFEST_FILENAME], {
4405
+ cwd: libPath,
4406
+ encoding: "utf-8"
4407
+ });
4408
+ if (status4.status !== 0 || status4.stdout.trim() === "") return;
4409
+ logInfo(
4410
+ `${SKAILE_MANIFEST_FILENAME} was changed in the clone. Commit it with \`skaile library commit ${name}\`; \`pull\` and \`sync\` stop until you do.`
4411
+ );
4412
+ }
4353
4413
  function assertManifestEditableOrExit(libraryPath) {
4354
4414
  try {
4355
4415
  assertManifestEditable(libraryPath);
@@ -4603,7 +4663,7 @@ function remoteBranches(url) {
4603
4663
  return r.stdout.split("\n").map((line) => line.split(" ")[1]?.replace(/^refs\/heads\//, "")).filter((b) => !!b);
4604
4664
  }
4605
4665
  async function warnIfNotGithubRemote(name, url) {
4606
- const { isGithubRemote, notGithubRemoteMessage } = await import('../library-publish-I3UWXAHI.js');
4666
+ const { isGithubRemote, notGithubRemoteMessage } = await import('../library-publish-XMRCKRNR.js');
4607
4667
  if (!isGithubRemote(url)) logWarn(notGithubRemoteMessage(name, url));
4608
4668
  }
4609
4669
  function scaffoldLibraryFiles(dir, name) {
@@ -4789,7 +4849,7 @@ function makeLibraryCommand() {
4789
4849
  ownership,
4790
4850
  isDefault
4791
4851
  });
4792
- const scaffolded = blank ? scaffoldLibraryFiles(libPath, name) : [];
4852
+ const scaffolded = blank && ownership !== "reader" ? scaffoldLibraryFiles(libPath, name) : [];
4793
4853
  logOk(
4794
4854
  `Library "${name}" ${blank ? "created" : "registered"} at ${libPath}${isDefault ? " (default)" : ""}`
4795
4855
  );
@@ -4806,8 +4866,9 @@ function makeLibraryCommand() {
4806
4866
  }
4807
4867
  if (!blank) {
4808
4868
  const lib = await manager.requireLibrary(name);
4809
- if (adoptWritesManifest(libPath)) {
4869
+ if (ownership === "owner" && adoptWritesManifest(libPath)) {
4810
4870
  await reindexLibrary(lib, library, name);
4871
+ warnManifestNeedsCommit(lib.path, name);
4811
4872
  return;
4812
4873
  }
4813
4874
  const unlisted = await countUnlistedAssets(libPath);
@@ -4818,8 +4879,9 @@ function makeLibraryCommand() {
4818
4879
  );
4819
4880
  }
4820
4881
  warnLibraryNameFallback(name, resolved);
4821
- if (resolved.source !== "manifest") {
4882
+ if (ownership === "owner" && resolved.source !== "manifest") {
4822
4883
  stampManifestPublisher(lib.path, resolved.publisher);
4884
+ warnManifestNeedsCommit(lib.path, name);
4823
4885
  }
4824
4886
  const res = await indexLibrary(lib, library);
4825
4887
  for (const e of res.errors) logWarn(e);
@@ -5334,16 +5396,16 @@ function makeLibraryCommand() {
5334
5396
  "With --create-repo: create the repo private (the store only accepts public repos)"
5335
5397
  ).option("--ref <gitref>", "Git ref to ingest (default: the library branch or main)").option("--dry-run", "Print the plan; push nothing and call no store endpoint").action(
5336
5398
  async (lib, opts) => {
5337
- const { runLibraryPublish } = await import('../library-publish-I3UWXAHI.js');
5399
+ const { runLibraryPublish } = await import('../library-publish-XMRCKRNR.js');
5338
5400
  await withStoreErrorHandling(() => runLibraryPublish(lib, opts));
5339
5401
  }
5340
5402
  );
5341
5403
  cmd.command("register <lib>").description("Register the library's manifest without pushing (bytes already on github)").option("--asset <ref>", "Publish only the single asset matching this ref/name").option("--ref <gitref>", "Git ref to ingest (default: the library branch or main)").option("--dry-run", "Print the plan; call no store endpoint").action(async (lib, opts) => {
5342
- const { runLibraryRegister } = await import('../library-publish-I3UWXAHI.js');
5404
+ const { runLibraryRegister } = await import('../library-publish-XMRCKRNR.js');
5343
5405
  await withStoreErrorHandling(() => runLibraryRegister(lib, opts));
5344
5406
  });
5345
5407
  cmd.command("yank <lib>").description("Retract the library's published assets from the store").option("--asset <ref>", "Yank only the single asset matching this ref/name").action(async (lib, opts) => {
5346
- const { runLibraryYank } = await import('../library-publish-I3UWXAHI.js');
5408
+ const { runLibraryYank } = await import('../library-publish-XMRCKRNR.js');
5347
5409
  await withStoreErrorHandling(() => runLibraryYank(lib, opts));
5348
5410
  });
5349
5411
  return cmd;
@@ -6003,7 +6065,7 @@ function scheduleSoftDepPreview() {
6003
6065
  }
6004
6066
  async function loadAssets() {
6005
6067
  softDepPreviewCache.clear();
6006
- const { gatherAssetFeeds } = await import('../asset-feeds-HJFV7UPW.js');
6068
+ const { gatherAssetFeeds } = await import('../asset-feeds-KPKCE64E.js');
6007
6069
  const { entries, notes } = await gatherAssetFeeds(am, am.projectDir);
6008
6070
  if (notes.length > 0) {
6009
6071
  state.message = notes.map((n) => `[${n.feed}] ${n.message}`).join(" \u2022 ");
@@ -6207,7 +6269,7 @@ function reconcileCollapsedSets(rows) {
6207
6269
  async function loadSourcesAndLibraries() {
6208
6270
  try {
6209
6271
  const [{ openLibraryManager: openLibraryManager2 }, { getGlobalCacheDir: getGlobalCacheDir2, globalSkaileDir: globalSkaileDir2 }] = await Promise.all([
6210
- import('../open-library-NKKUJLWA.js'),
6272
+ import('../open-library-XBR46DJL.js'),
6211
6273
  import('../core/index.js')
6212
6274
  ]);
6213
6275
  const { manager, library, close } = await openLibraryManager2();
@@ -8043,7 +8105,35 @@ function finalIdentity(kind, name) {
8043
8105
  return `${kind}:${name}`;
8044
8106
  }
8045
8107
  }
8046
- function planMarkdownMoves(root, knownKinds, manual, unknownTypes, identities, conflicts) {
8108
+ function existingIdentities(root) {
8109
+ const found = /* @__PURE__ */ new Map();
8110
+ const note = (file, kind, fallback) => {
8111
+ let name = fallback;
8112
+ try {
8113
+ const text = readText(file);
8114
+ const body = file.endsWith(".yaml") ? text : FRONTMATTER.exec(text)?.[1] ?? "";
8115
+ const parsed = parse(body);
8116
+ if (isRecord(parsed) && typeof parsed.name === "string" && parsed.name !== "")
8117
+ name = parsed.name;
8118
+ } catch {
8119
+ }
8120
+ const identity = finalIdentity(kind, name);
8121
+ if (!found.has(identity)) found.set(identity, posix2(path19__default.relative(root, file)));
8122
+ };
8123
+ for (const file of walkFiles(root, (b) => b.endsWith(".preset.yaml"))) {
8124
+ note(file, "preset", path19__default.basename(file).replace(/\.preset\.yaml$/, ""));
8125
+ }
8126
+ for (const [base, kind] of [
8127
+ ["RULESET.md", "ruleset"],
8128
+ ["PERSONA.md", "persona"]
8129
+ ]) {
8130
+ for (const file of walkFiles(root, (b) => b === base)) {
8131
+ note(file, kind, path19__default.basename(path19__default.dirname(file)));
8132
+ }
8133
+ }
8134
+ return found;
8135
+ }
8136
+ function planMarkdownMoves(root, knownKinds, manual, unknownTypes, identities, conflicts, existing) {
8047
8137
  const moves = [];
8048
8138
  const changes = [];
8049
8139
  const targets = /* @__PURE__ */ new Set();
@@ -8071,6 +8161,13 @@ function planMarkdownMoves(root, knownKinds, manual, unknownTypes, identities, c
8071
8161
  );
8072
8162
  continue;
8073
8163
  }
8164
+ const present = existing.get(identity);
8165
+ if (present !== void 0) {
8166
+ conflicts.push(
8167
+ `${present} already is ${identity}, and ${posix2(path19__default.relative(root, file))} would become it too: rename one first. Nothing was changed.`
8168
+ );
8169
+ continue;
8170
+ }
8074
8171
  identities.set(identity, posix2(path19__default.relative(root, file)));
8075
8172
  targets.add(to);
8076
8173
  moves.push({ from: file, to, kind: found.type });
@@ -8155,7 +8252,7 @@ function repoPublisher(root) {
8155
8252
  }
8156
8253
  return DEFAULT_PUBLISHER;
8157
8254
  }
8158
- function planBundles(root, skaileYamls, publisher, notes, manual, conflicts, identities) {
8255
+ function planBundles(root, skaileYamls, publisher, notes, manual, conflicts, identities, existing) {
8159
8256
  const changes = [];
8160
8257
  const presets = [];
8161
8258
  const handled = /* @__PURE__ */ new Set();
@@ -8183,6 +8280,13 @@ function planBundles(root, skaileYamls, publisher, notes, manual, conflicts, ide
8183
8280
  manual.push(`${rel(target)} already exists; bundle ${name} not converted`);
8184
8281
  return;
8185
8282
  }
8283
+ const present = existing.get(identity);
8284
+ if (present !== void 0) {
8285
+ conflicts.push(
8286
+ `${present} already is ${identity}, and ${origin} would become it too: rename the bundle first. Nothing was changed.`
8287
+ );
8288
+ return;
8289
+ }
8186
8290
  let description;
8187
8291
  let refs = [];
8188
8292
  let before;
@@ -8348,13 +8452,15 @@ function planAssetMigration(options) {
8348
8452
  const conflicts = [];
8349
8453
  const unknownTypes = [];
8350
8454
  const identities = /* @__PURE__ */ new Map();
8455
+ const existing = existingIdentities(root);
8351
8456
  const { moves, changes: moveChanges } = planMarkdownMoves(
8352
8457
  root,
8353
8458
  knownKinds,
8354
8459
  manual,
8355
8460
  unknownTypes,
8356
8461
  identities,
8357
- conflicts
8462
+ conflicts,
8463
+ existing
8358
8464
  );
8359
8465
  for (const move of moves) {
8360
8466
  notes.push(
@@ -8381,7 +8487,8 @@ function planAssetMigration(options) {
8381
8487
  notes,
8382
8488
  manual,
8383
8489
  conflicts,
8384
- identities
8490
+ identities,
8491
+ existing
8385
8492
  );
8386
8493
  const skaileChanges = skaileYamls.flatMap(
8387
8494
  ({ file, source }) => planSkaileYaml(root, file, source, notes, manual)
@@ -9165,8 +9272,15 @@ function makeOutdatedCommand() {
9165
9272
  );
9166
9273
  }
9167
9274
  console.log();
9168
- if (filtered.some((e) => e.problem === void 0 && !e.pinned)) {
9169
- logWarn(`Run ${S.cmd("skaile update")} to re-lock and re-deploy.`);
9275
+ const needsUpdate = filtered.some(
9276
+ (e) => e.problem === void 0 && !e.pinned && !e.contentChanged
9277
+ );
9278
+ const needsRelock = filtered.some(
9279
+ (e) => e.problem === void 0 && !e.pinned && e.contentChanged
9280
+ );
9281
+ if (needsUpdate) logWarn(`Run ${S.cmd("skaile update")} to re-lock and re-deploy.`);
9282
+ if (needsRelock) {
9283
+ logWarn(`Run ${S.cmd("skaile install")} to re-lock the changed library assets.`);
9170
9284
  }
9171
9285
  if (filtered.some((e) => e.problem !== void 0 && !e.manualFix)) {
9172
9286
  logWarn(`Run ${S.cmd("skaile install")} to restore or re-lock the broken assets.`);
@@ -9247,7 +9361,7 @@ function action2(fn) {
9247
9361
  };
9248
9362
  }
9249
9363
  async function reconcileAndReport(projectDir, plugins, opts = {}) {
9250
- const { reconcilePlugins } = await import('../plugin-store-ABE35NRX.js');
9364
+ const { reconcilePlugins } = await import('../plugin-store-36SIL4TV.js');
9251
9365
  if (plugins.length === 0) {
9252
9366
  logInfo("No plugins declared \u2014 nothing to reconcile.");
9253
9367
  return;
@@ -9262,7 +9376,7 @@ async function reconcileAndReport(projectDir, plugins, opts = {}) {
9262
9376
  }
9263
9377
  }
9264
9378
  async function verifyPluginLoads(projectDir, spec) {
9265
- const { loadPlugins } = await import('../plugin-store-ABE35NRX.js');
9379
+ const { loadPlugins } = await import('../plugin-store-36SIL4TV.js');
9266
9380
  const { createPluginRegistry } = await import('../plugin-registry/index.js');
9267
9381
  const registry = createPluginRegistry();
9268
9382
  const result = await loadPlugins(projectDir, [spec], registry);
@@ -9276,7 +9390,9 @@ async function verifyPluginLoads(projectDir, spec) {
9276
9390
  async function runInstall2(spec, opts) {
9277
9391
  const projectDir = path19__default.resolve(opts.projectDir);
9278
9392
  const { WorkspaceYamlEditor: WorkspaceYamlEditor2 } = await import('../core/index.js');
9279
- const { specName, rollbackPluginStore } = await import('../plugin-store-ABE35NRX.js');
9393
+ const { specName, rollbackPluginStore, npmSpecError } = await import('../plugin-store-36SIL4TV.js');
9394
+ const specError = npmSpecError(spec);
9395
+ if (specError) throw new Error(specError);
9280
9396
  const yamlPath = path19__default.join(projectDir, "skaile.yaml");
9281
9397
  if (!existsSync(yamlPath)) {
9282
9398
  throw new Error(`no skaile.yaml in ${projectDir}; run \`skaile init\` first`);
@@ -9305,7 +9421,7 @@ async function runInstall2(spec, opts) {
9305
9421
  async function runRemove(name, opts) {
9306
9422
  const projectDir = path19__default.resolve(opts.projectDir);
9307
9423
  const { WorkspaceYamlEditor: WorkspaceYamlEditor2 } = await import('../core/index.js');
9308
- const { specName } = await import('../plugin-store-ABE35NRX.js');
9424
+ const { specName } = await import('../plugin-store-36SIL4TV.js');
9309
9425
  const yamlPath = path19__default.join(projectDir, "skaile.yaml");
9310
9426
  if (!existsSync(yamlPath)) {
9311
9427
  logInfo(`No plugin matching ${S.cmd(name)}: there is no skaile.yaml in ${projectDir}.`);
@@ -9337,7 +9453,7 @@ async function runList(opts) {
9337
9453
  const registry = createPluginRegistry();
9338
9454
  if (declared.length > 0) {
9339
9455
  try {
9340
- const { loadPlugins } = await import('../plugin-store-ABE35NRX.js');
9456
+ const { loadPlugins } = await import('../plugin-store-36SIL4TV.js');
9341
9457
  const result = await loadPlugins(projectDir, declared, registry);
9342
9458
  for (const f of result.failed) logWarn(f.error);
9343
9459
  } catch (err) {
@@ -10133,6 +10249,11 @@ function makeRebuildCommand() {
10133
10249
  ).option("--project-dir <dir>", "Project directory", process.cwd()).action(async (agentArg, opts) => {
10134
10250
  const projectDir = path19__default.resolve(opts.projectDir);
10135
10251
  requireProjectConfig(projectDir, { allowMissing: true });
10252
+ const instanceErrors = agentInstanceErrorLines(projectDir);
10253
+ if (instanceErrors.length > 0) {
10254
+ for (const line of instanceErrors) logErr(line);
10255
+ process.exit(1);
10256
+ }
10136
10257
  let agentDir;
10137
10258
  if (agentArg) {
10138
10259
  agentDir = resolveNamedAgent(projectDir, agentArg);
@@ -10373,6 +10494,34 @@ function isNearFlowId(typed, id) {
10373
10494
  function harnessOptionDescription() {
10374
10495
  return `Harness to run (${listHarnesses().map((d) => d.id).join(", ")})`;
10375
10496
  }
10497
+ function nodeSkillRefs(flow) {
10498
+ const refs = /* @__PURE__ */ new Map();
10499
+ for (const node of flow.nodes) {
10500
+ for (const asset of nodeAssets(node)) {
10501
+ if (asset.startsWith("skill:") && !refs.has(asset)) refs.set(asset, node.id);
10502
+ }
10503
+ }
10504
+ return refs;
10505
+ }
10506
+ async function reportMissingNodeSkills(projectDir, flow) {
10507
+ const refs = nodeSkillRefs(flow);
10508
+ if (refs.size === 0) return;
10509
+ let missing;
10510
+ try {
10511
+ missing = new AssetManager({
10512
+ registry: getKindRegistry(),
10513
+ projectDir
10514
+ }).undeployedSkills([...refs.keys()]);
10515
+ } catch {
10516
+ return;
10517
+ }
10518
+ for (const ref of missing) {
10519
+ const bare = ref.replace(/#.*$/, "");
10520
+ logWarn(
10521
+ `Node ${refs.get(ref)} needs ${S.cmd(bare)}, which is not deployed. Run ${S.cmd(`skaile add ${bare}`)}.`
10522
+ );
10523
+ }
10524
+ }
10376
10525
  function makeRunCommand() {
10377
10526
  const cmd = new Command("run").description("Start a flow or run a single-shot text prompt").argument("[flow-id-or-text...]", "Flow ID or text prompt").option("--project-dir <path>", "Project directory", process.cwd()).option("--harness <name>", harnessOptionDescription()).addOption(driverAliasOption()).option("--model <name>", "Model override").option("--label <label>", "Human-readable session label").option("--dry-run", "Print plan without executing (single-shot: resolved composition items)").option(
10378
10527
  "--agent-definition <ref|path>",
@@ -10383,7 +10532,9 @@ function makeRunCommand() {
10383
10532
  ).option("--skill <name>", "Skill name (for single-shot mode)").action(async (positional, opts) => {
10384
10533
  const projectDir = path19__default.resolve(opts.projectDir);
10385
10534
  await loadDeclaredPlugins(projectDir);
10386
- await reportProjectConfig(projectDir, { harness: false });
10535
+ if (await reportProjectConfig(projectDir, { harness: false, instances: true }) > 0) {
10536
+ process.exit(1);
10537
+ }
10387
10538
  const cliHarness = foldDriverFlag(opts).harness;
10388
10539
  const dryRun = opts.dryRun ?? false;
10389
10540
  const agentDefinition = opts.agentDefinition?.trim() || void 0;
@@ -10539,6 +10690,7 @@ function makeRunCommand() {
10539
10690
  onEvent: makeFlowEventHandler(),
10540
10691
  onLog: (line) => console.log(line)
10541
10692
  });
10693
+ if (dryRun) await reportMissingNodeSkills(projectDir, flow);
10542
10694
  } catch (err) {
10543
10695
  const friendly = friendlyHarnessError(err);
10544
10696
  logErr(friendly ?? (err instanceof Error ? err.message : String(err)));
@@ -10678,7 +10830,9 @@ function makeReplCommand() {
10678
10830
  console.log();
10679
10831
  }
10680
10832
  await loadDeclaredPlugins(projectDir);
10681
- await reportProjectConfig(projectDir, { harness: false });
10833
+ if (await reportProjectConfig(projectDir, { harness: false, instances: true }) > 0) {
10834
+ process.exit(1);
10835
+ }
10682
10836
  const effective = await resolveSettings(projectDir, {
10683
10837
  harness: harnessOverride,
10684
10838
  model: opts.model
@@ -10714,6 +10868,15 @@ function makeReplCommand() {
10714
10868
  }
10715
10869
  });
10716
10870
  }
10871
+ function valueNotFlag(flag) {
10872
+ return (value) => {
10873
+ if (value.startsWith("--")) {
10874
+ logErr(`${flag} needs a value, got '${value}'`);
10875
+ process.exit(1);
10876
+ }
10877
+ return value;
10878
+ };
10879
+ }
10717
10880
  function parseProviderIds(raw) {
10718
10881
  return (raw ?? "").split(",").map((id) => id.trim()).filter((id) => id.length > 0);
10719
10882
  }
@@ -10760,21 +10923,31 @@ function describeBindError(err, host, port) {
10760
10923
  }
10761
10924
  }
10762
10925
  function makeServeCommand() {
10763
- return new Command("serve").description("Start a WebSocket agent server (for platform integration)").option("--port <port>", "WebSocket server port", "8080").option(
10926
+ return new Command("serve").description("Start a WebSocket agent server (for platform integration)").option("--port <port>", "WebSocket server port", valueNotFlag("--port"), "8080").option(
10764
10927
  "--host <address>",
10765
- "Address to bind (default: all interfaces; use 127.0.0.1 for local clients only)"
10766
- ).option("--project-dir <path>", "Project directory", process.cwd()).option(
10928
+ "Address to bind (default: all interfaces; use 127.0.0.1 for local clients only)",
10929
+ valueNotFlag("--host")
10930
+ ).option(
10931
+ "--project-dir <path>",
10932
+ "Project directory",
10933
+ valueNotFlag("--project-dir"),
10934
+ process.cwd()
10935
+ ).option(
10767
10936
  "--managed-codex-config <path>",
10768
- "Explicit private host configuration for managed Codex"
10769
- ).option("--harness <name>", "Override harness").addOption(driverAliasOption()).option("--model <name>", "Override model").option("--provider <name>", "Override provider").option(
10937
+ "Explicit private host configuration for managed Codex",
10938
+ valueNotFlag("--managed-codex-config")
10939
+ ).option("--harness <name>", "Override harness", valueNotFlag("--harness")).addOption(driverAliasOption().argParser(valueNotFlag("--driver"))).option("--model <name>", "Override model", valueNotFlag("--model")).option("--provider <name>", "Override provider", valueNotFlag("--provider")).option(
10770
10940
  "--session-id <id>",
10771
- "Label for the session; does not restore the conversation (use --resume-session-id)"
10941
+ "Label for the session; does not restore the conversation (use --resume-session-id)",
10942
+ valueNotFlag("--session-id")
10772
10943
  ).option(
10773
10944
  "--resume-session-id <id>",
10774
- "harnessSessionId of an earlier session (from its session_info event); restores that conversation"
10945
+ "harnessSessionId of an earlier session (from its session_info event); restores that conversation",
10946
+ valueNotFlag("--resume-session-id")
10775
10947
  ).option(
10776
10948
  "--providers <ids>",
10777
- "Restrict the AI provider registry to these entry ids (comma-separated)"
10949
+ "Restrict the AI provider registry to these entry ids (comma-separated)",
10950
+ valueNotFlag("--providers")
10778
10951
  ).option(
10779
10952
  "--model-endpoint [port]",
10780
10953
  "Serve an OpenAI-compatible model endpoint on loopback for apps next to the session (optional port; default from skaile.yaml model_endpoint.port, else ephemeral)"
@@ -10808,6 +10981,14 @@ function makeServeCommand() {
10808
10981
  process.exitCode = 1;
10809
10982
  return;
10810
10983
  }
10984
+ const dirProblem = (await import('../serve-preflight-CGA5G3AE.js')).checkServeProjectDir(
10985
+ opts.projectDir
10986
+ );
10987
+ if (dirProblem) {
10988
+ logErr(dirProblem);
10989
+ process.exitCode = 1;
10990
+ return;
10991
+ }
10811
10992
  let managedCodex;
10812
10993
  if (opts.managedCodexConfig) {
10813
10994
  try {
@@ -10829,7 +11010,14 @@ function makeServeCommand() {
10829
11010
  }
10830
11011
  const providers = parseProviderIds(opts.providers);
10831
11012
  const modelEndpoint = parseModelEndpointFlag(opts.modelEndpoint);
10832
- const { checkHarnessSdk, checkModelEndpointPeer, checkServeModel } = await import('../serve-preflight-FLTIBTEX.js');
11013
+ const { checkHarnessSdk, checkModelEndpointPeer, checkServeModel } = await import('../serve-preflight-CGA5G3AE.js');
11014
+ const { checkServeHarness, checkServeAgentDefinition } = await import('../serve-preflight-CGA5G3AE.js');
11015
+ const startProblem = managedCodex ? null : await checkServeHarness(opts.projectDir, opts.harness) ?? checkServeAgentDefinition(opts.projectDir);
11016
+ if (startProblem) {
11017
+ logErr(startProblem);
11018
+ process.exitCode = 1;
11019
+ return;
11020
+ }
10833
11021
  const harnessProblem = managedCodex ? null : await checkHarnessSdk(opts.projectDir, opts.harness);
10834
11022
  if (harnessProblem) {
10835
11023
  logErr(harnessProblem);
@@ -10890,12 +11078,12 @@ function makeServeCommand() {
10890
11078
  );
10891
11079
  }
10892
11080
  async function ensurePluginsLoadedForServe(projectDir) {
10893
- const { logInfo: logInfo2, logWarn: logWarn2 } = await import('../helpers-JNMK3FC2.js');
11081
+ const { logInfo: logInfo2, logWarn: logWarn2 } = await import('../helpers-LUSV2ICC.js');
10894
11082
  try {
10895
11083
  const { resolveSkWorkspaceConfig: resolveSkWorkspaceConfig2 } = await import('../core/index.js');
10896
11084
  const config = resolveSkWorkspaceConfig2(projectDir);
10897
11085
  if (!config.plugins || config.plugins.length === 0) return;
10898
- const { ensurePluginsLoaded } = await import('../plugin-store-ABE35NRX.js');
11086
+ const { ensurePluginsLoaded } = await import('../plugin-store-36SIL4TV.js');
10899
11087
  const { pluginRegistry } = await import('../plugin-registry/index.js');
10900
11088
  const result = await ensurePluginsLoaded(projectDir, config.plugins, pluginRegistry);
10901
11089
  if (result.loaded.length > 0) {
@@ -10909,14 +11097,14 @@ async function ensurePluginsLoadedForServe(projectDir) {
10909
11097
  }
10910
11098
  }
10911
11099
  async function runCompileTest(opts) {
10912
- const { logOk: logOk2, logErr: logErr2, logInfo: logInfo2, S: S2 } = await import('../helpers-JNMK3FC2.js');
11100
+ const { logOk: logOk2, logErr: logErr2, logInfo: logInfo2, S: S2 } = await import('../helpers-LUSV2ICC.js');
10913
11101
  const { tmpdir } = await import('os');
10914
11102
  const { dirname: dirname3, join: join6, resolve: resolve4 } = await import('path');
10915
11103
  const { fileURLToPath: fileURLToPath2 } = await import('url');
10916
11104
  const { unlinkSync, existsSync: existsSync22 } = await import('fs');
10917
11105
  const { spawn } = await import('child_process');
10918
11106
  const { portableSpawnSync: portableSpawnSync2 } = await import('../core/index.js');
10919
- const { MONOREPO_ROOT } = await import('../paths-UKWE35XS.js');
11107
+ const { MONOREPO_ROOT } = await import('../paths-2AZXB3QL.js');
10920
11108
  if (MONOREPO_ROOT === null) {
10921
11109
  logErr2("--compile-test is only available inside the skaile-dev workspace.");
10922
11110
  logInfo2("Run it from a checkout of skaile-ai/skaile-dev (the monorepo shell).");
@@ -11874,8 +12062,8 @@ function makeStoreCommand() {
11874
12062
  "--all",
11875
12063
  `List every match (default: ${STORE_ROW_LIMIT} rows, only what \`skaile add\` can install)`
11876
12064
  ).option("-C, --project-dir <dir>", "Project directory (catalog config overlay)", process.cwd()).action(async (query, opts) => {
11877
- const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError: LocalCatalogDisabledError2 } = await import('../open-library-NKKUJLWA.js');
11878
- const { getKnownKinds: getKnownKinds2 } = await import('../open-registry-BYAXSHUI.js');
12065
+ const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError: LocalCatalogDisabledError2 } = await import('../open-library-XBR46DJL.js');
12066
+ const { getKnownKinds: getKnownKinds2 } = await import('../open-registry-W562DCDL.js');
11879
12067
  const projectDir = path19__default.resolve(opts.projectDir);
11880
12068
  if (opts.kind && !getKnownKinds2().has(opts.kind)) {
11881
12069
  logErr(
@@ -11933,8 +12121,8 @@ function makeStoreCommand() {
11933
12121
  }
11934
12122
  });
11935
12123
  store.command("show <ref>").description("Show a store asset's details + provenance (source, files, integrity)").option("-C, --project-dir <dir>", "Project directory (catalog config overlay)", process.cwd()).action(async (ref, opts) => {
11936
- const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError: LocalCatalogDisabledError2 } = await import('../open-library-NKKUJLWA.js');
11937
- const { supportsInstallManifest: supportsInstallManifest2 } = await import('../project-BIPK47JK.js');
12124
+ const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError: LocalCatalogDisabledError2 } = await import('../open-library-XBR46DJL.js');
12125
+ const { supportsInstallManifest: supportsInstallManifest2 } = await import('../project-D7GN7WLS.js');
11938
12126
  try {
11939
12127
  parseAssetRef(ref);
11940
12128
  } catch (e) {
@@ -12176,7 +12364,7 @@ function makeUpdateCommand() {
12176
12364
  }
12177
12365
  }
12178
12366
  if (target) {
12179
- await updateOne(am2, projectDir, target);
12367
+ await updateOne(am2, projectDir, target, opts.force);
12180
12368
  return;
12181
12369
  }
12182
12370
  const spinner = createSpinner();
@@ -12270,7 +12458,8 @@ async function resolveUpdateTarget(am2, name) {
12270
12458
  );
12271
12459
  process.exit(1);
12272
12460
  }
12273
- logErr(`No declared asset matches "${name}".`);
12461
+ const otherKind = await am2.otherKindHint(name);
12462
+ logErr(`No declared asset matches "${name}".${otherKind ? ` ${otherKind}` : ""}`);
12274
12463
  if (declared.length > 0) logInfo(`Declared: ${declared.map((d) => d.ref).join(", ")}`);
12275
12464
  process.exit(1);
12276
12465
  }
@@ -12318,7 +12507,7 @@ function readText2(file) {
12318
12507
  return "";
12319
12508
  }
12320
12509
  }
12321
- async function updateOne(am2, projectDir, target) {
12510
+ async function updateOne(am2, projectDir, target, force) {
12322
12511
  const lockPath = path19__default.join(projectDir, "skaile.lock.yaml");
12323
12512
  const before = readText2(lockPath);
12324
12513
  const spinner = createSpinner();
@@ -12327,6 +12516,7 @@ async function updateOne(am2, projectDir, target) {
12327
12516
  try {
12328
12517
  deployed = await am2.add(target.ref, {
12329
12518
  preferLockedLibrary: true,
12519
+ force,
12330
12520
  onLibraryMoved: (m) => reportMoved([m])
12331
12521
  });
12332
12522
  } catch (err) {
@@ -12525,6 +12715,12 @@ function makeWhyCommand() {
12525
12715
  process.exitCode = 1;
12526
12716
  return;
12527
12717
  }
12718
+ const otherKind = await am2.otherKindHint(ref);
12719
+ if (otherKind) {
12720
+ logErr(`${ref} is not a locked skill. ${otherKind}`);
12721
+ process.exitCode = 1;
12722
+ return;
12723
+ }
12528
12724
  let declared;
12529
12725
  try {
12530
12726
  declared = await am2.listDeclared();
@@ -12727,7 +12923,7 @@ async function runInit(projectDir, opts) {
12727
12923
  const { HARNESS_TARGETS: HARNESS_TARGETS2, SUPPORTED_HARNESSES: SUPPORTED_HARNESSES2, resolveConfiguredHarnessName: resolveConfiguredHarnessName2 } = await import('../core/index.js');
12728
12924
  const harness = opts.harness ?? "claude-code";
12729
12925
  if (!SUPPORTED_HARNESSES2.includes(harness)) {
12730
- logErr(`Unknown harness "${opts.harness}". Supported: ${SUPPORTED_HARNESSES2.join(", ")}`);
12926
+ logErr(unknownHarnessTargetMessage(opts.harness ?? ""));
12731
12927
  process.exitCode = 1;
12732
12928
  return;
12733
12929
  }
@@ -12871,7 +13067,7 @@ async function bootstrapUserConfig() {
12871
13067
  }
12872
13068
  async function hydrateInitSources(resolved, created) {
12873
13069
  try {
12874
- const { ensureSourcesCloned } = await import('../ensure-sources-IH7CHSJF.js');
13070
+ const { ensureSourcesCloned } = await import('../ensure-sources-K5EFNC3L.js');
12875
13071
  const hydrate = ensureSourcesCloned(resolved, { quiet: true });
12876
13072
  for (const n of hydrate.cloned) created.push(`~/.skaile/cache/sources/${n}/`);
12877
13073
  if (hydrate.failed.length > 0) {
@@ -12911,7 +13107,7 @@ function printInitSummary(resolved, projectDir, created) {
12911
13107
  console.log();
12912
13108
  }
12913
13109
  program.command("setup").description("Interactive provider setup wizard").action(async () => {
12914
- const { cmdSetup } = await import('../setup-AG6NFHSN.js');
13110
+ const { cmdSetup } = await import('../setup-IBDNJAOU.js');
12915
13111
  await cmdSetup([], { projectDir: process.cwd() });
12916
13112
  });
12917
13113
  program.addCommand(makeInstallCommand());
@@ -12992,7 +13188,7 @@ program.hook("postAction", async (_thisCommand, actionCommand) => {
12992
13188
  const opts = actionCommand.opts();
12993
13189
  if (opts.global || opts.dryRun) return;
12994
13190
  const projectDir = path19__default.resolve(opts.projectDir ?? process.cwd());
12995
- const { refreshPluginSkills } = await import('../claude-code-RE46FJXI.js');
13191
+ const { refreshPluginSkills } = await import('../claude-code-BBMNVH2J.js');
12996
13192
  try {
12997
13193
  if (await refreshPluginSkills(projectDir)) {
12998
13194
  logInfo(`Updated ${S.cmd(".claude/plugins/skaile/skills")} (the --full plugin copy)`);
@@ -13013,6 +13209,17 @@ process.once("beforeExit", () => {
13013
13209
  setLibraryAssetCheck(
13014
13210
  (asset, libraryPath) => libraryAssetRefusals(asset, libraryPath, getKindRegistry())
13015
13211
  );
13212
+ setRenamedEntryLookup(manifestEntryRenames);
13213
+ setWalkTruncationSink((info, root) => {
13214
+ const where = path19__default.basename(root);
13215
+ if (info.reason === "cycle") {
13216
+ logWarnErr(
13217
+ `${where}: asset scan truncated (cycle) - the symlink ${info.path} points back into the tree, so the result is incomplete. Remove the symlink; \`skaile library index ${where}\` lists every one.`
13218
+ );
13219
+ return;
13220
+ }
13221
+ logWarnErr(`${where}: asset scan truncated (${info.reason}) - the result is incomplete.`);
13222
+ });
13016
13223
  try {
13017
13224
  await program.parseAsync();
13018
13225
  commandSettled = true;