@skaile/workspaces 6.9.1 → 6.11.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 (397) hide show
  1. package/CHANGELOG.md +34 -0
  2. package/dist/ai-sdk.js +8 -8
  3. package/dist/app-sdk/index.js +1 -1
  4. package/dist/{asset-feeds-PANNQPEE.js → asset-feeds-PO2WC75V.js} +23 -23
  5. package/dist/{asset-feeds-PANNQPEE.js.map → asset-feeds-PO2WC75V.js.map} +1 -1
  6. package/dist/asset-manager/catalog-deployer.js +8 -8
  7. package/dist/asset-manager/history.js +8 -8
  8. package/dist/asset-manager/index.js +15 -15
  9. package/dist/asset-manager/installer.js +10 -10
  10. package/dist/asset-manager/renderers.js +9 -9
  11. package/dist/asset-manager/src/harness-switch-state.d.ts +30 -0
  12. package/dist/asset-manager/src/harness-switch-state.d.ts.map +1 -0
  13. package/dist/asset-manager/src/index.d.ts +49 -12
  14. package/dist/asset-manager/src/index.d.ts.map +1 -1
  15. package/dist/asset-manager/src/mcp-config.d.ts +6 -0
  16. package/dist/asset-manager/src/mcp-config.d.ts.map +1 -1
  17. package/dist/bridge/codex-app-server.js +1 -2
  18. package/dist/bridge/harnesses/claude-sdk.js +15 -15
  19. package/dist/bridge/harnesses/codex.js +16 -1927
  20. package/dist/bridge/harnesses/codex.js.map +1 -1
  21. package/dist/bridge/harnesses/continue.js +11 -11
  22. package/dist/bridge/harnesses/echo.js +5 -5
  23. package/dist/bridge/harnesses/gemini.js +8 -8
  24. package/dist/bridge/harnesses/goose.js +11 -11
  25. package/dist/bridge/harnesses/omp.js +62 -14
  26. package/dist/bridge/harnesses/omp.js.map +1 -1
  27. package/dist/bridge/harnesses/opencode.js +11 -11
  28. package/dist/bridge/harnesses/qwen.js +8 -8
  29. package/dist/bridge/index.js +21 -20
  30. package/dist/bridge/src/harness-model-check.d.ts +5 -4
  31. package/dist/bridge/src/harness-model-check.d.ts.map +1 -1
  32. package/dist/bridge/src/harnesses/codex.d.ts +13 -0
  33. package/dist/bridge/src/harnesses/codex.d.ts.map +1 -1
  34. package/dist/bridge/src/harnesses/omp.d.ts +24 -1
  35. package/dist/bridge/src/harnesses/omp.d.ts.map +1 -1
  36. package/dist/bridge/src/index.d.ts +1 -0
  37. package/dist/bridge/src/index.d.ts.map +1 -1
  38. package/dist/bridge/src/types.d.ts +7 -0
  39. package/dist/bridge/src/types.d.ts.map +1 -1
  40. package/dist/{chunk-TMQFOJ6F.js → chunk-2PVYDAFN.js} +3 -3
  41. package/dist/{chunk-TMQFOJ6F.js.map → chunk-2PVYDAFN.js.map} +1 -1
  42. package/dist/{chunk-7NN3P6VF.js → chunk-342UX2MG.js} +10 -5
  43. package/dist/chunk-342UX2MG.js.map +1 -0
  44. package/dist/{chunk-7UCPGQCW.js → chunk-45XL75RO.js} +11 -11
  45. package/dist/chunk-45XL75RO.js.map +1 -0
  46. package/dist/{chunk-CPMLMNI5.js → chunk-4NJVF3DV.js} +4 -4
  47. package/dist/{chunk-CPMLMNI5.js.map → chunk-4NJVF3DV.js.map} +1 -1
  48. package/dist/{chunk-KNY356I3.js → chunk-5KSGZP3E.js} +11 -4
  49. package/dist/chunk-5KSGZP3E.js.map +1 -0
  50. package/dist/{chunk-J45JCYS4.js → chunk-5M3S6DLV.js} +4 -4
  51. package/dist/{chunk-J45JCYS4.js.map → chunk-5M3S6DLV.js.map} +1 -1
  52. package/dist/{chunk-RZRJTCP2.js → chunk-5XYZNMMC.js} +4 -4
  53. package/dist/{chunk-RZRJTCP2.js.map → chunk-5XYZNMMC.js.map} +1 -1
  54. package/dist/{chunk-S47KU4YB.js → chunk-6NNXBXYI.js} +3 -3
  55. package/dist/{chunk-S47KU4YB.js.map → chunk-6NNXBXYI.js.map} +1 -1
  56. package/dist/{chunk-GZL6RN4Z.js → chunk-7FXOOUOC.js} +170 -50
  57. package/dist/chunk-7FXOOUOC.js.map +1 -0
  58. package/dist/{chunk-V5KG6CCV.js → chunk-7HRZACI4.js} +7 -2
  59. package/dist/chunk-7HRZACI4.js.map +1 -0
  60. package/dist/{chunk-U3FI4DVT.js → chunk-7K73MCI6.js} +7 -5
  61. package/dist/chunk-7K73MCI6.js.map +1 -0
  62. package/dist/{chunk-NDBHEOIA.js → chunk-7LJUK5JK.js} +9 -9
  63. package/dist/{chunk-NDBHEOIA.js.map → chunk-7LJUK5JK.js.map} +1 -1
  64. package/dist/{chunk-Q5SSRVD5.js → chunk-7O6SCI7B.js} +16 -14
  65. package/dist/chunk-7O6SCI7B.js.map +1 -0
  66. package/dist/{chunk-QBUJTVMY.js → chunk-7VBD5XUM.js} +4 -4
  67. package/dist/{chunk-QBUJTVMY.js.map → chunk-7VBD5XUM.js.map} +1 -1
  68. package/dist/{chunk-YEOG7CWQ.js → chunk-7ZL23M3X.js} +3 -3
  69. package/dist/{chunk-YEOG7CWQ.js.map → chunk-7ZL23M3X.js.map} +1 -1
  70. package/dist/{chunk-FZO64PLQ.js → chunk-BNLXZXZN.js} +81 -8
  71. package/dist/chunk-BNLXZXZN.js.map +1 -0
  72. package/dist/{chunk-LYVLDGML.js → chunk-CG63XGVV.js} +3 -3
  73. package/dist/{chunk-LYVLDGML.js.map → chunk-CG63XGVV.js.map} +1 -1
  74. package/dist/{chunk-PLVM6OIV.js → chunk-CH6UVEM5.js} +19 -15
  75. package/dist/chunk-CH6UVEM5.js.map +1 -0
  76. package/dist/{chunk-WEPTGUR4.js → chunk-CI4I34F4.js} +27 -56
  77. package/dist/chunk-CI4I34F4.js.map +1 -0
  78. package/dist/{chunk-4ROXSQEG.js → chunk-CJO3XKO7.js} +4 -4
  79. package/dist/{chunk-4ROXSQEG.js.map → chunk-CJO3XKO7.js.map} +1 -1
  80. package/dist/{chunk-RP3ML3QD.js → chunk-CLMIZ4N6.js} +3 -3
  81. package/dist/{chunk-RP3ML3QD.js.map → chunk-CLMIZ4N6.js.map} +1 -1
  82. package/dist/{chunk-OSABUEWA.js → chunk-CVUMZTNO.js} +4 -4
  83. package/dist/{chunk-OSABUEWA.js.map → chunk-CVUMZTNO.js.map} +1 -1
  84. package/dist/{chunk-X5SGUBUV.js → chunk-DKRD6CZL.js} +3 -3
  85. package/dist/{chunk-X5SGUBUV.js.map → chunk-DKRD6CZL.js.map} +1 -1
  86. package/dist/{chunk-5KWQMCH7.js → chunk-DRUAQ7IY.js} +6 -6
  87. package/dist/{chunk-5KWQMCH7.js.map → chunk-DRUAQ7IY.js.map} +1 -1
  88. package/dist/{chunk-GTAHU4N4.js → chunk-EB2LKPI6.js} +4 -4
  89. package/dist/{chunk-GTAHU4N4.js.map → chunk-EB2LKPI6.js.map} +1 -1
  90. package/dist/{chunk-3AIEJSQR.js → chunk-ESUF2ZYT.js} +3 -3
  91. package/dist/{chunk-3AIEJSQR.js.map → chunk-ESUF2ZYT.js.map} +1 -1
  92. package/dist/{chunk-ZUROGXJM.js → chunk-FECB7RI7.js} +14 -24
  93. package/dist/chunk-FECB7RI7.js.map +1 -0
  94. package/dist/{chunk-PBEDRYHP.js → chunk-FO2GU5L7.js} +230 -49
  95. package/dist/chunk-FO2GU5L7.js.map +1 -0
  96. package/dist/{chunk-SME3PK4L.js → chunk-FVOQPTK2.js} +8 -8
  97. package/dist/{chunk-SME3PK4L.js.map → chunk-FVOQPTK2.js.map} +1 -1
  98. package/dist/{chunk-MPO5CQUZ.js → chunk-GODUKPGD.js} +3 -3
  99. package/dist/{chunk-MPO5CQUZ.js.map → chunk-GODUKPGD.js.map} +1 -1
  100. package/dist/{chunk-FZTHL6SK.js → chunk-GQQIMKEP.js} +27 -33
  101. package/dist/chunk-GQQIMKEP.js.map +1 -0
  102. package/dist/{chunk-BRPEW3UL.js → chunk-GYRIO6RA.js} +3 -3
  103. package/dist/{chunk-BRPEW3UL.js.map → chunk-GYRIO6RA.js.map} +1 -1
  104. package/dist/{chunk-E675QKFG.js → chunk-HPQ2WDYC.js} +5 -5
  105. package/dist/{chunk-E675QKFG.js.map → chunk-HPQ2WDYC.js.map} +1 -1
  106. package/dist/{chunk-VEIWFS7Z.js → chunk-IIELRGIZ.js} +346 -89
  107. package/dist/chunk-IIELRGIZ.js.map +1 -0
  108. package/dist/{chunk-TUOHA6BM.js → chunk-IOXFT5D7.js} +3 -3
  109. package/dist/{chunk-TUOHA6BM.js.map → chunk-IOXFT5D7.js.map} +1 -1
  110. package/dist/{chunk-6PVRP3LW.js → chunk-IPCRQWNC.js} +17 -6
  111. package/dist/chunk-IPCRQWNC.js.map +1 -0
  112. package/dist/{chunk-PTJTOPE5.js → chunk-KOI7QFDH.js} +3 -3
  113. package/dist/{chunk-PTJTOPE5.js.map → chunk-KOI7QFDH.js.map} +1 -1
  114. package/dist/{chunk-EMSU6L7K.js → chunk-L74W5TVC.js} +7 -7
  115. package/dist/{chunk-EMSU6L7K.js.map → chunk-L74W5TVC.js.map} +1 -1
  116. package/dist/{chunk-WS3BOCAT.js → chunk-LCXQ4LVP.js} +16 -3
  117. package/dist/chunk-LCXQ4LVP.js.map +1 -0
  118. package/dist/{chunk-7QYBKUAS.js → chunk-LKBRBVVS.js} +3 -3
  119. package/dist/{chunk-7QYBKUAS.js.map → chunk-LKBRBVVS.js.map} +1 -1
  120. package/dist/{chunk-USSP43U3.js → chunk-LQWOU7S2.js} +3 -3
  121. package/dist/{chunk-USSP43U3.js.map → chunk-LQWOU7S2.js.map} +1 -1
  122. package/dist/chunk-LXD37LHF.js +688 -0
  123. package/dist/chunk-LXD37LHF.js.map +1 -0
  124. package/dist/{chunk-4KPQ6ILH.js → chunk-MEU2HHGV.js} +18 -9
  125. package/dist/chunk-MEU2HHGV.js.map +1 -0
  126. package/dist/{chunk-KVTV4LT2.js → chunk-MRTOKIEJ.js} +4 -4
  127. package/dist/{chunk-KVTV4LT2.js.map → chunk-MRTOKIEJ.js.map} +1 -1
  128. package/dist/{chunk-QC5BYUED.js → chunk-MS2IXLTC.js} +4 -4
  129. package/dist/{chunk-QC5BYUED.js.map → chunk-MS2IXLTC.js.map} +1 -1
  130. package/dist/{chunk-5J6N6LHL.js → chunk-PZS55HOX.js} +3 -3
  131. package/dist/{chunk-5J6N6LHL.js.map → chunk-PZS55HOX.js.map} +1 -1
  132. package/dist/{chunk-XDVR7QIT.js → chunk-QC4Q7PMQ.js} +6 -3
  133. package/dist/chunk-QC4Q7PMQ.js.map +1 -0
  134. package/dist/{chunk-IISEBVMA.js → chunk-RRKJHADP.js} +5 -5
  135. package/dist/{chunk-IISEBVMA.js.map → chunk-RRKJHADP.js.map} +1 -1
  136. package/dist/{chunk-MDCI4RSG.js → chunk-RZL4TOK3.js} +20 -6
  137. package/dist/chunk-RZL4TOK3.js.map +1 -0
  138. package/dist/{chunk-2UKNI2HJ.js → chunk-RZQCBFIU.js} +2 -2
  139. package/dist/{chunk-2UKNI2HJ.js.map → chunk-RZQCBFIU.js.map} +1 -1
  140. package/dist/{chunk-7TF5MNFK.js → chunk-S6NS3I3P.js} +2 -2
  141. package/dist/{chunk-7TF5MNFK.js.map → chunk-S6NS3I3P.js.map} +1 -1
  142. package/dist/{chunk-LMADWO4Q.js → chunk-SBAUZ7XH.js} +4 -4
  143. package/dist/{chunk-LMADWO4Q.js.map → chunk-SBAUZ7XH.js.map} +1 -1
  144. package/dist/{chunk-XB4XHGIE.js → chunk-SZ3XCZHC.js} +4 -4
  145. package/dist/{chunk-XB4XHGIE.js.map → chunk-SZ3XCZHC.js.map} +1 -1
  146. package/dist/{chunk-AQTAULXT.js → chunk-UHTCOYFJ.js} +111 -47
  147. package/dist/chunk-UHTCOYFJ.js.map +1 -0
  148. package/dist/{chunk-HQAPUPBE.js → chunk-V2VDTQ7A.js} +3 -3
  149. package/dist/{chunk-HQAPUPBE.js.map → chunk-V2VDTQ7A.js.map} +1 -1
  150. package/dist/{chunk-GNUA7XT2.js → chunk-VS6XC5JE.js} +3 -3
  151. package/dist/{chunk-GNUA7XT2.js.map → chunk-VS6XC5JE.js.map} +1 -1
  152. package/dist/chunk-WCHGUS7X.js +2443 -0
  153. package/dist/chunk-WCHGUS7X.js.map +1 -0
  154. package/dist/{chunk-5J6JWGY4.js → chunk-WDG5IVEA.js} +3 -3
  155. package/dist/{chunk-5J6JWGY4.js.map → chunk-WDG5IVEA.js.map} +1 -1
  156. package/dist/{chunk-QIV7H3GJ.js → chunk-WPTNYDDS.js} +5 -5
  157. package/dist/{chunk-QIV7H3GJ.js.map → chunk-WPTNYDDS.js.map} +1 -1
  158. package/dist/{chunk-BDAXHJC5.js → chunk-YPX7LQSW.js} +7 -7
  159. package/dist/{chunk-BDAXHJC5.js.map → chunk-YPX7LQSW.js.map} +1 -1
  160. package/dist/{chunk-UWD7YBDR.js → chunk-ZLDAPZIX.js} +4 -4
  161. package/dist/{chunk-UWD7YBDR.js.map → chunk-ZLDAPZIX.js.map} +1 -1
  162. package/dist/{chunk-YPTDPN2B.js → chunk-ZRKU7BRI.js} +3 -3
  163. package/dist/{chunk-YPTDPN2B.js.map → chunk-ZRKU7BRI.js.map} +1 -1
  164. package/dist/{claude-code-ILZ46SLO.js → claude-code-TDMSETH6.js} +5 -5
  165. package/dist/{claude-code-ILZ46SLO.js.map → claude-code-TDMSETH6.js.map} +1 -1
  166. package/dist/cli/index.js +327 -201
  167. package/dist/cli/index.js.map +1 -1
  168. package/dist/cli/src/commands/asset-cmd.d.ts.map +1 -1
  169. package/dist/cli/src/commands/catalog.d.ts.map +1 -1
  170. package/dist/cli/src/commands/config.d.ts.map +1 -1
  171. package/dist/cli/src/commands/connector.d.ts.map +1 -1
  172. package/dist/cli/src/commands/harness-preflight.d.ts +3 -1
  173. package/dist/cli/src/commands/harness-preflight.d.ts.map +1 -1
  174. package/dist/cli/src/commands/harness.d.ts.map +1 -1
  175. package/dist/cli/src/commands/library-cmd.d.ts.map +1 -1
  176. package/dist/cli/src/commands/library-index.d.ts +3 -3
  177. package/dist/cli/src/commands/library-index.d.ts.map +1 -1
  178. package/dist/cli/src/commands/migrate-files.d.ts +8 -0
  179. package/dist/cli/src/commands/migrate-files.d.ts.map +1 -1
  180. package/dist/cli/src/commands/migrate-harness.d.ts.map +1 -1
  181. package/dist/cli/src/commands/migrate-providers.d.ts.map +1 -1
  182. package/dist/cli/src/commands/migrate.d.ts.map +1 -1
  183. package/dist/cli/src/commands/outdated.d.ts.map +1 -1
  184. package/dist/cli/src/commands/project.d.ts.map +1 -1
  185. package/dist/cli/src/commands/run.d.ts.map +1 -1
  186. package/dist/cli/src/commands/serve-preflight.d.ts +7 -5
  187. package/dist/cli/src/commands/serve-preflight.d.ts.map +1 -1
  188. package/dist/cli/src/commands/serve.d.ts.map +1 -1
  189. package/dist/cli/src/commands/source.d.ts.map +1 -1
  190. package/dist/cli/src/commands/validate.d.ts.map +1 -1
  191. package/dist/cli/src/config-checks.d.ts +50 -12
  192. package/dist/cli/src/config-checks.d.ts.map +1 -1
  193. package/dist/cli/src/ensure-sources.d.ts.map +1 -1
  194. package/dist/cli/src/harness-error.d.ts +7 -0
  195. package/dist/cli/src/harness-error.d.ts.map +1 -1
  196. package/dist/cli/src/helpers.d.ts.map +1 -1
  197. package/dist/client/index.js +1 -1
  198. package/dist/client/src/client.d.ts +3 -0
  199. package/dist/client/src/client.d.ts.map +1 -1
  200. package/dist/connectors/config.js +5 -5
  201. package/dist/connectors/index.js +25 -24
  202. package/dist/connectors/src/index.d.ts +1 -1
  203. package/dist/connectors/src/index.d.ts.map +1 -1
  204. package/dist/connectors/src/managed-gitconfig.d.ts +12 -0
  205. package/dist/connectors/src/managed-gitconfig.d.ts.map +1 -1
  206. package/dist/connectors-IUJRBTCW.js +52 -0
  207. package/dist/{connectors-KTRUUKWG.js.map → connectors-IUJRBTCW.js.map} +1 -1
  208. package/dist/connectors-shared/index.js +2 -2
  209. package/dist/core/index.js +7 -7
  210. package/dist/core/logging.js +1 -1
  211. package/dist/core/manifest.js +2 -2
  212. package/dist/core/models.js +1 -1
  213. package/dist/core/publish-manifest.js +3 -3
  214. package/dist/core/ref.js +1 -1
  215. package/dist/core/runtime-assets.js +5 -5
  216. package/dist/core/src/index.d.ts +2 -2
  217. package/dist/core/src/index.d.ts.map +1 -1
  218. package/dist/core/src/lock.d.ts +7 -1
  219. package/dist/core/src/lock.d.ts.map +1 -1
  220. package/dist/core/src/models.d.ts.map +1 -1
  221. package/dist/core/src/repo-manager.d.ts +28 -0
  222. package/dist/core/src/repo-manager.d.ts.map +1 -1
  223. package/dist/core/src/run-state-ignore.d.ts +5 -3
  224. package/dist/core/src/run-state-ignore.d.ts.map +1 -1
  225. package/dist/core/src/workspace-config.d.ts.map +1 -1
  226. package/dist/core/workspace-config.js +4 -4
  227. package/dist/deploy/index.js +7 -7
  228. package/dist/discovery/index.js +5 -5
  229. package/dist/{ensure-sources-5QWKUIUD.js → ensure-sources-Q2TTZVLX.js} +35 -33
  230. package/dist/ensure-sources-Q2TTZVLX.js.map +1 -0
  231. package/dist/factory-assets/connectors/box.js +25 -24
  232. package/dist/factory-assets/connectors/deploy.js +25 -24
  233. package/dist/factory-assets/connectors/devserver.js +25 -24
  234. package/dist/factory-assets/connectors/flow/adapter.js +25 -24
  235. package/dist/factory-assets/connectors/flow/engine.js +8 -8
  236. package/dist/factory-assets/connectors/flow/run-flow.js +27 -26
  237. package/dist/factory-assets/connectors/flow.js +25 -24
  238. package/dist/factory-assets/connectors/git/exec.d.ts +7 -0
  239. package/dist/factory-assets/connectors/git/exec.d.ts.map +1 -1
  240. package/dist/factory-assets/connectors/git/repo.d.ts.map +1 -1
  241. package/dist/factory-assets/connectors/git.js +25 -24
  242. package/dist/factory-assets/connectors/gmail/adapter.d.ts.map +1 -1
  243. package/dist/factory-assets/connectors/gmail.js +25 -24
  244. package/dist/factory-assets/connectors/googledrive.js +25 -24
  245. package/dist/factory-assets/connectors/local.js +25 -24
  246. package/dist/factory-assets/connectors/mattermost.js +25 -24
  247. package/dist/factory-assets/connectors/memory.js +25 -24
  248. package/dist/factory-assets/connectors/minio/adapter.d.ts.map +1 -1
  249. package/dist/factory-assets/connectors/minio.js +25 -24
  250. package/dist/factory-assets/connectors/postgres/adapter.d.ts.map +1 -1
  251. package/dist/factory-assets/connectors/postgres.js +25 -24
  252. package/dist/factory-assets/connectors/s3/driver.d.ts.map +1 -1
  253. package/dist/factory-assets/connectors/s3.js +25 -24
  254. package/dist/factory-assets/connectors/sharepoint.js +25 -24
  255. package/dist/factory-assets/connectors/sqlite/adapter.d.ts.map +1 -1
  256. package/dist/factory-assets/connectors/sqlite.js +25 -24
  257. package/dist/factory-assets/connectors/static-server.js +25 -24
  258. package/dist/factory-assets/connectors/tunnel.js +25 -24
  259. package/dist/factory-assets/connectors/webdav.js +25 -24
  260. package/dist/factory-assets/connectors/xstate-store.js +25 -24
  261. package/dist/factory-assets/connectors/xstate.js +25 -24
  262. package/dist/{flows-UCP6ZUYS.js → flows-J64L5MGJ.js} +12 -12
  263. package/dist/{flows-UCP6ZUYS.js.map → flows-J64L5MGJ.js.map} +1 -1
  264. package/dist/{helpers-INS4B7OQ.js → helpers-S6AQGXRH.js} +32 -30
  265. package/dist/{helpers-INS4B7OQ.js.map → helpers-S6AQGXRH.js.map} +1 -1
  266. package/dist/library/index.js +11 -11
  267. package/dist/library/install.js +4 -4
  268. package/dist/library/src/index.d.ts +2 -2
  269. package/dist/library/src/index.d.ts.map +1 -1
  270. package/dist/library/src/library.d.ts +6 -2
  271. package/dist/library/src/library.d.ts.map +1 -1
  272. package/dist/library/src/local/db.d.ts.map +1 -1
  273. package/dist/library/src/local/library.d.ts +10 -3
  274. package/dist/library/src/local/library.d.ts.map +1 -1
  275. package/dist/library/src/local/local-catalog-source.d.ts +0 -9
  276. package/dist/library/src/local/local-catalog-source.d.ts.map +1 -1
  277. package/dist/library/src/local/schema.d.ts +27 -20
  278. package/dist/library/src/local/schema.d.ts.map +1 -1
  279. package/dist/library/src/manifest-writer.d.ts +13 -0
  280. package/dist/library/src/manifest-writer.d.ts.map +1 -1
  281. package/dist/library/src/remote/index.d.ts +1 -1
  282. package/dist/library/src/remote/index.d.ts.map +1 -1
  283. package/dist/library/src/remote/remote-catalog-source.d.ts +6 -0
  284. package/dist/library/src/remote/remote-catalog-source.d.ts.map +1 -1
  285. package/dist/library/src/sync/git-driver.d.ts.map +1 -1
  286. package/dist/{library-publish-AZTYRASL.js → library-publish-7U4TJNQX.js} +54 -55
  287. package/dist/library-publish-7U4TJNQX.js.map +1 -0
  288. package/dist/model-endpoint/index.js +10 -10
  289. package/dist/open-library-K6O6OVW5.js +61 -0
  290. package/dist/{open-library-3HMXYGUF.js.map → open-library-K6O6OVW5.js.map} +1 -1
  291. package/dist/open-registry-4HNCWOCN.js +32 -0
  292. package/dist/{open-registry-BHBHQMBA.js.map → open-registry-4HNCWOCN.js.map} +1 -1
  293. package/dist/paths-PXBWY532.js +22 -0
  294. package/dist/{paths-77PXOXZY.js.map → paths-PXBWY532.js.map} +1 -1
  295. package/dist/{plugin-store-XQP2CRYH.js → plugin-store-ZC3EGZ3D.js} +10 -10
  296. package/dist/{plugin-store-XQP2CRYH.js.map → plugin-store-ZC3EGZ3D.js.map} +1 -1
  297. package/dist/project-ZWIZZIUT.js +88 -0
  298. package/dist/{project-HVNPK2ZF.js.map → project-ZWIZZIUT.js.map} +1 -1
  299. package/dist/resolver/index.js +8 -8
  300. package/dist/runner/index.js +40 -40
  301. package/dist/runner/src/serve.d.ts.map +1 -1
  302. package/dist/runner/src/turn-ids.d.ts +70 -0
  303. package/dist/runner/src/turn-ids.d.ts.map +1 -0
  304. package/dist/runner/src/turn-scheduler.d.ts +7 -0
  305. package/dist/runner/src/turn-scheduler.d.ts.map +1 -1
  306. package/dist/sdk/asset-manager.js +15 -15
  307. package/dist/sdk/bridge.js +21 -20
  308. package/dist/sdk/client.js +1 -1
  309. package/dist/sdk/core.js +7 -7
  310. package/dist/sdk/flow.js +8 -8
  311. package/dist/sdk/index.js +41 -41
  312. package/dist/sdk/resolver.js +8 -8
  313. package/dist/sdk/runner.js +40 -40
  314. package/dist/sdk/session.js +2 -2
  315. package/dist/sdk/transport/ws/server.js +8 -8
  316. package/dist/sdk/transport/ws.js +8 -8
  317. package/dist/sdk/transport.js +8 -8
  318. package/dist/sdk/types.js +1 -1
  319. package/dist/serve-preflight-E3IEZTTF.js +59 -0
  320. package/dist/{serve-preflight-NHZOKHIC.js.map → serve-preflight-E3IEZTTF.js.map} +1 -1
  321. package/dist/session/index.js +2 -2
  322. package/dist/session/src/dispatcher.d.ts +4 -1
  323. package/dist/session/src/dispatcher.d.ts.map +1 -1
  324. package/dist/{setup-EX7Z7XRN.js → setup-V4EXOMVQ.js} +33 -31
  325. package/dist/setup-V4EXOMVQ.js.map +1 -0
  326. package/dist/{skills-DE2BDQ6G.js → skills-5D4KDVPJ.js} +13 -13
  327. package/dist/{skills-DE2BDQ6G.js.map → skills-5D4KDVPJ.js.map} +1 -1
  328. package/dist/source-O7XXDX55.js +89 -0
  329. package/dist/{source-URRPRGMZ.js.map → source-O7XXDX55.js.map} +1 -1
  330. package/dist/{source-manifest-publish-ZWRYRJ2U.js → source-manifest-publish-GUU4LX2S.js} +54 -53
  331. package/dist/source-manifest-publish-GUU4LX2S.js.map +1 -0
  332. package/dist/transport/index.js +8 -8
  333. package/dist/transport/src/ws/server.d.ts.map +1 -1
  334. package/dist/transport/ws/server.js +8 -8
  335. package/dist/transport/ws.js +8 -8
  336. package/dist/tui/index.js +40 -40
  337. package/dist/types/index.js +1 -1
  338. package/dist/types/manifests.js +1 -1
  339. package/dist/types/src/capabilities.d.ts +2 -1
  340. package/dist/types/src/capabilities.d.ts.map +1 -1
  341. package/dist/types/src/events.d.ts +2 -1
  342. package/dist/types/src/events.d.ts.map +1 -1
  343. package/dist/types/src/index.d.ts +2 -0
  344. package/dist/types/src/index.d.ts.map +1 -1
  345. package/dist/types/src/manifests/agent.d.ts +2 -0
  346. package/dist/types/src/manifests/agent.d.ts.map +1 -1
  347. package/dist/types/src/protocol.d.ts +2 -0
  348. package/dist/types/src/protocol.d.ts.map +1 -1
  349. package/dist/types/src/turn-ids.d.ts +62 -0
  350. package/dist/types/src/turn-ids.d.ts.map +1 -0
  351. package/dist/types/src/version.d.ts +12 -1
  352. package/dist/types/src/version.d.ts.map +1 -1
  353. package/dist/workspace-plugin/adapters/mcp.js +32 -31
  354. package/dist/workspace-plugin/adapters/omp.js +14 -14
  355. package/dist/workspace-plugin/index.js +2 -2
  356. package/package.json +1 -1
  357. package/dist/chunk-4KPQ6ILH.js.map +0 -1
  358. package/dist/chunk-6PVRP3LW.js.map +0 -1
  359. package/dist/chunk-7NN3P6VF.js.map +0 -1
  360. package/dist/chunk-7UCPGQCW.js.map +0 -1
  361. package/dist/chunk-AQTAULXT.js.map +0 -1
  362. package/dist/chunk-BLBXOG5Q.js +0 -299
  363. package/dist/chunk-BLBXOG5Q.js.map +0 -1
  364. package/dist/chunk-C324IAXI.js +0 -160
  365. package/dist/chunk-C324IAXI.js.map +0 -1
  366. package/dist/chunk-DJSGQW2Q.js +0 -334
  367. package/dist/chunk-DJSGQW2Q.js.map +0 -1
  368. package/dist/chunk-FZO64PLQ.js.map +0 -1
  369. package/dist/chunk-FZTHL6SK.js.map +0 -1
  370. package/dist/chunk-GYPPVANR.js +0 -357
  371. package/dist/chunk-GYPPVANR.js.map +0 -1
  372. package/dist/chunk-GZL6RN4Z.js.map +0 -1
  373. package/dist/chunk-KNY356I3.js.map +0 -1
  374. package/dist/chunk-LOO5CB5M.js +0 -12
  375. package/dist/chunk-LOO5CB5M.js.map +0 -1
  376. package/dist/chunk-MDCI4RSG.js.map +0 -1
  377. package/dist/chunk-PBEDRYHP.js.map +0 -1
  378. package/dist/chunk-PLVM6OIV.js.map +0 -1
  379. package/dist/chunk-Q5SSRVD5.js.map +0 -1
  380. package/dist/chunk-U3FI4DVT.js.map +0 -1
  381. package/dist/chunk-V5KG6CCV.js.map +0 -1
  382. package/dist/chunk-VEIWFS7Z.js.map +0 -1
  383. package/dist/chunk-WEPTGUR4.js.map +0 -1
  384. package/dist/chunk-WS3BOCAT.js.map +0 -1
  385. package/dist/chunk-XDVR7QIT.js.map +0 -1
  386. package/dist/chunk-ZUROGXJM.js.map +0 -1
  387. package/dist/connectors-KTRUUKWG.js +0 -51
  388. package/dist/ensure-sources-5QWKUIUD.js.map +0 -1
  389. package/dist/library-publish-AZTYRASL.js.map +0 -1
  390. package/dist/open-library-3HMXYGUF.js +0 -59
  391. package/dist/open-registry-BHBHQMBA.js +0 -32
  392. package/dist/paths-77PXOXZY.js +0 -22
  393. package/dist/project-HVNPK2ZF.js +0 -89
  394. package/dist/serve-preflight-NHZOKHIC.js +0 -59
  395. package/dist/setup-EX7Z7XRN.js.map +0 -1
  396. package/dist/source-URRPRGMZ.js +0 -88
  397. package/dist/source-manifest-publish-ZWRYRJ2U.js.map +0 -1
