@skaile/workspaces 5.13.0 → 5.15.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 (382) hide show
  1. package/CHANGELOG.md +108 -0
  2. package/README.md +1 -1
  3. package/dist/app-sdk/index.js +1 -1
  4. package/dist/{asset-feeds-ALMTHLPV.js → asset-feeds-LIDC7547.js} +19 -19
  5. package/dist/{asset-feeds-ALMTHLPV.js.map → asset-feeds-LIDC7547.js.map} +1 -1
  6. package/dist/asset-manager/catalog-deployer.js +7 -7
  7. package/dist/asset-manager/index.js +14 -14
  8. package/dist/asset-manager/installer.js +9 -9
  9. package/dist/asset-manager/renderers.js +8 -8
  10. package/dist/asset-manager/src/index.d.ts +128 -6
  11. package/dist/asset-manager/src/index.d.ts.map +1 -1
  12. package/dist/asset-manager/src/install-instances.d.ts +19 -0
  13. package/dist/asset-manager/src/install-instances.d.ts.map +1 -1
  14. package/dist/asset-manager/src/installer.d.ts.map +1 -1
  15. package/dist/asset-manager/src/mcp-config.d.ts +5 -0
  16. package/dist/asset-manager/src/mcp-config.d.ts.map +1 -1
  17. package/dist/bridge/drivers/claude-sdk.js +162 -27
  18. package/dist/bridge/drivers/claude-sdk.js.map +1 -1
  19. package/dist/bridge/drivers/codex.js +80 -15
  20. package/dist/bridge/drivers/codex.js.map +1 -1
  21. package/dist/bridge/drivers/continue.js +10 -9
  22. package/dist/bridge/drivers/continue.js.map +1 -1
  23. package/dist/bridge/drivers/echo.js +4 -3
  24. package/dist/bridge/drivers/echo.js.map +1 -1
  25. package/dist/bridge/drivers/gemini.js +7 -6
  26. package/dist/bridge/drivers/goose.js +10 -9
  27. package/dist/bridge/drivers/goose.js.map +1 -1
  28. package/dist/bridge/drivers/omp.js +113 -40
  29. package/dist/bridge/drivers/omp.js.map +1 -1
  30. package/dist/bridge/drivers/opencode.js +10 -9
  31. package/dist/bridge/drivers/opencode.js.map +1 -1
  32. package/dist/bridge/drivers/qwen.js +7 -6
  33. package/dist/bridge/drivers/qwen.js.map +1 -1
  34. package/dist/bridge/index.js +14 -13
  35. package/dist/bridge/src/codex/friendly-error.d.ts +19 -0
  36. package/dist/bridge/src/codex/friendly-error.d.ts.map +1 -0
  37. package/dist/bridge/src/drivers/claude-sdk.d.ts +2 -0
  38. package/dist/bridge/src/drivers/claude-sdk.d.ts.map +1 -1
  39. package/dist/bridge/src/drivers/claude-self-turns.d.ts +72 -0
  40. package/dist/bridge/src/drivers/claude-self-turns.d.ts.map +1 -0
  41. package/dist/bridge/src/drivers/codex.d.ts.map +1 -1
  42. package/dist/bridge/src/drivers/omp-models-yml.d.ts +17 -7
  43. package/dist/bridge/src/drivers/omp-models-yml.d.ts.map +1 -1
  44. package/dist/bridge/src/drivers/omp.d.ts +7 -0
  45. package/dist/bridge/src/drivers/omp.d.ts.map +1 -1
  46. package/dist/bridge/src/normalizer.d.ts.map +1 -1
  47. package/dist/bridge/src/types.d.ts +12 -0
  48. package/dist/bridge/src/types.d.ts.map +1 -1
  49. package/dist/{chunk-VLBIME5L.js → chunk-2LTF2ZHH.js} +4 -4
  50. package/dist/{chunk-VLBIME5L.js.map → chunk-2LTF2ZHH.js.map} +1 -1
  51. package/dist/chunk-4AKR4XPQ.js +273 -0
  52. package/dist/chunk-4AKR4XPQ.js.map +1 -0
  53. package/dist/{chunk-BF422IDP.js → chunk-4QINFQ27.js} +159 -20
  54. package/dist/chunk-4QINFQ27.js.map +1 -0
  55. package/dist/{chunk-V5JHD4I2.js → chunk-54TVXZP3.js} +3 -3
  56. package/dist/{chunk-V5JHD4I2.js.map → chunk-54TVXZP3.js.map} +1 -1
  57. package/dist/{chunk-XJYBCDY2.js → chunk-74THIMZV.js} +3 -3
  58. package/dist/{chunk-XJYBCDY2.js.map → chunk-74THIMZV.js.map} +1 -1
  59. package/dist/{chunk-IY5E7Y5W.js → chunk-ANSZULXH.js} +32 -9
  60. package/dist/chunk-ANSZULXH.js.map +1 -0
  61. package/dist/{chunk-J4DB5G36.js → chunk-AVUJBSFA.js} +2 -2
  62. package/dist/{chunk-J4DB5G36.js.map → chunk-AVUJBSFA.js.map} +1 -1
  63. package/dist/{chunk-FB3NREF7.js → chunk-AXNX2SKZ.js} +483 -32
  64. package/dist/chunk-AXNX2SKZ.js.map +1 -0
  65. package/dist/{chunk-H5U7LNTJ.js → chunk-BFMYYNDT.js} +25 -3
  66. package/dist/chunk-BFMYYNDT.js.map +1 -0
  67. package/dist/{chunk-4L4R5LV3.js → chunk-BV7NLPI6.js} +4 -4
  68. package/dist/{chunk-4L4R5LV3.js.map → chunk-BV7NLPI6.js.map} +1 -1
  69. package/dist/{chunk-FHDK3BFD.js → chunk-D2MZZ2KB.js} +3 -3
  70. package/dist/{chunk-FHDK3BFD.js.map → chunk-D2MZZ2KB.js.map} +1 -1
  71. package/dist/{chunk-F4NJDSR7.js → chunk-D5WTOVLG.js} +7 -4
  72. package/dist/chunk-D5WTOVLG.js.map +1 -0
  73. package/dist/{chunk-Y4Z7LGSH.js → chunk-DP6YRAPZ.js} +67 -23
  74. package/dist/chunk-DP6YRAPZ.js.map +1 -0
  75. package/dist/{chunk-AHCI4V5L.js → chunk-DPCEQOIZ.js} +3 -3
  76. package/dist/{chunk-AHCI4V5L.js.map → chunk-DPCEQOIZ.js.map} +1 -1
  77. package/dist/{chunk-U27JRO5L.js → chunk-ESXZJP4M.js} +3 -3
  78. package/dist/{chunk-U27JRO5L.js.map → chunk-ESXZJP4M.js.map} +1 -1
  79. package/dist/{chunk-B7CZYFB2.js → chunk-GLMKS6V6.js} +4 -4
  80. package/dist/{chunk-B7CZYFB2.js.map → chunk-GLMKS6V6.js.map} +1 -1
  81. package/dist/{chunk-BVJU2GKE.js → chunk-GQ5OYFVD.js} +4 -271
  82. package/dist/chunk-GQ5OYFVD.js.map +1 -0
  83. package/dist/{chunk-PZOO7L26.js → chunk-I3JO3NIZ.js} +4 -4
  84. package/dist/{chunk-PZOO7L26.js.map → chunk-I3JO3NIZ.js.map} +1 -1
  85. package/dist/{chunk-L3ZGYSWY.js → chunk-J76LDUDS.js} +91 -18
  86. package/dist/chunk-J76LDUDS.js.map +1 -0
  87. package/dist/{chunk-6GICC4RJ.js → chunk-JHP6MIW2.js} +56 -19
  88. package/dist/chunk-JHP6MIW2.js.map +1 -0
  89. package/dist/{chunk-PXDWTJ3P.js → chunk-KRRHADE7.js} +5 -5
  90. package/dist/{chunk-PXDWTJ3P.js.map → chunk-KRRHADE7.js.map} +1 -1
  91. package/dist/{chunk-NDUYFYJB.js → chunk-KUB4HFGK.js} +12 -7
  92. package/dist/chunk-KUB4HFGK.js.map +1 -0
  93. package/dist/{chunk-ZU24LWBI.js → chunk-LEOXPIC6.js} +3 -3
  94. package/dist/{chunk-ZU24LWBI.js.map → chunk-LEOXPIC6.js.map} +1 -1
  95. package/dist/{chunk-57SF6W6E.js → chunk-MGM5EJQQ.js} +3 -3
  96. package/dist/chunk-MGM5EJQQ.js.map +1 -0
  97. package/dist/{chunk-5SKVCMRC.js → chunk-MKTJZLQM.js} +6 -11
  98. package/dist/chunk-MKTJZLQM.js.map +1 -0
  99. package/dist/{chunk-XBYSURMK.js → chunk-N36S36OZ.js} +3 -3
  100. package/dist/{chunk-XBYSURMK.js.map → chunk-N36S36OZ.js.map} +1 -1
  101. package/dist/{chunk-NVO6WECE.js → chunk-NKDSU4Q7.js} +6 -6
  102. package/dist/{chunk-NVO6WECE.js.map → chunk-NKDSU4Q7.js.map} +1 -1
  103. package/dist/{chunk-OQ5MKDS3.js → chunk-NOF73BUH.js} +27 -6
  104. package/dist/chunk-NOF73BUH.js.map +1 -0
  105. package/dist/{chunk-4DLQESIY.js → chunk-O673TBWJ.js} +3 -3
  106. package/dist/{chunk-4DLQESIY.js.map → chunk-O673TBWJ.js.map} +1 -1
  107. package/dist/{chunk-DKGEV6SQ.js → chunk-OOQ5Q75W.js} +111 -20
  108. package/dist/chunk-OOQ5Q75W.js.map +1 -0
  109. package/dist/{chunk-PYTTF754.js → chunk-PIDMOE7R.js} +4 -4
  110. package/dist/{chunk-PYTTF754.js.map → chunk-PIDMOE7R.js.map} +1 -1
  111. package/dist/{chunk-6JKIOPT3.js → chunk-PK5XQBOC.js} +4 -4
  112. package/dist/{chunk-6JKIOPT3.js.map → chunk-PK5XQBOC.js.map} +1 -1
  113. package/dist/{chunk-6NQDDCIL.js → chunk-PQF5QHVS.js} +15 -7
  114. package/dist/chunk-PQF5QHVS.js.map +1 -0
  115. package/dist/{chunk-HWGYJMME.js → chunk-PV47EEHD.js} +4 -4
  116. package/dist/{chunk-HWGYJMME.js.map → chunk-PV47EEHD.js.map} +1 -1
  117. package/dist/{chunk-2H73V6XR.js → chunk-PW3TYWOI.js} +3 -3
  118. package/dist/{chunk-2H73V6XR.js.map → chunk-PW3TYWOI.js.map} +1 -1
  119. package/dist/{chunk-ZSMMX3JD.js → chunk-QR7W5JV4.js} +66 -16
  120. package/dist/chunk-QR7W5JV4.js.map +1 -0
  121. package/dist/chunk-RTYDYSUV.js +1336 -0
  122. package/dist/chunk-RTYDYSUV.js.map +1 -0
  123. package/dist/{chunk-7SMP4GNW.js → chunk-SAKVAG23.js} +7 -6
  124. package/dist/chunk-SAKVAG23.js.map +1 -0
  125. package/dist/{chunk-GMDSRSGI.js → chunk-SCUEPCSJ.js} +12 -9
  126. package/dist/chunk-SCUEPCSJ.js.map +1 -0
  127. package/dist/{chunk-M3P4BYRK.js → chunk-SP5NGNBV.js} +6 -3
  128. package/dist/chunk-SP5NGNBV.js.map +1 -0
  129. package/dist/{chunk-HBZD3MIW.js → chunk-SRKU7QUG.js} +233 -51
  130. package/dist/chunk-SRKU7QUG.js.map +1 -0
  131. package/dist/{chunk-2BIESC6S.js → chunk-SZPE55SB.js} +3 -3
  132. package/dist/{chunk-2BIESC6S.js.map → chunk-SZPE55SB.js.map} +1 -1
  133. package/dist/{chunk-YTZFSKWL.js → chunk-TCWECSEB.js} +3 -3
  134. package/dist/{chunk-YTZFSKWL.js.map → chunk-TCWECSEB.js.map} +1 -1
  135. package/dist/{chunk-J4OYIYFQ.js → chunk-VY6NTFE7.js} +2 -2
  136. package/dist/{chunk-J4OYIYFQ.js.map → chunk-VY6NTFE7.js.map} +1 -1
  137. package/dist/{chunk-5FYOM4RF.js → chunk-WWUWMOX2.js} +15 -11
  138. package/dist/chunk-WWUWMOX2.js.map +1 -0
  139. package/dist/{chunk-USHB5KEY.js → chunk-WXKNM2JJ.js} +3 -3
  140. package/dist/{chunk-USHB5KEY.js.map → chunk-WXKNM2JJ.js.map} +1 -1
  141. package/dist/{chunk-QO7CR3KB.js → chunk-X7DIT65W.js} +4 -4
  142. package/dist/{chunk-QO7CR3KB.js.map → chunk-X7DIT65W.js.map} +1 -1
  143. package/dist/{chunk-Y7WKXPWS.js → chunk-XX4C72CC.js} +544 -68
  144. package/dist/chunk-XX4C72CC.js.map +1 -0
  145. package/dist/{chunk-VMKMFS2Q.js → chunk-YIDZJHY6.js} +3 -3
  146. package/dist/{chunk-VMKMFS2Q.js.map → chunk-YIDZJHY6.js.map} +1 -1
  147. package/dist/{chunk-R6QHJEHE.js → chunk-YL23KWBX.js} +5 -5
  148. package/dist/{chunk-R6QHJEHE.js.map → chunk-YL23KWBX.js.map} +1 -1
  149. package/dist/{chunk-4NJ3QQHZ.js → chunk-YUURCZWY.js} +5 -5
  150. package/dist/{chunk-4NJ3QQHZ.js.map → chunk-YUURCZWY.js.map} +1 -1
  151. package/dist/{chunk-X4BAYGMT.js → chunk-ZIW34FGO.js} +3 -3
  152. package/dist/{chunk-X4BAYGMT.js.map → chunk-ZIW34FGO.js.map} +1 -1
  153. package/dist/cli/index.js +4324 -4078
  154. package/dist/cli/index.js.map +1 -1
  155. package/dist/cli/src/agent-checks.d.ts +21 -0
  156. package/dist/cli/src/agent-checks.d.ts.map +1 -1
  157. package/dist/cli/src/commands/asset-cmd.d.ts.map +1 -1
  158. package/dist/cli/src/commands/catalog.d.ts.map +1 -1
  159. package/dist/cli/src/commands/library-cmd.d.ts.map +1 -1
  160. package/dist/cli/src/commands/library-index.d.ts +25 -5
  161. package/dist/cli/src/commands/library-index.d.ts.map +1 -1
  162. package/dist/cli/src/commands/library-publish.d.ts.map +1 -1
  163. package/dist/cli/src/commands/outdated.d.ts.map +1 -1
  164. package/dist/cli/src/commands/plugin-registry-cmd.d.ts.map +1 -1
  165. package/dist/cli/src/commands/preset-cmd.d.ts.map +1 -1
  166. package/dist/cli/src/commands/project.d.ts +16 -1
  167. package/dist/cli/src/commands/project.d.ts.map +1 -1
  168. package/dist/cli/src/commands/rebuild.d.ts.map +1 -1
  169. package/dist/cli/src/commands/run.d.ts.map +1 -1
  170. package/dist/cli/src/commands/serve-preflight.d.ts +5 -6
  171. package/dist/cli/src/commands/serve-preflight.d.ts.map +1 -1
  172. package/dist/cli/src/commands/serve.d.ts +19 -0
  173. package/dist/cli/src/commands/serve.d.ts.map +1 -1
  174. package/dist/cli/src/commands/session.d.ts.map +1 -1
  175. package/dist/cli/src/commands/source.d.ts +7 -0
  176. package/dist/cli/src/commands/source.d.ts.map +1 -1
  177. package/dist/cli/src/commands/update.d.ts.map +1 -1
  178. package/dist/cli/src/commands/validate.d.ts +0 -9
  179. package/dist/cli/src/commands/validate.d.ts.map +1 -1
  180. package/dist/cli/src/skill-checks.d.ts +8 -1
  181. package/dist/cli/src/skill-checks.d.ts.map +1 -1
  182. package/dist/connectors/config.js +5 -5
  183. package/dist/connectors/index.js +18 -17
  184. package/dist/connectors/src/config.d.ts.map +1 -1
  185. package/dist/connectors/src/connector-manager.d.ts +8 -1
  186. package/dist/connectors/src/connector-manager.d.ts.map +1 -1
  187. package/dist/connectors/src/connector-prompt.d.ts +9 -0
  188. package/dist/connectors/src/connector-prompt.d.ts.map +1 -1
  189. package/dist/{connectors-GFKMKAXV.js → connectors-JQR5RAMC.js} +21 -20
  190. package/dist/{connectors-GFKMKAXV.js.map → connectors-JQR5RAMC.js.map} +1 -1
  191. package/dist/connectors-shared/index.js +2 -2
  192. package/dist/core/index.js +6 -6
  193. package/dist/core/manifest.js +2 -2
  194. package/dist/core/models.js +1 -1
  195. package/dist/core/publish-manifest.js +3 -3
  196. package/dist/core/ref.js +1 -1
  197. package/dist/core/runtime-assets.js +5 -5
  198. package/dist/core/src/driver-sdk.d.ts +31 -0
  199. package/dist/core/src/driver-sdk.d.ts.map +1 -0
  200. package/dist/core/src/index.d.ts +3 -2
  201. package/dist/core/src/index.d.ts.map +1 -1
  202. package/dist/core/src/lock.d.ts.map +1 -1
  203. package/dist/core/src/manifest-yaml-editor.d.ts +5 -0
  204. package/dist/core/src/manifest-yaml-editor.d.ts.map +1 -1
  205. package/dist/core/src/manifest.d.ts.map +1 -1
  206. package/dist/core/src/models.d.ts +8 -0
  207. package/dist/core/src/models.d.ts.map +1 -1
  208. package/dist/core/src/publish-manifest.d.ts +28 -7
  209. package/dist/core/src/publish-manifest.d.ts.map +1 -1
  210. package/dist/core/src/repo-manager.d.ts.map +1 -1
  211. package/dist/core/src/walker.d.ts +4 -0
  212. package/dist/core/src/walker.d.ts.map +1 -1
  213. package/dist/core/src/workspace-config.d.ts +44 -0
  214. package/dist/core/src/workspace-config.d.ts.map +1 -1
  215. package/dist/core/workspace-config.js +4 -4
  216. package/dist/deploy/index.js +6 -6
  217. package/dist/discovery/index.js +5 -5
  218. package/dist/{ensure-sources-VUKHL65L.js → ensure-sources-NAGBSMJE.js} +17 -17
  219. package/dist/{ensure-sources-VUKHL65L.js.map → ensure-sources-NAGBSMJE.js.map} +1 -1
  220. package/dist/factory-assets/connectors/box.js +18 -17
  221. package/dist/factory-assets/connectors/deploy.js +18 -17
  222. package/dist/factory-assets/connectors/devserver.js +18 -17
  223. package/dist/factory-assets/connectors/flow/adapter.js +18 -17
  224. package/dist/factory-assets/connectors/flow/engine.js +7 -7
  225. package/dist/factory-assets/connectors/flow/run-flow.d.ts +5 -0
  226. package/dist/factory-assets/connectors/flow/run-flow.d.ts.map +1 -1
  227. package/dist/factory-assets/connectors/flow/run-flow.js +20 -19
  228. package/dist/factory-assets/connectors/flow.js +18 -17
  229. package/dist/factory-assets/connectors/git.js +18 -17
  230. package/dist/factory-assets/connectors/gmail.js +18 -17
  231. package/dist/factory-assets/connectors/googledrive.js +18 -17
  232. package/dist/factory-assets/connectors/local.js +18 -17
  233. package/dist/factory-assets/connectors/mattermost.js +18 -17
  234. package/dist/factory-assets/connectors/memory.js +18 -17
  235. package/dist/factory-assets/connectors/minio.js +18 -17
  236. package/dist/factory-assets/connectors/postgres.js +18 -17
  237. package/dist/factory-assets/connectors/s3.js +18 -17
  238. package/dist/factory-assets/connectors/sharepoint.js +18 -17
  239. package/dist/factory-assets/connectors/sqlite.js +18 -17
  240. package/dist/factory-assets/connectors/static-server.js +18 -17
  241. package/dist/factory-assets/connectors/tunnel.js +18 -17
  242. package/dist/factory-assets/connectors/webdav.js +18 -17
  243. package/dist/factory-assets/connectors/xstate-store.js +18 -17
  244. package/dist/factory-assets/connectors/xstate.js +18 -17
  245. package/dist/{flows-A4YALSZY.js → flows-CYJI3URW.js} +11 -11
  246. package/dist/{flows-A4YALSZY.js.map → flows-CYJI3URW.js.map} +1 -1
  247. package/dist/{helpers-53XZW7KF.js → helpers-XFHJDJOA.js} +17 -17
  248. package/dist/{helpers-53XZW7KF.js.map → helpers-XFHJDJOA.js.map} +1 -1
  249. package/dist/library/index.js +11 -11
  250. package/dist/library/install.js +5 -5
  251. package/dist/library/src/index.d.ts +1 -1
  252. package/dist/library/src/index.d.ts.map +1 -1
  253. package/dist/library/src/install/source-fetch-github.d.ts.map +1 -1
  254. package/dist/library/src/manifest-writer.d.ts +15 -0
  255. package/dist/library/src/manifest-writer.d.ts.map +1 -1
  256. package/dist/library/src/remote/remote-catalog-source.d.ts +6 -1
  257. package/dist/library/src/remote/remote-catalog-source.d.ts.map +1 -1
  258. package/dist/library/src/remote/rest-catalog-source.d.ts +6 -1
  259. package/dist/library/src/remote/rest-catalog-source.d.ts.map +1 -1
  260. package/dist/{library-publish-FFIPWIRM.js → library-publish-FC3ZABR2.js} +91 -29
  261. package/dist/library-publish-FC3ZABR2.js.map +1 -0
  262. package/dist/model-endpoint/index.d.ts +2 -0
  263. package/dist/model-endpoint/index.js +9 -0
  264. package/dist/model-endpoint/index.js.map +1 -0
  265. package/dist/model-endpoint/src/index.d.ts +4 -0
  266. package/dist/model-endpoint/src/index.d.ts.map +1 -0
  267. package/dist/model-endpoint/src/openai-chat.d.ts +105 -0
  268. package/dist/model-endpoint/src/openai-chat.d.ts.map +1 -0
  269. package/dist/model-endpoint/src/openai-responses.d.ts +106 -0
  270. package/dist/model-endpoint/src/openai-responses.d.ts.map +1 -0
  271. package/dist/model-endpoint/src/openai-shared.d.ts +77 -0
  272. package/dist/model-endpoint/src/openai-shared.d.ts.map +1 -0
  273. package/dist/model-endpoint/src/resolve.d.ts +36 -0
  274. package/dist/model-endpoint/src/resolve.d.ts.map +1 -0
  275. package/dist/model-endpoint/src/server.d.ts +16 -0
  276. package/dist/model-endpoint/src/server.d.ts.map +1 -0
  277. package/dist/model-endpoint/src/types.d.ts +78 -0
  278. package/dist/model-endpoint/src/types.d.ts.map +1 -0
  279. package/dist/open-library-5ET7SAJC.js +40 -0
  280. package/dist/{open-library-PZAT3TJA.js.map → open-library-5ET7SAJC.js.map} +1 -1
  281. package/dist/open-registry-X6YQVP7V.js +32 -0
  282. package/dist/{open-registry-W46UXZ3I.js.map → open-registry-X6YQVP7V.js.map} +1 -1
  283. package/dist/{paths-KKY3NSBZ.js → paths-NXWIBZCX.js} +9 -9
  284. package/dist/{paths-KKY3NSBZ.js.map → paths-NXWIBZCX.js.map} +1 -1
  285. package/dist/{plugin-store-CK7YWRIC.js → plugin-store-BIITCNOZ.js} +8 -8
  286. package/dist/{plugin-store-CK7YWRIC.js.map → plugin-store-BIITCNOZ.js.map} +1 -1
  287. package/dist/project-2UXHSVVA.js +82 -0
  288. package/dist/{project-EZUH7PUJ.js.map → project-2UXHSVVA.js.map} +1 -1
  289. package/dist/resolver/index.js +7 -7
  290. package/dist/runner/index.js +35 -32
  291. package/dist/runner/src/event-gap-buffer.d.ts.map +1 -1
  292. package/dist/runner/src/model-endpoint-discovery.d.ts +64 -0
  293. package/dist/runner/src/model-endpoint-discovery.d.ts.map +1 -0
  294. package/dist/runner/src/resources.d.ts.map +1 -1
  295. package/dist/runner/src/serve.d.ts +14 -0
  296. package/dist/runner/src/serve.d.ts.map +1 -1
  297. package/dist/runner/src/session-builder.d.ts +8 -0
  298. package/dist/runner/src/session-builder.d.ts.map +1 -1
  299. package/dist/runner/src/session.d.ts +15 -0
  300. package/dist/runner/src/session.d.ts.map +1 -1
  301. package/dist/sdk/asset-manager.js +14 -14
  302. package/dist/sdk/bridge.js +14 -13
  303. package/dist/sdk/core.js +6 -6
  304. package/dist/sdk/flow.js +7 -7
  305. package/dist/sdk/index.js +35 -32
  306. package/dist/sdk/index.js.map +1 -1
  307. package/dist/sdk/resolver.js +7 -7
  308. package/dist/sdk/runner.js +35 -32
  309. package/dist/sdk/session.js +2 -2
  310. package/dist/sdk/transport/ws/server.js +1 -1
  311. package/dist/sdk/transport/ws.js +1 -1
  312. package/dist/sdk/transport.js +1 -1
  313. package/dist/sdk/types.js +1 -1
  314. package/dist/serve-preflight-GD7IQFA3.js +54 -0
  315. package/dist/serve-preflight-GD7IQFA3.js.map +1 -0
  316. package/dist/session/index.js +2 -2
  317. package/dist/{setup-L632QIHV.js → setup-IKH4R7UN.js} +25 -24
  318. package/dist/setup-IKH4R7UN.js.map +1 -0
  319. package/dist/{skills-OY3Y5GKA.js → skills-XVHOXOOH.js} +12 -12
  320. package/dist/{skills-OY3Y5GKA.js.map → skills-XVHOXOOH.js.map} +1 -1
  321. package/dist/source-M6IARYNO.js +83 -0
  322. package/dist/{source-36FHMN5V.js.map → source-M6IARYNO.js.map} +1 -1
  323. package/dist/source-fetch-github-ST4MFL3D.js +4 -0
  324. package/dist/{source-fetch-github-PIO6EMMF.js.map → source-fetch-github-ST4MFL3D.js.map} +1 -1
  325. package/dist/{source-manifest-publish-NIXJSJ22.js → source-manifest-publish-UP2IS2QW.js} +65 -24
  326. package/dist/source-manifest-publish-UP2IS2QW.js.map +1 -0
  327. package/dist/transport/index.js +1 -1
  328. package/dist/transport/src/ws/server.d.ts +16 -0
  329. package/dist/transport/src/ws/server.d.ts.map +1 -1
  330. package/dist/transport/ws/server.js +1 -1
  331. package/dist/transport/ws.js +1 -1
  332. package/dist/tui/index.js +35 -32
  333. package/dist/tui/index.js.map +1 -1
  334. package/dist/types/index.js +1 -1
  335. package/dist/types/manifests.js +1 -1
  336. package/dist/types/src/delivery.d.ts.map +1 -1
  337. package/dist/types/src/events.d.ts +55 -1
  338. package/dist/types/src/events.d.ts.map +1 -1
  339. package/dist/types/src/index.d.ts +1 -1
  340. package/dist/types/src/index.d.ts.map +1 -1
  341. package/dist/types/src/manifests/mcp-server.d.ts.map +1 -1
  342. package/dist/types/src/version.d.ts +11 -1
  343. package/dist/types/src/version.d.ts.map +1 -1
  344. package/dist/workspace-plugin/adapters/mcp.js +25 -24
  345. package/dist/workspace-plugin/adapters/omp.js +14 -14
  346. package/dist/workspace-plugin/index.js +1 -1
  347. package/dist/workspace-plugin/src/adapters/mcp.d.ts.map +1 -1
  348. package/package.json +14 -3
  349. package/dist/chunk-57SF6W6E.js.map +0 -1
  350. package/dist/chunk-5FYOM4RF.js.map +0 -1
  351. package/dist/chunk-5SKVCMRC.js.map +0 -1
  352. package/dist/chunk-6GICC4RJ.js.map +0 -1
  353. package/dist/chunk-6NQDDCIL.js.map +0 -1
  354. package/dist/chunk-7SMP4GNW.js.map +0 -1
  355. package/dist/chunk-BF422IDP.js.map +0 -1
  356. package/dist/chunk-BVJU2GKE.js.map +0 -1
  357. package/dist/chunk-DKGEV6SQ.js.map +0 -1
  358. package/dist/chunk-F4NJDSR7.js.map +0 -1
  359. package/dist/chunk-FB3NREF7.js.map +0 -1
  360. package/dist/chunk-GMDSRSGI.js.map +0 -1
  361. package/dist/chunk-H5U7LNTJ.js.map +0 -1
  362. package/dist/chunk-HBZD3MIW.js.map +0 -1
  363. package/dist/chunk-IY5E7Y5W.js.map +0 -1
  364. package/dist/chunk-L3ZGYSWY.js.map +0 -1
  365. package/dist/chunk-M3P4BYRK.js.map +0 -1
  366. package/dist/chunk-NDUYFYJB.js.map +0 -1
  367. package/dist/chunk-OQ5MKDS3.js.map +0 -1
  368. package/dist/chunk-PN44DOGP.js +0 -345
  369. package/dist/chunk-PN44DOGP.js.map +0 -1
  370. package/dist/chunk-Y4Z7LGSH.js.map +0 -1
  371. package/dist/chunk-Y7WKXPWS.js.map +0 -1
  372. package/dist/chunk-ZSMMX3JD.js.map +0 -1
  373. package/dist/library-publish-FFIPWIRM.js.map +0 -1
  374. package/dist/open-library-PZAT3TJA.js +0 -40
  375. package/dist/open-registry-W46UXZ3I.js +0 -32
  376. package/dist/project-EZUH7PUJ.js +0 -79
  377. package/dist/serve-preflight-F7MYF747.js +0 -64
  378. package/dist/serve-preflight-F7MYF747.js.map +0 -1
  379. package/dist/setup-L632QIHV.js.map +0 -1
  380. package/dist/source-36FHMN5V.js +0 -42
  381. package/dist/source-fetch-github-PIO6EMMF.js +0 -4
  382. package/dist/source-manifest-publish-NIXJSJ22.js.map +0 -1
