@skaile/workspaces 6.0.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 (431) hide show
  1. package/CHANGELOG.md +98 -0
  2. package/dist/{asset-feeds-PXUWCXVI.js → asset-feeds-KPKCE64E.js} +31 -23
  3. package/dist/asset-feeds-KPKCE64E.js.map +1 -0
  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 +19 -19
  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 +339 -19
  10. package/dist/asset-manager/src/index.d.ts.map +1 -1
  11. package/dist/asset-manager/src/installer.d.ts +40 -0
  12. package/dist/asset-manager/src/installer.d.ts.map +1 -1
  13. package/dist/asset-manager/src/mcp-config.d.ts +21 -0
  14. package/dist/asset-manager/src/mcp-config.d.ts.map +1 -1
  15. package/dist/asset-manager/src/renderers.d.ts +7 -0
  16. package/dist/asset-manager/src/renderers.d.ts.map +1 -1
  17. package/dist/bridge/harnesses/claude-sdk.js +18 -22
  18. package/dist/bridge/harnesses/claude-sdk.js.map +1 -1
  19. package/dist/bridge/harnesses/codex.js +24 -17
  20. package/dist/bridge/harnesses/codex.js.map +1 -1
  21. package/dist/bridge/harnesses/continue.js +14 -14
  22. package/dist/bridge/harnesses/echo.js +4 -4
  23. package/dist/bridge/harnesses/gemini.js +10 -10
  24. package/dist/bridge/harnesses/goose.js +14 -14
  25. package/dist/bridge/harnesses/omp.js +15 -8
  26. package/dist/bridge/harnesses/omp.js.map +1 -1
  27. package/dist/bridge/harnesses/opencode.js +14 -14
  28. package/dist/bridge/harnesses/qwen.js +10 -10
  29. package/dist/bridge/index.js +19 -19
  30. package/dist/bridge/src/claude-sdk-surface.d.ts +17 -0
  31. package/dist/bridge/src/claude-sdk-surface.d.ts.map +1 -0
  32. package/dist/bridge/src/harness-model-check.d.ts +30 -0
  33. package/dist/bridge/src/harness-model-check.d.ts.map +1 -1
  34. package/dist/bridge/src/harnesses/_subprocess-cli.d.ts.map +1 -1
  35. package/dist/bridge/src/harnesses/claude-sdk.d.ts.map +1 -1
  36. package/dist/bridge/src/harnesses/codex.d.ts.map +1 -1
  37. package/dist/bridge/src/harnesses/omp.d.ts.map +1 -1
  38. package/dist/bridge/src/index.d.ts +2 -1
  39. package/dist/bridge/src/index.d.ts.map +1 -1
  40. package/dist/bridge/src/normalizer.d.ts +3 -1
  41. package/dist/bridge/src/normalizer.d.ts.map +1 -1
  42. package/dist/bridge/src/runner-private-env.d.ts +7 -0
  43. package/dist/bridge/src/runner-private-env.d.ts.map +1 -1
  44. package/dist/{chunk-HK7HMEPT.js → chunk-27SXN33H.js} +13 -5
  45. package/dist/chunk-27SXN33H.js.map +1 -0
  46. package/dist/{chunk-TKHJXPSB.js → chunk-2XM3ZH36.js} +183 -33
  47. package/dist/chunk-2XM3ZH36.js.map +1 -0
  48. package/dist/{chunk-E3GPGTW3.js → chunk-3HACK2Z7.js} +142 -28
  49. package/dist/chunk-3HACK2Z7.js.map +1 -0
  50. package/dist/{chunk-T2BDID2J.js → chunk-5JPW27BI.js} +10 -9
  51. package/dist/chunk-5JPW27BI.js.map +1 -0
  52. package/dist/{chunk-2UUKCROR.js → chunk-5LQ62LNT.js} +4 -4
  53. package/dist/{chunk-2UUKCROR.js.map → chunk-5LQ62LNT.js.map} +1 -1
  54. package/dist/{chunk-UL22SDGR.js → chunk-6CYKTHNT.js} +194 -127
  55. package/dist/chunk-6CYKTHNT.js.map +1 -0
  56. package/dist/{chunk-XFIEVEU7.js → chunk-6OHZUUR7.js} +5 -4
  57. package/dist/chunk-6OHZUUR7.js.map +1 -0
  58. package/dist/{chunk-E572OHGY.js → chunk-76FLBODK.js} +4 -3
  59. package/dist/chunk-76FLBODK.js.map +1 -0
  60. package/dist/{chunk-GN4VVSAA.js → chunk-7DRFKAJZ.js} +7 -7
  61. package/dist/{chunk-GN4VVSAA.js.map → chunk-7DRFKAJZ.js.map} +1 -1
  62. package/dist/chunk-7H6XRCPG.js +31 -0
  63. package/dist/chunk-7H6XRCPG.js.map +1 -0
  64. package/dist/{chunk-MCUJTNY5.js → chunk-7Y6S4XLL.js} +3 -3
  65. package/dist/{chunk-MCUJTNY5.js.map → chunk-7Y6S4XLL.js.map} +1 -1
  66. package/dist/{chunk-DHYSUJ3H.js → chunk-BEYNH2LS.js} +4 -4
  67. package/dist/{chunk-DHYSUJ3H.js.map → chunk-BEYNH2LS.js.map} +1 -1
  68. package/dist/{chunk-GEQSUC6U.js → chunk-BOT64P3U.js} +4 -4
  69. package/dist/{chunk-GEQSUC6U.js.map → chunk-BOT64P3U.js.map} +1 -1
  70. package/dist/{chunk-L4YKW5AY.js → chunk-BRK5QZKI.js} +121 -20
  71. package/dist/chunk-BRK5QZKI.js.map +1 -0
  72. package/dist/{chunk-YGRZNFRO.js → chunk-BY5WIRCU.js} +58 -5
  73. package/dist/chunk-BY5WIRCU.js.map +1 -0
  74. package/dist/{chunk-Z7ZEZZB6.js → chunk-C5HFK34M.js} +3 -3
  75. package/dist/chunk-C5HFK34M.js.map +1 -0
  76. package/dist/{chunk-DUMTLYSO.js → chunk-COAFAYBS.js} +31 -7
  77. package/dist/chunk-COAFAYBS.js.map +1 -0
  78. package/dist/{chunk-7XSAW5OC.js → chunk-E5NQRHEB.js} +30 -7
  79. package/dist/chunk-E5NQRHEB.js.map +1 -0
  80. package/dist/{chunk-BFMYYNDT.js → chunk-F3D25RGM.js} +11 -3
  81. package/dist/chunk-F3D25RGM.js.map +1 -0
  82. package/dist/{chunk-VBI7HGHB.js → chunk-GF5JXQIZ.js} +3 -3
  83. package/dist/{chunk-VBI7HGHB.js.map → chunk-GF5JXQIZ.js.map} +1 -1
  84. package/dist/{chunk-ZFUZ5AKM.js → chunk-I7LC5TDY.js} +3 -3
  85. package/dist/{chunk-ZFUZ5AKM.js.map → chunk-I7LC5TDY.js.map} +1 -1
  86. package/dist/{chunk-3IXIEHUB.js → chunk-ICSGNT5P.js} +7 -7
  87. package/dist/{chunk-3IXIEHUB.js.map → chunk-ICSGNT5P.js.map} +1 -1
  88. package/dist/{chunk-WEH33JSG.js → chunk-ITFCWMOY.js} +93 -29
  89. package/dist/chunk-ITFCWMOY.js.map +1 -0
  90. package/dist/{chunk-WDXZA7QW.js → chunk-IZQOO6MN.js} +2 -2
  91. package/dist/{chunk-WDXZA7QW.js.map → chunk-IZQOO6MN.js.map} +1 -1
  92. package/dist/{chunk-WDAIWDLK.js → chunk-JFLQICIU.js} +5 -5
  93. package/dist/{chunk-WDAIWDLK.js.map → chunk-JFLQICIU.js.map} +1 -1
  94. package/dist/{chunk-ARWKK325.js → chunk-JJJ2G4K2.js} +5 -5
  95. package/dist/{chunk-ARWKK325.js.map → chunk-JJJ2G4K2.js.map} +1 -1
  96. package/dist/{chunk-GOCWM7FN.js → chunk-JMIKGAUA.js} +43 -4
  97. package/dist/chunk-JMIKGAUA.js.map +1 -0
  98. package/dist/{chunk-X3RMRJNR.js → chunk-JRN5QF4C.js} +8 -3
  99. package/dist/chunk-JRN5QF4C.js.map +1 -0
  100. package/dist/{chunk-SNEE6UGY.js → chunk-K3R2UKG7.js} +18 -12
  101. package/dist/chunk-K3R2UKG7.js.map +1 -0
  102. package/dist/{chunk-VXEYX73S.js → chunk-KB56WBQ3.js} +4 -4
  103. package/dist/{chunk-VXEYX73S.js.map → chunk-KB56WBQ3.js.map} +1 -1
  104. package/dist/{chunk-OHNKYHRR.js → chunk-KJSC2ZD6.js} +264 -18
  105. package/dist/chunk-KJSC2ZD6.js.map +1 -0
  106. package/dist/{chunk-UQ33Y4DM.js → chunk-KPKGWXUJ.js} +4 -4
  107. package/dist/{chunk-UQ33Y4DM.js.map → chunk-KPKGWXUJ.js.map} +1 -1
  108. package/dist/{chunk-AF432MS3.js → chunk-KXJMQTOU.js} +3 -3
  109. package/dist/{chunk-AF432MS3.js.map → chunk-KXJMQTOU.js.map} +1 -1
  110. package/dist/chunk-LRBP3234.js +302 -0
  111. package/dist/chunk-LRBP3234.js.map +1 -0
  112. package/dist/{chunk-UVVVR4XO.js → chunk-M4OG2YN4.js} +4 -4
  113. package/dist/{chunk-UVVVR4XO.js.map → chunk-M4OG2YN4.js.map} +1 -1
  114. package/dist/{chunk-QOM5Z62G.js → chunk-MAZ3UXJK.js} +17 -24
  115. package/dist/chunk-MAZ3UXJK.js.map +1 -0
  116. package/dist/{chunk-Y2TO2U7W.js → chunk-MM4YO3EL.js} +3 -3
  117. package/dist/{chunk-Y2TO2U7W.js.map → chunk-MM4YO3EL.js.map} +1 -1
  118. package/dist/{chunk-OULSJRXV.js → chunk-OCQNUV4T.js} +7 -7
  119. package/dist/{chunk-OULSJRXV.js.map → chunk-OCQNUV4T.js.map} +1 -1
  120. package/dist/{chunk-SZXGRHQQ.js → chunk-PJJSBZZP.js} +4 -4
  121. package/dist/{chunk-SZXGRHQQ.js.map → chunk-PJJSBZZP.js.map} +1 -1
  122. package/dist/{chunk-OAHVKSQJ.js → chunk-PKBLJI23.js} +1471 -126
  123. package/dist/chunk-PKBLJI23.js.map +1 -0
  124. package/dist/{chunk-NOA6EJXE.js → chunk-PKE3PXOK.js} +3 -3
  125. package/dist/{chunk-NOA6EJXE.js.map → chunk-PKE3PXOK.js.map} +1 -1
  126. package/dist/{chunk-WYHQUCHR.js → chunk-PMWRM4EJ.js} +109 -48
  127. package/dist/chunk-PMWRM4EJ.js.map +1 -0
  128. package/dist/{chunk-H6UVIKQ2.js → chunk-PNUM7GUY.js} +3 -3
  129. package/dist/{chunk-H6UVIKQ2.js.map → chunk-PNUM7GUY.js.map} +1 -1
  130. package/dist/{chunk-SRODW6M2.js → chunk-Q5RN4PWV.js} +3 -3
  131. package/dist/{chunk-SRODW6M2.js.map → chunk-Q5RN4PWV.js.map} +1 -1
  132. package/dist/{chunk-LN6QB7XI.js → chunk-QIHL3YPL.js} +4 -4
  133. package/dist/{chunk-LN6QB7XI.js.map → chunk-QIHL3YPL.js.map} +1 -1
  134. package/dist/{chunk-U56GGCC2.js → chunk-QK7AG5AV.js} +4 -4
  135. package/dist/{chunk-U56GGCC2.js.map → chunk-QK7AG5AV.js.map} +1 -1
  136. package/dist/{chunk-OTIB4D2K.js → chunk-QPWR3YMY.js} +15 -5
  137. package/dist/chunk-QPWR3YMY.js.map +1 -0
  138. package/dist/{chunk-4DWBSTYA.js → chunk-QXKUFROW.js} +22 -5
  139. package/dist/chunk-QXKUFROW.js.map +1 -0
  140. package/dist/{chunk-4XWLB7JB.js → chunk-RQMIZONH.js} +95 -35
  141. package/dist/chunk-RQMIZONH.js.map +1 -0
  142. package/dist/{chunk-LSI2IVFT.js → chunk-RXGPFAMN.js} +4 -3
  143. package/dist/chunk-RXGPFAMN.js.map +1 -0
  144. package/dist/{chunk-3JKGY2YC.js → chunk-S2H3RBK7.js} +182 -33
  145. package/dist/chunk-S2H3RBK7.js.map +1 -0
  146. package/dist/{chunk-VJRTDKXS.js → chunk-SJNZ4WPA.js} +165 -106
  147. package/dist/chunk-SJNZ4WPA.js.map +1 -0
  148. package/dist/{chunk-KX2PT5Q4.js → chunk-T2VBPVWZ.js} +77 -18
  149. package/dist/chunk-T2VBPVWZ.js.map +1 -0
  150. package/dist/{chunk-6Z5KTFJT.js → chunk-TSTRH4SM.js} +3 -3
  151. package/dist/{chunk-6Z5KTFJT.js.map → chunk-TSTRH4SM.js.map} +1 -1
  152. package/dist/{chunk-7CV3HFWJ.js → chunk-TZERN27L.js} +5 -5
  153. package/dist/{chunk-7CV3HFWJ.js.map → chunk-TZERN27L.js.map} +1 -1
  154. package/dist/{chunk-JDR6ILCW.js → chunk-U673DB5U.js} +4 -4
  155. package/dist/{chunk-JDR6ILCW.js.map → chunk-U673DB5U.js.map} +1 -1
  156. package/dist/{chunk-FKU57Q5Q.js → chunk-URCJIV7T.js} +3 -3
  157. package/dist/{chunk-FKU57Q5Q.js.map → chunk-URCJIV7T.js.map} +1 -1
  158. package/dist/{chunk-ADPM6AYF.js → chunk-VSX2G7LA.js} +3 -3
  159. package/dist/{chunk-ADPM6AYF.js.map → chunk-VSX2G7LA.js.map} +1 -1
  160. package/dist/{chunk-F2GOZMRA.js → chunk-X37JUNEW.js} +49 -49
  161. package/dist/chunk-X37JUNEW.js.map +1 -0
  162. package/dist/{chunk-NMI2TWMH.js → chunk-Z3IRZBXB.js} +158 -344
  163. package/dist/chunk-Z3IRZBXB.js.map +1 -0
  164. package/dist/{chunk-7TPYPVAH.js → chunk-ZWJCRHP3.js} +3 -3
  165. package/dist/{chunk-7TPYPVAH.js.map → chunk-ZWJCRHP3.js.map} +1 -1
  166. package/dist/{claude-code-VJGYBXQR.js → claude-code-BBMNVH2J.js} +5 -5
  167. package/dist/{claude-code-VJGYBXQR.js.map → claude-code-BBMNVH2J.js.map} +1 -1
  168. package/dist/cli/index.js +964 -501
  169. package/dist/cli/index.js.map +1 -1
  170. package/dist/cli/src/agent-pins.d.ts +11 -0
  171. package/dist/cli/src/agent-pins.d.ts.map +1 -1
  172. package/dist/cli/src/commands/asset-cmd.d.ts.map +1 -1
  173. package/dist/cli/src/commands/catalog.d.ts +1 -1
  174. package/dist/cli/src/commands/catalog.d.ts.map +1 -1
  175. package/dist/cli/src/commands/config.d.ts.map +1 -1
  176. package/dist/cli/src/commands/diff.d.ts.map +1 -1
  177. package/dist/cli/src/commands/harness.d.ts +24 -0
  178. package/dist/cli/src/commands/harness.d.ts.map +1 -0
  179. package/dist/cli/src/commands/integration.d.ts.map +1 -1
  180. package/dist/cli/src/commands/library-cmd.d.ts.map +1 -1
  181. package/dist/cli/src/commands/library-index.d.ts +28 -3
  182. package/dist/cli/src/commands/library-index.d.ts.map +1 -1
  183. package/dist/cli/src/commands/library-publish.d.ts.map +1 -1
  184. package/dist/cli/src/commands/migrate-assets.d.ts.map +1 -1
  185. package/dist/cli/src/commands/outdated.d.ts.map +1 -1
  186. package/dist/cli/src/commands/plugin-registry-cmd.d.ts.map +1 -1
  187. package/dist/cli/src/commands/project.d.ts +19 -1
  188. package/dist/cli/src/commands/project.d.ts.map +1 -1
  189. package/dist/cli/src/commands/rebuild.d.ts.map +1 -1
  190. package/dist/cli/src/commands/run.d.ts.map +1 -1
  191. package/dist/cli/src/commands/serve-preflight.d.ts +31 -1
  192. package/dist/cli/src/commands/serve-preflight.d.ts.map +1 -1
  193. package/dist/cli/src/commands/serve.d.ts +10 -0
  194. package/dist/cli/src/commands/serve.d.ts.map +1 -1
  195. package/dist/cli/src/commands/session-logs/local-query.d.ts +2 -0
  196. package/dist/cli/src/commands/session-logs/local-query.d.ts.map +1 -1
  197. package/dist/cli/src/commands/source-manifest-publish.d.ts.map +1 -1
  198. package/dist/cli/src/commands/source-manifest.d.ts +19 -7
  199. package/dist/cli/src/commands/source-manifest.d.ts.map +1 -1
  200. package/dist/cli/src/commands/source.d.ts +9 -2
  201. package/dist/cli/src/commands/source.d.ts.map +1 -1
  202. package/dist/cli/src/commands/store.d.ts.map +1 -1
  203. package/dist/cli/src/commands/update.d.ts.map +1 -1
  204. package/dist/cli/src/commands/validate-instances.d.ts.map +1 -1
  205. package/dist/cli/src/commands/validate.d.ts.map +1 -1
  206. package/dist/cli/src/commands/why.d.ts.map +1 -1
  207. package/dist/cli/src/config-checks.d.ts +55 -0
  208. package/dist/cli/src/config-checks.d.ts.map +1 -0
  209. package/dist/cli/src/harness-error.d.ts +12 -1
  210. package/dist/cli/src/harness-error.d.ts.map +1 -1
  211. package/dist/cli/src/helpers.d.ts +18 -8
  212. package/dist/cli/src/helpers.d.ts.map +1 -1
  213. package/dist/cli/src/plugin-store/index.d.ts +10 -1
  214. package/dist/cli/src/plugin-store/index.d.ts.map +1 -1
  215. package/dist/cli/src/plugin-store/spec.d.ts +8 -0
  216. package/dist/cli/src/plugin-store/spec.d.ts.map +1 -1
  217. package/dist/cli/src/skill-checks.d.ts +27 -0
  218. package/dist/cli/src/skill-checks.d.ts.map +1 -1
  219. package/dist/cli/src/store-addable.d.ts +11 -0
  220. package/dist/cli/src/store-addable.d.ts.map +1 -1
  221. package/dist/connectors/config.js +5 -5
  222. package/dist/connectors/index.js +23 -23
  223. package/dist/connectors/src/connector-manager.d.ts.map +1 -1
  224. package/dist/connectors-47EM6C2P.js +48 -0
  225. package/dist/{connectors-CXZLXAFZ.js.map → connectors-47EM6C2P.js.map} +1 -1
  226. package/dist/core/framework.js +1 -1
  227. package/dist/core/index.js +9 -9
  228. package/dist/core/manifest.js +2 -2
  229. package/dist/core/models.js +1 -1
  230. package/dist/core/provider-registry-credentials.js +2 -2
  231. package/dist/core/provider-registry.js +1 -1
  232. package/dist/core/publish-manifest.js +3 -3
  233. package/dist/core/ref.js +1 -1
  234. package/dist/core/runtime-assets.js +5 -5
  235. package/dist/core/src/agent-instances.d.ts.map +1 -1
  236. package/dist/core/src/config-key-diagnostics.d.ts +9 -0
  237. package/dist/core/src/config-key-diagnostics.d.ts.map +1 -0
  238. package/dist/core/src/framework.d.ts +5 -3
  239. package/dist/core/src/framework.d.ts.map +1 -1
  240. package/dist/core/src/index.d.ts +3 -2
  241. package/dist/core/src/index.d.ts.map +1 -1
  242. package/dist/core/src/lock.d.ts +12 -0
  243. package/dist/core/src/lock.d.ts.map +1 -1
  244. package/dist/core/src/manifest.d.ts +25 -0
  245. package/dist/core/src/manifest.d.ts.map +1 -1
  246. package/dist/core/src/models.d.ts +15 -0
  247. package/dist/core/src/models.d.ts.map +1 -1
  248. package/dist/core/src/provider-registry.d.ts +6 -0
  249. package/dist/core/src/provider-registry.d.ts.map +1 -1
  250. package/dist/core/src/workspace-config.d.ts +18 -1
  251. package/dist/core/src/workspace-config.d.ts.map +1 -1
  252. package/dist/core/src/workspace-yaml-editor.d.ts +9 -2
  253. package/dist/core/src/workspace-yaml-editor.d.ts.map +1 -1
  254. package/dist/core/workspace-config.js +4 -4
  255. package/dist/deploy/index.js +9 -9
  256. package/dist/discovery/index.js +5 -5
  257. package/dist/discovery/src/builtin-providers.d.ts.map +1 -1
  258. package/dist/discovery/src/parse-manifest.d.ts.map +1 -1
  259. package/dist/{ensure-sources-UPTHZKGF.js → ensure-sources-K5EFNC3L.js} +36 -22
  260. package/dist/ensure-sources-K5EFNC3L.js.map +1 -0
  261. package/dist/factory-assets/connectors/box.js +23 -23
  262. package/dist/factory-assets/connectors/deploy.js +23 -23
  263. package/dist/factory-assets/connectors/devserver.js +23 -23
  264. package/dist/factory-assets/connectors/flow/adapter.js +23 -23
  265. package/dist/factory-assets/connectors/flow/contract/normalize.d.ts.map +1 -1
  266. package/dist/factory-assets/connectors/flow/contract.js +1 -1
  267. package/dist/factory-assets/connectors/flow/engine.js +11 -11
  268. package/dist/factory-assets/connectors/flow/run-flow.d.ts.map +1 -1
  269. package/dist/factory-assets/connectors/flow/run-flow.js +25 -25
  270. package/dist/factory-assets/connectors/flow.js +23 -23
  271. package/dist/factory-assets/connectors/git.js +23 -23
  272. package/dist/factory-assets/connectors/gmail.js +23 -23
  273. package/dist/factory-assets/connectors/googledrive.js +23 -23
  274. package/dist/factory-assets/connectors/local.js +23 -23
  275. package/dist/factory-assets/connectors/mattermost.js +23 -23
  276. package/dist/factory-assets/connectors/memory.js +23 -23
  277. package/dist/factory-assets/connectors/minio.js +23 -23
  278. package/dist/factory-assets/connectors/postgres.js +23 -23
  279. package/dist/factory-assets/connectors/s3.js +23 -23
  280. package/dist/factory-assets/connectors/sharepoint.js +23 -23
  281. package/dist/factory-assets/connectors/sqlite.js +23 -23
  282. package/dist/factory-assets/connectors/static-server.js +23 -23
  283. package/dist/factory-assets/connectors/tunnel.js +23 -23
  284. package/dist/factory-assets/connectors/webdav.js +23 -23
  285. package/dist/factory-assets/connectors/xstate-store.js +23 -23
  286. package/dist/factory-assets/connectors/xstate.js +23 -23
  287. package/dist/factory-assets/skills/authoring-skaile-assets/SKILL.md +1 -1
  288. package/dist/factory-assets/skills/authoring-skaile-manifests/SKILL.md +2 -2
  289. package/dist/factory-assets/skills/authoring-skaile-manifests/references/dependency-standard.md +3 -3
  290. package/dist/flows-KLBNSKLO.js +26 -0
  291. package/dist/{flows-TJQIMGUX.js.map → flows-KLBNSKLO.js.map} +1 -1
  292. package/dist/helpers-LUSV2ICC.js +52 -0
  293. package/dist/{helpers-DE53KG3E.js.map → helpers-LUSV2ICC.js.map} +1 -1
  294. package/dist/library/index.js +14 -14
  295. package/dist/library/install.js +5 -5
  296. package/dist/library/src/index.d.ts +2 -2
  297. package/dist/library/src/index.d.ts.map +1 -1
  298. package/dist/library/src/install/index.d.ts +1 -1
  299. package/dist/library/src/install/index.d.ts.map +1 -1
  300. package/dist/library/src/install/install-from-manifest.d.ts +13 -0
  301. package/dist/library/src/install/install-from-manifest.d.ts.map +1 -1
  302. package/dist/library/src/install/source-fetch-github.d.ts.map +1 -1
  303. package/dist/library/src/local/library-dir.d.ts +22 -5
  304. package/dist/library/src/local/library-dir.d.ts.map +1 -1
  305. package/dist/library/src/local/local-catalog-source.d.ts.map +1 -1
  306. package/dist/library/src/manifest-writer.d.ts.map +1 -1
  307. package/dist/library/src/remote/remote-catalog-source.d.ts +8 -0
  308. package/dist/library/src/remote/remote-catalog-source.d.ts.map +1 -1
  309. package/dist/library/src/remote/rest-catalog-source.d.ts +3 -2
  310. package/dist/library/src/remote/rest-catalog-source.d.ts.map +1 -1
  311. package/dist/{library-publish-KKQ2ULLX.js → library-publish-XMRCKRNR.js} +59 -58
  312. package/dist/library-publish-XMRCKRNR.js.map +1 -0
  313. package/dist/model-endpoint/index.js +12 -12
  314. package/dist/model-endpoint/src/openai-chat.d.ts +7 -2
  315. package/dist/model-endpoint/src/openai-chat.d.ts.map +1 -1
  316. package/dist/model-endpoint/src/openai-shared.d.ts +8 -0
  317. package/dist/model-endpoint/src/openai-shared.d.ts.map +1 -1
  318. package/dist/model-endpoint/src/server.d.ts.map +1 -1
  319. package/dist/model-endpoint/src/types.d.ts +1 -1
  320. package/dist/model-endpoint/src/types.d.ts.map +1 -1
  321. package/dist/model-endpoint/src/usage-cost.d.ts +23 -0
  322. package/dist/model-endpoint/src/usage-cost.d.ts.map +1 -0
  323. package/dist/open-library-XBR46DJL.js +56 -0
  324. package/dist/{open-library-RJGJIW5H.js.map → open-library-XBR46DJL.js.map} +1 -1
  325. package/dist/open-registry-W562DCDL.js +32 -0
  326. package/dist/{open-registry-3QS3J7KO.js.map → open-registry-W562DCDL.js.map} +1 -1
  327. package/dist/paths-2AZXB3QL.js +22 -0
  328. package/dist/{paths-QAV4C3KX.js.map → paths-2AZXB3QL.js.map} +1 -1
  329. package/dist/plugin-store-36SIL4TV.js +23 -0
  330. package/dist/{plugin-store-MSH6GK6T.js.map → plugin-store-36SIL4TV.js.map} +1 -1
  331. package/dist/project-D7GN7WLS.js +86 -0
  332. package/dist/{project-HZW2MZPA.js.map → project-D7GN7WLS.js.map} +1 -1
  333. package/dist/resolver/index.js +10 -10
  334. package/dist/runner/index.js +40 -40
  335. package/dist/runner/src/capability-roundtrip.d.ts +7 -6
  336. package/dist/runner/src/capability-roundtrip.d.ts.map +1 -1
  337. package/dist/runner/src/composition/content-source.d.ts.map +1 -1
  338. package/dist/runner/src/composition/errors.d.ts +16 -1
  339. package/dist/runner/src/composition/errors.d.ts.map +1 -1
  340. package/dist/runner/src/credential-notice.d.ts +3 -3
  341. package/dist/runner/src/credential-notice.d.ts.map +1 -1
  342. package/dist/runner/src/serve.d.ts +20 -7
  343. package/dist/runner/src/serve.d.ts.map +1 -1
  344. package/dist/sdk/asset-manager.js +19 -19
  345. package/dist/sdk/bridge.js +19 -19
  346. package/dist/sdk/core.js +9 -9
  347. package/dist/sdk/flow.js +11 -11
  348. package/dist/sdk/index.js +40 -40
  349. package/dist/sdk/resolver.js +10 -10
  350. package/dist/sdk/runner.js +40 -40
  351. package/dist/sdk/transport/ws/server.js +10 -10
  352. package/dist/sdk/transport/ws.js +10 -10
  353. package/dist/sdk/transport.js +10 -10
  354. package/dist/serve-preflight-CGA5G3AE.js +135 -0
  355. package/dist/serve-preflight-CGA5G3AE.js.map +1 -0
  356. package/dist/{setup-AGYB4PKR.js → setup-IBDNJAOU.js} +32 -32
  357. package/dist/{setup-AGYB4PKR.js.map → setup-IBDNJAOU.js.map} +1 -1
  358. package/dist/skills-CTTO7SZK.js +26 -0
  359. package/dist/{skills-2LMQ2IAD.js.map → skills-CTTO7SZK.js.map} +1 -1
  360. package/dist/source-2DJ5KNOI.js +85 -0
  361. package/dist/{source-GBMYD3RO.js.map → source-2DJ5KNOI.js.map} +1 -1
  362. package/dist/source-fetch-github-RWHV4I5Z.js +4 -0
  363. package/dist/{source-fetch-github-ST4MFL3D.js.map → source-fetch-github-RWHV4I5Z.js.map} +1 -1
  364. package/dist/{source-manifest-publish-FK22TVQT.js → source-manifest-publish-IYWUMUCY.js} +55 -57
  365. package/dist/source-manifest-publish-IYWUMUCY.js.map +1 -0
  366. package/dist/transport/index.js +10 -10
  367. package/dist/transport/ws/server.js +10 -10
  368. package/dist/transport/ws.js +10 -10
  369. package/dist/tui/index.js +48 -41
  370. package/dist/tui/index.js.map +1 -1
  371. package/dist/tui/src/repl.d.ts.map +1 -1
  372. package/dist/types/manifests.js +1 -1
  373. package/dist/types/src/install-manifest.d.ts +1 -1
  374. package/dist/types/src/install-manifest.d.ts.map +1 -1
  375. package/dist/types/src/manifests/index.d.ts +1 -1
  376. package/dist/types/src/manifests/index.d.ts.map +1 -1
  377. package/dist/types/src/manifests/scaffold-body.d.ts +2 -0
  378. package/dist/types/src/manifests/scaffold-body.d.ts.map +1 -1
  379. package/dist/workspace-plugin/adapters/mcp.js +30 -30
  380. package/dist/workspace-plugin/adapters/omp.js +15 -15
  381. package/dist/workspace-plugin/index.js +2 -2
  382. package/package.json +1 -1
  383. package/dist/asset-feeds-PXUWCXVI.js.map +0 -1
  384. package/dist/chunk-3JKGY2YC.js.map +0 -1
  385. package/dist/chunk-4DWBSTYA.js.map +0 -1
  386. package/dist/chunk-4XWLB7JB.js.map +0 -1
  387. package/dist/chunk-7XSAW5OC.js.map +0 -1
  388. package/dist/chunk-BFMYYNDT.js.map +0 -1
  389. package/dist/chunk-DUMTLYSO.js.map +0 -1
  390. package/dist/chunk-E3GPGTW3.js.map +0 -1
  391. package/dist/chunk-E572OHGY.js.map +0 -1
  392. package/dist/chunk-F2GOZMRA.js.map +0 -1
  393. package/dist/chunk-GOCWM7FN.js.map +0 -1
  394. package/dist/chunk-HK7HMEPT.js.map +0 -1
  395. package/dist/chunk-KX2PT5Q4.js.map +0 -1
  396. package/dist/chunk-L4YKW5AY.js.map +0 -1
  397. package/dist/chunk-LSI2IVFT.js.map +0 -1
  398. package/dist/chunk-NMI2TWMH.js.map +0 -1
  399. package/dist/chunk-OAHVKSQJ.js.map +0 -1
  400. package/dist/chunk-OHNKYHRR.js.map +0 -1
  401. package/dist/chunk-OTIB4D2K.js.map +0 -1
  402. package/dist/chunk-PUK7TQT4.js +0 -13
  403. package/dist/chunk-PUK7TQT4.js.map +0 -1
  404. package/dist/chunk-QOM5Z62G.js.map +0 -1
  405. package/dist/chunk-SNEE6UGY.js.map +0 -1
  406. package/dist/chunk-T2BDID2J.js.map +0 -1
  407. package/dist/chunk-TKHJXPSB.js.map +0 -1
  408. package/dist/chunk-UL22SDGR.js.map +0 -1
  409. package/dist/chunk-VJRTDKXS.js.map +0 -1
  410. package/dist/chunk-WEH33JSG.js.map +0 -1
  411. package/dist/chunk-WYHQUCHR.js.map +0 -1
  412. package/dist/chunk-X3RMRJNR.js.map +0 -1
  413. package/dist/chunk-XFIEVEU7.js.map +0 -1
  414. package/dist/chunk-YGRZNFRO.js.map +0 -1
  415. package/dist/chunk-Z7ZEZZB6.js.map +0 -1
  416. package/dist/connectors-CXZLXAFZ.js +0 -48
  417. package/dist/ensure-sources-UPTHZKGF.js.map +0 -1
  418. package/dist/flows-TJQIMGUX.js +0 -26
  419. package/dist/helpers-DE53KG3E.js +0 -38
  420. package/dist/library-publish-KKQ2ULLX.js.map +0 -1
  421. package/dist/open-library-RJGJIW5H.js +0 -42
  422. package/dist/open-registry-3QS3J7KO.js +0 -32
  423. package/dist/paths-QAV4C3KX.js +0 -22
  424. package/dist/plugin-store-MSH6GK6T.js +0 -23
  425. package/dist/project-HZW2MZPA.js +0 -84
  426. package/dist/serve-preflight-L4POEHNQ.js +0 -108
  427. package/dist/serve-preflight-L4POEHNQ.js.map +0 -1
  428. package/dist/skills-2LMQ2IAD.js +0 -26
  429. package/dist/source-GBMYD3RO.js +0 -85
  430. package/dist/source-fetch-github-ST4MFL3D.js +0 -4
  431. package/dist/source-manifest-publish-FK22TVQT.js.map +0 -1
