@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
@@ -1,12 +1,13 @@
1
- import { factoryAssetRoots, resolveWorkspacesPackageRoot } from './chunk-CJO3XKO7.js';
1
+ import { factoryAssetRoots, resolveWorkspacesPackageRoot } from './chunk-ETGC2MEM.js';
2
2
  import { deployedBase } from './chunk-5KRMNUL4.js';
3
3
  import { DEFAULT_HARNESS_ID } from './chunk-C5HFK34M.js';
4
- import { ConfigParseError, valueShapeError, parseSourceEntries, resolveSkWorkspaceConfig } from './chunk-BNLXZXZN.js';
4
+ import { ConfigParseError, valueShapeError, parseSourceEntries, resolveSkWorkspaceConfig } from './chunk-BRAOB37W.js';
5
5
  import { globalSkaileDir } from './chunk-L5VSIPQD.js';
6
6
  import { harnessNameForHarnessId, SUPPORTED_HARNESSES } from './chunk-VTETQCR6.js';
7
- import { sha256Hex, compositeSha256, orderedAsset, ASSET_KEY_ORDER } from './chunk-MS2IXLTC.js';
8
- import { yamlQuotingHint } from './chunk-VS6XC5JE.js';
9
- import { parseAssetRefLoose } from './chunk-7HRZACI4.js';
7
+ import { sha256Hex, compositeSha256, orderedAsset, ASSET_KEY_ORDER } from './chunk-PMXTBWFD.js';
8
+ import { yamlQuotingHint } from './chunk-2MTRRK37.js';
9
+ import { parseAssetRefLoose, parsePublisher, parseAssetRef, isValidAssetName, ASSET_NAME_HINT } from './chunk-HW4BDJPC.js';
10
+ import { ANTHROPIC_MODEL_ALIASES, SKILL_DESCRIPTION_PLACEHOLDER_PREFIX, isScaffoldBody, FLOW_DESCRIPTION_PLACEHOLDER, FLOW_NODE_INSTRUCTION_PLACEHOLDER, PRESET_DESCRIPTION_PLACEHOLDER, PRESET_ITEM_PLACEHOLDER_REF } from './chunk-LCXQ4LVP.js';
10
11
  import { validateRegistry, mergeRegistries, validateMergedRegistry } from './chunk-RXGPFAMN.js';
11
12
  import fs, { existsSync, readFileSync, writeFileSync, realpathSync, renameSync, rmSync, mkdirSync, cpSync, readdirSync } from 'fs';
12
13
  import path, { join, resolve, basename, dirname } from 'path';