@@ -1,47 +1,48 @@
1
- export { buildWorkspaceMcpServer, buildWorkspaceMcpStdioServer, buildWorkspaceToolDefs, runMcpServerStdio } from '../../chunk-NDUYFYJB.js';
2
- import '../../chunk-V5JHD4I2.js';
1
+ export { buildWorkspaceMcpServer, buildWorkspaceMcpStdioServer, buildWorkspaceToolDefs, runMcpServerStdio } from '../../chunk-KUB4HFGK.js';
2
+ import '../../chunk-74THIMZV.js';
3
+ import '../../chunk-54TVXZP3.js';
3
4
  import '../../chunk-R6O6YWU7.js';
4
- import '../../chunk-6JKIOPT3.js';
5
- import '../../chunk-2BIESC6S.js';
5
+ import '../../chunk-PK5XQBOC.js';
6
+ import '../../chunk-SZPE55SB.js';
6
7
  import '../../chunk-4ZTPYIBE.js';
7
- import '../../chunk-XJYBCDY2.js';
8
8
  import '../../chunk-X5YPJV4N.js';
9
- import '../../chunk-USHB5KEY.js';
10
- import '../../chunk-ZU24LWBI.js';
11
- import '../../chunk-Y4Z7LGSH.js';
12
- import '../../chunk-X4BAYGMT.js';
13
- import '../../chunk-5SKVCMRC.js';
14
- import '../../chunk-6NQDDCIL.js';
15
- import '../../chunk-YTZFSKWL.js';
9
+ import '../../chunk-WXKNM2JJ.js';
10
+ import '../../chunk-LEOXPIC6.js';
11
+ import '../../chunk-DP6YRAPZ.js';
12
+ import '../../chunk-ZIW34FGO.js';
13
+ import '../../chunk-MKTJZLQM.js';
14
+ import '../../chunk-PQF5QHVS.js';
15
+ import '../../chunk-TCWECSEB.js';
16
16
  import '../../chunk-LOO5CB5M.js';