@@ -11,8 +11,9 @@
11
11
  */
12
12
  import type { AssetRef, CatalogEntry, HarnessName, LockFile, StoreFetcher } from "@skaile/workspaces/core";
13
13
  import type { IAssetKindRegistry } from "@skaile/workspaces/plugins";
14
+ import { FACTORY_SOURCE_URL } from "@skaile/workspaces/core";
14
15
  import type { PresetExpansion } from "@skaile/workspaces/core";
15
- import type { AssetFetcher } from "@skaile/workspaces/library";
16
+ import type { AssetFetcher, Library } from "@skaile/workspaces/library";
16
17
  import type { HistoryEntry } from "./history.js";
17
18
  import { type InstalledAgentInstance } from "./install-instances.js";
18
19
  import type { ScaffoldOptions } from "./installer.js";
@@ -24,6 +25,36 @@ import { type DeployableEntry } from "./installer.js";
24
25
  * explicit user declaration.
25
26
  */
26
27
  export declare function normalizeRepoUrl(url: string): string;
28
+ /**
29
+ * The checks one library asset must pass before `add` deploys it, as the lines `skaile validate`
30
+ * prints for it (`<file> [<tag>] - <text>`). The asset manager does not know the per-kind checks
31
+ * (they live with `validate`), so the host registers them once at startup; none registered means
32
+ * `add` runs no such check (library use without the CLI). An asset the check refuses is never
33
+ * deployed, as one the manifest does not list is not (p1550).
34
+ */
35
+ export type LibraryAssetCheck = (asset: {
36
+ kind: string;
37
+ name: string;
38
+ source: string;
39
+ }, libraryPath: string) => string[];
40
+ /** Register (or with `undefined`, remove) the {@link LibraryAssetCheck} `add` runs per library asset. */
41
+ export declare function setLibraryAssetCheck(check: LibraryAssetCheck | undefined): void;
42
+ /**
43
+ * A first-party manifest entry of a library whose asset file now names another asset (`name:`, a
44
+ * flow's `id:`), before `library index` renamed the entry: `publisher` is the entry's own or the
45
+ * manifest's, `file` the asset file relative to the library and `now` the name it carries.
46
+ */
47
+ export interface RenamedLibraryEntry {
48
+ kind: string;
49
+ name: string;
50
+ publisher?: string;
51
+ file: string;
52
+ now: string;
53
+ }
54
+ /** The {@link RenamedLibraryEntry}s of the library at `libraryPath`. Registered by the host, as {@link LibraryAssetCheck}. */
55
+ export type RenamedEntryLookup = (libraryPath: string) => RenamedLibraryEntry[];
56
+ /** Register (or with `undefined`, remove) the {@link RenamedEntryLookup} `add` asks when a ref resolves to nothing (p1603). */
57
+ export declare function setRenamedEntryLookup(lookup: RenamedEntryLookup | undefined): void;
27
58
  /** One row of {@link AssetManager.libraryHolders}: a library holding a ref at one version. */
