@skaile/workspaces 4.6.0 → 4.8.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 (193) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/{asset-feeds-3XUEJHLJ.js → asset-feeds-YDCXFTJ7.js} +7 -7
  3. package/dist/{asset-feeds-3XUEJHLJ.js.map → asset-feeds-YDCXFTJ7.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-2BLQJDYI.js} +7 -7
  22. package/dist/{chunk-YNZ5FIFH.js.map → chunk-2BLQJDYI.js.map} +1 -1
  23. package/dist/{chunk-WVSF3IEQ.js → chunk-2GCUBS2W.js} +2 -2
  24. package/dist/{chunk-WVSF3IEQ.js.map → chunk-2GCUBS2W.js.map} +1 -1
  25. package/dist/{chunk-DXXIALYF.js → chunk-4P352BUX.js} +5 -5
  26. package/dist/{chunk-DXXIALYF.js.map → chunk-4P352BUX.js.map} +1 -1
  27. package/dist/{chunk-JXCUUZA3.js → chunk-4ZTPYIBE.js} +9 -6
  28. package/dist/chunk-4ZTPYIBE.js.map +1 -0
  29. package/dist/{chunk-KMFZVPYR.js → chunk-5GYFYGVW.js} +2 -2
  30. package/dist/{chunk-KMFZVPYR.js.map → chunk-5GYFYGVW.js.map} +1 -1
  31. package/dist/{chunk-D3332IMQ.js → chunk-74QHEAUT.js} +6 -6
  32. package/dist/{chunk-D3332IMQ.js.map → chunk-74QHEAUT.js.map} +1 -1
  33. package/dist/{chunk-NWZQMJTI.js → chunk-AZSRDONR.js} +4 -4
  34. package/dist/{chunk-NWZQMJTI.js.map → chunk-AZSRDONR.js.map} +1 -1
  35. package/dist/{chunk-UJPVUN6H.js → chunk-BCXZ74DM.js} +4 -4
  36. package/dist/{chunk-UJPVUN6H.js.map → chunk-BCXZ74DM.js.map} +1 -1
  37. package/dist/{chunk-63PBQN5U.js → chunk-DN2V47ER.js} +9 -9
  38. package/dist/{chunk-63PBQN5U.js.map → chunk-DN2V47ER.js.map} +1 -1
  39. package/dist/{chunk-PTETBRRC.js → chunk-DS7B54NF.js} +3 -3
  40. package/dist/{chunk-PTETBRRC.js.map → chunk-DS7B54NF.js.map} +1 -1
  41. package/dist/{chunk-KW7YIRYL.js → chunk-DYT3AQBM.js} +44 -4
  42. package/dist/chunk-DYT3AQBM.js.map +1 -0
  43. package/dist/{chunk-2CFREMKM.js → chunk-EYH5ADRU.js} +4 -4
  44. package/dist/{chunk-2CFREMKM.js.map → chunk-EYH5ADRU.js.map} +1 -1
  45. package/dist/{chunk-5CDL6VZQ.js → chunk-FVYRWGUC.js} +7 -7
  46. package/dist/{chunk-5CDL6VZQ.js.map → chunk-FVYRWGUC.js.map} +1 -1
  47. package/dist/{chunk-2HZJKDLG.js → chunk-GKP22MGV.js} +2 -2
  48. package/dist/{chunk-2HZJKDLG.js.map → chunk-GKP22MGV.js.map} +1 -1
  49. package/dist/{chunk-EVVE4SL4.js → chunk-GKX3QDPN.js} +3 -3
  50. package/dist/{chunk-EVVE4SL4.js.map → chunk-GKX3QDPN.js.map} +1 -1
  51. package/dist/{chunk-K27T47OO.js → chunk-HKOC273F.js} +71 -5
  52. package/dist/chunk-HKOC273F.js.map +1 -0
  53. package/dist/{chunk-COK4WPU4.js → chunk-HR2AGPLJ.js} +4 -4
  54. package/dist/{chunk-COK4WPU4.js.map → chunk-HR2AGPLJ.js.map} +1 -1
  55. package/dist/{chunk-M6VQU5TS.js → chunk-I3UWSGEB.js} +3 -3
  56. package/dist/{chunk-M6VQU5TS.js.map → chunk-I3UWSGEB.js.map} +1 -1
  57. package/dist/{chunk-W3YYB7K7.js → chunk-IECSLI55.js} +3 -3
  58. package/dist/{chunk-W3YYB7K7.js.map → chunk-IECSLI55.js.map} +1 -1
  59. package/dist/{chunk-QVTROHEZ.js → chunk-IUVPPJ4T.js} +3 -3
  60. package/dist/{chunk-QVTROHEZ.js.map → chunk-IUVPPJ4T.js.map} +1 -1
  61. package/dist/{chunk-35XUCUKZ.js → chunk-J2NEKEZK.js} +3 -3
  62. package/dist/{chunk-35XUCUKZ.js.map → chunk-J2NEKEZK.js.map} +1 -1
  63. package/dist/{chunk-TIOT3ZOQ.js → chunk-KLMXMW6Z.js} +3 -3
  64. package/dist/{chunk-TIOT3ZOQ.js.map → chunk-KLMXMW6Z.js.map} +1 -1
  65. package/dist/{chunk-ZGYPEVZW.js → chunk-NMSHQUBY.js} +5 -5
  66. package/dist/{chunk-ZGYPEVZW.js.map → chunk-NMSHQUBY.js.map} +1 -1
  67. package/dist/{chunk-VZOUBMM4.js → chunk-NV6R6HJR.js} +5 -5
  68. package/dist/{chunk-VZOUBMM4.js.map → chunk-NV6R6HJR.js.map} +1 -1
  69. package/dist/{chunk-CU32AWH5.js → chunk-Q5WGUPC5.js} +3 -3
  70. package/dist/{chunk-CU32AWH5.js.map → chunk-Q5WGUPC5.js.map} +1 -1
  71. package/dist/{chunk-53ORCYPJ.js → chunk-REYJKU7T.js} +56 -3
  72. package/dist/chunk-REYJKU7T.js.map +1 -0
  73. package/dist/{chunk-TRGMQUAZ.js → chunk-RRX33TOZ.js} +68 -49
  74. package/dist/chunk-RRX33TOZ.js.map +1 -0
  75. package/dist/{chunk-REILIKVM.js → chunk-SU5LVG6T.js} +3 -3
  76. package/dist/{chunk-REILIKVM.js.map → chunk-SU5LVG6T.js.map} +1 -1
  77. package/dist/{chunk-SAXTWLXZ.js → chunk-TCANYRAF.js} +188 -49
  78. package/dist/chunk-TCANYRAF.js.map +1 -0
  79. package/dist/{chunk-23BTREZQ.js → chunk-TKHJXUG3.js} +4 -4
  80. package/dist/{chunk-23BTREZQ.js.map → chunk-TKHJXUG3.js.map} +1 -1
  81. package/dist/{chunk-V7SHQXDI.js → chunk-U4LC6PLI.js} +3 -3
  82. package/dist/{chunk-V7SHQXDI.js.map → chunk-U4LC6PLI.js.map} +1 -1
  83. package/dist/{chunk-6ZQU5WKJ.js → chunk-UKFLK6V2.js} +4 -4
  84. package/dist/{chunk-6ZQU5WKJ.js.map → chunk-UKFLK6V2.js.map} +1 -1
  85. package/dist/{chunk-YSJKLJD4.js → chunk-VRBEMXEM.js} +3 -3
  86. package/dist/{chunk-YSJKLJD4.js.map → chunk-VRBEMXEM.js.map} +1 -1
  87. package/dist/cli/index.js +53 -53
  88. package/dist/connectors/config.js +4 -4
  89. package/dist/connectors/index.js +11 -11
  90. package/dist/connectors/src/config.d.ts.map +1 -1
  91. package/dist/connectors/src/connector-manager.d.ts +9 -0
  92. package/dist/connectors/src/connector-manager.d.ts.map +1 -1
  93. package/dist/connectors/src/connector-prompt.d.ts.map +1 -1
  94. package/dist/connectors/src/connector-types.d.ts +25 -0
  95. package/dist/connectors/src/connector-types.d.ts.map +1 -1
  96. package/dist/connectors/src/index.d.ts +2 -2
  97. package/dist/connectors/src/index.d.ts.map +1 -1
  98. package/dist/core/index.js +3 -3
  99. package/dist/core/runtime-assets.js +2 -2
  100. package/dist/core/src/index.d.ts +1 -1
  101. package/dist/core/src/index.d.ts.map +1 -1
  102. package/dist/core/src/workspace-config.d.ts +64 -0
  103. package/dist/core/src/workspace-config.d.ts.map +1 -1
  104. package/dist/core/workspace-config.js +1 -1
  105. package/dist/deploy/index.js +3 -3
  106. package/dist/{ensure-sources-MFQDQPYL.js → ensure-sources-65WPFIET.js} +9 -9
  107. package/dist/{ensure-sources-MFQDQPYL.js.map → ensure-sources-65WPFIET.js.map} +1 -1
  108. package/dist/factory-assets/connectors/box.js +11 -11
  109. package/dist/factory-assets/connectors/deploy.js +11 -11
  110. package/dist/factory-assets/connectors/devserver.js +11 -11
  111. package/dist/factory-assets/connectors/flow/CONNECTOR.md +5 -1
  112. package/dist/factory-assets/connectors/flow/adapter.js +11 -11
  113. package/dist/factory-assets/connectors/flow/contract/normalize.d.ts +2 -1
  114. package/dist/factory-assets/connectors/flow/contract/normalize.d.ts.map +1 -1
  115. package/dist/factory-assets/connectors/flow/contract.js +3 -3
  116. package/dist/factory-assets/connectors/flow/engine.js +5 -5
  117. package/dist/factory-assets/connectors/flow/run-flow.js +12 -12
  118. package/dist/factory-assets/connectors/flow.js +11 -11
  119. package/dist/factory-assets/connectors/git.js +11 -11
  120. package/dist/factory-assets/connectors/gmail.js +11 -11
  121. package/dist/factory-assets/connectors/googledrive.js +11 -11
  122. package/dist/factory-assets/connectors/local.js +11 -11
  123. package/dist/factory-assets/connectors/mattermost.js +11 -11
  124. package/dist/factory-assets/connectors/memory.js +11 -11
  125. package/dist/factory-assets/connectors/minio.js +11 -11
  126. package/dist/factory-assets/connectors/postgres.js +11 -11
  127. package/dist/factory-assets/connectors/s3.js +11 -11
  128. package/dist/factory-assets/connectors/sharepoint.js +11 -11
  129. package/dist/factory-assets/connectors/sqlite.js +11 -11
  130. package/dist/factory-assets/connectors/static-server.js +11 -11
  131. package/dist/factory-assets/connectors/tunnel.js +11 -11
  132. package/dist/factory-assets/connectors/webdav.js +11 -11
  133. package/dist/factory-assets/connectors/xstate-store.js +11 -11
  134. package/dist/factory-assets/connectors/xstate.js +11 -11
  135. package/dist/{flows-X4KJC4RH.js → flows-JRWDV3MG.js} +6 -6
  136. package/dist/{flows-X4KJC4RH.js.map → flows-JRWDV3MG.js.map} +1 -1
  137. package/dist/{helpers-VQLLQ6HB.js → helpers-3BHWBCBI.js} +9 -9
  138. package/dist/{helpers-VQLLQ6HB.js.map → helpers-3BHWBCBI.js.map} +1 -1
  139. package/dist/library/index.js +4 -4
  140. package/dist/library/install.js +3 -3
  141. package/dist/{library-publish-73SFVNCE.js → library-publish-VKBT4JEX.js} +14 -14
  142. package/dist/{library-publish-73SFVNCE.js.map → library-publish-VKBT4JEX.js.map} +1 -1
  143. package/dist/{open-library-QGTUQMUG.js → open-library-PSLL6ULI.js} +12 -12
  144. package/dist/{open-library-QGTUQMUG.js.map → open-library-PSLL6ULI.js.map} +1 -1
  145. package/dist/{paths-FRD62K2N.js → paths-LH7LD4CC.js} +6 -6
  146. package/dist/{paths-FRD62K2N.js.map → paths-LH7LD4CC.js.map} +1 -1
  147. package/dist/{plugin-store-54SEASTK.js → plugin-store-A6VLQHCT.js} +5 -5
  148. package/dist/{plugin-store-54SEASTK.js.map → plugin-store-A6VLQHCT.js.map} +1 -1
  149. package/dist/{project-LWS5PYIF.js → project-KVTNJKED.js} +10 -10
  150. package/dist/{project-LWS5PYIF.js.map → project-KVTNJKED.js.map} +1 -1
  151. package/dist/resolver/index.js +3 -3
  152. package/dist/runner/index.js +18 -18
  153. package/dist/runner/src/runner-capabilities.d.ts +33 -2
  154. package/dist/runner/src/runner-capabilities.d.ts.map +1 -1
  155. package/dist/runner/src/serial-lock.d.ts +17 -0
  156. package/dist/runner/src/serial-lock.d.ts.map +1 -0
  157. package/dist/runner/src/serve.d.ts.map +1 -1
  158. package/dist/runner/src/session-capability-wiring.d.ts +5 -0
  159. package/dist/runner/src/session-capability-wiring.d.ts.map +1 -1
  160. package/dist/runner/src/session-resource-handlers.d.ts.map +1 -1
  161. package/dist/runner/src/skill-staging.d.ts +76 -0
  162. package/dist/runner/src/skill-staging.d.ts.map +1 -0
  163. package/dist/sdk/asset-manager.js +6 -6
  164. package/dist/sdk/bridge.js +6 -6
  165. package/dist/sdk/core.js +3 -3
  166. package/dist/sdk/flow.js +5 -5
  167. package/dist/sdk/index.js +18 -18
  168. package/dist/sdk/resolver.js +3 -3
  169. package/dist/sdk/runner.js +18 -18
  170. package/dist/{setup-EOJWDJK2.js → setup-47UHZ7EG.js} +13 -13
  171. package/dist/{setup-EOJWDJK2.js.map → setup-47UHZ7EG.js.map} +1 -1
  172. package/dist/{skills-C6NOMIBV.js → skills-ZO66BL2Y.js} +5 -5
  173. package/dist/{skills-C6NOMIBV.js.map → skills-ZO66BL2Y.js.map} +1 -1
  174. package/dist/{source-Q5IIYTRA.js → source-5Q33HOPF.js} +13 -13
  175. package/dist/{source-Q5IIYTRA.js.map → source-5Q33HOPF.js.map} +1 -1
  176. package/dist/{source-manifest-publish-Z3WC4HA2.js → source-manifest-publish-XHEAWRMG.js} +15 -15
  177. package/dist/{source-manifest-publish-Z3WC4HA2.js.map → source-manifest-publish-XHEAWRMG.js.map} +1 -1
  178. package/dist/tui/index.js +18 -18
  179. package/dist/validator-FA2PFW6N.js +5 -0
  180. package/dist/{validator-P5ESKTW5.js.map → validator-FA2PFW6N.js.map} +1 -1
  181. package/dist/workspace-plugin/adapters/mcp.js +6 -6
  182. package/dist/workspace-plugin/adapters/omp.js +10 -10
  183. package/dist/workspace-plugin/index.js +1 -1
  184. package/dist/workspace-plugin/src/tools/validator.d.ts +1 -0
  185. package/dist/workspace-plugin/src/tools/validator.d.ts.map +1 -1
  186. package/package.json +1 -1
  187. package/dist/chunk-53ORCYPJ.js.map +0 -1
  188. package/dist/chunk-JXCUUZA3.js.map +0 -1
  189. package/dist/chunk-K27T47OO.js.map +0 -1
  190. package/dist/chunk-KW7YIRYL.js.map +0 -1
  191. package/dist/chunk-SAXTWLXZ.js.map +0 -1
  192. package/dist/chunk-TRGMQUAZ.js.map +0 -1
  193. package/dist/validator-P5ESKTW5.js +0 -5