17
- import '../../chunk-2H73V6XR.js';
18
- import '../../chunk-B7CZYFB2.js';
17
+ import '../../chunk-PW3TYWOI.js';
18
+ import '../../chunk-GLMKS6V6.js';
19
19
  import '../../chunk-B4X2N7JQ.js';
20
20
  import '../../chunk-YROR332M.js';
21
- import '../../chunk-BVJU2GKE.js';
21
+ import '../../chunk-4AKR4XPQ.js';
22
+ import '../../chunk-GQ5OYFVD.js';
22
23
  import '../../chunk-6E6PKKAD.js';
23
24
  import '../../chunk-IFGTRL2I.js';
24
- import '../../chunk-XBYSURMK.js';
25
+ import '../../chunk-N36S36OZ.js';
25
26
  import '../../chunk-LNFKL23K.js';
26
27
  import '../../chunk-X3RMRJNR.js';
27
28
  import '../../chunk-M3WPBTGJ.js';
28
29
  import '../../chunk-7RGTAEG6.js';
29
30
  import '../../chunk-NUELZWCF.js';
30
- import '../../chunk-F4NJDSR7.js';
31
- import '../../chunk-57SF6W6E.js';
32
- import '../../chunk-BF422IDP.js';
31
+ import '../../chunk-D5WTOVLG.js';
32
+ import '../../chunk-MGM5EJQQ.js';
33
+ import '../../chunk-4QINFQ27.js';
33
34
  import '../../chunk-4GY63JU6.js';
34
- import '../../chunk-QO7CR3KB.js';
35
+ import '../../chunk-X7DIT65W.js';
35
36
  import '../../chunk-D54T2F54.js';
36
37
  import '../../chunk-5BEFNLOR.js';
37
38
  import '../../chunk-A2ULN3KX.js';
38
- import '../../chunk-L3ZGYSWY.js';
39
+ import '../../chunk-J76LDUDS.js';
39
40
  import '../../chunk-L5VSIPQD.js';
40
41
  import '../../chunk-IG5LZ3WU.js';
41
- import '../../chunk-IY5E7Y5W.js';
42
+ import '../../chunk-ANSZULXH.js';
42
43
  import '../../chunk-RVRB27AN.js';
43
- import '../../chunk-M3P4BYRK.js';
44
- import '../../chunk-J4OYIYFQ.js';
44
+ import '../../chunk-SP5NGNBV.js';
45
+ import '../../chunk-VY6NTFE7.js';
45
46
  import '../../chunk-ICSCSM5D.js';
46
47
  import '../../chunk-DKXNKFKP.js';
47
48
  import '../../chunk-MJHSLODD.js';
@@ -112,7 +112,7 @@ function buildOmpToolSet(plugin) {
112
112
  description: "List all mounts declared in skaile.yaml with their mount status.",
113
113
  parameters: {},
114
114
  handler: async () => {
115
- const { mountList } = await import('../../connectors-GFKMKAXV.js');
115
+ const { mountList } = await import('../../connectors-JQR5RAMC.js');
116
116
  return (await mountList(plugin.connectorManager)).content[0].text;
117
117
  }
118
118
  },
@@ -121,7 +121,7 @@ function buildOmpToolSet(plugin) {
121
121
  description: "Sync a mount (pull latest from remote).",
122
122
  parameters: { mount_id: { type: "string" } },
123
123
  handler: async ({ mount_id }) => {
124
- const { mountSync } = await import('../../connectors-GFKMKAXV.js');
124
+ const { mountSync } = await import('../../connectors-JQR5RAMC.js');
125
125
  return (await mountSync(plugin.connectorManager, mount_id)).content[0].text;
126
126
  }
127
127
  },
@@ -130,7 +130,7 @@ function buildOmpToolSet(plugin) {
130
130
  description: "List all available flow definitions from ai-assets.",
131
131
  parameters: {},
132
132
  handler: async () => {
133
- const { flowList } = await import('../../flows-A4YALSZY.js');
133
+ const { flowList } = await import('../../flows-CYJI3URW.js');
134
134
  return (await flowList(plugin.projectDir)).content[0].text;
135
135
  }
136
136
  },
@@ -139,7 +139,7 @@ function buildOmpToolSet(plugin) {
139
139
  description: "List past flow run sessions for this workspace.",
140
140
  parameters: {},
141
141
  handler: async () => {
142
- const { flowListSessions } = await import('../../flows-A4YALSZY.js');
142
+ const { flowListSessions } = await import('../../flows-CYJI3URW.js');
143
143
  return (await flowListSessions(plugin.projectDir)).content[0].text;
144
144
  }
145
145
  },
@@ -148,7 +148,7 @@ function buildOmpToolSet(plugin) {
148
148
  description: "List all skills in the ai-assets catalog.",
149
149
  parameters: {},
150
150
  handler: async () => {
151
- const { skillList } = await import('../../skills-OY3Y5GKA.js');
151
+ const { skillList } = await import('../../skills-XVHOXOOH.js');
152
152
  return (await skillList(plugin.projectDir)).content[0].text;
153
153
  }
154
154
  },
@@ -157,7 +157,7 @@ function buildOmpToolSet(plugin) {
157
157
  description: "Search skills by name, description, or keywords.",
158
158
  parameters: { query: { type: "string" } },
159
159
  handler: async ({ query }) => {
160
- const { skillSearch } = await import('../../skills-OY3Y5GKA.js');
160
+ const { skillSearch } = await import('../../skills-XVHOXOOH.js');
161
161
  return (await skillSearch(plugin.projectDir, query)).content[0].text;
162
162
  }
163
163
  },
@@ -166,7 +166,7 @@ function buildOmpToolSet(plugin) {
166
166
  description: "Show the full SKILL.md content for a skill.",
167
167
  parameters: { skill_id: { type: "string" } },
168
168
  handler: async ({ skill_id }) => {
169
- const { skillShow } = await import('../../skills-OY3Y5GKA.js');
169
+ const { skillShow } = await import('../../skills-XVHOXOOH.js');
170
170
  return (await skillShow(plugin.projectDir, skill_id)).content[0].text;
171
171
  }
172
172
  },
@@ -175,7 +175,7 @@ function buildOmpToolSet(plugin) {
175
175
  description: "List connectors declared in skaile.yaml as {connected, failed, notice?}. A host-managed mount in `connected` carries `health` {status: ok|stale|failed, errorClass, checkedAt}; if it is not ok, tell the user and do not write to it. `failed` holds connectors that did not connect this session, with the failure reason \u2014 their mount paths are dead directories, not synced workspaces.",
176
176
  parameters: {},
177
177
  handler: async () => {
178
- const { connectorList } = await import('../../connectors-GFKMKAXV.js');
178
+ const { connectorList } = await import('../../connectors-JQR5RAMC.js');
179
179
  return (await connectorList(plugin.connectorManager)).content[0].text;
180
180
  }
181
181
  },
@@ -184,7 +184,7 @@ function buildOmpToolSet(plugin) {
184
184
  description: "Read content from a connector by path.",
185
185
  parameters: { connector_id: { type: "string" }, path: { type: "string" } },
186
186
  handler: async ({ connector_id, path }) => {
187
- const { connectorRead } = await import('../../connectors-GFKMKAXV.js');
187
+ const { connectorRead } = await import('../../connectors-JQR5RAMC.js');
188
188
  return (await connectorRead(plugin.connectorManager, connector_id, path)).content[0].text;
189
189
  }
190
190
  },
@@ -201,7 +201,7 @@ function buildOmpToolSet(plugin) {
201
201
  operation,
202
202
  args
203
203
  }) => {
204
- const { connectorExec } = await import('../../connectors-GFKMKAXV.js');
204
+ const { connectorExec } = await import('../../connectors-JQR5RAMC.js');
205
205
  return (await connectorExec(plugin.connectorManager, connector_id, operation, args ?? {})).content[0].text;
206
206
  }
207
207
  },
@@ -257,7 +257,7 @@ async function handleSlashCommand(plugin, group, args) {
257
257
  }
258
258
  }