28
59
  export interface LibraryHolder {
29
60
  library: string;
@@ -64,6 +95,12 @@ export declare function parseCanonicalLockKey(key: string): {
64
95
  name?: string;
65
96
  version?: string;
66
97
  };
98
+ /**
99
+ * Replace the `diff -u` timestamps of the `---` / `+++` header lines with a label of the side
100
+ * (`--- <file> (deployed)`, `+++ <file> (library)`). A file that is missing on one side shows
101
+ * the epoch there (`1970-01-01`), which says nothing a reader wants (p1693).
102
+ */
103
+ export declare function labelDiffHeaders(diff: string, from: string, to: string): string;
67
104
  /**
68
105
  * Bare asset name of a soft-dep target ref (`@pub/name@ver` → `name`); splits the
69
106
  * version off the *last* `@` since the leading one is the scope sigil. The
@@ -96,6 +133,22 @@ export interface LibraryMove {
96
133
  /** Library name the asset resolved from now. */
97
134
  to: string;
98
135
  }
136
+ /** One asset a `skaile add --dry-run` would deploy. */
137
+ export interface AddPlanItem {
138
+ /** `kind:@publisher/name`. */
139
+ ref: string;
140
+ version: string;
141
+ /** `library <name>`, `source <name>`, `factory` or `store`. */
142
+ origin: string;
143
+ /** True for the asset that was asked for; false for a dependency it pulls. */
144
+ requested: boolean;
145
+ /** Deploy folders per harness target (project-relative, or `~`-relative for a global add). Empty for an agent. */
146
+ folders: string[];
147
+ /** Files of the asset, relative to its folder, when the resolver knows them. Empty for an agent. */
148
+ files: string[];
149
+ /** The native agent files each harness target gets, for an agent: it is rendered, not copied (p1621). */
150
+ renders: string[];
151
+ }
99
152
  /**
100
153
  * Reconciliation state of a declared dependency relative to the lock + disk.
101
154
  * `invalid` flags a `dependencies:` entry that isn't a parseable canonical ref —
@@ -134,9 +187,19 @@ export interface IncompleteDeploy {
134
187
  missing: string[];
135
188
  }
136
189
  /**
137
- * A tracked asset whose copy still sits in the previous default deploy dir
138
- * (`.claude/…`) although the project now deploys to another harness. See
139
- * {@link AssetManager.listLegacyClaudeDeployed}.
190
+ * A tracked asset whose copy still sits in the project dirs of a harness the
191
+ * project no longer deploys to. See {@link AssetManager.listStaleHarnessCopies}.
192
+ */
193
+ export interface StaleHarnessCopy {
194
+ /** The harness whose dir holds the stale copy. */
195
+ harness: HarnessName;
196
+ kind: string;
197
+ name: string;
198
+ /** Absolute path of the stale copy. */
199
+ path: string;
200
+ }
201
+ /**
202
+ * @deprecated Use {@link StaleHarnessCopy}, which also names the harness of the stale copy.
140
203
  */
