@skaile/workspaces 3.17.0 → 3.19.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 (273) hide show
  1. package/CHANGELOG.md +73 -0
  2. package/dist/app-sdk/index.js +1 -1
  3. package/dist/{asset-feeds-FQT6GH24.js → asset-feeds-OO3NIRVI.js} +7 -7
  4. package/dist/{asset-feeds-FQT6GH24.js.map → asset-feeds-OO3NIRVI.js.map} +1 -1
  5. package/dist/asset-manager/catalog-deployer.js +3 -3
  6. package/dist/asset-manager/index.js +6 -6
  7. package/dist/asset-manager/installer.js +4 -4
  8. package/dist/bridge/codex-app-server.js +2 -203
  9. package/dist/bridge/codex-app-server.js.map +1 -1
  10. package/dist/bridge/drivers/claude-sdk.js +5 -5
  11. package/dist/bridge/drivers/codex.js +1238 -6
  12. package/dist/bridge/drivers/codex.js.map +1 -1
  13. package/dist/bridge/drivers/continue.js +2 -2
  14. package/dist/bridge/drivers/echo.js +2 -2
  15. package/dist/bridge/drivers/gemini.js +3 -3
  16. package/dist/bridge/drivers/goose.js +2 -2
  17. package/dist/bridge/drivers/omp.js +1 -1
  18. package/dist/bridge/drivers/opencode.js +2 -2
  19. package/dist/bridge/drivers/qwen.js +3 -3
  20. package/dist/bridge/index.js +7 -6
  21. package/dist/bridge/src/capability-dispatch.d.ts +1 -1
  22. package/dist/bridge/src/capability-dispatch.d.ts.map +1 -1
  23. package/dist/bridge/src/codex/credentials.d.ts +12 -0
  24. package/dist/bridge/src/codex/credentials.d.ts.map +1 -0
  25. package/dist/bridge/src/codex/inputs.d.ts +8 -0
  26. package/dist/bridge/src/codex/inputs.d.ts.map +1 -0
  27. package/dist/bridge/src/codex/instance-state.d.ts +16 -0
  28. package/dist/bridge/src/codex/instance-state.d.ts.map +1 -0
  29. package/dist/bridge/src/codex/managed-driver.d.ts +73 -0
  30. package/dist/bridge/src/codex/managed-driver.d.ts.map +1 -0
  31. package/dist/bridge/src/codex/native-approvals.d.ts +22 -0
  32. package/dist/bridge/src/codex/native-approvals.d.ts.map +1 -0
  33. package/dist/bridge/src/codex/native-mcp-approval.d.ts +13 -0
  34. package/dist/bridge/src/codex/native-mcp-approval.d.ts.map +1 -0
  35. package/dist/bridge/src/codex/native-policy.d.ts +38 -0
  36. package/dist/bridge/src/codex/native-policy.d.ts.map +1 -0
  37. package/dist/bridge/src/codex/native-protocol.generated.d.ts +291 -201
  38. package/dist/bridge/src/codex/native-protocol.generated.d.ts.map +1 -1
  39. package/dist/bridge/src/codex/native-state.d.ts +7 -0
  40. package/dist/bridge/src/codex/native-state.d.ts.map +1 -0
  41. package/dist/bridge/src/codex/questions.d.ts +19 -0
  42. package/dist/bridge/src/codex/questions.d.ts.map +1 -0
  43. package/dist/bridge/src/codex-app-server.d.ts +8 -1
  44. package/dist/bridge/src/codex-app-server.d.ts.map +1 -1
  45. package/dist/bridge/src/drivers/codex.d.ts +9 -1
  46. package/dist/bridge/src/drivers/codex.d.ts.map +1 -1
  47. package/dist/bridge/src/index.d.ts +1 -0
  48. package/dist/bridge/src/index.d.ts.map +1 -1
  49. package/dist/bridge/src/normalizer.d.ts.map +1 -1
  50. package/dist/bridge/src/runtime.d.ts +3 -2
  51. package/dist/bridge/src/runtime.d.ts.map +1 -1
  52. package/dist/bridge/src/types.d.ts +83 -4
  53. package/dist/bridge/src/types.d.ts.map +1 -1
  54. package/dist/{chunk-BCOGOM6F.js → chunk-23L3P7IB.js} +4 -4
  55. package/dist/{chunk-BCOGOM6F.js.map → chunk-23L3P7IB.js.map} +1 -1
  56. package/dist/{chunk-NC5YXVZF.js → chunk-2FDKUKDE.js} +3 -3
  57. package/dist/{chunk-NC5YXVZF.js.map → chunk-2FDKUKDE.js.map} +1 -1
  58. package/dist/{chunk-CMGYUF5P.js → chunk-34RUVLL6.js} +7 -7
  59. package/dist/{chunk-CMGYUF5P.js.map → chunk-34RUVLL6.js.map} +1 -1
  60. package/dist/{chunk-EXT2LNST.js → chunk-3BOWST5G.js} +125 -37
  61. package/dist/chunk-3BOWST5G.js.map +1 -0
  62. package/dist/{chunk-BUKPS4YL.js → chunk-4JDCKPTM.js} +2 -2
  63. package/dist/{chunk-BUKPS4YL.js.map → chunk-4JDCKPTM.js.map} +1 -1
  64. package/dist/{chunk-5KSIVLOX.js → chunk-5T7Y3AZU.js} +3 -3
  65. package/dist/{chunk-5KSIVLOX.js.map → chunk-5T7Y3AZU.js.map} +1 -1
  66. package/dist/{chunk-HEKLK4NG.js → chunk-5Y4RBNT2.js} +6 -6
  67. package/dist/{chunk-HEKLK4NG.js.map → chunk-5Y4RBNT2.js.map} +1 -1
  68. package/dist/{chunk-PYX4WZLJ.js → chunk-7ECAUWFU.js} +9 -9
  69. package/dist/{chunk-PYX4WZLJ.js.map → chunk-7ECAUWFU.js.map} +1 -1
  70. package/dist/{chunk-QFYEDM63.js → chunk-7J4W54DV.js} +5 -5
  71. package/dist/{chunk-QFYEDM63.js.map → chunk-7J4W54DV.js.map} +1 -1
  72. package/dist/{chunk-RRVQAE5D.js → chunk-7ZO3MUP3.js} +6 -5
  73. package/dist/chunk-7ZO3MUP3.js.map +1 -0
  74. package/dist/{chunk-HY6CIKFH.js → chunk-CP62G5PK.js} +8 -7
  75. package/dist/chunk-CP62G5PK.js.map +1 -0
  76. package/dist/{chunk-OIDFK7SG.js → chunk-DCG4UWJM.js} +3 -3
  77. package/dist/{chunk-OIDFK7SG.js.map → chunk-DCG4UWJM.js.map} +1 -1
  78. package/dist/{chunk-RTM4SFLA.js → chunk-GMKNGIIB.js} +7 -4
  79. package/dist/chunk-GMKNGIIB.js.map +1 -0
  80. package/dist/{chunk-CIPK5JMJ.js → chunk-H662SXKS.js} +4 -4
  81. package/dist/{chunk-CIPK5JMJ.js.map → chunk-H662SXKS.js.map} +1 -1
  82. package/dist/{chunk-VT4MPCRK.js → chunk-HFL3PYJ7.js} +3 -3
  83. package/dist/{chunk-VT4MPCRK.js.map → chunk-HFL3PYJ7.js.map} +1 -1
  84. package/dist/{chunk-NMAICJUA.js → chunk-IST2V7RU.js} +3 -3
  85. package/dist/{chunk-NMAICJUA.js.map → chunk-IST2V7RU.js.map} +1 -1
  86. package/dist/{chunk-ZNCZ7RUO.js → chunk-JVFZ5R7L.js} +3 -3
  87. package/dist/{chunk-ZNCZ7RUO.js.map → chunk-JVFZ5R7L.js.map} +1 -1
  88. package/dist/{chunk-FRER2PEN.js → chunk-KB2GC6YY.js} +16 -3
  89. package/dist/chunk-KB2GC6YY.js.map +1 -0
  90. package/dist/chunk-LOO5CB5M.js +12 -0
  91. package/dist/chunk-LOO5CB5M.js.map +1 -0
  92. package/dist/{chunk-AL6BU3SP.js → chunk-OJ4N4T4H.js} +12 -4
  93. package/dist/chunk-OJ4N4T4H.js.map +1 -0
  94. package/dist/{chunk-X7FJ3ES3.js → chunk-OLRKNOO2.js} +4 -4
  95. package/dist/{chunk-X7FJ3ES3.js.map → chunk-OLRKNOO2.js.map} +1 -1
  96. package/dist/chunk-PHBYB4XT.js +247 -0
  97. package/dist/chunk-PHBYB4XT.js.map +1 -0
  98. package/dist/{chunk-EO7IJY3Q.js → chunk-PWBURVRH.js} +3 -3
  99. package/dist/{chunk-EO7IJY3Q.js.map → chunk-PWBURVRH.js.map} +1 -1
  100. package/dist/chunk-QEZPFJX3.js +254 -0
  101. package/dist/chunk-QEZPFJX3.js.map +1 -0
  102. package/dist/{chunk-C4AP3XZB.js → chunk-QG2ZXU5W.js} +4 -4
  103. package/dist/{chunk-C4AP3XZB.js.map → chunk-QG2ZXU5W.js.map} +1 -1
  104. package/dist/{chunk-OZ7UNMTK.js → chunk-RPVTPVGX.js} +7 -5
  105. package/dist/chunk-RPVTPVGX.js.map +1 -0
  106. package/dist/{chunk-S4UA244H.js → chunk-S635WMXH.js} +4 -4
  107. package/dist/{chunk-S4UA244H.js.map → chunk-S635WMXH.js.map} +1 -1
  108. package/dist/{chunk-2XGFQKNJ.js → chunk-SBDTLR3Q.js} +2 -2
  109. package/dist/{chunk-2XGFQKNJ.js.map → chunk-SBDTLR3Q.js.map} +1 -1
  110. package/dist/{chunk-BQMRUH7J.js → chunk-SFCVAEJ5.js} +4 -4
  111. package/dist/{chunk-BQMRUH7J.js.map → chunk-SFCVAEJ5.js.map} +1 -1
  112. package/dist/{chunk-KCI7DAKE.js → chunk-SZ3HIMSX.js} +988 -238
  113. package/dist/chunk-SZ3HIMSX.js.map +1 -0
  114. package/dist/chunk-T3YLZQS4.js +336 -0
  115. package/dist/chunk-T3YLZQS4.js.map +1 -0
  116. package/dist/{chunk-PBRMY64S.js → chunk-WB4EWSDR.js} +31 -9
  117. package/dist/chunk-WB4EWSDR.js.map +1 -0
  118. package/dist/{chunk-SUPIVTLX.js → chunk-XL45U3C5.js} +3 -3
  119. package/dist/{chunk-SUPIVTLX.js.map → chunk-XL45U3C5.js.map} +1 -1
  120. package/dist/{chunk-AXEOG4B5.js → chunk-YCMHWNZA.js} +3 -3
  121. package/dist/{chunk-AXEOG4B5.js.map → chunk-YCMHWNZA.js.map} +1 -1
  122. package/dist/{chunk-SWUVULBU.js → chunk-YLSMYOHN.js} +7 -7
  123. package/dist/{chunk-SWUVULBU.js.map → chunk-YLSMYOHN.js.map} +1 -1
  124. package/dist/{chunk-NIQPSQFN.js → chunk-YWGL52GT.js} +4 -4
  125. package/dist/{chunk-NIQPSQFN.js.map → chunk-YWGL52GT.js.map} +1 -1
  126. package/dist/cli/index.js +75 -53
  127. package/dist/cli/index.js.map +1 -1
  128. package/dist/cli/src/commands/serve.d.ts.map +1 -1
  129. package/dist/client/index.js +1 -1
  130. package/dist/client/src/client.d.ts +3 -2
  131. package/dist/client/src/client.d.ts.map +1 -1
  132. package/dist/connectors/config.js +4 -4
  133. package/dist/connectors/index.js +12 -11
  134. package/dist/connectors/src/connector-prompt.d.ts +11 -0
  135. package/dist/connectors/src/connector-prompt.d.ts.map +1 -1
  136. package/dist/core/index.js +3 -3
  137. package/dist/core/runtime-assets.js +2 -2
  138. package/dist/core/src/workspace-config.d.ts.map +1 -1
  139. package/dist/core/workspace-config.js +1 -1
  140. package/dist/deploy/index.js +3 -3
  141. package/dist/{ensure-sources-4GBXK6UR.js → ensure-sources-PR7YN3HV.js} +9 -9
  142. package/dist/{ensure-sources-4GBXK6UR.js.map → ensure-sources-PR7YN3HV.js.map} +1 -1
  143. package/dist/factory-assets/connectors/box.js +12 -11
  144. package/dist/factory-assets/connectors/deploy.js +12 -11
  145. package/dist/factory-assets/connectors/devserver.js +12 -11
  146. package/dist/factory-assets/connectors/flow/CONNECTOR.md +4 -5
  147. package/dist/factory-assets/connectors/flow/adapter.d.ts +8 -0
  148. package/dist/factory-assets/connectors/flow/adapter.d.ts.map +1 -1
  149. package/dist/factory-assets/connectors/flow/adapter.js +12 -11
  150. package/dist/factory-assets/connectors/flow/contract/index.d.ts +1 -1
  151. package/dist/factory-assets/connectors/flow/contract/index.d.ts.map +1 -1
  152. package/dist/factory-assets/connectors/flow/contract/schema.d.ts +50 -17
  153. package/dist/factory-assets/connectors/flow/contract/schema.d.ts.map +1 -1
  154. package/dist/factory-assets/connectors/flow/contract.js +3 -3
  155. package/dist/factory-assets/connectors/flow/engine/index.d.ts +1 -0
  156. package/dist/factory-assets/connectors/flow/engine/index.d.ts.map +1 -1
  157. package/dist/factory-assets/connectors/flow/engine.js +5 -5
  158. package/dist/factory-assets/connectors/flow/run-flow.js +13 -12
  159. package/dist/factory-assets/connectors/flow/subprompt-runner.d.ts +10 -1
  160. package/dist/factory-assets/connectors/flow/subprompt-runner.d.ts.map +1 -1
  161. package/dist/factory-assets/connectors/flow.js +12 -11
  162. package/dist/factory-assets/connectors/git.js +12 -11
  163. package/dist/factory-assets/connectors/gmail.js +12 -11
  164. package/dist/factory-assets/connectors/googledrive.js +12 -11
  165. package/dist/factory-assets/connectors/local.js +12 -11
  166. package/dist/factory-assets/connectors/mattermost.js +12 -11
  167. package/dist/factory-assets/connectors/memory.js +12 -11
  168. package/dist/factory-assets/connectors/minio.js +12 -11
  169. package/dist/factory-assets/connectors/postgres.js +12 -11
  170. package/dist/factory-assets/connectors/s3.js +12 -11
  171. package/dist/factory-assets/connectors/sharepoint.js +12 -11
  172. package/dist/factory-assets/connectors/sqlite.js +12 -11
  173. package/dist/factory-assets/connectors/static-server.js +12 -11
  174. package/dist/factory-assets/connectors/tunnel.js +12 -11
  175. package/dist/factory-assets/connectors/webdav.js +12 -11
  176. package/dist/factory-assets/connectors/xstate-store.js +12 -11
  177. package/dist/factory-assets/connectors/xstate.js +12 -11
  178. package/dist/{flows-2SUFOVVO.js → flows-COBS26MK.js} +6 -6
  179. package/dist/{flows-2SUFOVVO.js.map → flows-COBS26MK.js.map} +1 -1
  180. package/dist/{helpers-26LW4IXY.js → helpers-TFSZSWT5.js} +9 -9
  181. package/dist/{helpers-26LW4IXY.js.map → helpers-TFSZSWT5.js.map} +1 -1
  182. package/dist/library/index.js +4 -4
  183. package/dist/library/install.js +3 -3
  184. package/dist/{library-publish-IYGHOPEK.js → library-publish-WVIUUYG3.js} +14 -14
  185. package/dist/{library-publish-IYGHOPEK.js.map → library-publish-WVIUUYG3.js.map} +1 -1
  186. package/dist/{open-library-HH5LST7Z.js → open-library-2AWZGIWE.js} +12 -12
  187. package/dist/{open-library-HH5LST7Z.js.map → open-library-2AWZGIWE.js.map} +1 -1
  188. package/dist/{paths-4APA2PKT.js → paths-CZPCCBYX.js} +6 -6
  189. package/dist/{paths-4APA2PKT.js.map → paths-CZPCCBYX.js.map} +1 -1
  190. package/dist/{plugin-store-JQAIKR3R.js → plugin-store-ZEIBSNTO.js} +5 -5
  191. package/dist/{plugin-store-JQAIKR3R.js.map → plugin-store-ZEIBSNTO.js.map} +1 -1
  192. package/dist/{project-U5QRUCBN.js → project-XZDKNIRG.js} +10 -10
  193. package/dist/{project-U5QRUCBN.js.map → project-XZDKNIRG.js.map} +1 -1
  194. package/dist/resolver/index.js +3 -3
  195. package/dist/runner/index.js +25 -16
  196. package/dist/runner/src/capability-registry.d.ts +4 -0
  197. package/dist/runner/src/capability-registry.d.ts.map +1 -1
  198. package/dist/runner/src/codex-init.d.ts +2 -11
  199. package/dist/runner/src/codex-init.d.ts.map +1 -1
  200. package/dist/runner/src/codex-resource-tools.d.ts +16 -0
  201. package/dist/runner/src/codex-resource-tools.d.ts.map +1 -0
  202. package/dist/runner/src/codex-tools.d.ts +12 -0
  203. package/dist/runner/src/codex-tools.d.ts.map +1 -0
  204. package/dist/runner/src/define-capability.d.ts +2 -0
  205. package/dist/runner/src/define-capability.d.ts.map +1 -1
  206. package/dist/runner/src/external-mcp.d.ts +8 -3
  207. package/dist/runner/src/external-mcp.d.ts.map +1 -1
  208. package/dist/runner/src/index.d.ts +2 -0
  209. package/dist/runner/src/index.d.ts.map +1 -1
  210. package/dist/runner/src/managed-codex-bootstrap.d.ts +54 -0
  211. package/dist/runner/src/managed-codex-bootstrap.d.ts.map +1 -0
  212. package/dist/runner/src/resources.d.ts +1 -0
  213. package/dist/runner/src/resources.d.ts.map +1 -1
  214. package/dist/runner/src/serve.d.ts +5 -0
  215. package/dist/runner/src/serve.d.ts.map +1 -1
  216. package/dist/runner/src/session-builder.d.ts +18 -1
  217. package/dist/runner/src/session-builder.d.ts.map +1 -1
  218. package/dist/sdk/asset-manager.js +6 -6
  219. package/dist/sdk/bridge.js +7 -6
  220. package/dist/sdk/client.js +1 -1
  221. package/dist/sdk/core.js +3 -3
  222. package/dist/sdk/flow.js +5 -5
  223. package/dist/sdk/index.js +26 -17
  224. package/dist/sdk/index.js.map +1 -1
  225. package/dist/sdk/resolver.js +3 -3
  226. package/dist/sdk/runner.js +25 -16
  227. package/dist/sdk/session.js +2 -2
  228. package/dist/sdk/store.js +1 -1
  229. package/dist/sdk/types.js +1 -1
  230. package/dist/session/index.js +2 -2
  231. package/dist/{setup-XKTBHRWM.js → setup-J34TR5IR.js} +9 -8
  232. package/dist/setup-J34TR5IR.js.map +1 -0
  233. package/dist/{skills-Q7PJVB3W.js → skills-LG6IQSSN.js} +5 -5
  234. package/dist/{skills-Q7PJVB3W.js.map → skills-LG6IQSSN.js.map} +1 -1
  235. package/dist/{source-ODR4IU6R.js → source-QYINHHUP.js} +13 -13
  236. package/dist/{source-ODR4IU6R.js.map → source-QYINHHUP.js.map} +1 -1
  237. package/dist/{source-manifest-publish-WCJY3GAM.js → source-manifest-publish-3RBW5E2O.js} +15 -15
  238. package/dist/{source-manifest-publish-WCJY3GAM.js.map → source-manifest-publish-3RBW5E2O.js.map} +1 -1
  239. package/dist/store/index.js +1 -1
  240. package/dist/store/react.js +1 -1
  241. package/dist/store/react.js.map +1 -1
  242. package/dist/store/src/react.d.ts +1 -1
  243. package/dist/store/src/react.d.ts.map +1 -1
  244. package/dist/store/src/store.d.ts +2 -1
  245. package/dist/store/src/store.d.ts.map +1 -1
  246. package/dist/tui/index.js +25 -16
  247. package/dist/tui/index.js.map +1 -1
  248. package/dist/types/index.js +1 -1
  249. package/dist/types/src/events.d.ts +14 -1
  250. package/dist/types/src/events.d.ts.map +1 -1
  251. package/dist/types/src/index.d.ts +2 -2
  252. package/dist/types/src/index.d.ts.map +1 -1
  253. package/dist/types/src/protocol.d.ts +18 -0
  254. package/dist/types/src/protocol.d.ts.map +1 -1
  255. package/dist/types/src/runtime.d.ts +3 -1
  256. package/dist/types/src/runtime.d.ts.map +1 -1
  257. package/dist/types/src/version.d.ts +7 -1
  258. package/dist/types/src/version.d.ts.map +1 -1
  259. package/dist/workspace-plugin/adapters/mcp.js +9 -255
  260. package/dist/workspace-plugin/adapters/mcp.js.map +1 -1
  261. package/dist/workspace-plugin/adapters/omp.js +7 -7
  262. package/dist/workspace-plugin/index.js +1 -1
  263. package/package.json +4 -1
  264. package/dist/chunk-AL6BU3SP.js.map +0 -1
  265. package/dist/chunk-EXT2LNST.js.map +0 -1
  266. package/dist/chunk-FRER2PEN.js.map +0 -1
  267. package/dist/chunk-HY6CIKFH.js.map +0 -1
  268. package/dist/chunk-KCI7DAKE.js.map +0 -1
  269. package/dist/chunk-OZ7UNMTK.js.map +0 -1
  270. package/dist/chunk-PBRMY64S.js.map +0 -1
  271. package/dist/chunk-RRVQAE5D.js.map +0 -1
  272. package/dist/chunk-RTM4SFLA.js.map +0 -1
  273. package/dist/setup-XKTBHRWM.js.map +0 -1