@@ -1,9 +1,9 @@
1
- import { SubprocessCliHarness, extractText, extractCost, extractTokens } from './chunk-MPO5CQUZ.js';
2
- import { getStaticModels, fetchProviderModels } from './chunk-3AIEJSQR.js';
1
+ import { SubprocessCliHarness, extractText, extractCost, extractTokens } from './chunk-GODUKPGD.js';
2
+ import { getStaticModels, fetchProviderModels } from './chunk-ESUF2ZYT.js';
3
3
  import { HARNESS_BINARIES } from './chunk-WWSRIT3J.js';
4
- import { resolveEnvHarnessSession, bindSingleProviderEntry, resolveRegistryBinding } from './chunk-RP3ML3QD.js';
5
- import { getBridgeLogger, registryHarnessConfig } from './chunk-5J6N6LHL.js';
6
- import { BUILTIN_HARNESS_CATALOG, entryCredentialValue } from './chunk-7TF5MNFK.js';
4
+ import { resolveEnvHarnessSession, bindSingleProviderEntry, resolveRegistryBinding } from './chunk-CLMIZ4N6.js';
5
+ import { getBridgeLogger, registryHarnessConfig } from './chunk-PZS55HOX.js';
6
+ import { BUILTIN_HARNESS_CATALOG, entryCredentialValue } from './chunk-S6NS3I3P.js';
7
7
  import { getProviderPreset } from './chunk-6UP2EDFN.js';