141
204
  export interface LegacyDeployedAsset {
142
205
  kind: string;
@@ -194,7 +257,7 @@ export type { DeployOptions, ScaffoldOptions } from "./installer.js";
194
257
  export type { DeployableEntry } from "./installer.js";
195
258
  export { createScaffold, deployAll, installTargetOf, removeAsset, SCAFFOLD_KINDS, } from "./installer.js";
196
259
  export type { RenderMcpConfigOptions, RenderMcpConfigResult, SkippedMcpServer, } from "./mcp-config.js";
197
- export { renderMcpServerConfig } from "./mcp-config.js";
260
+ export { mcpNotRunnableReason, renderMcpServerConfig } from "./mcp-config.js";
198
261
  export type { Log } from "./renderers.js";
199
262
  export { renderAgentToFramework } from "./renderers.js";
200
263
  /**
@@ -317,6 +380,14 @@ export interface InstallResult {
317
380
  * content. A re-lock can happen with nothing to deploy. Absent when none changed.
318
381
  */
319
382
  relocked?: string[];
383
+ /**
384
+ * Global entries a 5.12.0 record left without a harness subset, now limited to the one harness
385
+ * that holds their copy (`ref` is `kind:@publisher/name`). Absent when nothing was inferred.
386
+ */
387
+ inferredHarnesses?: Array<{
388
+ ref: string;
389
+ harnesses: HarnessName[];
390
+ }>;
320
391
  /**
321
392
  * Library-origin assets whose lock entry now names another library than before. `install`
322
393
  * keeps a locked asset on its library; only `update`, a pin, or a locked library that no
@@ -335,6 +406,12 @@ export interface InstallResult {
335
406
  * POSIX paths. Absent when every deployed copy already matched.
336
407
  */
337
408
  restored?: RestoredAsset[];
409
+ /**
410
+ * One line per locked library that is not registered here but whose assets `install --locked`
411
+ * restored from the lock `url:` with the locked hash: the notice that the library is not
412
+ * registered, and how to register it. Not a failure: `missing` stays empty (OQ8, p1655).
413
+ */
414
+ libraryNotices?: string[];
338
415
  /**
339
416
  * Rendered agent files that a lock without `rendered:` entries (written by a CLI before
340
417
  * 5.12.0) did not cover and that this run wrote with other content, because the render of
@@ -511,6 +588,12 @@ export interface RemoveResult {
511
588
  refs: string[];
512
589
  paths: string[];
513
590
  }[];
591
+ /**
592
+ * `mcp_servers` entries of `skaile.yaml` that were dropped with a removed `mcp-server` because
593
+ * they only set values for it (an `env` override with no `command` or `url` of its own), as
594
+ * `mcp_servers entry "<id>"`. An entry that can run alone stays.
595
+ */
596
+ droppedSettings?: string[];
514
597
  }
