@skaile/workspaces 4.6.0 → 4.7.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 (182) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/{asset-feeds-3XUEJHLJ.js → asset-feeds-CV7EE4GI.js} +7 -7
  3. package/dist/{asset-feeds-3XUEJHLJ.js.map → asset-feeds-CV7EE4GI.js.map} +1 -1
  4. package/dist/asset-manager/catalog-deployer.js +3 -3
  5. package/dist/asset-manager/index.js +6 -6
  6. package/dist/asset-manager/installer.js +4 -4
  7. package/dist/bridge/codex-app-server.js +4 -4
  8. package/dist/bridge/drivers/claude-sdk.js +52 -9
  9. package/dist/bridge/drivers/claude-sdk.js.map +1 -1
  10. package/dist/bridge/drivers/codex.js +6 -6
  11. package/dist/bridge/drivers/continue.js +6 -6
  12. package/dist/bridge/drivers/echo.js +1 -1
  13. package/dist/bridge/drivers/gemini.js +4 -4
  14. package/dist/bridge/drivers/goose.js +6 -6
  15. package/dist/bridge/drivers/omp.js +1 -1
  16. package/dist/bridge/drivers/opencode.js +6 -6
  17. package/dist/bridge/drivers/qwen.js +4 -4
  18. package/dist/bridge/index.js +6 -6
  19. package/dist/bridge/src/drivers/claude-sdk.d.ts +16 -0
  20. package/dist/bridge/src/drivers/claude-sdk.d.ts.map +1 -1
  21. package/dist/{chunk-YNZ5FIFH.js → chunk-4AAEBUX7.js} +7 -7
  22. package/dist/{chunk-YNZ5FIFH.js.map → chunk-4AAEBUX7.js.map} +1 -1
  23. package/dist/{chunk-JXCUUZA3.js → chunk-4ZTPYIBE.js} +9 -6
  24. package/dist/chunk-4ZTPYIBE.js.map +1 -0
  25. package/dist/{chunk-KMFZVPYR.js → chunk-5GYFYGVW.js} +2 -2
  26. package/dist/{chunk-KMFZVPYR.js.map → chunk-5GYFYGVW.js.map} +1 -1
  27. package/dist/{chunk-2HZJKDLG.js → chunk-7UM46L33.js} +2 -2
  28. package/dist/{chunk-2HZJKDLG.js.map → chunk-7UM46L33.js.map} +1 -1
  29. package/dist/{chunk-EVVE4SL4.js → chunk-A42QGGSB.js} +3 -3
  30. package/dist/{chunk-EVVE4SL4.js.map → chunk-A42QGGSB.js.map} +1 -1
  31. package/dist/{chunk-UJPVUN6H.js → chunk-BCXZ74DM.js} +4 -4
  32. package/dist/{chunk-UJPVUN6H.js.map → chunk-BCXZ74DM.js.map} +1 -1
  33. package/dist/{chunk-PTETBRRC.js → chunk-DS7B54NF.js} +3 -3
  34. package/dist/{chunk-PTETBRRC.js.map → chunk-DS7B54NF.js.map} +1 -1
  35. package/dist/{chunk-KW7YIRYL.js → chunk-DYT3AQBM.js} +44 -4
  36. package/dist/chunk-DYT3AQBM.js.map +1 -0
  37. package/dist/{chunk-6ZQU5WKJ.js → chunk-HBBVWZ4T.js} +4 -4
  38. package/dist/{chunk-6ZQU5WKJ.js.map → chunk-HBBVWZ4T.js.map} +1 -1
  39. package/dist/{chunk-K27T47OO.js → chunk-HKOC273F.js} +71 -5
  40. package/dist/chunk-HKOC273F.js.map +1 -0
  41. package/dist/{chunk-COK4WPU4.js → chunk-HR2AGPLJ.js} +4 -4
  42. package/dist/{chunk-COK4WPU4.js.map → chunk-HR2AGPLJ.js.map} +1 -1
  43. package/dist/{chunk-SAXTWLXZ.js → chunk-HVTU3CVF.js} +187 -48
  44. package/dist/chunk-HVTU3CVF.js.map +1 -0
  45. package/dist/{chunk-W3YYB7K7.js → chunk-IECSLI55.js} +3 -3
  46. package/dist/{chunk-W3YYB7K7.js.map → chunk-IECSLI55.js.map} +1 -1
  47. package/dist/{chunk-QVTROHEZ.js → chunk-IUVPPJ4T.js} +3 -3
  48. package/dist/{chunk-QVTROHEZ.js.map → chunk-IUVPPJ4T.js.map} +1 -1
  49. package/dist/{chunk-35XUCUKZ.js → chunk-J2NEKEZK.js} +3 -3
  50. package/dist/{chunk-35XUCUKZ.js.map → chunk-J2NEKEZK.js.map} +1 -1
  51. package/dist/{chunk-DXXIALYF.js → chunk-JH63TVZG.js} +5 -5
  52. package/dist/{chunk-DXXIALYF.js.map → chunk-JH63TVZG.js.map} +1 -1
  53. package/dist/{chunk-WVSF3IEQ.js → chunk-JWWER4L5.js} +2 -2
  54. package/dist/{chunk-WVSF3IEQ.js.map → chunk-JWWER4L5.js.map} +1 -1
  55. package/dist/{chunk-63PBQN5U.js → chunk-MHROUPZN.js} +9 -9
  56. package/dist/{chunk-63PBQN5U.js.map → chunk-MHROUPZN.js.map} +1 -1
  57. package/dist/{chunk-NWZQMJTI.js → chunk-NIHNZC6E.js} +3 -3
  58. package/dist/{chunk-NWZQMJTI.js.map → chunk-NIHNZC6E.js.map} +1 -1
  59. package/dist/{chunk-VZOUBMM4.js → chunk-NV6R6HJR.js} +5 -5
  60. package/dist/{chunk-VZOUBMM4.js.map → chunk-NV6R6HJR.js.map} +1 -1
  61. package/dist/{chunk-TRGMQUAZ.js → chunk-NYRLSXTB.js} +66 -47
  62. package/dist/chunk-NYRLSXTB.js.map +1 -0
  63. package/dist/{chunk-D3332IMQ.js → chunk-P2PXD3AF.js} +6 -6
  64. package/dist/{chunk-D3332IMQ.js.map → chunk-P2PXD3AF.js.map} +1 -1
  65. package/dist/{chunk-CU32AWH5.js → chunk-Q5WGUPC5.js} +3 -3
  66. package/dist/{chunk-CU32AWH5.js.map → chunk-Q5WGUPC5.js.map} +1 -1
  67. package/dist/{chunk-ZGYPEVZW.js → chunk-RN3N7PHY.js} +5 -5
  68. package/dist/{chunk-ZGYPEVZW.js.map → chunk-RN3N7PHY.js.map} +1 -1
  69. package/dist/{chunk-5CDL6VZQ.js → chunk-S5TEP5WI.js} +7 -7
  70. package/dist/{chunk-5CDL6VZQ.js.map → chunk-S5TEP5WI.js.map} +1 -1
  71. package/dist/{chunk-REILIKVM.js → chunk-SU5LVG6T.js} +3 -3
  72. package/dist/{chunk-REILIKVM.js.map → chunk-SU5LVG6T.js.map} +1 -1
  73. package/dist/{chunk-23BTREZQ.js → chunk-TKHJXUG3.js} +4 -4
  74. package/dist/{chunk-23BTREZQ.js.map → chunk-TKHJXUG3.js.map} +1 -1
  75. package/dist/{chunk-V7SHQXDI.js → chunk-U4LC6PLI.js} +3 -3
  76. package/dist/{chunk-V7SHQXDI.js.map → chunk-U4LC6PLI.js.map} +1 -1
  77. package/dist/{chunk-YSJKLJD4.js → chunk-VRBEMXEM.js} +3 -3
  78. package/dist/{chunk-YSJKLJD4.js.map → chunk-VRBEMXEM.js.map} +1 -1
  79. package/dist/{chunk-2CFREMKM.js → chunk-XENB453B.js} +4 -4
  80. package/dist/{chunk-2CFREMKM.js.map → chunk-XENB453B.js.map} +1 -1
  81. package/dist/cli/index.js +50 -50
  82. package/dist/connectors/config.js +4 -4
  83. package/dist/connectors/index.js +9 -9
  84. package/dist/connectors/src/config.d.ts.map +1 -1
  85. package/dist/connectors/src/connector-manager.d.ts +9 -0
  86. package/dist/connectors/src/connector-manager.d.ts.map +1 -1
  87. package/dist/connectors/src/connector-prompt.d.ts.map +1 -1
  88. package/dist/connectors/src/connector-types.d.ts +25 -0
  89. package/dist/connectors/src/connector-types.d.ts.map +1 -1
  90. package/dist/connectors/src/index.d.ts +2 -2
  91. package/dist/connectors/src/index.d.ts.map +1 -1
  92. package/dist/core/index.js +3 -3
  93. package/dist/core/runtime-assets.js +2 -2
  94. package/dist/core/src/index.d.ts +1 -1
  95. package/dist/core/src/index.d.ts.map +1 -1
  96. package/dist/core/src/workspace-config.d.ts +64 -0
  97. package/dist/core/src/workspace-config.d.ts.map +1 -1
  98. package/dist/core/workspace-config.js +1 -1
  99. package/dist/deploy/index.js +3 -3
  100. package/dist/{ensure-sources-MFQDQPYL.js → ensure-sources-E5C3NAZ5.js} +9 -9
  101. package/dist/{ensure-sources-MFQDQPYL.js.map → ensure-sources-E5C3NAZ5.js.map} +1 -1
  102. package/dist/factory-assets/connectors/box.js +9 -9
  103. package/dist/factory-assets/connectors/deploy.js +9 -9
  104. package/dist/factory-assets/connectors/devserver.js +9 -9
  105. package/dist/factory-assets/connectors/flow/adapter.js +9 -9
  106. package/dist/factory-assets/connectors/flow/engine.js +4 -4
  107. package/dist/factory-assets/connectors/flow/run-flow.js +10 -10
  108. package/dist/factory-assets/connectors/flow.js +9 -9
  109. package/dist/factory-assets/connectors/git.js +9 -9
  110. package/dist/factory-assets/connectors/gmail.js +9 -9
  111. package/dist/factory-assets/connectors/googledrive.js +9 -9
  112. package/dist/factory-assets/connectors/local.js +9 -9
  113. package/dist/factory-assets/connectors/mattermost.js +9 -9
  114. package/dist/factory-assets/connectors/memory.js +9 -9
  115. package/dist/factory-assets/connectors/minio.js +9 -9
  116. package/dist/factory-assets/connectors/postgres.js +9 -9
  117. package/dist/factory-assets/connectors/s3.js +9 -9
  118. package/dist/factory-assets/connectors/sharepoint.js +9 -9
  119. package/dist/factory-assets/connectors/sqlite.js +9 -9
  120. package/dist/factory-assets/connectors/static-server.js +9 -9
  121. package/dist/factory-assets/connectors/tunnel.js +9 -9
  122. package/dist/factory-assets/connectors/webdav.js +9 -9
  123. package/dist/factory-assets/connectors/xstate-store.js +9 -9
  124. package/dist/factory-assets/connectors/xstate.js +9 -9
  125. package/dist/{flows-X4KJC4RH.js → flows-DAA2HPCK.js} +6 -6
  126. package/dist/{flows-X4KJC4RH.js.map → flows-DAA2HPCK.js.map} +1 -1
  127. package/dist/{helpers-VQLLQ6HB.js → helpers-B37XGJHI.js} +9 -9
  128. package/dist/{helpers-VQLLQ6HB.js.map → helpers-B37XGJHI.js.map} +1 -1
  129. package/dist/library/index.js +4 -4
  130. package/dist/library/install.js +3 -3
  131. package/dist/{library-publish-73SFVNCE.js → library-publish-ANMJDDZH.js} +13 -13
  132. package/dist/{library-publish-73SFVNCE.js.map → library-publish-ANMJDDZH.js.map} +1 -1
  133. package/dist/{open-library-QGTUQMUG.js → open-library-O5HS654Y.js} +11 -11
  134. package/dist/{open-library-QGTUQMUG.js.map → open-library-O5HS654Y.js.map} +1 -1
  135. package/dist/{paths-FRD62K2N.js → paths-LH7LD4CC.js} +6 -6
  136. package/dist/{paths-FRD62K2N.js.map → paths-LH7LD4CC.js.map} +1 -1
  137. package/dist/{plugin-store-54SEASTK.js → plugin-store-A6VLQHCT.js} +5 -5
  138. package/dist/{plugin-store-54SEASTK.js.map → plugin-store-A6VLQHCT.js.map} +1 -1
  139. package/dist/{project-LWS5PYIF.js → project-DLAPSJ36.js} +10 -10
  140. package/dist/{project-LWS5PYIF.js.map → project-DLAPSJ36.js.map} +1 -1
  141. package/dist/resolver/index.js +3 -3
  142. package/dist/runner/index.js +15 -15
  143. package/dist/runner/src/runner-capabilities.d.ts +33 -2
  144. package/dist/runner/src/runner-capabilities.d.ts.map +1 -1
  145. package/dist/runner/src/serial-lock.d.ts +17 -0
  146. package/dist/runner/src/serial-lock.d.ts.map +1 -0
  147. package/dist/runner/src/serve.d.ts.map +1 -1
  148. package/dist/runner/src/session-capability-wiring.d.ts +5 -0
  149. package/dist/runner/src/session-capability-wiring.d.ts.map +1 -1
  150. package/dist/runner/src/session-resource-handlers.d.ts.map +1 -1
  151. package/dist/runner/src/skill-staging.d.ts +76 -0
  152. package/dist/runner/src/skill-staging.d.ts.map +1 -0
  153. package/dist/sdk/asset-manager.js +6 -6
  154. package/dist/sdk/bridge.js +6 -6
  155. package/dist/sdk/core.js +3 -3
  156. package/dist/sdk/flow.js +4 -4
  157. package/dist/sdk/index.js +15 -15
  158. package/dist/sdk/resolver.js +3 -3
  159. package/dist/sdk/runner.js +15 -15
  160. package/dist/{setup-EOJWDJK2.js → setup-TMPJSDCX.js} +13 -13
  161. package/dist/{setup-EOJWDJK2.js.map → setup-TMPJSDCX.js.map} +1 -1
  162. package/dist/{skills-C6NOMIBV.js → skills-ZO66BL2Y.js} +5 -5
  163. package/dist/{skills-C6NOMIBV.js.map → skills-ZO66BL2Y.js.map} +1 -1
  164. package/dist/{source-Q5IIYTRA.js → source-5WMBWNO7.js} +12 -12
  165. package/dist/{source-Q5IIYTRA.js.map → source-5WMBWNO7.js.map} +1 -1
  166. package/dist/{source-manifest-publish-Z3WC4HA2.js → source-manifest-publish-WBVQV3JC.js} +14 -14
  167. package/dist/{source-manifest-publish-Z3WC4HA2.js.map → source-manifest-publish-WBVQV3JC.js.map} +1 -1
  168. package/dist/tui/index.js +15 -15
  169. package/dist/validator-FA2PFW6N.js +5 -0
  170. package/dist/{validator-P5ESKTW5.js.map → validator-FA2PFW6N.js.map} +1 -1
  171. package/dist/workspace-plugin/adapters/mcp.js +6 -6
  172. package/dist/workspace-plugin/adapters/omp.js +10 -10
  173. package/dist/workspace-plugin/index.js +1 -1
  174. package/dist/workspace-plugin/src/tools/validator.d.ts +1 -0
  175. package/dist/workspace-plugin/src/tools/validator.d.ts.map +1 -1
  176. package/package.json +1 -1
  177. package/dist/chunk-JXCUUZA3.js.map +0 -1
  178. package/dist/chunk-K27T47OO.js.map +0 -1
  179. package/dist/chunk-KW7YIRYL.js.map +0 -1
  180. package/dist/chunk-SAXTWLXZ.js.map +0 -1
  181. package/dist/chunk-TRGMQUAZ.js.map +0 -1
  182. package/dist/validator-P5ESKTW5.js +0 -5