8
8
  import * as z from 'zod';
9
9
 
@@ -186,5 +186,5 @@ var geminiHarnessTarget = {
186
186
  };
187
187
 
188
188
  export { GeminiFamilyHarness, GeminiHarness, geminiHarnessTarget };
189
- //# sourceMappingURL=chunk-BDAXHJC5.js.map
190
- //# sourceMappingURL=chunk-BDAXHJC5.js.map
189
+ //# sourceMappingURL=chunk-YPX7LQSW.js.map
190
+ //# sourceMappingURL=chunk-YPX7LQSW.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../bridge/src/harnesses/gemini.ts"],"names":[],"mappings":"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","file":"chunk-BDAXHJC5.js","sourcesContent":["import type { HarnessTarget } from \"@skaile/workspaces/plugin-registry\";\nimport type { Logger } from \"@skaile/workspaces/types\";\nimport * as z from \"zod\";\nimport { HARNESS_BINARIES } from \"../harness-binaries.js\";\nimport { getBridgeLogger } from \"../logger.js\";\nimport { fetchProviderModels, getStaticModels, type ModelEntry } from \"../models.js\";\nimport { getProviderPreset } from \"../provider-catalog.js\";\nimport { entryCredentialValue } from \"../provider-materialize/credential-env.js\";\nimport {\n bindSingleProviderEntry,\n type EnvHarnessSession,\n type RegistryModelBinding,\n resolveEnvHarnessSession,\n resolveRegistryBinding,\n} from \"../provider-materialize/env-harnesses.js\";\nimport { registryHarnessConfig } from \"../provider-registry-derive.js\";\nimport { BUILTIN_HARNESS_CATALOG } from \"../registry.js\";\nimport type { AgentConfig, HarnessInfo, ReconfigureApplied } from \"../types.js\";\nimport {\n extractCost,\n extractText,\n extractTokens,\n SubprocessCliHarness,\n} from \"./_subprocess-cli.js\";\n\n/**\n * The Gemini API host the CLI talks to unless told otherwise — the catalog's\n * `google` preset, so the two can never drift apart.\n */\nconst GOOGLE_DEFAULT_BASE_URL = getProviderPreset(\"google\")?.base_url;\n\n/**\n * Shared base for the Gemini-CLI event family. Gemini CLI and Qwen Code (a fork\n * of Gemini CLI) emit the same `stream-json` event shape, so both dispatch the\n * same {@link handleJson}: `init`/`system` → session capture, `message`/\n * `assistant` → streamed assistant text, `tool_use` / `tool_result` → tool\n * events, `result` → tokens + cost.\n *\n * @docLink packages/bridge/harnesses#gemini-harness\n */\nexport abstract class GeminiFamilyHarness extends SubprocessCliHarness {\n protected handleJson(json: any): void {\n switch (json?.type) {\n case \"init\":\n case \"system\":\n this.captureSession(json.sessionId ?? json.session_id ?? json.id);\n break;\n\n case \"message\":\n case \"assistant\": {\n const role = json.role ?? json.message?.role ?? \"assistant\";\n if (role !== \"assistant\") break;\n const text = extractText(json);\n if (json.done === true || json.final === true || json.finished === true) {\n this.pushAssistantEnd(text);\n } else {\n this.pushAssistantDelta(text);\n }\n break;\n }\n\n case \"tool_use\":\n case \"tool_call\":\n this.pushToolCall(json.name ?? json.tool ?? \"tool\", json.input ?? json.args ?? {});\n break;\n\n case \"tool_result\":\n this.pushToolResult(\n json.name ?? json.tool ?? \"tool\",\n json.result ?? json.output ?? json.content,\n Boolean(json.is_error ?? json.isError ?? json.error),\n );\n break;\n\n case \"error\":\n this.pushError(this.classifyMessage(String(json.message ?? json.error ?? \"error\")));\n break;\n\n case \"result\":\n this.captureSession(json.sessionId ?? json.session_id);\n this.pushResult({\n tokens: extractTokens(json),\n costUsd: extractCost(json),\n summary: extractText(json) || \"Task completed\",\n });\n break;\n }\n }\n\n // ── Registry binding ──────────────────────────────────────────────────────\n\n private providers?: EnvHarnessSession;\n private boundEntry?: RegistryModelBinding;\n private bindingResolved = false;\n\n /** This session's AI providers, resolved once from the config. */\n protected providerSession(): EnvHarnessSession {\n this.providers ??= resolveEnvHarnessSession(this.config);\n return this.providers;\n }\n\n /**\n * The AI provider entry this session's model selector names, memoized until\n * the model changes.\n *\n * Gemini CLI and Qwen Code are `single`-plurality harnesses (§2.3): they\n * address one endpoint, so the bound entry supplies both the credential and\n * the base URL. Resolving through {@link bindSingleProviderEntry} is what\n * puts the surface check — which throws — on the start path.\n */\n protected registryBinding(): RegistryModelBinding | undefined {\n if (this.bindingResolved) return this.boundEntry;\n const binding = bindSingleProviderEntry(\n this.harnessInfo.id,\n this.productName,\n this.providerSession(),\n );\n for (const warning of binding?.warnings ?? []) this.log.warn(warning);\n this.boundEntry = binding;\n this.bindingResolved = true;\n return binding;\n }\n\n /**\n * Fail before the first spawn when the bound entry speaks a surface this\n * harness cannot — the error names the surface.\n */\n override async start(): Promise<void> {\n this.registryBinding();\n await super.start();\n }\n\n protected override onReconfigured(applied: ReconfigureApplied): void {\n if (applied.model !== undefined) {\n this.providers = undefined;\n this.bindingResolved = false;\n }\n }\n\n /** The provider-side model id the harness is actually run with. */\n override getModel(): string | undefined {\n return resolveRegistryBinding(this.providerSession())?.providerModelId ?? this.config.model;\n }\n}\n\n/**\n * Agent harness for the Google **Gemini CLI** (`gemini`).\n *\n * Spawns `gemini -p \"<prompt>\" --output-format stream-json` per turn and maps\n * the stream-json events to the unified {@link AgentEvent} stream. Google\n * models only (`surface: google-generative-ai`): the AI provider entry the\n * session's model selector names supplies `GEMINI_API_KEY`, the `-m` model id\n * and — for a non-default endpoint — `GOOGLE_GEMINI_BASE_URL`.\n *\n * @remarks\n * - **Requires Gemini CLI ≥ v0.6.1** — earlier versions reject\n * `--output-format`. A too-old CLI surfaces as a `process`-category exit error.\n * - **Session resume is not available in headless (`-p`) mode** — the CLI errors\n * if asked to resume non-interactively, so this harness runs single-turn per\n * process and logs a warning when a resume id is present.\n * - Exit codes: `42` → input/validation error, `53` → turn-limit (treated as a\n * completed turn).\n *\n * @see https://github.com/google-gemini/gemini-cli\n * @docLink packages/bridge/harnesses#gemini-harness\n */\nexport class GeminiHarness extends GeminiFamilyHarness {\n readonly harnessInfo: HarnessInfo = {\n id: \"gemini\",\n name: \"Gemini CLI\",\n modelAgnostic: false,\n supportsInBandAbort: false,\n };\n\n protected readonly log: Logger = getBridgeLogger(\"gemini\");\n protected readonly defaultBin = \"gemini\";\n protected readonly productName = \"Gemini CLI\";\n protected readonly envPrefix = \"GEMINI\";\n\n protected buildArgs(message: string, resumeId: string | undefined): string[] {\n if (resumeId) {\n this.log.warn(\"Gemini CLI cannot resume in headless mode; starting a fresh turn\", {\n resumeId,\n });\n }\n const args = [\"-p\", message, \"--output-format\", \"stream-json\"];\n const model = this.registryBinding()?.providerModelId ?? this.config.model;\n if (model) args.push(\"-m\", model);\n return args;\n }\n\n protected buildEnv(): Record<string, string> {\n const env = this.baseEnv([\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\", \"GOOGLE_GEMINI_BASE_URL\"]);\n const binding = this.registryBinding();\n if (!binding) return env;\n\n // The entry is the authority: inherited Google carriers are dropped so an\n // ambient key cannot authenticate a session pointed somewhere else.\n delete env.GEMINI_API_KEY;\n delete env.GOOGLE_API_KEY;\n delete env.GOOGLE_GEMINI_BASE_URL;\n const key = entryCredentialValue(binding.providerId, binding.entry, {\n env: this.providerSession().lookupEnv,\n });\n if (key) env.GEMINI_API_KEY = key;\n // Only a non-default endpoint is worth naming: Gemini CLI reads\n // GOOGLE_GEMINI_BASE_URL as an override of its own default host.\n if (binding.baseUrl && binding.baseUrl !== GOOGLE_DEFAULT_BASE_URL) {\n env.GOOGLE_GEMINI_BASE_URL = binding.baseUrl;\n }\n return env;\n }\n\n protected installHint(): string {\n return HARNESS_BINARIES.gemini.hint;\n }\n\n protected override classifyExit(code: number | null, signal: NodeJS.Signals | null) {\n if (code === 42) {\n return {\n message: \"Gemini CLI reported an input error (exit 42)\",\n category: \"validation\" as const,\n retryable: false,\n hint: \"The prompt or flags were rejected by Gemini CLI. Check the model name and arguments.\",\n };\n }\n if (code === 53) return null; // turn-limit — the result was already emitted.\n return super.classifyExit(code, signal);\n }\n\n /**\n * Discovery runs against the bound entry: its credential and, for a\n * non-default endpoint, its base URL. Without an entry the ambient\n * `GEMINI_API_KEY` is the last resort, and an unreachable API falls back to\n * the static Google catalog.\n */\n override async listModels(): Promise<ModelEntry[]> {\n const session = this.providerSession();\n const binding = resolveRegistryBinding(session);\n const key = binding\n ? entryCredentialValue(binding.providerId, binding.entry, { env: session.lookupEnv })\n : session.lookupEnv.GEMINI_API_KEY;\n if (!key) return getStaticModels(\"google\");\n const result = await fetchProviderModels(\n \"google\",\n key,\n binding?.baseUrl && binding.baseUrl !== GOOGLE_DEFAULT_BASE_URL\n ? { baseUrl: binding.baseUrl }\n : {},\n );\n return result.ok && result.models.length > 0 ? result.models : getStaticModels(\"google\");\n }\n}\n\n/**\n * `HarnessTarget` wrapper for the gemini harness. Registered into the plugin\n * registry by `registerBuiltinHarnesses()`.\n */\nexport const geminiHarnessTarget: HarnessTarget<AgentConfig> = {\n id: \"gemini\",\n displayName: BUILTIN_HARNESS_CATALOG.gemini?.name ?? \"Gemini CLI\",\n apiVersion: 1,\n configSchema: z.custom<AgentConfig>(() => true),\n create: async (config, _ctx) => new GeminiHarness(config),\n listModels: async (registry, options) =>\n new GeminiHarness({\n cwd: process.cwd(),\n sessionId: \"model-list\",\n ...registryHarnessConfig(registry, options),\n }).listModels(),\n};\n"]}
1
+ {"version":3,"sources":["../bridge/src/harnesses/gemini.ts"],"names":[],"mappings":"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","file":"chunk-YPX7LQSW.js","sourcesContent":["import type { HarnessTarget } from \"@skaile/workspaces/plugin-registry\";\nimport type { Logger } from \"@skaile/workspaces/types\";\nimport * as z from \"zod\";\nimport { HARNESS_BINARIES } from \"../harness-binaries.js\";\nimport { getBridgeLogger } from \"../logger.js\";\nimport { fetchProviderModels, getStaticModels, type ModelEntry } from \"../models.js\";\nimport { getProviderPreset } from \"../provider-catalog.js\";\nimport { entryCredentialValue } from \"../provider-materialize/credential-env.js\";\nimport {\n bindSingleProviderEntry,\n type EnvHarnessSession,\n type RegistryModelBinding,\n resolveEnvHarnessSession,\n resolveRegistryBinding,\n} from \"../provider-materialize/env-harnesses.js\";\nimport { registryHarnessConfig } from \"../provider-registry-derive.js\";\nimport { BUILTIN_HARNESS_CATALOG } from \"../registry.js\";\nimport type { AgentConfig, HarnessInfo, ReconfigureApplied } from \"../types.js\";\nimport {\n extractCost,\n extractText,\n extractTokens,\n SubprocessCliHarness,\n} from \"./_subprocess-cli.js\";\n\n/**\n * The Gemini API host the CLI talks to unless told otherwise — the catalog's\n * `google` preset, so the two can never drift apart.\n */\nconst GOOGLE_DEFAULT_BASE_URL = getProviderPreset(\"google\")?.base_url;\n\n/**\n * Shared base for the Gemini-CLI event family. Gemini CLI and Qwen Code (a fork\n * of Gemini CLI) emit the same `stream-json` event shape, so both dispatch the\n * same {@link handleJson}: `init`/`system` → session capture, `message`/\n * `assistant` → streamed assistant text, `tool_use` / `tool_result` → tool\n * events, `result` → tokens + cost.\n *\n * @docLink packages/bridge/harnesses#gemini-harness\n */\nexport abstract class GeminiFamilyHarness extends SubprocessCliHarness {\n protected handleJson(json: any): void {\n switch (json?.type) {\n case \"init\":\n case \"system\":\n this.captureSession(json.sessionId ?? json.session_id ?? json.id);\n break;\n\n case \"message\":\n case \"assistant\": {\n const role = json.role ?? json.message?.role ?? \"assistant\";\n if (role !== \"assistant\") break;\n const text = extractText(json);\n if (json.done === true || json.final === true || json.finished === true) {\n this.pushAssistantEnd(text);\n } else {\n this.pushAssistantDelta(text);\n }\n break;\n }\n\n case \"tool_use\":\n case \"tool_call\":\n this.pushToolCall(json.name ?? json.tool ?? \"tool\", json.input ?? json.args ?? {});\n break;\n\n case \"tool_result\":\n this.pushToolResult(\n json.name ?? json.tool ?? \"tool\",\n json.result ?? json.output ?? json.content,\n Boolean(json.is_error ?? json.isError ?? json.error),\n );\n break;\n\n case \"error\":\n this.pushError(this.classifyMessage(String(json.message ?? json.error ?? \"error\")));\n break;\n\n case \"result\":\n this.captureSession(json.sessionId ?? json.session_id);\n this.pushResult({\n tokens: extractTokens(json),\n costUsd: extractCost(json),\n summary: extractText(json) || \"Task completed\",\n });\n break;\n }\n }\n\n // ── Registry binding ──────────────────────────────────────────────────────\n\n private providers?: EnvHarnessSession;\n private boundEntry?: RegistryModelBinding;\n private bindingResolved = false;\n\n /** This session's AI providers, resolved once from the config. */\n protected providerSession(): EnvHarnessSession {\n this.providers ??= resolveEnvHarnessSession(this.config);\n return this.providers;\n }\n\n /**\n * The AI provider entry this session's model selector names, memoized until\n * the model changes.\n *\n * Gemini CLI and Qwen Code are `single`-plurality harnesses (§2.3): they\n * address one endpoint, so the bound entry supplies both the credential and\n * the base URL. Resolving through {@link bindSingleProviderEntry} is what\n * puts the surface check — which throws — on the start path.\n */\n protected registryBinding(): RegistryModelBinding | undefined {\n if (this.bindingResolved) return this.boundEntry;\n const binding = bindSingleProviderEntry(\n this.harnessInfo.id,\n this.productName,\n this.providerSession(),\n );\n for (const warning of binding?.warnings ?? []) this.log.warn(warning);\n this.boundEntry = binding;\n this.bindingResolved = true;\n return binding;\n }\n\n /**\n * Fail before the first spawn when the bound entry speaks a surface this\n * harness cannot — the error names the surface.\n */\n override async start(): Promise<void> {\n this.registryBinding();\n await super.start();\n }\n\n protected override onReconfigured(applied: ReconfigureApplied): void {\n if (applied.model !== undefined) {\n this.providers = undefined;\n this.bindingResolved = false;\n }\n }\n\n /** The provider-side model id the harness is actually run with. */\n override getModel(): string | undefined {\n return resolveRegistryBinding(this.providerSession())?.providerModelId ?? this.config.model;\n }\n}\n\n/**\n * Agent harness for the Google **Gemini CLI** (`gemini`).\n *\n * Spawns `gemini -p \"<prompt>\" --output-format stream-json` per turn and maps\n * the stream-json events to the unified {@link AgentEvent} stream. Google\n * models only (`surface: google-generative-ai`): the AI provider entry the\n * session's model selector names supplies `GEMINI_API_KEY`, the `-m` model id\n * and — for a non-default endpoint — `GOOGLE_GEMINI_BASE_URL`.\n *\n * @remarks\n * - **Requires Gemini CLI ≥ v0.6.1** — earlier versions reject\n * `--output-format`. A too-old CLI surfaces as a `process`-category exit error.\n * - **Session resume is not available in headless (`-p`) mode** — the CLI errors\n * if asked to resume non-interactively, so this harness runs single-turn per\n * process and logs a warning when a resume id is present.\n * - Exit codes: `42` → input/validation error, `53` → turn-limit (treated as a\n * completed turn).\n *\n * @see https://github.com/google-gemini/gemini-cli\n * @docLink packages/bridge/harnesses#gemini-harness\n */\nexport class GeminiHarness extends GeminiFamilyHarness {\n readonly harnessInfo: HarnessInfo = {\n id: \"gemini\",\n name: \"Gemini CLI\",\n modelAgnostic: false,\n supportsInBandAbort: false,\n };\n\n protected readonly log: Logger = getBridgeLogger(\"gemini\");\n protected readonly defaultBin = \"gemini\";\n protected readonly productName = \"Gemini CLI\";\n protected readonly envPrefix = \"GEMINI\";\n\n protected buildArgs(message: string, resumeId: string | undefined): string[] {\n if (resumeId) {\n this.log.warn(\"Gemini CLI cannot resume in headless mode; starting a fresh turn\", {\n resumeId,\n });\n }\n const args = [\"-p\", message, \"--output-format\", \"stream-json\"];\n const model = this.registryBinding()?.providerModelId ?? this.config.model;\n if (model) args.push(\"-m\", model);\n return args;\n }\n\n protected buildEnv(): Record<string, string> {\n const env = this.baseEnv([\"GEMINI_API_KEY\", \"GOOGLE_API_KEY\", \"GOOGLE_GEMINI_BASE_URL\"]);\n const binding = this.registryBinding();\n if (!binding) return env;\n\n // The entry is the authority: inherited Google carriers are dropped so an\n // ambient key cannot authenticate a session pointed somewhere else.\n delete env.GEMINI_API_KEY;\n delete env.GOOGLE_API_KEY;\n delete env.GOOGLE_GEMINI_BASE_URL;\n const key = entryCredentialValue(binding.providerId, binding.entry, {\n env: this.providerSession().lookupEnv,\n });\n if (key) env.GEMINI_API_KEY = key;\n // Only a non-default endpoint is worth naming: Gemini CLI reads\n // GOOGLE_GEMINI_BASE_URL as an override of its own default host.\n if (binding.baseUrl && binding.baseUrl !== GOOGLE_DEFAULT_BASE_URL) {\n env.GOOGLE_GEMINI_BASE_URL = binding.baseUrl;\n }\n return env;\n }\n\n protected installHint(): string {\n return HARNESS_BINARIES.gemini.hint;\n }\n\n protected override classifyExit(code: number | null, signal: NodeJS.Signals | null) {\n if (code === 42) {\n return {\n message: \"Gemini CLI reported an input error (exit 42)\",\n category: \"validation\" as const,\n retryable: false,\n hint: \"The prompt or flags were rejected by Gemini CLI. Check the model name and arguments.\",\n };\n }\n if (code === 53) return null; // turn-limit — the result was already emitted.\n return super.classifyExit(code, signal);\n }\n\n /**\n * Discovery runs against the bound entry: its credential and, for a\n * non-default endpoint, its base URL. Without an entry the ambient\n * `GEMINI_API_KEY` is the last resort, and an unreachable API falls back to\n * the static Google catalog.\n */\n override async listModels(): Promise<ModelEntry[]> {\n const session = this.providerSession();\n const binding = resolveRegistryBinding(session);\n const key = binding\n ? entryCredentialValue(binding.providerId, binding.entry, { env: session.lookupEnv })\n : session.lookupEnv.GEMINI_API_KEY;\n if (!key) return getStaticModels(\"google\");\n const result = await fetchProviderModels(\n \"google\",\n key,\n binding?.baseUrl && binding.baseUrl !== GOOGLE_DEFAULT_BASE_URL\n ? { baseUrl: binding.baseUrl }\n : {},\n );\n return result.ok && result.models.length > 0 ? result.models : getStaticModels(\"google\");\n }\n}\n\n/**\n * `HarnessTarget` wrapper for the gemini harness. Registered into the plugin\n * registry by `registerBuiltinHarnesses()`.\n */\nexport const geminiHarnessTarget: HarnessTarget<AgentConfig> = {\n id: \"gemini\",\n displayName: BUILTIN_HARNESS_CATALOG.gemini?.name ?? \"Gemini CLI\",\n apiVersion: 1,\n configSchema: z.custom<AgentConfig>(() => true),\n create: async (config, _ctx) => new GeminiHarness(config),\n listModels: async (registry, options) =>\n new GeminiHarness({\n cwd: process.cwd(),\n sessionId: \"model-list\",\n ...registryHarnessConfig(registry, options),\n }).listModels(),\n};\n"]}
@@ -1,5 +1,5 @@
1
- import { defaultLibraryDir } from './chunk-4KPQ6ILH.js';
2
- import { factoryAssetRoots } from './chunk-4ROXSQEG.js';
1
+ import { defaultLibraryDir } from './chunk-MEU2HHGV.js';
2
+ import { factoryAssetRoots } from './chunk-CJO3XKO7.js';
3
3
  import fs from 'fs';
