@skaile/workspaces 6.14.0 → 6.16.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 (447) hide show
  1. package/CHANGELOG.md +83 -0
  2. package/dist/agent-file-refresh-76NNFB4W.js +89 -0
  3. package/dist/agent-file-refresh-76NNFB4W.js.map +1 -0
  4. package/dist/ai-sdk.js +8 -7
  5. package/dist/ai-sdk.js.map +1 -1
  6. package/dist/app-sdk/index.js +1 -1
  7. package/dist/{asset-feeds-DOG5FK7T.js → asset-feeds-ON7FYHHF.js} +25 -23
  8. package/dist/asset-feeds-ON7FYHHF.js.map +1 -0
  9. package/dist/asset-manager/catalog-deployer.js +8 -7
  10. package/dist/asset-manager/history.js +7 -6
  11. package/dist/asset-manager/index.js +17 -15
  12. package/dist/asset-manager/installer.js +16 -9
  13. package/dist/asset-manager/renderers.js +8 -8
  14. package/dist/asset-manager/src/add-remove/add.d.ts +134 -0
  15. package/dist/asset-manager/src/add-remove/add.d.ts.map +1 -0
  16. package/dist/asset-manager/src/add-remove/remove.d.ts +329 -0
  17. package/dist/asset-manager/src/add-remove/remove.d.ts.map +1 -0
  18. package/dist/asset-manager/src/agent-render.d.ts +116 -0
  19. package/dist/asset-manager/src/agent-render.d.ts.map +1 -0
  20. package/dist/asset-manager/src/composed-blocks.d.ts +40 -0
  21. package/dist/asset-manager/src/composed-blocks.d.ts.map +1 -0
  22. package/dist/asset-manager/src/config/core.d.ts +297 -0
  23. package/dist/asset-manager/src/config/core.d.ts.map +1 -0
  24. package/dist/asset-manager/src/config/edit.d.ts +161 -0
  25. package/dist/asset-manager/src/config/edit.d.ts.map +1 -0
  26. package/dist/asset-manager/src/index.d.ts +31 -2961
  27. package/dist/asset-manager/src/index.d.ts.map +1 -1
  28. package/dist/asset-manager/src/install/clone-commit-fetcher.d.ts +11 -0
  29. package/dist/asset-manager/src/install/clone-commit-fetcher.d.ts.map +1 -0
  30. package/dist/asset-manager/src/install/install.d.ts +151 -0
  31. package/dist/asset-manager/src/install/install.d.ts.map +1 -0
  32. package/dist/asset-manager/src/install/restore.d.ts +76 -0
  33. package/dist/asset-manager/src/install/restore.d.ts.map +1 -0
  34. package/dist/asset-manager/src/install-agent.d.ts +52 -4
  35. package/dist/asset-manager/src/install-agent.d.ts.map +1 -1
  36. package/dist/asset-manager/src/install-instances.d.ts +70 -2
  37. package/dist/asset-manager/src/install-instances.d.ts.map +1 -1
  38. package/dist/asset-manager/src/installer.d.ts +54 -4
  39. package/dist/asset-manager/src/installer.d.ts.map +1 -1
  40. package/dist/asset-manager/src/lock/copies.d.ts +156 -0
  41. package/dist/asset-manager/src/lock/copies.d.ts.map +1 -0
  42. package/dist/asset-manager/src/lock/library.d.ts +261 -0
  43. package/dist/asset-manager/src/lock/library.d.ts.map +1 -0
  44. package/dist/asset-manager/src/mcp-render.d.ts +86 -0
  45. package/dist/asset-manager/src/mcp-render.d.ts.map +1 -0
  46. package/dist/asset-manager/src/omp-sweep.d.ts +25 -0
  47. package/dist/asset-manager/src/omp-sweep.d.ts.map +1 -0
  48. package/dist/asset-manager/src/read/diff.d.ts +109 -0
  49. package/dist/asset-manager/src/read/diff.d.ts.map +1 -0
  50. package/dist/asset-manager/src/read/doctor.d.ts +116 -0
  51. package/dist/asset-manager/src/read/doctor.d.ts.map +1 -0
  52. package/dist/asset-manager/src/read/gaps.d.ts +120 -0
  53. package/dist/asset-manager/src/read/gaps.d.ts.map +1 -0
  54. package/dist/asset-manager/src/read/graph.d.ts +69 -0
  55. package/dist/asset-manager/src/read/graph.d.ts.map +1 -0
  56. package/dist/asset-manager/src/read/outdated.d.ts +152 -0
  57. package/dist/asset-manager/src/read/outdated.d.ts.map +1 -0
  58. package/dist/asset-manager/src/read/state.d.ts +265 -0
  59. package/dist/asset-manager/src/read/state.d.ts.map +1 -0
  60. package/dist/asset-manager/src/renderers.d.ts +11 -1
  61. package/dist/asset-manager/src/renderers.d.ts.map +1 -1
  62. package/dist/asset-manager/src/resolve/guards.d.ts +167 -0
  63. package/dist/asset-manager/src/resolve/guards.d.ts.map +1 -0
  64. package/dist/asset-manager/src/resolve/scan.d.ts +222 -0
  65. package/dist/asset-manager/src/resolve/scan.d.ts.map +1 -0
  66. package/dist/asset-manager/src/resolve/stores.d.ts +176 -0
  67. package/dist/asset-manager/src/resolve/stores.d.ts.map +1 -0
  68. package/dist/asset-manager/src/shared/files.d.ts +42 -0
  69. package/dist/asset-manager/src/shared/files.d.ts.map +1 -0
  70. package/dist/asset-manager/src/shared/library-hooks.d.ts +16 -0
  71. package/dist/asset-manager/src/shared/library-hooks.d.ts.map +1 -0
  72. package/dist/asset-manager/src/shared/library.d.ts +96 -0
  73. package/dist/asset-manager/src/shared/library.d.ts.map +1 -0
  74. package/dist/asset-manager/src/shared/refs.d.ts +101 -0
  75. package/dist/asset-manager/src/shared/refs.d.ts.map +1 -0
  76. package/dist/asset-manager/src/shared/types.d.ts +399 -0
  77. package/dist/asset-manager/src/shared/types.d.ts.map +1 -0
  78. package/dist/bridge/harnesses/claude-sdk.js +13 -19
  79. package/dist/bridge/harnesses/claude-sdk.js.map +1 -1
  80. package/dist/bridge/harnesses/codex.js +10 -10
  81. package/dist/bridge/harnesses/continue.js +12 -16
  82. package/dist/bridge/harnesses/continue.js.map +1 -1
  83. package/dist/bridge/harnesses/echo.js +5 -10
  84. package/dist/bridge/harnesses/echo.js.map +1 -1
  85. package/dist/bridge/harnesses/gemini.js +5 -5
  86. package/dist/bridge/harnesses/goose.js +13 -17
  87. package/dist/bridge/harnesses/goose.js.map +1 -1
  88. package/dist/bridge/harnesses/omp.js +7 -13
  89. package/dist/bridge/harnesses/omp.js.map +1 -1
  90. package/dist/bridge/harnesses/opencode.js +13 -17
  91. package/dist/bridge/harnesses/opencode.js.map +1 -1
  92. package/dist/bridge/harnesses/qwen.js +6 -11
  93. package/dist/bridge/harnesses/qwen.js.map +1 -1
  94. package/dist/bridge/index.js +18 -18
  95. package/dist/bridge/src/codex/managed-harness.d.ts.map +1 -1
  96. package/dist/bridge/src/driver-contract.d.ts +72 -0
  97. package/dist/bridge/src/driver-contract.d.ts.map +1 -0
  98. package/dist/bridge/src/harness-model-check.d.ts +1 -1
  99. package/dist/bridge/src/harness-model-check.d.ts.map +1 -1
  100. package/dist/bridge/src/harnesses/_subprocess-cli.d.ts +8 -0
  101. package/dist/bridge/src/harnesses/_subprocess-cli.d.ts.map +1 -1
  102. package/dist/bridge/src/harnesses/claude-sdk.d.ts.map +1 -1
  103. package/dist/bridge/src/harnesses/codex.d.ts +2 -0
  104. package/dist/bridge/src/harnesses/codex.d.ts.map +1 -1
  105. package/dist/bridge/src/harnesses/continue.d.ts.map +1 -1
  106. package/dist/bridge/src/harnesses/echo.d.ts.map +1 -1
  107. package/dist/bridge/src/harnesses/gemini.d.ts.map +1 -1
  108. package/dist/bridge/src/harnesses/goose.d.ts.map +1 -1
  109. package/dist/bridge/src/harnesses/omp.d.ts.map +1 -1
  110. package/dist/bridge/src/harnesses/opencode.d.ts.map +1 -1
  111. package/dist/bridge/src/harnesses/qwen.d.ts.map +1 -1
  112. package/dist/bridge/src/index.d.ts +2 -0
  113. package/dist/bridge/src/index.d.ts.map +1 -1
  114. package/dist/bridge/src/preflight.d.ts +114 -0
  115. package/dist/bridge/src/preflight.d.ts.map +1 -0
  116. package/dist/bridge/src/registry.d.ts +12 -0
  117. package/dist/bridge/src/registry.d.ts.map +1 -1
  118. package/dist/{chunk-7UBCUKJO.js → chunk-2JUCWMIS.js} +8808 -8337
  119. package/dist/chunk-2JUCWMIS.js.map +1 -0
  120. package/dist/{chunk-VS6XC5JE.js → chunk-2MTRRK37.js} +3 -3
  121. package/dist/{chunk-VS6XC5JE.js.map → chunk-2MTRRK37.js.map} +1 -1
  122. package/dist/chunk-2PJYJPDE.js +3 -0
  123. package/dist/chunk-2PJYJPDE.js.map +1 -0
  124. package/dist/{chunk-ZQL6HGTW.js → chunk-2SSG5B24.js} +4 -4
  125. package/dist/{chunk-ZQL6HGTW.js.map → chunk-2SSG5B24.js.map} +1 -1
  126. package/dist/{chunk-WDG5IVEA.js → chunk-2ZDZJ7XQ.js} +3 -3
  127. package/dist/{chunk-WDG5IVEA.js.map → chunk-2ZDZJ7XQ.js.map} +1 -1
  128. package/dist/{chunk-V2VDTQ7A.js → chunk-3A7JUOY2.js} +3 -3
  129. package/dist/{chunk-V2VDTQ7A.js.map → chunk-3A7JUOY2.js.map} +1 -1
  130. package/dist/chunk-3LAJJURV.js +26 -0
  131. package/dist/chunk-3LAJJURV.js.map +1 -0
  132. package/dist/{chunk-X66KSHZF.js → chunk-3UYKT62L.js} +5 -5
  133. package/dist/{chunk-X66KSHZF.js.map → chunk-3UYKT62L.js.map} +1 -1
  134. package/dist/{chunk-J3FJTH3V.js → chunk-4X5WXQV7.js} +4 -4
  135. package/dist/{chunk-J3FJTH3V.js.map → chunk-4X5WXQV7.js.map} +1 -1
  136. package/dist/chunk-4ZNKEDYH.js +887 -0
  137. package/dist/chunk-4ZNKEDYH.js.map +1 -0
  138. package/dist/{chunk-DYH3VSPU.js → chunk-65SOXO7I.js} +20 -14
  139. package/dist/chunk-65SOXO7I.js.map +1 -0
  140. package/dist/{chunk-MVUXBWNW.js → chunk-6HTN2UIJ.js} +3 -3
  141. package/dist/{chunk-MVUXBWNW.js.map → chunk-6HTN2UIJ.js.map} +1 -1
  142. package/dist/{chunk-4SSTREBO.js → chunk-6KV34G6A.js} +8 -8
  143. package/dist/{chunk-4SSTREBO.js.map → chunk-6KV34G6A.js.map} +1 -1
  144. package/dist/{chunk-YNQRVTXH.js → chunk-6M44OQKH.js} +40 -44
  145. package/dist/chunk-6M44OQKH.js.map +1 -0
  146. package/dist/{chunk-B6W5DCH5.js → chunk-72DYHOO2.js} +24 -25
  147. package/dist/chunk-72DYHOO2.js.map +1 -0
  148. package/dist/{chunk-RRAXV5LE.js → chunk-7IW5E6LB.js} +43 -48
  149. package/dist/chunk-7IW5E6LB.js.map +1 -0
  150. package/dist/{chunk-BNLXZXZN.js → chunk-BRAOB37W.js} +97 -47
  151. package/dist/chunk-BRAOB37W.js.map +1 -0
  152. package/dist/{chunk-ZLDAPZIX.js → chunk-BTMSHGN3.js} +4 -4
  153. package/dist/{chunk-ZLDAPZIX.js.map → chunk-BTMSHGN3.js.map} +1 -1
  154. package/dist/{chunk-7K73MCI6.js → chunk-CU5WY6HN.js} +3 -3
  155. package/dist/{chunk-7K73MCI6.js.map → chunk-CU5WY6HN.js.map} +1 -1
  156. package/dist/{chunk-G2ZWIYZR.js → chunk-DFFJKGCW.js} +3 -3
  157. package/dist/{chunk-G2ZWIYZR.js.map → chunk-DFFJKGCW.js.map} +1 -1
  158. package/dist/{chunk-CG63XGVV.js → chunk-EGKCKWWE.js} +3 -3
  159. package/dist/{chunk-CG63XGVV.js.map → chunk-EGKCKWWE.js.map} +1 -1
  160. package/dist/{chunk-CJO3XKO7.js → chunk-ETGC2MEM.js} +4 -4
  161. package/dist/{chunk-CJO3XKO7.js.map → chunk-ETGC2MEM.js.map} +1 -1
  162. package/dist/{chunk-CFRHYD4C.js → chunk-FPG36VC4.js} +8 -13
  163. package/dist/chunk-FPG36VC4.js.map +1 -0
  164. package/dist/{chunk-SBAUZ7XH.js → chunk-H3PY5DFL.js} +4 -4
  165. package/dist/{chunk-SBAUZ7XH.js.map → chunk-H3PY5DFL.js.map} +1 -1
  166. package/dist/{chunk-7HRZACI4.js → chunk-HW4BDJPC.js} +17 -6
  167. package/dist/chunk-HW4BDJPC.js.map +1 -0
  168. package/dist/{chunk-GJT2Q5XD.js → chunk-HXST2IYJ.js} +3 -3
  169. package/dist/{chunk-GJT2Q5XD.js.map → chunk-HXST2IYJ.js.map} +1 -1
  170. package/dist/{chunk-7VBD5XUM.js → chunk-IG4YQ7ER.js} +32 -90
  171. package/dist/chunk-IG4YQ7ER.js.map +1 -0
  172. package/dist/{chunk-DWPQBMCY.js → chunk-JPV4WE5L.js} +2 -2
  173. package/dist/{chunk-DWPQBMCY.js.map → chunk-JPV4WE5L.js.map} +1 -1
  174. package/dist/{chunk-OC3AIMZH.js → chunk-KDRA6FYE.js} +120 -211
  175. package/dist/chunk-KDRA6FYE.js.map +1 -0
  176. package/dist/{chunk-KOI7QFDH.js → chunk-M7XIYHWB.js} +3 -3
  177. package/dist/{chunk-KOI7QFDH.js.map → chunk-M7XIYHWB.js.map} +1 -1
  178. package/dist/{chunk-7LJUK5JK.js → chunk-MG6QD7GE.js} +201 -43
  179. package/dist/chunk-MG6QD7GE.js.map +1 -0
  180. package/dist/{chunk-XHLRMUMO.js → chunk-NAQXDTF3.js} +3 -3
  181. package/dist/{chunk-XHLRMUMO.js.map → chunk-NAQXDTF3.js.map} +1 -1
  182. package/dist/{chunk-YJAKSCCN.js → chunk-NJ6UCY2B.js} +3 -3
  183. package/dist/{chunk-YJAKSCCN.js.map → chunk-NJ6UCY2B.js.map} +1 -1
  184. package/dist/{chunk-OKPITFE3.js → chunk-NNJQQYHY.js} +2 -2
  185. package/dist/{chunk-OKPITFE3.js.map → chunk-NNJQQYHY.js.map} +1 -1
  186. package/dist/{chunk-QNHW26AT.js → chunk-OD4N5O7V.js} +4 -4
  187. package/dist/{chunk-QNHW26AT.js.map → chunk-OD4N5O7V.js.map} +1 -1
  188. package/dist/{chunk-F7WMHDTV.js → chunk-P6FJDT35.js} +27 -7
  189. package/dist/chunk-P6FJDT35.js.map +1 -0
  190. package/dist/{chunk-IOXFT5D7.js → chunk-PD42JZWI.js} +3 -3
  191. package/dist/{chunk-IOXFT5D7.js.map → chunk-PD42JZWI.js.map} +1 -1
  192. package/dist/{chunk-MS2IXLTC.js → chunk-PMXTBWFD.js} +27 -7
  193. package/dist/chunk-PMXTBWFD.js.map +1 -0
  194. package/dist/{chunk-NAAFRZTA.js → chunk-PPSSDUN6.js} +3 -3
  195. package/dist/{chunk-NAAFRZTA.js.map → chunk-PPSSDUN6.js.map} +1 -1
  196. package/dist/{chunk-LMUNQYJQ.js → chunk-PRB67LCK.js} +127 -18
  197. package/dist/chunk-PRB67LCK.js.map +1 -0
  198. package/dist/{chunk-RLV3FF4I.js → chunk-QUIK7L3Z.js} +11 -11
  199. package/dist/{chunk-RLV3FF4I.js.map → chunk-QUIK7L3Z.js.map} +1 -1
  200. package/dist/{chunk-DRUAQ7IY.js → chunk-QUPZKTF3.js} +9 -8
  201. package/dist/chunk-QUPZKTF3.js.map +1 -0
  202. package/dist/{chunk-7FXOOUOC.js → chunk-RPRMD7XV.js} +27 -11
  203. package/dist/chunk-RPRMD7XV.js.map +1 -0
  204. package/dist/{chunk-3BRBTQ6M.js → chunk-S3UOZBGE.js} +20 -3
  205. package/dist/chunk-S3UOZBGE.js.map +1 -0
  206. package/dist/{chunk-LQWOU7S2.js → chunk-SFBLZOV5.js} +3 -3
  207. package/dist/{chunk-LQWOU7S2.js.map → chunk-SFBLZOV5.js.map} +1 -1
  208. package/dist/{chunk-EB2LKPI6.js → chunk-SMFZ5YGN.js} +4 -4
  209. package/dist/{chunk-EB2LKPI6.js.map → chunk-SMFZ5YGN.js.map} +1 -1
  210. package/dist/{chunk-243Z3BNB.js → chunk-SX54OQQT.js} +4 -4
  211. package/dist/{chunk-243Z3BNB.js.map → chunk-SX54OQQT.js.map} +1 -1
  212. package/dist/{chunk-2PVYDAFN.js → chunk-T65N4CIZ.js} +3 -3
  213. package/dist/{chunk-2PVYDAFN.js.map → chunk-T65N4CIZ.js.map} +1 -1
  214. package/dist/{chunk-QBLS7X3Z.js → chunk-TVRL3IPZ.js} +3 -3
  215. package/dist/{chunk-QBLS7X3Z.js.map → chunk-TVRL3IPZ.js.map} +1 -1
  216. package/dist/{chunk-2URJ7W5X.js → chunk-TW5AP6IF.js} +5 -5
  217. package/dist/{chunk-2URJ7W5X.js.map → chunk-TW5AP6IF.js.map} +1 -1
  218. package/dist/{chunk-F6LDWA2N.js → chunk-TYK752MU.js} +3 -3
  219. package/dist/{chunk-F6LDWA2N.js.map → chunk-TYK752MU.js.map} +1 -1
  220. package/dist/{chunk-HPQ2WDYC.js → chunk-U2WPJHRA.js} +5 -5
  221. package/dist/{chunk-HPQ2WDYC.js.map → chunk-U2WPJHRA.js.map} +1 -1
  222. package/dist/{chunk-MEU2HHGV.js → chunk-U7P22GEB.js} +386 -46
  223. package/dist/chunk-U7P22GEB.js.map +1 -0
  224. package/dist/{chunk-6ISJMEDX.js → chunk-VFEZUSB6.js} +4 -4
  225. package/dist/{chunk-6ISJMEDX.js.map → chunk-VFEZUSB6.js.map} +1 -1
  226. package/dist/{chunk-5FO4U3OL.js → chunk-WW22FS74.js} +75 -67
  227. package/dist/chunk-WW22FS74.js.map +1 -0
  228. package/dist/{chunk-WCUT3EQR.js → chunk-Z23I2JA6.js} +7 -7
  229. package/dist/{chunk-WCUT3EQR.js.map → chunk-Z23I2JA6.js.map} +1 -1
  230. package/dist/{chunk-VKGNMXGZ.js → chunk-Z7HLX4V2.js} +4 -4
  231. package/dist/{chunk-VKGNMXGZ.js.map → chunk-Z7HLX4V2.js.map} +1 -1
  232. package/dist/{chunk-LZCX2TCZ.js → chunk-ZII54C3E.js} +355 -1075
  233. package/dist/chunk-ZII54C3E.js.map +1 -0
  234. package/dist/{chunk-CVUMZTNO.js → chunk-ZQPBYLCS.js} +4 -4
  235. package/dist/{chunk-CVUMZTNO.js.map → chunk-ZQPBYLCS.js.map} +1 -1
  236. package/dist/{claude-code-LFAOJ3UQ.js → claude-code-VL6UM7BZ.js} +4 -4
  237. package/dist/{claude-code-LFAOJ3UQ.js.map → claude-code-VL6UM7BZ.js.map} +1 -1
  238. package/dist/cli/index.js +494 -301
  239. package/dist/cli/index.js.map +1 -1
  240. package/dist/cli/src/agent-file-refresh.d.ts +25 -0
  241. package/dist/cli/src/agent-file-refresh.d.ts.map +1 -0
  242. package/dist/cli/src/commands/asset-cmd.d.ts.map +1 -1
  243. package/dist/cli/src/commands/catalog.d.ts +9 -2
  244. package/dist/cli/src/commands/catalog.d.ts.map +1 -1
  245. package/dist/cli/src/commands/config.d.ts.map +1 -1
  246. package/dist/cli/src/commands/harness.d.ts +1 -1
  247. package/dist/cli/src/commands/harness.d.ts.map +1 -1
  248. package/dist/cli/src/commands/library-cmd.d.ts.map +1 -1
  249. package/dist/cli/src/commands/library-index.d.ts +5 -7
  250. package/dist/cli/src/commands/library-index.d.ts.map +1 -1
  251. package/dist/cli/src/commands/library-publish.d.ts.map +1 -1
  252. package/dist/cli/src/commands/preset-export.d.ts.map +1 -1
  253. package/dist/cli/src/commands/project.d.ts.map +1 -1
  254. package/dist/cli/src/commands/run.d.ts.map +1 -1
  255. package/dist/cli/src/commands/serve-preflight.d.ts +27 -48
  256. package/dist/cli/src/commands/serve-preflight.d.ts.map +1 -1
  257. package/dist/cli/src/commands/serve.d.ts.map +1 -1
  258. package/dist/cli/src/commands/source.d.ts +6 -9
  259. package/dist/cli/src/commands/source.d.ts.map +1 -1
  260. package/dist/cli/src/commands/validate.d.ts +6 -0
  261. package/dist/cli/src/commands/validate.d.ts.map +1 -1
  262. package/dist/cli/src/config-checks.d.ts.map +1 -1
  263. package/dist/cli/src/harness-error.d.ts +11 -9
  264. package/dist/cli/src/harness-error.d.ts.map +1 -1
  265. package/dist/cli/src/skill-checks.d.ts +48 -74
  266. package/dist/cli/src/skill-checks.d.ts.map +1 -1
  267. package/dist/connectors/config.js +5 -5
  268. package/dist/connectors/index.js +22 -22
  269. package/dist/{connectors-KPF4UUDS.js → connectors-7EPJRVLJ.js} +25 -25
  270. package/dist/{connectors-KPF4UUDS.js.map → connectors-7EPJRVLJ.js.map} +1 -1
  271. package/dist/connectors-shared/index.js +2 -2
  272. package/dist/core/index.js +7 -6
  273. package/dist/core/manifest.js +2 -2
  274. package/dist/core/models.js +1 -1
  275. package/dist/core/publish-manifest.js +3 -3
  276. package/dist/core/ref.js +1 -1
  277. package/dist/core/runtime-assets.js +5 -5
  278. package/dist/core/src/agent-prompt-sections.d.ts +96 -4
  279. package/dist/core/src/agent-prompt-sections.d.ts.map +1 -1
  280. package/dist/core/src/check-asset.d.ts +115 -0
  281. package/dist/core/src/check-asset.d.ts.map +1 -0
  282. package/dist/core/src/harness-model.d.ts +20 -0
  283. package/dist/core/src/harness-model.d.ts.map +1 -0
  284. package/dist/core/src/index.d.ts +10 -6
  285. package/dist/core/src/index.d.ts.map +1 -1
  286. package/dist/core/src/lock.d.ts +12 -10
  287. package/dist/core/src/lock.d.ts.map +1 -1
  288. package/dist/core/src/models.d.ts +42 -11
  289. package/dist/core/src/models.d.ts.map +1 -1
  290. package/dist/core/src/publish-manifest.d.ts +17 -0
  291. package/dist/core/src/publish-manifest.d.ts.map +1 -1
  292. package/dist/core/src/repo-identity.d.ts +41 -0
  293. package/dist/core/src/repo-identity.d.ts.map +1 -0
  294. package/dist/core/src/repo-manager.d.ts +3 -9
  295. package/dist/core/src/repo-manager.d.ts.map +1 -1
  296. package/dist/core/src/walker.d.ts.map +1 -1
  297. package/dist/core/src/workspace-config.d.ts.map +1 -1
  298. package/dist/core/workspace-config.js +4 -4
  299. package/dist/deploy/index.js +7 -6
  300. package/dist/deploy/index.js.map +1 -1
  301. package/dist/discovery/index.js +5 -5
  302. package/dist/discovery/src/source-config.d.ts.map +1 -1
  303. package/dist/{ensure-sources-FOMEGCQ5.js → ensure-sources-CI3JQJST.js} +32 -30
  304. package/dist/ensure-sources-CI3JQJST.js.map +1 -0
  305. package/dist/factory-assets/connectors/box.js +22 -22
  306. package/dist/factory-assets/connectors/deploy.js +22 -22
  307. package/dist/factory-assets/connectors/devserver.js +22 -22
  308. package/dist/factory-assets/connectors/flow/adapter.js +22 -22
  309. package/dist/factory-assets/connectors/flow/engine.js +8 -7
  310. package/dist/factory-assets/connectors/flow/run-flow.js +24 -24
  311. package/dist/factory-assets/connectors/flow.js +22 -22
  312. package/dist/factory-assets/connectors/git.js +22 -22
  313. package/dist/factory-assets/connectors/gmail.js +22 -22
  314. package/dist/factory-assets/connectors/googledrive.js +22 -22
  315. package/dist/factory-assets/connectors/local.js +22 -22
  316. package/dist/factory-assets/connectors/mattermost.js +22 -22
  317. package/dist/factory-assets/connectors/memory.js +22 -22
  318. package/dist/factory-assets/connectors/minio.js +22 -22
  319. package/dist/factory-assets/connectors/postgres.js +22 -22
  320. package/dist/factory-assets/connectors/s3.js +22 -22
  321. package/dist/factory-assets/connectors/sharepoint.js +22 -22
  322. package/dist/factory-assets/connectors/sqlite.js +22 -22
  323. package/dist/factory-assets/connectors/static-server.js +22 -22
  324. package/dist/factory-assets/connectors/tunnel.js +22 -22
  325. package/dist/factory-assets/connectors/webdav.js +22 -22
  326. package/dist/factory-assets/connectors/xstate-store.js +22 -22
  327. package/dist/factory-assets/connectors/xstate.js +22 -22
  328. package/dist/{flows-J64L5MGJ.js → flows-6XQAYQS4.js} +12 -11
  329. package/dist/{flows-J64L5MGJ.js.map → flows-6XQAYQS4.js.map} +1 -1
  330. package/dist/{helpers-ZJ67FO3Z.js → helpers-26MR5QPO.js} +32 -30
  331. package/dist/{helpers-ZJ67FO3Z.js.map → helpers-26MR5QPO.js.map} +1 -1
  332. package/dist/library/index.js +10 -10
  333. package/dist/library/install.js +4 -4
  334. package/dist/library/src/index.d.ts +1 -1
  335. package/dist/library/src/index.d.ts.map +1 -1
  336. package/dist/library/src/local/db.d.ts.map +1 -1
  337. package/dist/library/src/local/library-manager.d.ts.map +1 -1
  338. package/dist/library/src/local/library.d.ts.map +1 -1
  339. package/dist/library/src/local/schema.d.ts +19 -0
  340. package/dist/library/src/local/schema.d.ts.map +1 -1
  341. package/dist/library/src/user-library.d.ts +18 -0
  342. package/dist/library/src/user-library.d.ts.map +1 -1
  343. package/dist/{library-publish-RGVXGTY4.js → library-publish-F3AKF66O.js} +74 -68
  344. package/dist/library-publish-F3AKF66O.js.map +1 -0
  345. package/dist/model-endpoint/index.js +10 -9
  346. package/dist/{open-library-I5JHL37T.js → open-library-FVV6GG4I.js} +35 -33
  347. package/dist/{open-library-I5JHL37T.js.map → open-library-FVV6GG4I.js.map} +1 -1
  348. package/dist/{open-registry-4HNCWOCN.js → open-registry-VX2BVMS5.js} +16 -16
  349. package/dist/{open-registry-4HNCWOCN.js.map → open-registry-VX2BVMS5.js.map} +1 -1
  350. package/dist/{paths-PXBWY532.js → paths-PIWSSUUG.js} +10 -9
  351. package/dist/{paths-PXBWY532.js.map → paths-PIWSSUUG.js.map} +1 -1
  352. package/dist/{plugin-store-ZC3EGZ3D.js → plugin-store-MVTW6G7J.js} +10 -9
  353. package/dist/{plugin-store-ZC3EGZ3D.js.map → plugin-store-MVTW6G7J.js.map} +1 -1
  354. package/dist/{project-K5JWPIJ6.js → project-GFQP4TW6.js} +50 -48
  355. package/dist/{project-K5JWPIJ6.js.map → project-GFQP4TW6.js.map} +1 -1
  356. package/dist/resolver/index.js +8 -7
  357. package/dist/runner/composition-content.d.ts +2 -0
  358. package/dist/runner/composition-content.js +29 -0
  359. package/dist/runner/composition-content.js.map +1 -0
  360. package/dist/runner/index.js +40 -39
  361. package/dist/runner/src/compaction/prompt.d.ts.map +1 -1
  362. package/dist/runner/src/composition/content-entry.d.ts +15 -0
  363. package/dist/runner/src/composition/content-entry.d.ts.map +1 -0
  364. package/dist/runner/src/composition/content-source.d.ts +7 -0
  365. package/dist/runner/src/composition/content-source.d.ts.map +1 -1
  366. package/dist/runner/src/composition/dry-run.d.ts +5 -1
  367. package/dist/runner/src/composition/dry-run.d.ts.map +1 -1
  368. package/dist/runner/src/composition/index.d.ts +1 -1
  369. package/dist/runner/src/composition/index.d.ts.map +1 -1
  370. package/dist/runner/src/composition/prompt-sections.d.ts +47 -20
  371. package/dist/runner/src/composition/prompt-sections.d.ts.map +1 -1
  372. package/dist/runner/src/context-usage/compose.d.ts.map +1 -1
  373. package/dist/runner/src/session-builder.d.ts +3 -8
  374. package/dist/runner/src/session-builder.d.ts.map +1 -1
  375. package/dist/runner/src/work-practices.d.ts +9 -0
  376. package/dist/runner/src/work-practices.d.ts.map +1 -0
  377. package/dist/sdk/asset-manager.js +17 -15
  378. package/dist/sdk/bridge.js +18 -18
  379. package/dist/sdk/core.js +7 -6
  380. package/dist/sdk/flow.js +8 -7
  381. package/dist/sdk/index.js +40 -39
  382. package/dist/sdk/index.js.map +1 -1
  383. package/dist/sdk/resolver.js +8 -7
  384. package/dist/sdk/runner.js +40 -39
  385. package/dist/sdk/session.js +2 -2
  386. package/dist/sdk/transport/ws/server.js +8 -7
  387. package/dist/sdk/transport/ws.js +8 -7
  388. package/dist/sdk/transport.js +8 -7
  389. package/dist/sdk/types.js +1 -1
  390. package/dist/serve-preflight-XJS5OZML.js +138 -0
  391. package/dist/serve-preflight-XJS5OZML.js.map +1 -0
  392. package/dist/session/index.js +2 -2
  393. package/dist/{setup-RXTNGML5.js → setup-BFEBJLYF.js} +33 -31
  394. package/dist/setup-BFEBJLYF.js.map +1 -0
  395. package/dist/{skills-5D4KDVPJ.js → skills-OCG7B5CL.js} +13 -12
  396. package/dist/{skills-5D4KDVPJ.js.map → skills-OCG7B5CL.js.map} +1 -1
  397. package/dist/source-P6JPZYWP.js +93 -0
  398. package/dist/{source-2LP5W3ST.js.map → source-P6JPZYWP.js.map} +1 -1
  399. package/dist/{source-manifest-publish-EZNCTSQF.js → source-manifest-publish-XBFHEURV.js} +54 -52
  400. package/dist/source-manifest-publish-XBFHEURV.js.map +1 -0
  401. package/dist/transport/index.js +8 -7
  402. package/dist/transport/ws/server.js +8 -7
  403. package/dist/transport/ws.js +8 -7
  404. package/dist/tui/index.js +40 -39
  405. package/dist/tui/index.js.map +1 -1
  406. package/dist/types/index.js +1 -1
  407. package/dist/types/src/context-usage.d.ts +1 -1
  408. package/dist/types/src/events.d.ts +3 -2
  409. package/dist/types/src/events.d.ts.map +1 -1
  410. package/dist/types/src/runtime.d.ts +6 -0
  411. package/dist/types/src/runtime.d.ts.map +1 -1
  412. package/dist/workspace-plugin/adapters/mcp.js +29 -29
  413. package/dist/workspace-plugin/adapters/omp.js +14 -14
  414. package/dist/workspace-plugin/index.js +1 -1
  415. package/package.json +7 -1
  416. package/dist/asset-feeds-DOG5FK7T.js.map +0 -1
  417. package/dist/chunk-3BRBTQ6M.js.map +0 -1
  418. package/dist/chunk-5FO4U3OL.js.map +0 -1
  419. package/dist/chunk-7FXOOUOC.js.map +0 -1
  420. package/dist/chunk-7HRZACI4.js.map +0 -1
  421. package/dist/chunk-7LJUK5JK.js.map +0 -1
  422. package/dist/chunk-7UBCUKJO.js.map +0 -1
  423. package/dist/chunk-7VBD5XUM.js.map +0 -1
  424. package/dist/chunk-A7TM4PZZ.js +0 -110
  425. package/dist/chunk-A7TM4PZZ.js.map +0 -1
  426. package/dist/chunk-B6W5DCH5.js.map +0 -1
  427. package/dist/chunk-BNLXZXZN.js.map +0 -1
  428. package/dist/chunk-CFRHYD4C.js.map +0 -1
  429. package/dist/chunk-DRUAQ7IY.js.map +0 -1
  430. package/dist/chunk-DYH3VSPU.js.map +0 -1
  431. package/dist/chunk-F7WMHDTV.js.map +0 -1
  432. package/dist/chunk-LMUNQYJQ.js.map +0 -1
  433. package/dist/chunk-LZCX2TCZ.js.map +0 -1
  434. package/dist/chunk-MEU2HHGV.js.map +0 -1
  435. package/dist/chunk-MS2IXLTC.js.map +0 -1
  436. package/dist/chunk-OC3AIMZH.js.map +0 -1
  437. package/dist/chunk-RRAXV5LE.js.map +0 -1
  438. package/dist/chunk-YNQRVTXH.js.map +0 -1
  439. package/dist/cli/src/commands/harness-preflight.d.ts +0 -40
  440. package/dist/cli/src/commands/harness-preflight.d.ts.map +0 -1
  441. package/dist/ensure-sources-FOMEGCQ5.js.map +0 -1
  442. package/dist/library-publish-RGVXGTY4.js.map +0 -1
  443. package/dist/serve-preflight-L6VVCDM5.js +0 -61
  444. package/dist/serve-preflight-L6VVCDM5.js.map +0 -1
  445. package/dist/setup-RXTNGML5.js.map +0 -1
  446. package/dist/source-2LP5W3ST.js +0 -91
  447. package/dist/source-manifest-publish-EZNCTSQF.js.map +0 -1