@@ -1,18 +1,19 @@
1
- import { workspaceValidate, workspaceInfo, workspaceTestSecret, workspaceReload } from '../../chunk-E7HKNQTH.js';
2
- import { mountList, mountSync, mountStatus, mountRead, connectorList, connectorRead, connectorWrite, connectorSearch, connectorExec, connectorLoadSkill, connectorDescribe } from '../../chunk-FUCYTGAE.js';
3
- import { flowList, flowShow, flowListSessions, flowGetSession, flowFindFlowForSession } from '../../chunk-BUKPS4YL.js';
4
- import { sessionList, sessionGet } from '../../chunk-R6O6YWU7.js';
5
- import { skillList, skillListDomains, skillShow, skillSearch, skillCheckRequirements, skillGetPreamble } from '../../chunk-FAI2SMFE.js';
1
+ export { buildWorkspaceMcpServer, buildWorkspaceMcpStdioServer, buildWorkspaceToolDefs, runMcpServerStdio } from '../../chunk-QEZPFJX3.js';
2
+ import '../../chunk-E7HKNQTH.js';
3
+ import '../../chunk-FUCYTGAE.js';
4
+ import '../../chunk-4JDCKPTM.js';
5
+ import '../../chunk-R6O6YWU7.js';
6
+ import '../../chunk-FAI2SMFE.js';
6
7
  import '../../chunk-7IRJ4K4F.js';