@@ -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-X4KJC4RH.js');
77
+ const { flowList } = await import('../../flows-DAA2HPCK.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-X4KJC4RH.js');
86
+ const { flowListSessions } = await import('../../flows-DAA2HPCK.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-C6NOMIBV.js');
95
+ const { skillList } = await import('../../skills-ZO66BL2Y.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-C6NOMIBV.js');
104
+ const { skillSearch } = await import('../../skills-ZO66BL2Y.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-C6NOMIBV.js');
113
+ const { skillShow } = await import('../../skills-ZO66BL2Y.js');
114
114
  return (await skillShow(plugin.projectDir, skill_id)).content[0].text;
115
115
  }
116
116
  },
@@ -163,7 +163,7 @@ function buildOmpToolSet(plugin) {
163
163
  description: "Run a full health check on the workspace config.",
164
164
  parameters: {},
165
165
  handler: async () => {
166
- const { workspaceValidate } = await import('../../validator-P5ESKTW5.js');
166
+ const { workspaceValidate } = await import('../../validator-FA2PFW6N.js');
167
167
  return (await workspaceValidate(plugin, plugin.driver ?? "omp")).content[0].text;
168
168
  }
169
169
  },
@@ -172,7 +172,7 @@ function buildOmpToolSet(plugin) {
172
172
  description: "Show workspace configuration (driver, model, resource counts).",
173
173
  parameters: {},
174
174
  handler: async () => {
175
- const { workspaceInfo } = await import('../../validator-P5ESKTW5.js');
175
+ const { workspaceInfo } = await import('../../validator-FA2PFW6N.js');
176
176
  return (await workspaceInfo(plugin, plugin.driver ?? "omp", plugin.model)).content[0].text;
177
177
  }
178
178
  }