@@ -55,6 +56,13 @@ function repoUrlKey(url) {
55
56
  return url.trim().replace(/^git@([^:]+):/, "https://$1/").replace(/^[a-z]+:\/\//i, "").replace(/\/+$/, "").replace(/\.git$/i, "").replace(/\/+$/, "").toLowerCase();
56
57
  }
57
58
  var FACTORY_URL_KEY = repoUrlKey(FACTORY_SOURCE_URL);
59
+ function sourceRowKey(row) {
60
+ return `${row.url}
61
+ ${row.commit}`;
62
+ }
63
+ function compareSourceRows(a, b) {
64
+ return a.url.localeCompare(b.url) || a.commit.localeCompare(b.commit);
65
+ }
58
66
  var factoryVersionCache;
59
67
  function factoryBundleVersion() {
60
68
  if (factoryVersionCache !== void 0) return factoryVersionCache;
@@ -91,12 +99,13 @@ function lockToDisk(lock, prevAssets) {
91
99
  const hasMemoryRow = lock.sources.some((s) => isFactoryMemorySource(s));
92
100
  if (!anyFactory && !hasMemoryRow) return lock;
93
101
  const rows = /* @__PURE__ */ new Map();
94
- for (const s of lock.sources) if (!isFactoryMemorySource(s)) rows.set(s.url, s);
95
- for (const s of sourcesOfAssets(assets)) if (!rows.has(s.url)) rows.set(s.url, s);
102
+ for (const s of lock.sources) if (!isFactoryMemorySource(s)) rows.set(sourceRowKey(s), s);
103
+ for (const s of sourcesOfAssets(assets))
104
+ if (!rows.has(sourceRowKey(s))) rows.set(sourceRowKey(s), s);
96
105
  return {
97
106
  ...lock,
98
107
  assets,
99
- sources: [...rows.values()].sort((a, b) => a.url.localeCompare(b.url))
108
+ sources: [...rows.values()].sort(compareSourceRows)
100
109
  };
101
110
  }
102
111
  function lockFromDisk(lock) {
@@ -116,19 +125,21 @@ function lockFromDisk(lock) {
116
125
  const sources = Array.isArray(lock.sources) ? lock.sources : [];
117
126
  if (!any && !sources.some((s) => s.url === LOCK_FACTORY_URL)) return lock;
118
127
  const rows = /* @__PURE__ */ new Map();
128
+ const rowKeyOf = (s) => `${repoUrlKey(s.url)}
129
+ ${s.commit}`;
119
130
  for (const s of sources) {
120
- if (s.url !== LOCK_FACTORY_URL) rows.set(repoUrlKey(s.url), s);
121
- }
122
- if (!rows.has(FACTORY_URL_KEY)) {
123
- rows.set(FACTORY_URL_KEY, { url: FACTORY_SOURCE_URL, commit: FACTORY_MEMORY_COMMIT });
131
+ if (s.url !== LOCK_FACTORY_URL) rows.set(rowKeyOf(s), s);
124
132
  }
133
+ const factoryRow = { url: FACTORY_SOURCE_URL, commit: FACTORY_MEMORY_COMMIT };
134
+ if (!rows.has(rowKeyOf(factoryRow))) rows.set(rowKeyOf(factoryRow), factoryRow);
125
135
  return {
126
136
  ...lock,
127
137
  assets,
128
- sources: [...rows.values()].sort((a, b) => a.url.localeCompare(b.url))
138
+ sources: [...rows.values()].sort(compareSourceRows)
129
139
  };
130
140
  }
131
- var LOCK_SCHEMA_VERSION = 4;
141
+ var LOCK_SCHEMA_VERSION = 5;
142
+ var READABLE_LOCK_SCHEMAS = [3, 4, 5];
132
143
  function canonicalize(value) {
133
144
  if (Array.isArray(value)) return value.map(canonicalize);
134
145
  if (value && typeof value === "object") {
@@ -188,7 +199,9 @@ function writeLock(lockPath, data) {
188
199
  if (existsSync(lockPath)) {
189
200
  onDisk = parseLockYaml(readFileSync(lockPath, "utf8"), basename(lockPath));
190
201
  }
191
- const next = stringifyLock(lockToDisk(data, onDisk?.assets));
202
+ const next = stringifyLock(
203
+ lockToDisk({ ...data, schema_version: LOCK_SCHEMA_VERSION }, onDisk?.assets)
204
+ );
192
205
  if (onDisk && typeof onDisk === "object" && typeof onDisk.locked_at === "string") {
193
206
  try {
194
207
  if (stringifyLock({ ...onDisk, locked_at: data.locked_at }) === next) return false;
@@ -203,7 +216,7 @@ function readLock(lockPath) {
203
216
  const raw = parseLockYaml(readFileSync(lockPath, "utf8"), basename(lockPath));
204
217
  if (!raw || typeof raw !== "object") return null;
205
218
  const r = raw;
206
- if (r.schema_version !== 3 && r.schema_version !== 4) {
219
+ if (!READABLE_LOCK_SCHEMAS.includes(r.schema_version)) {
207
220
  throw new Error(
208
221
  "outdated lockfile schema detected \u2014 the lockfile shape changed. Regenerate: `rm skaile.lock.yaml && skaile install`."
209
222
  );
@@ -237,6 +250,7 @@ function buildLibraryLockEntries(inputs) {
237
250
  for (const i of inputs) {
238
251
  const key = `${i.kind}:@${i.publisher}/${i.name}#${i.library.version}`;
239
252
  const library = { name: i.library.name, version: i.library.version };
253
+ if (i.library.id) library.id = i.library.id;
240
254
  if (i.library.sha256) library.sha256 = i.library.sha256;
241
255
  if (i.library.url) library.url = i.library.url;
242
256
  if (i.library.installed) library.installed = i.library.installed;
@@ -286,39 +300,37 @@ function lockRequires(c) {
286
300
  return refs.size > 0 ? { requires: [...refs].sort() } : {};
287
301
  }
288
302
  function sourcesOfAssets(assets) {
289
- const byUrl = /* @__PURE__ */ new Map();
290
- const keys = Object.keys(assets).sort();
291
- const isStore = (k) => assets[k]?.origin === "store";
292
- for (const key of [...keys.filter((k) => !isStore(k)), ...keys.filter(isStore)]) {
293
- const source = assets[key]?.source;
294
- if (source && !byUrl.has(source.url)) {
295
- byUrl.set(source.url, { url: source.url, commit: source.commit });
296
- }
297
- }
298
- return [...byUrl.values()].sort((a, b) => a.url.localeCompare(b.url));
303
+ const byRow = /* @__PURE__ */ new Map();
304
+ const entries = Object.values(assets).filter((e) => e.source);
305
+ const sourceUrls = new Set(entries.filter((e) => e.origin !== "store").map((e) => e.source?.url));
306
+ for (const entry of entries) {
307
+ const source = entry.source;
308
+ if (entry.origin === "store" && sourceUrls.has(source.url)) continue;
309
+ const row = { url: source.url, commit: source.commit };
310
+ const key = sourceRowKey(row);
311
+ if (!byRow.has(key)) byRow.set(key, row);
312
+ }
313
+ return [...byRow.values()].sort(compareSourceRows);
299
314
  }
300
315
  function cloneBackedSources(lock) {
301
- const urls = /* @__PURE__ */ new Set();
316
+ const rows = /* @__PURE__ */ new Set();
302
317
  for (const entry of Object.values(lock.assets)) {
303
- if (entry.source && entry.origin !== "store") urls.add(entry.source.url);
318
+ if (entry.source && entry.origin !== "store") rows.add(sourceRowKey(entry.source));
304
319
  }
305
- return lock.sources.filter((s) => urls.has(s.url));
320
+ return lock.sources.filter((s) => rows.has(sourceRowKey(s)));
306
321
  }
307
322
  function resyncLockSources(lock, droppedUrls = []) {
308
- const sources = new Map(lock.sources.map((s) => [s.url, s]));
309
323
  const live = sourcesOfAssets(lock.assets);
310
324
  const liveUrls = new Set(live.map((s) => s.url));
311
- for (const url of droppedUrls) if (!liveUrls.has(url)) sources.delete(url);
312
- for (const s of live) sources.set(s.url, s);
325
+ const dropped = new Set(droppedUrls);
326
+ const kept = lock.sources.filter((s) => !liveUrls.has(s.url) && !dropped.has(s.url));
313
327
  return {
314
328
  ...lock,
315
- sources: [...sources.values()].sort((a, b) => a.url.localeCompare(b.url))
329
+ sources: [...kept, ...live].sort(compareSourceRows)
316
330
  };
317
331
  }
318
332
  function mergeLockFile(prev, fresh) {
319
333
  if (!prev) return fresh;
320
- const sources = new Map(prev.sources.map((s) => [s.url, s]));
321
- for (const s of fresh.sources) sources.set(s.url, s);
322
334
  const assets = { ...prev.assets };
323
335
  for (const key of Object.keys(fresh.assets)) {
324
336
  const freshId = identityOfLockKey(key);
@@ -329,11 +341,16 @@ function mergeLockFile(prev, fresh) {
329
341
  }
330
342
  const presets = mergePresetRefs(prev.presets, fresh.presets);
331
343
  const mergedAssets = { ...assets, ...fresh.assets };
332
- for (const s of sourcesOfAssets(mergedAssets)) sources.set(s.url, s);
344
+ const live = sourcesOfAssets(mergedAssets);
345
+ const liveUrls = new Set(live.map((s) => s.url));
346
+ const unused = /* @__PURE__ */ new Map();
347
+ for (const s of [...prev.sources, ...fresh.sources]) {
348
+ if (!liveUrls.has(s.url)) unused.set(sourceRowKey(s), s);
349
+ }
333
350
  return {
334
351
  ...fresh,
335
352
  assets: mergedAssets,
336
- sources: [...sources.values()].sort((a, b) => a.url.localeCompare(b.url)),
353
+ sources: [...unused.values(), ...live].sort(compareSourceRows),
337
354
  // buildLockFile never emits a plugins slice — preserve the reconciler's.
338
355
  plugins: prev.plugins,
339
356
  presets
@@ -638,6 +655,197 @@ function checkAgentSkillConformance(frontmatter, opts = {}) {
638
655
  }
639
656
  return out;
640
657
  }
658
+
659
+ // core/src/check-asset.ts
660
+ var ALL_STAGES = [
661
+ "identity",
662
+ "file",
663
+ "version",
664
+ "schema",
665
+ "scaffold",
666
+ "references",
667
+ "definition",
668
+ "conformance"
669
+ ];
670
+ var CHECK_SETS = {
671
+ create: ALL_STAGES,
672
+ import: ALL_STAGES,
673
+ migrate: ALL_STAGES,
674
+ validate: ALL_STAGES,
675
+ publish: ALL_STAGES,
676
+ index: ALL_STAGES
677
+ };
678
+ var UNUSED_KEYS = ["reads_from", "writes_to"];
679
+ function finding(kind, text, extra = {}) {
680
+ return { tag: kind, text, ...extra };
681
+ }
682
+ function identityFindings(input) {
683
+ const { kind, parsed } = input;
684
+ const out = [];
685
+ let publisher;
686
+ if (parsed.publisher !== void 0 && parsed.publisher !== null) {
687
+ const res = parsePublisher(parsed.publisher);
688
+ if (res.ok) publisher = res.publisher;
689
+ else out.push(finding(kind, res.message, { code: res.code, fix: res.fix }));
690
+ }
691
+ const identity = kind === "flow" ? parsed.id : parsed.name;
692
+ if (typeof identity !== "string" || identity.length === 0) return out;
693
+ if (publisher !== void 0) {
694
+ try {
695
+ parseAssetRef(`${kind}:@${publisher}/${identity}`);
696
+ } catch (e) {
697
+ out.push(
698
+ finding(kind, e instanceof Error ? e.message : String(e), { code: "invalid_asset_name" })
699
+ );
700
+ }
701
+ } else if (!isValidAssetName(identity)) {
702
+ out.push(
703
+ finding(
704
+ kind,
705
+ `invalid asset ${kind === "flow" ? "id" : "name"} "${identity}" \u2014 ${ASSET_NAME_HINT}`,
706
+ { code: "invalid_asset_name" }
707
+ )
708
+ );
709
+ }
710
+ return out;
711
+ }
712
+ function scaffoldDefinitionErrors(kind, parsed) {
713
+ const out = [];
714
+ if (kind === "flow") {
715
+ if (parsed.description === FLOW_DESCRIPTION_PLACEHOLDER) {
716
+ out.push("description is still the scaffold placeholder; say what the flow does");
717
+ }
718
+ if (parsed.nodes === void 0) {
719
+ out.push("nodes is missing; a flow needs at least one node");
720
+ } else if (Array.isArray(parsed.nodes) && parsed.nodes.length === 0) {
721
+ out.push("nodes is still the scaffold placeholder (nodes: []); add the flow's nodes");
722
+ } else if (Array.isArray(parsed.nodes)) {
723
+ for (const node of parsed.nodes) {
724
+ if (typeof node !== "object" || node === null || !("run" in node)) continue;
725
+ const run = node.run;
726
+ if (typeof run !== "object" || run === null || !("instruction" in run)) continue;
727
+ if (run.instruction === FLOW_NODE_INSTRUCTION_PLACEHOLDER) {
728
+ const id = "id" in node ? String(node.id) : "?";
729
+ out.push(
730
+ `node "${id}" instruction is still the scaffold placeholder; say what the step does`
731
+ );
732
+ }
733
+ }
734
+ }
735
+ }
736
+ if (kind === "preset") {
737
+ if (parsed.description === PRESET_DESCRIPTION_PLACEHOLDER) {
738
+ out.push(
739
+ `description is still the scaffold placeholder ("${PRESET_DESCRIPTION_PLACEHOLDER}"); say what the preset does`
740
+ );
741
+ }
742
+ const items = Array.isArray(parsed.items) ? parsed.items : [];
743
+ const placeholderItem = items.some((item) => {
744
+ const ref = typeof item === "string" ? item : item?.ref;
745
+ return typeof ref === "string" && ref.trim() === PRESET_ITEM_PLACEHOLDER_REF;
746
+ });
747
+ if (placeholderItem) {
748
+ out.push(
749
+ `item ${PRESET_ITEM_PLACEHOLDER_REF} is still the scaffold placeholder; replace it with the preset's real items`
750
+ );
751
+ }
752
+ }
753
+ return out;
754
+ }
755
+ function scaffoldFindings(input) {
756
+ const { kind, parsed, body } = input;
757
+ const out = [];
758
+ const scaffold = (text, extra = {}) => {
759
+ out.push(finding(kind, text, { code: "scaffold_placeholder", ...extra }));
760
+ };
761
+ const description = parsed.description;
762
+ if (kind !== "skill" && typeof description === "string" && description.trim().startsWith(SKILL_DESCRIPTION_PLACEHOLDER_PREFIX)) {
763
+ scaffold(
764
+ `description: description is still the scaffold placeholder (${SKILL_DESCRIPTION_PLACEHOLDER_PREFIX} \u2026) \u2014 say what the ${kind} does and when to use it`
765
+ );
766
+ }
767
+ for (const text of scaffoldDefinitionErrors(kind, parsed)) scaffold(text);
768
+ if (isScaffoldBody(kind, body)) {
769
+ const noun = kind === "skill" ? "skill prompt" : kind;
770
+ scaffold(`body is still the scaffold placeholder; write the ${noun}`, { scaffoldBody: true });
771
+ }
772
+ return out;
773
+ }
774
+ function conformanceFindings(input) {
775
+ const { kind, parsed, dirName } = input;
776
+ const out = [];
777
+ if (kind === "skill") {
778
+ for (const f of checkAgentSkillConformance(parsed, { dirName })) {
779
+ out.push({
780
+ tag: "skill conformance",
781
+ text: `${f.field}: ${f.message}`,
782
+ code: "skill_conformance",
783
+ conformance: true
784
+ });
785
+ }
786
+ }
787
+ for (const key of UNUSED_KEYS) {
788
+ if (key in parsed) {
789
+ out.push(
790
+ finding(
791
+ kind,
792
+ `${key}: unknown key; nothing in skaile reads it, so it has no effect. Remove it`,
793
+ { code: "unused_key", conformance: false }
794
+ )
795
+ );
796
+ }
797
+ }
798
+ return out;
799
+ }
800
+ function checkAsset(command, input, deps, opts = {}) {
801
+ const errors = [];
802
+ const warnings = [];
803
+ const take = (found) => {
804
+ if (found === void 0) return;
805
+ if (Array.isArray(found)) {
806
+ errors.push(...found);
807
+ } else {
808
+ errors.push(...found.errors);
809
+ warnings.push(...found.warnings);
810
+ }
811
+ };
812
+ for (const stage of CHECK_SETS[command]) {
813
+ switch (stage) {
814
+ case "identity":
815
+ errors.push(...identityFindings(input));
816
+ break;
817
+ case "scaffold":
818
+ errors.push(...scaffoldFindings(input));
819
+ break;
820
+ case "conformance":
821
+ warnings.push(...conformanceFindings(input));
822
+ break;
823
+ default:
824
+ take(deps[stage]?.(input));
825
+ }
826
+ }
827
+ if (!opts.strictConformance) return { errors, warnings };
828
+ const escalated = warnings.filter((f) => f.conformance);
829
+ return {
830
+ errors: [...errors, ...escalated],
831
+ warnings: warnings.filter((f) => !f.conformance)
832
+ };
833
+ }
834
+ var VALIDATE_SKIP_DIRS = /* @__PURE__ */ new Set([
835
+ "node_modules",
836
+ "dist",
837
+ ".git",
838
+ ".skaile",
839
+ "__pycache__",
840
+ ".claude",
841
+ ".codex",
842
+ ".omp"
843
+ ]);
844
+ function assetPathProblem(rel) {
845
+ const hit = rel.split(/[\\/]+/).find((segment) => VALIDATE_SKIP_DIRS.has(segment));
846
+ if (hit === void 0) return void 0;
847
+ return `"${hit}" is a folder validate and library index skip (${[...VALIDATE_SKIP_DIRS].join(", ")}): an asset in it would never be checked. Choose another folder.`;
848
+ }
641
849
  function extractForPatch(entry, patchDir) {
642
850
  const ref = `${entry.kind}-${entry.name}`;
643
851
  const dest = join(patchDir, ref);
@@ -1138,6 +1346,13 @@ async function listenWithProbe(server, port, host, _platform) {
1138
1346
  });
1139
1347
  }
1140
1348
 
1349
+ // core/src/harness-model.ts
1350
+ function modelForHarness(preferred, harness) {
1351
+ if (!preferred) return void 0;
1352
+ if (harness === void 0 || harnessNameForHarnessId(harness) === "claude-code") return preferred;
1353
+ return ANTHROPIC_MODEL_ALIASES.includes(preferred) ? void 0 : preferred;
1354
+ }
1355
+
1141
1356
  // core/src/agent-prompt-sections.ts
1142
1357
  var AGENT_PROMPT_SECTION_ORDER = [
1143
1358
  "soul",
@@ -1154,20 +1369,27 @@ function capMemoryContent(content, maxChars) {
1154
1369
  const text = content.trim();
1155
1370
  return text.length > maxChars ? text.slice(0, maxChars).trimEnd() : text;
1156
1371
  }
1372
+ function renderMemoryBlock(block) {
1373
+ const content = capMemoryContent(block.content, block.maxChars);
1374
+ if (!content) return void 0;
1375
+ return `<block name="${block.name}" scope="${block.scope}">
1376
+ ${content}
1377
+ </block>`;
1378
+ }
1157
1379
  function renderMemorySection(blocks) {
1158
1380
  const framed = [];
1159
1381
  for (const block of blocks) {
1160
- const content = capMemoryContent(block.content, block.maxChars);
1161
- if (!content) continue;
1162
- framed.push(`<block name="${block.name}" scope="${block.scope}">
1163
- ${content}
1164
- </block>`);
1382
+ const text = renderMemoryBlock(block);
1383
+ if (text) framed.push(text);
1165
1384
  }
1166
1385
  if (framed.length === 0) return void 0;
1167
1386
  return `<MEMORY>
1168
1387
  ${framed.join("\n")}
1169
1388
  </MEMORY>`;
1170
1389
  }
1390
+ function partMarker(id, source) {
1391
+ return `<!-- skaile:${id} ${JSON.stringify(source).replace(/>/g, "\\u003e")} -->`;
1392
+ }
1171
1393
  var partText = (part) => typeof part === "string" ? part : part.text;
1172
1394
  var partSource = (part) => typeof part === "string" ? void 0 : part.source;
1173
1395
  function buildAgentPromptSections(input) {
@@ -1179,7 +1401,10 @@ function buildAgentPromptSections(input) {
1179
1401
  const pushParts = (id, parts) => {
1180
1402
  for (const part of parts ?? []) {
1181
1403
  const text = partText(part);
1182
- if (text.trim()) push(id, text, partSource(part));
1404
+ if (!text.trim()) continue;
1405
+ const source = partSource(part);
1406
+ push(id, source ? `${partMarker(id, source)}
1407
+ ${text}` : text, source);
1183
1408
  }
1184
1409
  };
1185
1410
  push("soul", input.soul?.trim());
@@ -1211,6 +1436,121 @@ ${input.duties.trim()}`);
1211
1436
  pushParts("extensions", input.promptExtensions);
1212
1437
  return sections;
1213
1438
  }
1439
+ var allSections = (carrier) => Object.fromEntries(AGENT_PROMPT_SECTION_ORDER.map((id) => [id, carrier]));
1440
+ var AGENT_PROMPT_CARRIERS = {
1441
+ "claude-code": {
1442
+ ...allSections("file"),
1443
+ memory: "file-or-runner",
1444
+ duties: "file-or-runner",
1445
+ composed: "file-or-runner",
1446
+ extensions: "file-or-runner"
1447
+ },
1448
+ codex: {
1449
+ ...allSections("file"),
1450
+ memory: "file-or-runner",
1451
+ duties: "file-or-runner",
1452
+ composed: "file-or-runner",
1453
+ extensions: "file-or-runner"
1454
+ },
1455
+ omp: {
1456
+ soul: "runner",
1457
+ memory: "runner",
1458
+ fragments: "none",
1459
+ constraints: "file",
1460
+ duties: "runner",
1461
+ abilities: "none",
1462
+ contracts: "none",
1463
+ composed: "runner",
1464
+ extensions: "runner"
1465
+ },
1466
+ other: {
1467
+ soul: "none",
1468
+ memory: "runner",
1469
+ fragments: "none",
1470
+ constraints: "none",
1471
+ duties: "runner",
1472
+ abilities: "none",
1473
+ contracts: "none",
1474
+ composed: "runner",
1475
+ extensions: "runner"
1476
+ }
1477
+ };
1478
+ function agentPromptCarrierHarness(harness) {
1479
+ if (harness === void 0) return "claude-code";
1480
+ return harnessNameForHarnessId(harness) ?? "other";
1481
+ }
1482
+ var isSoulSeed = (block) => block.source?.replace(/^\.\//, "") === "SOUL.md";
1483
+ function assembleAgent(input, options = {}) {
1484
+ const memory = input.memory ?? [];
1485
+ const effective = memory.some(isSoulSeed) ? { ...input, soul: null } : input;
1486
+ const sections = buildAgentPromptSections(effective);
1487
+ const carriers = AGENT_PROMPT_CARRIERS[agentPromptCarrierHarness(options.harness)];
1488
+ const nativeFile = options.nativeFile;
1489
+ const stale = [];
1490
+ const holds = (text) => nativeFile !== void 0 && nativeFile.includes(text);
1491
+ const holdsIdentity = (identity) => nativeFile !== void 0 && (identity === DUTIES_HEADING ? /^## Duties$/m.test(nativeFile) : nativeFile.includes(identity));
1492
+ const liveMemory = carriers.memory === "file-or-runner" ? memory.filter((block) => {
1493
+ const text = renderMemoryBlock(block);
1494
+ if (text === void 0 || holds(text)) return false;
1495
+ if (block.persisted === false && holdsIdentity(`<block name="${block.name}" `)) {
1496
+ stale.push({ section: "memory", label: `memory block ${block.name}` });
1497
+ return false;
1498
+ }
1499
+ return true;
1500
+ }) : memory;
1501
+ const live = buildAgentPromptSections({ ...effective, memory: liveMemory });
1502
+ const runnerSections = live.filter((section) => {
1503
+ const carrier = carriers[section.id];
1504
+ if (carrier === "runner") return true;
1505
+ if (carrier !== "file-or-runner") return false;
1506
+ if (section.id === "memory") return true;
1507
+ if (holds(section.text)) return false;
1508
+ const identity = section.id === "duties" ? DUTIES_HEADING : section.source && (section.id === "composed" || section.id === "extensions") ? section.text.split("\n", 1)[0] : void 0;
1509
+ if (identity !== void 0 && holdsIdentity(identity)) {
1510
+ const label = section.id === "duties" ? "duties" : `${section.id === "composed" ? "composed block" : "prompt extension"} ${section.source}`;
1511
+ stale.push({ section: section.id, label });
1512
+ return false;
1513
+ }
1514
+ return true;
1515
+ });
1516
+ const systemPrompt = sections.map((s) => s.text).join("\n\n");
1517
+ return {
1518
+ sections,
1519
+ systemPrompt,
1520
+ sentPrompt: sections.filter((section) => carriers[section.id] !== "none").map((s) => s.text).join("\n\n"),
1521
+ carriers,
1522
+ runnerSections,
1523
+ stale
1524
+ };
1525
+ }
1526
+ var DUTIES_HEADING = "## Duties";
1527
+ var AGENT_PROMPT_CARRIER_LABELS = {
1528
+ file: "native file",
1529
+ "file-or-runner": "native file (runner adds it when the file lacks it)",
1530
+ runner: "runner only",
1531
+ none: "not sent"
1532
+ };
1533
+ var SECTION_LABELS = {
1534
+ soul: "Soul (`SOUL.md`)",
1535
+ memory: "Memory seeds (`<MEMORY>`)",
1536
+ fragments: "Framework fragments",
1537
+ constraints: "`## Constraints` (`RULES.md`)",
1538
+ duties: "`## Duties` (`DUTIES.md`)",
1539
+ abilities: "`## Installed Abilities`",
1540
+ contracts: "`## Contracts`",
1541
+ composed: "Composed inline blocks (rulesets, knowledge, `composes:`)",
1542
+ extensions: "Prompt extensions (`agent.prompt-extensions`)"
1543
+ };
1544
+ function renderAgentPromptCarrierTable() {
1545
+ const groups = ["claude-code", "codex", "omp", "other"];
1546
+ const head = ["Section", ...groups.map((g) => g === "other" ? "other harnesses" : `\`${g}\``)];
1547
+ const rows = AGENT_PROMPT_SECTION_ORDER.map((id) => [
1548
+ SECTION_LABELS[id],
1549
+ ...groups.map((g) => AGENT_PROMPT_CARRIER_LABELS[AGENT_PROMPT_CARRIERS[g][id]])
1550
+ ]);
1551
+ const line = (cells) => `| ${cells.join(" | ")} |`;
1552
+ return [line(head), line(head.map(() => "---")), ...rows.map(line)].join("\n");
1553
+ }
1214
1554
  function appendToSeq(node, value) {
1215
1555
  if (node.items.length === 0) node.flow = false;
1216
1556
  node.add(value);
@@ -1609,6 +1949,6 @@ var WorkspaceYamlEditor = class _WorkspaceYamlEditor {
1609
1949
  }
1610
1950
  };
1611
1951
 
1612
- export { AGENT_PROMPT_SECTION_ORDER, FACTORY_SOURCE_URL, GLOBAL_INSTALL_DIR_NAME, LOCK_FACTORY_URL, LOCK_SCHEMA_VERSION, LockParseError, ManifestYamlEditor, PROVIDERS_FILENAME, SETTINGS_DEFAULTS, WorkspaceYamlEditor, aiResourceRoots, applyPatch, assertLockHashes, buildAgentPromptSections, buildLibraryLockEntries, buildLockFile, capMemoryContent, checkAgentSkillConformance, cloneBackedSources, computeHash, connectProbe, defaultLibraryDir, detectPackageManager, extractForPatch, findProjectPackageDir, generatePatch, globalInstallDir, globalSettingsPath, harnessSdkMissingError, holdsWildcard, installCommand, installCommandFor, isFactoryMemorySource, listPatches, listenWithProbe, loadHarnessSdk, loadHarnessSdkSubpath, loadProviderRegistry, loadProviderRegistryFile, loadSettings, mapLegacyFields, maskApiKey, mergeLockFile, migrateSettings, needsWildcardProbe, portIsHeld, probeHosts, projectAssetRoots, projectSettingsPath, readLock, readPatch, readPluginsLockSlice, renderMemorySection, resolveConfiguredHarnessName, resolveLibraryDir, resolveSettings, resolveSettingsWithSources, resyncLockSources, savePatch, saveProviderRegistryFile, saveSettings, sdkLookupPlaces, skaileInstallDir, userProviderRegistryPath, verifyLock, verifyLockEntry, walkForSettings, workspaceProviderRegistryPath, writeLock, writePluginsLockSlice };
1613
- //# sourceMappingURL=chunk-MEU2HHGV.js.map
1614
- //# sourceMappingURL=chunk-MEU2HHGV.js.map
1952
+ export { AGENT_PROMPT_CARRIERS, AGENT_PROMPT_CARRIER_LABELS, AGENT_PROMPT_SECTION_ORDER, CHECK_SETS, FACTORY_SOURCE_URL, GLOBAL_INSTALL_DIR_NAME, LOCK_FACTORY_URL, LOCK_SCHEMA_VERSION, LockParseError, ManifestYamlEditor, PROVIDERS_FILENAME, SETTINGS_DEFAULTS, VALIDATE_SKIP_DIRS, WorkspaceYamlEditor, agentPromptCarrierHarness, aiResourceRoots, applyPatch, assembleAgent, assertLockHashes, assetPathProblem, buildAgentPromptSections, buildLibraryLockEntries, buildLockFile, capMemoryContent, checkAgentSkillConformance, checkAsset, cloneBackedSources, computeHash, connectProbe, defaultLibraryDir, detectPackageManager, extractForPatch, findProjectPackageDir, generatePatch, globalInstallDir, globalSettingsPath, harnessSdkMissingError, holdsWildcard, identityFindings, installCommand, installCommandFor, isFactoryMemorySource, listPatches, listenWithProbe, loadHarnessSdk, loadHarnessSdkSubpath, loadProviderRegistry, loadProviderRegistryFile, loadSettings, mapLegacyFields, maskApiKey, mergeLockFile, migrateSettings, modelForHarness, needsWildcardProbe, portIsHeld, probeHosts, projectAssetRoots, projectSettingsPath, readLock, readPatch, readPluginsLockSlice, renderAgentPromptCarrierTable, renderMemorySection, resolveConfiguredHarnessName, resolveLibraryDir, resolveSettings, resolveSettingsWithSources, resyncLockSources, savePatch, saveProviderRegistryFile, saveSettings, sdkLookupPlaces, skaileInstallDir, userProviderRegistryPath, verifyLock, verifyLockEntry, walkForSettings, workspaceProviderRegistryPath, writeLock, writePluginsLockSlice };
1953
+ //# sourceMappingURL=chunk-U7P22GEB.js.map
1954
+ //# sourceMappingURL=chunk-U7P22GEB.js.map