515
598
  /**
516
599
  * A missing dependency detected by `AssetManager.doctor()`.
@@ -557,6 +640,8 @@ export interface LockGap {
557
640
  message: string;
558
641
  /** Set when `skaile install` cannot fix the gap; `reason` then names what to change instead. */
559
642
  manualFix?: true;
643
+ /** Set on the gap of a `sources:` entry whose clone the walk could not read. `install --locked` restores from the lock alone, so it does not count that as missing. */
644
+ unreadableSource?: true;
560
645
  }
561
646
  /**
562
647
  * The project's state as {@link AssetManager.projectState} computes it: the one verdict
@@ -684,10 +769,7 @@ export interface AssetManagerOptions {
684
769
  */
685
770
  verboseCollisions?: boolean;
686
771
  }
687
- /** Canonical git URL identity for the bundled factory source. Never fetched —
688
- * the bytes live inside the package (`factory-assets/`); the URL is only the
689
- * match key the provenance walker and `candidateToCatalogEntry` key off. */
690
- export declare const FACTORY_SOURCE_URL = "https://github.com/skaile-ai/ai-assets";
772
+ export { FACTORY_SOURCE_URL };
691
773
  /**
692
774
  * Programmatic API for managing AI assets in a Skaile workspace.
693
775
  *
@@ -787,11 +869,41 @@ export declare class AssetManager {
787
869
  private entryHarnessRecord;
788
870
  /** Keep the entries a recorded `--harness` limit sends to `target` (all of them in project mode). */