7
8
  import '../../chunk-X5YPJV4N.js';
8
9
  import '../../chunk-3XXQPHGL.js';
9
10
  import '../../chunk-7BUZQVRR.js';
10
- import '../../chunk-CIPK5JMJ.js';
11
+ import '../../chunk-H662SXKS.js';
11
12
  import '../../chunk-F3HNW354.js';
12
13
  import '../../chunk-K5GBV4SA.js';
13
14
  import '../../chunk-QVZA2MDT.js';
14
- import '../../chunk-OIDFK7SG.js';
15
- import '../../chunk-OZ7UNMTK.js';
15
+ import '../../chunk-DCG4UWJM.js';
16
+ import '../../chunk-RPVTPVGX.js';
16
17
  import '../../chunk-MENCWIHW.js';
17
18
  import '../../chunk-P4VHQA4N.js';
18
19
  import '../../chunk-MKZOK4JU.js';
@@ -20,252 +21,5 @@ import '../../chunk-GEEW6SY2.js';
20
21
  import '../../chunk-FTG7CRFD.js';
21
22
  import '../../chunk-W4IPN3DD.js';
22
23
  import '../../chunk-NSBPE2FW.js';
23
- import * as zNS from 'zod';
24
-
25
- var zStatic = zNS.z ?? zNS.default ?? zNS;
26
- function buildWorkspaceToolDefs(plugin) {
27
- const z2 = zStatic;
28
- const driver = plugin.driver ?? "omp";
29
- const p = plugin.projectDir;
30
- return [
31
- // Mount tools
32
- {
33
- name: "mount_list",
34
- description: "List all mounts declared in skaile.yaml with their mount status.",
35
- inputSchema: {},
36
- handler: async () => mountList(plugin.connectorManager)
37
- },
38
- {
39
- name: "mount_sync",
40
- description: "Sync a mount \u2014 pull latest from remote (git, S3, WebDAV).",
41
- inputSchema: { mount_id: z2.string().describe("Mount ID from mount_list") },
42
- handler: async ({ mount_id }) => mountSync(plugin.connectorManager, mount_id)
43
- },
44
- {
45
- name: "mount_status",
46
- description: "Get the mount status and last sync time for a mount.",
47
- inputSchema: { mount_id: z2.string() },
48
- handler: async ({ mount_id }) => mountStatus(plugin.connectorManager, mount_id)
49
- },
50
- {
51
- name: "mount_read",
52
- description: "Read a file from a mounted mount by path.",
53
- inputSchema: {
54
- mount_id: z2.string(),
55
- path: z2.string().describe("Relative path within the mount")
56
- },
57
- handler: async ({ mount_id, path }) => mountRead(plugin.connectorManager, mount_id, path)
58
- },
59
- // Flow tools
60
- {
61
- name: "flow_list",
62
- description: "List all available flow definitions from ai-assets.",
63
- inputSchema: {},
64
- handler: async () => flowList(p)
65
- },
66
- {
67
- name: "flow_show",
68
- description: "Show full flow definition (nodes + edges) for a flow ID.",
69
- inputSchema: { flow_id: z2.string().describe("Flow ID from flow_list") },
70
- handler: async ({ flow_id }) => flowShow(p, flow_id)
71
- },
72
- {
73
- name: "flow_list_sessions",
74
- description: "List past and active flow run sessions for this workspace.",
75
- inputSchema: {},
76
- handler: async () => flowListSessions(p)
77
- },
78
- {
79
- name: "flow_get_session",
80
- description: "Get driver metadata for a specific flow run session.",
81
- inputSchema: { run_id: z2.string().describe("Run ID from flow_list_sessions") },
82
- handler: async ({ run_id }) => flowGetSession(p, run_id)
83
- },
84
- {
85
- name: "flow_find_flow_for_session",
86
- description: "Resolve and return the flow definition used in a past session.",
87
- inputSchema: { run_id: z2.string() },
88
- handler: async ({ run_id }) => flowFindFlowForSession(p, run_id)
89
- },
90
- // Skill tools
91
- {
92
- name: "skill_list",
93
- description: "List all skills in the ai-assets catalog, optionally filtered by domain.",
94
- inputSchema: { domain: z2.string().optional().describe("Domain name filter") },
95
- handler: async ({ domain }) => skillList(p, domain)
96
- },
97
- {
98
- name: "skill_list_domains",
99
- description: "List all skill domains (top-level ai-assets directories with skills).",
100
- inputSchema: {},
101
- handler: async () => skillListDomains(p)
102
- },
103
- {
104
- name: "skill_show",
105
- description: "Show the full SKILL.md content for a skill ID.",
106
- inputSchema: { skill_id: z2.string().describe("Skill ID from skill_list") },
107
- handler: async ({ skill_id }) => skillShow(p, skill_id)
108
- },
109
- {
110
- name: "skill_search",
111
- description: "Search skills by name, description, or keywords.",
112
- inputSchema: { query: z2.string() },
113
- handler: async ({ query }) => skillSearch(p, query)
114
- },
115
- {
116
- name: "skill_check_requirements",
117
- description: "Validate that all skill prerequisites are met in the target directory.",
118
- inputSchema: {
119
- skill_id: z2.string(),
120
- target_dir: z2.string().optional().describe("Directory to check against (default: projectDir)")
121
- },
122
- handler: async ({ skill_id, target_dir }) => skillCheckRequirements(p, skill_id, target_dir ?? p)
123
- },
124
- {
125
- name: "skill_get_preamble",
126
- description: "Get the REQUIRES/INPUT/READS/WRITES DSL preamble for a skill.",
127
- inputSchema: { skill_id: z2.string() },
128
- handler: async ({ skill_id }) => skillGetPreamble(p, skill_id)
129
- },
130
- // Session tools
131
- {
132
- name: "session_list",
133
- description: "List all past agent run sessions for this workspace, sorted newest first.",
134
- inputSchema: {},
135
- handler: async () => sessionList(p)
136
- },
137
- {
138
- name: "session_get",
139
- description: "Get full metadata for a specific session by run ID.",
140
- inputSchema: { run_id: z2.string() },
141
- handler: async ({ run_id }) => sessionGet(p, run_id)
142
- },
143
- // Connector tools
144
- {
145
- name: "connector_list",
146
- description: "List connectors declared in skaile.yaml as {connected, failed}. `failed` holds connectors that did not connect this session, with the failure reason \u2014 their mount paths are dead directories, not synced workspaces.",
147
- inputSchema: {},
148
- handler: async () => connectorList(plugin.connectorManager)
149
- },
150
- {
151
- name: "connector_read",
152
- description: "Read content from a connector by path.",
153
- inputSchema: {
154
- connector_id: z2.string().describe("Connector ID from connector_list"),
155
- path: z2.string().describe("Path within the connector")
156
- },
157
- handler: async ({ connector_id, path }) => connectorRead(plugin.connectorManager, connector_id, path)
158
- },
159
- {
160
- name: "connector_write",
161
- description: "Write content to a connector by path.",
162
- inputSchema: {
163
- connector_id: z2.string(),
164
- path: z2.string(),
165
- content: z2.string().describe("Content to write")
166
- },
167
- handler: async ({
168
- connector_id,
169
- path,
170
- content
171
- }) => connectorWrite(plugin.connectorManager, connector_id, path, content)
172
- },
173
- {
174
- name: "connector_search",
175
- description: "Search within a connector by query string.",
176
- inputSchema: {
177
- connector_id: z2.string(),
178
- query: z2.string().describe("Search query")
179
- },
180
- handler: async ({ connector_id, query }) => connectorSearch(plugin.connectorManager, connector_id, query)
181
- },
182
- {
183
- name: "connector_exec",
184
- description: "Execute a custom operation on a connector.",
185
- inputSchema: {
186
- connector_id: z2.string(),
187
- operation: z2.string().describe("Operation name from connector_describe"),
188
- args: z2.record(z2.string(), z2.unknown()).describe("Operation arguments")
189
- },
190
- handler: async ({
191
- connector_id,
192
- operation,
193
- args
194
- }) => connectorExec(plugin.connectorManager, connector_id, operation, args)
195
- },
196
- {
197
- name: "connector_load_skill",
198
- description: "Load the rendered skill body for a connector (operations + usage).",
199
- inputSchema: {
200
- connector_id: z2.string()
201
- },
202
- handler: async ({ connector_id }) => connectorLoadSkill(plugin.connectorManager, connector_id)
203
- },
204
- {
205
- name: "connector_describe",
206
- description: "Describe a connector's capabilities via its RuntimeSkillDescriptor.",
207
- inputSchema: {
208
- connector_id: z2.string()
209
- },
210
- handler: async ({ connector_id }) => connectorDescribe(plugin.connectorManager, connector_id)
211
- },
212
- // Validator tools
213
- {
214
- name: "workspace_validate",
215
- description: "Run a full health check: connectors, mounts, secrets, driver binary.",
216
- inputSchema: {},
217
- handler: async () => workspaceValidate(plugin, driver)
218
- },
219
- {
220
- name: "workspace_info",
221
- description: "Show workspace configuration: driver, model, provider, resource counts.",
222
- inputSchema: {},
223
- handler: async () => workspaceInfo(plugin, driver, plugin.provider, plugin.model)
224
- },
225
- {
226
- name: "workspace_test_secret",
227
- description: "Test resolution of one secret reference (env:VAR, forge:key).",
228
- inputSchema: { ref: z2.string().describe("Secret ref e.g. env:ANTHROPIC_API_KEY") },
229
- handler: async ({ ref }) => workspaceTestSecret(ref)
230
- },
231
- {
232
- name: "workspace_reload",
233
- description: "Re-read skaile.yaml and re-sync the plugin state.",
234
- inputSchema: {},
235
- handler: async () => workspaceReload(plugin)
236
- }
237
- ];
238
- }
239
- async function buildWorkspaceMcpServer(plugin) {
240
- let sdk;
241
- try {
242
- sdk = await import('@anthropic-ai/claude-agent-sdk');
243
- } catch {
244
- return null;
245
- }
246
- return sdk.createSdkMcpServer({
247
- name: "skaile-workspace",
248
- tools: buildWorkspaceToolDefs(plugin)
249
- });
250
- }
251
- async function buildWorkspaceMcpStdioServer(plugin) {
252
- const { McpServer } = await import('@modelcontextprotocol/sdk/server/mcp.js');
253
- const server = new McpServer({ name: "skaile-workspace", version: "1.0.0" });
254
- for (const def of buildWorkspaceToolDefs(plugin)) {
255
- server.registerTool(
256
- def.name,
257
- { description: def.description, inputSchema: def.inputSchema },
258
- def.handler
259
- );
260
- }
261
- return server;
262
- }
263
- async function runMcpServerStdio(plugin) {
264
- const server = await buildWorkspaceMcpStdioServer(plugin);
265
- const { StdioServerTransport } = await import('@modelcontextprotocol/sdk/server/stdio.js');
266
- await server.connect(new StdioServerTransport());
267
- }
268
-
269
- export { buildWorkspaceMcpServer, buildWorkspaceMcpStdioServer, buildWorkspaceToolDefs, runMcpServerStdio };
270
24
  //# sourceMappingURL=mcp.js.map
