@skaile/workspaces 5.18.1 → 6.0.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 (746) hide show
  1. package/CHANGELOG.md +88 -0
  2. package/README.md +8 -8
  3. package/dist/app-sdk/index.js +1 -1
  4. package/dist/{asset-feeds-MKB5JUML.js → asset-feeds-PXUWCXVI.js} +21 -21
  5. package/dist/{asset-feeds-MKB5JUML.js.map → asset-feeds-PXUWCXVI.js.map} +1 -1
  6. package/dist/asset-manager/catalog-deployer.js +10 -10
  7. package/dist/asset-manager/index.js +17 -17
  8. package/dist/asset-manager/installer.js +13 -13
  9. package/dist/asset-manager/renderers.js +12 -12
  10. package/dist/asset-manager/src/index.d.ts +113 -24
  11. package/dist/asset-manager/src/index.d.ts.map +1 -1
  12. package/dist/asset-manager/src/install-agent.d.ts +2 -2
  13. package/dist/asset-manager/src/install-agent.d.ts.map +1 -1
  14. package/dist/asset-manager/src/install-instances.d.ts +8 -8
  15. package/dist/asset-manager/src/install-instances.d.ts.map +1 -1
  16. package/dist/asset-manager/src/installer.d.ts +3 -3
  17. package/dist/asset-manager/src/installer.d.ts.map +1 -1
  18. package/dist/asset-manager/src/mcp-config.d.ts +39 -13
  19. package/dist/asset-manager/src/mcp-config.d.ts.map +1 -1
  20. package/dist/asset-manager/src/renderers.d.ts +12 -12
  21. package/dist/asset-manager/src/renderers.d.ts.map +1 -1
  22. package/dist/bridge/codex-app-server.js +2 -2
  23. package/dist/bridge/harnesses/claude-sdk.d.ts +2 -0
  24. package/dist/bridge/{drivers → harnesses}/claude-sdk.js +75 -73
  25. package/dist/bridge/harnesses/claude-sdk.js.map +1 -0
  26. package/dist/bridge/{drivers/gemini.d.ts → harnesses/codex.d.ts} +1 -1
  27. package/dist/bridge/{drivers → harnesses}/codex.js +52 -52
  28. package/dist/bridge/harnesses/codex.js.map +1 -0
  29. package/dist/bridge/{drivers/claude-sdk.d.ts → harnesses/continue.d.ts} +1 -1
  30. package/dist/bridge/{drivers → harnesses}/continue.js +29 -29
  31. package/dist/bridge/harnesses/continue.js.map +1 -0
  32. package/dist/bridge/{drivers → harnesses}/echo.d.ts +1 -1
  33. package/dist/bridge/{drivers → harnesses}/echo.js +27 -27
  34. package/dist/bridge/harnesses/echo.js.map +1 -0
  35. package/dist/bridge/{drivers/continue.d.ts → harnesses/gemini.d.ts} +1 -1
  36. package/dist/bridge/harnesses/gemini.js +18 -0
  37. package/dist/bridge/{drivers → harnesses}/goose.d.ts +1 -1
  38. package/dist/bridge/{drivers → harnesses}/goose.js +29 -29
  39. package/dist/bridge/harnesses/goose.js.map +1 -0
  40. package/dist/bridge/{drivers → harnesses}/omp.d.ts +1 -1
  41. package/dist/bridge/{drivers → harnesses}/omp.js +43 -485
  42. package/dist/bridge/harnesses/omp.js.map +1 -0
  43. package/dist/bridge/{drivers → harnesses}/opencode.d.ts +1 -1
  44. package/dist/bridge/{drivers → harnesses}/opencode.js +30 -30
  45. package/dist/bridge/harnesses/opencode.js.map +1 -0
  46. package/dist/bridge/{drivers → harnesses}/qwen.d.ts +1 -1
  47. package/dist/bridge/{drivers → harnesses}/qwen.js +20 -20
  48. package/dist/bridge/harnesses/qwen.js.map +1 -0
  49. package/dist/bridge/index.js +24 -22
  50. package/dist/bridge/src/agent-exec.d.ts +2 -2
  51. package/dist/bridge/src/agent-transcript.d.ts +1 -1
  52. package/dist/bridge/src/agent-transcript.d.ts.map +1 -1
  53. package/dist/bridge/src/approval-card.d.ts +3 -3
  54. package/dist/bridge/src/capability-dispatch.d.ts +5 -5
  55. package/dist/bridge/src/cloud.d.ts +4 -4
  56. package/dist/bridge/src/codex/config-toml.d.ts +3 -3
  57. package/dist/bridge/src/codex/friendly-error.d.ts +1 -1
  58. package/dist/bridge/src/codex/friendly-error.d.ts.map +1 -1
  59. package/dist/bridge/src/codex/{managed-driver.d.ts → managed-harness.d.ts} +5 -5
  60. package/dist/bridge/src/codex/managed-harness.d.ts.map +1 -0
  61. package/dist/bridge/src/codex/native-approvals.d.ts +1 -1
  62. package/dist/bridge/src/codex/native-approvals.d.ts.map +1 -1
  63. package/dist/bridge/src/error-classifier.d.ts +7 -7
  64. package/dist/bridge/src/{driver-capabilities.d.ts → harness-capabilities.d.ts} +18 -18
  65. package/dist/bridge/src/harness-capabilities.d.ts.map +1 -0
  66. package/dist/bridge/src/harness-model-check.d.ts +25 -0
  67. package/dist/bridge/src/harness-model-check.d.ts.map +1 -0
  68. package/dist/bridge/src/{drivers → harnesses}/_subprocess-cli.d.ts +8 -8
  69. package/dist/bridge/src/harnesses/_subprocess-cli.d.ts.map +1 -0
  70. package/dist/bridge/src/{drivers → harnesses}/claude-context-usage.d.ts +5 -5
  71. package/dist/bridge/src/harnesses/claude-context-usage.d.ts.map +1 -0
  72. package/dist/bridge/src/{drivers → harnesses}/claude-sdk.d.ts +27 -27
  73. package/dist/bridge/src/harnesses/claude-sdk.d.ts.map +1 -0
  74. package/dist/bridge/src/{drivers → harnesses}/claude-self-turns.d.ts +5 -5
  75. package/dist/bridge/src/harnesses/claude-self-turns.d.ts.map +1 -0
  76. package/dist/bridge/src/{drivers → harnesses}/claude-tool-allowlist.d.ts +4 -4
  77. package/dist/bridge/src/harnesses/claude-tool-allowlist.d.ts.map +1 -0
  78. package/dist/bridge/src/{drivers → harnesses}/codex.d.ts +14 -14
  79. package/dist/bridge/src/harnesses/codex.d.ts.map +1 -0
  80. package/dist/bridge/src/{drivers → harnesses}/continue.d.ts +12 -12
  81. package/dist/bridge/src/harnesses/continue.d.ts.map +1 -0
  82. package/dist/bridge/src/{drivers → harnesses}/echo.d.ts +16 -16
  83. package/dist/bridge/src/harnesses/echo.d.ts.map +1 -0
  84. package/dist/bridge/src/{drivers → harnesses}/flow-script.d.ts +9 -9
  85. package/dist/bridge/src/harnesses/flow-script.d.ts.map +1 -0
  86. package/dist/bridge/src/{drivers → harnesses}/gemini.d.ts +15 -15
  87. package/dist/bridge/src/harnesses/gemini.d.ts.map +1 -0
  88. package/dist/bridge/src/{drivers → harnesses}/goose.d.ts +10 -10
  89. package/dist/bridge/src/harnesses/goose.d.ts.map +1 -0
  90. package/dist/bridge/src/{drivers → harnesses}/omp-models-yml.d.ts +23 -12
  91. package/dist/bridge/src/harnesses/omp-models-yml.d.ts.map +1 -0
  92. package/dist/bridge/src/{drivers → harnesses}/omp.d.ts +23 -23
  93. package/dist/bridge/src/harnesses/omp.d.ts.map +1 -0
  94. package/dist/bridge/src/{drivers → harnesses}/opencode.d.ts +11 -11
  95. package/dist/bridge/src/harnesses/opencode.d.ts.map +1 -0
  96. package/dist/bridge/src/{drivers → harnesses}/qwen.d.ts +12 -12
  97. package/dist/bridge/src/harnesses/qwen.d.ts.map +1 -0
  98. package/dist/bridge/src/{drivers → harnesses}/recovery-policy.d.ts +4 -4
  99. package/dist/bridge/src/harnesses/recovery-policy.d.ts.map +1 -0
  100. package/dist/bridge/src/{drivers → harnesses}/resume-probe.d.ts +3 -3
  101. package/dist/bridge/src/harnesses/resume-probe.d.ts.map +1 -0
  102. package/dist/bridge/src/{drivers → harnesses}/sanitize-assistant-text.d.ts +1 -1
  103. package/dist/bridge/src/harnesses/sanitize-assistant-text.d.ts.map +1 -0
  104. package/dist/bridge/src/{drivers → harnesses}/scrub-transcript.d.ts +1 -1
  105. package/dist/bridge/src/harnesses/scrub-transcript.d.ts.map +1 -0
  106. package/dist/bridge/src/index.d.ts +4 -4
  107. package/dist/bridge/src/index.d.ts.map +1 -1
  108. package/dist/bridge/src/logger.d.ts +4 -4
  109. package/dist/bridge/src/models.d.ts +1 -1
  110. package/dist/bridge/src/normalizer.d.ts +2 -2
  111. package/dist/bridge/src/provider-materialize/continue-config-yaml.d.ts +5 -5
  112. package/dist/bridge/src/provider-materialize/continue-config-yaml.d.ts.map +1 -1
  113. package/dist/bridge/src/provider-materialize/credential-env.d.ts +3 -3
  114. package/dist/bridge/src/provider-materialize/{env-drivers.d.ts → env-harnesses.d.ts} +19 -19
  115. package/dist/bridge/src/provider-materialize/env-harnesses.d.ts.map +1 -0
  116. package/dist/bridge/src/provider-materialize/goose-custom-providers.d.ts +5 -5
  117. package/dist/bridge/src/provider-materialize/goose-custom-providers.d.ts.map +1 -1
  118. package/dist/bridge/src/provider-materialize/opencode-config.d.ts +7 -7
  119. package/dist/bridge/src/provider-materialize/opencode-config.d.ts.map +1 -1
  120. package/dist/bridge/src/provider-materialize/session-config-home.d.ts +5 -5
  121. package/dist/bridge/src/provider-materialize/session-config-home.d.ts.map +1 -1
  122. package/dist/bridge/src/provider-registry-derive.d.ts +4 -4
  123. package/dist/bridge/src/provider-registry-derive.d.ts.map +1 -1
  124. package/dist/bridge/src/reconfigure-ledger.d.ts +8 -8
  125. package/dist/bridge/src/reconfigure-ledger.d.ts.map +1 -1
  126. package/dist/bridge/src/registry.d.ts +34 -41
  127. package/dist/bridge/src/registry.d.ts.map +1 -1
  128. package/dist/bridge/src/runner-private-env.d.ts +2 -2
  129. package/dist/bridge/src/runtime.d.ts +11 -11
  130. package/dist/bridge/src/runtime.d.ts.map +1 -1
  131. package/dist/bridge/src/types.d.ts +158 -158
  132. package/dist/bridge/src/types.d.ts.map +1 -1
  133. package/dist/{chunk-CKBCX3HQ.js → chunk-2UUKCROR.js} +4 -4
  134. package/dist/{chunk-CKBCX3HQ.js.map → chunk-2UUKCROR.js.map} +1 -1
  135. package/dist/{chunk-7ANRSTNR.js → chunk-3IXIEHUB.js} +36 -17
  136. package/dist/chunk-3IXIEHUB.js.map +1 -0
  137. package/dist/{chunk-YZ3N7IUU.js → chunk-3JKGY2YC.js} +91 -55
  138. package/dist/chunk-3JKGY2YC.js.map +1 -0
  139. package/dist/{chunk-X5YPJV4N.js → chunk-3MWQKQUB.js} +2 -2
  140. package/dist/{chunk-X5YPJV4N.js.map → chunk-3MWQKQUB.js.map} +1 -1
  141. package/dist/{chunk-EPBKISS5.js → chunk-3TG2NV2F.js} +2 -2
  142. package/dist/chunk-3TG2NV2F.js.map +1 -0
  143. package/dist/{chunk-L2AMXONH.js → chunk-3X7VTCPG.js} +2 -2
  144. package/dist/chunk-3X7VTCPG.js.map +1 -0
  145. package/dist/{chunk-3KMREAR2.js → chunk-4DWBSTYA.js} +24 -24
  146. package/dist/chunk-4DWBSTYA.js.map +1 -0
  147. package/dist/{chunk-YARXR3CN.js → chunk-4XWLB7JB.js} +52 -46
  148. package/dist/chunk-4XWLB7JB.js.map +1 -0
  149. package/dist/{chunk-5TBFN46Z.js → chunk-5KRMNUL4.js} +4 -4
  150. package/dist/chunk-5KRMNUL4.js.map +1 -0
  151. package/dist/{chunk-YIF2IJUA.js → chunk-6GWSDPBP.js} +3 -3
  152. package/dist/{chunk-YIF2IJUA.js.map → chunk-6GWSDPBP.js.map} +1 -1
  153. package/dist/{chunk-BBWSGVVE.js → chunk-7CV3HFWJ.js} +5 -5
  154. package/dist/chunk-7CV3HFWJ.js.map +1 -0
  155. package/dist/{chunk-YROR332M.js → chunk-7DN6JKP2.js} +2 -2
  156. package/dist/chunk-7DN6JKP2.js.map +1 -0
  157. package/dist/{chunk-IZCR27MU.js → chunk-7EKQDY2T.js} +3 -3
  158. package/dist/chunk-7EKQDY2T.js.map +1 -0
  159. package/dist/{chunk-VOBXINUZ.js → chunk-7TPYPVAH.js} +4 -4
  160. package/dist/{chunk-VOBXINUZ.js.map → chunk-7TPYPVAH.js.map} +1 -1
  161. package/dist/{chunk-U2FI547Z.js → chunk-7XSAW5OC.js} +3 -3
  162. package/dist/{chunk-U2FI547Z.js.map → chunk-7XSAW5OC.js.map} +1 -1
  163. package/dist/{chunk-ICSCSM5D.js → chunk-ADPM6AYF.js} +3 -3
  164. package/dist/{chunk-ICSCSM5D.js.map → chunk-ADPM6AYF.js.map} +1 -1
  165. package/dist/{chunk-LW7ZI6EQ.js → chunk-AF432MS3.js} +3 -3
  166. package/dist/chunk-AF432MS3.js.map +1 -0
  167. package/dist/{chunk-WJLYL6RY.js → chunk-ARWKK325.js} +5 -5
  168. package/dist/{chunk-WJLYL6RY.js.map → chunk-ARWKK325.js.map} +1 -1
  169. package/dist/{chunk-AJ7EGIFR.js → chunk-BIRW3HOG.js} +3 -3
  170. package/dist/chunk-BIRW3HOG.js.map +1 -0
  171. package/dist/{chunk-X3AUS4RW.js → chunk-DHYSUJ3H.js} +4 -4
  172. package/dist/{chunk-X3AUS4RW.js.map → chunk-DHYSUJ3H.js.map} +1 -1
  173. package/dist/{chunk-SRNCN4X2.js → chunk-DUMTLYSO.js} +10 -10
  174. package/dist/chunk-DUMTLYSO.js.map +1 -0
  175. package/dist/{chunk-GOK4QRJR.js → chunk-E3GPGTW3.js} +8 -8
  176. package/dist/chunk-E3GPGTW3.js.map +1 -0
  177. package/dist/{chunk-CKNIYIV2.js → chunk-E572OHGY.js} +5 -5
  178. package/dist/chunk-E572OHGY.js.map +1 -0
  179. package/dist/{chunk-KY4UXX7M.js → chunk-F2GOZMRA.js} +63 -64
  180. package/dist/chunk-F2GOZMRA.js.map +1 -0
  181. package/dist/{chunk-6E6PKKAD.js → chunk-G5SUWZEU.js} +18 -8
  182. package/dist/chunk-G5SUWZEU.js.map +1 -0
  183. package/dist/{chunk-7FHZB2QU.js → chunk-GEQSUC6U.js} +12 -12
  184. package/dist/chunk-GEQSUC6U.js.map +1 -0
  185. package/dist/{chunk-AIBAOXDU.js → chunk-GN4VVSAA.js} +18 -18
  186. package/dist/chunk-GN4VVSAA.js.map +1 -0
  187. package/dist/{chunk-XTO436PV.js → chunk-HK7HMEPT.js} +13 -13
  188. package/dist/chunk-HK7HMEPT.js.map +1 -0
  189. package/dist/{chunk-Y56YIT6J.js → chunk-JCPD4QRM.js} +4 -4
  190. package/dist/chunk-JCPD4QRM.js.map +1 -0
  191. package/dist/{chunk-GBYNC5V3.js → chunk-JDR6ILCW.js} +4 -4
  192. package/dist/chunk-JDR6ILCW.js.map +1 -0
  193. package/dist/{chunk-K4O6L3WH.js → chunk-KNY356I3.js} +3 -3
  194. package/dist/{chunk-K4O6L3WH.js.map → chunk-KNY356I3.js.map} +1 -1
  195. package/dist/{chunk-4ZTPYIBE.js → chunk-KW37WNXY.js} +12 -12
  196. package/dist/chunk-KW37WNXY.js.map +1 -0
  197. package/dist/{chunk-BO426QWN.js → chunk-KX2PT5Q4.js} +8 -8
  198. package/dist/chunk-KX2PT5Q4.js.map +1 -0
  199. package/dist/{chunk-T2TQAH2X.js → chunk-L4YKW5AY.js} +105 -38
  200. package/dist/chunk-L4YKW5AY.js.map +1 -0
  201. package/dist/{chunk-WJCQFNF6.js → chunk-LN6QB7XI.js} +3 -3
  202. package/dist/{chunk-WJCQFNF6.js.map → chunk-LN6QB7XI.js.map} +1 -1
  203. package/dist/{chunk-MJHSLODD.js → chunk-LSI2IVFT.js} +2 -2
  204. package/dist/chunk-LSI2IVFT.js.map +1 -0
  205. package/dist/{chunk-2ABUJYVI.js → chunk-MCUJTNY5.js} +3 -3
  206. package/dist/{chunk-2ABUJYVI.js.map → chunk-MCUJTNY5.js.map} +1 -1
  207. package/dist/{chunk-A2ULN3KX.js → chunk-MWXYN6NY.js} +2 -2
  208. package/dist/{chunk-A2ULN3KX.js.map → chunk-MWXYN6NY.js.map} +1 -1
  209. package/dist/{chunk-EAZECHPM.js → chunk-NBAGV6L2.js} +5 -5
  210. package/dist/chunk-NBAGV6L2.js.map +1 -0
  211. package/dist/{chunk-U7V5SIFW.js → chunk-NMI2TWMH.js} +46 -18
  212. package/dist/chunk-NMI2TWMH.js.map +1 -0
  213. package/dist/{chunk-VM3PH7BB.js → chunk-OAHVKSQJ.js} +604 -178
  214. package/dist/chunk-OAHVKSQJ.js.map +1 -0
  215. package/dist/{chunk-2NOLF7B2.js → chunk-OHNKYHRR.js} +53 -17
  216. package/dist/chunk-OHNKYHRR.js.map +1 -0
  217. package/dist/{chunk-KC6HGWXN.js → chunk-OTIB4D2K.js} +3 -3
  218. package/dist/{chunk-KC6HGWXN.js.map → chunk-OTIB4D2K.js.map} +1 -1
  219. package/dist/{chunk-WMF2C5U7.js → chunk-OULSJRXV.js} +17 -17
  220. package/dist/chunk-OULSJRXV.js.map +1 -0
  221. package/dist/{chunk-HPVMTX6M.js → chunk-QOM5Z62G.js} +47 -12
  222. package/dist/chunk-QOM5Z62G.js.map +1 -0
  223. package/dist/{chunk-ZBMC6IAE.js → chunk-SNEE6UGY.js} +33 -32
  224. package/dist/chunk-SNEE6UGY.js.map +1 -0
  225. package/dist/{chunk-RD6N2D7I.js → chunk-SRODW6M2.js} +4 -4
  226. package/dist/{chunk-RD6N2D7I.js.map → chunk-SRODW6M2.js.map} +1 -1
  227. package/dist/{chunk-D6UBEYQH.js → chunk-SZXGRHQQ.js} +6 -6
  228. package/dist/chunk-SZXGRHQQ.js.map +1 -0
  229. package/dist/{chunk-X6GUNN7X.js → chunk-T2BDID2J.js} +39 -39
  230. package/dist/chunk-T2BDID2J.js.map +1 -0
  231. package/dist/{chunk-RP3FZ2T6.js → chunk-TKHJXPSB.js} +110 -37
  232. package/dist/chunk-TKHJXPSB.js.map +1 -0
  233. package/dist/{chunk-CD7SVH6W.js → chunk-U56GGCC2.js} +4 -4
  234. package/dist/{chunk-CD7SVH6W.js.map → chunk-U56GGCC2.js.map} +1 -1
  235. package/dist/{chunk-VKPBUPH7.js → chunk-UL22SDGR.js} +36 -11
  236. package/dist/chunk-UL22SDGR.js.map +1 -0
  237. package/dist/{chunk-CKICWXMU.js → chunk-UQ33Y4DM.js} +139 -10
  238. package/dist/chunk-UQ33Y4DM.js.map +1 -0
  239. package/dist/{chunk-34C2EKWJ.js → chunk-UVVVR4XO.js} +38 -38
  240. package/dist/chunk-UVVVR4XO.js.map +1 -0
  241. package/dist/{chunk-KSBDLCZI.js → chunk-VBI7HGHB.js} +11 -11
  242. package/dist/{chunk-KSBDLCZI.js.map → chunk-VBI7HGHB.js.map} +1 -1
  243. package/dist/{chunk-PBSN4RTV.js → chunk-VJRTDKXS.js} +590 -450
  244. package/dist/chunk-VJRTDKXS.js.map +1 -0
  245. package/dist/{chunk-IG5LZ3WU.js → chunk-VTETQCR6.js} +10 -10
  246. package/dist/chunk-VTETQCR6.js.map +1 -0
  247. package/dist/{chunk-EFLKSMCO.js → chunk-VUJXZDCY.js} +5 -5
  248. package/dist/{chunk-EFLKSMCO.js.map → chunk-VUJXZDCY.js.map} +1 -1
  249. package/dist/{chunk-V3D4HQMS.js → chunk-VXEYX73S.js} +4 -4
  250. package/dist/{chunk-V3D4HQMS.js.map → chunk-VXEYX73S.js.map} +1 -1
  251. package/dist/{chunk-M3WPBTGJ.js → chunk-WD3L5QSU.js} +2 -2
  252. package/dist/{chunk-M3WPBTGJ.js.map → chunk-WD3L5QSU.js.map} +1 -1
  253. package/dist/chunk-WDAIWDLK.js +505 -0
  254. package/dist/chunk-WDAIWDLK.js.map +1 -0
  255. package/dist/{chunk-IW6F6R2W.js → chunk-WEH33JSG.js} +105 -35
  256. package/dist/chunk-WEH33JSG.js.map +1 -0
  257. package/dist/{chunk-OYIENLJI.js → chunk-WYHQUCHR.js} +15 -15
  258. package/dist/{chunk-OYIENLJI.js.map → chunk-WYHQUCHR.js.map} +1 -1
  259. package/dist/{chunk-R6O6YWU7.js → chunk-WYZXSJBK.js} +3 -3
  260. package/dist/{chunk-R6O6YWU7.js.map → chunk-WYZXSJBK.js.map} +1 -1
  261. package/dist/{chunk-B4X2N7JQ.js → chunk-XFIEVEU7.js} +14 -14
  262. package/dist/chunk-XFIEVEU7.js.map +1 -0
  263. package/dist/{chunk-Q6E6FM7P.js → chunk-XKNXPLKR.js} +6 -6
  264. package/dist/{chunk-Q6E6FM7P.js.map → chunk-XKNXPLKR.js.map} +1 -1
  265. package/dist/chunk-Y2TO2U7W.js +285 -0
  266. package/dist/chunk-Y2TO2U7W.js.map +1 -0
  267. package/dist/{chunk-JYWW32JI.js → chunk-YGRZNFRO.js} +18 -6
  268. package/dist/chunk-YGRZNFRO.js.map +1 -0
  269. package/dist/{chunk-5BEFNLOR.js → chunk-Z7ZEZZB6.js} +8 -8
  270. package/dist/chunk-Z7ZEZZB6.js.map +1 -0
  271. package/dist/{chunk-PHRNUTSG.js → chunk-ZFUZ5AKM.js} +4 -4
  272. package/dist/{chunk-PHRNUTSG.js.map → chunk-ZFUZ5AKM.js.map} +1 -1
  273. package/dist/claude-code-VJGYBXQR.js +10 -0
  274. package/dist/claude-code-VJGYBXQR.js.map +1 -0
  275. package/dist/cli/index.js +930 -685
  276. package/dist/cli/index.js.map +1 -1
  277. package/dist/cli/src/agent-checks.d.ts +5 -0
  278. package/dist/cli/src/agent-checks.d.ts.map +1 -1
  279. package/dist/cli/src/agent-pins.d.ts +18 -0
  280. package/dist/cli/src/agent-pins.d.ts.map +1 -0
  281. package/dist/cli/src/commands/catalog.d.ts +9 -3
  282. package/dist/cli/src/commands/catalog.d.ts.map +1 -1
  283. package/dist/cli/src/commands/complete-resolvers.d.ts.map +1 -1
  284. package/dist/cli/src/commands/config.d.ts +2 -2
  285. package/dist/cli/src/commands/config.d.ts.map +1 -1
  286. package/dist/cli/src/commands/diff.d.ts.map +1 -1
  287. package/dist/cli/src/commands/flow.d.ts +8 -8
  288. package/dist/cli/src/commands/flow.d.ts.map +1 -1
  289. package/dist/cli/src/commands/integration.d.ts +1 -1
  290. package/dist/cli/src/commands/integration.d.ts.map +1 -1
  291. package/dist/cli/src/commands/library-cmd.d.ts.map +1 -1
  292. package/dist/cli/src/commands/library-index.d.ts +17 -5
  293. package/dist/cli/src/commands/library-index.d.ts.map +1 -1
  294. package/dist/cli/src/commands/library-publish.d.ts +3 -0
  295. package/dist/cli/src/commands/library-publish.d.ts.map +1 -1
  296. package/dist/cli/src/commands/migrate-assets.d.ts +2 -0
  297. package/dist/cli/src/commands/migrate-assets.d.ts.map +1 -1
  298. package/dist/cli/src/commands/migrate-files.d.ts +14 -0
  299. package/dist/cli/src/commands/migrate-files.d.ts.map +1 -1
  300. package/dist/cli/src/commands/migrate-harness.d.ts +49 -0
  301. package/dist/cli/src/commands/migrate-harness.d.ts.map +1 -0
  302. package/dist/cli/src/commands/migrate.d.ts +4 -2
  303. package/dist/cli/src/commands/migrate.d.ts.map +1 -1
  304. package/dist/cli/src/commands/outdated.d.ts.map +1 -1
  305. package/dist/cli/src/commands/plugin/claude-code.d.ts +6 -0
  306. package/dist/cli/src/commands/plugin/claude-code.d.ts.map +1 -1
  307. package/dist/cli/src/commands/plugin/codex.d.ts +19 -4
  308. package/dist/cli/src/commands/plugin/codex.d.ts.map +1 -1
  309. package/dist/cli/src/commands/plugin/types.d.ts +1 -6
  310. package/dist/cli/src/commands/plugin/types.d.ts.map +1 -1
  311. package/dist/cli/src/commands/plugin-registry-cmd.d.ts +1 -1
  312. package/dist/cli/src/commands/preset-cmd.d.ts.map +1 -1
  313. package/dist/cli/src/commands/preset-export.d.ts +1 -1
  314. package/dist/cli/src/commands/project.d.ts +7 -4
  315. package/dist/cli/src/commands/project.d.ts.map +1 -1
  316. package/dist/cli/src/commands/providers.d.ts +13 -0
  317. package/dist/cli/src/commands/providers.d.ts.map +1 -1
  318. package/dist/cli/src/commands/run.d.ts +2 -2
  319. package/dist/cli/src/commands/run.d.ts.map +1 -1
  320. package/dist/cli/src/commands/serve-preflight.d.ts +30 -7
  321. package/dist/cli/src/commands/serve-preflight.d.ts.map +1 -1
  322. package/dist/cli/src/commands/serve.d.ts +1 -1
  323. package/dist/cli/src/commands/serve.d.ts.map +1 -1
  324. package/dist/cli/src/commands/update.d.ts.map +1 -1
  325. package/dist/cli/src/commands/validate.d.ts.map +1 -1
  326. package/dist/cli/src/flow-discovery.d.ts +69 -53
  327. package/dist/cli/src/flow-discovery.d.ts.map +1 -1
  328. package/dist/cli/src/harness-error.d.ts +47 -0
  329. package/dist/cli/src/harness-error.d.ts.map +1 -0
  330. package/dist/cli/src/helpers.d.ts +5 -5
  331. package/dist/cli/src/helpers.d.ts.map +1 -1
  332. package/dist/cli/src/plugin-store/index.d.ts +8 -4
  333. package/dist/cli/src/plugin-store/index.d.ts.map +1 -1
  334. package/dist/cli/src/setup.d.ts +3 -3
  335. package/dist/cli/src/setup.d.ts.map +1 -1
  336. package/dist/cli/src/skill-checks.d.ts +32 -1
  337. package/dist/cli/src/skill-checks.d.ts.map +1 -1
  338. package/dist/connectors/config.js +4 -4
  339. package/dist/connectors/index.js +29 -27
  340. package/dist/connectors/src/connector-prompt.d.ts +5 -5
  341. package/dist/connectors/src/connector-registry.d.ts +1 -1
  342. package/dist/connectors-CXZLXAFZ.js +48 -0
  343. package/dist/{connectors-YNQ3WJGM.js.map → connectors-CXZLXAFZ.js.map} +1 -1
  344. package/dist/connectors-shared/index.js +2 -2
  345. package/dist/core/discovery.js +1 -1
  346. package/dist/core/framework.js +1 -1
  347. package/dist/{bridge/drivers/codex.d.ts → core/harness-targets.d.ts} +1 -1
  348. package/dist/core/harness-targets.js +4 -0
  349. package/dist/core/harness-targets.js.map +1 -0
  350. package/dist/core/index.js +10 -10
  351. package/dist/core/provider-registry-credentials.js +2 -2
  352. package/dist/core/provider-registry.js +1 -1
  353. package/dist/core/publish-manifest.js +1 -1
  354. package/dist/core/runtime-assets.js +4 -4
  355. package/dist/core/src/asset-roots.d.ts +16 -2
  356. package/dist/core/src/asset-roots.d.ts.map +1 -1
  357. package/dist/core/src/bind.d.ts +33 -14
  358. package/dist/core/src/bind.d.ts.map +1 -1
  359. package/dist/core/src/discovery.d.ts +1 -1
  360. package/dist/core/src/framework.d.ts +21 -21
  361. package/dist/core/src/framework.d.ts.map +1 -1
  362. package/dist/core/src/{driver-sdk.d.ts → harness-sdk.d.ts} +9 -9
  363. package/dist/core/src/harness-sdk.d.ts.map +1 -0
  364. package/dist/core/src/harness-targets.d.ts +71 -0
  365. package/dist/core/src/harness-targets.d.ts.map +1 -0
  366. package/dist/core/src/index.d.ts +11 -11
  367. package/dist/core/src/index.d.ts.map +1 -1
  368. package/dist/core/src/lock.d.ts +8 -0
  369. package/dist/core/src/lock.d.ts.map +1 -1
  370. package/dist/core/src/provider-registry.d.ts +2 -2
  371. package/dist/core/src/publish-manifest.d.ts +45 -10
  372. package/dist/core/src/publish-manifest.d.ts.map +1 -1
  373. package/dist/core/src/settings.d.ts +17 -16
  374. package/dist/core/src/settings.d.ts.map +1 -1
  375. package/dist/core/src/store.d.ts +12 -12
  376. package/dist/core/src/store.d.ts.map +1 -1
  377. package/dist/core/src/workspace-config.d.ts +49 -22
  378. package/dist/core/src/workspace-config.d.ts.map +1 -1
  379. package/dist/core/src/workspace-yaml-editor.d.ts +1 -1
  380. package/dist/core/src/workspace-yaml-editor.d.ts.map +1 -1
  381. package/dist/core/store.js +2 -2
  382. package/dist/core/workspace-config.js +3 -3
  383. package/dist/deploy/index.js +11 -11
  384. package/dist/discovery/index.js +3 -3
  385. package/dist/discovery/src/discover-manifest.d.ts +1 -1
  386. package/dist/discovery/src/discover-manifest.d.ts.map +1 -1
  387. package/dist/discovery/src/discover.d.ts.map +1 -1
  388. package/dist/discovery/src/tree-entries.d.ts.map +1 -1
  389. package/dist/{ensure-sources-UJWEZSR3.js → ensure-sources-UPTHZKGF.js} +20 -20
  390. package/dist/{ensure-sources-UJWEZSR3.js.map → ensure-sources-UPTHZKGF.js.map} +1 -1
  391. package/dist/factory-assets/connectors/box.js +29 -27
  392. package/dist/factory-assets/connectors/deploy.js +29 -27
  393. package/dist/factory-assets/connectors/devserver.js +29 -27
  394. package/dist/factory-assets/connectors/flow/CONNECTOR.md +5 -5
  395. package/dist/factory-assets/connectors/flow/adapter.d.ts +3 -3
  396. package/dist/factory-assets/connectors/flow/adapter.d.ts.map +1 -1
  397. package/dist/factory-assets/connectors/flow/adapter.js +29 -27
  398. package/dist/factory-assets/connectors/flow/engine/loader.d.ts +1 -1
  399. package/dist/factory-assets/connectors/flow/engine/locate.d.ts +8 -5
  400. package/dist/factory-assets/connectors/flow/engine/locate.d.ts.map +1 -1
  401. package/dist/factory-assets/connectors/flow/engine/types.d.ts +1 -1
  402. package/dist/factory-assets/connectors/flow/engine.js +11 -11
  403. package/dist/factory-assets/connectors/flow/inline-sub-flow-host.d.ts +2 -2
  404. package/dist/factory-assets/connectors/flow/inline-sub-flow-host.d.ts.map +1 -1
  405. package/dist/factory-assets/connectors/flow/orchestrator-turn.d.ts +4 -4
  406. package/dist/factory-assets/connectors/flow/orchestrator-turn.d.ts.map +1 -1
  407. package/dist/factory-assets/connectors/flow/prompt-fragments.d.ts +1 -1
  408. package/dist/factory-assets/connectors/flow/prompt-fragments.js +1 -1
  409. package/dist/factory-assets/connectors/flow/run-flow.d.ts +12 -12
  410. package/dist/factory-assets/connectors/flow/run-flow.d.ts.map +1 -1
  411. package/dist/factory-assets/connectors/flow/run-flow.js +30 -28
  412. package/dist/factory-assets/connectors/flow/sub-flow-runner.d.ts +1 -1
  413. package/dist/factory-assets/connectors/flow/sub-flow-runner.d.ts.map +1 -1
  414. package/dist/factory-assets/connectors/flow/subprompt-runner.d.ts +22 -22
  415. package/dist/factory-assets/connectors/flow/subprompt-runner.d.ts.map +1 -1
  416. package/dist/factory-assets/connectors/flow.js +29 -27
  417. package/dist/factory-assets/connectors/git.js +29 -27
  418. package/dist/factory-assets/connectors/gmail.js +29 -27
  419. package/dist/factory-assets/connectors/googledrive.js +29 -27
  420. package/dist/factory-assets/connectors/local.js +29 -27
  421. package/dist/factory-assets/connectors/mattermost.js +29 -27
  422. package/dist/factory-assets/connectors/memory.js +29 -27
  423. package/dist/factory-assets/connectors/minio.js +29 -27
  424. package/dist/factory-assets/connectors/postgres.js +29 -27
  425. package/dist/factory-assets/connectors/s3.js +29 -27
  426. package/dist/factory-assets/connectors/sharepoint.js +29 -27
  427. package/dist/factory-assets/connectors/sqlite.js +29 -27
  428. package/dist/factory-assets/connectors/static-server.js +29 -27
  429. package/dist/factory-assets/connectors/tunnel.js +29 -27
  430. package/dist/factory-assets/connectors/webdav.js +29 -27
  431. package/dist/factory-assets/connectors/xstate/adapter.d.ts +1 -1
  432. package/dist/factory-assets/connectors/xstate/adapter.d.ts.map +1 -1
  433. package/dist/factory-assets/connectors/xstate-store.js +29 -27
  434. package/dist/factory-assets/connectors/xstate.js +29 -27
  435. package/dist/factory-assets/skills/skaile-manage-workspace/SKILL.md +1 -1
  436. package/dist/flows-TJQIMGUX.js +26 -0
  437. package/dist/{flows-BHY73K3O.js.map → flows-TJQIMGUX.js.map} +1 -1
  438. package/dist/{helpers-3CG7ZVX4.js → helpers-DE53KG3E.js} +20 -20
  439. package/dist/{helpers-3CG7ZVX4.js.map → helpers-DE53KG3E.js.map} +1 -1
  440. package/dist/library/index.js +14 -14
  441. package/dist/library/install.js +2 -2
  442. package/dist/library/src/index.d.ts +1 -1
  443. package/dist/library/src/index.d.ts.map +1 -1
  444. package/dist/library/src/manifest-writer.d.ts +13 -0
  445. package/dist/library/src/manifest-writer.d.ts.map +1 -1
  446. package/dist/{library-publish-NWWVYJUK.js → library-publish-KKQ2ULLX.js} +140 -63
  447. package/dist/library-publish-KKQ2ULLX.js.map +1 -0
  448. package/dist/model-endpoint/index.js +14 -14
  449. package/dist/model-endpoint/src/resolve.d.ts +1 -1
  450. package/dist/open-library-RJGJIW5H.js +42 -0
  451. package/dist/{open-library-7ZG2FFAX.js.map → open-library-RJGJIW5H.js.map} +1 -1
  452. package/dist/open-registry-3QS3J7KO.js +32 -0
  453. package/dist/{open-registry-RBELV5YH.js.map → open-registry-3QS3J7KO.js.map} +1 -1
  454. package/dist/paths-QAV4C3KX.js +22 -0
  455. package/dist/{paths-BFM6K2QO.js.map → paths-QAV4C3KX.js.map} +1 -1
  456. package/dist/plugin-registry/index.js +1 -1
  457. package/dist/plugin-registry/src/context.d.ts +3 -3
  458. package/dist/plugin-registry/src/context.d.ts.map +1 -1
  459. package/dist/plugin-registry/src/deploy-handle.d.ts +1 -1
  460. package/dist/plugin-registry/src/index.d.ts +2 -2
  461. package/dist/plugin-registry/src/index.d.ts.map +1 -1
  462. package/dist/plugin-registry/src/internal.d.ts.map +1 -1
  463. package/dist/plugin-registry/src/registry.d.ts +3 -3
  464. package/dist/plugin-registry/src/registry.d.ts.map +1 -1
  465. package/dist/plugin-registry/src/targets.d.ts +9 -9
  466. package/dist/plugin-registry/src/targets.d.ts.map +1 -1
  467. package/dist/plugin-store-MSH6GK6T.js +23 -0
  468. package/dist/{plugin-store-QOQDM24E.js.map → plugin-store-MSH6GK6T.js.map} +1 -1
  469. package/dist/plugins/src/asset-kind-provider.d.ts +1 -1
  470. package/dist/project-HZW2MZPA.js +84 -0
  471. package/dist/{project-YQM3I25D.js.map → project-HZW2MZPA.js.map} +1 -1
  472. package/dist/resolver/index.js +10 -10
  473. package/dist/runner/index.js +45 -44
  474. package/dist/runner/src/agent.d.ts +3 -3
  475. package/dist/runner/src/agent.d.ts.map +1 -1
  476. package/dist/runner/src/agents/in-process-host.d.ts +1 -1
  477. package/dist/runner/src/agents/instances.d.ts +1 -1
  478. package/dist/runner/src/agents/instances.d.ts.map +1 -1
  479. package/dist/runner/src/agents/run-controller.d.ts +7 -7
  480. package/dist/runner/src/agents/run-controller.d.ts.map +1 -1
  481. package/dist/runner/src/agents/standalone-surface.d.ts +2 -2
  482. package/dist/runner/src/agents/standalone-surface.d.ts.map +1 -1
  483. package/dist/runner/src/ai-provider-switch.d.ts +7 -7
  484. package/dist/runner/src/assistant-home.d.ts +1 -1
  485. package/dist/runner/src/capability-registry.d.ts +2 -2
  486. package/dist/runner/src/coalesced-restart.d.ts +2 -2
  487. package/dist/runner/src/compaction/context-window.d.ts +8 -8
  488. package/dist/runner/src/compaction/context-window.d.ts.map +1 -1
  489. package/dist/runner/src/compaction/orchestrator.d.ts +24 -24
  490. package/dist/runner/src/compaction/orchestrator.d.ts.map +1 -1
  491. package/dist/runner/src/compaction-gate.d.ts +30 -30
  492. package/dist/runner/src/compaction-gate.d.ts.map +1 -1
  493. package/dist/runner/src/composition/compile.d.ts +11 -0
  494. package/dist/runner/src/composition/compile.d.ts.map +1 -1
  495. package/dist/runner/src/composition/dry-run.d.ts +2 -2
  496. package/dist/runner/src/composition/dry-run.d.ts.map +1 -1
  497. package/dist/runner/src/composition/index.d.ts +1 -1
  498. package/dist/runner/src/composition/index.d.ts.map +1 -1
  499. package/dist/runner/src/composition/resolve-instance.d.ts +2 -2
  500. package/dist/runner/src/composition/resolve.d.ts +1 -1
  501. package/dist/runner/src/config.d.ts +3 -3
  502. package/dist/runner/src/config.d.ts.map +1 -1
  503. package/dist/runner/src/context-usage/collector.d.ts +15 -15
  504. package/dist/runner/src/context-usage/collector.d.ts.map +1 -1
  505. package/dist/runner/src/context-usage/compose.d.ts +6 -6
  506. package/dist/runner/src/context-usage/compose.d.ts.map +1 -1
  507. package/dist/runner/src/context-usage/estimator.d.ts +1 -1
  508. package/dist/runner/src/context-usage/index.d.ts +1 -1
  509. package/dist/runner/src/context-usage/index.d.ts.map +1 -1
  510. package/dist/runner/src/context-usage/transcript-tracker.d.ts +2 -2
  511. package/dist/runner/src/context-usage/transcript-tracker.d.ts.map +1 -1
  512. package/dist/runner/src/credential-notice.d.ts +3 -3
  513. package/dist/runner/src/credential-notice.d.ts.map +1 -1
  514. package/dist/runner/src/credential-rotated.d.ts +1 -1
  515. package/dist/runner/src/final-text.d.ts +1 -1
  516. package/dist/runner/src/{driver-swap-gate.d.ts → harness-swap-gate.d.ts} +21 -21
  517. package/dist/runner/src/harness-swap-gate.d.ts.map +1 -0
  518. package/dist/runner/src/late-mcp-rebuild.d.ts +6 -6
  519. package/dist/runner/src/late-mcp-rebuild.d.ts.map +1 -1
  520. package/dist/runner/src/lifecycle-handler.d.ts +1 -1
  521. package/dist/runner/src/lifecycle-handler.d.ts.map +1 -1
  522. package/dist/runner/src/manifest.d.ts +1 -1
  523. package/dist/runner/src/mcp-runtime-handlers.d.ts +6 -6
  524. package/dist/runner/src/mcp-runtime-handlers.d.ts.map +1 -1
  525. package/dist/runner/src/model-endpoint-discovery.d.ts +1 -1
  526. package/dist/runner/src/pending-turns.d.ts +3 -3
  527. package/dist/runner/src/platform-blocks.d.ts +5 -5
  528. package/dist/runner/src/platform-blocks.d.ts.map +1 -1
  529. package/dist/runner/src/prompt-turn-queue.d.ts +1 -1
  530. package/dist/runner/src/provider-quota-forwarder.d.ts +1 -1
  531. package/dist/runner/src/provider-quota-forwarder.d.ts.map +1 -1
  532. package/dist/runner/src/reconfigure-handler.d.ts +14 -14
  533. package/dist/runner/src/reconfigure-handler.d.ts.map +1 -1
  534. package/dist/runner/src/resource-handler.d.ts +1 -1
  535. package/dist/runner/src/resources.d.ts +5 -5
  536. package/dist/runner/src/resources.d.ts.map +1 -1
  537. package/dist/runner/src/runner-capabilities.d.ts +7 -7
  538. package/dist/runner/src/runtime-session-emit.d.ts +5 -5
  539. package/dist/runner/src/runtime-session-emit.d.ts.map +1 -1
  540. package/dist/runner/src/s3-presign-client.d.ts +1 -1
  541. package/dist/runner/src/serve-credentials.d.ts +7 -7
  542. package/dist/runner/src/serve-credentials.d.ts.map +1 -1
  543. package/dist/runner/src/serve.d.ts +32 -32
  544. package/dist/runner/src/serve.d.ts.map +1 -1
  545. package/dist/runner/src/session-builder.d.ts +41 -41
  546. package/dist/runner/src/session-builder.d.ts.map +1 -1
  547. package/dist/runner/src/session-capability-wiring.d.ts +9 -9
  548. package/dist/runner/src/session-capability-wiring.d.ts.map +1 -1
  549. package/dist/runner/src/session-stimulus.d.ts +1 -1
  550. package/dist/runner/src/session.d.ts +5 -5
  551. package/dist/runner/src/session.d.ts.map +1 -1
  552. package/dist/runner/src/skill-staging.d.ts +16 -16
  553. package/dist/runner/src/skill-staging.d.ts.map +1 -1
  554. package/dist/runner/src/turn-end-contract.d.ts +55 -0
  555. package/dist/runner/src/turn-end-contract.d.ts.map +1 -0
  556. package/dist/runner/src/turn-scheduler.d.ts +27 -22
  557. package/dist/runner/src/turn-scheduler.d.ts.map +1 -1
  558. package/dist/runner/src/turn-status-replay.d.ts +1 -1
  559. package/dist/runner/src/usage-limit-turn-hold.d.ts +1 -1
  560. package/dist/sdk/asset-manager.js +17 -17
  561. package/dist/sdk/bridge.js +24 -22
  562. package/dist/sdk/core.js +10 -10
  563. package/dist/sdk/flow.js +11 -11
  564. package/dist/sdk/index.js +49 -48
  565. package/dist/sdk/index.js.map +1 -1
  566. package/dist/sdk/resolver.js +10 -10
  567. package/dist/sdk/runner.js +45 -44
  568. package/dist/sdk/session.js +2 -2
  569. package/dist/sdk/src/agent-session.d.ts +1 -1
  570. package/dist/sdk/src/local-runtime.d.ts +1 -1
  571. package/dist/sdk/src/local-runtime.d.ts.map +1 -1
  572. package/dist/sdk/src/types.d.ts +1 -1
  573. package/dist/sdk/src/types.d.ts.map +1 -1
  574. package/dist/sdk/store.js +2 -2
  575. package/dist/sdk/transport/ws/server.js +11 -11
  576. package/dist/sdk/transport/ws.js +11 -11
  577. package/dist/sdk/transport.js +11 -11
  578. package/dist/sdk/types.js +1 -1
  579. package/dist/serve-preflight-L4POEHNQ.js +108 -0
  580. package/dist/serve-preflight-L4POEHNQ.js.map +1 -0
  581. package/dist/session/index.js +2 -2
  582. package/dist/session/src/dispatcher.d.ts +2 -2
  583. package/dist/sessions-2Q7SSYPT.js +5 -0
  584. package/dist/{sessions-DICDEONJ.js.map → sessions-2Q7SSYPT.js.map} +1 -1
  585. package/dist/{setup-AAHVAXRA.js → setup-AGYB4PKR.js} +50 -48
  586. package/dist/setup-AGYB4PKR.js.map +1 -0
  587. package/dist/skills-2LMQ2IAD.js +26 -0
  588. package/dist/{skills-RSZVUIYZ.js.map → skills-2LMQ2IAD.js.map} +1 -1
  589. package/dist/source-GBMYD3RO.js +85 -0
  590. package/dist/{source-KWMCMEMB.js.map → source-GBMYD3RO.js.map} +1 -1
  591. package/dist/{source-manifest-publish-EDYKM4YZ.js → source-manifest-publish-FK22TVQT.js} +57 -56
  592. package/dist/source-manifest-publish-FK22TVQT.js.map +1 -0
  593. package/dist/store/index.js +2 -2
  594. package/dist/store/src/store.d.ts +3 -3
  595. package/dist/store/src/store.d.ts.map +1 -1
  596. package/dist/transport/index.js +11 -11
  597. package/dist/transport/src/ws/server.d.ts +1 -1
  598. package/dist/transport/src/ws/server.d.ts.map +1 -1
  599. package/dist/transport/ws/server.js +11 -11
  600. package/dist/transport/ws.js +11 -11
  601. package/dist/tui/index.js +65 -64
  602. package/dist/tui/index.js.map +1 -1
  603. package/dist/tui/src/repl-session.d.ts +5 -5
  604. package/dist/tui/src/repl.d.ts +5 -5
  605. package/dist/tui/src/repl.d.ts.map +1 -1
  606. package/dist/types/index.js +1 -1
  607. package/dist/types/manifests.js +1 -1
  608. package/dist/types/src/agent-lifecycle.d.ts +1 -1
  609. package/dist/types/src/agent-lifecycle.d.ts.map +1 -1
  610. package/dist/types/src/ask-slots.d.ts +1 -1
  611. package/dist/types/src/capabilities.d.ts +1 -1
  612. package/dist/types/src/context-usage.d.ts +22 -22
  613. package/dist/types/src/context-usage.d.ts.map +1 -1
  614. package/dist/types/src/events.d.ts +49 -49
  615. package/dist/types/src/events.d.ts.map +1 -1
  616. package/dist/types/src/index.d.ts +2 -2
  617. package/dist/types/src/index.d.ts.map +1 -1
  618. package/dist/types/src/lifecycle.d.ts +6 -6
  619. package/dist/types/src/lifecycle.d.ts.map +1 -1
  620. package/dist/types/src/logging.d.ts +1 -1
  621. package/dist/types/src/manifests/agent.d.ts +3 -3
  622. package/dist/types/src/manifests/scaffold-body.d.ts +6 -3
  623. package/dist/types/src/manifests/scaffold-body.d.ts.map +1 -1
  624. package/dist/types/src/protocol.d.ts +4 -4
  625. package/dist/types/src/runtime.d.ts +38 -38
  626. package/dist/types/src/runtime.d.ts.map +1 -1
  627. package/dist/types/src/version.d.ts +22 -11
  628. package/dist/types/src/version.d.ts.map +1 -1
  629. package/dist/validator-DRHMJ457.js +5 -0
  630. package/dist/{validator-FA2PFW6N.js.map → validator-DRHMJ457.js.map} +1 -1
  631. package/dist/workspace-plugin/adapters/mcp.js +36 -34
  632. package/dist/workspace-plugin/adapters/omp.js +26 -26
  633. package/dist/workspace-plugin/adapters/omp.js.map +1 -1
  634. package/dist/workspace-plugin/index.js +3 -3
  635. package/dist/workspace-plugin/src/plugin.d.ts +5 -5
  636. package/dist/workspace-plugin/src/plugin.d.ts.map +1 -1
  637. package/dist/workspace-plugin/src/tools/flows.d.ts +1 -1
  638. package/dist/workspace-plugin/src/tools/validator.d.ts +6 -6
  639. package/dist/workspace-plugin/src/tools/validator.d.ts.map +1 -1
  640. package/dist/workspace-plugin/src/types.d.ts +2 -2
  641. package/dist/workspace-plugin/src/types.d.ts.map +1 -1
  642. package/package.json +59 -59
  643. package/dist/bridge/drivers/claude-sdk.js.map +0 -1
  644. package/dist/bridge/drivers/codex.js.map +0 -1
  645. package/dist/bridge/drivers/continue.js.map +0 -1
  646. package/dist/bridge/drivers/echo.js.map +0 -1
  647. package/dist/bridge/drivers/gemini.js +0 -18
  648. package/dist/bridge/drivers/goose.js.map +0 -1
  649. package/dist/bridge/drivers/omp.js.map +0 -1
  650. package/dist/bridge/drivers/opencode.js.map +0 -1
  651. package/dist/bridge/drivers/qwen.js.map +0 -1
  652. package/dist/bridge/src/codex/managed-driver.d.ts.map +0 -1
  653. package/dist/bridge/src/driver-capabilities.d.ts.map +0 -1
  654. package/dist/bridge/src/driver-model-check.d.ts +0 -21
  655. package/dist/bridge/src/driver-model-check.d.ts.map +0 -1
  656. package/dist/bridge/src/drivers/_subprocess-cli.d.ts.map +0 -1
  657. package/dist/bridge/src/drivers/claude-context-usage.d.ts.map +0 -1
  658. package/dist/bridge/src/drivers/claude-sdk.d.ts.map +0 -1
  659. package/dist/bridge/src/drivers/claude-self-turns.d.ts.map +0 -1
  660. package/dist/bridge/src/drivers/claude-tool-allowlist.d.ts.map +0 -1
  661. package/dist/bridge/src/drivers/codex.d.ts.map +0 -1
  662. package/dist/bridge/src/drivers/continue.d.ts.map +0 -1
  663. package/dist/bridge/src/drivers/echo.d.ts.map +0 -1
  664. package/dist/bridge/src/drivers/flow-script.d.ts.map +0 -1
  665. package/dist/bridge/src/drivers/gemini.d.ts.map +0 -1
  666. package/dist/bridge/src/drivers/goose.d.ts.map +0 -1
  667. package/dist/bridge/src/drivers/omp-models-yml.d.ts.map +0 -1
  668. package/dist/bridge/src/drivers/omp.d.ts.map +0 -1
  669. package/dist/bridge/src/drivers/opencode.d.ts.map +0 -1
  670. package/dist/bridge/src/drivers/qwen.d.ts.map +0 -1
  671. package/dist/bridge/src/drivers/recovery-policy.d.ts.map +0 -1
  672. package/dist/bridge/src/drivers/resume-probe.d.ts.map +0 -1
  673. package/dist/bridge/src/drivers/sanitize-assistant-text.d.ts.map +0 -1
  674. package/dist/bridge/src/drivers/scrub-transcript.d.ts.map +0 -1
  675. package/dist/bridge/src/provider-materialize/env-drivers.d.ts.map +0 -1
  676. package/dist/chunk-2NOLF7B2.js.map +0 -1
  677. package/dist/chunk-34C2EKWJ.js.map +0 -1
  678. package/dist/chunk-3KMREAR2.js.map +0 -1
  679. package/dist/chunk-4ZTPYIBE.js.map +0 -1
  680. package/dist/chunk-5BEFNLOR.js.map +0 -1
  681. package/dist/chunk-5TBFN46Z.js.map +0 -1
  682. package/dist/chunk-6E6PKKAD.js.map +0 -1
  683. package/dist/chunk-7ANRSTNR.js.map +0 -1
  684. package/dist/chunk-7FHZB2QU.js.map +0 -1
  685. package/dist/chunk-AIBAOXDU.js.map +0 -1
  686. package/dist/chunk-AJ7EGIFR.js.map +0 -1
  687. package/dist/chunk-B4X2N7JQ.js.map +0 -1
  688. package/dist/chunk-BBWSGVVE.js.map +0 -1
  689. package/dist/chunk-BO426QWN.js.map +0 -1
  690. package/dist/chunk-CKICWXMU.js.map +0 -1
  691. package/dist/chunk-CKNIYIV2.js.map +0 -1
  692. package/dist/chunk-D6UBEYQH.js.map +0 -1
  693. package/dist/chunk-EAZECHPM.js.map +0 -1
  694. package/dist/chunk-EPBKISS5.js.map +0 -1
  695. package/dist/chunk-GBYNC5V3.js.map +0 -1
  696. package/dist/chunk-GOK4QRJR.js.map +0 -1
  697. package/dist/chunk-HPVMTX6M.js.map +0 -1
  698. package/dist/chunk-IG5LZ3WU.js.map +0 -1
  699. package/dist/chunk-IW6F6R2W.js.map +0 -1
  700. package/dist/chunk-IZCR27MU.js.map +0 -1
  701. package/dist/chunk-JYWW32JI.js.map +0 -1
  702. package/dist/chunk-KY4UXX7M.js.map +0 -1
  703. package/dist/chunk-L2AMXONH.js.map +0 -1
  704. package/dist/chunk-LW7ZI6EQ.js.map +0 -1
  705. package/dist/chunk-MJHSLODD.js.map +0 -1
  706. package/dist/chunk-PBSN4RTV.js.map +0 -1
  707. package/dist/chunk-RP3FZ2T6.js.map +0 -1
  708. package/dist/chunk-SRNCN4X2.js.map +0 -1
  709. package/dist/chunk-T2TQAH2X.js.map +0 -1
  710. package/dist/chunk-U7V5SIFW.js.map +0 -1
  711. package/dist/chunk-VKPBUPH7.js.map +0 -1
  712. package/dist/chunk-VM3PH7BB.js.map +0 -1
  713. package/dist/chunk-WMF2C5U7.js.map +0 -1
  714. package/dist/chunk-X6GUNN7X.js.map +0 -1
  715. package/dist/chunk-XTO436PV.js.map +0 -1
  716. package/dist/chunk-Y56YIT6J.js.map +0 -1
  717. package/dist/chunk-YARXR3CN.js.map +0 -1
  718. package/dist/chunk-YROR332M.js.map +0 -1
  719. package/dist/chunk-YZ3N7IUU.js.map +0 -1
  720. package/dist/chunk-ZBMC6IAE.js.map +0 -1
  721. package/dist/cli/src/driver-error.d.ts +0 -21
  722. package/dist/cli/src/driver-error.d.ts.map +0 -1
  723. package/dist/connectors-YNQ3WJGM.js +0 -46
  724. package/dist/core/driver-targets.d.ts +0 -2
  725. package/dist/core/driver-targets.js +0 -4
  726. package/dist/core/driver-targets.js.map +0 -1
  727. package/dist/core/src/driver-sdk.d.ts.map +0 -1
  728. package/dist/core/src/driver-targets.d.ts +0 -71
  729. package/dist/core/src/driver-targets.d.ts.map +0 -1
  730. package/dist/flows-BHY73K3O.js +0 -26
  731. package/dist/library-publish-NWWVYJUK.js.map +0 -1
  732. package/dist/open-library-7ZG2FFAX.js +0 -42
  733. package/dist/open-registry-RBELV5YH.js +0 -32
  734. package/dist/paths-BFM6K2QO.js +0 -22
  735. package/dist/plugin-store-QOQDM24E.js +0 -23
  736. package/dist/project-YQM3I25D.js +0 -83
  737. package/dist/runner/src/driver-swap-gate.d.ts.map +0 -1
  738. package/dist/serve-preflight-5QMY7DBC.js +0 -60
  739. package/dist/serve-preflight-5QMY7DBC.js.map +0 -1
  740. package/dist/sessions-DICDEONJ.js +0 -5
  741. package/dist/setup-AAHVAXRA.js.map +0 -1
  742. package/dist/skills-RSZVUIYZ.js +0 -26
  743. package/dist/source-KWMCMEMB.js +0 -84
  744. package/dist/source-manifest-publish-EDYKM4YZ.js.map +0 -1
  745. package/dist/validator-FA2PFW6N.js +0 -5
  746. /package/dist/bridge/{drivers → harnesses}/gemini.js.map +0 -0