789
871
  private entriesForHarness;
872
+ /**
873
+ * A 5.12.0 global record has no `global_asset_harnesses:` key, yet `add --global --harness`
874
+ * wrote one copy only. On the first global `install`, an entry with exactly one existing copy
875
+ * among several default harnesses is that harness's subset (OQ6): record it, so the install
876
+ * does not fan the asset out to harnesses the user never asked for (p1442). A copy under the
877
+ * 5.12.0 omp folder (`~/.omp/skills`) counts as an omp copy. Nothing is inferred once the key
878
+ * exists (an entry without a row then means "every harness"), with one default harness, or
879
+ * with no copy yet. Global mode only; returns the rows written.
880
+ */
881
+ private inferLegacyHarnessSubsets;
790
882
  /**
791
883
  * Set (or, with `harnesses` undefined, clear) the harness row of `ref` in the parsed
792
884
  * `~/.skaile/skaile.yaml` `raw`. Returns whether `raw` changed.
793
885
  */
794
886
  private setEntryHarnessRow;
887
+ /** The harness row of `kind:name` (publisher must agree when both sides have one) in the parsed `raw`. */
888
+ private harnessRowIn;
889
+ /**
890
+ * The harness row `add --global --harness <requested>` leaves for `ref`: the recorded set plus
891
+ * `requested`. An asset declared with no row goes to every global harness, so its set is that
892
+ * default; `undefined` (no row) when `requested` is already part of it. A new asset gets
893
+ * `requested` alone.
894
+ */
895
+ private widenedHarnessRow;
896
+ /**
897
+ * After `add --global --harness X`: widen the row of every other entry of the add that has one
898
+ * (a requirement declared on its own with `--harness`), so the copy now deployed into X stays
899
+ * managed. Entries with no row already go to every harness.
900
+ */
901
+ private widenDependencyRows;
902
+ /**
903
+ * `add --global --harness X --only`: name each harness that leaves the asset's set but still
904
+ * holds a copy. The copy stays on disk; `remove --global --harness <h>` deletes it.
905
+ */
906
+ private reportDroppedCopies;
795
907
  /**
796
908
  * Delete the copies a 5.12.0 global install left in `~/.omp/skills`, `~/.omp/agents`,
797
909
  * `~/.omp/prompts` and `~/.omp/contracts` (omp reads `~/.omp/agent/<dir>`) for the assets just
@@ -832,6 +944,10 @@ export declare class AssetManager {
832
944
  /** Deploy options for one harness. In global mode, `harness` is the
833
945
  * fan-out target (not the constructor's `harness`, which is project-only). */
834
946
  private deployOptsFor;
947
+ /** Agent name → the `../` compose folder files its lock entry records (`LockEntry.composed`). */
948
+ private composedRecords;
949
+ /** `install`'s `Missing:` line for a `../` compose folder the library moved past the lock. */
950
+ private composedDriftLine;
835
951
  /**
836
952
  * Names of the `mcp-server` assets the lock holds (the declaration ids, unscoped); a missing
837
953
  * `.mcp.json` entry of one counts as drift even before skaile owned it.
@@ -959,6 +1075,15 @@ export declare class AssetManager {
959
1075
  entry: CatalogEntry;
960
1076
  library: string;
961
1077
  }>>;
1078
+ /**
1079
+ * The version `add` deploys for each asset of a source clone registered as a `reader`
1080
+ * library, when its file declares none: the repo commit pseudo-version (p855). `search`
1081
+ * reads this where no project is in scope, so it lists what `add` locks, not the index
1082
+ * default.
1083
+ *
1084
+ * @returns `<library>\0<kind>:@<publisher>/<name>` -> version; only assets that declare none.
1085
+ */
1086
+ sourceAssetVersions(): Promise<Map<string, string>>;
962
1087
  /**
963
1088
  * Every origin that holds `ref` (`kind:@publisher/name`) with the version it holds, in
964
1089
  * the order `add <ref>` prefers them, so the first row is the one `add` deploys: the
@@ -1111,6 +1236,15 @@ export declare class AssetManager {
1111
1236
  * yields `null` — a lock/outdated read must never create `index.db` or throw.
1112
1237
  */
1113
1238
  private loadLibraryIndex;
1239
+ /**
1240
+ * Ids of the registered libraries that are the clone of a source this project does not
1241
+ * declare. `source add` registers the clone as a machine-wide reader library so `search`
1242
+ * and the indexer can read it, but a `sources:` clone belongs to the projects that declare
1243
+ * it (OQ12, p321): another project neither resolves it, nor ties with it by name, nor has
1244
+ * `update` re-pin its locked assets to it. A reader library the user registered by hand
1245
+ * (`library init --reader --git`) lives outside the sources cache and is never hidden.
1246
+ */
1247
+ undeclaredSourceClones(libraries: readonly Library[]): Set<string>;
1114
1248
  /**
1115
1249
  * Library-origin lock entries for the assets {@link resolveLibraryEntries}
1116
1250
  * matched. The locked version is the one actually deployed: the on-disk
@@ -1153,11 +1287,33 @@ export declare class AssetManager {
1153
1287
  * `install --locked`. An entry is restored only when its library is still
1154
1288
  * registered/on disk, still holds the asset, and still offers the locked
1155
1289
  * version; anything else is reported in `missing` with the reason.
1290
+ *
1291
+ * @param opts.storeFallback - `install --locked` only: an entry whose library is not registered
1292
+ * here is restored from a store that serves the locked sha256 (OQ15, p1490). Reads such as
1293
+ * the drift check never ask a store.
1156
1294
  */
1157
1295
  private restoreLibraryLockEntries;
1296
+ /**
1297
+ * Whether a library-origin lock entry was restored from its lock url: its library is not
1298
+ * registered here, and the project's store cache holds the locked version (`install --locked`
1299
+ * fetched and SHA-verified it there against the sha256 the lock recorded). Such an entry is
1300
+ * as restorable as a source- or store-origin one: `check` and `doctor` read its requirements
1301
+ * from the deployed copy and do not ask for the library (OQ8, p1655). An unregistered library
1302
+ * that never restored anything here stays a gap.
1303
+ */
1304
+ private restoredFromLockUrl;
1305
+ /**
1306
+ * The store's copy of a library-origin lock entry whose library is not registered here: a
1307
+ * store (project `stores:` or the global catalog) that serves `kind:@publisher/name#version`
1308
+ * under the very sha256 the lock recorded holds the same bytes. The entry is fetched and
1309
+ * verified like any store asset; the lock stays as it is. `null` when the lock has no hash,
1310
+ * no store answers, or the hash differs (OQ15, p1490).
1311
+ */
1312
+ private storeEntryForLockedLibraryAsset;
1158
1313
  /**
1159
1314
  * Whether a deployed copy exists for the lock entries `install` kept for the unresolved
1160
- * `ref`. A kind with no install target has no deployed copy.
1315
+ * `ref`. A kind with no install target has none, except an `mcp-server`: its copy is the
1316
+ * `.mcp.json` entry skaile wrote and the payload that entry points into (p792).
1161
1317
  */
1162
1318
  private keptCopyDeployed;
1163
1319
  /** Whether the deployed copy of a library asset is on disk; a kind with no install target has none to check. */