271
25
  //# sourceMappingURL=mcp.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../workspace-plugin/src/adapters/mcp.ts"],"names":["z"],"mappings":"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","file":"mcp.js","sourcesContent":["// Static namespace import so bun --compile bundles zod into the binary.\n// Dynamic import(\"zod\") via a string variable evades bun's static analysis\n// and fails at runtime inside /$bunfs/. The unwrap (zNS.z ?? zNS.default\n// ?? zNS) handles both bun's native ESM and vitest's CJS-interop resolver,\n// which return the zod namespace at different keys.\nimport * as zNS from \"zod\";\nimport type { WorkspacePlugin } from \"../plugin.js\";\nimport {\n connectorDescribe,\n connectorExec,\n connectorList,\n connectorLoadSkill,\n connectorRead,\n connectorSearch,\n connectorWrite,\n mountList,\n mountRead,\n mountStatus,\n mountSync,\n} from \"../tools/connectors.js\";\nimport {\n flowFindFlowForSession,\n flowGetSession,\n flowList,\n flowListSessions,\n flowShow,\n} from \"../tools/flows.js\";\nimport { sessionGet, sessionList } from \"../tools/sessions.js\";\nimport {\n skillCheckRequirements,\n skillGetPreamble,\n skillList,\n skillListDomains,\n skillSearch,\n skillShow,\n} from \"../tools/skills.js\";\nimport {\n workspaceInfo,\n workspaceReload,\n workspaceTestSecret,\n workspaceValidate,\n} from \"../tools/validator.js\";\n\nconst zStatic: any = (zNS as any).z ?? (zNS as any).default ?? zNS;\n\n/**\n * One workspace plugin tool — name, description, a zod raw-shape input schema,\n * and an async handler returning a `ToolResult`.\n *\n * Carries **zero MCP/SDK dependency**: the same definitions feed both the\n * in-process Claude Agent SDK server ({@link buildWorkspaceMcpServer}) and the\n * raw stdio MCP server ({@link buildWorkspaceMcpStdioServer}).\n */\nexport interface WorkspaceToolDef {\n name: string;\n description: string;\n inputSchema: Record<string, unknown>;\n handler: (args: any) => Promise<unknown>;\n}\n\n/**\n * Build the 28 workspace plugin tool definitions.\n *\n * Tool groups:\n * - 4 mount tools (`mount_list`, `mount_sync`, `mount_status`, `mount_read`)\n * - 5 flow tools (`flow_list`, `flow_show`, `flow_list_sessions`, `flow_get_session`, `flow_find_flow_for_session`)\n * - 6 skill tools (`skill_list`, `skill_list_domains`, `skill_show`, `skill_search`, `skill_check_requirements`, `skill_get_preamble`)\n * - 2 session tools (`session_list`, `session_get`)\n * - 7 connector tools (`connector_list`, `connector_read`, `connector_write`, `connector_search`, `connector_exec`, `connector_load_skill`, `connector_describe`)\n * - 4 workspace tools (`workspace_validate`, `workspace_info`, `workspace_test_secret`, `workspace_reload`)\n *\n * @param plugin - A booted `WorkspacePlugin` instance.\n * @returns The 28 tool definitions, free of any MCP/SDK coupling.\n *\n * @docLink packages/workspace-plugin/concepts#adapters\n */\nexport function buildWorkspaceToolDefs(plugin: WorkspacePlugin): WorkspaceToolDef[] {\n const z: any = zStatic;\n\n const driver = plugin.driver ?? \"omp\";\n const p = plugin.projectDir;\n\n return [\n // Mount tools\n {\n name: \"mount_list\",\n description: \"List all mounts declared in skaile.yaml with their mount status.\",\n inputSchema: {},\n handler: async () => mountList(plugin.connectorManager),\n },\n {\n name: \"mount_sync\",\n description: \"Sync a mount — pull latest from remote (git, S3, WebDAV).\",\n inputSchema: { mount_id: z.string().describe(\"Mount ID from mount_list\") },\n handler: async ({ mount_id }: { mount_id: string }) =>\n mountSync(plugin.connectorManager, mount_id),\n },\n {\n name: \"mount_status\",\n description: \"Get the mount status and last sync time for a mount.\",\n inputSchema: { mount_id: z.string() },\n handler: async ({ mount_id }: { mount_id: string }) =>\n mountStatus(plugin.connectorManager, mount_id),\n },\n {\n name: \"mount_read\",\n description: \"Read a file from a mounted mount by path.\",\n inputSchema: {\n mount_id: z.string(),\n path: z.string().describe(\"Relative path within the mount\"),\n },\n handler: async ({ mount_id, path }: { mount_id: string; path: string }) =>\n mountRead(plugin.connectorManager, mount_id, path),\n },\n // Flow tools\n {\n name: \"flow_list\",\n description: \"List all available flow definitions from ai-assets.\",\n inputSchema: {},\n handler: async () => flowList(p),\n },\n {\n name: \"flow_show\",\n description: \"Show full flow definition (nodes + edges) for a flow ID.\",\n inputSchema: { flow_id: z.string().describe(\"Flow ID from flow_list\") },\n handler: async ({ flow_id }: { flow_id: string }) => flowShow(p, flow_id),\n },\n {\n name: \"flow_list_sessions\",\n description: \"List past and active flow run sessions for this workspace.\",\n inputSchema: {},\n handler: async () => flowListSessions(p),\n },\n {\n name: \"flow_get_session\",\n description: \"Get driver metadata for a specific flow run session.\",\n inputSchema: { run_id: z.string().describe(\"Run ID from flow_list_sessions\") },\n handler: async ({ run_id }: { run_id: string }) => flowGetSession(p, run_id),\n },\n {\n name: \"flow_find_flow_for_session\",\n description: \"Resolve and return the flow definition used in a past session.\",\n inputSchema: { run_id: z.string() },\n handler: async ({ run_id }: { run_id: string }) => flowFindFlowForSession(p, run_id),\n },\n // Skill tools\n {\n name: \"skill_list\",\n description: \"List all skills in the ai-assets catalog, optionally filtered by domain.\",\n inputSchema: { domain: z.string().optional().describe(\"Domain name filter\") },\n handler: async ({ domain }: { domain?: string }) => skillList(p, domain),\n },\n {\n name: \"skill_list_domains\",\n description: \"List all skill domains (top-level ai-assets directories with skills).\",\n inputSchema: {},\n handler: async () => skillListDomains(p),\n },\n {\n name: \"skill_show\",\n description: \"Show the full SKILL.md content for a skill ID.\",\n inputSchema: { skill_id: z.string().describe(\"Skill ID from skill_list\") },\n handler: async ({ skill_id }: { skill_id: string }) => skillShow(p, skill_id),\n },\n {\n name: \"skill_search\",\n description: \"Search skills by name, description, or keywords.\",\n inputSchema: { query: z.string() },\n handler: async ({ query }: { query: string }) => skillSearch(p, query),\n },\n {\n name: \"skill_check_requirements\",\n description: \"Validate that all skill prerequisites are met in the target directory.\",\n inputSchema: {\n skill_id: z.string(),\n target_dir: z\n .string()\n .optional()\n .describe(\"Directory to check against (default: projectDir)\"),\n },\n handler: async ({ skill_id, target_dir }: { skill_id: string; target_dir?: string }) =>\n skillCheckRequirements(p, skill_id, target_dir ?? p),\n },\n {\n name: \"skill_get_preamble\",\n description: \"Get the REQUIRES/INPUT/READS/WRITES DSL preamble for a skill.\",\n inputSchema: { skill_id: z.string() },\n handler: async ({ skill_id }: { skill_id: string }) => skillGetPreamble(p, skill_id),\n },\n // Session tools\n {\n name: \"session_list\",\n description: \"List all past agent run sessions for this workspace, sorted newest first.\",\n inputSchema: {},\n handler: async () => sessionList(p),\n },\n {\n name: \"session_get\",\n description: \"Get full metadata for a specific session by run ID.\",\n inputSchema: { run_id: z.string() },\n handler: async ({ run_id }: { run_id: string }) => sessionGet(p, run_id),\n },\n // Connector tools\n {\n name: \"connector_list\",\n description:\n \"List connectors declared in skaile.yaml as {connected, failed}. `failed` holds connectors that did not connect this session, with the failure reason — their mount paths are dead directories, not synced workspaces.\",\n inputSchema: {},\n handler: async () => connectorList(plugin.connectorManager),\n },\n {\n name: \"connector_read\",\n description: \"Read content from a connector by path.\",\n inputSchema: {\n connector_id: z.string().describe(\"Connector ID from connector_list\"),\n path: z.string().describe(\"Path within the connector\"),\n },\n handler: async ({ connector_id, path }: { connector_id: string; path: string }) =>\n connectorRead(plugin.connectorManager, connector_id, path),\n },\n {\n name: \"connector_write\",\n description: \"Write content to a connector by path.\",\n inputSchema: {\n connector_id: z.string(),\n path: z.string(),\n content: z.string().describe(\"Content to write\"),\n },\n handler: async ({\n connector_id,\n path,\n content,\n }: {\n connector_id: string;\n path: string;\n content: string;\n }) => connectorWrite(plugin.connectorManager, connector_id, path, content),\n },\n {\n name: \"connector_search\",\n description: \"Search within a connector by query string.\",\n inputSchema: {\n connector_id: z.string(),\n query: z.string().describe(\"Search query\"),\n },\n handler: async ({ connector_id, query }: { connector_id: string; query: string }) =>\n connectorSearch(plugin.connectorManager, connector_id, query),\n },\n {\n name: \"connector_exec\",\n description: \"Execute a custom operation on a connector.\",\n inputSchema: {\n connector_id: z.string(),\n operation: z.string().describe(\"Operation name from connector_describe\"),\n args: z.record(z.string(), z.unknown()).describe(\"Operation arguments\"),\n },\n handler: async ({\n connector_id,\n operation,\n args,\n }: {\n connector_id: string;\n operation: string;\n args: Record<string, unknown>;\n }) => connectorExec(plugin.connectorManager, connector_id, operation, args),\n },\n {\n name: \"connector_load_skill\",\n description: \"Load the rendered skill body for a connector (operations + usage).\",\n inputSchema: {\n connector_id: z.string(),\n },\n handler: async ({ connector_id }: { connector_id: string }) =>\n connectorLoadSkill(plugin.connectorManager, connector_id),\n },\n {\n name: \"connector_describe\",\n description: \"Describe a connector's capabilities via its RuntimeSkillDescriptor.\",\n inputSchema: {\n connector_id: z.string(),\n },\n handler: async ({ connector_id }: { connector_id: string }) =>\n connectorDescribe(plugin.connectorManager, connector_id),\n },\n // Validator tools\n {\n name: \"workspace_validate\",\n description: \"Run a full health check: connectors, mounts, secrets, driver binary.\",\n inputSchema: {},\n handler: async () => workspaceValidate(plugin, driver),\n },\n {\n name: \"workspace_info\",\n description: \"Show workspace configuration: driver, model, provider, resource counts.\",\n inputSchema: {},\n handler: async () => workspaceInfo(plugin, driver, plugin.provider, plugin.model),\n },\n {\n name: \"workspace_test_secret\",\n description: \"Test resolution of one secret reference (env:VAR, forge:key).\",\n inputSchema: { ref: z.string().describe(\"Secret ref e.g. env:ANTHROPIC_API_KEY\") },\n handler: async ({ ref }: { ref: string }) => workspaceTestSecret(ref),\n },\n {\n name: \"workspace_reload\",\n description: \"Re-read skaile.yaml and re-sync the plugin state.\",\n inputSchema: {},\n handler: async () => workspaceReload(plugin),\n },\n ];\n}\n\n/**\n * Build the **in-process** workspace MCP server via the Claude Agent SDK's\n * `createSdkMcpServer`. This shape is what the runner embeds into a Claude\n * Agent SDK `query()` call — the runner *is* the Claude Agent SDK host.\n *\n * Returns `null` when `@anthropic-ai/claude-agent-sdk` is not installed\n * (graceful degradation for non-Claude-Code environments).\n *\n * For the standalone `skaile mcp-server` stdio subprocess use\n * {@link buildWorkspaceMcpStdioServer} / {@link runMcpServerStdio} instead —\n * those carry no Claude Agent SDK dependency.\n *\n * @param plugin - A booted `WorkspacePlugin` instance.\n * @returns The SDK MCP server object or `null` if the SDK is unavailable.\n *\n * @docLink packages/workspace-plugin/concepts#adapters\n */\nexport async function buildWorkspaceMcpServer(plugin: WorkspacePlugin): Promise<unknown | null> {\n let sdk: any;\n try {\n sdk = await import(\"@anthropic-ai/claude-agent-sdk\");\n } catch {\n return null;\n }\n return sdk.createSdkMcpServer({\n name: \"skaile-workspace\",\n tools: buildWorkspaceToolDefs(plugin),\n });\n}\n\n/**\n * Build a **raw stdio** workspace MCP server on `@modelcontextprotocol/sdk` —\n * no Claude Agent SDK. This is the correct shape for the `skaile mcp-server`\n * stdio subprocess that MCP-client agents (Claude Code, Codex, …) spawn.\n * Runs on plain Node.\n *\n * The returned server is not yet connected — call `.connect(transport)` (or\n * use {@link runMcpServerStdio}).\n *\n * @param plugin - A booted `WorkspacePlugin` instance.\n * @returns A `McpServer` with all 28 workspace tools registered.\n *\n * @docLink packages/workspace-plugin/concepts#adapters\n */\nexport async function buildWorkspaceMcpStdioServer(plugin: WorkspacePlugin): Promise<any> {\n const { McpServer } = await import(\"@modelcontextprotocol/sdk/server/mcp.js\" as string);\n const server = new McpServer({ name: \"skaile-workspace\", version: \"1.0.0\" });\n for (const def of buildWorkspaceToolDefs(plugin)) {\n server.registerTool(\n def.name,\n { description: def.description, inputSchema: def.inputSchema },\n def.handler,\n );\n }\n return server;\n}\n\n/**\n * Start the workspace MCP server over stdio transport.\n *\n * Builds the raw `@modelcontextprotocol/sdk` server via\n * {@link buildWorkspaceMcpStdioServer} and connects a `StdioServerTransport`.\n * No `@anthropic-ai/claude-agent-sdk` dependency anywhere on this path.\n *\n * @param plugin - A booted `WorkspacePlugin` instance.\n *\n * @docLink packages/workspace-plugin/concepts#adapters\n */\nexport async function runMcpServerStdio(plugin: WorkspacePlugin): Promise<void> {\n const server = await buildWorkspaceMcpStdioServer(plugin);\n const { StdioServerTransport } = await import(\n \"@modelcontextprotocol/sdk/server/stdio.js\" as string\n );\n await server.connect(new StdioServerTransport());\n}\n"]}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"mcp.js"}