4
4
  import path from 'path';
5
5
  import { fileURLToPath } from 'url';
@@ -19,5 +19,5 @@ var MONOREPO_ROOT = findMonorepoRoot(__ownDir);
19
19
  var AI_RESOURCES = factoryAssetRoots()[0] ?? defaultLibraryDir();
20
20
 
21
21
  export { AI_RESOURCES, MONOREPO_ROOT };
22
- //# sourceMappingURL=chunk-UWD7YBDR.js.map
23
- //# sourceMappingURL=chunk-UWD7YBDR.js.map
22
+ //# sourceMappingURL=chunk-ZLDAPZIX.js.map
23
+ //# sourceMappingURL=chunk-ZLDAPZIX.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../cli/src/paths.ts"],"names":[],"mappings":";;;;;;AAeA,IAAM,WAAW,IAAA,CAAK,OAAA,CAAQ,aAAA,CAAc,MAAA,CAAA,IAAA,CAAY,GAAG,CAAC,CAAA;AAW5D,SAAS,iBAAiB,IAAA,EAA6B;AACrD,EAAA,IAAI,GAAA,GAAM,IAAA;AACV,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,CAAA,EAAG,CAAA,EAAA,EAAK;AAC1B,IAAA,IAAI,EAAA,CAAG,WAAW,IAAA,CAAK,IAAA,CAAK,KAAK,YAAY,CAAC,GAAG,OAAO,GAAA;AACxD,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAC/B,IAAA,IAAI,WAAW,GAAA,EAAK;AACpB,IAAA,GAAA,GAAM,MAAA;AAAA,EACR;AACA,EAAA,OAAO,IAAA;AACT;AAYO,IAAM,aAAA,GAA+B,iBAAiB,QAAQ;AAc9D,IAAM,YAAA,GAAuB,iBAAA,EAAkB,CAAE,CAAC,KAAK,iBAAA","file":"chunk-UWD7YBDR.js","sourcesContent":["import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { defaultLibraryDir, factoryAssetRoots } from \"@skaile/workspaces/core\";\n\n/**\n * The content-root policy lives in `@skaile/workspaces/core` so the flow\n * connector's resolution surfaces can reach it too — `factory-assets → cli`\n * would be a module cycle. Re-exported here because this module is the CLI's\n * documented path surface and every CLI caller imports it from here.\n *\n * @docLink cli/dev-guide#paths\n */\nexport { aiResourceRoots } from \"@skaile/workspaces/core\";\n\nconst __ownDir = path.dirname(fileURLToPath(import.meta.url));\n\n/**\n * Walk up from `from` looking for the monorepo marker (`biome.json`, the\n * repo-root shared tooling config). Returns the matching directory or `null`\n * when none is found within eight levels — the latter is the typical case when\n * `@skaile/workspaces` has been installed via `npm i` without a skaile-dev\n * workspace context. Used only to gate dev-only commands (e.g.\n * `serve --compile-test`); first-party content is located via\n * {@link aiResourceRoots}, not this.\n */\nfunction findMonorepoRoot(from: string): string | null {\n let dir = from;\n for (let i = 0; i < 8; i++) {\n if (fs.existsSync(path.join(dir, \"biome.json\"))) return dir;\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n return null;\n}\n\n/**\n * Absolute path to the monorepo root, or `null` when the CLI is running\n * outside the skaile-dev workspace (typical for `npm i -g` installs).\n *\n * Consumers that only make sense inside the workspace (e.g.\n * `skaile serve --compile-test`) MUST check for `null` and report a\n * \"monorepo-only feature\" error before proceeding.\n *\n * @docLink cli/dev-guide#paths\n */\nexport const MONOREPO_ROOT: string | null = findMonorepoRoot(__ownDir);\n\n/**\n * Default content root used by path display and the `validate` command.\n *\n * The primary first-party `factory-assets/` root resolved through the shared\n * `factoryAssetRoots()` helper — the `SKAILE_FACTORY_ASSETS_DIR` override when\n * set, else the in-repo source during dev / bundled `dist/factory-assets/` after\n * `npm i`. Falls back to `$SKAILE_HOME/libraries/` (`~/.skaile/libraries/`) — the user-library directory\n * managed by `skaile library add` — when the package cannot be located.\n * Consumers `fs.existsSync` first and degrade to \"no skills / flows discovered\".\n *\n * @docLink cli/dev-guide#paths\n */\nexport const AI_RESOURCES: string = factoryAssetRoots()[0] ?? defaultLibraryDir();\n"]}
1
+ {"version":3,"sources":["../cli/src/paths.ts"],"names":[],"mappings":";;;;;;AAeA,IAAM,WAAW,IAAA,CAAK,OAAA,CAAQ,aAAA,CAAc,MAAA,CAAA,IAAA,CAAY,GAAG,CAAC,CAAA;AAW5D,SAAS,iBAAiB,IAAA,EAA6B;AACrD,EAAA,IAAI,GAAA,GAAM,IAAA;AACV,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,CAAA,EAAG,CAAA,EAAA,EAAK;AAC1B,IAAA,IAAI,EAAA,CAAG,WAAW,IAAA,CAAK,IAAA,CAAK,KAAK,YAAY,CAAC,GAAG,OAAO,GAAA;AACxD,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAC/B,IAAA,IAAI,WAAW,GAAA,EAAK;AACpB,IAAA,GAAA,GAAM,MAAA;AAAA,EACR;AACA,EAAA,OAAO,IAAA;AACT;AAYO,IAAM,aAAA,GAA+B,iBAAiB,QAAQ;AAc9D,IAAM,YAAA,GAAuB,iBAAA,EAAkB,CAAE,CAAC,KAAK,iBAAA","file":"chunk-ZLDAPZIX.js","sourcesContent":["import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { defaultLibraryDir, factoryAssetRoots } from \"@skaile/workspaces/core\";\n\n/**\n * The content-root policy lives in `@skaile/workspaces/core` so the flow\n * connector's resolution surfaces can reach it too — `factory-assets → cli`\n * would be a module cycle. Re-exported here because this module is the CLI's\n * documented path surface and every CLI caller imports it from here.\n *\n * @docLink cli/dev-guide#paths\n */\nexport { aiResourceRoots } from \"@skaile/workspaces/core\";\n\nconst __ownDir = path.dirname(fileURLToPath(import.meta.url));\n\n/**\n * Walk up from `from` looking for the monorepo marker (`biome.json`, the\n * repo-root shared tooling config). Returns the matching directory or `null`\n * when none is found within eight levels — the latter is the typical case when\n * `@skaile/workspaces` has been installed via `npm i` without a skaile-dev\n * workspace context. Used only to gate dev-only commands (e.g.\n * `serve --compile-test`); first-party content is located via\n * {@link aiResourceRoots}, not this.\n */\nfunction findMonorepoRoot(from: string): string | null {\n let dir = from;\n for (let i = 0; i < 8; i++) {\n if (fs.existsSync(path.join(dir, \"biome.json\"))) return dir;\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n return null;\n}\n\n/**\n * Absolute path to the monorepo root, or `null` when the CLI is running\n * outside the skaile-dev workspace (typical for `npm i -g` installs).\n *\n * Consumers that only make sense inside the workspace (e.g.\n * `skaile serve --compile-test`) MUST check for `null` and report a\n * \"monorepo-only feature\" error before proceeding.\n *\n * @docLink cli/dev-guide#paths\n */\nexport const MONOREPO_ROOT: string | null = findMonorepoRoot(__ownDir);\n\n/**\n * Default content root used by path display and the `validate` command.\n *\n * The primary first-party `factory-assets/` root resolved through the shared\n * `factoryAssetRoots()` helper — the `SKAILE_FACTORY_ASSETS_DIR` override when\n * set, else the in-repo source during dev / bundled `dist/factory-assets/` after\n * `npm i`. Falls back to `$SKAILE_HOME/libraries/` (`~/.skaile/libraries/`) — the user-library directory\n * managed by `skaile library add` — when the package cannot be located.\n * Consumers `fs.existsSync` first and degrade to \"no skills / flows discovered\".\n *\n * @docLink cli/dev-guide#paths\n */\nexport const AI_RESOURCES: string = factoryAssetRoots()[0] ?? defaultLibraryDir();\n"]}
@@ -1,4 +1,4 @@
1
- import { getStoreConfig, getStoreToken, storeFetch } from './chunk-J45JCYS4.js';
1
+ import { getStoreConfig, getStoreToken, storeFetch } from './chunk-5M3S6DLV.js';
2
2
 