@@ -1205,6 +1361,12 @@ export declare class AssetManager {
1205
1361
  * exactly one locked asset.
1206
1362
  */
1207
1363
  lockedRefsNamed(kind: string, name: string): string[];
1364
+ /**
1365
+ * The library a library-origin lock entry of `kind` and `name` (and `publisher`, when given)
1366
+ * resolves to on this machine, or `undefined` when the lock holds no such entry, it is not
1367
+ * from a library, or its library is not here. `info` prints it next to `source:`.
1368
+ */
1369
+ lockedLibraryOf(kind: string, name: string, publisher?: string): Promise<string | undefined>;
1208
1370
  /**
1209
1371
  * Where each library-origin lock entry of this project resolves on this machine: identity
1210
1372
  * `kind:publisher/name` (no scope sigil, no version) → the name the locked library is
@@ -1223,6 +1385,24 @@ export declare class AssetManager {
1223
1385
  * ({@link lockedLibraryNames}, a `library rename` followed) and the sha256 it locked.
1224
1386
  */
1225
1387
  private lockedPreference;
1388
+ /**
1389
+ * Canonical refs of the locked source assets that share a source URL with `resolved` but
1390
+ * are locked at another commit than the one `resolved` carries for it. Assets in `resolved`
1391
+ * and library-origin entries are skipped.
1392
+ */
1393
+ private staleSourceSiblingRefs;
1394
+ /**
1395
+ * The lock entries that came from a source or the store (a `source:`, no `library:`), by
1396
+ * identity `<publisher>/<kind>:<name>` -> locked version. The lock's origin
1397
+ * wins: a library registered later that holds the same ref does not take such an asset
1398
+ * (`update`, `install`, `add`; OQ15, p1490).
1399
+ */
1400
+ private lockedOriginVersions;
1401
+ /**
1402
+ * Say which registered library holds a ref the lock keeps on its source or the store: the
1403
+ * candidate that lost, with the way to switch (p1490). Printed once per `add`.
1404
+ */
1405
+ private noteLosingLibraries;
1226
1406
  /** A candidate's stable identity key (`<publisher>/<kind>:<name>@<version>`). */
1227
1407
  private candidateKey;
1228
1408
  /**
@@ -1399,6 +1579,45 @@ export declare class AssetManager {
1399
1579
  * from the lock are named, nothing is removed, and `--force` prunes anyway (OQ6).
1400
1580
  */
1401
1581
  private assertNoHandEditsPruned;
1582
+ /**
1583
+ * Report (and, without `force`, guard) the files a re-lock deletes from a deployed copy
1584
+ * (OQ5, p1441): the asset is locked already and its library or source now holds other content
1585
+ * (`next` re-locks it), and the deployed folder holds files the new content does not ship. The
1586
+ * deploy clears them. Two cases:
1587
+ * - the deployed copy still equals what `prevLock` recorded (per-file sha256 for a source
1588
+ * or store asset, the library hash for a library asset): the new version dropped those
1589
+ * files, nobody edited them, so they are deleted and come back as `removed` rows (an
1590
+ * `install`/`update` prints `Removed <file> (not part of <ref>)`), without a refusal;
1591
+ * - the copy diverged (a file the previous content did not ship, an edited file, or no hash
1592
+ * to compare): without `force` this throws one error naming the files and changes nothing.
1593
+ * A source or store asset names only the files the previous content did not ship (or that
1594
+ * were edited); a library asset records no file list, so it names every file to delete.
1595
+ *
1596
+ * @param entries - The catalog entries about to be deployed.
1597
+ * @param next - The lock the run is about to write (or merge).
1598
+ * @param libraryOf - The library each library-origin entry came from.
1599
+ */
1600
+ private relockDeletions;
1601
+ /**
1602
+ * Stop `install` from overwriting a hand-edited rendered agent file that no lock entry
1603
+ * records (OQ5, p1440): the lock is gone (or never held the agent), so nothing tells an edit
1604
+ * from a stale render, and the deploy would replace the file without a word. Checks the file
1605
+ * named after each agent about to be deployed and the file of each agent instance whose bound
1606
+ * agent has no lock entry. Throws one error naming each file that exists and differs from its
1607
+ * render and changes nothing; `--force` (the caller skips this check) overwrites. A file that
1608
+ * equals its render is not an edit. Project mode only.
1609
+ */
1610
+ private assertNoUnrecordedAgentOverwrite;
1611
+ /**
1612
+ * Stop a re-lock from replacing a hand edit of a deployed copy (OQ6, p1641): the asset is locked
1613
+ * already, its library or source now holds other content (`next` re-locks it), and a deployed
1614
+ * file differs from what the lock covers and from the new content. The deploy would replace
1615
+ * the file without a word. Throws one error naming each file and changes nothing; `--force`
1616
+ * (the caller skips this check) replaces them. An agent's rendered files are compared with the
1617
+ * hashes the lock records. A file the new content brings back byte for byte loses nothing.
1618
+ * Project mode only.
1619
+ */
1620
+ private assertNoHandEditsOverwritten;
1402
1621
  /**
1403
1622
  * Remove stale assets — those recorded in the old lock but absent from the
1404
1623
  * newly resolved set (`resolved` source candidates plus `keep`, the canonical
@@ -1440,6 +1659,12 @@ export declare class AssetManager {
1440
1659
  */
1441
1660
  private adviseMissing;
1442
1661
  private installLocked;
1662
+ /**
1663
+ * One notice line per locked library that is not registered here and whose assets
1664
+ * `install --locked` restored from the lock url: names the library, how many assets came from
1665
+ * the url, and how to register the library to move the lock later (OQ8, p1655).
1666
+ */
1667
+ private lockUrlRestoreNotices;
1443
1668
  /**
1444
1669
  * The versions of `parsed`'s name that a source, a library or a store holds, newest first,
1445
1670
  * for the `Asset not found` of a pinned ref. Empty for an unpinned ref (nothing was ruled
@@ -1447,6 +1672,25 @@ export declare class AssetManager {
1447
1672
  * adds nothing here: its failure is reported by the caller.
1448
1673
  */
1449
1674
  private availableVersions;
1675
+ /**
1676
+ * The refs of the other kinds that a source or a library holds under the same publisher and
1677
+ * name as `parsed` (`agent:@pub/captain` for a `@pub/captain` that is no skill), for the
1678
+ * `Did you mean` of an `add` that missed.
1679
+ */
1680
+ private otherKindRefs;
1681
+ /**
1682
+ * The `Did you mean agent:@pub/name?` sentence for a ref written without a kind (`@pub/name`,
1683
+ * which means `skill`) that names no asset: the refs of other kinds under the same name that
1684
+ * a source, a library, the lock or `skaile.yaml` holds (p1425). `undefined` when the ref has a
1685
+ * kind or nothing of another kind answers to it. `add`, `diff`, `update`, `info`, `remove` and
1686
+ * `why` end their not-found line with it.
1687
+ */
1688
+ otherKindHint(ref: string): Promise<string | undefined>;
1689
+ /**
1690
+ * What `add` would deploy for the resolved candidates and library entries, without touching
1691
+ * the project: one item per asset with its origin, version, deploy folders and files.
1692
+ */
1693
+ private planAddItems;
1450
1694
  /**
1451
1695
  * Parse the ref `add` was given. A ref the grammar rejects fails with the parser's message
1452
1696
  * minus its manifest-migration advice (it points at a skill that is not for `add`), and:
@@ -1499,6 +1743,14 @@ export declare class AssetManager {
1499
1743
  force?: boolean;
1500
1744
  /** Called per `.env` file in an asset's directory that a copy deploy leaves out. */
1501
1745
  onSecretFile?: (ref: string, path: string) => void;
1746
+ /** Resolve and check everything, write nothing, and hand the plan to `onPlan`. */
1747
+ dryRun?: boolean;
1748
+ /** Global `--harness`: replace the recorded harness set instead of adding to it (`--only`). */
1749
+ only?: boolean;
1750
+ /** With `only`: called per harness that drops out of the set but still holds a copy. */
1751
+ onDroppedCopy?: (ref: string, harness: HarnessName, path: string) => void;
1752
+ /** Called once with the plan of a `dryRun` add. */
1753
+ onPlan?: (plan: AddPlanItem[]) => void;
1502
1754
  }): Promise<string[]>;
1503
1755
  /**
1504
1756
  * Report the body-link **soft dependencies** of the given assets that are not
@@ -1664,6 +1916,13 @@ export declare class AssetManager {
1664
1916
  * @throws On a malformed ref, or when a short ref matches more than one asset.
1665
1917
  */
1666
1918
  private resolveRemoveTarget;
1919
+ /**
1920
+ * The refs among `refs` (`skill:@publisher/name`, `skill:name`, with or without `#version`)
1921
+ * that are not deployed for this manager's harnesses and scope, judged as `check` judges a
1922
+ * requirement. A ref that does not parse or names a kind this build does not install is
1923
+ * never reported. `run <flow> --dry-run` names the node skills a flow still lacks (p1757).
1924
+ */
1925
+ undeployedSkills(refs: readonly string[]): string[];
1667
1926
  /**
1668
1927
  * The reverse guard of {@link removeWithDependencies}: which other locked assets (and
1669
1928
  * declared presets) require `target`. Their requirements are read the way {@link lockedGraph}
@@ -1693,6 +1952,16 @@ export declare class AssetManager {
1693
1952
  * it is kept and named in `opts.kept` unless `opts.force`.
1694
1953
  */
1695
1954
  private removeResolved;