@@ -0,0 +1,109 @@
1
+ import { type AgentInstanceConfig, type AssetRef } from "@skaile/workspaces/core";
2
+ import { AmReadOutdated } from "./outdated.js";
3
+ /**
4
+ * Replace the `diff -u` timestamps of the `---` / `+++` header lines with a label of the side
5
+ * (`--- <file> (deployed)`, `+++ <file> (library)`). A file that is missing on one side shows
6
+ * the epoch there (`1970-01-01`), which says nothing a reader wants (p1693).
7
+ */
8
+ export declare function labelDiffHeaders(diff: string, from: string, to: string): string;
9
+ /**
10
+ * Outcome of `AssetManager.diff()` — distinguishes an unknown ref from a real
11
+ * "no differences" so callers never conflate the two.
12
+ *
13
+ * - `not-found` — the ref resolves to no asset (source, store or library).
14
+ * - `not-deployed` — the asset resolves, but there is no deployed copy to compare.
15
+ * - `identical` — the deployed copy matches the source.
16
+ * - `differs` — the deployed copy differs; `diff` carries the unified diff. `fileSetDiffers` is
17
+ * set when a file is missing from the deployed copy or one is not part of the asset (an
18
+ * `mcp-server` payload): that is a state problem as for a skill, so `diff` lists it and exits 1.
19
+ * - `no-files` — the asset kind has no files of its own (a preset: its items are the assets to
20
+ * compare) and the lock records it.
21
+ *
22
+ * @docLink packages/asset-manager/concepts#asset-manager
23
+ */
24
+ export type DiffResult = {
25
+ status: "not-found";
26
+ } | {
27
+ status: "not-deployed";
28
+ } | {
29
+ status: "identical";
30
+ } | {
31
+ status: "no-files";
32
+ } | {
33
+ status: "differs";
34
+ diff: string;
35
+ fileSetDiffers?: true;
36
+ };
37
+ /** Diff and patch*. One layer of the `AssetManager` class chain (see `asset-manager/CLAUDE.md`). */
38
+ export declare abstract class AmReadDiff extends AmReadOutdated {
39
+ /**
40
+ * {@link AssetManager.diff} for a locked source or store asset whose bytes are not on disk:
41
+ * the deployed copy against the per-file hashes the lock records. No text to show without the
42
+ * locked bytes, so an edited file is named and the way to fetch them is. `null` when the lock
43
+ * has no such entry or the kind is rendered (an agent), not copied.
44
+ */
45
+ protected diffAgainstLock(want: AssetRef): Promise<DiffResult | null>;
46
+ /**
47
+ * Produce a unified diff from the deployed asset to its catalog source: `-` lines
48
+ * are in the deployed copy only (local edits `update` would overwrite), `+` lines
49
+ * are in the source only (what `update` would add).
50
+ *
51
+ * Useful for detecting manual edits to deployed files or seeing what an upstream
52
+ * change would bring in; also for verifying that a patch
53
+ * was applied correctly.
54
+ *
55
+ * @param ref - Asset ref in `kind:name` form.
56
+ * @returns A {@link DiffResult}: `not-found` (unknown ref), `not-deployed`,
57
+ * `identical`, or `differs` with the unified diff.
58
+ * @throws When `diff(1)` itself fails (exit status other than 0/1).
59
+ */
60
+ diff(ref: string): Promise<DiffResult>;
61
+ /**
62
+ * The agent instances of `skaile.yaml` whose `ref` names `want` (an `agent:` ref, matched on
63
+ * name and, when both name one, publisher) and bind to an agent definition directory.
64
+ */
65
+ protected instancesBoundTo(want: AssetRef): Array<{
66
+ id: string;
67
+ srcDir: string;
68
+ config: AgentInstanceConfig;
69
+ }>;
70
+ /**
71
+ * Extract a deployed asset into a patch working directory for editing.
72
+ *
73
+ * Copies the deployed asset to `.skaile/patches/<kind>-<name>/` so changes
74
+ * can be made there and then committed as a patch file via `patchCommit`.
75
+ *
76
+ * @param ref - Asset ref in `kind:name` form.
77
+ * @returns Absolute path to the patch working directory.
78
+ * @throws When the asset cannot be found in the catalog.
79
+ */
80
+ patch(ref: string): Promise<string>;
81
+ /**
82
+ * Generate a `.patch` file from changes made in the patch working directory.
83
+ *
84
+ * Diffs the patch working directory against the original catalog source and
85
+ * writes the result to `.skaile/patches/<kind>-<name>.patch`.
86
+ *
87
+ * @param ref - Asset ref in `kind:name` form.
88
+ * @returns Absolute path to the generated `.patch` file.
89
+ * @throws When the patch working directory does not exist or no differences are found.
90
+ */
91
+ patchCommit(ref: string): Promise<string>;
92
+ /**
93
+ * Apply the committed patch file to the repository clone and open a contribution branch.
94
+ *
95
+ * Applies `.skaile/patches/<kind>-<name>.patch` to the repository clone, creates a
96
+ * `patch/<kind>-<name>` branch, and stages a commit — ready to push via `contribPush`.
97
+ *
98
+ * @param ref - Asset ref in `kind:name` form.
99
+ * @throws When the asset is not found, has no repository, or the patch file is missing.
100
+ */
101
+ patchSubmit(ref: string): Promise<void>;
102
+ /**
103
+ * Delete the patch working directory and patch file for an asset.
104
+ *
105
+ * @param ref - Asset ref in `kind:name` form.
106
+ */
107
+ patchRemove(ref: string): void;
108
+ }
109
+ //# sourceMappingURL=diff.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diff.d.ts","sourceRoot":"","sources":["../../../../asset-manager/src/read/diff.ts"],"names":[],"mappings":"AAGA,OAAO,EAUL,KAAK,mBAAmB,EACxB,KAAK,QAAQ,EACd,MAAM,yBAAyB,CAAC;AAMjC,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAE/C;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,MAAM,CAO/E;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,UAAU,GAClB;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,GACvB;IAAE,MAAM,EAAE,cAAc,CAAA;CAAE,GAC1B;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,GACvB;IAAE,MAAM,EAAE,UAAU,CAAA;CAAE,GACtB;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,IAAI,CAAA;CAAE,CAAC;AAE/D,oGAAoG;AACpG,8BAAsB,UAAW,SAAQ,cAAc;IACrD;;;;;OAKG;cACa,eAAe,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IA+B3E;;;;;;;;;;;;;OAaG;IACG,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IA2G5C;;;OAGG;IACH,SAAS,CAAC,gBAAgB,CACxB,IAAI,EAAE,QAAQ,GACb,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,mBAAmB,CAAA;KAAE,CAAC;IA2BrE;;;;;;;;;OASG;IACG,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMzC;;;;;;;;;OASG;IACG,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAmB/C;;;;;;;;OAQG;IACG,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsB7C;;;;OAIG;IACH,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;CAW/B"}
@@ -0,0 +1,116 @@
1
+ import { type CatalogEntry, type LockFile } from "@skaile/workspaces/core";
2
+ import type { DepIssue, LockGap } from "../shared/types.js";
3
+ import { AmReadGaps } from "./gaps.js";
4
+ /**
5
+ * The project's state as {@link AssetManager.projectState} computes it: the one verdict
6
+ * `check`, `doctor`, `outdated`, `diff` and `install --locked` share.
7
+ *
8
+ * @docLink packages/asset-manager/concepts#asset-manager
9
+ */
10
+ export interface ProjectState {
11
+ /** Every problem, one {@link LockGap} each; empty when the project is as declared and locked. */
12
+ gaps: LockGap[];
13
+ /** What {@link AssetManager.doctor} found: the unmet requirements (a `doctor` table row each) and the locked assets nothing provides. */
14
+ requirements: DepIssue[];
15
+ }
16
+ /** Doctor and projectState. One layer of the `AssetManager` class chain (see `asset-manager/CLAUDE.md`). */
17
+ export declare abstract class AmReadDoctor extends AmReadGaps {
18
+ /**
19
+ * Scan deployed assets for unsatisfied transitive dependencies.
20
+ *
21
+ * For each deployed asset, checks that all entries in its `requires` list are
22
+ * also deployed. Returns a list of issues with a flag indicating whether the
23
+ * missing dependency can be resolved from a configured repository or library.
24
+ *
25
+ * A deployed asset is looked up by its publisher-qualified identity taken from
26
+ * the lock key (`kind:@pub/name`), so library and source assets resolve alike.
27
+ * A lock-managed asset that no source or library can be found for is reported
28
+ * as an issue with `unresolved: true` (its `requires` cannot be verified);
29
+ * unmanaged deployed files carry no declared origin and are skipped.
30
+ *
31
+ * @returns Array of {@link DepIssue} objects. An empty array means the workspace is healthy.
32
+ */
33
+ doctor(): Promise<DepIssue[]>;
34
+ /**
35
+ * The project's state as one verdict: every way the project differs from what it
36
+ * declares and locks. `skaile check`, `skaile doctor`, `skaile outdated`, `skaile diff`
37
+ * and `skaile install --locked` all take their verdict and exit code from this one list,
38
+ * so one situation reads the same in all five.
39
+ *
40
+ * - `declared` — a `skaile.yaml` dependency with no lock entry (library or source gone,
41
+ * unresolvable ref, never installed);
42
+ * - `invalid` — a `dependencies:` entry that is not a parseable ref;
43
+ * - `drift` — a locked asset whose deployed files are missing;
44
+ * - `pin` — a declared `#pin` that no lock entry for that asset satisfies;
45
+ * - `requires` — a deployed asset's `requires` (or a declared preset's item) that is not
46
+ * deployed (so not locked either);
47
+ * - `unresolved` — a lock-managed deployed asset that no source or library holds any more;
48
+ * - `library` — a locked library asset whose library is not registered (renamed or
49
+ * removed) or no longer holds it, while another library holds it now;
50
+ * - `incomplete` — a deployed library asset that lacks files of its library entry;
51
+ * - `content` — a locked library asset whose files in the library changed since the lock
52
+ * (or whose lock hash predates the one shared asset hash); `skaile install` re-locks it;
53
+ * - `agent` — an `agents.<id>.ref` (or `agent.definition`) that binds to no agent.
54
+ *
55
+ * An asset appears once for what the lock says about it (`unresolved`, else `library`,
56
+ * else `drift`). A declared ref no registered library or source holds names
57
+ * `skaile library init` / `skaile remove`, never `skaile install`: `install` has nothing
58
+ * to resolve it from.
59
+ *
60
+ * Project mode only: a global manager (`global: true`) has no gaps. A project without
61
+ * `skaile.yaml` has no declared set, so only the lock and deployed-asset gaps can appear.
62
+ *
63
+ * @returns The {@link ProjectState}; `gaps` is empty when the project is as declared and locked.
64
+ */
65
+ projectState(): Promise<ProjectState>;
66
+ /**
67
+ * The first `../` compose folder of the locked library agent `kind:name` whose library copy
68
+ * changed since the lock, or `undefined` (project scope only). `install --locked` cannot
69
+ * restore such an agent; `update` moves the lock to the library's copy.
70
+ */
71
+ protected lockedComposeDrift(lock: LockFile, kind: string, name: string): Promise<string | undefined>;
72
+ /**
73
+ * The `check`, `doctor` and `add` lines for an agent instance whose agent names an `extends`
74
+ * parent that its folder does not hold: the instance is rendered without the parent's
75
+ * settings. Not a gap (nothing fails, the publisher has to ship the parent), so a `!` line.
76
+ * Read from the project's cached agent source on every call, so nothing records that it was
77
+ * said: the line is a fact of the project and goes once the parent is there. Empty in global
78
+ * mode.
79
+ *
80
+ * @param onlyAgent - Only the instances that bind this agent (`add` names the one it added).
81
+ */
82
+ missingParentNotices(onlyAgent?: string): string[];
83
+ /**
84
+ * The agent instances whose `ref` binds to no agent and that the install about to run does not
85
+ * deploy (`entries`), worded as `renderAgentInstances` words them (`errors`, and the resolver's
86
+ * own text in `details` for `--verbose`). The install cannot fix them, and its instance render
87
+ * after the deploy would end the run `Failed` having rewritten files. A ref the `entries` hold
88
+ * binds once they are deployed, so it is no cause.
89
+ */
90
+ protected unboundInstanceErrors(entries: readonly CatalogEntry[]): Promise<{
91
+ errors: string[];
92
+ details: string[];
93
+ }>;
94
+ /**
95
+ * Why the `agent:` ref of agent instance `id` binds to nothing, as the phrase that follows
96
+ * the ref in a {@link LockGap}; see {@link AssetManager.unboundAgentAdvice}.
97
+ */
98
+ protected unboundAgentReason(id: string, ref: string): Promise<string>;
99
+ /**
100
+ * What is wrong with an `agent:` ref bound by an agent instance and what to do (`lead`, then
101
+ * `advice`). `skaile add` is named only when a registered library or source holds the agent
102
+ * and `add` takes the ref (it needs a publisher); otherwise the user registers the library
103
+ * that holds it, writes the publisher, or drops the binding.
104
+ */
105
+ protected unboundAgentAdvice(ref: string): Promise<{
106
+ lead: string;
107
+ advice: string;
108
+ }>;
109
+ /**
110
+ * Whether the library a locked agent names is here and holds the agent, or the agent comes
111
+ * from a source or store: `install --locked` restores it, so its missing cache is no fault of
112
+ * the library.
113
+ */
114
+ protected lockedAgentLibraryHolds(lockKey: string): Promise<boolean>;
115
+ }
116
+ //# sourceMappingURL=doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../../asset-manager/src/read/doctor.ts"],"names":[],"mappings":"AAEA,OAAO,EAcL,KAAK,YAAY,EACjB,KAAK,QAAQ,EAEd,MAAM,yBAAyB,CAAC;AAiBjC,OAAO,KAAK,EAAE,QAAQ,EAAwB,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAYvC;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,iGAAiG;IACjG,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,yIAAyI;IACzI,YAAY,EAAE,QAAQ,EAAE,CAAC;CAC1B;AAED,4GAA4G;AAC5G,8BAAsB,YAAa,SAAQ,UAAU;IAGnD;;;;;;;;;;;;;;OAcG;IACG,MAAM,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;IAyHnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACG,YAAY,IAAI,OAAO,CAAC,YAAY,CAAC;IA8R3C;;;;OAIG;cACa,kBAAkB,CAChC,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAa9B;;;;;;;;;OASG;IACH,oBAAoB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;IASlD;;;;;;OAMG;cACa,qBAAqB,CACnC,OAAO,EAAE,SAAS,YAAY,EAAE,GAC/B,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAwBnD;;;OAGG;cACa,kBAAkB,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAK5E;;;;;OAKG;cACa,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IA6F1F;;;;OAIG;cACa,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAe3E"}
@@ -0,0 +1,120 @@
1
+ import { buildProvenanceIndex, type AssetRef, type LockFile, type StoreEntry } from "@skaile/workspaces/core";
2
+ import type { DepIssue, LockGap } from "../shared/types.js";
3
+ import { AmReadDiff } from "./diff.js";
4
+ /** Lock gaps and declared gaps. One layer of the `AssetManager` class chain (see `asset-manager/CLAUDE.md`). */
5
+ export declare abstract class AmReadGaps extends AmReadDiff {
6
+ /** @deprecated Use `(await projectState()).gaps`; removed in the next major. */
7
+ lockGaps(): Promise<LockGap[]>;
8
+ /**
9
+ * The {@link ProjectState} gaps that name `ref`: as the gap's own ref, or as the asset
10
+ * whose requirement is unmet. A ref without a publisher matches any publisher.
11
+ *
12
+ * @param ref - Asset ref in `kind:name` or `kind:@publisher/name` form.
13
+ */
14
+ gapsOf(ref: string): Promise<LockGap[]>;
15
+ /**
16
+ * The {@link ProjectState} gaps of everything `ref` requires, transitively: what `check`
17
+ * says about the requirements of `ref`, so a command that answers for one asset (`diff`)
18
+ * does not call it fine while a requirement of it is broken. The requirements are read from
19
+ * the deployed copies (the lock records no edges), the way `remove` and `install` read them
20
+ * when no library holds the asset any more. The gaps of `ref` itself are not included
21
+ * ({@link gapsOf}).
22
+ *
23
+ * @param ref - Asset ref in `kind:name` or `kind:@publisher/name` form.
24
+ */
25
+ requirementGapsOf(ref: string): Promise<LockGap[]>;
26
+ /**
27
+ * Locked library assets whose library cannot supply them: the library is not registered
28
+ * (renamed or removed) or no longer holds the asset. Another library holding it makes the
29
+ * gap fixable by `skaile install` (it re-locks); otherwise the user registers the library
30
+ * again or drops the dependency.
31
+ *
32
+ * @param named - `kind:name` identities already reported; they are skipped.
33
+ */
34
+ protected libraryOriginGaps(named: ReadonlySet<string>): Promise<LockGap[]>;
35
+ /**
36
+ * The locked source assets whose source is no longer in `skaile.yaml` `sources:` (`source
37
+ * remove`, a hand edit), keyed by lock key. ONE sentence for it: `check`, `doctor`, `outdated`,
38
+ * `install`, `install --locked` and `update` all say it (p1062), and none re-clones the source.
39
+ * A GitHub lock entry that no source declares counts as store-supplied only when a store
40
+ * lists the ref (OQ3): a configured store alone proves nothing, as it may never have held
41
+ * the asset. `check`, `doctor` and `outdated` read the store's cached catalog and never touch
42
+ * the network; `install` and `update` (`online`) ask the store itself.
43
+ *
44
+ * @param inScope - Only these lock keys count (`install` prunes an undeclared entry as usual).
45
+ * @param online - Ask the stores when the cached catalog does not list the ref.
46
+ */
47
+ protected orphanedSourceGaps(inScope?: ReadonlySet<string>, online?: boolean): Promise<Map<string, LockGap>>;
48
+ /**
49
+ * `true` when one of `stores` lists `ref` (a canonical lock key): its cached catalog holds it
50
+ * or, with `online`, the store answers for it. An injected store fetcher is the store client
51
+ * itself, so it is asked either way. A store an online install cannot ask (unreachable,
52
+ * air-gapped, `--no-catalog`) may hold the ref; `check` never asks, so a store lists only what
53
+ * its cached catalog holds.
54
+ */
55
+ protected storeListsRef(stores: readonly StoreEntry[], ref: string, online: boolean, lockedRef?: string): Promise<boolean>;
56
+ /**
57
+ * Locked source assets whose source cannot supply them any more: the source is no longer in
58
+ * `skaile.yaml` `sources:` (`source remove`, a hand edit), or it is there but now publishes
59
+ * the asset under another publisher (`source add <url> --publisher`). `skaile install` has
60
+ * nothing to restore them from, so the fix is manual. A source of a store-resolved lock entry
61
+ * is not told apart from one, so no source is called missing while a `stores:` entry exists.
62
+ *
63
+ * @param named - `kind:name` identities already reported; they are skipped.
64
+ * @param index - What the registered sources publish today.
65
+ */
66
+ protected sourceOriginGaps(named: ReadonlySet<string>, index: Awaited<ReturnType<typeof buildProvenanceIndex>>): Promise<LockGap[]>;
67
+ /**
68
+ * The locked assets that come from the source `url` (a `sources:` entry): canonical refs,
69
+ * `kind:@publisher/name`. `skaile source remove` refuses while this list is not empty.
70
+ */
71
+ lockedFromSource(url: string): string[];
72
+ /**
73
+ * The `skaile.yaml` side of {@link AssetManager.projectState}: declared refs that do not
74
+ * parse, never resolved into the lock, are not materialized, or contradict a `#pin`.
75
+ * A project with no (or an unreadable) `skaile.yaml` has no declared set to reconcile.
76
+ *
77
+ * @param requirements - What {@link AssetManager.doctor} found; a declared preset whose
78
+ * items it already named needs no second line.
79
+ * @param named - `kind:name` identities already reported; a declared asset among them
80
+ * needs no `drift` line.
81
+ */
82
+ protected declaredGaps(requirements: readonly DepIssue[], named: ReadonlySet<string>): Promise<LockGap[]>;
83
+ /** Whether the lock's `presets` slice records `want` (kind, name and, when both carry one, publisher). */
84
+ protected presetRecorded(want: AssetRef): boolean;
85
+ /**
86
+ * The first requirement, direct or transitive, of the declared `ref` that no local source or
87
+ * library holds and that nothing in the project already provides — the case `install` ends
88
+ * with `Missing: … nothing was installed`. `undefined` when every requirement is held, when a
89
+ * store is declared (it may hold the requirement and a check never goes to the network), or
90
+ * when `ref` itself resolves to nothing.
91
+ */
92
+ protected unmetRequirementOf(ref: string): Promise<string | undefined>;
93
+ /**
94
+ * Whether `skaile install` can resolve a declared ref: a source or library holds it, or the
95
+ * project declares a store that may. The global catalog is not asked: a check never goes
96
+ * to the network.
97
+ */
98
+ protected declaredRefResolvable(ref: string): Promise<boolean>;
99
+ /**
100
+ * Items of each declared `preset:` dependency that the lock does not cover.
101
+ *
102
+ * A preset is never locked itself; the lock lists only its expanded items, so an
103
+ * item missing from the lock never resolved (or was declared after the last
104
+ * install). Presets are read from the local sources and libraries (nested presets
105
+ * followed); one only a store holds cannot be read without the network and
106
+ * reports no gaps. Without a lock nothing is reported: `list` and `check` already
107
+ * show a never-installed declaration as `declared`.
108
+ *
109
+ * @param declared - The `dependencies:` refs as written in `skaile.yaml`.
110
+ * @param lock - The current lock, or `null` when none exists.
111
+ * @returns Declared preset ref → its uncovered items; `resolvable` is `true` when a
112
+ * local source or library offers the item (so `skaile install` can fix it).
113
+ * Presets without gaps are absent.
114
+ */
115
+ protected declaredPresetGaps(declared: readonly string[], lock: LockFile | null): Promise<Map<string, Array<{
116
+ ref: string;
117
+ resolvable: boolean;
118
+ }>>>;
119
+ }
120
+ //# sourceMappingURL=gaps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gaps.d.ts","sourceRoot":"","sources":["../../../../asset-manager/src/read/gaps.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,oBAAoB,EAQpB,KAAK,QAAQ,EAGb,KAAK,QAAQ,EAGb,KAAK,UAAU,EAChB,MAAM,yBAAyB,CAAC;AAoBjC,OAAO,KAAK,EAAiB,QAAQ,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAmBvC,gHAAgH;AAChH,8BAAsB,UAAW,SAAQ,UAAU;IACjD,gFAAgF;IAC1E,QAAQ,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;IAIpC;;;;;OAKG;IACG,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAiB7C;;;;;;;;;OASG;IACG,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IA+CxD;;;;;;;OAOG;cACa,iBAAiB,CAAC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAqFjF;;;;;;;;;;;OAWG;cACa,kBAAkB,CAChC,OAAO,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC,EAC7B,MAAM,UAAQ,GACb,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAqDhC;;;;;;OAMG;cACa,aAAa,CAC3B,MAAM,EAAE,SAAS,UAAU,EAAE,EAC7B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,OAAO,EACf,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,OAAO,CAAC;IA8BnB;;;;;;;;;OASG;cACa,gBAAgB,CAC9B,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,EAC1B,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC,GACtD,OAAO,CAAC,OAAO,EAAE,CAAC;IA8BrB;;;OAGG;IACH,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE;IAWvC;;;;;;;;;OASG;cACa,YAAY,CAC1B,YAAY,EAAE,SAAS,QAAQ,EAAE,EACjC,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,GACzB,OAAO,CAAC,OAAO,EAAE,CAAC;IAgHrB,0GAA0G;IAC1G,SAAS,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO;IAYjD;;;;;;OAMG;cACa,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IA+B5E;;;;OAIG;cACa,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKpE;;;;;;;;;;;;;;;OAeG;cACa,kBAAkB,CAChC,QAAQ,EAAE,SAAS,MAAM,EAAE,EAC3B,IAAI,EAAE,QAAQ,GAAG,IAAI,GACpB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC,CAAC;CAgErE"}
@@ -0,0 +1,69 @@
1
+ import { type AssetRef, type LockFile } from "@skaile/workspaces/core";
2
+ import { AmInstall } from "../install/install.js";
3
+ /**
4
+ * A node in the resolved dependency tree (returned by `AssetManager.tree()`).
5
+ *
6
+ * @docLink packages/asset-manager/concepts#asset-manager
7
+ */
8
+ export interface DependencyNode {
9
+ /** Lock key (`kind:@publisher/name#version`), or `"project"` for the root node. */
10
+ ref: string;
11
+ /** Assets this node requires, nested under it. */
12
+ children: DependencyNode[];
13
+ }
14
+ /** Tree and why. One layer of the `AssetManager` class chain (see `asset-manager/CLAUDE.md`). */
15
+ export declare abstract class AmReadGraph extends AmInstall {
16
+ /**
17
+ * Requirement graph of the locked assets, for {@link tree} / {@link why} / removal pruning.
18
+ *
19
+ * The lock records no edges, so they are rebuilt from each locked asset's own
20
+ * declaration (`requires`, manifest `dependencies`, a preset's items) — the same
21
+ * source the install walk reads, via {@link info}. An asset that no source or
22
+ * library can be found for has no known requirements. Nodes are lock keys, plus
23
+ * each declared `preset:` that the lock does not carry (a preset is expanded at
24
+ * install, never locked), keyed by its declared ref.
25
+ *
26
+ * @returns `requires` (node → the lock keys it requires), `roots` (nodes
27
+ * `skaile.yaml` declares) and `findKey` (a ref → its lock key, version-agnostic).
28
+ */
29
+ protected lockedGraph(lock: LockFile): Promise<{
30
+ requires: Map<string, string[]>;
31
+ roots: string[];
32
+ findKey: (ref: string) => string | undefined;
33
+ }>;
34
+ /**
35
+ * Build the resolved dependency tree from the lock file.
36
+ *
37
+ * Required assets nest under the asset that requires them (see {@link lockedGraph});
38
+ * an asset required by several parents appears under each, and a dependency cycle
39
+ * is cut where it would repeat.
40
+ *
41
+ * @returns Root {@link DependencyNode} with `ref === "project"` whose children
42
+ * are the directly-declared assets, followed by locked assets nothing requires,
43
+ * each with the assets it requires as children.
44
+ * Returns a single node with `ref === "(no lock file)"` when no lock exists.
45
+ */
46
+ tree(): Promise<DependencyNode>;
47
+ /**
48
+ * Explain why an asset is installed by tracing its dependency chain.
49
+ *
50
+ * The chain is read from the requirement graph ({@link lockedGraph}): the asset,
51
+ * then the asset that requires it, and so on up to a dependency `skaile.yaml`
52
+ * declares (the shortest such path; cycles are not followed twice).
53
+ *
54
+ * @param ref - Asset ref in `kind:name` form.
55
+ * @returns Chain of refs from the asset back to `"direct (skaile.yaml)"`; an asset
56
+ * no declared dependency reaches ends in `"not required by a declared dependency"`
57
+ * instead. `[]` when the asset is not in the lock file.
58
+ */
59
+ why(ref: string): Promise<string[]>;
60
+ /**
61
+ * The {@link AssetManager.why} chain of a preset. A preset is never a lock asset: its record
62
+ * is the lock's `presets` slice. Declared in `skaile.yaml` it is `direct`; one only a declared
63
+ * preset nests is traced through the presets that list it.
64
+ *
65
+ * @returns `[]` when the lock does not record the preset.
66
+ */
67
+ protected whyPreset(lock: LockFile, asked: AssetRef): Promise<string[]>;
68
+ }
69
+ //# sourceMappingURL=graph.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"graph.d.ts","sourceRoot":"","sources":["../../../../asset-manager/src/read/graph.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,QAAQ,EAAE,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACtF,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAQlD;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,mFAAmF;IACnF,GAAG,EAAE,MAAM,CAAC;IACZ,kDAAkD;IAClD,QAAQ,EAAE,cAAc,EAAE,CAAC;CAC5B;AAED,iGAAiG;AACjG,8BAAsB,WAAY,SAAQ,SAAS;IACjD;;;;;;;;;;;;OAYG;cACa,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC;QACnD,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;QAChC,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;KAC9C,CAAC;IA8DF;;;;;;;;;;;OAWG;IACG,IAAI,IAAI,OAAO,CAAC,cAAc,CAAC;IA+BrC;;;;;;;;;;;OAWG;IACG,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAmDzC;;;;;;OAMG;cACa,SAAS,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAkD9E"}
@@ -0,0 +1,152 @@
1
+ import { type AssetRef, type LockEntry, type LockFile } from "@skaile/workspaces/core";
2
+ import { type DeployableEntry } from "../installer.js";
3
+ import { AmReadGraph } from "./graph.js";
4
+ /**
5
+ * An installed asset whose source repository is behind the remote.
6
+ *
7
+ * @docLink packages/asset-manager/concepts#asset-manager
8
+ */
9
+ export interface OutdatedEntry {
10
+ /** Asset kind (`skill`, `agent`, `prompt`, `flow`, `contract`). */
11
+ kind: string;
12
+ /** Asset name as registered in the catalog. */
13
+ name: string;
14
+ /** Repository that provides this asset. */
15
+ publisher: string;
16
+ /** Version string recorded in the lock file at install time. */
17
+ currentVersion: string;
18
+ /** Number of commits the local repository is behind the remote (always 0 for a library asset). */
19
+ behind: number;
20
+ /** Library-origin asset only: the version the library index now offers (newer than `currentVersion`). */
21
+ latestVersion?: string;
22
+ /** Library-origin asset only: name of the library the asset was locked from. */
23
+ library?: string;
24
+ /**
25
+ * Set when the locked asset cannot be checked or is not in place: its library is
26
+ * not registered (renamed or removed), its deployed copy is gone, or the lock does not
27
+ * cover it ({@link AssetManager.projectState}). Such a row has no `latestVersion`.
28
+ */
29
+ problem?: string;
30
+ /**
31
+ * Library-origin asset only: the library's files on disk differ from the content
32
+ * hash recorded in the lock at the same version (edited in place, no version bump).
33
+ * `skaile update` re-locks and re-deploys them; `install` keeps the lock (OQ13).
34
+ */
35
+ contentChanged?: boolean;
36
+ /**
37
+ * Library-origin asset only: the library now holds this OLDER version than the lock. `install`
38
+ * keeps the lock and the deployed copy; only `update` moves it back (`replaced X → Y`).
39
+ */
40
+ libraryOlder?: string;
41
+ /**
42
+ * Library-origin asset only: the library `update` would re-lock the asset from, when it is
43
+ * not the one the lock names (`library`), e.g. after `skaile library default <other>`.
44
+ */
45
+ movesTo?: string;
46
+ /**
47
+ * Source asset only: the version the next `install` or `update` locks it under, when that
48
+ * is not the locked key. A `0.0.0-sha.<commit>` key whose file now declares a version is
49
+ * re-keyed (`0.0.0-sha.7de3555 → 0.2.0`, p914).
50
+ */
51
+ rekeyTo?: string;
52
+ /**
53
+ * Set when the row only reports a newer version than the `#version` pin of the asset's ref
54
+ * in `skaile.yaml` (`latestVersion`). The pin is deliberate: `update` leaves it and `outdated`
55
+ * does not fail on it.
56
+ */
57
+ pinned?: boolean;
58
+ /**
59
+ * Set on a `problem` row whose cause `skaile install` cannot fix: the asset's library is
60
+ * gone or its publisher changed, so the ref resolves nowhere. `problem` names what to
61
+ * change instead (`skaile library init …`, the ref under its new publisher).
62
+ */
63
+ manualFix?: true;
64
+ }
65
+ /** Outdated. One layer of the `AssetManager` class chain (see `asset-manager/CLAUDE.md`). */
66
+ export declare abstract class AmReadOutdated extends AmReadGraph {
67
+ /**
68
+ * List installed assets that have a newer upstream available.
69
+ *
70
+ * Two kinds of staleness are reported:
71
+ * - **Source assets** — only remote repositories (not local paths) are checked;
72
+ * `behind` counts the commits the clone is missing from the remote plus the
73
+ * commits the clone moved past the locked commit (`source sync` after `add`).
74
+ * - **Library assets** — a library-origin lock entry whose library files on disk
75
+ * (not the index, which lags until `skaile library index`) hold a newer version
76
+ * than the locked one (`latestVersion`, `library` set), or the same version with
77
+ * different bytes (`contentChanged`). `behind` is 0.
78
+ * - **Project state** — every {@link AssetManager.projectState} gap (an unregistered or
79
+ * renamed library, a missing deployed copy, a declared dependency or a deployed asset's
80
+ * `requires` with no lock entry, a lock that contradicts a `skaile.yaml` pin) as a
81
+ * `problem` row, so `outdated` lists what `check`, `doctor` and `install --locked` fail
82
+ * on. An asset that also has a version row is listed once, with that row.
83
+ *
84
+ * @returns Array of {@link OutdatedEntry} objects.
85
+ */
86
+ outdated(): Promise<OutdatedEntry[]>;
87
+ /**
88
+ * The `#pin` of every publisher-qualified `skaile.yaml` dependency, keyed `kind:publisher/name`
89
+ * (no scope sigil). `update` honours it, so `outdated` must not list a move it keeps.
90
+ */
91
+ protected declaredPinsByIdentity(): Map<string, string>;
92
+ /**
93
+ * List a locked asset whose `skaile.yaml` ref carries a `#version` pin while a source, a
94
+ * library or a store holds a newer one: `locked 0.7.0 -> 0.9.0 (pinned)`. The pin is the
95
+ * user's choice, so the row only informs (`pinned`): `update` leaves it, `outdated` does not
96
+ * fail on it (OQ13, p1291). An asset already listed keeps its own row.
97
+ */
98
+ protected addPinnedRows(lock: LockFile, rows: OutdatedEntry[]): Promise<void>;
99
+ /**
100
+ * Ask the stores about every locked asset whose lock entry says `origin: store`, and record
101
+ * those no store could be asked about (the URL did not answer, or the client is air-gapped)
102
+ * for {@link takeStoreNotChecked}. `outdated` runs it, and so do `check` and `doctor`, which
103
+ * otherwise never ask a store: without it a dead store reads as "everything is fine".
104
+ * A store that answers, and a client that skips the store on purpose
105
+ * (`catalogUrl: ''`, `--no-catalog`), record nothing. A ref already recorded is not asked again.
106
+ */
107
+ probeStoreOrigins(): Promise<void>;
108
+ /**
109
+ * List a source asset locked under a `0.0.0-sha.<commit>` key whose file now declares a
110
+ * version: the next `install` or `update` re-keys it (`replaced 0.0.0-sha.7de3555 → 0.2.0`),
111
+ * so `outdated` lists it as `re-key (…)` instead of saying everything is up to date (p914).
112
+ * An asset already listed (behind its remote) gets the target on that row.
113
+ */
114
+ protected addRekeyRows(lock: LockFile, rows: OutdatedEntry[]): Promise<void>;
115
+ /**
116
+ * List a locked library asset that `update` would move to another library (a default-library
117
+ * switch, a library that now holds a newer version) as `library → movesTo`, so `outdated`
118
+ * does not say "up to date" and `update` then re-locks it announced only after the fact.
119
+ * The resolution is the one `update` runs ({@link lockedPreference}); an asset already listed
120
+ * with a version row gets the target library on that row.
121
+ */
122
+ protected addLibraryMoves(libraryAssets: Array<[string, LockEntry]>, rows: OutdatedEntry[]): Promise<void>;
123
+ /**
124
+ * Add one `problem` row per {@link AssetManager.projectState} gap whose asset is not
125
+ * listed yet, so `outdated` lists the same assets `check`, `doctor` and `install --locked`
126
+ * fail on. An asset that is behind its source and also broken is listed once, with its
127
+ * version row.
128
+ */
129
+ protected addLockGapRows(rows: OutdatedEntry[]): Promise<OutdatedEntry[]>;
130
+ /**
131
+ * The deploy entry of a library-origin asset from the library its lock entry records,
132
+ * at the locked version when that library still holds it (else its newest). Other
133
+ * libraries holding the same ref are not consulted: the lock already chose.
134
+ *
135
+ * @param want - Kind, name and optional publisher of the asset.
136
+ * @returns `null` when the lock has no library-origin entry for it, or the recorded
137
+ * library is gone or no longer holds it (callers fall back to a general lookup).
138
+ */
139
+ protected lockedLibraryEntry(want: AssetRef): Promise<DeployableEntry | null>;
140
+ /**
141
+ * The deploy entry of a source- or store-origin asset, carrying the file set its lock entry
142
+ * lists (so a missing or edited helper shows in `diff`, not only the manifest). A source asset
143
+ * reads from its clone; a store asset from the bytes `add`/`install` staged in the project
144
+ * store cache. `null` when the lock has no such entry or its bytes are not on disk.
145
+ *
146
+ * @param want - Kind, name and optional publisher of the asset.
147
+ */
148
+ protected lockedSourceEntry(want: AssetRef): DeployableEntry | null;
149
+ /** Whether the lock holds `want` as a store asset (`origin: store`, no library). */
150
+ protected isStorePinnedRef(want: AssetRef): boolean;
151
+ }
152
+ //# sourceMappingURL=outdated.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"outdated.d.ts","sourceRoot":"","sources":["../../../../asset-manager/src/read/outdated.ts"],"names":[],"mappings":"AAGA,OAAO,EAWL,KAAK,QAAQ,EAEb,KAAK,SAAS,EACd,KAAK,QAAQ,EACd,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAuB,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAK5E,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAyEzC;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,mEAAmE;IACnE,IAAI,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,gEAAgE;IAChE,cAAc,EAAE,MAAM,CAAC;IACvB,kGAAkG;IAClG,MAAM,EAAE,MAAM,CAAC;IACf,yGAAyG;IACzG,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gFAAgF;IAChF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;;OAIG;IACH,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB;AAED,6FAA6F;AAC7F,8BAAsB,cAAe,SAAQ,WAAW;IACtD;;;;;;;;;;;;;;;;;;OAkBG;IACG,QAAQ,IAAI,OAAO,CAAC,aAAa,EAAE,CAAC;IAgP1C;;;OAGG;IACH,SAAS,CAAC,sBAAsB,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC;IAevD;;;;;OAKG;cACa,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAiEnF;;;;;;;OAOG;IACG,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAsCxC;;;;;OAKG;cACa,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IA0ClF;;;;;;OAMG;cACa,eAAe,CAC7B,aAAa,EAAE,KAAK,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,EACzC,IAAI,EAAE,aAAa,EAAE,GACpB,OAAO,CAAC,IAAI,CAAC;IAwDhB;;;;;OAKG;cACa,cAAc,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAoB/E;;;;;;;;OAQG;cACa,kBAAkB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IA0BnF;;;;;;;OAOG;IACH,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,eAAe,GAAG,IAAI;IAwBnE,oFAAoF;IACpF,SAAS,CAAC,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO;CAYpD"}