3
3
  // cli/src/store-publisher.ts
4
4
  function makeHttpPublisherClient(config = getStoreConfig(), timeoutMs = 2e4) {
@@ -25,5 +25,5 @@ function makeHttpPublisherClient(config = getStoreConfig(), timeoutMs = 2e4) {
25
25
  }
26
26
 
27
27
  export { makeHttpPublisherClient };
28
- //# sourceMappingURL=chunk-YPTDPN2B.js.map
29
- //# sourceMappingURL=chunk-YPTDPN2B.js.map
28
+ //# sourceMappingURL=chunk-ZRKU7BRI.js.map
29
+ //# sourceMappingURL=chunk-ZRKU7BRI.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../cli/src/store-publisher.ts"],"names":[],"mappings":";;;AA+FO,SAAS,uBAAA,CACd,MAAA,GAAsB,cAAA,EAAe,EACrC,YAAY,GAAA,EACK;AAGjB,EAAA,MAAM,IAAA,GAAO,OACX,IAAA,EACA,IAAA,KACe;AACf,IAAA,MAAM,GAAA,GAAM,MAAM,aAAA,EAAc;AAChC,IAAA,OAAO,UAAA,CAAc,EAAE,GAAG,MAAA,EAAQ,GAAA,EAAI,EAAG,IAAA,EAAM,EAAE,SAAA,EAAW,GAAG,IAAA,EAAM,CAAA;AAAA,EACvE,CAAA;AACA,EAAA,OAAO;AAAA,IACL,EAAA,EAAI,MAAM,IAAA,CAAK,YAAY,CAAA;AAAA,IAC3B,UAAA,EAAY,CAAC,IAAA,KAAS,IAAA,CAAK,mBAAmB,EAAE,MAAA,EAAQ,MAAA,EAAQ,IAAA,EAAM,CAAA;AAAA,IACtE,WAAA,EAAa,MAAM,IAAA,CAAK,iBAAiB,CAAA;AAAA,IACzC,UAAA,EAAY,CAAC,EAAA,KAAO,IAAA,CAAK,CAAA,gBAAA,EAAmB,EAAE,CAAA,KAAA,CAAA,EAAS,EAAE,MAAA,EAAQ,MAAA,EAAQ,IAAA,EAAM,IAAI,CAAA;AAAA,IACnF,QAAQ,CAAC,KAAA,KAAU,IAAA,CAAK,CAAA,aAAA,EAAgB,KAAK,CAAA,CAAE,CAAA;AAAA,IAC/C,kBAAkB,CAAC,EAAA,KAAO,IAAA,CAAK,CAAA,gBAAA,EAAmB,EAAE,CAAA,WAAA,CAAa,CAAA;AAAA,IACjE,cAAc,CAAC,EAAA,KAAO,IAAA,CAAK,CAAA,eAAA,EAAkB,EAAE,CAAA,QAAA,CAAU,CAAA;AAAA,IACzD,YAAA,EAAc,CAAC,EAAA,EAAI,IAAA,EAAM,WACvB,IAAA,CAAK,CAAA,eAAA,EAAkB,EAAE,CAAA,QAAA,CAAA,EAAY;AAAA,MACnC,MAAA,EAAQ,MAAA;AAAA,MACR,IAAA;AAAA,MACA,GAAI,SAAS,EAAE,MAAA,EAAQ,EAAE,MAAA,EAAQ,GAAA,EAAI,EAAE,GAAI;AAAC,KAC7C,CAAA;AAAA,IACH,cAAA,EAAgB,CAAC,EAAA,KAAO,IAAA,CAAK,CAAA,eAAA,EAAkB,EAAE,CAAA,UAAA,CAAA,EAAc,EAAE,MAAA,EAAQ,MAAA,EAAQ,IAAA,EAAM,IAAI,CAAA;AAAA,IAC3F,qBAAA,EAAuB,CAAC,EAAA,KACtB,IAAA,CAAK,sBAAsB,kBAAA,CAAmB,EAAE,CAAC,CAAA,aAAA,CAAe;AAAA,GACpE;AACF","file":"chunk-YPTDPN2B.js","sourcesContent":["/**\n * Typed REST client for the AI Asset Store **publisher** surface — the\n * curator-publish flow (`skaile source manifest publish` / `yank`). Thin\n * wrappers over {@link storeFetch}; every method maps 1:1 to an `/api/v1/…`\n * endpoint. The {@link PublisherClient} interface is injectable so the\n * orchestration in `commands/source-manifest-publish.ts` can be unit-tested\n * against a fake without a live store.\n *\n * @docLink cli/dev-guide#store-publisher\n */\n\nimport { getStoreConfig, getStoreToken, type StoreConfig, storeFetch } from \"./store-client.ts\";\n\n/**\n * The publisher REST surface used by the curator-publish flow. Kept minimal —\n * only the endpoints `runPublish` / `runYank` actually call. Response shapes\n * are narrowed to the fields the orchestration reads (the server returns more).\n */\nexport interface PublisherClient {\n /**\n * Identity of the caller. `username` is the Keycloak login (personal-tier\n * namespace); `githubLogin` is the verified GitHub handle when connected —\n * the namespace to publish under when it differs from the login.\n */\n me(): Promise<{ username: string; githubLogin?: string | null }>;\n /** Register (or re-register) a source; returns the created/existing row id. */\n sourcesAdd(body: {\n url: string;\n ref: string;\n sidecarUrl?: string;\n sidecarRef?: string;\n /**\n * Target publisher namespace (the manifest's `publisher`). When it differs\n * from the caller's login username, the store resolves the CLAIMED Publisher\n * for it (the store must already have the claim). Omitted → the store\n * defaults to `@<username>` (personal).\n */\n namespace?: string;\n }): Promise<{ id: string }>;\n /** List sources — used to recover an id when `sourcesAdd` rejects a dup url. */\n sourcesList(): Promise<Array<{ id: string; url: string }>>;\n /** Kick off a source sync; returns the async job id to poll. */\n sourceSync(id: string): Promise<{ jobId: string }>;\n /** Poll a job's terminal status + per-item results. */\n jobGet(\n jobId: string,\n ): Promise<{ status: string; items?: Array<{ label: string; status: string; error?: string }> }>;\n /** Discovered publishable candidates for a synced source. */\n sourceCandidates(id: string): Promise<\n Array<{\n id: string;\n name: string;\n version: string;\n kind: string;\n published: boolean;\n assetRoot: string;\n }>\n >;\n /** Per-asset preview — the discovered file set + resolved candidate metadata. */\n assetPreview(id: string): Promise<{\n discoveredFiles: string[];\n candidate: { name: string; version: string; kind: string; publisherNamespace: string };\n }>;\n /**\n * Publish one asset. `dryRun` returns the would-be `{ manifest }` without\n * launching a job; the normal path returns `{ jobId }`.\n */\n assetPublish(\n id: string,\n body: { ref: string; files: string[] },\n dryRun?: boolean,\n ): Promise<{ jobId?: string; manifest?: unknown }>;\n /** Retract a published asset. Response body is ignored. */\n assetUnpublish(id: string): Promise<unknown>;\n /**\n * Read-only \"can I publish under `@<ns>` right now, and if not, what's the\n * path?\" probe. Backs the `publish --dry-run` namespace status line; its\n * `message` is store-authored and meant to be surfaced verbatim.\n */\n namespaceAvailability(ns: string): Promise<{\n namespace: string;\n status: \"owned-by-you\" | \"claimable-by-you\" | \"reserved\" | \"available\";\n claimMethod?: string;\n message: string;\n }>;\n}\n\n/**\n * Construct the real HTTP-backed {@link PublisherClient}. Every call carries a\n * longer timeout than the default store client because publish/sync trigger\n * server-side clone work.\n *\n * @param config - Store connection config; defaults to {@link getStoreConfig}.\n * @param timeoutMs - Per-request abort timeout (default 20s).\n */\nexport function makeHttpPublisherClient(\n config: StoreConfig = getStoreConfig(),\n timeoutMs = 20_000,\n): PublisherClient {\n // Acquire a fresh Keycloak token per call (device-flow session in\n // ~/.skaile/auth.json, refreshed on demand) rather than a static config.jwt.\n const call = async <T>(\n path: string,\n opts?: { method?: string; body?: unknown; params?: Record<string, string> },\n ): Promise<T> => {\n const jwt = await getStoreToken();\n return storeFetch<T>({ ...config, jwt }, path, { timeoutMs, ...opts });\n };\n return {\n me: () => call(\"/api/v1/me\"),\n sourcesAdd: (body) => call(\"/api/v1/sources\", { method: \"POST\", body }),\n sourcesList: () => call(\"/api/v1/sources\"),\n sourceSync: (id) => call(`/api/v1/sources/${id}/sync`, { method: \"POST\", body: {} }),\n jobGet: (jobId) => call(`/api/v1/jobs/${jobId}`),\n sourceCandidates: (id) => call(`/api/v1/sources/${id}/candidates`),\n assetPreview: (id) => call(`/api/v1/assets/${id}/preview`),\n assetPublish: (id, body, dryRun) =>\n call(`/api/v1/assets/${id}/publish`, {\n method: \"POST\",\n body,\n ...(dryRun ? { params: { dryRun: \"1\" } } : {}),\n }),\n assetUnpublish: (id) => call(`/api/v1/assets/${id}/unpublish`, { method: \"POST\", body: {} }),\n namespaceAvailability: (ns) =>\n call(`/api/v1/namespaces/${encodeURIComponent(ns)}/availability`),\n };\n}\n"]}
1
+ {"version":3,"sources":["../cli/src/store-publisher.ts"],"names":[],"mappings":";;;AA+FO,SAAS,uBAAA,CACd,MAAA,GAAsB,cAAA,EAAe,EACrC,YAAY,GAAA,EACK;AAGjB,EAAA,MAAM,IAAA,GAAO,OACX,IAAA,EACA,IAAA,KACe;AACf,IAAA,MAAM,GAAA,GAAM,MAAM,aAAA,EAAc;AAChC,IAAA,OAAO,UAAA,CAAc,EAAE,GAAG,MAAA,EAAQ,GAAA,EAAI,EAAG,IAAA,EAAM,EAAE,SAAA,EAAW,GAAG,IAAA,EAAM,CAAA;AAAA,EACvE,CAAA;AACA,EAAA,OAAO;AAAA,IACL,EAAA,EAAI,MAAM,IAAA,CAAK,YAAY,CAAA;AAAA,IAC3B,UAAA,EAAY,CAAC,IAAA,KAAS,IAAA,CAAK,mBAAmB,EAAE,MAAA,EAAQ,MAAA,EAAQ,IAAA,EAAM,CAAA;AAAA,IACtE,WAAA,EAAa,MAAM,IAAA,CAAK,iBAAiB,CAAA;AAAA,IACzC,UAAA,EAAY,CAAC,EAAA,KAAO,IAAA,CAAK,CAAA,gBAAA,EAAmB,EAAE,CAAA,KAAA,CAAA,EAAS,EAAE,MAAA,EAAQ,MAAA,EAAQ,IAAA,EAAM,IAAI,CAAA;AAAA,IACnF,QAAQ,CAAC,KAAA,KAAU,IAAA,CAAK,CAAA,aAAA,EAAgB,KAAK,CAAA,CAAE,CAAA;AAAA,IAC/C,kBAAkB,CAAC,EAAA,KAAO,IAAA,CAAK,CAAA,gBAAA,EAAmB,EAAE,CAAA,WAAA,CAAa,CAAA;AAAA,IACjE,cAAc,CAAC,EAAA,KAAO,IAAA,CAAK,CAAA,eAAA,EAAkB,EAAE,CAAA,QAAA,CAAU,CAAA;AAAA,IACzD,YAAA,EAAc,CAAC,EAAA,EAAI,IAAA,EAAM,WACvB,IAAA,CAAK,CAAA,eAAA,EAAkB,EAAE,CAAA,QAAA,CAAA,EAAY;AAAA,MACnC,MAAA,EAAQ,MAAA;AAAA,MACR,IAAA;AAAA,MACA,GAAI,SAAS,EAAE,MAAA,EAAQ,EAAE,MAAA,EAAQ,GAAA,EAAI,EAAE,GAAI;AAAC,KAC7C,CAAA;AAAA,IACH,cAAA,EAAgB,CAAC,EAAA,KAAO,IAAA,CAAK,CAAA,eAAA,EAAkB,EAAE,CAAA,UAAA,CAAA,EAAc,EAAE,MAAA,EAAQ,MAAA,EAAQ,IAAA,EAAM,IAAI,CAAA;AAAA,IAC3F,qBAAA,EAAuB,CAAC,EAAA,KACtB,IAAA,CAAK,sBAAsB,kBAAA,CAAmB,EAAE,CAAC,CAAA,aAAA,CAAe;AAAA,GACpE;AACF","file":"chunk-ZRKU7BRI.js","sourcesContent":["/**\n * Typed REST client for the AI Asset Store **publisher** surface — the\n * curator-publish flow (`skaile source manifest publish` / `yank`). Thin\n * wrappers over {@link storeFetch}; every method maps 1:1 to an `/api/v1/…`\n * endpoint. The {@link PublisherClient} interface is injectable so the\n * orchestration in `commands/source-manifest-publish.ts` can be unit-tested\n * against a fake without a live store.\n *\n * @docLink cli/dev-guide#store-publisher\n */\n\nimport { getStoreConfig, getStoreToken, type StoreConfig, storeFetch } from \"./store-client.ts\";\n\n/**\n * The publisher REST surface used by the curator-publish flow. Kept minimal —\n * only the endpoints `runPublish` / `runYank` actually call. Response shapes\n * are narrowed to the fields the orchestration reads (the server returns more).\n */\nexport interface PublisherClient {\n /**\n * Identity of the caller. `username` is the Keycloak login (personal-tier\n * namespace); `githubLogin` is the verified GitHub handle when connected —\n * the namespace to publish under when it differs from the login.\n */\n me(): Promise<{ username: string; githubLogin?: string | null }>;\n /** Register (or re-register) a source; returns the created/existing row id. */\n sourcesAdd(body: {\n url: string;\n ref: string;\n sidecarUrl?: string;\n sidecarRef?: string;\n /**\n * Target publisher namespace (the manifest's `publisher`). When it differs\n * from the caller's login username, the store resolves the CLAIMED Publisher\n * for it (the store must already have the claim). Omitted → the store\n * defaults to `@<username>` (personal).\n */\n namespace?: string;\n }): Promise<{ id: string }>;\n /** List sources — used to recover an id when `sourcesAdd` rejects a dup url. */\n sourcesList(): Promise<Array<{ id: string; url: string }>>;\n /** Kick off a source sync; returns the async job id to poll. */\n sourceSync(id: string): Promise<{ jobId: string }>;\n /** Poll a job's terminal status + per-item results. */\n jobGet(\n jobId: string,\n ): Promise<{ status: string; items?: Array<{ label: string; status: string; error?: string }> }>;\n /** Discovered publishable candidates for a synced source. */\n sourceCandidates(id: string): Promise<\n Array<{\n id: string;\n name: string;\n version: string;\n kind: string;\n published: boolean;\n assetRoot: string;\n }>\n >;\n /** Per-asset preview — the discovered file set + resolved candidate metadata. */\n assetPreview(id: string): Promise<{\n discoveredFiles: string[];\n candidate: { name: string; version: string; kind: string; publisherNamespace: string };\n }>;\n /**\n * Publish one asset. `dryRun` returns the would-be `{ manifest }` without\n * launching a job; the normal path returns `{ jobId }`.\n */\n assetPublish(\n id: string,\n body: { ref: string; files: string[] },\n dryRun?: boolean,\n ): Promise<{ jobId?: string; manifest?: unknown }>;\n /** Retract a published asset. Response body is ignored. */\n assetUnpublish(id: string): Promise<unknown>;\n /**\n * Read-only \"can I publish under `@<ns>` right now, and if not, what's the\n * path?\" probe. Backs the `publish --dry-run` namespace status line; its\n * `message` is store-authored and meant to be surfaced verbatim.\n */\n namespaceAvailability(ns: string): Promise<{\n namespace: string;\n status: \"owned-by-you\" | \"claimable-by-you\" | \"reserved\" | \"available\";\n claimMethod?: string;\n message: string;\n }>;\n}\n\n/**\n * Construct the real HTTP-backed {@link PublisherClient}. Every call carries a\n * longer timeout than the default store client because publish/sync trigger\n * server-side clone work.\n *\n * @param config - Store connection config; defaults to {@link getStoreConfig}.\n * @param timeoutMs - Per-request abort timeout (default 20s).\n */\nexport function makeHttpPublisherClient(\n config: StoreConfig = getStoreConfig(),\n timeoutMs = 20_000,\n): PublisherClient {\n // Acquire a fresh Keycloak token per call (device-flow session in\n // ~/.skaile/auth.json, refreshed on demand) rather than a static config.jwt.\n const call = async <T>(\n path: string,\n opts?: { method?: string; body?: unknown; params?: Record<string, string> },\n ): Promise<T> => {\n const jwt = await getStoreToken();\n return storeFetch<T>({ ...config, jwt }, path, { timeoutMs, ...opts });\n };\n return {\n me: () => call(\"/api/v1/me\"),\n sourcesAdd: (body) => call(\"/api/v1/sources\", { method: \"POST\", body }),\n sourcesList: () => call(\"/api/v1/sources\"),\n sourceSync: (id) => call(`/api/v1/sources/${id}/sync`, { method: \"POST\", body: {} }),\n jobGet: (jobId) => call(`/api/v1/jobs/${jobId}`),\n sourceCandidates: (id) => call(`/api/v1/sources/${id}/candidates`),\n assetPreview: (id) => call(`/api/v1/assets/${id}/preview`),\n assetPublish: (id, body, dryRun) =>\n call(`/api/v1/assets/${id}/publish`, {\n method: \"POST\",\n body,\n ...(dryRun ? { params: { dryRun: \"1\" } } : {}),\n }),\n assetUnpublish: (id) => call(`/api/v1/assets/${id}/unpublish`, { method: \"POST\", body: {} }),\n namespaceAvailability: (ns) =>\n call(`/api/v1/namespaces/${encodeURIComponent(ns)}/availability`),\n };\n}\n"]}
@@ -1,10 +1,10 @@
1
- export { disable, enable, install, refreshPluginSkills, status, uninstall } from './chunk-X5SGUBUV.js';
2
- import './chunk-2UKNI2HJ.js';
1
+ export { disable, enable, install, refreshPluginSkills, status, uninstall } from './chunk-DKRD6CZL.js';
2
+ import './chunk-RZQCBFIU.js';
3
3
  import './chunk-3MWQKQUB.js';
4
4
  import './chunk-C5HFK34M.js';
5
- import './chunk-MDCI4RSG.js';
5
+ import './chunk-RZL4TOK3.js';
6
6
  import './chunk-C3CAXQMA.js';
7
7
  import './chunk-BOFL7GIF.js';
8
8
  import './chunk-NSBPE2FW.js';
9
- //# sourceMappingURL=claude-code-ILZ46SLO.js.map
10
- //# sourceMappingURL=claude-code-ILZ46SLO.js.map
9
+ //# sourceMappingURL=claude-code-TDMSETH6.js.map
10
+ //# sourceMappingURL=claude-code-TDMSETH6.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"claude-code-ILZ46SLO.js"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"claude-code-TDMSETH6.js"}