1955
+ /**
1956
+ * After an `mcp-server` asset left the project: drop what would keep it rendered. Its staged
1957
+ * store bytes under `.skaile/cache/store/<publisher>/mcp-server/<name>/` go (an `mcp_servers:`
1958
+ * entry of the same id would otherwise keep loading them), and so does an `mcp_servers:` entry
1959
+ * that only sets values for it: `env` and the like, with no `command`, `url` or recipe of its
1960
+ * own. An entry that can run alone is the user's own server and stays.
1961
+ *
1962
+ * @returns The dropped `mcp_servers` entries, as `mcp_servers entry "<id>"`.
1963
+ */
1964
+ private dropRemovedMcpServerSettings;
1696
1965
  /**
1697
1966
  * After `remove --global --harness X`: the harnesses outside `X` that still hold a copy of the
1698
1967
  * asset, or `undefined` when none does (or this is not a harness-limited global remove).
@@ -1760,15 +2029,21 @@ export declare class AssetManager {
1760
2029
  listDeployed(kind?: string): CatalogEntry[];
1761
2030
  /**
1762
2031
  * Tracked assets (`skaile.lock.yaml` or declared in `skaile.yaml`) whose copy
1763
- * still sits in the project's `.claude/…` dirs although this manager deploys
1764
- * to another harness. Before the default followed the configured harness every
1765
- * project deployed to `.claude/`, so an omp/codex project upgraded from then
1766
- * holds orphans there that `remove` / `clean` / `list` no longer look at.
2032
+ * still sits in the project dirs of another harness (`.claude/…`, `.omp/…`,
2033
+ * `.codex/…`) although this manager deploys to {@link AssetManager.harness}.
2034
+ * A project that moved with `skaile harness set` holds orphans there that
2035
+ * `remove` / `clean` / `list` no longer look at.
1767
2036
  *
1768
- * Read-only: nothing is deleted. Empty for `claude-code`, for global mode, and
1769
- * for kinds whose dir is shared with the active target (flows).
2037
+ * Read-only: nothing is deleted. Empty for global mode and for kinds whose
2038
+ * dir is shared with the active target (flows).
1770
2039
  *
1771
- * @returns One {@link LegacyDeployedAsset} per stale copy, sorted by kind then name.
2040
+ * @returns One {@link StaleHarnessCopy} per stale copy, sorted by harness, kind, then name.
2041
+ */
2042
+ listStaleHarnessCopies(): StaleHarnessCopy[];
2043
+ /**
2044
+ * @deprecated Use {@link AssetManager.listStaleHarnessCopies}, which covers every
2045
+ * other harness folder. This returns only its `.claude/` rows (the old default
2046
+ * deploy dir), in the old shape.
1772
2047
  */
1773
2048
  listLegacyClaudeDeployed(): LegacyDeployedAsset[];
1774
2049
  /**
@@ -1927,6 +2202,11 @@ export declare class AssetManager {
1927
2202
  * @returns Array of {@link OutdatedEntry} objects.
1928
2203
  */
1929
2204
  outdated(): Promise<OutdatedEntry[]>;
2205
+ /**
2206
+ * The `#pin` of every publisher-qualified `skaile.yaml` dependency, keyed `kind:publisher/name`
2207
+ * (no scope sigil). `update` honours it, so `outdated` must not list a move it keeps.
2208
+ */
2209
+ private declaredPinsByIdentity;
1930
2210
  /**
1931
2211
  * List a locked asset whose `skaile.yaml` ref carries a `#version` pin while a source, a
1932
2212
  * library or a store holds a newer one: `locked 0.7.0 -> 0.9.0 (pinned)`. The pin is the
@@ -2090,6 +2370,12 @@ export declare class AssetManager {
2090
2370
  * @returns The {@link ProjectState}; `gaps` is empty when the project is as declared and locked.
2091
2371
  */
2092
2372
  projectState(): Promise<ProjectState>;
2373
+ /**
2374
+ * The first `../` compose folder of the locked library agent `kind:name` whose library copy
2375
+ * changed since the lock, or `undefined` (project scope only). `install --locked` cannot
2376
+ * restore such an agent; `update` moves the lock to the library's copy.
2377
+ */
2378
+ private lockedComposeDrift;
2093
2379
  /**
2094
2380
  * Why the `agent:` ref of agent instance `id` binds to nothing, as the phrase that follows
2095
2381
  * the ref in a {@link LockGap}; see {@link AssetManager.unboundAgentAdvice}.
@@ -2141,12 +2427,23 @@ export declare class AssetManager {
2141
2427
  * The locked source assets whose source is no longer in `skaile.yaml` `sources:` (`source
2142
2428
  * remove`, a hand edit), keyed by lock key. ONE sentence for it: `check`, `doctor`, `outdated`,
2143
2429
  * `install`, `install --locked` and `update` all say it (p1062), and none re-clones the source.
2144
- * A source of a store-resolved lock entry is not told apart from one, so no GitHub source is
2145
- * called missing while a `stores:` entry exists.
2430
+ * A GitHub lock entry that no source declares counts as store-supplied only when a store
2431
+ * lists the ref (OQ3): a configured store alone proves nothing, as it may never have held
2432
+ * the asset. `check`, `doctor` and `outdated` read the store's cached catalog and never touch
2433
+ * the network; `install` and `update` (`online`) ask the store itself.
2146
2434
  *
2147
2435
  * @param inScope - Only these lock keys count (`install` prunes an undeclared entry as usual).
2436
+ * @param online - Ask the stores when the cached catalog does not list the ref.
2148
2437
  */
2149
2438
  private orphanedSourceGaps;
2439
+ /**
2440
+ * `true` when one of `stores` lists `ref` (a canonical lock key): its cached catalog holds it
2441
+ * or, with `online`, the store answers for it. An injected store fetcher is the store client
2442
+ * itself, so it is asked either way. A store an online install cannot ask (unreachable,
2443
+ * air-gapped, `--no-catalog`) may hold the ref; `check` never asks, so a store lists only what
2444
+ * its cached catalog holds.
2445
+ */
2446
+ private storeListsRef;
2150
2447
  /**
2151
2448
  * Locked source assets whose source cannot supply them any more: the source is no longer in
2152
2449
  * `skaile.yaml` `sources:` (`source remove`, a hand edit), or it is there but now publishes
@@ -2163,11 +2460,24 @@ export declare class AssetManager {
2163
2460
  * `kind:@publisher/name`. `skaile source remove` refuses while this list is not empty.
2164
2461
  */
2165
2462
  lockedFromSource(url: string): string[];
2463
+ /**
2464
+ * Record, on every library-origin entry of `lock` that is copied into a harness folder, the
2465
+ * files of the deployed copy and their sha256 (`LockEntry.copied`), so a hand edit is named
2466
+ * even after the library moved past the lock (p1641). Call it after the deploy. An entry that
2467
+ * is unchanged since `prev` keeps its record, or stays without one: the deployed bytes may
2468
+ * carry an edit the deploy did not touch. Project mode only; a `--link` deploy and a patched
2469
+ * asset are not recorded.
2470
+ */
2471
+ private withCopiedFiles;
2166
2472
  /**
2167
2473
  * Record, on every agent entry of `lock` that has none, the files the agent's harness
2168
2474
  * rendering occupies and their sha256. Call it after the deploy, so the bytes hashed are the
2169
2475
  * ones `install` just wrote; {@link lockedCopyDrift} compares later edits with them.
2170
2476
  * Entries that carry a record (kept from an earlier lock) are left as they are.
2477
+ *
2478
+ * @param keepComposedOf - The lock an `install` read: an agent whose `../` compose folder is
2479
+ * not in the cache keeps that lock's `composed:` record. Omitted by `update` and `add`,
2480
+ * which copy the library's current bytes.
2171
2481
  */
2172
2482
  private withRenderedAgents;
2173
2483
  /**
@@ -2204,6 +2514,16 @@ export declare class AssetManager {
2204
2514
  * deploy just wrote again: those whose ref is among the `deployed` canonical refs.
2205
2515
  */
2206
2516
  private restoredCopies;
2517
+ /**
2518
+ * Hand edits in the deployed copy of a library asset whose library moved past the lock (a
2519
+ * version bump, or an in-place edit of the same version): {@link restoreLibraryLockEntries}
2520
+ * drops such an entry, so {@link lockedCopyDrift} would not see the edit and `update` would
2521
+ * replace the file without a word (p1641). `covered` holds the `kind:@publisher/name` of the
2522
+ * entries that were compared already. The lock's per-file record (`copied:`) names the edited
2523
+ * files; a lock without one (written before it existed) compares the deployed folder with the
2524
+ * one library hash and names the files that also differ from the library's new content.
2525
+ */
2526
+ private changedLibraryCopyEdits;
2207
2527
  /**
2208
2528
  * Locked assets whose deployed copy differs from the bytes the lock covers: a file edited by
2209
2529
  * hand, or a file the asset does not ship. One row per asset, `ref` being `kind:@publisher/name`