@@ -1,8 +1,10 @@
1
1
  import { isManifestName } from './chunk-GOCWM7FN.js';
2
2
  import { parseAssetRef, isValidPublisher, PUBLISHER_HINT } from './chunk-WDXZA7QW.js';
3
+ import { spawnSync } from 'child_process';
3
4
  import { createHash } from 'crypto';
4
5
  import { existsSync, readFileSync, realpathSync, readdirSync, statSync, readlinkSync } from 'fs';
5
- import { join, resolve, sep } from 'path';
6
+ import fg from 'fast-glob';
7
+ import { join, resolve, relative, sep } from 'path';
6
8
  import { stringify, parse } from 'yaml';
7
9
 
8
10
  var SKAILE_MANIFEST_FILENAME = "skaile.manifest.yaml";
@@ -269,7 +271,8 @@ function isEnvFileName(name) {
269
271
  if (!name.startsWith(".env.")) return false;
270
272
  return !ENV_TEMPLATE_SUFFIXES.has(name.slice(".env".length));
271
273
  }
272
- var SECRET_FILE_SUFFIXES = [".pem", ".key", ".p12", ".pfx", ".tfstate"];
274
+ var SECRET_FILE_SUFFIXES = [".pem", ".key", ".p12", ".pfx", ".tfstate", ".jks", ".keystore"];
275
+ var SECRET_FILE_GLOBS = ["client_secret*.json"];
273
276
  var SECRET_FILE_NAMES = /* @__PURE__ */ new Set([
274
277
  "id_rsa",
275
278
  "id_dsa",
@@ -280,15 +283,27 @@ var SECRET_FILE_NAMES = /* @__PURE__ */ new Set([
280
283
  ".envrc",
281
284
  ".pypirc",
282
285
  ".htpasswd",
286
+ ".pgpass",
287
+ ".my.cnf",
288
+ ".dockercfg",
289
+ ".boto",
290
+ ".vault_pass",
291
+ ".git-credentials",
292
+ "kubeconfig",
293
+ "wallet.dat",
283
294
  "credentials",
295
+ "credentials.json",
284
296
  "token.json",
297
+ "secret.txt",
298
+ "secrets.txt",
299
+ "api_key.txt",
285
300
  "secrets.yaml",
286
301
  "secrets.yml",
287
302
  "secrets.json",
288
303
  "service-account.json"
289
304
  ]);
290
305
  function isSecretFileName(name) {
291
- return isEnvFileName(name) || SECRET_FILE_NAMES.has(name) || SECRET_FILE_SUFFIXES.some((suffix) => name.endsWith(suffix));
306
+ return isEnvFileName(name) || SECRET_FILE_NAMES.has(name) || SECRET_FILE_SUFFIXES.some((suffix) => name.endsWith(suffix)) || name.startsWith("client_secret") && name.endsWith(".json");
292
307
  }
293
308
  var LIBRARY_GITIGNORE = [
294
309
  ".DS_Store",
@@ -306,6 +321,7 @@ var LIBRARY_GITIGNORE = [
306
321
  ".env.*",
307
322
  ...SECRET_FILE_NAMES,
308
323
  ...SECRET_FILE_SUFFIXES.map((suffix) => `*${suffix}`),
324
+ ...SECRET_FILE_GLOBS,
309
325
  ...[...ENV_TEMPLATE_SUFFIXES].map((suffix) => `!.env${suffix}`),
310
326
  ""
311
327
  ].join("\n");
@@ -335,6 +351,121 @@ function listAssetFiles(absDir) {
335
351
  walk(absDir, "");
336
352
  return out.sort();
337
353
  }
354
+ function expandWith(patterns, isFile, glob) {
355
+ const files = /* @__PURE__ */ new Set();
356
+ const unmatched = [];
357
+ for (const raw of patterns) {
358
+ const pattern = raw.replace(/\\/g, "/");
359
+ if (!fg.isDynamicPattern(pattern)) {
360
+ if (isFile(pattern)) files.add(pattern);
361
+ else unmatched.push(raw);
362
+ continue;
363
+ }
364
+ const hits = glob(pattern);
365
+ if (hits.length === 0) unmatched.push(`${raw} (matches no file)`);
366
+ for (const hit of hits) files.add(hit);
367
+ }
368
+ return { files: [...files].sort(), unmatched };
369
+ }
370
+ function expandManifestFiles(baseDir, patterns) {
371
+ return expandWith(
372
+ patterns,
373
+ (rel) => {
374
+ try {
375
+ return statSync(join(baseDir, rel)).isFile();
376
+ } catch {
377
+ return false;
378
+ }
379
+ },
380
+ (pattern) => fg.sync(pattern, { cwd: baseDir, onlyFiles: true, dot: true })
381
+ );
382
+ }
383
+ function expandManifestFilesFromPaths(paths, patterns) {
384
+ const fileSet = new Set(paths);
385
+ const dirs = /* @__PURE__ */ new Map();
386
+ const link = (dir, child) => {
387
+ const set = dirs.get(dir) ?? /* @__PURE__ */ new Set();
388
+ set.add(child);
389
+ dirs.set(dir, set);
390
+ };
391
+ for (const file of fileSet) {
392
+ const parts = file.split("/");
393
+ for (let i = 0; i < parts.length; i++) {
394
+ link(i === 0 ? "" : parts.slice(0, i).join("/"), parts[i]);
395
+ }
396
+ }
397
+ const rel = (abs) => abs.replace(/^\/+/, "").replace(/\/+$/, "");
398
+ const stats = (abs) => {
399
+ const r = rel(abs);
400
+ const isFile = fileSet.has(r);
401
+ const isDir = r === "" || dirs.has(r);
402
+ if (!isFile && !isDir) {
403
+ const err = new Error(`ENOENT: ${abs}`);
404
+ err.code = "ENOENT";
405
+ throw err;
406
+ }
407
+ return {
408
+ isFile: () => isFile,
409
+ isDirectory: () => isDir,
410
+ isSymbolicLink: () => false,
411
+ isBlockDevice: () => false,
412
+ isCharacterDevice: () => false,
413
+ isFIFO: () => false,
414
+ isSocket: () => false,
415
+ mode: isDir ? 16384 : 32768
416
+ };
417
+ };
418
+ const list = (abs) => {
419
+ const r = rel(abs);
420
+ return [...dirs.get(r) ?? []].sort().map((name) => {
421
+ const full = r === "" ? name : `${r}/${name}`;
422
+ return { name, ...stats(`/${full}`) };
423
+ });
424
+ };
425
+ const cb = (fn) => (...args) => {
426
+ const done = args.pop();
427
+ try {
428
+ done(null, fn(...args));
429
+ } catch (err) {
430
+ done(err);
431
+ }
432
+ };
433
+ const vfs = {
434
+ lstatSync: stats,
435
+ statSync: stats,
436
+ readdirSync: (abs, opts) => opts?.withFileTypes ? list(abs) : list(abs).map((d) => d.name),
437
+ lstat: cb(stats),
438
+ stat: cb(stats),
439
+ readdir: cb(
440
+ (abs, opts) => opts?.withFileTypes ? list(abs) : list(abs).map((d) => d.name)
441
+ )
442
+ };
443
+ return expandWith(
444
+ patterns,
445
+ (r) => fileSet.has(r),
446
+ (pattern) => fg.sync(pattern, {
447
+ cwd: "/",
448
+ onlyFiles: true,
449
+ dot: true,
450
+ fs: vfs
451
+ })
452
+ );
453
+ }
454
+ function gitPublishedFiles(root) {
455
+ if (!existsSync(join(root, ".git"))) return null;
456
+ const listed = spawnSync(
457
+ "git",
458
+ ["-C", root, "ls-files", "-z", "--cached", "--others", "--exclude-standard"],
459
+ { encoding: "utf8", stdio: ["ignore", "pipe", "ignore"], maxBuffer: 1 << 28 }
460
+ );
461
+ if (listed.error || listed.status !== 0) return null;
462
+ return new Set(listed.stdout.split("\0").filter((p) => p !== ""));
463
+ }
464
+ function onlyPublished(published, root, assetRoot, files) {
465
+ if (published === null) return [...files];
466
+ const prefix = relative(root, assetRoot).split(sep).join("/");
467
+ return files.filter((f) => published.has(prefix === "" ? f : `${prefix}/${f}`));
468
+ }
338
469
  function listSkippedSymlinks(absDir) {
339
470
  const out = [];
340
471
  const walk = (dir, rel) => {
@@ -357,9 +488,8 @@ function listSkippedSymlinks(absDir) {
357
488
  return out.sort();
358
489
  }
359
490
  function listLibrarySymlinks(absDir, opts = {}) {
360
- let root;
361
491
  try {
362
- root = realpathSync(absDir);
492
+ realpathSync(absDir);
363
493
  } catch {
364
494
  return [];
365
495
  }
@@ -381,8 +511,7 @@ function listLibrarySymlinks(absDir, opts = {}) {
381
511
  let refused = here || opts.wholeTree === true;
382
512
  if (!refused) {
383
513
  try {
384
- const real = realpathSync(full);
385
- refused = statSync(real).isDirectory() && (real === root || real.startsWith(root + sep) || readdirSync(real).some((n) => isManifestName(n)));
514
+ refused = statSync(full).isDirectory() && readdirSync(full).some(isManifestName);
386
515
  } catch {
387
516
  }
388
517
  }
@@ -425,6 +554,6 @@ function listSecretFiles(absDir) {
425
554
  return out.sort();
426
555
  }
427
556
 
428
- export { ASSET_KEY_ORDER, LIBRARY_GITIGNORE, SKAILE_MANIFEST_FILENAME, compositeSha256, decodeSkaileManifest, encodeSkaileManifest, isEnvFileName, isNonAssetDir, isNonAssetFile, isNonAssetPath, isSecretFileName, librarySymlinkMessage, listAssetFiles, listLibrarySymlinks, listSecretFiles, listSkippedSymlinks, loadSkPublishManifest, orderedAsset, sha256Hex };
429
- //# sourceMappingURL=chunk-CKICWXMU.js.map
430
- //# sourceMappingURL=chunk-CKICWXMU.js.map
557
+ export { ASSET_KEY_ORDER, LIBRARY_GITIGNORE, SKAILE_MANIFEST_FILENAME, compositeSha256, decodeSkaileManifest, encodeSkaileManifest, expandManifestFiles, expandManifestFilesFromPaths, gitPublishedFiles, isEnvFileName, isNonAssetDir, isNonAssetFile, isNonAssetPath, isSecretFileName, librarySymlinkMessage, listAssetFiles, listLibrarySymlinks, listSecretFiles, listSkippedSymlinks, loadSkPublishManifest, onlyPublished, orderedAsset, sha256Hex };
558
+ //# sourceMappingURL=chunk-UQ33Y4DM.js.map
559
+ //# sourceMappingURL=chunk-UQ33Y4DM.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../core/src/publish-manifest.ts"],"names":[],"mappings":"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","file":"chunk-UQ33Y4DM.js","sourcesContent":["/**\n * Publish manifest — `skaile.manifest.yaml`\n *\n * What a repo PUBLISHES: the `publisher` / `version` / `assets[]` that used to\n * live in the publication half of `skaile.yaml`, plus a per-asset dependency\n * graph, store-listing metadata, and an optional curator `source:` pointer.\n *\n * ── Two files, two codecs ──────────────────────────────────────────────────\n *\n * skaile.yaml → SkWorkspaceConfig (workspace + consumption)\n * skaile.manifest.yaml → SkPublishManifest (publication) ← this module\n *\n * A repo can have either file, both, or neither: a pure workspace has only\n * `skaile.yaml`; a pure asset repo (e.g. `ai-assets`) has only\n * `skaile.manifest.yaml`; a repo that is both has both.\n *\n * ── One format, three roles ────────────────────────────────────────────────\n *\n * First-party `source:` absent → bytes live in this repo (`root`/`files`).\n * Curator/sidecar `source:` present → bytes come from the referenced upstream,\n * verified by `sha256`.\n *\n * `decodeSkaileManifest` mirrors `decodeSkaileYaml`: total (never throws),\n * returns {@link Diagnostic}s. Dep-ref strings are validated with `parseAssetRef`.\n */\n\nimport { spawnSync } from \"node:child_process\";\nimport { createHash } from \"node:crypto\";\nimport {\n type Dirent,\n existsSync,\n readdirSync,\n readFileSync,\n readlinkSync,\n realpathSync,\n statSync,\n} from \"node:fs\";\nimport fg from \"fast-glob\";\nimport { join, relative, resolve, sep } from \"node:path\";\nimport { parse, stringify } from \"yaml\";\nimport { isManifestName } from \"./manifest.js\";\nimport { isValidPublisher, parseAssetRef, PUBLISHER_HINT } from \"./models.js\";\nimport type { Diagnostic } from \"./workspace-config.js\";\n\n// ── Types ───────────────────────────────────────────────────────────────────\n\n/** One file inside a curated asset, pinned to an exact upstream blob hash. */\nexport interface ManifestFileEntry {\n path: string;\n /** 64-hex sha256 of the upstream blob. */\n sha256: string;\n}\n\n/**\n * One entry in a manifest's `assets:` list. Either `root:` (recursive walk) or\n * `files:` (explicit list, supports globs for first-party; the granular\n * `{path, sha256}` form for curated upstream verification) declares which paths\n * constitute the asset. `version:` overrides the manifest-level version.\n *\n * @docLink packages/core/publish-manifest#asset-entry\n */\nexport interface AssetEntry {\n kind: string;\n name: string;\n root?: string;\n /**\n * Explicit file listing. First-party manifests use bare `string[]` (globs,\n * fast-glob). Curated entries may use the granular `{path, sha256}` form so\n * the resolver fetches + verifies exact upstream blobs without a full clone.\n */\n files?: string[] | ManifestFileEntry[];\n version?: string;\n /** Per-asset publisher override (e.g. for curator/mirror repos). */\n publisher?: string;\n\n /**\n * Canonical dep refs (`kind:@<publisher>/name[#version]`) — same grammar as\n * `SkWorkspaceConfig.dependencies`. Authoritative for this asset's resolved\n * deps. (Was `requires` in `.skaile-source.yaml`.)\n */\n dependencies?: string[];\n\n /**\n * Author-pinned composite sha256 over the asset's `files`/`root` (the\n * {@link compositeSha256} the walker, discovery and the lock all use). Optional locally;\n * REQUIRED on store publish. (Was `.skaile-source.yaml` `assets[].sha256`.)\n */\n sha256?: string;\n\n /**\n * Curator override: this single asset's bytes come from a different upstream\n * than the manifest-level `source`. Absent → inherit manifest `source` (or\n * first-party when that is also absent).\n */\n source?: ManifestSource;\n\n // ── Store-listing metadata (all optional; fall back to content frontmatter) ──\n description?: string;\n keywords?: string[];\n category?: string;\n license?: string;\n homepage?: string;\n}\n\n/**\n * Upstream the bytes come from when a manifest curates a repo it does not own.\n * Absent → first-party (bytes live in the manifest's own repo).\n *\n * @docLink packages/core/publish-manifest#manifest-source\n */\nexport interface ManifestSource {\n url: string;\n /** 40-char commit the curated bytes are pinned to. */\n commit?: string;\n}\n\n/**\n * Signing/attribution recorded when a manifest is published on behalf of others.\n *\n * @docLink packages/core/publish-manifest#manifest-provenance\n */\nexport interface ManifestProvenance {\n curator: string;\n signed_by?: string;\n}\n\n/**\n * Parsed `skaile.manifest.yaml` — what a repo publishes.\n *\n * @docLink packages/core/publish-manifest#sk-publish-manifest\n */\nexport interface SkPublishManifest {\n publisher?: string;\n version?: string;\n /** Repo-level store defaults inherited by assets unless overridden per-entry. */\n license?: string;\n homepage?: string;\n /**\n * Repo-relative path prefixes holding dev-only assets — excluded from\n * discovery/publish unless `--dev`. (Was `.skaile-source.yaml` `dev_paths`.)\n */\n dev_paths?: string[];\n /**\n * Curator mode: the single upstream all assets in this file come from. A\n * per-asset `source` overrides it. Absent → first-party (own repo).\n */\n source?: ManifestSource;\n /** Present when this manifest is curated/published on behalf of another author. */\n provenance?: ManifestProvenance;\n assets?: AssetEntry[];\n}\n\n/** Result of {@link decodeSkaileManifest}: the manifest plus any notes. */\nexport interface ManifestDecodeResult {\n manifest: SkPublishManifest;\n diagnostics: Diagnostic[];\n}\n\n/** The single fixed filename for a publish manifest. */\nexport const SKAILE_MANIFEST_FILENAME = \"skaile.manifest.yaml\";\n\n// ── Decode ──────────────────────────────────────────────────────────────────\n\nfunction parseSource(raw: unknown): ManifestSource | undefined {\n if (!raw || typeof raw !== \"object\" || Array.isArray(raw)) return undefined;\n const s = raw as Record<string, unknown>;\n if (typeof s.url !== \"string\" || s.url.length === 0) return undefined;\n const out: ManifestSource = { url: s.url };\n if (typeof s.commit === \"string\" && s.commit.length > 0) out.commit = s.commit;\n return out;\n}\n\nfunction parseProvenance(raw: unknown): ManifestProvenance | undefined {\n if (!raw || typeof raw !== \"object\" || Array.isArray(raw)) return undefined;\n const p = raw as Record<string, unknown>;\n if (typeof p.curator !== \"string\" || p.curator.length === 0) return undefined;\n const out: ManifestProvenance = { curator: p.curator };\n if (typeof p.signed_by === \"string\" && p.signed_by.length > 0) out.signed_by = p.signed_by;\n return out;\n}\n\n/** Parse `files:` as either `string[]` (globs) or `{path, sha256}[]` (granular). */\nfunction parseFiles(raw: unknown): string[] | ManifestFileEntry[] | undefined {\n if (!Array.isArray(raw)) return undefined;\n const strings: string[] = [];\n const granular: ManifestFileEntry[] = [];\n for (const item of raw) {\n if (typeof item === \"string\") {\n strings.push(item);\n } else if (item && typeof item === \"object\" && !Array.isArray(item)) {\n const f = item as Record<string, unknown>;\n if (typeof f.path === \"string\" && typeof f.sha256 === \"string\") {\n granular.push({ path: f.path, sha256: f.sha256 });\n }\n }\n }\n // A manifest uses one form per entry; if both somehow appear, granular wins\n // (it is the verifiable form). Empty → undefined.\n if (granular.length > 0) return granular;\n if (strings.length > 0) return strings;\n return undefined;\n}\n\n/** Parse the YAML root, returning either the mapping or an error diagnostic. */\nfunction parseManifestRoot(\n text: string,\n): { ok: true; raw: Record<string, unknown> } | { ok: false; diagnostic: Diagnostic } {\n let parsed: unknown;\n try {\n parsed = parse(text) ?? {};\n } catch (err) {\n return {\n ok: false,\n diagnostic: {\n code: \"yaml_syntax\",\n severity: \"error\",\n message: `Invalid YAML: ${err instanceof Error ? err.message : String(err)}`,\n },\n };\n }\n if (typeof parsed !== \"object\" || parsed === null || Array.isArray(parsed)) {\n return {\n ok: false,\n diagnostic: {\n code: \"non_object_root\",\n severity: \"error\",\n message: \"skaile.manifest.yaml must be a mapping at the top level.\",\n },\n };\n }\n return { ok: true, raw: parsed as Record<string, unknown> };\n}\n\n/**\n * Strip a SINGLE leading `@` from a publisher and, when one was removed, push a\n * `warning` diagnostic. The `@` is the scope sigil the ref formatter adds — an\n * authored `@acme` would otherwise index as `@@acme` and be un-addable. Bare\n * names are returned untouched.\n */\nfunction normalizePublisher(value: string, path: string, diagnostics: Diagnostic[]): string {\n if (!value.startsWith(\"@\")) return value;\n const stripped = value.slice(1);\n diagnostics.push({\n code: \"publisher_leading_sigil\",\n severity: \"warning\",\n message: `publisher \"${value}\": leading \"@\" is the scope sigil and is added automatically — use bare \"${stripped}\"`,\n path,\n });\n return stripped;\n}\n\n/** Decode the manifest-level scalar/array/object fields onto `manifest`. */\nfunction decodeManifestFields(\n raw: Record<string, unknown>,\n manifest: SkPublishManifest,\n diagnostics: Diagnostic[],\n): void {\n if (typeof raw.publisher === \"string\" && raw.publisher.length > 0) {\n manifest.publisher = normalizePublisher(raw.publisher, \"publisher\", diagnostics);\n }\n if (typeof raw.version === \"string\" && raw.version.length > 0) {\n manifest.version = raw.version;\n }\n if (typeof raw.license === \"string\" && raw.license.length > 0) {\n manifest.license = raw.license;\n }\n if (typeof raw.homepage === \"string\" && raw.homepage.length > 0) {\n manifest.homepage = raw.homepage;\n }\n if (Array.isArray(raw.dev_paths)) {\n const paths = raw.dev_paths.filter((p): p is string => typeof p === \"string\" && p.length > 0);\n if (paths.length > 0) manifest.dev_paths = paths;\n }\n const source = parseSource(raw.source);\n if (source) manifest.source = source;\n const provenance = parseProvenance(raw.provenance);\n if (provenance) manifest.provenance = provenance;\n}\n\n/**\n * Validate an asset's `dependencies` via `parseAssetRef`, pushing a `warning`\n * for each malformed ref. Returns the kept (valid) refs.\n */\nfunction decodeAssetDependencies(\n raw: unknown,\n kind: string,\n name: string,\n diagnostics: Diagnostic[],\n): string[] {\n const deps: string[] = [];\n if (!Array.isArray(raw)) return deps;\n for (const dep of raw) {\n if (typeof dep !== \"string\") continue;\n try {\n const ref = parseAssetRef(dep);\n // The publisher follows the one slug rule, so an entry `library index` refuses is\n // dropped here like every other malformed one (not left to fail discovery of the asset).\n if (ref.publisher !== undefined && !isValidPublisher(ref.publisher)) {\n throw new Error(`publisher \"${ref.publisher}\" — ${PUBLISHER_HINT}`);\n }\n deps.push(dep);\n } catch (err) {\n diagnostics.push({\n code: \"malformed_dependency\",\n severity: \"warning\",\n message: `assets[${kind}:${name}].dependencies: ${\n err instanceof Error ? err.message : String(err)\n }`,\n path: `assets.${kind}:${name}.dependencies`,\n });\n }\n }\n return deps;\n}\n\n/**\n * Decode one `assets[]` item into an {@link AssetEntry}, or `undefined` when the\n * item is not a mapping or lacks both `kind` and `name`. Pushes dependency\n * warnings to `diagnostics`.\n */\nfunction decodeAssetEntry(item: unknown, diagnostics: Diagnostic[]): AssetEntry | undefined {\n if (!item || typeof item !== \"object\" || Array.isArray(item)) return undefined;\n const a = item as Record<string, unknown>;\n const kind = typeof a.kind === \"string\" ? a.kind : \"\";\n const name = typeof a.name === \"string\" ? a.name : \"\";\n if (!kind || !name) return undefined;\n const entry: AssetEntry = { kind, name };\n if (typeof a.root === \"string\") entry.root = a.root;\n const files = parseFiles(a.files);\n if (files) entry.files = files;\n if (typeof a.version === \"string\") entry.version = a.version;\n if (typeof a.publisher === \"string\")\n entry.publisher = normalizePublisher(\n a.publisher,\n `assets.${kind}:${name}.publisher`,\n diagnostics,\n );\n if (typeof a.sha256 === \"string\") entry.sha256 = a.sha256;\n const assetSource = parseSource(a.source);\n if (assetSource) entry.source = assetSource;\n\n const deps = decodeAssetDependencies(a.dependencies, kind, name, diagnostics);\n if (deps.length > 0) entry.dependencies = deps;\n\n if (typeof a.description === \"string\") entry.description = a.description;\n if (Array.isArray(a.keywords)) {\n const kw = a.keywords.filter((k): k is string => typeof k === \"string\");\n if (kw.length > 0) entry.keywords = kw;\n }\n if (typeof a.category === \"string\") entry.category = a.category;\n if (typeof a.license === \"string\") entry.license = a.license;\n if (typeof a.homepage === \"string\") entry.homepage = a.homepage;\n\n return entry;\n}\n\n/** Decode the `assets[]` list onto `manifest`, collecting dependency warnings. */\nfunction decodeManifestAssets(\n raw: Record<string, unknown>,\n manifest: SkPublishManifest,\n diagnostics: Diagnostic[],\n): void {\n if (!Array.isArray(raw.assets)) return;\n const entries: AssetEntry[] = [];\n for (const item of raw.assets) {\n const entry = decodeAssetEntry(item, diagnostics);\n if (entry) entries.push(entry);\n }\n if (entries.length > 0) manifest.assets = entries;\n}\n\n/**\n * Decode `skaile.manifest.yaml` text into a {@link SkPublishManifest} plus\n * {@link Diagnostic}s. Total — never throws: a YAML syntax error or non-object\n * root is reported as an `error`-severity diagnostic with an empty manifest.\n * Malformed `assets[].dependencies` refs are reported as `warning`s (validated\n * via `parseAssetRef`) rather than silently dropped.\n *\n * Pair with {@link encodeSkaileManifest} for round-tripping.\n * @docLink packages/core/publish-manifest#decode-skaile-manifest\n */\nexport function decodeSkaileManifest(text: string): ManifestDecodeResult {\n const root = parseManifestRoot(text);\n if (!root.ok) {\n return { manifest: {}, diagnostics: [root.diagnostic] };\n }\n\n const manifest: SkPublishManifest = {};\n const diagnostics: Diagnostic[] = [];\n decodeManifestFields(root.raw, manifest, diagnostics);\n decodeManifestAssets(root.raw, manifest, diagnostics);\n\n return { manifest, diagnostics };\n}\n\n// ── Encode ──────────────────────────────────────────────────────────────────\n\n/** Fixed top-level key order for {@link encodeSkaileManifest}. */\nconst MANIFEST_KEY_ORDER: (keyof SkPublishManifest)[] = [\n \"publisher\",\n \"version\",\n \"license\",\n \"homepage\",\n \"dev_paths\",\n \"source\",\n \"provenance\",\n \"assets\",\n];\n\n/** Fixed per-asset key order for {@link encodeSkaileManifest}. */\nexport const ASSET_KEY_ORDER: readonly (keyof AssetEntry)[] = [\n \"kind\",\n \"name\",\n \"source\",\n \"root\",\n \"files\",\n \"version\",\n \"publisher\",\n \"sha256\",\n \"dependencies\",\n \"description\",\n \"keywords\",\n \"category\",\n \"license\",\n \"homepage\",\n];\n\n/** An entry with its keys in canonical order, undefined fields dropped. */\nexport function orderedAsset(a: AssetEntry): Record<string, unknown> {\n const out: Record<string, unknown> = {};\n for (const key of ASSET_KEY_ORDER) {\n const value = a[key];\n if (value !== undefined) out[key] = value;\n }\n return out;\n}\n\n/**\n * Encode a {@link SkPublishManifest} to canonical `skaile.manifest.yaml` text:\n * deterministic key order, only defined fields, `lineWidth: 120` (mirrors\n * `encodeSkaileYaml`).\n * @docLink packages/core/publish-manifest#encode-skaile-manifest\n */\nexport function encodeSkaileManifest(manifest: SkPublishManifest): string {\n const out: Record<string, unknown> = {};\n for (const key of MANIFEST_KEY_ORDER) {\n const value = manifest[key];\n if (value === undefined) continue;\n if (key === \"assets\" && Array.isArray(value)) {\n out.assets = (value as AssetEntry[]).map(orderedAsset);\n } else {\n out[key] = value;\n }\n }\n return stringify(out, { lineWidth: 120 });\n}\n\n// ── File I/O ──────────────────────────────────────────────────────────────────\n\n/**\n * Load and decode `<dir>/skaile.manifest.yaml`. Returns `null` when the file is\n * absent or unparseable (mirrors `loadSkWorkspaceConfig`'s tolerant contract).\n * @docLink packages/core/publish-manifest#load-sk-publish-manifest\n */\nexport function loadSkPublishManifest(dir: string): SkPublishManifest | null {\n const filePath = join(resolve(dir), SKAILE_MANIFEST_FILENAME);\n if (!existsSync(filePath)) return null;\n let raw: string;\n try {\n raw = readFileSync(filePath, \"utf-8\");\n } catch {\n return null;\n }\n const { manifest, diagnostics } = decodeSkaileManifest(raw);\n if (diagnostics.some((d) => d.code === \"yaml_syntax\" || d.code === \"non_object_root\")) {\n return null;\n }\n return manifest;\n}\n\n// ── Asset content hash ──────────────────────────────────────────────────────\n\n/** Hex SHA-256 of one file's bytes (the per-file `files[].sha256`). */\nexport function sha256Hex(bytes: Uint8Array): string {\n return createHash(\"sha256\").update(bytes).digest(\"hex\");\n}\n\n/**\n * The one asset content hash, shared by every origin (library index, library\n * lock, git-source lock + provenance walker, store install manifest, author-pinned\n * `sha256`): SHA-256 (bare 64-hex) over `localeCompare`-sorted `<path>:<sha256>\\n`\n * rows, where each `sha256` is the file's own {@link sha256Hex}.\n *\n * `path` MUST be POSIX and relative to the root of the repository/library that\n * holds the asset (so `skills/foo/SKILL.md`, never `SKILL.md` relative to the\n * asset folder) — the path is folded into the digest, so a different base gives a\n * different hash for the same bytes.\n */\nexport function compositeSha256(files: ReadonlyArray<{ path: string; sha256: string }>): string {\n const lines = files\n .slice()\n .sort((a, b) => a.path.localeCompare(b.path))\n .map((f) => `${f.path}:${f.sha256}\\n`)\n .join(\"\");\n return createHash(\"sha256\").update(lines).digest(\"hex\");\n}\n\n/**\n * Directories never part of an asset's bytes: VCS, dependencies, per-project state, interpreter\n * and tool caches, virtual environments and editor folders. One list for the deploy file set and\n * the content hash, so a helper script or a test run inside a library (`__pycache__/`,\n * `.pytest_cache/`) never makes the lock drift.\n */\nconst NON_ASSET_DIRS = new Set([\n \".git\",\n \"node_modules\",\n \".skaile\",\n \"__pycache__\",\n \".venv\",\n \"venv\",\n \".pytest_cache\",\n \".mypy_cache\",\n \".ruff_cache\",\n \".idea\",\n \".vscode\",\n]);\n\n/** File names never part of an asset's bytes (OS and interpreter leftovers). */\nconst NON_ASSET_FILES = new Set([\".DS_Store\", \"Thumbs.db\"]);\n\n/** `true` for a directory name no asset ships (see {@link NON_ASSET_DIRS}). */\nexport function isNonAssetDir(name: string): boolean {\n return NON_ASSET_DIRS.has(name);\n}\n\n/**\n * `true` for a file name no asset ships: `.DS_Store`, `Thumbs.db`, `*.pyc`, `*.pyo`, a secret\n * ({@link isSecretFileName}: `.env*`, private keys, credential files), editor leftovers\n * (`*.swp`, `*.swo`, `*~`, `*.bak`) and `*.log`. The scaffolded library `.gitignore` ignores the\n * same names, so what import, deploy and the hash leave out is what the published repo lacks.\n */\nexport function isNonAssetFile(name: string): boolean {\n return (\n NON_ASSET_FILES.has(name) ||\n name.endsWith(\".pyc\") ||\n name.endsWith(\".pyo\") ||\n name.endsWith(\".swp\") ||\n name.endsWith(\".swo\") ||\n name.endsWith(\"~\") ||\n name.endsWith(\".bak\") ||\n name.endsWith(\".log\") ||\n isSecretFileName(name)\n );\n}\n\n/** Committed `.env` templates: no secrets, so they stay part of the asset. */\nconst ENV_TEMPLATE_SUFFIXES = new Set([\".example\", \".sample\", \".template\", \".dist\"]);\n\n/**\n * `true` for a `.env` or `.env.*` file name that holds local secrets and is never shipped with\n * an asset. A template (`.env.example`, `.env.sample`, `.env.template`, `.env.dist`) is not one.\n */\nexport function isEnvFileName(name: string): boolean {\n if (name === \".env\") return true;\n if (!name.startsWith(\".env.\")) return false;\n return !ENV_TEMPLATE_SUFFIXES.has(name.slice(\".env\".length));\n}\n\n/** Private key, certificate bundle and state-file extensions that never belong in a published library. */\nconst SECRET_FILE_SUFFIXES = [\".pem\", \".key\", \".p12\", \".pfx\", \".tfstate\", \".jks\", \".keystore\"];\n\n/** Patterns of secret file names that are not one fixed name, as `.gitignore` globs. */\nconst SECRET_FILE_GLOBS = [\"client_secret*.json\"];\n\n/** File names that hold a private key or a credential, whatever sits next to them. */\nconst SECRET_FILE_NAMES = new Set([\n \"id_rsa\",\n \"id_dsa\",\n \"id_ecdsa\",\n \"id_ed25519\",\n \".npmrc\",\n \".netrc\",\n \".envrc\",\n \".pypirc\",\n \".htpasswd\",\n \".pgpass\",\n \".my.cnf\",\n \".dockercfg\",\n \".boto\",\n \".vault_pass\",\n \".git-credentials\",\n \"kubeconfig\",\n \"wallet.dat\",\n \"credentials\",\n \"credentials.json\",\n \"token.json\",\n \"secret.txt\",\n \"secrets.txt\",\n \"api_key.txt\",\n \"secrets.yaml\",\n \"secrets.yml\",\n \"secrets.json\",\n \"service-account.json\",\n]);\n\n/**\n * `true` for a file name that holds a secret: a local `.env` ({@link isEnvFileName}), a private\n * key, a certificate bundle, a keystore, a Terraform state file, or a credential file (`.npmrc`,\n * `.netrc`, `.envrc`, `.pypirc`, `.htpasswd`, `.pgpass`, `.dockercfg`, `.git-credentials`,\n * `kubeconfig`, `credentials`, `credentials.json`, `client_secret*.json`, `token.json`,\n * `secrets.yaml`, `service-account.json`, ...: the list is in this file). One list for the\n * publish plan, the scaffolded `.gitignore`, the deploy file set and the content hash: `add` and\n * `install` never copy these (p1040, p1202).\n */\nexport function isSecretFileName(name: string): boolean {\n return (\n isEnvFileName(name) ||\n SECRET_FILE_NAMES.has(name) ||\n SECRET_FILE_SUFFIXES.some((suffix) => name.endsWith(suffix)) ||\n (name.startsWith(\"client_secret\") && name.endsWith(\".json\"))\n );\n}\n\n/**\n * The `.gitignore` `library create` scaffolds: the names {@link isNonAssetFile} and\n * {@link NON_ASSET_DIRS} leave out of an asset (OS files, caches, editor leftovers, secrets), so\n * what the library publishes is what a deploy ships: `.env*` and every name of\n * {@link isSecretFileName}. `.env` templates stay.\n */\nexport const LIBRARY_GITIGNORE = [\n \".DS_Store\",\n \"Thumbs.db\",\n \"node_modules/\",\n \"__pycache__/\",\n \"*.pyc\",\n \"*.pyo\",\n \"*.log\",\n \"*.swp\",\n \"*.swo\",\n \"*~\",\n \"*.bak\",\n \".env\",\n \".env.*\",\n ...SECRET_FILE_NAMES,\n ...SECRET_FILE_SUFFIXES.map((suffix) => `*${suffix}`),\n ...SECRET_FILE_GLOBS,\n ...[...ENV_TEMPLATE_SUFFIXES].map((suffix) => `!.env${suffix}`),\n \"\",\n].join(\"\\n\");\n\n/**\n * `true` when a POSIX path (relative to anything) lies in a {@link isNonAssetDir} directory\n * or names a {@link isNonAssetFile} file. Symlinks are not part of an asset either, but a path\n * string cannot tell: walkers skip them through `Dirent.isFile()`.\n */\nexport function isNonAssetPath(posixPath: string): boolean {\n const parts = posixPath.split(\"/\");\n const last = parts.pop() ?? \"\";\n return isNonAssetFile(last) || parts.some(isNonAssetDir);\n}\n\n/**\n * Every file under `absDir`, as sorted POSIX paths relative to `absDir`,\n * skipping {@link NON_ASSET_DIRS}, {@link NON_ASSET_FILES} and `*.pyc`. The single enumeration\n * behind a `root:` manifest entry — used by the provenance walker and by discovery, so both\n * hash the same file list. Symlinks are skipped.\n */\nexport function listAssetFiles(absDir: string): string[] {\n const out: string[] = [];\n const walk = (dir: string, rel: string): void => {\n let entries: Dirent[];\n try {\n entries = readdirSync(dir, { withFileTypes: true });\n } catch {\n return;\n }\n for (const e of entries) {\n const childRel = rel ? `${rel}/${e.name}` : e.name;\n if (e.isDirectory()) {\n if (!isNonAssetDir(e.name)) walk(join(dir, e.name), childRel);\n } else if (e.isFile() && !isNonAssetFile(e.name)) {\n out.push(childRel);\n }\n }\n };\n walk(absDir, \"\");\n return out.sort();\n}\n\n/**\n * The one rule that turns a manifest entry's `files:` list into files (p1201), shared by the\n * disk walk ({@link expandManifestFiles}) and the tree-entries walk the store's catalog backend\n * uses ({@link expandManifestFilesFromPaths}). A plain path stays as written when it is a file;\n * a glob (`comp/*`, dot files included) becomes the files it matches. `unmatched` names every\n * plain path that is not a file (missing or a directory) and every glob that matches no file, so\n * a caller refuses the entry instead of listing nothing.\n */\nfunction expandWith(\n patterns: readonly string[],\n isFile: (rel: string) => boolean,\n glob: (pattern: string) => string[],\n): { files: string[]; unmatched: string[] } {\n const files = new Set<string>();\n const unmatched: string[] = [];\n for (const raw of patterns) {\n const pattern = raw.replace(/\\\\/g, \"/\");\n if (!fg.isDynamicPattern(pattern)) {\n if (isFile(pattern)) files.add(pattern);\n else unmatched.push(raw);\n continue;\n }\n const hits = glob(pattern);\n if (hits.length === 0) unmatched.push(`${raw} (matches no file)`);\n for (const hit of hits) files.add(hit);\n }\n return { files: [...files].sort(), unmatched };\n}\n\n/**\n * Expand a manifest entry's `files:` list against `baseDir` on disk (POSIX paths relative to it):\n * what `validate`, the publish plan, `library index`, `add` and the lock hash share (p1201).\n */\nexport function expandManifestFiles(\n baseDir: string,\n patterns: readonly string[],\n): { files: string[]; unmatched: string[] } {\n return expandWith(\n patterns,\n (rel) => {\n try {\n return statSync(join(baseDir, rel)).isFile();\n } catch {\n return false;\n }\n },\n (pattern) => fg.sync(pattern, { cwd: baseDir, onlyFiles: true, dot: true }),\n );\n}\n\n/**\n * {@link expandManifestFiles} over a flat list of file paths (POSIX, relative to the entry's\n * directory) instead of the disk: the tree-entries discovery of the store's catalog backend has\n * no files to walk. fast-glob matches against a virtual file system built from `paths`, so the\n * result is the one the disk walk gives for the same layout.\n */\nexport function expandManifestFilesFromPaths(\n paths: Iterable<string>,\n patterns: readonly string[],\n): { files: string[]; unmatched: string[] } {\n const fileSet = new Set(paths);\n const dirs = new Map<string, Set<string>>();\n const link = (dir: string, child: string): void => {\n const set = dirs.get(dir) ?? new Set<string>();\n set.add(child);\n dirs.set(dir, set);\n };\n for (const file of fileSet) {\n const parts = file.split(\"/\");\n for (let i = 0; i < parts.length; i++) {\n link(i === 0 ? \"\" : parts.slice(0, i).join(\"/\"), parts[i]!);\n }\n }\n const rel = (abs: string): string => abs.replace(/^\\/+/, \"\").replace(/\\/+$/, \"\");\n const stats = (abs: string) => {\n const r = rel(abs);\n const isFile = fileSet.has(r);\n const isDir = r === \"\" || dirs.has(r);\n if (!isFile && !isDir) {\n const err = new Error(`ENOENT: ${abs}`) as NodeJS.ErrnoException;\n err.code = \"ENOENT\";\n throw err;\n }\n return {\n isFile: () => isFile,\n isDirectory: () => isDir,\n isSymbolicLink: () => false,\n isBlockDevice: () => false,\n isCharacterDevice: () => false,\n isFIFO: () => false,\n isSocket: () => false,\n mode: isDir ? 0o040000 : 0o100000,\n };\n };\n const list = (abs: string) => {\n const r = rel(abs);\n return [...(dirs.get(r) ?? [])].sort().map((name) => {\n const full = r === \"\" ? name : `${r}/${name}`;\n return { name, ...stats(`/${full}`) };\n });\n };\n const cb =\n <A extends unknown[], T>(fn: (...a: A) => T) =>\n (...args: unknown[]): void => {\n const done = args.pop() as (e: Error | null, v?: T) => void;\n try {\n done(null, fn(...(args as A)));\n } catch (err) {\n done(err as Error);\n }\n };\n const vfs = {\n lstatSync: stats,\n statSync: stats,\n readdirSync: (abs: string, opts?: { withFileTypes?: boolean }) =>\n opts?.withFileTypes ? list(abs) : list(abs).map((d) => d.name),\n lstat: cb(stats),\n stat: cb(stats),\n readdir: cb((abs: string, opts?: { withFileTypes?: boolean }) =>\n opts?.withFileTypes ? list(abs) : list(abs).map((d) => d.name),\n ),\n };\n return expandWith(\n patterns,\n (r) => fileSet.has(r),\n (pattern) =>\n fg.sync(pattern, {\n cwd: \"/\",\n onlyFiles: true,\n dot: true,\n fs: vfs as unknown as NonNullable<Parameters<typeof fg.sync>[1]>[\"fs\"],\n }),\n );\n}\n\n/**\n * The files `git` would publish from the working tree at `root` (POSIX paths relative to `root`):\n * every tracked file plus every untracked file the ignore rules do not exclude, the set\n * `skaile library publish` ships. `null` when `root` is not itself a git working tree (no `.git`\n * entry in it) or git cannot list it: the caller then keeps every file on disk. A library that\n * lives in a subfolder of a bigger repository is not a git library: the ignore rules of the outer\n * repository say nothing about it. A tracked file that a `.gitignore` rule matches still counts.\n */\nexport function gitPublishedFiles(root: string): ReadonlySet<string> | null {\n if (!existsSync(join(root, \".git\"))) return null;\n const listed = spawnSync(\n \"git\",\n [\"-C\", root, \"ls-files\", \"-z\", \"--cached\", \"--others\", \"--exclude-standard\"],\n { encoding: \"utf8\", stdio: [\"ignore\", \"pipe\", \"ignore\"], maxBuffer: 1 << 28 },\n );\n if (listed.error || listed.status !== 0) return null;\n return new Set(listed.stdout.split(\"\\0\").filter((p) => p !== \"\"));\n}\n\n/**\n * `files` (relative to `assetRoot`) without those `git` would not publish ({@link gitPublishedFiles}\n * of `root`, `assetRoot` lies under it). `files` itself when `published` is `null`.\n */\nexport function onlyPublished(\n published: ReadonlySet<string> | null,\n root: string,\n assetRoot: string,\n files: readonly string[],\n): string[] {\n if (published === null) return [...files];\n const prefix = relative(root, assetRoot).split(sep).join(\"/\");\n return files.filter((f) => published.has(prefix === \"\" ? f : `${prefix}/${f}`));\n}\n\n/**\n * Every symlink under `absDir` (sorted POSIX paths relative to `absDir`) that\n * {@link listAssetFiles} leaves out: the links a deploy drops. Walks the same\n * directories, never follows a link and skips {@link NON_ASSET_DIRS}.\n */\nexport function listSkippedSymlinks(absDir: string): string[] {\n const out: string[] = [];\n const walk = (dir: string, rel: string): void => {\n let entries: Dirent[];\n try {\n entries = readdirSync(dir, { withFileTypes: true });\n } catch {\n return;\n }\n for (const e of entries) {\n const childRel = rel ? `${rel}/${e.name}` : e.name;\n if (e.isSymbolicLink()) {\n if (!isNonAssetFile(e.name)) out.push(childRel);\n } else if (e.isDirectory() && !isNonAssetDir(e.name)) {\n walk(join(dir, e.name), childRel);\n }\n }\n };\n walk(absDir, \"\");\n return out.sort();\n}\n\n/** A symlink a library refuses: where it is and what it points at. */\nexport interface LibrarySymlink {\n /** POSIX path relative to the scanned directory. */\n path: string;\n /** The link's own text (`readlink`), shown as written. */\n target: string;\n}\n\n/**\n * The symlinks a library refuses. A library is plain files: `validate`, `library index`, the\n * publish plan, `library init --path` and `asset import` refuse a symlink that\n *\n * - sits inside an asset directory (one holding a `SKILL.md`, `agent.yaml`, … — a link to a\n * file, to `/etc/hosts` or to `.` ships nothing a consumer can use, and a deploy drops it), or\n * - points at a directory that holds an asset manifest (`s1alias -> s1`): the scan would see\n * one asset twice.\n *\n * With `opts.wholeTree` (a library: `git add -A` publishes every file in it) every symlink\n * anywhere in the tree is refused, also a root-level `README-link -> README.md`, a link to a\n * file or directory outside the library and a symlinked asset directory.\n *\n * Links are never followed; {@link NON_ASSET_DIRS} are not entered. Without `wholeTree` (a\n * project) a directory link outside every asset is not listed (a project's `mountPath` link or\n * deployed `.claude/skills/x -> …`; only the connector real-path check judges it, p1332), and the\n * scanned root itself does not count as an asset directory, so a `CLAUDE.md -> AGENTS.md` next to\n * a single-file asset at the root is fine.\n *\n * @param absDir Absolute directory to scan; a missing directory yields no links.\n * @param opts.rootIsAsset Treat `absDir` itself as an asset directory (the source of an\n * `asset import`), so a link at its top level is listed too.\n * @param opts.wholeTree Refuse every symlink in the tree (a library).\n * @param opts.skipDirs Extra directory names not entered (a project's deployed harness folders).\n * @returns Links sorted by path.\n */\nexport function listLibrarySymlinks(\n absDir: string,\n opts: { rootIsAsset?: boolean; wholeTree?: boolean; skipDirs?: ReadonlySet<string> } = {},\n): LibrarySymlink[] {\n try {\n realpathSync(absDir);\n } catch {\n return [];\n }\n const skipped = (name: string): boolean =>\n isNonAssetDir(name) || opts.skipDirs?.has(name) === true;\n const out: LibrarySymlink[] = [];\n const walk = (dir: string, rel: string, inAsset: boolean): void => {\n let entries: Dirent[];\n try {\n entries = readdirSync(dir, { withFileTypes: true });\n } catch {\n return;\n }\n const here =\n inAsset ||\n (dir !== absDir &&\n entries.some((e) => (e.isFile() || e.isSymbolicLink()) && isManifestName(e.name)));\n for (const e of entries) {\n const full = join(dir, e.name);\n const childRel = rel ? `${rel}/${e.name}` : e.name;\n if (e.isSymbolicLink()) {\n if (isNonAssetFile(e.name) || skipped(e.name)) continue;\n let refused = here || opts.wholeTree === true;\n if (!refused) {\n try {\n // A link to a directory that holds an asset manifest is an asset directory that is\n // not part of the tree (p520). Outside a library and an asset, any other directory\n // link is the project's own business (a `mountPath` link, a data folder): only the\n // connector real-path check judges it (p1332).\n refused = statSync(full).isDirectory() && readdirSync(full).some(isManifestName);\n } catch {\n // Dangling outside an asset: nothing to alias.\n }\n }\n if (refused) {\n let target: string;\n try {\n target = readlinkSync(full);\n } catch {\n target = \"?\";\n }\n out.push({ path: childRel, target });\n }\n } else if (e.isDirectory() && !skipped(e.name)) {\n walk(full, childRel, here);\n }\n }\n };\n walk(absDir, \"\", opts.rootIsAsset === true);\n return out.sort((a, b) => a.path.localeCompare(b.path));\n}\n\n/**\n * The one refusal text for a {@link LibrarySymlink}, printed by `validate`, `library index`,\n * `library publish` and `asset import`.\n */\nexport function librarySymlinkMessage(link: LibrarySymlink): string {\n return `${link.path} is a symlink to ${link.target}: a library holds plain files and never follows symlinks. Remove the link, or replace it with a copy of what it points at.`;\n}\n\n/**\n * Every secret file ({@link isSecretFileName}) under `absDir` (sorted POSIX paths relative to\n * `absDir`), in the directories {@link listAssetFiles} walks. A deploy leaves them out; the list\n * lets `add` say so.\n */\nexport function listSecretFiles(absDir: string): string[] {\n const out: string[] = [];\n const walk = (dir: string, rel: string): void => {\n let entries: Dirent[];\n try {\n entries = readdirSync(dir, { withFileTypes: true });\n } catch {\n return;\n }\n for (const e of entries) {\n const childRel = rel ? `${rel}/${e.name}` : e.name;\n if (e.isFile() && isSecretFileName(e.name)) out.push(childRel);\n else if (e.isDirectory() && !isNonAssetDir(e.name)) walk(join(dir, e.name), childRel);\n }\n };\n walk(absDir, \"\");\n return out.sort();\n}\n"]}
@@ -1,5 +1,5 @@
1
- import { registryCredentialEnv } from './chunk-KY4UXX7M.js';
2
- import { mergeRegistries } from './chunk-MJHSLODD.js';
1
+ import { registryCredentialEnv } from './chunk-F2GOZMRA.js';
2
+ import { mergeRegistries } from './chunk-LSI2IVFT.js';
3
3
  import { createLogger } from './chunk-BOFL7GIF.js';
4
4
  import { EventEmitter } from 'events';
5
5
 
@@ -15,7 +15,7 @@ function toMergedRegistry(registry, layer = "session") {
15
15
  }
16
16
  return mergeRegistries([{ layer, providers: registry }]);
17
17
  }
18
- function registryDriverConfig(registry, options = {}) {
18
+ function registryHarnessConfig(registry, options = {}) {
19
19
  const merged = toMergedRegistry(registry, "runtime");
20
20
  return {
21
21
  registry: merged,
@@ -31,10 +31,10 @@ function isAgentEffort(value) {
31
31
  return AGENT_EFFORT_LEVELS.includes(value);
32
32
  }
33
33
  var TOOL_ALLOWLIST_UNSUPPORTED = "This agent harness cannot enforce a tool allowlist";
34
- var AgentDriver = class extends EventEmitter {
34
+ var AgentHarness = class extends EventEmitter {
35
35
  /**
36
- * Preserve text-only callers; drivers must explicitly support attachments.
37
- * A `toolAllowlist` is refused here: only a driver that overrides
36
+ * Preserve text-only callers; harnesses must explicitly support attachments.
37
+ * A `toolAllowlist` is refused here: only a harness that overrides
38
38
  * {@link enforcesToolAllowlist} may run a restricted turn.
39
39
  */
40
40
  promptInput(input) {
@@ -45,17 +45,17 @@ var AgentDriver = class extends EventEmitter {
45
45
  }
46
46
  /**
47
47
  * Whether {@link promptInput} enforces `AgentPromptInput.toolAllowlist` for
48
- * the whole turn, subagents included. A driver that answers `false` must
48
+ * the whole turn, subagents included. A harness that answers `false` must
49
49
  * reject an input carrying one; the runner refuses such a prompt before it
50
- * reaches the driver.
50
+ * reaches the harness.
51
51
  */
52
52
  get enforcesToolAllowlist() {
53
53
  return false;
54
54
  }
55
55
  /**
56
- * The names in `allowlist` this driver does not recognize as a tool it could
56
+ * The names in `allowlist` this harness does not recognize as a tool it could
57
57
  * offer. The runner refuses a prompt whose allowlist names any, rather than
58
- * guess. A driver that does not enforce allowlists recognizes none.
58
+ * guess. A harness that does not enforce allowlists recognizes none.
59
59
  */
60
60
  unknownAllowlistedTools(allowlist) {
61
61
  return [...allowlist];
@@ -64,7 +64,7 @@ var AgentDriver = class extends EventEmitter {
64
64
  get acceptsReplyAsPrompt() {
65
65
  return true;
66
66
  }
67
- /** Stop the driver and await owned process/state cleanup when the harness supports it. */
67
+ /** Stop the harness and await owned process/state cleanup when the harness supports it. */
68
68
  async dispose() {
69
69
  this.kill();
70
70
  }
@@ -72,25 +72,25 @@ var AgentDriver = class extends EventEmitter {
72
72
  get runtimeSessionId() {
73
73
  return void 0;
74
74
  }
75
- /** Slash commands discovered from the agent runtime. Override in drivers that support introspection. */
75
+ /** Slash commands discovered from the agent runtime. Override in harnesses that support introspection. */
76
76
  getSlashCommands() {
77
77
  return [];
78
78
  }
79
79
  // ── Interactive questions (AskUserQuestion) ──────────────────────────────
80
80
  /**
81
- * `true` while the driver is paused on an interactive question and waiting
81
+ * `true` while the harness is paused on an interactive question and waiting
82
82
  * for the user's answer rather than a new prompt. The runner routes a
83
83
  * `reply` command to {@link answerQuestion} instead of {@link prompt} when
84
- * this returns `true`. Drivers without interactive-question support return
84
+ * this returns `true`. Harnesses without interactive-question support return
85
85
  * `false` (the default), so a `reply` falls back to `prompt`.
86
86
  */
87
87
  hasPendingQuestion() {
88
88
  return false;
89
89
  }
90
90
  /**
91
- * Deliver the user's answer to the question the driver is currently paused
91
+ * Deliver the user's answer to the question the harness is currently paused
92
92
  * on. This resumes the in-flight turn — it does NOT start a new one. When a
93
- * single tool call asks several questions, the driver resolves the underlying
93
+ * single tool call asks several questions, the harness resolves the underlying
94
94
  * call only once every sub-question has an answer.
95
95
  *
96
96
  * @param answer - The user's reply text (an option label, free text, or for
@@ -106,22 +106,22 @@ var AgentDriver = class extends EventEmitter {
106
106
  return false;
107
107
  }
108
108
  /**
109
- * Apply this driver's rule for a new prompt that meets a pending question,
109
+ * Apply this harness's rule for a new prompt that meets a pending question,
110
110
  * ahead of the prompt itself. The runner queues a prompt behind the turn in
111
111
  * flight, so a turn paused on a question would otherwise hold that prompt
112
- * until the user answered. Drivers whose `prompt()` cancels the question
112
+ * until the user answered. Harnesses whose `prompt()` cancels the question
113
113
  * (claude-sdk, omp) do the same here; the default keeps the question.
114
114
  */
115
115
  supersedePendingQuestion() {
116
116
  }
117
117
  // ── Live reconfiguration ────────────────────────────────────────────────
118
118
  /**
119
- * Live-update driver configuration. `ok: true` means effective from the next
119
+ * Live-update harness configuration. `ok: true` means effective from the next
120
120
  * turn: the next turn runs on the new settings, by live switch, query recycle
121
121
  * or respawn, and the host needs no restart. A turn in progress finishes on
122
122
  * the old settings. Only model/thinking/effort are reconfigurable mid-session.
123
123
  *
124
- * Drivers that can honour that promise build a `ReconfigureLedger` and
124
+ * Harnesses that can honour that promise build a `ReconfigureLedger` and
125
125
  * delegate to it; it owns the model scope rule, ordering, drift and rollback.
126
126
  * The base implementation answers `not_supported`.
127
127
  */
@@ -130,11 +130,11 @@ var AgentDriver = class extends EventEmitter {
130
130
  return Promise.resolve({
131
131
  ok: false,
132
132
  code: "not_supported",
133
- message: `The ${this.driverInfo.id} driver cannot change ${fields} live; the change applies when the session next starts.`
133
+ message: `The ${this.harnessInfo.id} harness cannot change ${fields} live; the change applies when the session next starts.`
134
134
  });
135
135
  }
136
136
  /**
137
- * Returns the model identifier currently configured on this driver.
137
+ * Returns the model identifier currently configured on this harness.
138
138
  * Subclasses that store config locally should override this.
139
139
  */
140
140
  getModel() {
@@ -145,18 +145,18 @@ var AgentDriver = class extends EventEmitter {
145
145
  * `Date.now()` of the harness's most recent sign of life, counting messages
146
146
  * that emit no `agent-event` (thinking deltas, rate-limit telemetry, API
147
147
  * retries). A stall check reads it alongside the events it sees. `null` when
148
- * the driver does not track it.
148
+ * the harness does not track it.
149
149
  */
150
150
  lastActivityAt() {
151
151
  return null;
152
152
  }
153
153
  /**
154
154
  * Returns the token usage from the most recent completed turn.
155
- * Returns `null` if usage data is unavailable (e.g. driver doesn't track it).
155
+ * Returns `null` if usage data is unavailable (e.g. harness doesn't track it).
156
156
  *
157
157
  * Widened in 3.1.0 to return the full `TokenUsage` shape (input / output /
158
158
  * cache-read / cache-creation / reasoning). All fields are optional so
159
- * drivers can populate just what their provider reports. Existing callers
159
+ * harnesses can populate just what their provider reports. Existing callers
160
160
  * that read only `inputTokens` / `outputTokens` keep working — those fields
161
161
  * are still present and carry the same semantics as before.
162
162
  */
@@ -173,11 +173,11 @@ var AgentDriver = class extends EventEmitter {
173
173
  * (compaction thresholds) must prefer this; callers billing a turn
174
174
  * (usage ledgers, the `finished` event) must keep using `getTokenUsage()`.
175
175
  *
176
- * Returns `null` both when the driver cannot report a per-call figure at all
176
+ * Returns `null` both when the harness cannot report a per-call figure at all
177
177
  * and when it can but has no reading yet. Falling back to `getTokenUsage()`
178
- * is safe in either case only because a driver clears the two in lockstep: no
178
+ * is safe in either case only because a harness clears the two in lockstep: no
179
179
  * reading means no API call landed, so there is no cumulative usage to
180
- * overstate. A driver implementing this must preserve that invariant.
180
+ * overstate. A harness implementing this must preserve that invariant.
181
181
  */
182
182
  getContextTokens() {
183
183
  return null;
@@ -190,8 +190,8 @@ var AgentDriver = class extends EventEmitter {
190
190
  return null;
191
191
  }
192
192
  /**
193
- * What the driver can measure natively about its context window, in the
194
- * neutral {@link DriverContextReport} shape, or `null` when it measures
193
+ * What the harness can measure natively about its context window, in the
194
+ * neutral {@link HarnessContextReport} shape, or `null` when it measures
195
195
  * nothing beyond {@link getContextTokens} / {@link getContextWindow}.
196
196
  *
197
197
  * `detail: "full"` (the default) may be expensive — claude-sdk issues
@@ -205,8 +205,8 @@ var AgentDriver = class extends EventEmitter {
205
205
  return null;
206
206
  }
207
207
  /**
208
- * Returns the list of models available to this driver without starting a session.
209
- * Drivers that can enumerate their own models override this method.
208
+ * Returns the list of models available to this harness without starting a session.
209
+ * Harnesses that can enumerate their own models override this method.
210
210
  * Returns an empty array by default.
211
211
  */
212
212
  async listModels() {
@@ -218,8 +218,8 @@ var AgentDriver = class extends EventEmitter {
218
218
  _activeTurnSpan;
219
219
  _turnStartTime;
220
220
  /**
221
- * Attach a telemetry provider and active trace to this driver.
222
- * Called by the runner after creating the driver but before start().
221
+ * Attach a telemetry provider and active trace to this harness.
222
+ * Called by the runner after creating the harness but before start().
223
223
  */
224
224
  setTelemetry(provider, trace) {
225
225
  this._telemetry = provider;
@@ -243,7 +243,7 @@ var AgentDriver = class extends EventEmitter {
243
243
  /**
244
244
  * End the current turn span with generation data.
245
245
  * Called by the runner after agent_end. Model and provider are passed
246
- * explicitly — the driver base class does not access config directly.
246
+ * explicitly — the harness base class does not access config directly.
247
247
  */
248
248
  endTurnSpan(result) {
249
249
  if (!this._telemetry || !this._activeTurnSpan) return;
@@ -268,6 +268,6 @@ var AgentDriver = class extends EventEmitter {
268
268
  }
269
269
  };
270
270
 
271
- export { AGENT_EFFORT_LEVELS, AgentDriver, TOOL_ALLOWLIST_UNSUPPORTED, getBridgeLogger, registryDriverConfig, toAgentEffort, toMergedRegistry };
272
- //# sourceMappingURL=chunk-34C2EKWJ.js.map
273
- //# sourceMappingURL=chunk-34C2EKWJ.js.map
271
+ export { AGENT_EFFORT_LEVELS, AgentHarness, TOOL_ALLOWLIST_UNSUPPORTED, getBridgeLogger, registryHarnessConfig, toAgentEffort, toMergedRegistry };
272
+ //# sourceMappingURL=chunk-UVVVR4XO.js.map
273
+ //# sourceMappingURL=chunk-UVVVR4XO.js.map