@@ -74,7 +74,7 @@ function buildOmpToolSet(plugin) {
74
74
  description: "List all available flow definitions from ai-assets.",
75
75
  parameters: {},
76
76
  handler: async () => {
77
- const { flowList } = await import('../../flows-2SUFOVVO.js');
77
+ const { flowList } = await import('../../flows-COBS26MK.js');
78
78
  return (await flowList(plugin.projectDir)).content[0].text;
79
79
  }
80
80
  },
@@ -83,7 +83,7 @@ function buildOmpToolSet(plugin) {
83
83
  description: "List past flow run sessions for this workspace.",
84
84
  parameters: {},
85
85
  handler: async () => {
86
- const { flowListSessions } = await import('../../flows-2SUFOVVO.js');
86
+ const { flowListSessions } = await import('../../flows-COBS26MK.js');
87
87
  return (await flowListSessions(plugin.projectDir)).content[0].text;
88
88
  }
89
89
  },
@@ -92,7 +92,7 @@ function buildOmpToolSet(plugin) {
92
92
  description: "List all skills in the ai-assets catalog.",
93
93
  parameters: { domain: { type: "string", optional: true } },
94
94
  handler: async ({ domain }) => {
95
- const { skillList } = await import('../../skills-Q7PJVB3W.js');
95
+ const { skillList } = await import('../../skills-LG6IQSSN.js');
96
96
  return (await skillList(plugin.projectDir, domain)).content[0].text;
97
97
  }
98
98
  },