@@ -68,5 +68,5 @@ async function flowFindFlowForSession(projectDir, runId) {
68
68
  }
69
69
 
70
70
  export { flowFindFlowForSession, flowGetSession, flowList, flowListSessions, flowShow };
71
- //# sourceMappingURL=chunk-WVSF3IEQ.js.map
72
- //# sourceMappingURL=chunk-WVSF3IEQ.js.map
71
+ //# sourceMappingURL=chunk-2GCUBS2W.js.map
72
+ //# sourceMappingURL=chunk-2GCUBS2W.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../workspace-plugin/src/tools/flows.ts"],"names":[],"mappings":"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","file":"chunk-WVSF3IEQ.js","sourcesContent":["// src/tools/flows.ts\n\nimport type { ToolResult } from \"../types.js\";\nimport { err, okJson } from \"../types.js\";\nimport { findAiAssetsRoot } from \"../utils/ai-assets.js\";\nimport { readAllSessions } from \"./sessions.js\";\n\n// ── Flow tools ────────────────────────────────────────────────────────────────\n\n/**\n * List all flow definitions available in the project's `ai-assets` directory.\n *\n * Returns a JSON array of summary objects `{ id, name, nodeCount }`.\n * Returns an empty array when no `ai-assets` root is found.\n *\n * @param projectDir - Absolute path to the skaile project root.\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function flowList(projectDir: string): Promise<ToolResult> {\n try {\n const assetsRoot = await findAiAssetsRoot(projectDir);\n if (!assetsRoot) return okJson([]);\n const { loadAllFlows } = await import(\n \"@skaile/workspaces/factory-assets/connectors/flow/engine\"\n );\n const flows = loadAllFlows(assetsRoot);\n const summary = flows.map((f: any) => ({\n id: f.id,\n name: f.name ?? f.id,\n nodeCount: f.nodes?.length ?? 0,\n }));\n return okJson(summary);\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n\n/**\n * Show the full flow definition (nodes, edges, metadata) for a specific flow.\n *\n * @param projectDir - Absolute path to the skaile project root.\n * @param flowId - Flow ID as returned by {@link flowList}.\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function flowShow(projectDir: string, flowId: string): Promise<ToolResult> {\n try {\n const assetsRoot = await findAiAssetsRoot(projectDir);\n if (!assetsRoot) return err(`Flow not found: ${flowId}`);\n const { loadAllFlows } = await import(\n \"@skaile/workspaces/factory-assets/connectors/flow/engine\"\n );\n const flows = loadAllFlows(assetsRoot);\n const flow = flows.find((f: any) => f.id === flowId);\n if (!flow) return err(`Flow not found: ${flowId}`);\n return okJson(flow);\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n\n/**\n * List all past and active flow run sessions for the workspace.\n *\n * Delegates to {@link readAllSessions} (reads `.skaile/sessions/*.json`),\n * sorted newest-first by `updatedAt`.\n *\n * @param projectDir - Absolute path to the skaile project root.\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function flowListSessions(projectDir: string): Promise<ToolResult> {\n try {\n const sessions = await readAllSessions(projectDir);\n return okJson(sessions);\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n\n/**\n * Get driver metadata for a specific flow run session.\n *\n * @param projectDir - Absolute path to the skaile project root.\n * @param runId - Run ID from {@link flowListSessions}.\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function flowGetSession(projectDir: string, runId: string): Promise<ToolResult> {\n try {\n const sessions = await readAllSessions(projectDir);\n const session = sessions.find((s) => s.runId === runId);\n if (!session) return err(`Session not found: ${runId}`);\n return okJson(session);\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n\n/**\n * Resolve and return the flow definition that was used in a past session.\n *\n * Looks up the session by `runId`, reads its `flowId`, then returns the full\n * flow definition from `ai-assets`.\n *\n * @param projectDir - Absolute path to the skaile project root.\n * @param runId - Run ID from {@link flowListSessions}.\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function flowFindFlowForSession(\n projectDir: string,\n runId: string,\n): Promise<ToolResult> {\n try {\n const sessions = await readAllSessions(projectDir);\n const session = sessions.find((s) => s.runId === runId);\n if (!session) return err(`Session not found: ${runId}`);\n\n const assetsRoot = await findAiAssetsRoot(projectDir);\n if (!assetsRoot) return err(`Flow not found for session: ${runId} (no ai-assets root)`);\n\n const { loadAllFlows } = await import(\n \"@skaile/workspaces/factory-assets/connectors/flow/engine\"\n );\n const flows = loadAllFlows(assetsRoot);\n const flow = flows.find((f: any) => f.id === session.flowId);\n if (!flow) return err(`Flow not found: ${session.flowId}`);\n return okJson(flow);\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n"]}
1
+ {"version":3,"sources":["../workspace-plugin/src/tools/flows.ts"],"names":[],"mappings":"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","file":"chunk-2GCUBS2W.js","sourcesContent":["// src/tools/flows.ts\n\nimport type { ToolResult } from \"../types.js\";\nimport { err, okJson } from \"../types.js\";\nimport { findAiAssetsRoot } from \"../utils/ai-assets.js\";\nimport { readAllSessions } from \"./sessions.js\";\n\n// ── Flow tools ────────────────────────────────────────────────────────────────\n\n/**\n * List all flow definitions available in the project's `ai-assets` directory.\n *\n * Returns a JSON array of summary objects `{ id, name, nodeCount }`.\n * Returns an empty array when no `ai-assets` root is found.\n *\n * @param projectDir - Absolute path to the skaile project root.\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function flowList(projectDir: string): Promise<ToolResult> {\n try {\n const assetsRoot = await findAiAssetsRoot(projectDir);\n if (!assetsRoot) return okJson([]);\n const { loadAllFlows } = await import(\n \"@skaile/workspaces/factory-assets/connectors/flow/engine\"\n );\n const flows = loadAllFlows(assetsRoot);\n const summary = flows.map((f: any) => ({\n id: f.id,\n name: f.name ?? f.id,\n nodeCount: f.nodes?.length ?? 0,\n }));\n return okJson(summary);\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n\n/**\n * Show the full flow definition (nodes, edges, metadata) for a specific flow.\n *\n * @param projectDir - Absolute path to the skaile project root.\n * @param flowId - Flow ID as returned by {@link flowList}.\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function flowShow(projectDir: string, flowId: string): Promise<ToolResult> {\n try {\n const assetsRoot = await findAiAssetsRoot(projectDir);\n if (!assetsRoot) return err(`Flow not found: ${flowId}`);\n const { loadAllFlows } = await import(\n \"@skaile/workspaces/factory-assets/connectors/flow/engine\"\n );\n const flows = loadAllFlows(assetsRoot);\n const flow = flows.find((f: any) => f.id === flowId);\n if (!flow) return err(`Flow not found: ${flowId}`);\n return okJson(flow);\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n\n/**\n * List all past and active flow run sessions for the workspace.\n *\n * Delegates to {@link readAllSessions} (reads `.skaile/sessions/*.json`),\n * sorted newest-first by `updatedAt`.\n *\n * @param projectDir - Absolute path to the skaile project root.\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function flowListSessions(projectDir: string): Promise<ToolResult> {\n try {\n const sessions = await readAllSessions(projectDir);\n return okJson(sessions);\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n\n/**\n * Get driver metadata for a specific flow run session.\n *\n * @param projectDir - Absolute path to the skaile project root.\n * @param runId - Run ID from {@link flowListSessions}.\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function flowGetSession(projectDir: string, runId: string): Promise<ToolResult> {\n try {\n const sessions = await readAllSessions(projectDir);\n const session = sessions.find((s) => s.runId === runId);\n if (!session) return err(`Session not found: ${runId}`);\n return okJson(session);\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n\n/**\n * Resolve and return the flow definition that was used in a past session.\n *\n * Looks up the session by `runId`, reads its `flowId`, then returns the full\n * flow definition from `ai-assets`.\n *\n * @param projectDir - Absolute path to the skaile project root.\n * @param runId - Run ID from {@link flowListSessions}.\n *\n * @docLink packages/workspace-plugin/concepts#tool-delivery\n */\nexport async function flowFindFlowForSession(\n projectDir: string,\n runId: string,\n): Promise<ToolResult> {\n try {\n const sessions = await readAllSessions(projectDir);\n const session = sessions.find((s) => s.runId === runId);\n if (!session) return err(`Session not found: ${runId}`);\n\n const assetsRoot = await findAiAssetsRoot(projectDir);\n if (!assetsRoot) return err(`Flow not found for session: ${runId} (no ai-assets root)`);\n\n const { loadAllFlows } = await import(\n \"@skaile/workspaces/factory-assets/connectors/flow/engine\"\n );\n const flows = loadAllFlows(assetsRoot);\n const flow = flows.find((f: any) => f.id === session.flowId);\n if (!flow) return err(`Flow not found: ${session.flowId}`);\n return okJson(flow);\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
- import { logErr } from './chunk-EVVE4SL4.js';
2
- import { flowKindProvider } from './chunk-NWZQMJTI.js';
3
- import { knowledgeKindProvider } from './chunk-COK4WPU4.js';
1
+ import { logErr } from './chunk-GKX3QDPN.js';
2
+ import { flowKindProvider } from './chunk-AZSRDONR.js';
3
+ import { knowledgeKindProvider } from './chunk-HR2AGPLJ.js';
4
4
  import { createDefaultRegistry } from './chunk-M5H4DWIA.js';
5
5
 
6
6
  // cli/src/open-registry.ts
@@ -103,5 +103,5 @@ async function openLibraryManager() {
103
103
  }
104
104
 
105
105
  export { LocalCatalogDisabledError, createFullRegistry, openCatalogSource, openLibrary, openLibraryManager, resolveCatalogSource };
106
- //# sourceMappingURL=chunk-DXXIALYF.js.map
107
- //# sourceMappingURL=chunk-DXXIALYF.js.map
106
+ //# sourceMappingURL=chunk-4P352BUX.js.map
107
+ //# sourceMappingURL=chunk-4P352BUX.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../cli/src/open-registry.ts","../cli/src/open-library.ts"],"names":["source"],"mappings":"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","file":"chunk-DXXIALYF.js","sourcesContent":["/**\n * open-registry.ts — shared helper to create a full AssetKindRegistry.\n *\n * Bootstraps the registry with all built-in providers (9 core + preset)\n * from @skaile/discovery, plus the extension kind providers (flow from\n * @skaile/workspaces/factory-assets/connectors/flow/engine, knowledge from @skaile/library).\n *\n * This is the single registration point for the CLI. All code paths\n * that need a registry (source sync, lib-status, etc.) should use this.\n */\n\nimport type { AssetKindRegistry } from \"@skaile/workspaces/discovery\";\nimport { createDefaultRegistry } from \"@skaile/workspaces/discovery\";\nimport { flowKindProvider } from \"@skaile/workspaces/factory-assets/connectors/flow/engine\";\nimport { knowledgeKindProvider } from \"@skaile/workspaces/library\";\n\n/**\n * Create a fully-configured AssetKindRegistry with all known providers.\n *\n * Registers:\n * - 9 core kinds (skill, agent, connector, mount, mcp-server, contract, prompt, persona, ruleset)\n * - preset (composition entity)\n * - flow (extension, from @skaile/workspaces/factory-assets/connectors/flow/engine)\n * - knowledge (extension, from @skaile/library)\n *\n * @returns An unfrozen registry (auto-freezes on first read)\n */\nexport function createFullRegistry(): AssetKindRegistry {\n const registry = createDefaultRegistry();\n registry.register(flowKindProvider);\n registry.register(knowledgeKindProvider);\n return registry;\n}\n","/**\n * open-library.ts — shared helpers to open the LocalIndex and the configured\n * Catalog source.\n *\n * Lazy-loads the `@skaile/workspaces/library` subpath and returns the\n * LocalIndex instance (backed by `@libsql/client`; runs on Node and Bun).\n * The catalog-source helper reads\n * `~/.skaile/config.yaml` (and project-level overlay if `projectDir` is given)\n * to decide between {@link RemoteCatalogSource} (default — points at\n * `https://skaile.store`) and a {@link LocalCatalogSource} bound to the most\n * recent local library registered via `skaile source add`.\n */\n\nimport { logErr } from \"./helpers.ts\";\nimport { createFullRegistry } from \"./open-registry.ts\";\n\n/** Thrown by {@link openCatalogSource} when `catalog.url` is the `local` sentinel. */\nexport class LocalCatalogDisabledError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"LocalCatalogDisabledError\";\n }\n}\n\n/**\n * Open the LocalIndex with the full kind registry. Exits with code 1\n * if the library directory cannot be created.\n *\n * @returns A `LocalIndex` instance ready for use.\n * @docLink cli/dev-guide#open-library\n */\nexport async function openLibrary() {\n try {\n const { LocalIndex } = await import(\"@skaile/workspaces/library\");\n return new LocalIndex({ kindRegistry: createFullRegistry() });\n } catch (err) {\n logErr(`Could not open LocalIndex: ${err instanceof Error ? err.message : String(err)}`);\n process.exit(1);\n }\n}\n\n/**\n * Resolve the configured **remote** Catalog source for the CLI.\n *\n * Reads `~/.skaile/config.yaml` (plus the optional project-level overlay) and\n * returns a {@link RemoteCatalogSource} pointing at `catalog.url` (default:\n * `https://skaile.store`). The `cache_ttl: 0` config flag flips the source\n * into air-gapped mode: network reads are disabled, only `skaile update`\n * performs refreshes.\n *\n * **Local-mode rejection.** If the resolved config has `catalog.url: local`\n * this helper throws — callers wanting the dispatched local-or-remote source\n * must use {@link resolveCatalogSource}. Remote-only consumers like\n * `skaile update --catalog-only` rely on this strict behaviour.\n *\n * @param opts - Project directory (overlays project config) and explicit overrides.\n * @returns A configured {@link RemoteCatalogSource}.\n * @throws When `catalog.url` is the `local` sentinel.\n * @docLink cli/dev-guide#open-library\n */\nexport async function openCatalogSource(opts?: {\n projectDir?: string;\n baseUrlOverride?: string;\n /** Override the user-config path for tests. */\n userConfigFile?: string;\n}): Promise<\n | import(\"@skaile/workspaces/library\").RemoteCatalogSource\n | import(\"@skaile/workspaces/library\").RestCatalogSource\n> {\n const { resolveConfig, RemoteCatalogSource, RestCatalogSource, isLocalCatalogUrl } = await import(\n \"@skaile/workspaces/library\"\n );\n const cfg = resolveConfig({\n projectDir: opts?.projectDir,\n userConfigFile: opts?.userConfigFile,\n });\n const baseUrl = opts?.baseUrlOverride ?? cfg.catalog.url;\n if (isLocalCatalogUrl(baseUrl)) {\n throw new LocalCatalogDisabledError(\n \"catalog.url is set to 'local' — remote catalog is disabled. \" +\n \"Use `skaile source add <path>` + `skaile source sync` for local sources, \" +\n \"or set `catalog.url: https://skaile.store` in ~/.skaile/config.yaml.\",\n );\n }\n const cacheTtlMs = cfg.catalog.cache_ttl * 1000;\n if (cfg.catalog.framing === \"rest\") {\n return new RestCatalogSource({ baseUrl, cacheTtlMs });\n }\n return new RemoteCatalogSource({ baseUrl, cacheTtlMs });\n}\n\n/**\n * Resolved catalog source plus a close handle for releasing any underlying\n * resources (e.g. the `LocalIndex` SQLite connection in local mode).\n *\n * Callers MUST invoke `close()` when done — typically in a `finally` block.\n * For remote-mode sources `close()` is a no-op, but the contract is uniform\n * so consumers don't have to branch.\n *\n * @docLink cli/dev-guide#open-library\n */\nexport interface ResolvedCatalogSource {\n /** The {@link ICatalogSource} ready for use. */\n source: import(\"@skaile/workspaces/library\").ICatalogSource;\n /** Release any underlying resources (SQLite handle in local mode). */\n close(): void;\n}\n\n/**\n * Resolve the configured Catalog source — local or remote — based on\n * `~/.skaile/config.yaml`.\n *\n * Dispatch:\n * - `catalog.url: local` → opens {@link LocalIndex}, picks the most recently\n * registered local library whose `path` still exists on disk, and returns a\n * {@link LocalCatalogSource} bound to that library. Throws if no usable\n * local library is registered.\n * - any URL → returns {@link RemoteCatalogSource} (same as\n * {@link openCatalogSource}).\n *\n * The returned `close()` releases the underlying `LocalIndex` SQLite handle\n * in local mode (no-op in remote mode). Callers MUST invoke it — typically in\n * a `finally` block — to satisfy `library/CLAUDE.md` § \"Notes for Consumers\".\n *\n * @param opts - Project directory (overlays project config) and explicit overrides.\n * @returns A `ResolvedCatalogSource` carrying the source and a close handle.\n * @throws When `local` is configured but no usable local library is registered.\n * @docLink cli/dev-guide#open-library\n */\nexport async function resolveCatalogSource(opts?: {\n projectDir?: string;\n baseUrlOverride?: string;\n /** Override the user-config path for tests. */\n userConfigFile?: string;\n}): Promise<ResolvedCatalogSource> {\n const {\n resolveConfig,\n RemoteCatalogSource,\n RestCatalogSource,\n LocalCatalogSource,\n isLocalCatalogUrl,\n } = await import(\"@skaile/workspaces/library\");\n const cfg = resolveConfig({\n projectDir: opts?.projectDir,\n userConfigFile: opts?.userConfigFile,\n });\n const baseUrl = opts?.baseUrlOverride ?? cfg.catalog.url;\n\n if (isLocalCatalogUrl(baseUrl)) {\n const fs = await import(\"node:fs\");\n const library = await openLibrary();\n try {\n const sources = await library.listSources();\n type LibraryRow = (typeof sources)[number];\n // Type-narrow: `path` is required for local libraries after the filter.\n const usable = sources\n .filter(\n (s): s is LibraryRow & { path: string } =>\n s.backend === \"local\" && typeof s.path === \"string\" && s.path.length > 0,\n )\n .sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime());\n\n if (usable.length === 0) {\n throw new Error(\n \"catalog.url is set to 'local' but no local library is registered. \" +\n \"Run `skaile source add <path>` first, then `skaile source sync`.\",\n );\n }\n\n // Prefer the most recently added library whose path still exists.\n const present = usable.find((s) => fs.existsSync(s.path));\n if (!present) {\n const head = usable[0];\n throw new Error(\n `catalog.url is set to 'local' but every registered local library has a missing path on disk. ` +\n `Most recent: ${head.path} (library ${head.id}). ` +\n `Re-register with \\`skaile source add <existing-path>\\` or run \\`skaile source list\\` to inspect.`,\n );\n }\n\n const source = new LocalCatalogSource(\n library,\n present.id,\n present.path,\n createFullRegistry(),\n );\n return { source, close: () => library.close() };\n } catch (err) {\n // Release the handle on any failure during dispatch — otherwise the\n // SQLite WAL state leaks for the lifetime of the process.\n library.close();\n throw err;\n }\n }\n\n const cacheTtlMs = cfg.catalog.cache_ttl * 1000;\n const source =\n cfg.catalog.framing === \"rest\"\n ? new RestCatalogSource({ baseUrl, cacheTtlMs })\n : new RemoteCatalogSource({ baseUrl, cacheTtlMs });\n return { source, close: () => {} };\n}\n\n/**\n * Open the LibraryManager bound to the active LocalIndex.\n * Caller owns lifetime — must call `close()` (returned helper closes the\n * underlying LocalIndex).\n *\n * @docLink cli/dev-guide#open-library\n */\nexport async function openLibraryManager(): Promise<{\n manager: import(\"@skaile/workspaces/library\").LibraryManager;\n library: import(\"@skaile/workspaces/library\").LocalIndex;\n close: () => void;\n}> {\n const { LibraryManager } = await import(\"@skaile/workspaces/library\");\n const library = await openLibrary();\n const manager = new LibraryManager(library);\n return { manager, library, close: () => library.close() };\n}\n"]}
1
+ {"version":3,"sources":["../cli/src/open-registry.ts","../cli/src/open-library.ts"],"names":["source"],"mappings":"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","file":"chunk-4P352BUX.js","sourcesContent":["/**\n * open-registry.ts — shared helper to create a full AssetKindRegistry.\n *\n * Bootstraps the registry with all built-in providers (9 core + preset)\n * from @skaile/discovery, plus the extension kind providers (flow from\n * @skaile/workspaces/factory-assets/connectors/flow/engine, knowledge from @skaile/library).\n *\n * This is the single registration point for the CLI. All code paths\n * that need a registry (source sync, lib-status, etc.) should use this.\n */\n\nimport type { AssetKindRegistry } from \"@skaile/workspaces/discovery\";\nimport { createDefaultRegistry } from \"@skaile/workspaces/discovery\";\nimport { flowKindProvider } from \"@skaile/workspaces/factory-assets/connectors/flow/engine\";\nimport { knowledgeKindProvider } from \"@skaile/workspaces/library\";\n\n/**\n * Create a fully-configured AssetKindRegistry with all known providers.\n *\n * Registers:\n * - 9 core kinds (skill, agent, connector, mount, mcp-server, contract, prompt, persona, ruleset)\n * - preset (composition entity)\n * - flow (extension, from @skaile/workspaces/factory-assets/connectors/flow/engine)\n * - knowledge (extension, from @skaile/library)\n *\n * @returns An unfrozen registry (auto-freezes on first read)\n */\nexport function createFullRegistry(): AssetKindRegistry {\n const registry = createDefaultRegistry();\n registry.register(flowKindProvider);\n registry.register(knowledgeKindProvider);\n return registry;\n}\n","/**\n * open-library.ts — shared helpers to open the LocalIndex and the configured\n * Catalog source.\n *\n * Lazy-loads the `@skaile/workspaces/library` subpath and returns the\n * LocalIndex instance (backed by `@libsql/client`; runs on Node and Bun).\n * The catalog-source helper reads\n * `~/.skaile/config.yaml` (and project-level overlay if `projectDir` is given)\n * to decide between {@link RemoteCatalogSource} (default — points at\n * `https://skaile.store`) and a {@link LocalCatalogSource} bound to the most\n * recent local library registered via `skaile source add`.\n */\n\nimport { logErr } from \"./helpers.ts\";\nimport { createFullRegistry } from \"./open-registry.ts\";\n\n/** Thrown by {@link openCatalogSource} when `catalog.url` is the `local` sentinel. */\nexport class LocalCatalogDisabledError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"LocalCatalogDisabledError\";\n }\n}\n\n/**\n * Open the LocalIndex with the full kind registry. Exits with code 1\n * if the library directory cannot be created.\n *\n * @returns A `LocalIndex` instance ready for use.\n * @docLink cli/dev-guide#open-library\n */\nexport async function openLibrary() {\n try {\n const { LocalIndex } = await import(\"@skaile/workspaces/library\");\n return new LocalIndex({ kindRegistry: createFullRegistry() });\n } catch (err) {\n logErr(`Could not open LocalIndex: ${err instanceof Error ? err.message : String(err)}`);\n process.exit(1);\n }\n}\n\n/**\n * Resolve the configured **remote** Catalog source for the CLI.\n *\n * Reads `~/.skaile/config.yaml` (plus the optional project-level overlay) and\n * returns a {@link RemoteCatalogSource} pointing at `catalog.url` (default:\n * `https://skaile.store`). The `cache_ttl: 0` config flag flips the source\n * into air-gapped mode: network reads are disabled, only `skaile update`\n * performs refreshes.\n *\n * **Local-mode rejection.** If the resolved config has `catalog.url: local`\n * this helper throws — callers wanting the dispatched local-or-remote source\n * must use {@link resolveCatalogSource}. Remote-only consumers like\n * `skaile update --catalog-only` rely on this strict behaviour.\n *\n * @param opts - Project directory (overlays project config) and explicit overrides.\n * @returns A configured {@link RemoteCatalogSource}.\n * @throws When `catalog.url` is the `local` sentinel.\n * @docLink cli/dev-guide#open-library\n */\nexport async function openCatalogSource(opts?: {\n projectDir?: string;\n baseUrlOverride?: string;\n /** Override the user-config path for tests. */\n userConfigFile?: string;\n}): Promise<\n | import(\"@skaile/workspaces/library\").RemoteCatalogSource\n | import(\"@skaile/workspaces/library\").RestCatalogSource\n> {\n const { resolveConfig, RemoteCatalogSource, RestCatalogSource, isLocalCatalogUrl } = await import(\n \"@skaile/workspaces/library\"\n );\n const cfg = resolveConfig({\n projectDir: opts?.projectDir,\n userConfigFile: opts?.userConfigFile,\n });\n const baseUrl = opts?.baseUrlOverride ?? cfg.catalog.url;\n if (isLocalCatalogUrl(baseUrl)) {\n throw new LocalCatalogDisabledError(\n \"catalog.url is set to 'local' — remote catalog is disabled. \" +\n \"Use `skaile source add <path>` + `skaile source sync` for local sources, \" +\n \"or set `catalog.url: https://skaile.store` in ~/.skaile/config.yaml.\",\n );\n }\n const cacheTtlMs = cfg.catalog.cache_ttl * 1000;\n if (cfg.catalog.framing === \"rest\") {\n return new RestCatalogSource({ baseUrl, cacheTtlMs });\n }\n return new RemoteCatalogSource({ baseUrl, cacheTtlMs });\n}\n\n/**\n * Resolved catalog source plus a close handle for releasing any underlying\n * resources (e.g. the `LocalIndex` SQLite connection in local mode).\n *\n * Callers MUST invoke `close()` when done — typically in a `finally` block.\n * For remote-mode sources `close()` is a no-op, but the contract is uniform\n * so consumers don't have to branch.\n *\n * @docLink cli/dev-guide#open-library\n */\nexport interface ResolvedCatalogSource {\n /** The {@link ICatalogSource} ready for use. */\n source: import(\"@skaile/workspaces/library\").ICatalogSource;\n /** Release any underlying resources (SQLite handle in local mode). */\n close(): void;\n}\n\n/**\n * Resolve the configured Catalog source — local or remote — based on\n * `~/.skaile/config.yaml`.\n *\n * Dispatch:\n * - `catalog.url: local` → opens {@link LocalIndex}, picks the most recently\n * registered local library whose `path` still exists on disk, and returns a\n * {@link LocalCatalogSource} bound to that library. Throws if no usable\n * local library is registered.\n * - any URL → returns {@link RemoteCatalogSource} (same as\n * {@link openCatalogSource}).\n *\n * The returned `close()` releases the underlying `LocalIndex` SQLite handle\n * in local mode (no-op in remote mode). Callers MUST invoke it — typically in\n * a `finally` block — to satisfy `library/CLAUDE.md` § \"Notes for Consumers\".\n *\n * @param opts - Project directory (overlays project config) and explicit overrides.\n * @returns A `ResolvedCatalogSource` carrying the source and a close handle.\n * @throws When `local` is configured but no usable local library is registered.\n * @docLink cli/dev-guide#open-library\n */\nexport async function resolveCatalogSource(opts?: {\n projectDir?: string;\n baseUrlOverride?: string;\n /** Override the user-config path for tests. */\n userConfigFile?: string;\n}): Promise<ResolvedCatalogSource> {\n const {\n resolveConfig,\n RemoteCatalogSource,\n RestCatalogSource,\n LocalCatalogSource,\n isLocalCatalogUrl,\n } = await import(\"@skaile/workspaces/library\");\n const cfg = resolveConfig({\n projectDir: opts?.projectDir,\n userConfigFile: opts?.userConfigFile,\n });\n const baseUrl = opts?.baseUrlOverride ?? cfg.catalog.url;\n\n if (isLocalCatalogUrl(baseUrl)) {\n const fs = await import(\"node:fs\");\n const library = await openLibrary();\n try {\n const sources = await library.listSources();\n type LibraryRow = (typeof sources)[number];\n // Type-narrow: `path` is required for local libraries after the filter.\n const usable = sources\n .filter(\n (s): s is LibraryRow & { path: string } =>\n s.backend === \"local\" && typeof s.path === \"string\" && s.path.length > 0,\n )\n .sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime());\n\n if (usable.length === 0) {\n throw new Error(\n \"catalog.url is set to 'local' but no local library is registered. \" +\n \"Run `skaile source add <path>` first, then `skaile source sync`.\",\n );\n }\n\n // Prefer the most recently added library whose path still exists.\n const present = usable.find((s) => fs.existsSync(s.path));\n if (!present) {\n const head = usable[0];\n throw new Error(\n `catalog.url is set to 'local' but every registered local library has a missing path on disk. ` +\n `Most recent: ${head.path} (library ${head.id}). ` +\n `Re-register with \\`skaile source add <existing-path>\\` or run \\`skaile source list\\` to inspect.`,\n );\n }\n\n const source = new LocalCatalogSource(\n library,\n present.id,\n present.path,\n createFullRegistry(),\n );\n return { source, close: () => library.close() };\n } catch (err) {\n // Release the handle on any failure during dispatch — otherwise the\n // SQLite WAL state leaks for the lifetime of the process.\n library.close();\n throw err;\n }\n }\n\n const cacheTtlMs = cfg.catalog.cache_ttl * 1000;\n const source =\n cfg.catalog.framing === \"rest\"\n ? new RestCatalogSource({ baseUrl, cacheTtlMs })\n : new RemoteCatalogSource({ baseUrl, cacheTtlMs });\n return { source, close: () => {} };\n}\n\n/**\n * Open the LibraryManager bound to the active LocalIndex.\n * Caller owns lifetime — must call `close()` (returned helper closes the\n * underlying LocalIndex).\n *\n * @docLink cli/dev-guide#open-library\n */\nexport async function openLibraryManager(): Promise<{\n manager: import(\"@skaile/workspaces/library\").LibraryManager;\n library: import(\"@skaile/workspaces/library\").LocalIndex;\n close: () => void;\n}> {\n const { LibraryManager } = await import(\"@skaile/workspaces/library\");\n const library = await openLibrary();\n const manager = new LibraryManager(library);\n return { manager, library, close: () => library.close() };\n}\n"]}
@@ -11,6 +11,11 @@ function splitConnectors(plugin) {
11
11
  connectors: all.filter((c) => typeof c.mountPath !== "string")
12
12
  };
13
13
  }
14
+ function countConnectors(plugin) {
15
+ const { mounts, connectors } = splitConnectors(plugin);
16
+ const failed = plugin.connectorManager?.listFailedConnectors?.() ?? [];
17
+ return { mounts: mounts.length, connectors: connectors.length, failed: failed.length };
18
+ }
14
19
  function maskSecret(value) {
15
20
  if (value.length <= 4) return "****";
16
21
  return `${value.slice(0, 4)}****`;
@@ -102,11 +107,9 @@ async function workspaceValidate(plugin, driver) {
102
107
  }
103
108
  async function workspaceReload(plugin) {
104
109
  try {
105
- const countBefore = splitConnectors(plugin);
106
- const before = { mounts: countBefore.mounts.length, connectors: countBefore.connectors.length };
110
+ const before = countConnectors(plugin);
107
111
  await plugin.reload();
108
- const countAfter = splitConnectors(plugin);
109
- const after = { mounts: countAfter.mounts.length, connectors: countAfter.connectors.length };
112
+ const after = countConnectors(plugin);
110
113
  return okJson({ reloaded: true, before, after });
111
114
  } catch (e) {
112
115
  return err(e instanceof Error ? e.message : String(e));
@@ -114,5 +117,5 @@ async function workspaceReload(plugin) {
114
117
  }
115
118
 
116
119
  export { workspaceInfo, workspaceReload, workspaceTestSecret, workspaceValidate };
117
- //# sourceMappingURL=chunk-JXCUUZA3.js.map
118
- //# sourceMappingURL=chunk-JXCUUZA3.js.map
120
+ //# sourceMappingURL=chunk-4ZTPYIBE.js.map
121
+ //# sourceMappingURL=chunk-4ZTPYIBE.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../workspace-plugin/src/tools/validator.ts"],"names":["val"],"mappings":"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","file":"chunk-4ZTPYIBE.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: {\n listConnectors(): ConnectorSummary[];\n listFailedConnectors?(): unknown[];\n } | 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\n/**\n * Connected mounts/connectors plus the declared-but-failed ones. Without\n * `failed`, a declaration that never connected leaves every count unchanged,\n * which reads the same as a declaration that was never saved.\n */\nfunction countConnectors(plugin: PluginLike): {\n mounts: number;\n connectors: number;\n failed: number;\n} {\n const { mounts, connectors } = splitConnectors(plugin);\n const failed = plugin.connectorManager?.listFailedConnectors?.() ?? [];\n return { mounts: mounts.length, connectors: connectors.length, failed: failed.length };\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 before = countConnectors(plugin);\n await plugin.reload();\n const after = countConnectors(plugin);\n return okJson({ reloaded: true, before, after });\n } catch (e: unknown) {\n return err(e instanceof Error ? e.message : String(e));\n }\n}\n"]}
@@ -791,5 +791,5 @@ async function listModelsForDriver(driverId, registry, options) {
791
791
  }
792
792
 
793
793
  export { AI_PROVIDER_PRESETS, AgentDriver, BUILTIN_DRIVER_CATALOG, DRIVER_CATALOG, PROVIDER_CREDENTIAL_ENV_PREFIX, PROVIDER_CREDENTIAL_ENV_SUFFIX, buildCredentialHeaders, catalogLayer, conventionalCredentialEnvName, createDriver, entryCredentialEnv, entryCredentialValue, expandPreset, getBridgeLogger, getProviderPreset, listDrivers, listModelsForDriver, listProviderPresets, presetBaseUrl, probeProviderEntry, providerCredentialEnvName, registerBuiltinDrivers, registryCredentialEnv, registryDriverConfig, resolveEntryCredential, resolvePresetBaseUrl, resolveProbeUrl, toMergedRegistry };
794
- //# sourceMappingURL=chunk-KMFZVPYR.js.map
795
- //# sourceMappingURL=chunk-KMFZVPYR.js.map
794
+ //# sourceMappingURL=chunk-5GYFYGVW.js.map
795
+ //# sourceMappingURL=chunk-5GYFYGVW.js.map