@@ -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-X4KJC4RH.js');
204
+ const { flowList, flowShow, flowListSessions, flowGetSession } = await import('../../flows-DAA2HPCK.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-C6NOMIBV.js');
233
+ const { skillList, skillShow, skillSearch } = await import('../../skills-ZO66BL2Y.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;
@@ -250,7 +250,7 @@ async function handleMountsCommand(plugin, sub, rest) {
250
250
  return "Usage: /mounts list | sync <id> | status <id>";
251
251
  }
252
252
  async function handleValidateCommand(plugin) {
253
- const { workspaceValidate } = await import('../../validator-P5ESKTW5.js');
253
+ const { workspaceValidate } = await import('../../validator-FA2PFW6N.js');
254
254
  return (await workspaceValidate(plugin, plugin.driver ?? "omp")).content[0].text;
255
255
  }
256
256
 
@@ -1,4 +1,4 @@
1
- export { PluginStore, WorkspacePlugin, buildClaudePluginFiles, resolveProjectDir } from '../chunk-2HZJKDLG.js';
1
+ export { PluginStore, WorkspacePlugin, buildClaudePluginFiles, resolveProjectDir } from '../chunk-7UM46L33.js';
2
2
  export { err, ok, okJson } from '../chunk-X5YPJV4N.js';
3
3
  import '../chunk-FTG7CRFD.js';
4
4
  import '../chunk-W4IPN3DD.js';
@@ -8,6 +8,7 @@ interface PluginLike {
8
8
  projectDir: string;
9
9
  connectorManager: {
10
10
  listConnectors(): ConnectorSummary[];
11
+ listFailedConnectors?(): unknown[];
11
12
  } | null;
12
13
  reload(): Promise<void>;
13
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../../../workspace-plugin/src/tools/validator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAkB9C,UAAU,gBAAgB;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AACD,UAAU,UAAU;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE;QAAE,cAAc,IAAI,gBAAgB,EAAE,CAAA;KAAE,GAAG,IAAI,CAAC;IAClE,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB;AAoCD;;;;;;;;;;;;GAYG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,OAAO,CAAC,UAAU,CAAC,CAerB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAoB1E;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CA+C/F;AAED;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAW7E"}
1
+ {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../../../workspace-plugin/src/tools/validator.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAkB9C,UAAU,gBAAgB;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AACD,UAAU,UAAU;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,EAAE;QAChB,cAAc,IAAI,gBAAgB,EAAE,CAAC;QACrC,oBAAoB,CAAC,IAAI,OAAO,EAAE,CAAC;KACpC,GAAG,IAAI,CAAC;IACT,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB;AAmDD;;;;;;;;;;;;GAYG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,OAAO,CAAC,UAAU,CAAC,CAerB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAoB1E;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CA+C/F;AAED;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAS7E"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@skaile/workspaces",
3
- "version": "4.6.0",
3
+ "version": "4.7.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",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../workspace-plugin/src/tools/validator.ts"],"names":["val"],"mappings":"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","file":"chunk-JXCUUZA3.js","sourcesContent":["import { execFile } from \"node:child_process\";\nimport { promisify } from \"node:util\";\nimport type { ToolResult } from \"../types.js\";\nimport { err, okJson } from \"../types.js\";\n\nconst execFileAsync = promisify(execFile);\n\n/**\n * Wall-clock ceiling for the driver-binary probe.\n *\n * `which` searches `PATH`, and a `PATH` entry on a wedged network mount makes\n * the lookup itself unbounded. This runs on an agent request path inside the\n * long-lived `skaile serve` process, so the probe must fail rather than wait.\n */\nconst WHICH_TIMEOUT_MS = 10_000;\n\n// Minimal interface for WorkspacePlugin to avoid circular dep.\n// The unified ConnectorManager owns both filesystem-face (mountable) and\n// tool-face connectors — `listConnectors()` returns both; filesystem-face\n// entries carry a `mountPath`.\ninterface ConnectorSummary {\n id: string;\n driver: string;\n mountPath?: string;\n}\ninterface PluginLike {\n projectDir: string;\n connectorManager: { listConnectors(): ConnectorSummary[] } | null;\n reload(): Promise<void>;\n}\n\n/** Split a manager's connectors into mountable / tool-face groups. */\nfunction splitConnectors(plugin: PluginLike): {\n mounts: ConnectorSummary[];\n connectors: ConnectorSummary[];\n} {\n const all = plugin.connectorManager?.listConnectors() ?? [];\n return {\n mounts: all.filter((c) => typeof c.mountPath === \"string\"),\n connectors: all.filter((c) => typeof c.mountPath !== \"string\"),\n };\n}\n\nfunction maskSecret(value: string): string {\n if (value.length <= 4) return \"****\";\n return `${value.slice(0, 4)}****`;\n}\n\nfunction resolveEnvRef(ref: string): {\n resolved: boolean;\n value?: string;\n provider?: string;\n error?: string;\n} {\n if (ref.startsWith(\"env:\")) {\n const varName = ref.slice(4);\n const val = process.env[varName];\n if (val) return { resolved: true, value: val, provider: \"env\" };\n return { resolved: false, error: `env var '${varName}' is not set` };\n }\n const val = process.env[ref];\n if (val) return { resolved: true, value: val, provider: \"env\" };\n return { resolved: false, error: `'${ref}' not found in environment` };\n}\n\n/**\n * Return a summary of the current workspace configuration.\n *\n * Reports the active driver, model, mount count, connector count, and\n * per-resource descriptors. Endpoints are not summarised here: they live in\n * the session's AI provider registry, which `skaile providers list` prints.\n *\n * @param plugin - Plugin instance (or compatible shape) exposing managers.\n * @param driver - Driver name (e.g. `\"omp\"`, `\"claude-sdk\"`).\n * @param model - Model identifier, if resolved.\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function workspaceInfo(\n plugin: PluginLike,\n driver: string,\n model: string | undefined,\n): Promise<ToolResult> {\n try {\n const { mounts, connectors } = splitConnectors(plugin);\n return okJson({\n driver,\n model,\n mountCount: mounts.length,\n connectorCount: connectors.length,\n mounts: mounts.map((v) => ({ id: v.id, driver: v.driver, mounted: true })),\n connectors: connectors.map((c) => ({ id: c.id, adapter: c.driver })),\n projectDir: plugin.projectDir,\n });\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n\n/**\n * Test resolution of a secret reference.\n *\n * Resolves `env:<VAR>` references against `process.env`. For other provider\n * schemes (e.g. `forge:key`) reports that a running forge/vault context is\n * required. Returns a JSON object with `{ resolved, provider?, masked? }` —\n * the secret value is never returned in plain text.\n *\n * @param ref - Secret reference string, e.g. `\"env:ANTHROPIC_API_KEY\"`.\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function workspaceTestSecret(ref: string): Promise<ToolResult> {\n try {\n const result = resolveEnvRef(ref);\n if (result.resolved && result.value) {\n return okJson({\n resolved: true,\n provider: result.provider,\n masked: maskSecret(result.value),\n });\n }\n if (ref.includes(\":\") && !ref.startsWith(\"env:\")) {\n return okJson({\n resolved: false,\n error: `Provider '${ref.split(\":\")[0]}' requires a running forge/vault context. Use env: refs for standalone validation.`,\n });\n }\n return okJson({ resolved: false, error: result.error });\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n\n/**\n * Run a full health check on the workspace.\n *\n * Checks whether the driver binary is installed, then validates every\n * declared mount and connector. Returns a JSON report with a top-level\n * `passed` boolean and per-resource `ok` flags.\n *\n * @param plugin - Plugin instance (or compatible shape) exposing managers.\n * @param driver - Driver name used to locate the binary (`omp` or `claude`).\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function workspaceValidate(plugin: PluginLike, driver: string): Promise<ToolResult> {\n const report: Record<string, unknown> = {\n driver: { name: driver, installed: false },\n mounts: [] as unknown[],\n connectors: [] as unknown[],\n };\n\n try {\n const binaryName = driver === \"omp\" ? \"omp\" : \"claude\";\n // `killSignal: \"SIGKILL\"`: a process stuck in an uninterruptible wait on a\n // dead mount never receives SIGTERM, so a SIGTERM-based timeout would not\n // actually end it — the same reason the recipe resolver uses SIGKILL.\n await execFileAsync(\"which\", [binaryName], {\n timeout: WHICH_TIMEOUT_MS,\n killSignal: \"SIGKILL\",\n });\n (report.driver as any).installed = true;\n } catch {\n (report.driver as any).installed = false;\n (report.driver as any).hint = `Install the '${driver}' binary to use this driver`;\n }\n\n const { mounts, connectors } = splitConnectors(plugin);\n for (const v of mounts) {\n (report.mounts as any[]).push({\n id: v.id,\n driver: v.driver,\n mounted: true,\n ok: true,\n });\n }\n\n for (const c of connectors) {\n (report.connectors as any[]).push({\n id: c.id,\n adapter: c.driver,\n connected: true,\n ok: true,\n });\n }\n\n report.passed =\n (report.driver as any).installed &&\n (report.mounts as any[]).every((v) => v.ok) &&\n (report.connectors as any[]).every((c) => c.ok);\n\n return okJson(report);\n}\n\n/**\n * Re-read `skaile.yaml` and reinitialise all plugin resources.\n *\n * Delegates to `plugin.reload()`. Returns a JSON object comparing the\n * mount and connector counts before and after the reload.\n *\n * @param plugin - Plugin instance exposing a `reload()` method.\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function workspaceReload(plugin: PluginLike): Promise<ToolResult> {\n try {\n const countBefore = splitConnectors(plugin);\n const before = { mounts: countBefore.mounts.length, connectors: countBefore.connectors.length };\n await plugin.reload();\n const countAfter = splitConnectors(plugin);\n const after = { mounts: countAfter.mounts.length, connectors: countAfter.connectors.length };\n return okJson({ reloaded: true, before, after });\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n"]}