@@ -101,7 +101,7 @@ function buildOmpToolSet(plugin) {
101
101
  description: "Search skills by name, description, or keywords.",
102
102
  parameters: { query: { type: "string" } },
103
103
  handler: async ({ query }) => {
104
- const { skillSearch } = await import('../../skills-Q7PJVB3W.js');
104
+ const { skillSearch } = await import('../../skills-LG6IQSSN.js');
105
105
  return (await skillSearch(plugin.projectDir, query)).content[0].text;
106
106
  }
107
107
  },
@@ -110,7 +110,7 @@ function buildOmpToolSet(plugin) {
110
110
  description: "Show the full SKILL.md content for a skill.",
111
111
  parameters: { skill_id: { type: "string" } },
112
112
  handler: async ({ skill_id }) => {
113
- const { skillShow } = await import('../../skills-Q7PJVB3W.js');
113
+ const { skillShow } = await import('../../skills-LG6IQSSN.js');
114
114
  return (await skillShow(plugin.projectDir, skill_id)).content[0].text;
115
115
  }
116
116
  },
@@ -201,7 +201,7 @@ async function handleSlashCommand(plugin, group, args) {
201
201
  }
202
202
  }
203
203
  async function handleFlowCommand(plugin, sub, rest) {
204
- const { flowList, flowShow, flowListSessions, flowGetSession } = await import('../../flows-2SUFOVVO.js');
204
+ const { flowList, flowShow, flowListSessions, flowGetSession } = await import('../../flows-COBS26MK.js');
205
205
  if (!sub || sub === "list") return (await flowList(plugin.projectDir)).content[0].text;
206
206
  if (sub === "show" && rest[0])
207
207
  return (await flowShow(plugin.projectDir, rest[0])).content[0].text;
@@ -230,7 +230,7 @@ async function handleConnectorCommand(plugin, sub, rest) {
230
230
  return "Usage: /connector list | read <id> <path> | exec <id> <op> [json-args] | describe <id>";
231
231
  }
232
232
  async function handleSkillCommand(plugin, sub, rest) {
233
- const { skillList, skillShow, skillSearch } = await import('../../skills-Q7PJVB3W.js');
233
+ const { skillList, skillShow, skillSearch } = await import('../../skills-LG6IQSSN.js');
234
234
  if (sub === "run" && rest[0])
235
235
  return (await skillShow(plugin.projectDir, rest[0])).content[0].text;
236
236
  if (!sub || sub === "list") return (await skillList(plugin.projectDir, rest[0])).content[0].text;
@@ -1,4 +1,4 @@
1
- export { PluginStore, WorkspacePlugin, buildClaudePluginFiles, resolveProjectDir } from '../chunk-2XGFQKNJ.js';
1
+ export { PluginStore, WorkspacePlugin, buildClaudePluginFiles, resolveProjectDir } from '../chunk-SBDTLR3Q.js';
2
2
  export { err, ok, okJson } from '../chunk-X5YPJV4N.js';
3
3
  import '../chunk-FTG7CRFD.js';
4
4
  import '../chunk-W4IPN3DD.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skaile/workspaces",
3
- "version": "3.17.0",
3
+ "version": "3.19.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",
@@ -691,6 +691,8 @@
691
691
  "build": "bun run build:js && bun run build:dts && bun run build:dts-sidecars && bun run build:packaged-assets",
692
692
  "typecheck": "tsc --project tsconfig.build.json --noEmit",
693
693
  "test": "bun x --bun vitest run",
694
+ "test:codex-tools:platform-fixture": "bun runner/tests/codex-app-server/run-platform-fixture.mjs",
695
+ "test:codex-tools:live": "bun runner/tests/codex-app-server/run-native-tools.mjs",
694
696
  "test:node": "node ./node_modules/.bin/vitest run --config vitest.node.config.ts",
695
697
  "test:codex-baseline:live": "node bridge/tests/codex-app-server/run-live-baseline.mjs",
696
698
  "test:codex-auth:live": "node bridge/tests/codex-app-server/run-live-auth.mjs",
@@ -700,6 +702,7 @@
700
702
  "lint": "biome lint --fix --unsafe .",
701
703
  "build:binary": "bun run _scripts/build-binary.ts",
702
704
  "check:cjs": "bun run _scripts/check-cjs-require.ts",
705
+ "check:flow-dts": "bun run _scripts/check-flow-dts-names.ts",
703
706
  "gen:entries": "bun run _scripts/gen-tsup-entries.ts",
704
707
  "gen:flow-schema": "bun run _scripts/generate-flow-v2-schema.ts",
705
708
  "gen:manifest": "bun run _scripts/gen-workspaces-manifest.ts > _scripts/workspaces-exports.json"
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../client/src/client.ts"],"names":[],"mappings":";AAqCO,IAAM,cAAN,MAA2C;AAAA,EAC/B,SAAA;AAAA,EACA,QAAA,uBAAe,GAAA,EAAiC;AAAA,EAChD,cAAA;AAAA,EAEjB,YAAY,SAAA,EAA4B;AACtC,IAAA,IAAA,CAAK,SAAA,GAAY,SAAA;AACjB,IAAA,IAAA,CAAK,cAAA,GAAiB,SAAA,CAAU,SAAA,CAAU,CAAC,KAAA,KAAU;AACnD,MAAA,KAAA,MAAW,OAAA,IAAW,KAAK,QAAA,EAAU;AACnC,QAAA,OAAA,CAAQ,KAAK,CAAA;AAAA,MACf;AAAA,IACF,CAAC,CAAA;AAAA,EACH;AAAA;AAAA,EAGA,MAAM,MAAM,MAAA,EAA2C;AACrD,IAAA,IAAI,CAAC,IAAA,CAAK,SAAA,CAAU,SAAA,EAAW;AAC7B,MAAA,MAAM,IAAA,CAAK,UAAU,OAAA,EAAQ;AAAA,IAC/B;AACA,IAAA,MAAM,IAAA,CAAK,UAAU,MAAM,CAAA;AAAA,EAC7B;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,MAAM,UAAU,MAAA,EAAgD;AAC9D,IAAA,IAAA,CAAK,UAAU,IAAA,CAAK,EAAE,IAAA,EAAM,WAAA,EAAa,QAAmC,CAAA;AAAA,EAC9E;AAAA;AAAA,EAGA,KAAK,OAAA,EAA6B;AAChC,IAAA,IAAA,CAAK,SAAA,CAAU,KAAK,OAAO,CAAA;AAAA,EAC7B;AAAA;AAAA,EAGA,MAAM,OAAO,OAAA,EAAgC;AAC3C,IAAA,IAAA,CAAK,UAAU,IAAA,CAAK,EAAE,MAAM,QAAA,EAAU,MAAA,EAAQ,SAAS,CAAA;AAAA,EACzD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAOA,MAAM,KAAA,CAAM,MAAA,EAAgB,QAAA,EAAkC;AAC5D,IAAA,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,EAAE,IAAA,EAAM,SAAS,MAAA,EAAQ,GAAI,QAAA,KAAa,MAAA,GAAY,EAAE,QAAA,EAAS,GAAI,IAAK,CAAA;AAAA,EAChG;AAAA;AAAA,EAGA,MAAM,KAAA,GAAuB;AAC3B,IAAA,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,EAAE,IAAA,EAAM,UAAU,CAAA;AAAA,EACxC;AAAA;AAAA,EAGA,MAAM,OAAA,GAAyB;AAC7B,IAAA,IAAA,CAAK,SAAA,CAAU,IAAA,CAAK,EAAE,IAAA,EAAM,YAAY,CAAA;AACxC,IAAA,IAAA,CAAK,cAAA,EAAe;AACpB,IAAA,MAAM,IAAA,CAAK,UAAU,UAAA,EAAW;AAAA,EAClC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,eAAA,CAAgB,OAAe,MAAA,EAAuC;AACpE,IAAA,IAAA,CAAK,UAAU,IAAA,CAAK,EAAE,MAAM,cAAA,EAAgB,KAAA,EAAO,QAAmC,CAAA;AAAA,EACxF;AAAA,EAEA,QAAQ,OAAA,EAA4C;AAClD,IAAA,IAAA,CAAK,QAAA,CAAS,IAAI,OAAO,CAAA;AAAA,EAC3B;AAAA,EAEA,SAAS,OAAA,EAA4C;AACnD,IAAA,IAAA,CAAK,QAAA,CAAS,OAAO,OAAO,CAAA;AAAA,EAC9B;AAAA,EAEA,IAAI,SAAA,GAAqB;AACvB,IAAA,OAAO,KAAK,SAAA,CAAU,SAAA;AAAA,EACxB;AACF","file":"chunk-AL6BU3SP.js","sourcesContent":["import type {\n AgentCommand,\n AgentEvent,\n AgentReconfigureOptions,\n AgentRuntimeConfig,\n ClientTransport,\n IAgentRuntime,\n} from \"@skaile/workspaces/types\";\n\n/**\n * Framework-agnostic protocol client for remote skaile agent servers.\n *\n * Implements `IAgentRuntime` over a pluggable `ClientTransport` (WebSocket, stdio,\n * in-process mock, etc.). Translates each `IAgentRuntime` method call into a typed\n * `AgentCommand` sent through the transport, and fans incoming `AgentEvent` messages\n * out to all handlers registered via `onEvent`. Key methods: `start()` optionally\n * connects the transport and sends initial configuration; `configure()` reconfigures\n * the agent at runtime; `prompt()` sends a user message; `sendStateAction()` pushes\n * an action to a shared state store; `dispose()` sends a shutdown command and\n * disconnects the transport.\n *\n * One `AgentClient` instance represents one connection to one agent server. Mapping\n * multiple session IDs to client instances is the consumer's responsibility (e.g.\n * `WsAgentGatewayService` in the platform backend uses `Map<sessionId, AgentClient>`).\n *\n * @example\n * ```ts\n * const transport = new WebSocketClientTransport({ url: 'ws://localhost:8080' });\n * const client = new AgentClient(transport);\n * await client.start({ projectDir: '/my/project' });\n * client.onEvent((e) => console.log(e));\n * await client.prompt('Hello');\n * await client.dispose();\n * ```\n *\n * @docLink packages/client/dev-guide#agent-client\n */\nexport class AgentClient implements IAgentRuntime {\n private readonly transport: ClientTransport;\n private readonly handlers = new Set<(event: AgentEvent) => void>();\n private readonly unsubTransport: () => void;\n\n constructor(transport: ClientTransport) {\n this.transport = transport;\n this.unsubTransport = transport.onMessage((event) => {\n for (const handler of this.handlers) {\n handler(event);\n }\n });\n }\n\n /** Connect transport (if needed) and send initial configuration. */\n async start(config: AgentRuntimeConfig): Promise<void> {\n if (!this.transport.connected) {\n await this.transport.connect();\n }\n await this.configure(config);\n }\n\n /**\n * @deprecated v2 reconfigure path. Protocol v3 replaces this with a one-shot\n * `SessionInitCommand` envelope sent at session start; mid-session reconfig is\n * routed through the `runner.*` capability surface. Kept for v2 callers; the\n * cast survives because the wire shape is no longer in the `AgentCommand`\n * union. Remove once forge apps have migrated to v3.\n */\n // @TODO: Code-Review: deprecated v2→v3 migration stub — remove once forge apps no longer call configure(); tracked as pre-publication cleanup\n async configure(config: AgentReconfigureOptions): Promise<void> {\n this.transport.send({ type: \"configure\", config } as unknown as AgentCommand);\n }\n\n /** Send a raw AgentCommand to the server. */\n send(command: AgentCommand): void {\n this.transport.send(command);\n }\n\n /** Send a user message to the agent. */\n async prompt(message: string): Promise<void> {\n this.transport.send({ type: \"prompt\", prompt: message });\n }\n\n /**\n * Answer an agent question. Pass `question` — verbatim from the `question`\n * event being answered — whenever the user can answer a multi-question call\n * out of order; without it the agent fills its next unanswered slot.\n */\n async reply(answer: string, question?: string): Promise<void> {\n this.transport.send({ type: \"reply\", answer, ...(question !== undefined ? { question } : {}) });\n }\n\n /** Cancel the current operation. */\n async abort(): Promise<void> {\n this.transport.send({ type: \"cancel\" });\n }\n\n /** Shut down the agent and disconnect transport. */\n async dispose(): Promise<void> {\n this.transport.send({ type: \"shutdown\" });\n this.unsubTransport();\n await this.transport.disconnect();\n }\n\n /**\n * @deprecated v2 shared-state mutation path. Protocol v3 routes shared-state\n * writes through the `runner.set_state` capability; this client method stays\n * as a stop-gap for v2 callers. The cast survives because `state_action` is\n * no longer in the `AgentCommand` union. Remove once forge apps have\n * migrated to v3.\n */\n // @TODO: Code-Review: deprecated v2 stop-gap with unsafe `as unknown as AgentCommand` cast — remove once forge apps use runner.set_state capability\n sendStateAction(store: string, action: Record<string, unknown>): void {\n this.transport.send({ type: \"state_action\", store, action } as unknown as AgentCommand);\n }\n\n onEvent(handler: (event: AgentEvent) => void): void {\n this.handlers.add(handler);\n }\n\n offEvent(handler: (event: AgentEvent) => void): void {\n this.handlers.delete(handler);\n }\n\n get isRunning(): boolean {\n return this.transport.connected;\n }\n}\n"]}