259
259
  async function handleFlowCommand(plugin, sub, rest) {
260
- const { flowList, flowShow, flowListSessions, flowGetSession } = await import('../../flows-A4YALSZY.js');
260
+ const { flowList, flowShow, flowListSessions, flowGetSession } = await import('../../flows-CYJI3URW.js');
261
261
  if (!sub || sub === "list") return (await flowList(plugin.projectDir)).content[0].text;
262
262
  if (sub === "show" && rest[0])
263
263
  return (await flowShow(plugin.projectDir, rest[0])).content[0].text;
@@ -267,7 +267,7 @@ async function handleFlowCommand(plugin, sub, rest) {
267
267
  return "Usage: /flow list | show <id> | sessions | session <runId>";
268
268
  }
269
269
  async function handleConnectorCommand(plugin, sub, rest) {
270
- const { connectorList, connectorRead, connectorExec, connectorDescribe } = await import('../../connectors-GFKMKAXV.js');
270
+ const { connectorList, connectorRead, connectorExec, connectorDescribe } = await import('../../connectors-JQR5RAMC.js');
271
271
  if (!sub || sub === "list") return (await connectorList(plugin.connectorManager)).content[0].text;
272
272
  if (sub === "read" && rest[0] && rest[1])
273
273
  return (await connectorRead(plugin.connectorManager, rest[0], rest[1])).content[0].text;
@@ -286,7 +286,7 @@ async function handleConnectorCommand(plugin, sub, rest) {
286
286
  return "Usage: /connector list | read <id> <path> | exec <id> <op> [json-args] | describe <id>";
287
287
  }
288
288
  async function handleSkillCommand(plugin, sub, rest) {
289
- const { skillList, skillShow, skillSearch } = await import('../../skills-OY3Y5GKA.js');
289
+ const { skillList, skillShow, skillSearch } = await import('../../skills-XVHOXOOH.js');
290
290
  if (sub === "run" && rest[0])
291
291
  return (await skillShow(plugin.projectDir, rest[0])).content[0].text;
292
292
  if (!sub || sub === "list") return (await skillList(plugin.projectDir)).content[0].text;
@@ -297,7 +297,7 @@ async function handleSkillCommand(plugin, sub, rest) {
297
297
  return "Usage: /skill list | show <id> | search <query> | run <id>";
298
298
  }
299
299
  async function handleMountsCommand(plugin, sub, rest) {
300
- const { mountList, mountSync, mountStatus } = await import('../../connectors-GFKMKAXV.js');
300
+ const { mountList, mountSync, mountStatus } = await import('../../connectors-JQR5RAMC.js');
301
301
  if (!sub || sub === "list") return (await mountList(plugin.connectorManager)).content[0].text;
302
302
  if (sub === "sync" && rest[0])
303
303
  return (await mountSync(plugin.connectorManager, rest[0])).content[0].text;
@@ -1,4 +1,4 @@
1
- export { PluginStore, WorkspacePlugin, buildClaudePluginFiles, resolveProjectDir } from '../chunk-J4DB5G36.js';
1
+ export { PluginStore, WorkspacePlugin, buildClaudePluginFiles, resolveProjectDir } from '../chunk-AVUJBSFA.js';
2
2
  export { err, ok, okJson } from '../chunk-X5YPJV4N.js';
3
3
  import '../chunk-5BEFNLOR.js';
4
4
  import '../chunk-DKXNKFKP.js';
@@ -1 +1 @@
1
- {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../../../workspace-plugin/src/adapters/mcp.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAsCpD;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1C;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,eAAe,GAAG,gBAAgB,EAAE,CAoOlF;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAW9F;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,4BAA4B,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,CAWxF;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAM9E"}
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../../../workspace-plugin/src/adapters/mcp.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAsCpD;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,OAAO,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CAC1C;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,eAAe,GAAG,gBAAgB,EAAE,CAoOlF;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,CAe9F;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,4BAA4B,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,CAWxF;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAM9E"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skaile/workspaces",
3
- "version": "5.13.0",
3
+ "version": "5.15.0",
4
4
  "description": "Skaile workspaces runtime — types, core, bridge, runner, store, connectors, and supporting layers as one publishable package",
5
5
  "type": "module",
6
6
  "packageManager": "bun@1.3.9",
@@ -614,6 +614,12 @@
614
614
  "import": "./dist/store/vue.js",
615
615
  "default": "./dist/store/vue.js"
616
616
  },
617
+ "./model-endpoint": {
618
+ "skaile-src": "./model-endpoint/src/index.ts",
619
+ "types": "./dist/model-endpoint/src/index.d.ts",
620
+ "import": "./dist/model-endpoint/index.js",
621
+ "default": "./dist/model-endpoint/index.js"
622
+ },
617
623
  "./telemetry": {
618
624
  "skaile-src": "./telemetry/src/index.ts",
619
625
  "types": "./dist/telemetry/src/index.d.ts",
@@ -754,7 +760,8 @@
754
760
  },
755
761
  "peerDependencies": {
756
762
  "@anthropic-ai/claude-agent-sdk": "^0.3.289",
757
- "@openai/codex-sdk": "^0.133.0",
763
+ "@openai/codex-sdk": ">=0.160.0 <0.170.0",
764
+ "@earendil-works/pi-ai": "^1.3.0",
758
765
  "@opentelemetry/api": "^1.9.0",
759
766
  "@opentelemetry/exporter-trace-otlp-http": "^0.218.0",
760
767
  "@opentelemetry/resources": "^2.7.0",
@@ -778,6 +785,9 @@
778
785
  "@anthropic-ai/claude-agent-sdk": {
779
786
  "optional": true
780
787
  },
788
+ "@earendil-works/pi-ai": {
789
+ "optional": true
790
+ },
781
791
  "@openai/codex-sdk": {
782
792
  "optional": true
783
793
  },
@@ -839,7 +849,8 @@
839
849
  "devDependencies": {
840
850
  "@anthropic-ai/claude-agent-sdk": "^0.3.289",
841
851
  "@biomejs/biome": "2.4.15",
842
- "@openai/codex-sdk": "^0.133.0",
852
+ "@earendil-works/pi-ai": "^1.3.0",
853
+ "@openai/codex-sdk": "^0.163.0",
843
854
  "@opentelemetry/api": "^1.9.0",
844
855
  "@opentelemetry/exporter-trace-otlp-http": "^0.218.0",
845
856
  "@opentelemetry/resources": "^2.7.0",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../types/src/manifests/_shared.ts","../types/src/manifests/agent-composition.ts","../types/src/manifests/cron.ts","../types/src/manifests/agent.ts","../types/src/manifests/connector.ts","../types/src/manifests/skill.ts","../types/src/manifests/contract.ts","../types/src/manifests/mcp-server.ts","../types/src/manifests/prompt.ts","../types/src/manifests/persona.ts","../types/src/manifests/preset.ts","../types/src/manifests/ruleset.ts"],"names":["z","z3","z4","z5","z6","z7","z8","z9","z10"],"mappings":"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","file":"chunk-57SF6W6E.js","sourcesContent":["/**\n * Shared manifest frontmatter schemas and types.\n * Common across all asset kinds + Preset.\n */\nimport * as z from \"zod\";\n\n// ---------------------------------------------------------------------------\n// Shared metadata sub-schemas\n// ---------------------------------------------------------------------------\n\n/** Artifact dependency (requires/produces/consumes in skill metadata). */\nexport const ArtifactRefSchema = z.object({\n id: z.string().min(1),\n description: z.string().optional(),\n gate: z.enum([\"hard\", \"soft\"]).optional(),\n path: z.string().optional(),\n});\n\n/** File prerequisite for a skill. */\nexport const FilePrerequisiteSchema = z.object({\n path: z.string().min(1),\n gate: z.enum([\"hard\", \"soft\"]).optional(),\n description: z.string().optional(),\n});\n\n/** User input definition (for skill user_inputs or metadata.prerequisites.inputs_*). */\nexport const UserInputSchema = z.looseObject({\n key: z.string().min(1).optional(),\n id: z.string().min(1).optional(),\n label: z.string().optional(),\n prompt: z.string().optional(),\n type: z.string().optional(),\n required: z.boolean().optional(),\n options: z.array(z.string()).optional(),\n values: z.array(z.union([z.string(), z.number()])).optional(),\n default: z\n .union([z.string(), z.number(), z.boolean(), z.array(z.union([z.string(), z.number()]))])\n .optional(),\n hint: z.string().optional(),\n});\n\n/** Field definition for connectors/mounts. */\nexport const FieldSchema = z.object({\n key: z.string().min(1),\n label: z.string().optional(),\n required: z.boolean().optional(),\n sensitive: z.boolean().optional(),\n type: z.string().optional(),\n default: z.union([z.string(), z.number(), z.boolean()]).optional(),\n});\n\n// ---------------------------------------------------------------------------\n// Common metadata block (appears inside metadata: in most manifest kinds)\n// ---------------------------------------------------------------------------\n\nexport const CommonMetadataSchema = z.looseObject({\n version: z.string().optional(),\n author: z.string().optional(),\n tags: z.array(z.string()).optional(),\n stage: z.enum([\"alpha\", \"beta\", \"stable\", \"deprecated\"]).optional(),\n source: z.string().optional(),\n do_not_invoke: z.boolean().optional(),\n});\n\n// ---------------------------------------------------------------------------\n// Common frontmatter fields (top-level, shared across kinds)\n// ---------------------------------------------------------------------------\n\n/**\n * Fields that can appear at the top level of any manifest's frontmatter.\n * Not all are required -- each kind schema intersects with its own specifics.\n */\nexport const BaseFrontmatterSchema = z.object({\n name: z.string().min(1),\n description: z.string().min(1),\n version: z.string().optional(),\n\n // Catalog identity (populated at discovery or authoring time)\n publisher: z.string().optional(),\n category: z.string().optional(),\n license: z.string().optional(),\n keywords: z.array(z.string()).optional(),\n});\n\n// ---------------------------------------------------------------------------\n// Validation result type\n// ---------------------------------------------------------------------------\n\nexport interface ManifestValidationSuccess<T> {\n ok: true;\n data: T;\n}\n\nexport interface ManifestValidationFailure {\n ok: false;\n errors: Array<{ path: string; message: string }>;\n}\n\nexport type ManifestValidationResult<T> = ManifestValidationSuccess<T> | ManifestValidationFailure;\n\nexport function validateManifest<T>(\n schema: z.ZodType<T>,\n data: unknown,\n): ManifestValidationResult<T> {\n const result = schema.safeParse(data);\n if (result.success) {\n return { ok: true, data: result.data };\n }\n return {\n ok: false,\n errors: result.error.issues.map((issue) => ({\n path: issue.path.join(\".\"),\n message: issue.message,\n })),\n };\n}\n","/**\n * Pure helpers over an agent asset's composition surface: the implicit\n * convention-file items, the deprecation diagnostics for 0.1 inputs, and the\n * slot-id conflict check. No I/O — callers pass file listings / parsed YAML.\n */\n\nimport type { AgentComposeItem } from \"./agent.js\";\n\n/** A structured note about an agent manifest; structurally a core `Diagnostic`. */\nexport interface AgentManifestDiagnostic {\n code: string;\n severity: \"error\" | \"warning\" | \"info\";\n message: string;\n /** Dotted/indexed path into the manifest, e.g. `composes[2].id`. */\n path?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Convention files → implicit composition items\n// ---------------------------------------------------------------------------\n\nconst CONVENTION_FILES: ReadonlyArray<{\n file: string;\n kind: string;\n binding: NonNullable<AgentComposeItem[\"binding\"]>;\n}> = [\n { file: \"SOUL.md\", kind: \"soul\", binding: \"inline-snapshot\" },\n { file: \"RULES.md\", kind: \"ruleset\", binding: \"inline-live\" },\n { file: \"DUTIES.md\", kind: \"prompt\", binding: \"inline-live\" },\n];\n\nconst KNOWLEDGE_DIR = \"knowledge\";\n\nconst stripDotSlash = (ref: string): string => ref.replace(/^\\.\\//, \"\").replace(/\\/+$/, \"\");\n\n/**\n * The implicit composition items of an agent directory: `SOUL.md` → `soul`\n * (inline-snapshot), `RULES.md` → `ruleset` (inline-live), `DUTIES.md` →\n * `prompt` (inline-live), `knowledge/` → `knowledge` (discoverable). An item\n * exists only when its file/directory does. Refs are `./`-relative to the\n * agent directory; order is soul, ruleset, prompt, knowledge.\n *\n * @param entries - Paths relative to the agent directory (files; directories\n * may appear as `knowledge` or as the prefix of `knowledge/<file>`).\n */\nexport function conventionItems(entries: Iterable<string>): AgentComposeItem[] {\n const present = [...entries].map(stripDotSlash);\n const items: AgentComposeItem[] = [];\n for (const { file, kind, binding } of CONVENTION_FILES) {\n if (present.includes(file)) items.push({ kind, ref: `./${file}`, binding });\n }\n if (present.some((p) => p === KNOWLEDGE_DIR || p.startsWith(`${KNOWLEDGE_DIR}/`))) {\n items.push({ kind: \"knowledge\", ref: `./${KNOWLEDGE_DIR}`, binding: \"discoverable\" });\n }\n return items;\n}\n\n/**\n * Effective composition: the convention items followed by the declared\n * `composes`. A declared item that repeats a convention item (same kind, same\n * path) replaces it in place — that is how an author changes its `binding`.\n */\nexport function effectiveComposes(\n composes: readonly AgentComposeItem[] | undefined,\n entries: Iterable<string>,\n): AgentComposeItem[] {\n const declared = composes ?? [];\n const key = (item: AgentComposeItem): string => `${item.kind}\\0${stripDotSlash(item.ref)}`;\n const declaredKeys = new Set(declared.map(key));\n const implicit = conventionItems(entries).filter((item) => !declaredKeys.has(key(item)));\n return [...implicit, ...declared];\n}\n\n// ---------------------------------------------------------------------------\n// Deprecated 0.1 inputs\n// ---------------------------------------------------------------------------\n\nconst DEPRECATED_TOP_LEVEL: ReadonlyArray<{ field: string; replacement: string }> = [\n { field: \"skills\", replacement: \"composes: [{ kind: skill, ref }]\" },\n { field: \"abilities\", replacement: \"composes: [{ kind: skill, ref }]\" },\n { field: \"contracts\", replacement: \"composes: [{ kind: contract, ref }]\" },\n { field: \"persona\", replacement: \"composes: [{ kind: persona, ref }] or SOUL.md\" },\n { field: \"rules\", replacement: \"composes: [{ kind: ruleset, ref }] or RULES.md\" },\n { field: \"knowledge\", replacement: \"composes: [{ kind: knowledge, ref }] or knowledge/\" },\n { field: \"requires\", replacement: \"composes: [{ kind: agent, ref, binding: delegate }]\" },\n { field: \"dependencies\", replacement: \"composes: [{ kind, ref }]\" },\n];\n\nconst DEPRECATED_METADATA: ReadonlyArray<{ field: string; replacement: string }> = [\n { field: \"soul\", replacement: \"SOUL.md or composes: [{ kind: persona, ref }]\" },\n { field: \"orchestrates\", replacement: \"composes: [{ kind: skill|agent, ref }]\" },\n { field: \"routes_to\", replacement: \"composes: [{ kind: agent, ref, binding: delegate }]\" },\n { field: \"knows\", replacement: \"composes: [{ kind: knowledge, ref }]\" },\n];\n\n/**\n * One named `warning` diagnostic per deprecated 0.1 field present on a parsed\n * `agent.yaml`: `deprecated_agent_<field>` for top-level fields and\n * `deprecated_agent_metadata_<field>` for `metadata.*`. Deprecated fields still\n * parse but are not read for composition.\n */\nexport function agentDeprecationDiagnostics(parsed: unknown): AgentManifestDiagnostic[] {\n if (parsed === null || typeof parsed !== \"object\") return [];\n const manifest = parsed as Record<string, unknown>;\n const out: AgentManifestDiagnostic[] = [];\n for (const { field, replacement } of DEPRECATED_TOP_LEVEL) {\n if (manifest[field] === undefined) continue;\n out.push({\n code: `deprecated_agent_${field}`,\n severity: \"warning\",\n message: `agent.yaml field \"${field}\" is deprecated and no longer read; use ${replacement}`,\n path: field,\n });\n }\n const metadata = manifest.metadata;\n if (metadata !== null && typeof metadata === \"object\") {\n for (const { field, replacement } of DEPRECATED_METADATA) {\n if ((metadata as Record<string, unknown>)[field] === undefined) continue;\n out.push({\n code: `deprecated_agent_metadata_${field}`,\n severity: \"warning\",\n message: `agent.yaml field \"metadata.${field}\" is deprecated and no longer read; use ${replacement}`,\n path: `metadata.${field}`,\n });\n }\n }\n return out;\n}\n\n// ---------------------------------------------------------------------------\n// Slot ids\n// ---------------------------------------------------------------------------\n\n/**\n * `composition_conflict` error per `composes[].id` already used by an earlier\n * item. Slot ids name connector / mcp-server slots, so two items must not share one.\n */\nexport function composeSlotDiagnostics(parsed: unknown): AgentManifestDiagnostic[] {\n if (parsed === null || typeof parsed !== \"object\") return [];\n const composes = (parsed as Record<string, unknown>).composes;\n if (!Array.isArray(composes)) return [];\n const firstSeen = new Map<string, number>();\n const out: AgentManifestDiagnostic[] = [];\n composes.forEach((item, i) => {\n if (item === null || typeof item !== \"object\") return;\n const id = (item as Record<string, unknown>).id;\n if (typeof id !== \"string\") return;\n const first = firstSeen.get(id);\n if (first === undefined) {\n firstSeen.set(id, i);\n return;\n }\n out.push({\n code: \"composition_conflict\",\n severity: \"error\",\n message: `composes slot id \"${id}\" is already used by composes[${first}]`,\n path: `composes[${i}].id`,\n });\n });\n return out;\n}\n\n// ---------------------------------------------------------------------------\n// Compose refs\n// ---------------------------------------------------------------------------\n\n/** What a `composes[].ref` points at: a path next to the agent, or a library asset. */\nexport type ComposeRefTarget =\n | { type: \"local\"; path: string }\n | { type: \"asset\"; kind: string; name: string; publisher?: string };\n\n/**\n * Read a `composes[]` item's `ref` the way the dependency walker does: a ref that\n * starts with `.` or `/` is a local path; `scheme://` refs are not library refs\n * (`undefined`); anything else is `[kind:][@publisher/]name[@range][#pin]`, the kind\n * defaulting to the item's own `kind`.\n */\nexport function composeRefTarget(item: {\n kind: string;\n ref: string;\n}): ComposeRefTarget | undefined {\n const ref = item.ref.trim();\n if (ref.startsWith(\".\") || ref.startsWith(\"/\")) return { type: \"local\", path: ref };\n if (ref.includes(\"://\")) return undefined;\n const colon = ref.indexOf(\":\");\n const kind = colon >= 0 ? ref.slice(0, colon).trim() : item.kind;\n let rest = (colon >= 0 ? ref.slice(colon + 1) : ref).trim();\n const pin = rest.indexOf(\"#\");\n if (pin >= 0) rest = rest.slice(0, pin).trim();\n let publisher: string | undefined;\n if (rest.startsWith(\"@\")) {\n const slash = rest.indexOf(\"/\");\n if (slash < 0) return undefined;\n publisher = rest.slice(1, slash);\n rest = rest.slice(slash + 1).trim();\n }\n const at = rest.indexOf(\"@\");\n const name = at >= 0 ? rest.slice(0, at).trim() : rest;\n if (!kind || !name) return undefined;\n return { type: \"asset\", kind: kind === \"mcp\" ? \"mcp-server\" : kind, name, publisher };\n}\n","/**\n * Syntax check for the standard 5-field cron expression a `schedule` trigger\n * carries (`minute hour day-of-month month day-of-week`). Pure; the framework\n * never runs a schedule, the host does, so this only refuses what no cron\n * scheduler can read.\n */\n\nconst MONTH_NAMES = [\n \"jan\",\n \"feb\",\n \"mar\",\n \"apr\",\n \"may\",\n \"jun\",\n \"jul\",\n \"aug\",\n \"sep\",\n \"oct\",\n \"nov\",\n \"dec\",\n];\nconst DAY_NAMES = [\"sun\", \"mon\", \"tue\", \"wed\", \"thu\", \"fri\", \"sat\"];\n\n/** The `@`-macros every common cron accepts. */\nconst CRON_MACROS: Record<string, true> = {\n \"@yearly\": true,\n \"@annually\": true,\n \"@monthly\": true,\n \"@weekly\": true,\n \"@daily\": true,\n \"@midnight\": true,\n \"@hourly\": true,\n};\n\ninterface CronField {\n name: string;\n min: number;\n max: number;\n /** Lowercase names that stand for `min + index`. */\n names?: readonly string[];\n /** First number the names map to (months start at 1, weekdays at 0). */\n nameBase?: number;\n}\n\nconst CRON_FIELDS: readonly CronField[] = [\n { name: \"minute\", min: 0, max: 59 },\n { name: \"hour\", min: 0, max: 23 },\n { name: \"day-of-month\", min: 1, max: 31 },\n { name: \"month\", min: 1, max: 12, names: MONTH_NAMES, nameBase: 1 },\n // 7 is Sunday, as in vixie cron.\n { name: \"day-of-week\", min: 0, max: 7, names: DAY_NAMES, nameBase: 0 },\n];\n\nfunction fieldValue(token: string, field: CronField): number | undefined {\n if (/^\\d+$/.test(token)) return Number(token);\n const idx = field.names?.indexOf(token.toLowerCase()) ?? -1;\n return idx >= 0 ? idx + (field.nameBase ?? 0) : undefined;\n}\n\nfunction fieldProblem(text: string, field: CronField): string | undefined {\n for (const part of text.split(\",\")) {\n const [range, step, extra] = part.split(\"/\");\n if (range === undefined || range === \"\" || extra !== undefined) {\n return `${field.name} \"${text}\" is not valid`;\n }\n if (step !== undefined && !(/^\\d+$/.test(step) && Number(step) > 0)) {\n return `${field.name} step \"${step}\" must be a positive integer`;\n }\n if (range === \"*\") continue;\n const ends = range.split(\"-\");\n if (ends.length > 2) return `${field.name} \"${text}\" is not valid`;\n const values = ends.map((e) => fieldValue(e, field));\n for (let i = 0; i < values.length; i++) {\n const v = values[i];\n if (v === undefined || v < field.min || v > field.max) {\n return `${field.name} \"${ends[i]}\" is out of range ${field.min}-${field.max}`;\n }\n }\n const [lo, hi] = values;\n if (lo !== undefined && hi !== undefined && lo > hi) {\n return `${field.name} range \"${range}\" runs backwards`;\n }\n }\n return undefined;\n}\n\n/**\n * Why `expr` is not a readable 5-field cron expression, or `undefined` when it is.\n * Accepts `*`, lists (`1,15`), ranges (`1-5`), steps (`*\\/10`, `0-30/5`), month and\n * weekday names (`jan`, `mon-fri`) and the `@daily`-style macros.\n *\n * @param expr The `cron` value of a `schedule` trigger.\n */\nexport function cronProblem(expr: string): string | undefined {\n const text = expr.trim();\n if (text.startsWith(\"@\")) {\n return Object.hasOwn(CRON_MACROS, text.toLowerCase())\n ? undefined\n : `unknown cron macro \"${text}\" (use ${Object.keys(CRON_MACROS).join(\", \")})`;\n }\n const parts = text.split(/\\s+/);\n if (parts.length !== CRON_FIELDS.length) {\n return `expected 5 fields (minute hour day-of-month month day-of-week), got ${text === \"\" ? 0 : parts.length}`;\n }\n for (let i = 0; i < CRON_FIELDS.length; i++) {\n const problem = fieldProblem(parts[i] as string, CRON_FIELDS[i] as CronField);\n if (problem) return problem;\n }\n return undefined;\n}\n","import * as z from \"zod\";\nimport { type ManifestValidationResult, validateManifest } from \"./_shared.js\";\nimport { composeRefTarget } from \"./agent-composition.js\";\nimport { cronProblem } from \"./cron.js\";\n\n/** Body the scaffold writes into a new agent's `SOUL.md`; an untouched body is a lint warning. */\nexport const AGENT_BODY_PLACEHOLDER = \"Agent prompt goes here.\";\n\n// ---------------------------------------------------------------------------\n// Model identifier validation + normalization\n// ---------------------------------------------------------------------------\n\n/**\n * Anthropic model aliases recognized by Claude Code and the Claude Agent SDK.\n *\n * - `inherit` — use the parent agent's model (Claude Code only).\n * - `opus` / `sonnet` / `haiku` — auto-rolling pointer to the current top model\n * in that family. Resolved by Claude Code / the Claude SDK at runtime.\n *\n * Use these in `agent.yaml` `model.preferred` for portability across Claude\n * Code and `claude-sdk`. Use a full ID (see {@link ANTHROPIC_FULL_ID_PATTERN})\n * when you need to pin to a specific Anthropic release.\n */\nexport const ANTHROPIC_MODEL_ALIASES = [\"inherit\", \"opus\", \"sonnet\", \"haiku\"] as const;\nexport type AnthropicModelAlias = (typeof ANTHROPIC_MODEL_ALIASES)[number];\n\n/**\n * Anthropic model family segments recognized inside a full model identifier.\n *\n * This is the *ID* vocabulary, deliberately wider than\n * {@link ANTHROPIC_MODEL_ALIASES}: `fable` ships as a real model family\n * (`claude-fable-5`) but has no Claude Code rolling alias, so it belongs here\n * and not there.\n *\n * @since 1.5.0\n */\nexport const ANTHROPIC_MODEL_FAMILIES = [\"opus\", \"sonnet\", \"haiku\", \"fable\"] as const;\nexport type AnthropicModelFamily = (typeof ANTHROPIC_MODEL_FAMILIES)[number];\n\nconst FAMILY_ALT = ANTHROPIC_MODEL_FAMILIES.join(\"|\");\n\n/**\n * Family + version core shared by the full / Bedrock / Vertex patterns.\n *\n * Matches both the Claude 4+ \"family-first\" form (`opus-4-6`, `opus-5`) and the\n * legacy \"version-first\" form used by Claude 3.x and some OpenRouter aliases\n * (`3-5-sonnet`).\n *\n * The version is `\\d+(?:[-.]\\d+)*` — one *or more* numeric components. It used\n * to demand two or more, which rejected every current single-digit-major ID\n * (`claude-opus-5`, `claude-sonnet-5`, `claude-fable-5`). Those are structurally\n * indistinguishable from the older partial IDs the two-component rule was\n * written to catch (`claude-opus-4`), so accepting the current lineup\n * necessarily accepts those too. This validator is structural, not a catalog\n * check — a well-formed ID that no provider serves is caught at dispatch, not\n * here.\n */\nconst FAMILY_VERSION_CORE = `(?:(?:${FAMILY_ALT})-\\\\d+(?:[-.]\\\\d+)*|\\\\d+(?:[-.]\\\\d+)*-(?:${FAMILY_ALT}))`;\n\n/**\n * Regex matching a full Anthropic model identifier, optionally provider-prefixed.\n *\n * Examples that match (family-first):\n * - `claude-opus-5`\n * - `claude-sonnet-5`\n * - `claude-fable-5`\n * - `claude-opus-4-6`\n * - `claude-haiku-4-5-20251001`\n * - `anthropic/claude-sonnet-4.6` (OpenRouter form)\n *\n * Examples that match (version-first / legacy):\n * - `claude-3-5-sonnet-20241022`\n * - `anthropic/claude-3.7-sonnet`\n *\n * Still rejected: a bare family (`claude-opus`), a non-Claude vendor\n * (`gpt-4o`), an unknown family (`claude-turbo-5`).\n */\nexport const ANTHROPIC_FULL_ID_PATTERN = new RegExp(\n `^(?:[a-z0-9-]+\\\\/)?claude-${FAMILY_VERSION_CORE}(?:-\\\\d{8})?$`,\n);\n\n/**\n * Regex matching an Amazon Bedrock-form Anthropic model identifier: an\n * optional region/scope prefix (`us.` / `eu.` / `apac.` / `global.`), the\n * `anthropic.` vendor segment, the same family/version core as\n * {@link ANTHROPIC_FULL_ID_PATTERN}, plus Bedrock's optional\n * `-v<major>[:<minor>]` suffix.\n *\n * Examples that match:\n * - `anthropic.claude-3-5-sonnet-20241022-v2:0`\n * - `us.anthropic.claude-opus-4-6-v1:0`\n * - `anthropic.claude-sonnet-4-5-20250929-v1:0`\n *\n * Does NOT match `anthropic.gpt-4` (not a Claude family) or a bare\n * `us.claude-…` (the `anthropic.` segment is required).\n *\n * @since 1.3.0\n */\nexport const BEDROCK_MODEL_ID_PATTERN = new RegExp(\n `^(?:(?:us|eu|apac|global)\\\\.)?anthropic\\\\.claude-${FAMILY_VERSION_CORE}(?:-\\\\d{8})?(?:-v\\\\d+(?::\\\\d+)?)?$`,\n);\n\n/**\n * Regex matching a Google Vertex AI publisher-form Anthropic identifier —\n * a first-party ID pinned with an `@YYYYMMDD` date suffix instead of the\n * native `-YYYYMMDD` (e.g. `claude-sonnet-4-5@20250929`).\n *\n * @since 1.3.0\n */\nexport const VERTEX_MODEL_ID_PATTERN = new RegExp(`^claude-${FAMILY_VERSION_CORE}@\\\\d{8}$`);\n\n/**\n * Zod schema for a **first-party Anthropic** model identifier: a Claude Code\n * alias, a full Anthropic ID, a Bedrock-form ID (see\n * {@link BEDROCK_MODEL_ID_PATTERN}), or a Vertex `@date`-pinned ID (see\n * {@link VERTEX_MODEL_ID_PATTERN}).\n *\n * This is **not** a universal model-id rule. It is the vocabulary of exactly\n * one wire target — `surface: anthropic-messages` on `transport: direct`\n * pointed at Anthropic's own host — because that is the only endpoint whose\n * model namespace this package knows. Every other endpoint names models it\n * cannot enumerate (a Bedrock ARN, an Azure deployment name,\n * `accounts/fireworks/models/…`, `meta-llama/Llama-3.3-70B`, an Ollama tag),\n * and applying this schema there rejected working configurations. Pick between\n * the two vocabularies with {@link modelIdSchemaForTarget}.\n *\n * Use {@link normalizeAnthropicModel} to coerce an unrecognized value to a safe\n * alias instead of failing.\n */\nexport const ModelIdSchema = z.union([\n z.enum(ANTHROPIC_MODEL_ALIASES),\n z\n .string()\n .regex(\n ANTHROPIC_FULL_ID_PATTERN,\n \"Invalid Anthropic model ID. Use an alias (opus | sonnet | haiku | inherit), a full ID (e.g. claude-opus-5, claude-sonnet-4-6), a Bedrock ID (e.g. us.anthropic.claude-opus-4-6-v1:0), or a Vertex ID (e.g. claude-sonnet-4-5@20250929).\",\n ),\n z.string().regex(BEDROCK_MODEL_ID_PATTERN),\n z.string().regex(VERTEX_MODEL_ID_PATTERN),\n]);\n\n/**\n * Hosts that serve the first-party Anthropic Messages API. An\n * `anthropic-messages` entry pointed anywhere else — a gateway, LiteLLM, an\n * Azure AI Foundry deployment — speaks the same wire protocol over its own\n * model namespace.\n *\n * @since 3.21.0\n */\nexport const ANTHROPIC_FIRST_PARTY_HOSTS: readonly string[] = [\"api.anthropic.com\"];\n\n/**\n * The slice of a provider-registry `llm` entry that decides which model-id\n * vocabulary applies.\n *\n * Structurally a subset of `AIProviderLlmEntry`\n * (`@skaile/workspaces/core/provider-registry`), so a registry entry can be\n * passed straight in. The fields are plain strings because this module sits\n * *below* the registry in the dependency graph and must not import it; the\n * enums live in exactly one place, and this is not it.\n *\n * @since 3.21.0\n */\nexport interface ModelIdTarget {\n /** omp `api` value — `anthropic-messages`, `openai-completions`, … */\n surface?: string;\n /** `direct` when absent. */\n transport?: string;\n /** Resolved endpoint: `resolveEntryBaseUrl(entry)`, or the preset literal. */\n base_url?: string;\n}\n\n/**\n * True when `baseUrl` is the first-party Anthropic API.\n *\n * An absent URL counts: an `anthropic-messages` entry with no endpoint of its\n * own is the first-party API (the catalog layer fills in\n * `https://api.anthropic.com` during the merge). A URL that will not parse is\n * treated as *not* first-party — guessing the other way would reject ids that\n * whatever is at the other end serves.\n *\n * @since 3.21.0\n */\nexport function isFirstPartyAnthropicEndpoint(baseUrl?: string): boolean {\n if (!baseUrl) return true;\n let host: string;\n try {\n host = new URL(baseUrl).hostname.toLowerCase();\n } catch {\n return false;\n }\n return ANTHROPIC_FIRST_PARTY_HOSTS.includes(host);\n}\n\n/**\n * Whether `target` demands an Anthropic-shaped model id.\n *\n * Exactly one combination does: the Anthropic Messages wire, spoken directly,\n * to Anthropic's own host. Every gateway transport (`bedrock`, `vertex`,\n * `foundry`, `azure-openai`) addresses the same models under a renamed\n * namespace — an inference-profile ARN, a publisher path, a deployment name —\n * and an `anthropic-messages` proxy owns its namespace outright.\n *\n * An absent `target` is the pre-registry default: first-party Anthropic is what\n * the Claude drivers talk to when nothing says otherwise, so the strict\n * vocabulary still applies there and nothing that validates today stops\n * validating.\n *\n * @since 3.21.0\n */\nexport function requiresAnthropicModelId(target?: ModelIdTarget): boolean {\n if (!target) return true;\n if (target.surface !== \"anthropic-messages\") return false;\n if ((target.transport ?? \"direct\") !== \"direct\") return false;\n return isFirstPartyAnthropicEndpoint(target.base_url);\n}\n\n/**\n * Any non-empty, whitespace-free model id — the vocabulary of every endpoint\n * whose model namespace belongs to the operator rather than to us.\n *\n * @since 3.21.0\n */\nexport const FreeFormModelIdSchema = z\n .string()\n .regex(/^\\S+$/, \"Model ID must be a non-empty string with no whitespace.\");\n\n/**\n * The model-id schema a given wire target enforces: {@link ModelIdSchema} for\n * first-party Anthropic, {@link FreeFormModelIdSchema} everywhere else.\n *\n * @since 3.21.0\n */\nexport function modelIdSchemaForTarget(target?: ModelIdTarget): z.ZodType<string> {\n return requiresAnthropicModelId(target)\n ? (ModelIdSchema as z.ZodType<string>)\n : (FreeFormModelIdSchema as z.ZodType<string>);\n}\n\n/**\n * Contextual model-ID schema for the legacy `cloud` dimension.\n *\n * `default` (or absent) is the first-party Anthropic API, so the strict\n * vocabulary applies. Every other value either renames the namespace\n * (`bedrock` ARNs, `vertex` publisher paths, `azure` deployments) or is an\n * unknowable proxy (`gateway`) — all free-form, the same answer\n * {@link modelIdSchemaForTarget} gives for the equivalent registry entry.\n *\n * Superseded by {@link modelIdSchemaForTarget}; it goes when the rest of the\n * `cloud` surface does.\n *\n * @since 1.3.0\n */\nexport function modelIdSchemaForCloud(cloud?: string): z.ZodType<string> {\n return !cloud || cloud === \"default\"\n ? modelIdSchemaForTarget()\n : (FreeFormModelIdSchema as z.ZodType<string>);\n}\n\n/**\n * Normalize an arbitrary model string to a safe Claude Code value.\n *\n * - If `input` is a recognized alias or a full / Bedrock-form / Vertex-form ID,\n * returns it unchanged.\n * - If `input` looks like `claude-<family>-...` but doesn't match any full-ID\n * regex (e.g. the broken `claude-opus-4`), returns the family alias.\n * - Otherwise returns `fallback` (default `\"sonnet\"` — Claude Code's default).\n *\n * Used by renderers that target Claude Code / the Claude SDK to coerce stale\n * or malformed model fields into a working alias rather than propagating a\n * silent runtime failure. All full-pattern checks run BEFORE the family\n * fallback so a valid Bedrock/Vertex ID is never downgraded to an alias.\n */\nexport function normalizeAnthropicModel(\n input: string | undefined | null,\n fallback: AnthropicModelAlias = \"sonnet\",\n): string {\n if (!input) return fallback;\n if ((ANTHROPIC_MODEL_ALIASES as readonly string[]).includes(input)) return input;\n if (ANTHROPIC_FULL_ID_PATTERN.test(input)) return input;\n if (BEDROCK_MODEL_ID_PATTERN.test(input) || VERTEX_MODEL_ID_PATTERN.test(input)) return input;\n // Family fallback is restricted to the rolling *aliases* — `fable` has no\n // Claude Code alias, so a malformed `claude-fable-*` falls through to\n // `fallback` rather than to an alias the runtime would reject.\n const familyMatch = input.match(/claude-(opus|sonnet|haiku)/i);\n if (familyMatch) return familyMatch[1]!.toLowerCase() as AnthropicModelAlias;\n return fallback;\n}\n\n/**\n * A model *selector* as a manifest writes it: `@role`,\n * `<providerId>/<modelId>`, a bare provider-side id, or an Anthropic alias.\n * Resolved against the provider registry — and only then checked against the\n * selected entry's own vocabulary — by `resolveManifestModel`\n * (`@skaile/workspaces/bridge`).\n *\n * Structural on purpose. An agent manifest is portable across providers: it\n * cannot know which registry entry will serve it, so an id-vocabulary check\n * here would enforce one endpoint's namespace on every other one. That check\n * belongs to {@link modelIdSchemaForTarget}, at the point where the endpoint is\n * known.\n *\n * @since 3.21.0\n */\nexport const ModelSelectorSchema = z\n .string()\n .regex(\n /^\\S+$/,\n 'Model selector must be a non-empty string with no whitespace: \"@role\", \"provider/model\", a model ID, or an Anthropic alias.',\n );\n\nconst ModelConfigSchema = z.looseObject({\n preferred: ModelSelectorSchema.optional(),\n fallback: z.array(ModelSelectorSchema).optional(),\n constraints: z\n .looseObject({\n temperature: z.number().optional(),\n max_tokens: z.number().optional(),\n })\n .optional(),\n});\n\n// ---------------------------------------------------------------------------\n// Composition binding types (Task 1.7)\n// ---------------------------------------------------------------------------\n\n/** Bindings for content items: how the asset's bytes reach the prompt / tool surface. */\nexport const ContentBindingValues = [\"discoverable\", \"inline-live\", \"inline-snapshot\"] as const;\n/** Bindings for `kind: agent` items: how the sub-agent is invoked. */\nexport const AgentBindingValues = [\"delegate\", \"run\"] as const;\nexport const BindingValues = [...ContentBindingValues, ...AgentBindingValues] as const;\nexport const BindingSchema = z.enum(BindingValues);\nexport type Binding = z.infer<typeof BindingSchema>;\n\n/** Slot ids name a composed connector / mcp-server inside one agent: `composition.<id>`, `<id>.<operation>`. */\nexport const SLOT_ID_PATTERN = /^[a-z][a-z0-9_-]*$/;\n\n/** Kinds whose compose item MUST carry a slot `id`. */\nexport const SLOT_ID_REQUIRED_KINDS: Readonly<Record<string, true>> = {\n connector: true,\n \"mcp-server\": true,\n};\n\nconst SlotIdSchema = z\n .string()\n .regex(SLOT_ID_PATTERN, \"id must match [a-z][a-z0-9_-]* (lowercase, starts with a letter)\");\n\n/**\n * A single composition item within an agent's `composes:` field.\n *\n * - `kind`: the asset kind being composed. Any string here; `skaile validate`\n * checks it against the kind registry (plus the `soul` pseudo-kind).\n * - `ref`: asset ref (e.g. '@skaile/gmail@^1') or a local path.\n * - `id`: slot id; required for `connector` and `mcp-server` items.\n * - `as`: local alias under which the item is exposed (e.g. a sub-agent name); also the rendered\n * file name, so it must match `[a-z][a-z0-9_-]*`.\n * - `instance`: optional Library Instance ref to reuse (e.g. 'library://personal/instances/uuid')\n * - `config`: free-form per-item configuration.\n * - `binding`: how the asset integrates into the agent runtime; defaults per-kind.\n * `delegate | run` apply to `kind: agent` only.\n */\nexport const AgentComposeItemSchema = z\n .object({\n kind: z.string().min(1),\n ref: z.string().min(1),\n id: SlotIdSchema.optional(),\n as: z\n .string()\n .regex(\n SLOT_ID_PATTERN,\n \"as must match [a-z][a-z0-9_-]* (it names a rendered file: no path separators or dots)\",\n )\n .optional(),\n instance: z.string().optional(),\n config: z.record(z.string(), z.unknown()).optional(),\n binding: BindingSchema.optional(),\n })\n .superRefine((item, ctx) => {\n if (item.kind === \"memory\" || item.kind === \"trigger\") {\n ctx.addIssue({\n code: \"custom\",\n path: [\"kind\"],\n message: `\"${item.kind}\" is not a composes kind; declare ${item.kind === \"memory\" ? \"memory\" : \"triggers\"} as a top-level field`,\n });\n }\n if (Object.hasOwn(SLOT_ID_REQUIRED_KINDS, item.kind) && item.id === undefined) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"id\"],\n message: `composes item of kind \"${item.kind}\" requires a slot id`,\n });\n }\n if (item.binding === undefined) return;\n const isAgentBinding = (AgentBindingValues as readonly string[]).includes(item.binding);\n if (item.kind === \"agent\" && !isAgentBinding) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"binding\"],\n message: `composes item of kind \"agent\" accepts binding \"delegate\" or \"run\", not \"${item.binding}\"`,\n });\n } else if (item.kind !== \"agent\" && isAgentBinding) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"binding\"],\n message: `binding \"${item.binding}\" is only valid for kind \"agent\"`,\n });\n }\n });\n\nexport type AgentComposeItem = z.infer<typeof AgentComposeItemSchema>;\n\n// ---------------------------------------------------------------------------\n// Agent manifest\n// ---------------------------------------------------------------------------\n\n/**\n * Declared tool restrictions for an agent.\n *\n * `allowed` is an allowlist: when non-empty, the agent may invoke only these\n * tools. `denied` is a denylist applied on top. An absent block (or two empty\n * arrays) means \"no restriction\" — the harness's full default toolset.\n *\n * Tool names are written in the canonical Claude Code vocabulary (`Read`,\n * `Write`, `Bash`, `WebSearch`, …). Each driver maps them onto its own\n * runtime: `claude-sdk` passes them through as `allowedTools` /\n * `disallowedTools`; the omp driver translates them to omp's built-in tool\n * names and passes `--tools`. A name a harness does not recognize is dropped\n * for that harness rather than failing the manifest, because the same manifest\n * is expected to run on more than one harness.\n *\n * This was previously an undeclared field that survived only because\n * {@link AgentManifestSchema} is a loose object — so `AgentManifest.tools` was\n * typed `unknown` and every consumer read it through a cast.\n *\n * @since 1.5.0\n */\nexport const AgentToolsSchema = z.looseObject({\n /** Tool names the agent may invoke. Empty or absent means \"no allowlist\". */\n allowed: z.array(z.string().min(1)).optional(),\n /** Tool names the agent must not invoke. Applied after `allowed`. */\n denied: z.array(z.string().min(1)).optional(),\n});\n\nexport type AgentTools = z.infer<typeof AgentToolsSchema>;\n\n// ---------------------------------------------------------------------------\n// Spec 0.2: lifecycle, io, memory, triggers, capabilities\n// ---------------------------------------------------------------------------\n\n/** `standing` = long-running identity; `role` = short-lived, callable with typed I/O. */\nexport const AgentLifecycleValues = [\"standing\", \"role\"] as const;\nexport const AgentLifecycleSchema = z.enum(AgentLifecycleValues);\nexport type AgentLifecycle = z.infer<typeof AgentLifecycleSchema>;\n\n/** JSON Schema (object form) describing a role's input or output. */\nconst JsonSchemaObject = z.record(z.string(), z.unknown());\n\n/** Typed I/O of a role agent, validated by `agent.run`. */\nexport const AgentIoSchema = z.looseObject({\n input: JsonSchemaObject.optional(),\n output: JsonSchemaObject.optional(),\n});\nexport type AgentIo = z.infer<typeof AgentIoSchema>;\n\nexport const MemoryScopeValues = [\"instance\", \"user\", \"workspace\"] as const;\nexport const MemoryScopeSchema = z.enum(MemoryScopeValues);\nexport type MemoryScope = z.infer<typeof MemoryScopeSchema>;\n\n/** A named, scoped, bounded text block the host stores and the runner renders. */\nexport const MemoryBlockSchema = z.looseObject({\n name: z.string().regex(SLOT_ID_PATTERN, \"block name must match [a-z][a-z0-9_-]*\"),\n scope: MemoryScopeSchema,\n max_chars: z.number().int().positive(),\n /** Convention file the block is seeded from (e.g. `SOUL.md`). */\n source: z.string().min(1).optional(),\n});\nexport type MemoryBlock = z.infer<typeof MemoryBlockSchema>;\n\n/** Top-level memory declaration. Memory is never a `composes:` kind. */\nexport const AgentMemorySchema = z.looseObject({\n blocks: z.array(MemoryBlockSchema).optional(),\n /** Hint only; the host decides. */\n consolidation: z\n .looseObject({\n strategy: z.string().min(1),\n threshold: z.number().int().positive().optional(),\n })\n .optional(),\n});\nexport type AgentMemory = z.infer<typeof AgentMemorySchema>;\n\nconst TriggerIdSchema = z.string().regex(SLOT_ID_PATTERN, \"trigger id must match [a-z][a-z0-9_-]*\");\n\n/**\n * Default triggers declared on the asset; an instance may override or extend\n * them by `id`. Triggers are never a `composes:` kind.\n */\nexport const AgentTriggerSchema = z.discriminatedUnion(\"kind\", [\n z.looseObject({\n kind: z.literal(\"schedule\"),\n id: TriggerIdSchema,\n cron: z.string().min(1),\n prompt: z.string().min(1),\n timezone: z.string().min(1).optional(),\n enabled: z.boolean().optional(),\n }),\n z.looseObject({\n kind: z.literal(\"webhook\"),\n id: TriggerIdSchema,\n prompt: z.string().min(1),\n enabled: z.boolean().optional(),\n }),\n z.looseObject({\n kind: z.literal(\"channel\"),\n id: TriggerIdSchema,\n /** Which channel messages fire the trigger (e.g. `mention`). */\n when: z.string().min(1),\n prompt: z.string().min(1).optional(),\n enabled: z.boolean().optional(),\n }),\n z.looseObject({\n kind: z.literal(\"event\"),\n id: TriggerIdSchema,\n /** Protocol / host event name (e.g. `session_error`). */\n event: z.string().min(1),\n prompt: z.string().min(1).optional(),\n enabled: z.boolean().optional(),\n }),\n]);\nexport type AgentTrigger = z.infer<typeof AgentTriggerSchema>;\n\n/** A capability the agent needs at runtime; `connector` is a compose slot id. */\nexport const AgentCapabilityRequirementSchema = z.looseObject({\n name: z.string().min(1),\n connector: SlotIdSchema.optional(),\n required: z.boolean().default(false),\n});\nexport type AgentCapabilityRequirement = z.infer<typeof AgentCapabilityRequirementSchema>;\n\n// ---------------------------------------------------------------------------\n// Deprecated 0.1 inputs — still parsed, each yields a diagnostic\n// (see `agentDeprecationDiagnostics`); none is read for composition.\n// ---------------------------------------------------------------------------\n\n/** @deprecated 0.1 `requires[]` entry; replaced by `composes[{kind: agent}]`. */\nconst DeprecatedRequiresItemSchema = z.looseObject({\n name: z.string(),\n source: z.string().optional(),\n version: z.string().optional(),\n});\n\nexport const AgentManifestSchema = z\n .looseObject({\n spec_version: z.string().optional(),\n name: z.string().min(1),\n version: z.string().optional(),\n description: z.string().min(1),\n extends: z.string().optional(),\n\n model: ModelConfigSchema.optional(),\n tools: AgentToolsSchema.optional(),\n delegation: z.looseObject({ mode: z.string() }).optional(),\n runtime: z\n .looseObject({\n max_turns: z.number().optional(),\n timeout: z.number().optional(),\n /** Role instances only: render the harness sub-agent as a background agent. */\n background: z.boolean().optional(),\n })\n .optional(),\n\n author: z.string().optional(),\n license: z.string().optional(),\n tags: z.array(z.string()).optional(),\n keywords: z.array(z.string()).optional(),\n\n // spec 0.2\n /** Default `standing`. */\n lifecycle: AgentLifecycleSchema.optional(),\n /** Required when `lifecycle: role`. */\n io: AgentIoSchema.optional(),\n memory: AgentMemorySchema.optional(),\n triggers: z.array(AgentTriggerSchema).optional(),\n capabilities: z.array(AgentCapabilityRequirementSchema).optional(),\n composes: z.array(AgentComposeItemSchema).optional(),\n\n metadata: z.record(z.string(), z.unknown()).optional(),\n\n // Deprecated 0.1 inputs.\n /** @deprecated Use `composes[{kind: skill}]`. */\n skills: z.array(z.string()).optional(),\n /** @deprecated Use `composes[{kind: skill}]`. */\n abilities: z.array(z.string()).optional(),\n /** @deprecated Use `composes[{kind: contract}]`. */\n contracts: z.array(z.string()).optional(),\n /** @deprecated Use `composes[{kind: persona}]`. */\n persona: z.array(z.string()).optional(),\n /** @deprecated Use `composes[{kind: ruleset}]`. */\n rules: z.array(z.string()).optional(),\n /** @deprecated Use `composes[{kind: knowledge}]`. */\n knowledge: z.array(z.string()).optional(),\n /** @deprecated Use `composes[{kind: agent}]`. */\n requires: z.array(DeprecatedRequiresItemSchema).optional(),\n })\n .superRefine((manifest, ctx) => {\n if (manifest.lifecycle === \"role\" && manifest.io === undefined) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"io\"],\n message: 'lifecycle \"role\" requires an io block ({ input, output } JSON Schemas)',\n });\n }\n addDuplicateIssues(\n ctx,\n \"triggers\",\n (manifest.triggers ?? []).map((t) => t.id),\n \"trigger id\",\n );\n addDuplicateIssues(\n ctx,\n \"memory.blocks\",\n (manifest.memory?.blocks ?? []).map((b) => b.name),\n \"memory block name\",\n );\n (manifest.triggers ?? []).forEach((trigger, i) => {\n if (trigger.kind !== \"schedule\") return;\n const problem = cronProblem(trigger.cron);\n if (problem) {\n ctx.addIssue({\n code: \"custom\",\n path: [\"triggers\", i, \"cron\"],\n message: `cron \"${trigger.cron}\" is not a valid cron expression: ${problem}`,\n });\n }\n });\n // A capability's `connector` names a slot some composes item declares by `id`.\n const slotIds = new Set<string>();\n for (const item of manifest.composes ?? []) {\n if (item.id !== undefined && Object.hasOwn(SLOT_ID_REQUIRED_KINDS, item.kind)) {\n slotIds.add(item.id);\n }\n }\n (manifest.capabilities ?? []).forEach((cap, i) => {\n if (cap.connector === undefined || slotIds.has(cap.connector)) return;\n ctx.addIssue({\n code: \"custom\",\n path: [\"capabilities\", i, \"connector\"],\n message:\n `capability \"${cap.name}\" names connector slot \"${cap.connector}\", but no composes item ` +\n `of kind connector or mcp-server has id \"${cap.connector}\"` +\n (slotIds.size > 0 ? ` (declared slots: ${[...slotIds].join(\", \")})` : \"\"),\n });\n });\n // An agent cannot compose itself: it would resolve to its own sub-agent forever.\n (manifest.composes ?? []).forEach((item, i) => {\n if (item.kind !== \"agent\") return;\n const target = composeRefTarget(item);\n if (target?.type !== \"asset\" || target.kind !== \"agent\" || target.name !== manifest.name) {\n return;\n }\n const publisher = (manifest as Record<string, unknown>).publisher;\n if (\n target.publisher !== undefined &&\n typeof publisher === \"string\" &&\n target.publisher !== publisher\n ) {\n return;\n }\n ctx.addIssue({\n code: \"custom\",\n path: [\"composes\", i, \"ref\"],\n message: `agent \"${manifest.name}\" composes itself (${item.ref}); an agent cannot be its own sub-agent`,\n });\n });\n });\n\nfunction addDuplicateIssues(\n ctx: z.RefinementCtx,\n field: string,\n values: readonly string[],\n label: string,\n): void {\n const seen = new Set<string>();\n values.forEach((value, i) => {\n if (seen.has(value)) {\n ctx.addIssue({\n code: \"custom\",\n path: [...field.split(\".\"), i],\n message: `duplicate ${label} \"${value}\"`,\n });\n }\n seen.add(value);\n });\n}\n\nexport type AgentManifest = z.infer<typeof AgentManifestSchema>;\n\nexport function validateAgent(data: unknown): ManifestValidationResult<AgentManifest> {\n return validateManifest(AgentManifestSchema, data);\n}\n","import * as z from \"zod\";\nimport { FieldSchema, type ManifestValidationResult, validateManifest } from \"./_shared.js\";\n\nexport const ConnectorManifestSchema = z.looseObject({\n name: z.string().min(1),\n description: z.string().min(1),\n version: z.string().optional(),\n entry: z.string().min(1),\n npm_deps: z\n .object({\n required: z.array(z.string()).optional(),\n optional: z.array(z.string()).optional(),\n })\n .optional(),\n fields: z.array(FieldSchema).optional(),\n health_check: z.string().nullable().optional(),\n keywords: z.array(z.string()).optional(),\n license: z.string().optional(),\n});\n\nexport type ConnectorManifest = z.infer<typeof ConnectorManifestSchema>;\n\nexport function validateConnector(data: unknown): ManifestValidationResult<ConnectorManifest> {\n return validateManifest(ConnectorManifestSchema, data);\n}\n","import * as z from \"zod\";\nimport {\n ArtifactRefSchema,\n CommonMetadataSchema,\n FilePrerequisiteSchema,\n type ManifestValidationResult,\n UserInputSchema,\n validateManifest,\n} from \"./_shared.js\";\n\nconst SkillMetadataSchema = CommonMetadataSchema.extend({\n parameters: z.record(z.string(), z.unknown()).optional(),\n artifacts: z\n .object({\n requires: z.array(ArtifactRefSchema).optional(),\n produces: z.array(ArtifactRefSchema).optional(),\n consumes: z.array(ArtifactRefSchema).optional(),\n })\n .optional(),\n prerequisites: z\n .object({\n files: z.array(FilePrerequisiteSchema).optional(),\n inputs_required: z.array(UserInputSchema).optional(),\n inputs_optional: z.array(UserInputSchema).optional(),\n // Parsed by the resolver's parseSkillRequirements; Zod would strip them otherwise.\n reads: z.array(z.object({ path: z.string(), description: z.string().optional() })).optional(),\n produces: z\n .array(z.object({ path: z.string(), description: z.string().optional() }))\n .optional(),\n resources: z\n .array(\n z.object({\n id: z.string(),\n operations: z.array(z.string()).optional(),\n optional: z.boolean().optional(),\n description: z.string().optional(),\n }),\n )\n .optional(),\n connectors: z\n .array(\n z.object({\n driver: z.string(),\n access: z.enum([\"read-only\", \"read-write\"]).optional(),\n }),\n )\n .optional(),\n })\n .optional(),\n produces: z.array(z.object({ path: z.string(), description: z.string().optional() })).optional(),\n});\n\n/**\n * Prefix `skaile library create` writes into a new skill's `description`. The\n * Agent Skills spec requires a real description (what the skill does and when\n * to use it), so a description that still starts with this marker is rejected.\n */\nexport const SKILL_DESCRIPTION_PLACEHOLDER_PREFIX = \"TODO:\";\n\n/** Full placeholder description the scaffold writes when `--description` is omitted. */\nexport const SKILL_DESCRIPTION_PLACEHOLDER = `${SKILL_DESCRIPTION_PLACEHOLDER_PREFIX} describe what this skill does and when to use it.`;\n\n/** Body the scaffold writes into a new SKILL.md; an untouched body is a lint warning. */\nexport const SKILL_BODY_PLACEHOLDER = \"Skill prompt goes here.\";\n\nexport const SkillManifestSchema = z.looseObject({\n name: z.string().min(1),\n description: z\n .string()\n .refine((d) => d.trim().length > 0, {\n message:\n \"description is empty — say what the skill does and when to use it (Agent Skills spec: 1–1024 chars)\",\n })\n .refine((d) => !d.trim().startsWith(SKILL_DESCRIPTION_PLACEHOLDER_PREFIX), {\n message: `description is still the scaffold placeholder (${SKILL_DESCRIPTION_PLACEHOLDER_PREFIX} …) — say what the skill does and when to use it`,\n }),\n version: z.string().optional(),\n license: z.string().optional(),\n compatibility: z.string().optional(),\n keywords: z.array(z.string()).optional(),\n // agentskills.io standard field. Kept as `unknown` (not `string`) so a legacy\n // array form never hard-fails validateSkill — the string-typing rule is\n // advisory, owned by checkAgentSkillConformance (warn, not error).\n \"allowed-tools\": z.unknown().optional(),\n\n // Legacy fields (SKILL.md convention)\n source: z.string().optional(),\n user_inputs: z.array(UserInputSchema).optional(),\n reads_from: z.array(z.string()).optional(),\n writes_to: z.array(z.string()).optional(),\n\n metadata: SkillMetadataSchema.optional(),\n});\n\nexport type SkillManifest = z.infer<typeof SkillManifestSchema>;\n\nexport function validateSkill(data: unknown): ManifestValidationResult<SkillManifest> {\n return validateManifest(SkillManifestSchema, data);\n}\n","import * as z from \"zod\";\nimport {\n CommonMetadataSchema,\n type ManifestValidationResult,\n validateManifest,\n} from \"./_shared.js\";\n\n/** Body the scaffold writes into a new `CONTRACT.md`; an untouched body is a lint warning. */\nexport const CONTRACT_BODY_PLACEHOLDER = \"Contract goes here.\";\n\nexport const ContractManifestSchema = z.looseObject({\n name: z.string().min(1),\n description: z.string().min(1),\n version: z.string().optional(),\n keywords: z.array(z.string()).optional(),\n license: z.string().optional(),\n metadata: CommonMetadataSchema.optional(),\n});\n\nexport type ContractManifest = z.infer<typeof ContractManifestSchema>;\n\nexport function validateContract(data: unknown): ManifestValidationResult<ContractManifest> {\n return validateManifest(ContractManifestSchema, data);\n}\n","import * as z from \"zod\";\nimport { type ManifestValidationResult, validateManifest } from \"./_shared.js\";\n\nexport const McpServerManifestSchema = z.looseObject({\n name: z.string().min(1),\n description: z.string().min(1),\n version: z.union([z.string(), z.number()]).optional(),\n // \"http\" is the runtime literal the runner honours (StreamableHTTPClientTransport);\n // \"streamable-http\" is accepted as an MCP-spec-aligned alias and normalized to\n // \"http\" in mcpDeclFromCatalogEntry. Keep both until the alias is retired.\n transport: z.enum([\"stdio\", \"sse\", \"http\", \"streamable-http\"]).optional(),\n command: z.string().optional(),\n args: z.array(z.string()).optional(),\n env: z.record(z.string(), z.string()).optional(),\n url: z.string().optional(),\n headers: z.record(z.string(), z.string()).optional(),\n /** Remote only: PEM CA certificate (or a secret ref to one) pinned for this server's TLS. */\n ca: z.string().optional(),\n keywords: z.array(z.string()).optional(),\n license: z.string().optional(),\n // Optional runnable payload fetched + sha256-verified by the platform\n // session-materializer into the asset dir at materialize time (e.g. a bundled\n // server.js shipped as a GitHub release asset). `dest` defaults to the URL\n // basename.\n payload: z\n .object({\n // https only — bare `z.string().url()` also accepts file:/data:/javascript: schemes.\n url: z\n .string()\n .url()\n .refine((u) => u.startsWith(\"https://\"), { message: \"payload url must be https\" }),\n sha256: z.string().regex(/^[a-f0-9]{64}$/),\n // Plain filename, no path separators — schema-level guard against a traversal dest.\n dest: z\n .string()\n .regex(/^[^/\\\\]+$/, { message: \"dest must be a plain filename, not a path\" })\n .optional(),\n })\n .optional(),\n});\n\nexport type McpServerManifest = z.infer<typeof McpServerManifestSchema>;\n\nexport function validateMcpServer(data: unknown): ManifestValidationResult<McpServerManifest> {\n return validateManifest(McpServerManifestSchema, data);\n}\n","import * as z from \"zod\";\nimport {\n CommonMetadataSchema,\n type ManifestValidationResult,\n validateManifest,\n} from \"./_shared.js\";\n\n/** Body the scaffold writes into a new `<name>.prompt.md`; an untouched body is a lint warning. */\nexport const PROMPT_BODY_PLACEHOLDER = \"Prompt goes here.\";\n\nexport const PromptManifestSchema = z.looseObject({\n name: z.string().min(1),\n description: z.string().min(1),\n version: z.string().optional(),\n keywords: z.array(z.string()).optional(),\n license: z.string().optional(),\n metadata: CommonMetadataSchema.optional(),\n});\n\nexport type PromptManifest = z.infer<typeof PromptManifestSchema>;\n\nexport function validatePrompt(data: unknown): ManifestValidationResult<PromptManifest> {\n return validateManifest(PromptManifestSchema, data);\n}\n","import * as z from \"zod\";\nimport {\n CommonMetadataSchema,\n type ManifestValidationResult,\n validateManifest,\n} from \"./_shared.js\";\n\nexport const PersonaManifestSchema = z.looseObject({\n name: z.string().min(1),\n description: z.string().min(1),\n version: z.string().optional(),\n keywords: z.array(z.string()).optional(),\n license: z.string().optional(),\n metadata: CommonMetadataSchema.optional(),\n});\n\nexport type PersonaManifest = z.infer<typeof PersonaManifestSchema>;\n\nexport function validatePersona(data: unknown): ManifestValidationResult<PersonaManifest> {\n return validateManifest(PersonaManifestSchema, data);\n}\n","/**\n * Polymorphic Preset manifest schema.\n *\n * A Preset is the unified composition + configuration primitive. Items can be:\n * - Asset ref (plain or with inline config + placeholders)\n * - Library Instance ref (`library://tier/instances/id`)\n * - Nested Preset ref (resolved recursively, max depth 3)\n *\n * Apply semantics derive from ref type, not an explicit mode field.\n */\nimport * as z from \"zod\";\nimport { type ManifestValidationResult, validateManifest } from \"./_shared.js\";\n\n// ---------------------------------------------------------------------------\n// Placeholder types\n// ---------------------------------------------------------------------------\n\nconst PlaceholderTypeValues = [\n \"text\",\n \"multiline\",\n \"secret\",\n \"number\",\n \"boolean\",\n \"enum\",\n \"oauth\",\n \"instance-picker\",\n] as const;\n\nexport const PlaceholderTypeSchema = z.enum(PlaceholderTypeValues);\n\nexport const PlaceholderSchema = z.object({\n key: z.string().min(1),\n prompt: z.string().optional(),\n type: PlaceholderTypeSchema.optional(),\n required: z.boolean().optional(),\n default: z.union([z.string(), z.number(), z.boolean()]).optional(),\n values: z.array(z.union([z.string(), z.number()])).optional(),\n});\n\n// ---------------------------------------------------------------------------\n// Compose item (for agents within presets)\n// ---------------------------------------------------------------------------\n\nconst ComposeRefSchema = z.object({\n kind: z.string().min(1),\n ref: z.string().min(1),\n});\n\n// ---------------------------------------------------------------------------\n// Preset item\n// ---------------------------------------------------------------------------\n\nexport const PresetItemSchema = z.looseObject({\n /** Asset ref, Library Instance ref, or nested Preset ref. */\n ref: z.string().min(1),\n /** Local item ID for cross-item references (#item-id). */\n id: z.string().optional(),\n /** Author-prefilled non-secret config values. */\n config: z.record(z.string(), z.unknown()).optional(),\n /** User/secret values prompted at install. */\n placeholders: z.array(PlaceholderSchema).optional(),\n /** How placeholder values fold into the Instance config. */\n materialize: z.record(z.string(), z.string()).optional(),\n /** Composition for agent items. */\n composes: z.array(ComposeRefSchema).optional(),\n /** Outer-Preset-author-supplied placeholder values for nested Presets. */\n inputs: z.record(z.string(), z.unknown()).optional(),\n});\n\n// ---------------------------------------------------------------------------\n// Preset-level input (rare, shared across items)\n// ---------------------------------------------------------------------------\n\nconst PresetInputSchema = z.object({\n key: z.string().min(1),\n type: PlaceholderTypeSchema.optional(),\n prompt: z.string().optional(),\n required: z.boolean().optional(),\n values: z.array(z.union([z.string(), z.number()])).optional(),\n default: z.union([z.string(), z.number(), z.boolean()]).optional(),\n});\n\n// ---------------------------------------------------------------------------\n// Source (git repo backing non-factory dependencies)\n// ---------------------------------------------------------------------------\n\n/**\n * A `{url, pin?, publisher?}` source the preset's dependencies resolve from (mirrors\n * `SourceEntry`); `publisher` is the one a non-GitHub source needs.\n */\nexport const PresetSourceSchema = z.object({\n url: z.string().min(1),\n pin: z.string().optional(),\n publisher: z.string().optional(),\n});\n\n// ---------------------------------------------------------------------------\n// Scaffold placeholders (`library create preset`)\n// ---------------------------------------------------------------------------\n\n/** The `description:` `library create preset` writes when `--description` is omitted. */\nexport const PRESET_DESCRIPTION_PLACEHOLDER = \"A curated set of assets\";\n\n/** The single item ref `library create preset` writes; it names no real publisher or skill. */\nexport const PRESET_ITEM_PLACEHOLDER_REF = \"skill:@your-publisher/example-skill\";\n\n// ---------------------------------------------------------------------------\n// Preset manifest\n// ---------------------------------------------------------------------------\n\nexport const PresetManifestSchema = z.looseObject({\n publisher: z.string().optional(),\n name: z.string().min(1),\n version: z.union([z.string(), z.number()]).default(\"0.1.0\"),\n description: z.string().min(1),\n category: z.string().optional(),\n license: z.string().optional(),\n keywords: z.array(z.string()).optional(),\n\n /** 1+ polymorphic items. */\n items: z.array(PresetItemSchema).min(1),\n\n /** Preset-level inputs shared across items (rare). */\n inputs: z.array(PresetInputSchema).optional(),\n\n /** Git sources the dependency items resolve from; `apply` registers these first. */\n sources: z.array(PresetSourceSchema).optional(),\n});\n\nexport type PresetManifest = z.infer<typeof PresetManifestSchema>;\nexport type PresetItem = z.infer<typeof PresetItemSchema>;\nexport type PresetSource = z.infer<typeof PresetSourceSchema>;\nexport type Placeholder = z.infer<typeof PlaceholderSchema>;\n\nexport function validatePreset(data: unknown): ManifestValidationResult<PresetManifest> {\n return validateManifest(PresetManifestSchema, data);\n}\n","import * as z from \"zod\";\nimport {\n CommonMetadataSchema,\n type ManifestValidationResult,\n validateManifest,\n} from \"./_shared.js\";\n\nexport const RulesetManifestSchema = z.looseObject({\n name: z.string().min(1),\n description: z.string().min(1),\n version: z.string().optional(),\n keywords: z.array(z.string()).optional(),\n license: z.string().optional(),\n metadata: CommonMetadataSchema.optional(),\n});\n\nexport type RulesetManifest = z.infer<typeof RulesetManifestSchema>;\n\nexport function validateRuleset(data: unknown): ManifestValidationResult<RulesetManifest> {\n return validateManifest(RulesetManifestSchema, data);\n}\n"]}