@skaile/workspaces 0.21.0 → 0.22.0-beta.1
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.
- package/CHANGELOG.md +176 -0
- package/dist/{asset-feeds-CI76R7FI.js → asset-feeds-QXCSAJRN.js} +11 -11
- package/dist/{asset-feeds-CI76R7FI.js.map → asset-feeds-QXCSAJRN.js.map} +1 -1
- package/dist/asset-manager/catalog-deployer.d.ts +2 -0
- package/dist/asset-manager/contrib.d.ts +2 -0
- package/dist/asset-manager/fragments.d.ts +2 -0
- package/dist/asset-manager/history.d.ts +2 -0
- package/dist/asset-manager/index.d.ts +2 -0
- package/dist/asset-manager/index.js +9 -9
- package/dist/asset-manager/installer.d.ts +2 -0
- package/dist/asset-manager/installer.js +8 -8
- package/dist/asset-manager/renderers.d.ts +2 -0
- package/dist/asset-manager/src/index.d.ts +18 -7
- package/dist/asset-manager/src/index.d.ts.map +1 -1
- package/dist/asset-manager/src/installer.d.ts +3 -3
- package/dist/asset-manager/src/installer.d.ts.map +1 -1
- package/dist/base-assets/connectors/deploy.d.ts +2 -0
- package/dist/base-assets/connectors/deploy.js +10 -9
- package/dist/base-assets/connectors/devserver.d.ts +2 -0
- package/dist/base-assets/connectors/devserver.js +10 -9
- package/dist/base-assets/connectors/flow/adapter.js +10 -9
- package/dist/base-assets/connectors/flow/engine.d.ts +2 -0
- package/dist/base-assets/connectors/flow/run-flow.js +11 -10
- package/dist/base-assets/connectors/flow.d.ts +2 -0
- package/dist/base-assets/connectors/flow.js +10 -9
- package/dist/base-assets/connectors/git.d.ts +2 -0
- package/dist/base-assets/connectors/git.js +10 -9
- package/dist/base-assets/connectors/gmail.d.ts +2 -0
- package/dist/base-assets/connectors/gmail.js +10 -9
- package/dist/base-assets/connectors/googledrive.d.ts +2 -0
- package/dist/base-assets/connectors/googledrive.js +10 -9
- package/dist/base-assets/connectors/local.d.ts +2 -0
- package/dist/base-assets/connectors/local.js +10 -9
- package/dist/base-assets/connectors/mattermost.d.ts +2 -0
- package/dist/base-assets/connectors/mattermost.js +10 -9
- package/dist/base-assets/connectors/memory.d.ts +2 -0
- package/dist/base-assets/connectors/memory.js +10 -9
- package/dist/base-assets/connectors/minio.d.ts +2 -0
- package/dist/base-assets/connectors/minio.js +10 -9
- package/dist/base-assets/connectors/postgres.d.ts +2 -0
- package/dist/base-assets/connectors/postgres.js +10 -9
- package/dist/base-assets/connectors/s3.d.ts +2 -0
- package/dist/base-assets/connectors/s3.js +10 -9
- package/dist/base-assets/connectors/sharepoint.d.ts +2 -0
- package/dist/base-assets/connectors/sharepoint.js +10 -9
- package/dist/base-assets/connectors/sqlite.d.ts +2 -0
- package/dist/base-assets/connectors/sqlite.js +10 -9
- package/dist/base-assets/connectors/static-server.d.ts +2 -0
- package/dist/base-assets/connectors/static-server.js +10 -9
- package/dist/base-assets/connectors/tunnel.d.ts +2 -0
- package/dist/base-assets/connectors/tunnel.js +10 -9
- package/dist/base-assets/connectors/webdav.d.ts +2 -0
- package/dist/base-assets/connectors/webdav.js +10 -9
- package/dist/base-assets/connectors/xstate-store.d.ts +2 -0
- package/dist/base-assets/connectors/xstate-store.js +10 -9
- package/dist/base-assets/connectors/xstate.d.ts +2 -0
- package/dist/base-assets/connectors/xstate.js +10 -9
- package/dist/bridge/drivers/claude-sdk.d.ts +2 -0
- package/dist/bridge/drivers/claude-sdk.js +13 -3
- package/dist/bridge/drivers/claude-sdk.js.map +1 -1
- package/dist/bridge/drivers/codex.d.ts +2 -0
- package/dist/bridge/drivers/codex.js +13 -3
- package/dist/bridge/drivers/codex.js.map +1 -1
- package/dist/bridge/drivers/echo.d.ts +2 -0
- package/dist/bridge/drivers/echo.js +13 -4
- package/dist/bridge/drivers/echo.js.map +1 -1
- package/dist/bridge/drivers/omp.d.ts +2 -0
- package/dist/bridge/drivers/omp.js +13 -3
- package/dist/bridge/drivers/omp.js.map +1 -1
- package/dist/bridge/index.d.ts +2 -0
- package/dist/bridge/index.js +3 -2
- package/dist/bridge/src/drivers/claude-sdk.d.ts +7 -0
- package/dist/bridge/src/drivers/claude-sdk.d.ts.map +1 -1
- package/dist/bridge/src/drivers/codex.d.ts +7 -0
- package/dist/bridge/src/drivers/codex.d.ts.map +1 -1
- package/dist/bridge/src/drivers/echo.d.ts +6 -0
- package/dist/bridge/src/drivers/echo.d.ts.map +1 -1
- package/dist/bridge/src/drivers/omp.d.ts +6 -0
- package/dist/bridge/src/drivers/omp.d.ts.map +1 -1
- package/dist/bridge/src/registry.d.ts +34 -34
- package/dist/bridge/src/registry.d.ts.map +1 -1
- package/dist/{chunk-ZWIG55ZX.js → chunk-2XY6732A.js} +3 -3
- package/dist/{chunk-ZWIG55ZX.js.map → chunk-2XY6732A.js.map} +1 -1
- package/dist/{chunk-NCUTHLRV.js → chunk-3ECS5PFD.js} +4 -4
- package/dist/{chunk-NCUTHLRV.js.map → chunk-3ECS5PFD.js.map} +1 -1
- package/dist/{chunk-FRPKLIEZ.js → chunk-4AZKT2BU.js} +13 -13
- package/dist/chunk-4AZKT2BU.js.map +1 -0
- package/dist/chunk-6E6PKKAD.js +161 -0
- package/dist/chunk-6E6PKKAD.js.map +1 -0
- package/dist/{chunk-4ACWI5YT.js → chunk-6VTG73UY.js} +48 -36
- package/dist/chunk-6VTG73UY.js.map +1 -0
- package/dist/{chunk-H45ANMIU.js → chunk-APAOQLPT.js} +3 -3
- package/dist/{chunk-H45ANMIU.js.map → chunk-APAOQLPT.js.map} +1 -1
- package/dist/{chunk-4S4TZDCD.js → chunk-D7K72XEY.js} +3 -3
- package/dist/{chunk-4S4TZDCD.js.map → chunk-D7K72XEY.js.map} +1 -1
- package/dist/{chunk-2WVQMRIE.js → chunk-DKGDOALM.js} +5 -5
- package/dist/{chunk-2WVQMRIE.js.map → chunk-DKGDOALM.js.map} +1 -1
- package/dist/{chunk-DFUXWNTS.js → chunk-GFNW72LW.js} +17 -5
- package/dist/chunk-GFNW72LW.js.map +1 -0
- package/dist/{chunk-37JKX6D7.js → chunk-I3UEM3FX.js} +36 -8
- package/dist/chunk-I3UEM3FX.js.map +1 -0
- package/dist/{chunk-5QNQLSBW.js → chunk-J3VKAEQP.js} +514 -143
- package/dist/chunk-J3VKAEQP.js.map +1 -0
- package/dist/{chunk-BSY56QS7.js → chunk-JHF66MCK.js} +49 -3
- package/dist/chunk-JHF66MCK.js.map +1 -0
- package/dist/{chunk-XAVM2BAJ.js → chunk-LT4DLEYE.js} +114 -619
- package/dist/chunk-LT4DLEYE.js.map +1 -0
- package/dist/{chunk-S2OVTCAL.js → chunk-M5TE6YI5.js} +3 -3
- package/dist/{chunk-S2OVTCAL.js.map → chunk-M5TE6YI5.js.map} +1 -1
- package/dist/{chunk-RDH4SSMH.js → chunk-NJLHHZIW.js} +2 -2
- package/dist/{chunk-RDH4SSMH.js.map → chunk-NJLHHZIW.js.map} +1 -1
- package/dist/{chunk-XGWGLIHZ.js → chunk-PTIHB2TV.js} +5 -5
- package/dist/{chunk-XGWGLIHZ.js.map → chunk-PTIHB2TV.js.map} +1 -1
- package/dist/{chunk-W5DFC35Z.js → chunk-UMOENHVH.js} +279 -133
- package/dist/chunk-UMOENHVH.js.map +1 -0
- package/dist/{chunk-G4BR355S.js → chunk-V3QMSM5I.js} +38 -43
- package/dist/chunk-V3QMSM5I.js.map +1 -0
- package/dist/{chunk-DEQ3OOTU.js → chunk-VCYXVP2S.js} +263 -177
- package/dist/chunk-VCYXVP2S.js.map +1 -0
- package/dist/{chunk-KFDTS7RX.js → chunk-XIHFJVOD.js} +3 -3
- package/dist/{chunk-KFDTS7RX.js.map → chunk-XIHFJVOD.js.map} +1 -1
- package/dist/cli/index.d.ts +2 -0
- package/dist/cli/index.js +762 -472
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/src/commands/deploy.d.ts +24 -0
- package/dist/cli/src/commands/deploy.d.ts.map +1 -0
- package/dist/cli/src/commands/integration.d.ts +19 -0
- package/dist/cli/src/commands/integration.d.ts.map +1 -0
- package/dist/cli/src/commands/manage.d.ts +1 -1
- package/dist/cli/src/commands/plugin-registry-cmd.d.ts +22 -0
- package/dist/cli/src/commands/plugin-registry-cmd.d.ts.map +1 -0
- package/dist/cli/src/commands/project.d.ts.map +1 -1
- package/dist/cli/src/commands/serve.d.ts.map +1 -1
- package/dist/cli/src/commands/source.d.ts.map +1 -1
- package/dist/cli/src/commands/update.d.ts.map +1 -1
- package/dist/cli/src/ensure-sources.d.ts.map +1 -1
- package/dist/cli/src/plugin-store/index.d.ts +37 -0
- package/dist/cli/src/plugin-store/index.d.ts.map +1 -0
- package/dist/cli/src/plugin-store/load.d.ts +35 -0
- package/dist/cli/src/plugin-store/load.d.ts.map +1 -0
- package/dist/cli/src/plugin-store/paths.d.ts +23 -0
- package/dist/cli/src/plugin-store/paths.d.ts.map +1 -0
- package/dist/cli/src/plugin-store/reconcile.d.ts +50 -0
- package/dist/cli/src/plugin-store/reconcile.d.ts.map +1 -0
- package/dist/cli/src/plugin-store/spec.d.ts +25 -0
- package/dist/cli/src/plugin-store/spec.d.ts.map +1 -0
- package/dist/client/index.d.ts +2 -0
- package/dist/connectors/config.d.ts +2 -0
- package/dist/connectors/config.js +8 -8
- package/dist/connectors/index.d.ts +2 -0
- package/dist/connectors/index.js +10 -9
- package/dist/connectors/rclone-config.d.ts +2 -0
- package/dist/connectors/rclone.d.ts +2 -0
- package/dist/connectors/src/connector-manager.d.ts.map +1 -1
- package/dist/connectors/src/connector-registry.d.ts +42 -22
- package/dist/connectors/src/connector-registry.d.ts.map +1 -1
- package/dist/connectors/src/index.d.ts +2 -3
- package/dist/connectors/src/index.d.ts.map +1 -1
- package/dist/connectors-shared/index.d.ts +2 -0
- package/dist/connectors-shared/index.js +8 -0
- package/dist/connectors-shared/index.js.map +1 -0
- package/dist/connectors-shared/src/index.d.ts +11 -0
- package/dist/connectors-shared/src/index.d.ts.map +1 -0
- package/dist/connectors-shared/src/schemas.d.ts +10 -0
- package/dist/connectors-shared/src/schemas.d.ts.map +1 -0
- package/dist/connectors-shared/src/types.d.ts +11 -0
- package/dist/connectors-shared/src/types.d.ts.map +1 -0
- package/dist/core/discovery.d.ts +2 -0
- package/dist/core/driver-targets.d.ts +2 -0
- package/dist/core/framework.d.ts +2 -0
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.js +7 -7
- package/dist/core/logging.d.ts +2 -0
- package/dist/core/manifest.d.ts +2 -0
- package/dist/core/manifest.js +2 -2
- package/dist/core/models.d.ts +2 -0
- package/dist/core/models.js +1 -1
- package/dist/core/runtime-assets.d.ts +2 -0
- package/dist/core/runtime-assets.js +4 -4
- package/dist/core/src/index.d.ts +8 -6
- package/dist/core/src/index.d.ts.map +1 -1
- package/dist/core/src/lock.d.ts +64 -24
- package/dist/core/src/lock.d.ts.map +1 -1
- package/dist/core/src/models.d.ts +66 -47
- package/dist/core/src/models.d.ts.map +1 -1
- package/dist/core/src/repo-manager.d.ts +62 -34
- package/dist/core/src/repo-manager.d.ts.map +1 -1
- package/dist/core/src/runtime-assets.d.ts.map +1 -1
- package/dist/core/src/walker.d.ts +52 -0
- package/dist/core/src/walker.d.ts.map +1 -0
- package/dist/core/src/workspace-config.d.ts +174 -45
- package/dist/core/src/workspace-config.d.ts.map +1 -1
- package/dist/core/src/workspace-yaml-editor.d.ts +53 -16
- package/dist/core/src/workspace-yaml-editor.d.ts.map +1 -1
- package/dist/core/store.d.ts +2 -0
- package/dist/core/workspace-config.d.ts +2 -0
- package/dist/core/workspace-config.js +3 -3
- package/dist/deploy/index.d.ts +2 -0
- package/dist/deploy/index.js +473 -0
- package/dist/deploy/index.js.map +1 -0
- package/dist/deploy/src/handle-store.d.ts +22 -0
- package/dist/deploy/src/handle-store.d.ts.map +1 -0
- package/dist/deploy/src/index.d.ts +21 -0
- package/dist/deploy/src/index.d.ts.map +1 -0
- package/dist/deploy/src/targets/container-runtime.d.ts +39 -0
- package/dist/deploy/src/targets/container-runtime.d.ts.map +1 -0
- package/dist/deploy/src/targets/docker.d.ts +19 -0
- package/dist/deploy/src/targets/docker.d.ts.map +1 -0
- package/dist/deploy/src/targets/local.d.ts +30 -0
- package/dist/deploy/src/targets/local.d.ts.map +1 -0
- package/dist/deploy/src/targets/podman.d.ts +19 -0
- package/dist/deploy/src/targets/podman.d.ts.map +1 -0
- package/dist/deploy/src/targets/port.d.ts +10 -0
- package/dist/deploy/src/targets/port.d.ts.map +1 -0
- package/dist/deploy/src/targets/stream-lines.d.ts +44 -0
- package/dist/deploy/src/targets/stream-lines.d.ts.map +1 -0
- package/dist/discovery/index.d.ts +2 -0
- package/dist/discovery/index.js +3 -3
- package/dist/discovery/src/source-config.d.ts +2 -2
- package/dist/{ensure-sources-IDVQ77NJ.js → ensure-sources-SL2S4UEX.js} +22 -18
- package/dist/ensure-sources-SL2S4UEX.js.map +1 -0
- package/dist/{flows-6BNO4GKK.js → flows-DYFTPCPM.js} +4 -4
- package/dist/{flows-6BNO4GKK.js.map → flows-DYFTPCPM.js.map} +1 -1
- package/dist/library/index.d.ts +2 -0
- package/dist/library/index.js +4 -4
- package/dist/library/src/remote/remote-catalog-source.d.ts +17 -0
- package/dist/library/src/remote/remote-catalog-source.d.ts.map +1 -1
- package/dist/open-library-M4DB3D3J.js +13 -0
- package/dist/{open-library-IOYWFK7M.js.map → open-library-M4DB3D3J.js.map} +1 -1
- package/dist/plugin-registry/index.d.ts +2 -0
- package/dist/plugin-registry/index.js +4 -0
- package/dist/plugin-registry/index.js.map +1 -0
- package/dist/plugin-registry/src/context.d.ts +29 -0
- package/dist/plugin-registry/src/context.d.ts.map +1 -0
- package/dist/plugin-registry/src/deploy-handle.d.ts +76 -0
- package/dist/plugin-registry/src/deploy-handle.d.ts.map +1 -0
- package/dist/plugin-registry/src/deploy-helpers.d.ts +69 -0
- package/dist/plugin-registry/src/deploy-helpers.d.ts.map +1 -0
- package/dist/plugin-registry/src/errors.d.ts +23 -0
- package/dist/plugin-registry/src/errors.d.ts.map +1 -0
- package/dist/plugin-registry/src/index.d.ts +18 -0
- package/dist/plugin-registry/src/index.d.ts.map +1 -0
- package/dist/plugin-registry/src/internal.d.ts +13 -0
- package/dist/plugin-registry/src/internal.d.ts.map +1 -0
- package/dist/plugin-registry/src/registry.d.ts +26 -0
- package/dist/plugin-registry/src/registry.d.ts.map +1 -0
- package/dist/plugin-registry/src/targets.d.ts +46 -0
- package/dist/plugin-registry/src/targets.d.ts.map +1 -0
- package/dist/plugin-store-AJ3FGXIC.js +144 -0
- package/dist/plugin-store-AJ3FGXIC.js.map +1 -0
- package/dist/plugins/index.d.ts +2 -0
- package/dist/resolver/index.d.ts +2 -0
- package/dist/runner/index.d.ts +2 -0
- package/dist/runner/index.js +15 -14
- package/dist/runner/prompt-assembly.d.ts +2 -0
- package/dist/runner/src/resources.d.ts.map +1 -1
- package/dist/runner/src/serve.d.ts.map +1 -1
- package/dist/sdk/asset-manager.d.ts +2 -0
- package/dist/sdk/asset-manager.js +9 -9
- package/dist/sdk/bridge.d.ts +2 -0
- package/dist/sdk/bridge.js +3 -2
- package/dist/sdk/client.d.ts +2 -0
- package/dist/sdk/core.d.ts +2 -0
- package/dist/sdk/core.js +7 -7
- package/dist/sdk/flow.d.ts +2 -0
- package/dist/sdk/index.d.ts +2 -0
- package/dist/sdk/index.js +51 -17
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/resolver.d.ts +2 -0
- package/dist/sdk/runner.d.ts +2 -0
- package/dist/sdk/runner.js +15 -14
- package/dist/sdk/session.d.ts +2 -0
- package/dist/sdk/src/local-runtime.d.ts +8 -0
- package/dist/sdk/src/local-runtime.d.ts.map +1 -1
- package/dist/sdk/src/transport.d.ts +7 -1
- package/dist/sdk/src/transport.d.ts.map +1 -1
- package/dist/sdk/store.d.ts +2 -0
- package/dist/sdk/telemetry.d.ts +2 -0
- package/dist/sdk/transport/ws/client.d.ts +2 -0
- package/dist/sdk/transport/ws/server.d.ts +2 -0
- package/dist/sdk/transport/ws.d.ts +2 -0
- package/dist/sdk/transport.d.ts +2 -0
- package/dist/sdk/types.d.ts +2 -0
- package/dist/secrets/index.d.ts +2 -0
- package/dist/session/index.d.ts +2 -0
- package/dist/{setup-AIOLUTKV.js → setup-GBSQX7JF.js} +12 -11
- package/dist/setup-GBSQX7JF.js.map +1 -0
- package/dist/store/index.d.ts +2 -0
- package/dist/store/react.d.ts +2 -0
- package/dist/store/vue.d.ts +2 -0
- package/dist/store-client-5WBRUC5U.js +14 -0
- package/dist/{store-client-CYEH2GKC.js.map → store-client-5WBRUC5U.js.map} +1 -1
- package/dist/telemetry/index.d.ts +2 -0
- package/dist/transport/index.d.ts +2 -0
- package/dist/transport/ws/client.d.ts +2 -0
- package/dist/transport/ws/server.d.ts +2 -0
- package/dist/transport/ws.d.ts +2 -0
- package/dist/tui/index.d.ts +2 -0
- package/dist/tui/index.js +15 -14
- package/dist/tui/index.js.map +1 -1
- package/dist/types/index.d.ts +2 -0
- package/dist/types/manifests.d.ts +2 -0
- package/dist/workspace-plugin/adapters/mcp.d.ts +2 -0
- package/dist/workspace-plugin/adapters/mcp.js +2 -2
- package/dist/workspace-plugin/adapters/omp.d.ts +2 -0
- package/dist/workspace-plugin/adapters/omp.js +3 -3
- package/dist/workspace-plugin/index.d.ts +2 -0
- package/dist/workspace-plugin/index.js +1 -1
- package/package.json +23 -24
- package/dist/base-assets/connectors/redis/adapter.d.ts +0 -39
- package/dist/base-assets/connectors/redis/adapter.d.ts.map +0 -1
- package/dist/base-assets/connectors/redis.js +0 -20
- package/dist/base-assets/connectors/redis.js.map +0 -1
- package/dist/base-assets/connectors/yjs/adapter.d.ts +0 -50
- package/dist/base-assets/connectors/yjs/adapter.d.ts.map +0 -1
- package/dist/base-assets/connectors/yjs.js +0 -20
- package/dist/base-assets/connectors/yjs.js.map +0 -1
- package/dist/chunk-37JKX6D7.js.map +0 -1
- package/dist/chunk-4ACWI5YT.js.map +0 -1
- package/dist/chunk-5QNQLSBW.js.map +0 -1
- package/dist/chunk-BSY56QS7.js.map +0 -1
- package/dist/chunk-DEQ3OOTU.js.map +0 -1
- package/dist/chunk-DFUXWNTS.js.map +0 -1
- package/dist/chunk-FRPKLIEZ.js.map +0 -1
- package/dist/chunk-G4BR355S.js.map +0 -1
- package/dist/chunk-W5DFC35Z.js.map +0 -1
- package/dist/chunk-XAVM2BAJ.js.map +0 -1
- package/dist/cli/src/commands/plugin.d.ts +0 -14
- package/dist/cli/src/commands/plugin.d.ts.map +0 -1
- package/dist/ensure-sources-IDVQ77NJ.js.map +0 -1
- package/dist/open-library-IOYWFK7M.js +0 -13
- package/dist/setup-AIOLUTKV.js.map +0 -1
- package/dist/store-client-CYEH2GKC.js +0 -14
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-sdk.d.ts","sourceRoot":"","sources":["../../../../bridge/src/drivers/claude-sdk.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"claude-sdk.d.ts","sourceRoot":"","sources":["../../../../bridge/src/drivers/claude-sdk.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { DriverTarget } from "@skaile/workspaces/plugin-registry";
|
|
1
2
|
import type { TokenUsage } from "@skaile/workspaces/types";
|
|
2
3
|
import { type ModelEntry } from "../models.js";
|
|
3
4
|
import { type AgentConfig, AgentDriver, type DriverInfo } from "../types.js";
|
|
@@ -63,4 +64,10 @@ export declare class CodexDriver extends AgentDriver {
|
|
|
63
64
|
private toObject;
|
|
64
65
|
private classifyErrorMessage;
|
|
65
66
|
}
|
|
67
|
+
/**
|
|
68
|
+
* `DriverTarget` wrapper for the codex driver. Registered into the plugin
|
|
69
|
+
* registry by `registerBuiltinDrivers()`. The Codex SDK is lazy-imported inside
|
|
70
|
+
* `start()` — this target export never pulls it at module top.
|
|
71
|
+
*/
|
|
72
|
+
export declare const codexDriverTarget: DriverTarget<AgentConfig>;
|
|
66
73
|
//# sourceMappingURL=codex.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../../bridge/src/drivers/codex.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAU,UAAU,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../../../bridge/src/drivers/codex.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,KAAK,EAAU,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAGnE,OAAO,EAAuB,KAAK,UAAU,EAAE,MAAM,cAAc,CAAC;AAEpE,OAAO,EACL,KAAK,WAAW,EAChB,WAAW,EAIX,KAAK,UAAU,EAChB,MAAM,aAAa,CAAC;AAiCrB;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,WAAY,SAAQ,WAAW;IAC1C,QAAQ,CAAC,UAAU,EAAE,UAAU,CAK7B;IAEF,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAoC;IACxD,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,eAAe,CAAgC;IACvD,OAAO,CAAC,kBAAkB,CAAsB;IAChD,OAAO,CAAC,qBAAqB,CAAuB;IACpD,OAAO,CAAC,mBAAmB,CAAM;IACjC,OAAO,CAAC,iBAAiB,CAAqB;IAC9C,uDAAuD;IACvD,OAAO,CAAC,WAAW,CAA2B;gBAElC,MAAM,EAAE,WAAW;IAK/B,IAAa,gBAAgB,IAAI,MAAM,GAAG,SAAS,CAElD;IAEY,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAwDtB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiDtC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAInC,IAAW,SAAS,IAAI,OAAO,CAE9B;IAEM,IAAI,IAAI,IAAI;IAOJ,UAAU,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IAQ5C,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAO1B,aAAa,IAAI,UAAU,GAAG,IAAI;IAI3C;;;;OAIG;IACH,OAAO,CAAC,qBAAqB;IAyB7B,OAAO,CAAC,iBAAiB;IAoEzB,OAAO,CAAC,gBAAgB;IAuCxB,OAAO,CAAC,kBAAkB;IAuC1B,OAAO,CAAC,sBAAsB;IAmC9B,OAAO,CAAC,iBAAiB;IAmCzB,OAAO,CAAC,gBAAgB;IA6BxB,OAAO,CAAC,eAAe;IA4BvB,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,oBAAoB;CA0E7B;AAED;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,EAAE,YAAY,CAAC,WAAW,CASvD,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { DriverTarget } from "@skaile/workspaces/plugin-registry";
|
|
1
2
|
import { AgentDriver, type AgentConfig, type BridgeCapabilityTool, type DriverInfo } from "../types.js";
|
|
2
3
|
/**
|
|
3
4
|
* Echo/mock driver for E2E testing in docker mode.
|
|
@@ -56,4 +57,9 @@ export declare class EchoDriver extends AgentDriver {
|
|
|
56
57
|
resetSession(): Promise<void>;
|
|
57
58
|
get isRunning(): boolean;
|
|
58
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* `DriverTarget` wrapper for the echo driver. Registered into the plugin
|
|
62
|
+
* registry by `registerBuiltinDrivers()`.
|
|
63
|
+
*/
|
|
64
|
+
export declare const echoDriverTarget: DriverTarget<AgentConfig>;
|
|
59
65
|
//# sourceMappingURL=echo.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"echo.d.ts","sourceRoot":"","sources":["../../../../bridge/src/drivers/echo.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"echo.d.ts","sourceRoot":"","sources":["../../../../bridge/src/drivers/echo.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAMvE,OAAO,EACL,WAAW,EACX,KAAK,WAAW,EAEhB,KAAK,oBAAoB,EACzB,KAAK,UAAU,EAChB,MAAM,aAAa,CAAC;AAErB;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,UAAW,SAAQ,WAAW;IACzC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAK7B;IAEF,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAmC;IACvD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAc;gBAEzB,MAAM,EAAE,WAAW;IAK/B;;;;;OAKG;IACH,mBAAmB,IAAI,oBAAoB,EAAE;IAI7C;;;;;;OAMG;IACG,uBAAuB,CAC3B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,OAAO,GACb,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,OAAO,CAAA;KAAE,CAAC;IAa9C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+C5C;;;;;OAKG;YACW,oBAAoB;IAqB5B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,IAAI,IAAI,IAAI;IAKN,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAInC,IAAI,SAAS,IAAI,OAAO,CAEvB;CACF;AAuGD;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,YAAY,CAAC,WAAW,CAStD,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { DriverTarget } from "@skaile/workspaces/plugin-registry";
|
|
1
2
|
import type { ModelEntry } from "../models.js";
|
|
2
3
|
import { type AgentConfig, AgentDriver, type DriverInfo } from "../types.js";
|
|
3
4
|
/**
|
|
@@ -98,4 +99,9 @@ export declare class OmpDriver extends AgentDriver {
|
|
|
98
99
|
listModels(): Promise<ModelEntry[]>;
|
|
99
100
|
private cleanup;
|
|
100
101
|
}
|
|
102
|
+
/**
|
|
103
|
+
* `DriverTarget` wrapper for the omp driver. Registered into the plugin
|
|
104
|
+
* registry by `registerBuiltinDrivers()`.
|
|
105
|
+
*/
|
|
106
|
+
export declare const ompDriverTarget: DriverTarget<AgentConfig>;
|
|
101
107
|
//# sourceMappingURL=omp.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"omp.d.ts","sourceRoot":"","sources":["../../../../bridge/src/drivers/omp.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"omp.d.ts","sourceRoot":"","sources":["../../../../bridge/src/drivers/omp.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AAIvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C,OAAO,EAAE,KAAK,WAAW,EAAE,WAAW,EAAmB,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAyD9F;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,qBAAa,SAAU,SAAQ,WAAW;IACxC,QAAQ,CAAC,UAAU,EAAE,UAAU,CAK7B;IAEF,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAkC;IACtD,OAAO,CAAC,IAAI,CAA6B;IACzC,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,KAAK,CAAK;IAClB,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,YAAY,CAA8B;IAClD,OAAO,CAAC,YAAY,CAAgB;IACpC,OAAO,CAAC,QAAQ,CAAM;IACtB,+DAA+D;IAC/D,OAAO,CAAC,aAAa,CAAC,CAAS;IAE/B,IAAa,gBAAgB,IAAI,MAAM,GAAG,SAAS,CAElD;IAEQ,QAAQ,IAAI,MAAM,GAAG,SAAS;IAIvC;;;;;;;;OAQG;gBACS,MAAM,EAAE,WAAW;IAKlB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAOrB,MAAM;IAmKpB,OAAO,CAAC,kBAAkB;IAY1B,OAAO,CAAC,WAAW;IAgDnB;;;;OAIG;YACW,gBAAgB;IAqC9B,OAAO,CAAC,MAAM;IAId,OAAO,CAAC,IAAI;IAcZ;;;;;;;;;OASG;IACU,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMnD;;;;;;OAMG;IACU,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAMnC,0EAA0E;IAC1E,IAAW,SAAS,IAAI,OAAO,CAE9B;IAED;;;;;OAKG;IACH,IAAI,IAAI,IAAI;IAON,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAKnC,OAAO,CAAC,oBAAoB;IAyB5B,OAAO,CAAC,oBAAoB;IAuEb,UAAU,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;IA8BlD,OAAO,CAAC,OAAO;CAQhB;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,YAAY,CAAC,WAAW,CASrD,CAAC"}
|
|
@@ -1,35 +1,28 @@
|
|
|
1
|
+
import type { DriverContext } from "@skaile/workspaces/plugin-registry";
|
|
2
|
+
import { type PluginRegistry } from "@skaile/workspaces/plugin-registry";
|
|
1
3
|
import type { ModelEntry } from "./models.js";
|
|
2
|
-
import type { AgentConfig, AgentDriver,
|
|
4
|
+
import type { AgentConfig, AgentDriver, DriverInfo } from "./types.js";
|
|
3
5
|
/**
|
|
4
6
|
* Static capability metadata for every built-in backend.
|
|
5
7
|
*
|
|
6
8
|
* Pure data — this object imports no driver module and references no backend
|
|
7
9
|
* SDK. {@link listDrivers} returns it (merged with any third-party drivers)
|
|
8
10
|
* so selection UIs can enumerate every backend without loading a single
|
|
9
|
-
* driver module. The matching driver module
|
|
10
|
-
*
|
|
11
|
+
* driver module. The matching driver module's `DriverTarget` is registered
|
|
12
|
+
* into the plugin registry by {@link registerBuiltinDrivers}.
|
|
11
13
|
*
|
|
12
14
|
* @docLink packages/bridge/api-reference#registry
|
|
13
15
|
*/
|
|
14
|
-
export declare const
|
|
16
|
+
export declare const BUILTIN_DRIVER_CATALOG: Record<string, DriverInfo>;
|
|
15
17
|
/**
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
* Built-in drivers (`omp`, `claude-sdk`, `codex`, `echo`) self-register when
|
|
19
|
-
* their driver module is imported by {@link loadDriver} — `createDriver` and
|
|
20
|
-
* `listModelsForDriver` trigger that load for the requested id. Third-party
|
|
21
|
-
* drivers can call `registerDriver` directly at any time before the first
|
|
22
|
-
* `createDriver` call that uses their id.
|
|
18
|
+
* Back-compat alias for {@link BUILTIN_DRIVER_CATALOG}. Consumers and tests that
|
|
19
|
+
* predate the plugin-registry refactor still import `DRIVER_CATALOG`.
|
|
23
20
|
*
|
|
24
|
-
* @param id - Stable identifier used to look up the driver (e.g. `"omp"`).
|
|
25
|
-
* @param factory - Function that constructs a new driver instance for the given config.
|
|
26
|
-
* @param info - Static capability metadata returned by {@link listDrivers}.
|
|
27
21
|
* @docLink packages/bridge/api-reference#registry
|
|
28
22
|
*/
|
|
29
|
-
export declare
|
|
23
|
+
export declare const DRIVER_CATALOG: Record<string, DriverInfo>;
|
|
30
24
|
/**
|
|
31
|
-
*
|
|
32
|
-
* self-registers its factory via {@link registerDriver} on import.
|
|
25
|
+
* Register every built-in driver's `DriverTarget` into the plugin registry.
|
|
33
26
|
*
|
|
34
27
|
* This is the single id → module map in bridge core. Every specifier is a
|
|
35
28
|
* literal string so `bun --compile` can statically bundle the driver module
|
|
@@ -38,35 +31,41 @@ export declare function registerDriver(id: string, factory: DriverFactory, info:
|
|
|
38
31
|
* `await import` folds to dead code in the compiled binary. `omp` and `echo`
|
|
39
32
|
* carry no SDK weight and are always available.
|
|
40
33
|
*
|
|
41
|
-
*
|
|
42
|
-
*
|
|
34
|
+
* **Static import discipline.** Every `import()` specifier below must be a
|
|
35
|
+
* string literal — never aliased through a variable. Indirection defeats
|
|
36
|
+
* `bun --compile`'s static analysis and silently drops the module from the
|
|
37
|
+
* binary.
|
|
38
|
+
*
|
|
39
|
+
* Idempotent: guarded by a module flag so a second call is a no-op (a duplicate
|
|
40
|
+
* `register` would otherwise throw `RegistrationError`).
|
|
43
41
|
*
|
|
44
|
-
* @param id - Built-in driver identifier (e.g. `"omp"`, `"claude-sdk"`).
|
|
45
42
|
* @docLink packages/bridge/api-reference#registry
|
|
46
43
|
*/
|
|
47
|
-
export declare function
|
|
44
|
+
export declare function registerBuiltinDrivers(registry?: PluginRegistry): Promise<void>;
|
|
48
45
|
/**
|
|
49
46
|
* Creates a new driver instance for the given backend id.
|
|
50
47
|
*
|
|
51
|
-
*
|
|
52
|
-
*
|
|
53
|
-
* been started yet — call `driver.start()` before sending
|
|
48
|
+
* Ensures the built-in driver targets are registered (idempotent), then looks
|
|
49
|
+
* up the target in the plugin registry and calls its `create()`. The returned
|
|
50
|
+
* driver has not been started yet — call `driver.start()` before sending
|
|
51
|
+
* prompts.
|
|
54
52
|
*
|
|
55
53
|
* @param id - Registered driver identifier (e.g. `"omp"`, `"claude-sdk"`).
|
|
56
54
|
* @param config - Configuration forwarded to the driver constructor.
|
|
55
|
+
* @param ctx - Optional driver context (logger / abort signal). Defaults to `{}`.
|
|
57
56
|
* @returns A freshly constructed (not yet started) {@link AgentDriver}.
|
|
58
57
|
* @throws {Error} When `id` is a known backend excluded from this build, or
|
|
59
58
|
* when `id` does not match any registered driver at all.
|
|
60
59
|
* @docLink packages/bridge/api-reference#registry
|
|
61
60
|
*/
|
|
62
|
-
export declare function createDriver(id: string, config: AgentConfig): Promise<AgentDriver>;
|
|
61
|
+
export declare function createDriver(id: string, config: AgentConfig, ctx?: DriverContext): Promise<AgentDriver>;
|
|
63
62
|
/**
|
|
64
63
|
* Returns the capability metadata for every available driver.
|
|
65
64
|
*
|
|
66
|
-
* Enumerates every built-in backend from {@link
|
|
67
|
-
* loading a single driver module or backend SDK, then merges in any
|
|
68
|
-
*
|
|
69
|
-
*
|
|
65
|
+
* Enumerates every built-in backend from {@link BUILTIN_DRIVER_CATALOG} without
|
|
66
|
+
* loading a single driver module or backend SDK, then merges in any third-party
|
|
67
|
+
* driver targets registered into the plugin registry that are not already in
|
|
68
|
+
* the catalog. Use this to populate driver selection UIs.
|
|
70
69
|
*
|
|
71
70
|
* @returns Array of {@link DriverInfo} objects, one per available driver.
|
|
72
71
|
* @docLink packages/bridge/api-reference#registry
|
|
@@ -75,15 +74,16 @@ export declare function listDrivers(): DriverInfo[];
|
|
|
75
74
|
/**
|
|
76
75
|
* List models available to a specific driver without starting a full agent session.
|
|
77
76
|
*
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
77
|
+
* Ensures the built-in driver targets are registered (idempotent), then
|
|
78
|
+
* delegates to the target's optional `listModels()`. API keys are forwarded so
|
|
79
|
+
* drivers can authenticate against provider REST APIs if needed. Throws on an
|
|
80
|
+
* unknown / not-bundled id (same contract as {@link createDriver}); returns `[]`
|
|
81
|
+
* only when the target exists but exposes no `listModels`.
|
|
83
82
|
*
|
|
84
83
|
* @param driverId - Registered driver id (e.g. `"omp"`, `"claude-sdk"`, `"codex"`).
|
|
85
84
|
* @param apiKeys - Provider API keys keyed by provider name (e.g. `{ anthropic: "sk-..." }`).
|
|
86
85
|
* Pass `settings.apiKeys ?? {}` from forge-assistant's resolved settings.
|
|
86
|
+
* @throws {Error} When `driverId` is unknown or excluded from this build.
|
|
87
87
|
* @docLink packages/bridge/api-reference#registry
|
|
88
88
|
*/
|
|
89
89
|
export declare function listModelsForDriver(driverId: string, apiKeys: Record<string, string>): Promise<ModelEntry[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../bridge/src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../bridge/src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAC;AACxE,OAAO,EAAE,KAAK,cAAc,EAAkB,MAAM,oCAAoC,CAAC;AACzF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAavE;;;;;;;;;;GAUG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAyB7D,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,4BAAyB,CAAC;AAIrD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,sBAAsB,CAC1C,QAAQ,GAAE,cAA+B,GACxC,OAAO,CAAC,IAAI,CAAC,CAqBf;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,YAAY,CAChC,EAAE,EAAE,MAAM,EACV,MAAM,EAAE,WAAW,EACnB,GAAG,CAAC,EAAE,aAAa,GAClB,OAAO,CAAC,WAAW,CAAC,CAGtB;AA2BD;;;;;;;;;;GAUG;AACH,wBAAgB,WAAW,IAAI,UAAU,EAAE,CAoB1C;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,OAAO,CAAC,UAAU,EAAE,CAAC,CAGvB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { findAiAssetsRoot } from './chunk-XCBG2KDC.js';
|
|
2
1
|
import { readAllSessions } from './chunk-HK5FRWG6.js';
|
|
2
|
+
import { findAiAssetsRoot } from './chunk-XCBG2KDC.js';
|
|
3
3
|
import { okJson, err } from './chunk-X5YPJV4N.js';
|
|
4
4
|
|
|
5
5
|
// workspace-plugin/src/tools/flows.ts
|
|
@@ -68,5 +68,5 @@ async function flowFindFlowForSession(projectDir, runId) {
|
|
|
68
68
|
}
|
|
69
69
|
|
|
70
70
|
export { flowFindFlowForSession, flowGetSession, flowList, flowListSessions, flowShow };
|
|
71
|
-
//# sourceMappingURL=chunk-
|
|
72
|
-
//# sourceMappingURL=chunk-
|
|
71
|
+
//# sourceMappingURL=chunk-2XY6732A.js.map
|
|
72
|
+
//# sourceMappingURL=chunk-2XY6732A.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../workspace-plugin/src/tools/flows.ts"],"names":[],"mappings":"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","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../workspace-plugin/src/tools/flows.ts"],"names":[],"mappings":"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","file":"chunk-2XY6732A.js","sourcesContent":["// src/tools/flows.ts\nimport { err, okJson } from \"../types.js\";\nimport type { ToolResult } 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 = findAiAssetsRoot(projectDir);\n if (!assetsRoot) return okJson([]);\n const { loadAllFlows } = await import(\"@skaile/workspaces/base-assets/connectors/flow/engine\");\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 = findAiAssetsRoot(projectDir);\n if (!assetsRoot) return err(`Flow not found: ${flowId}`);\n const { loadAllFlows } = await import(\"@skaile/workspaces/base-assets/connectors/flow/engine\");\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 = findAiAssetsRoot(projectDir);\n if (!assetsRoot) return err(`Flow not found for session: ${runId} (no ai-assets root)`);\n\n const { loadAllFlows } = await import(\"@skaile/workspaces/base-assets/connectors/flow/engine\");\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
1
|
import { logErr } from './chunk-4NDWKA64.js';
|
|
2
|
-
import { knowledgeKindProvider } from './chunk-
|
|
3
|
-
import { createDefaultRegistry } from './chunk-
|
|
2
|
+
import { knowledgeKindProvider } from './chunk-JHF66MCK.js';
|
|
3
|
+
import { createDefaultRegistry } from './chunk-D7K72XEY.js';
|
|
4
4
|
import { flowKindProvider } from './chunk-ICS76R4T.js';
|
|
5
5
|
|
|
6
6
|
// cli/src/open-registry.ts
|
|
@@ -97,5 +97,5 @@ async function openLibraryManager() {
|
|
|
97
97
|
}
|
|
98
98
|
|
|
99
99
|
export { createFullRegistry, openCatalogSource, openLibrary, openLibraryManager, resolveCatalogSource };
|
|
100
|
-
//# sourceMappingURL=chunk-
|
|
101
|
-
//# sourceMappingURL=chunk-
|
|
100
|
+
//# sourceMappingURL=chunk-3ECS5PFD.js.map
|
|
101
|
+
//# sourceMappingURL=chunk-3ECS5PFD.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-NCUTHLRV.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/base-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 { flowKindProvider } from \"@skaile/workspaces/base-assets/connectors/flow/engine\";\nimport type { AssetKindRegistry } from \"@skaile/workspaces/discovery\";\nimport { createDefaultRegistry } from \"@skaile/workspaces/discovery\";\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/base-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/**\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 Error(\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-3ECS5PFD.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/base-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 { flowKindProvider } from \"@skaile/workspaces/base-assets/connectors/flow/engine\";\nimport type { AssetKindRegistry } from \"@skaile/workspaces/discovery\";\nimport { createDefaultRegistry } from \"@skaile/workspaces/discovery\";\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/base-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/**\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 Error(\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,4 +1,4 @@
|
|
|
1
|
-
import { parseDep } from './chunk-
|
|
1
|
+
import { parseDep } from './chunk-I3UEM3FX.js';
|
|
2
2
|
import { readFileSync, readdirSync, statSync } from 'fs';
|
|
3
3
|
import { basename, dirname, join, relative } from 'path';
|
|
4
4
|
import { parse } from 'yaml';
|
|
@@ -35,7 +35,7 @@ function fromSkillMd(filePath, repoName) {
|
|
|
35
35
|
kind,
|
|
36
36
|
description: String(meta.description ?? ""),
|
|
37
37
|
source: filePath,
|
|
38
|
-
|
|
38
|
+
publisher: repoName,
|
|
39
39
|
version: extractVersion(meta),
|
|
40
40
|
requires: parseRequires(meta),
|
|
41
41
|
dependencies: []
|
|
@@ -48,7 +48,7 @@ function fromAgentMd(filePath, repoName) {
|
|
|
48
48
|
kind: "agent",
|
|
49
49
|
description: String(meta.description ?? ""),
|
|
50
50
|
source: filePath,
|
|
51
|
-
|
|
51
|
+
publisher: repoName,
|
|
52
52
|
version: extractVersion(meta),
|
|
53
53
|
requires: parseRequires(meta),
|
|
54
54
|
dependencies: []
|
|
@@ -125,7 +125,7 @@ function fromAgentYaml(filePath, repoName) {
|
|
|
125
125
|
kind: "agent",
|
|
126
126
|
description: String(meta.description ?? ""),
|
|
127
127
|
source: filePath,
|
|
128
|
-
|
|
128
|
+
publisher: repoName,
|
|
129
129
|
version: String(meta.version ?? ""),
|
|
130
130
|
requires,
|
|
131
131
|
dependencies: []
|
|
@@ -139,7 +139,7 @@ function fromPromptMd(filePath, repoName) {
|
|
|
139
139
|
kind: "prompt",
|
|
140
140
|
description: String(meta.description ?? ""),
|
|
141
141
|
source: filePath,
|
|
142
|
-
|
|
142
|
+
publisher: repoName,
|
|
143
143
|
version: extractVersion(meta),
|
|
144
144
|
requires: parseRequires(meta),
|
|
145
145
|
dependencies: []
|
|
@@ -157,7 +157,7 @@ function fromFlowYaml(filePath, repoName) {
|
|
|
157
157
|
kind: "flow",
|
|
158
158
|
description: String(meta.description ?? ""),
|
|
159
159
|
source: filePath,
|
|
160
|
-
|
|
160
|
+
publisher: repoName,
|
|
161
161
|
version: String(meta.version ?? ""),
|
|
162
162
|
requires: parseRequires(meta),
|
|
163
163
|
dependencies: []
|
|
@@ -177,7 +177,7 @@ function fromBundleYaml(filePath, repoName) {
|
|
|
177
177
|
kind: "bundle",
|
|
178
178
|
description: String(meta.description ?? ""),
|
|
179
179
|
source: filePath,
|
|
180
|
-
|
|
180
|
+
publisher: repoName,
|
|
181
181
|
version: String(meta.version ?? ""),
|
|
182
182
|
requires: parseRequires(meta),
|
|
183
183
|
dependencies
|
|
@@ -190,7 +190,7 @@ function fromContractMd(filePath, repoName) {
|
|
|
190
190
|
kind: "contract",
|
|
191
191
|
description: String(meta.description ?? ""),
|
|
192
192
|
source: filePath,
|
|
193
|
-
|
|
193
|
+
publisher: repoName,
|
|
194
194
|
version: extractVersion(meta),
|
|
195
195
|
requires: parseRequires(meta),
|
|
196
196
|
dependencies: []
|
|
@@ -217,7 +217,7 @@ function fromMcpServerMd(filePath, repoName) {
|
|
|
217
217
|
kind: "mcp-server",
|
|
218
218
|
description: String(meta.description ?? ""),
|
|
219
219
|
source: filePath,
|
|
220
|
-
|
|
220
|
+
publisher: repoName,
|
|
221
221
|
version: extractVersion(meta),
|
|
222
222
|
requires: parseRequires(meta),
|
|
223
223
|
dependencies: [],
|
|
@@ -235,7 +235,7 @@ function fromKnowledgeYaml(filePath, repoName) {
|
|
|
235
235
|
kind: "knowledge",
|
|
236
236
|
description: String(meta.description ?? ""),
|
|
237
237
|
source: filePath,
|
|
238
|
-
|
|
238
|
+
publisher: repoName,
|
|
239
239
|
version: String(meta.version ?? ""),
|
|
240
240
|
requires: parseRequires(meta),
|
|
241
241
|
dependencies: []
|
|
@@ -250,7 +250,7 @@ function fromConnectorMd(filePath, repoName) {
|
|
|
250
250
|
kind: "connector",
|
|
251
251
|
description: String(meta.description ?? ""),
|
|
252
252
|
source: filePath,
|
|
253
|
-
|
|
253
|
+
publisher: repoName,
|
|
254
254
|
version: extractVersion(meta),
|
|
255
255
|
requires: parseRequires(meta),
|
|
256
256
|
dependencies: [],
|
|
@@ -351,5 +351,5 @@ function scanDirectory(root, repoName) {
|
|
|
351
351
|
}
|
|
352
352
|
|
|
353
353
|
export { fromAgentMd, fromAgentYaml, fromBundleYaml, fromConnectorMd, fromContractMd, fromFlowYaml, fromKnowledgeYaml, fromMcpServerMd, fromPromptMd, fromSkillMd, parseFrontmatter, parseRequires, scanDirectory, walkDir };
|
|
354
|
-
//# sourceMappingURL=chunk-
|
|
355
|
-
//# sourceMappingURL=chunk-
|
|
354
|
+
//# sourceMappingURL=chunk-4AZKT2BU.js.map
|
|
355
|
+
//# sourceMappingURL=chunk-4AZKT2BU.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../core/src/manifest.ts"],"names":[],"mappings":";;;;;AAkCO,SAAS,iBAAiB,IAAA,EAAiC;AAChE,EAAA,MAAM,CAAA,GAAI,IAAA,CAAK,KAAA,CAAM,0BAA0B,CAAA;AAC/C,EAAA,IAAI,CAAC,CAAA,EAAG,OAAO,EAAE,IAAA,EAAM,EAAC,EAAG,IAAA,EAAM,IAAA,CAAK,IAAA,EAAK,EAAE;AAC7C,EAAA,IAAI;AACF,IAAA,MAAM,OAAQ,KAAA,CAAM,CAAA,CAAE,CAAC,CAAE,KAAiC,EAAC;AAC3D,IAAA,MAAM,IAAA,GAAO,KAAK,KAAA,CAAM,CAAA,CAAE,CAAC,CAAA,CAAE,MAAM,EAAE,IAAA,EAAK;AAC1C,IAAA,OAAO,EAAE,MAAM,IAAA,EAAK;AAAA,EACtB,CAAA,CAAA,MAAQ;AACN,IAAA,OAAO,EAAE,IAAA,EAAM,IAAI,IAAA,EAAM,IAAA,CAAK,MAAK,EAAE;AAAA,EACvC;AACF;AAGA,SAAS,eAAe,IAAA,EAAuC;AAC7D,EAAA,OAAO,MAAA;AAAA,IACL,IAAA,CAAK,OAAA,IAAY,IAAA,CAAK,QAAA,EAAkD,OAAA,IAAW;AAAA,GACrF;AACF;AAaO,SAAS,cAAc,IAAA,EAA6C;AACzE,EAAA,MAAM,GAAA,GAAM,IAAA,CAAK,QAAA,IAAa,IAAA,CAAK,QAAA,EAAkD,QAAA;AACrF,EAAA,IAAI,CAAC,GAAA,EAAK,OAAO,EAAC;AAClB,EAAA,MAAM,IAAA,GACJ,OAAO,GAAA,KAAQ,QAAA,GACX,IAAI,KAAA,CAAM,GAAG,EAAE,GAAA,CAAI,CAAC,MAAM,CAAA,CAAE,IAAA,EAAM,CAAA,GAClC,KAAA,CAAM,QAAQ,GAAG,CAAA,GACd,MACD,EAAC;AACT,EAAA,OAAO,IAAA,CAAK,MAAA,CAAO,OAAO,CAAA,CAAE,IAAI,QAAQ,CAAA;AAC1C;AAcO,SAAS,WAAA,CAAY,UAAkB,QAAA,EAAgC;AAC5E,EAAA,MAAM,EAAE,MAAM,IAAA,EAAK,GAAI,iBAAiB,YAAA,CAAa,QAAA,EAAU,MAAM,CAAC,CAAA;AACtE,EAAA,IAAI,IAAA,GAAO,MAAA,CAAO,IAAA,CAAK,IAAA,IAAQ,OAAO,CAAA;AACtC,EAAA,IAAI,CAAC,CAAC,OAAA,EAAS,OAAA,EAAS,QAAA,EAAU,WAAW,SAAA,EAAW,WAAW,CAAA,CAAE,QAAA,CAAS,IAAI,CAAA;AAChF,IAAA,IAAA,GAAO,OAAA;AACT,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,OAAO,IAAA,CAAK,IAAA,IAAQ,SAAS,OAAA,CAAQ,QAAQ,CAAC,CAAC,CAAA;AAAA,IACrD,IAAA;AAAA,IACA,WAAA,EAAa,MAAA,CAAO,IAAA,CAAK,WAAA,IAAe,EAAE,CAAA;AAAA,IAC1C,MAAA,EAAQ,QAAA;AAAA,IACR,SAAA,EAAW,QAAA;AAAA,IACX,OAAA,EAAS,eAAe,IAAI,CAAA;AAAA,IAC5B,QAAA,EAAU,cAAc,IAAI,CAAA;AAAA,IAC5B,cAAc;AAAC,GACjB;AACF;AAWO,SAAS,WAAA,CAAY,UAAkB,QAAA,EAAgC;AAC5E,EAAA,MAAM,EAAE,MAAM,IAAA,EAAK,GAAI,iBAAiB,YAAA,CAAa,QAAA,EAAU,MAAM,CAAC,CAAA;AACtE,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,OAAO,IAAA,CAAK,IAAA,IAAQ,SAAS,OAAA,CAAQ,QAAQ,CAAC,CAAC,CAAA;AAAA,IACrD,IAAA,EAAM,OAAA;AAAA,IACN,WAAA,EAAa,MAAA,CAAO,IAAA,CAAK,WAAA,IAAe,EAAE,CAAA;AAAA,IAC1C,MAAA,EAAQ,QAAA;AAAA,IACR,SAAA,EAAW,QAAA;AAAA,IACX,OAAA,EAAS,eAAe,IAAI,CAAA;AAAA,IAC5B,QAAA,EAAU,cAAc,IAAI,CAAA;AAAA,IAC5B,cAAc;AAAC,GACjB;AACF;AAYO,SAAS,aAAA,CAAc,UAAkB,QAAA,EAAgC;AAC9E,EAAA,IAAI,OAAgC,EAAC;AACrC,EAAA,IAAI;AACF,IAAA,IAAA,GAAQ,MAAM,YAAA,CAAa,QAAA,EAAU,MAAM,CAAC,KAAiC,EAAC;AAAA,EAChF,CAAA,CAAA,MAAQ;AAAA,EAAC;AAET,EAAA,MAAM,WAAyB,EAAC;AAGhC,EAAA,MAAM,gBAAgB,IAAA,CAAK,QAAA;AAC3B,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,aAAa,CAAA,EAAG;AAChC,IAAA,KAAA,MAAW,KAAK,aAAA,EAAe;AAC7B,MAAA,IAAI,OAAO,CAAA,KAAM,QAAA,IAAY,CAAA,KAAM,IAAA,IAAQ,UAAU,CAAA,EAAG;AACtD,QAAA,QAAA,CAAS,IAAA,CAAK;AAAA,UACZ,IAAA,EAAM,OAAA;AAAA,UACN,IAAA,EAAM,MAAA,CAAQ,CAAA,CAA8B,IAAI;AAAA,SACjD,CAAA;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAGA,EAAA,MAAM,OAAO,IAAA,CAAK,YAAA;AAClB,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,EAAG;AACvB,IAAA,KAAA,MAAW,KAAK,IAAA,EAAM;AACpB,MAAA,IAAI,OAAO,CAAA,KAAM,QAAA,IAAY,CAAA,KAAM,IAAA,IAAQ,UAAU,CAAA,EAAG;AACtD,QAAA,QAAA,CAAS,IAAA,CAAK;AAAA,UACZ,IAAA,EAAM,OAAA;AAAA,UACN,IAAA,EAAM,MAAA,CAAQ,CAAA,CAA8B,IAAI;AAAA,SACjD,CAAA;AAAA,MACH;AAAA,IACF;AAAA,EACF;AAGA,EAAA,MAAM,YAAY,IAAA,CAAK,SAAA;AACvB,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,SAAS,CAAA,EAAG;AAC5B,IAAA,KAAA,MAAW,KAAK,SAAA,EAAW;AACzB,MAAA,IAAI,OAAO,CAAA,KAAM,QAAA,IAAY,CAAA,EAAG;AAC9B,QAAA,QAAA,CAAS,KAAK,EAAE,IAAA,EAAM,OAAA,EAAS,IAAA,EAAM,GAAG,CAAA;AAAA,MAC1C;AAAA,IACF;AAAA,EACF;AAGA,EAAA,MAAM,YAAY,IAAA,CAAK,SAAA;AACvB,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,SAAS,CAAA,EAAG;AAC5B,IAAA,KAAA,MAAW,KAAK,SAAA,EAAW;AACzB,MAAA,IAAI,OAAO,CAAA,KAAM,QAAA,IAAY,CAAA,EAAG;AAC9B,QAAA,QAAA,CAAS,KAAK,EAAE,IAAA,EAAM,UAAA,EAAY,IAAA,EAAM,GAAG,CAAA;AAAA,MAC7C;AAAA,IACF;AAAA,EACF;AAIA,EAAA,KAAA,MAAW,CAAC,KAAA,EAAO,WAAW,CAAA,IAAK;AAAA,IACjC,CAAC,WAAW,SAAS,CAAA;AAAA,IACrB,CAAC,SAAS,SAAS,CAAA;AAAA,IACnB,CAAC,aAAa,WAAW;AAAA,GAC3B,EAAY;AACV,IAAA,MAAM,IAAA,GAAO,KAAK,KAAK,CAAA;AACvB,IAAA,IAAI,CAAC,KAAA,CAAM,OAAA,CAAQ,IAAI,CAAA,EAAG;AAC1B,IAAA,KAAA,MAAW,KAAK,IAAA,EAAM;AACpB,MAAA,IAAI,OAAO,CAAA,KAAM,QAAA,IAAY,CAAC,CAAA,EAAG;AACjC,MAAA,IAAI,EAAE,UAAA,CAAW,GAAG,KAAK,CAAA,CAAE,UAAA,CAAW,GAAG,CAAA,EAAG;AAE5C,MAAA,MAAM,UAAA,GAAa,EAAE,QAAA,CAAS,GAAG,IAAI,CAAA,GAAI,CAAA,EAAG,WAAW,CAAA,CAAA,EAAI,CAAC,CAAA,CAAA;AAE5D,MAAA,MAAM,QAAA,GAAW,UAAA,CAAW,OAAA,CAAQ,GAAG,CAAA;AACvC,MAAA,MAAM,OAAO,UAAA,CAAW,KAAA,CAAM,CAAA,EAAG,QAAQ,EAAE,IAAA,EAAK;AAChD,MAAA,IAAI,OAAO,UAAA,CAAW,KAAA,CAAM,QAAA,GAAW,CAAC,EAAE,IAAA,EAAK;AAC/C,MAAA,MAAM,KAAA,GAAQ,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAC9B,MAAA,IAAI,KAAA,KAAU,IAAI,IAAA,GAAO,IAAA,CAAK,MAAM,CAAA,EAAG,KAAK,EAAE,IAAA,EAAK;AACnD,MAAA,MAAM,OAAA,GAAU,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAChC,MAAA,IAAI,OAAA,KAAY,IAAI,IAAA,GAAO,IAAA,CAAK,MAAM,CAAA,EAAG,OAAO,EAAE,IAAA,EAAK;AACvD,MAAA,IAAI,MAAM,QAAA,CAAS,IAAA,CAAK,EAAE,IAAA,EAAM,MAAM,CAAA;AAAA,IACxC;AAAA,EACF;AAEA,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,OAAO,IAAA,CAAK,IAAA,IAAQ,SAAS,OAAA,CAAQ,QAAQ,CAAC,CAAC,CAAA;AAAA,IACrD,IAAA,EAAM,OAAA;AAAA,IACN,WAAA,EAAa,MAAA,CAAO,IAAA,CAAK,WAAA,IAAe,EAAE,CAAA;AAAA,IAC1C,MAAA,EAAQ,QAAA;AAAA,IACR,SAAA,EAAW,QAAA;AAAA,IACX,OAAA,EAAS,MAAA,CAAO,IAAA,CAAK,OAAA,IAAW,EAAE,CAAA;AAAA,IAClC,QAAA;AAAA,IACA,cAAc;AAAC,GACjB;AACF;AAYO,SAAS,YAAA,CAAa,UAAkB,QAAA,EAAgC;AAC7E,EAAA,MAAM,EAAE,MAAM,IAAA,EAAK,GAAI,iBAAiB,YAAA,CAAa,QAAA,EAAU,MAAM,CAAC,CAAA;AACtE,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,IAAA,CAAK,IAAA,IAAQ,QAAA,CAAS,QAAQ,CAAA,CAAE,OAAA,CAAQ,eAAA,EAAiB,EAAE,CAAC,CAAA;AAChF,EAAA,OAAO;AAAA,IACL,IAAA;AAAA,IACA,IAAA,EAAM,QAAA;AAAA,IACN,WAAA,EAAa,MAAA,CAAO,IAAA,CAAK,WAAA,IAAe,EAAE,CAAA;AAAA,IAC1C,MAAA,EAAQ,QAAA;AAAA,IACR,SAAA,EAAW,QAAA;AAAA,IACX,OAAA,EAAS,eAAe,IAAI,CAAA;AAAA,IAC5B,QAAA,EAAU,cAAc,IAAI,CAAA;AAAA,IAC5B,cAAc;AAAC,GACjB;AACF;AAWO,SAAS,YAAA,CAAa,UAAkB,QAAA,EAAgC;AAC7E,EAAA,IAAI,OAAgC,EAAC;AACrC,EAAA,IAAI;AACF,IAAA,IAAA,GAAQ,MAAM,YAAA,CAAa,QAAA,EAAU,MAAM,CAAC,KAAiC,EAAC;AAAA,EAChF,CAAA,CAAA,MAAQ;AAAA,EAAC;AAET,EAAA,MAAM,IAAA,GAAO,QAAA,CAAS,QAAQ,CAAA,CAC3B,OAAA,CAAQ,iBAAiB,EAAE,CAAA,CAC3B,OAAA,CAAQ,eAAA,EAAiB,EAAE,CAAA;AAC9B,EAAA,OAAO;AAAA,IACL,MAAM,MAAA,CAAO,IAAA,CAAK,IAAA,IAAQ,IAAA,CAAK,MAAM,IAAI,CAAA;AAAA,IACzC,IAAA,EAAM,MAAA;AAAA,IACN,WAAA,EAAa,MAAA,CAAO,IAAA,CAAK,WAAA,IAAe,EAAE,CAAA;AAAA,IAC1C,MAAA,EAAQ,QAAA;AAAA,IACR,SAAA,EAAW,QAAA;AAAA,IACX,OAAA,EAAS,MAAA,CAAO,IAAA,CAAK,OAAA,IAAW,EAAE,CAAA;AAAA,IAClC,QAAA,EAAU,cAAc,IAAI,CAAA;AAAA,IAC5B,cAAc;AAAC,GACjB;AACF;AAYO,SAAS,cAAA,CAAe,UAAkB,QAAA,EAAgC;AAC/E,EAAA,IAAI,OAAgC,EAAC;AACrC,EAAA,IAAI;AACF,IAAA,IAAA,GAAQ,MAAM,YAAA,CAAa,QAAA,EAAU,MAAM,CAAC,KAAiC,EAAC;AAAA,EAChF,CAAA,CAAA,MAAQ;AAAA,EAAC;AAET,EAAA,MAAM,IAAA,GAAO,MAAA,CAAO,IAAA,CAAK,IAAA,IAAQ,QAAA,CAAS,QAAQ,CAAA,CAAE,OAAA,CAAQ,iBAAA,EAAmB,EAAE,CAAC,CAAA;AAElF,EAAA,MAAM,OAAO,IAAA,CAAK,YAAA;AAClB,EAAA,MAAM,YAAA,GAAe,MAAM,OAAA,CAAQ,IAAI,IAAK,IAAA,CAAkB,MAAA,CAAO,OAAO,CAAA,GAAI,EAAC;AAEjF,EAAA,OAAO;AAAA,IACL,IAAA;AAAA,IACA,IAAA,EAAM,QAAA;AAAA,IACN,WAAA,EAAa,MAAA,CAAO,IAAA,CAAK,WAAA,IAAe,EAAE,CAAA;AAAA,IAC1C,MAAA,EAAQ,QAAA;AAAA,IACR,SAAA,EAAW,QAAA;AAAA,IACX,OAAA,EAAS,MAAA,CAAO,IAAA,CAAK,OAAA,IAAW,EAAE,CAAA;AAAA,IAClC,QAAA,EAAU,cAAc,IAAI,CAAA;AAAA,IAC5B;AAAA,GACF;AACF;AAWO,SAAS,cAAA,CAAe,UAAkB,QAAA,EAAgC;AAC/E,EAAA,MAAM,EAAE,MAAM,IAAA,EAAK,GAAI,iBAAiB,YAAA,CAAa,QAAA,EAAU,MAAM,CAAC,CAAA;AACtE,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,OAAO,IAAA,CAAK,IAAA,IAAQ,SAAS,OAAA,CAAQ,QAAQ,CAAC,CAAC,CAAA;AAAA,IACrD,IAAA,EAAM,UAAA;AAAA,IACN,WAAA,EAAa,MAAA,CAAO,IAAA,CAAK,WAAA,IAAe,EAAE,CAAA;AAAA,IAC1C,MAAA,EAAQ,QAAA;AAAA,IACR,SAAA,EAAW,QAAA;AAAA,IACX,OAAA,EAAS,eAAe,IAAI,CAAA;AAAA,IAC5B,QAAA,EAAU,cAAc,IAAI,CAAA;AAAA,IAC5B,cAAc;AAAC,GACjB;AACF;AA6BO,SAAS,eAAA,CAAgB,UAAkB,QAAA,EAAgC;AAChF,EAAA,MAAM,EAAE,MAAM,IAAA,EAAK,GAAI,iBAAiB,YAAA,CAAa,QAAA,EAAU,MAAM,CAAC,CAAA;AAGtE,EAAA,MAAM,WAAoC,EAAC;AAC3C,EAAA,IAAI,KAAK,SAAA,EAAW,QAAA,CAAS,SAAA,GAAY,MAAA,CAAO,KAAK,SAAS,CAAA;AAC9D,EAAA,IAAI,KAAK,OAAA,EAAS,QAAA,CAAS,OAAA,GAAU,MAAA,CAAO,KAAK,OAAO,CAAA;AACxD,EAAA,IAAI,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,IAAI,CAAA,WAAY,IAAA,GAAO,IAAA,CAAK,IAAA,CAAK,GAAA,CAAI,MAAM,CAAA;AAClE,EAAA,IAAI,IAAA,CAAK,GAAA,IAAO,OAAO,IAAA,CAAK,GAAA,KAAQ,QAAA,IAAY,CAAC,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,GAAG,CAAA,EAAG;AACxE,IAAA,QAAA,CAAS,MAAM,IAAA,CAAK,GAAA;AAAA,EACtB;AACA,EAAA,IAAI,KAAK,GAAA,EAAK,QAAA,CAAS,GAAA,GAAM,MAAA,CAAO,KAAK,GAAG,CAAA;AAC5C,EAAA,IAAI,IAAA,CAAK,OAAA,IAAW,OAAO,IAAA,CAAK,OAAA,KAAY,QAAA,IAAY,CAAC,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,OAAO,CAAA,EAAG;AACpF,IAAA,QAAA,CAAS,UAAU,IAAA,CAAK,OAAA;AAAA,EAC1B;AACA,EAAA,IAAI,IAAA,CAAK,MAAA,IAAU,OAAO,IAAA,CAAK,MAAA,KAAW,QAAA,IAAY,CAAC,KAAA,CAAM,OAAA,CAAQ,IAAA,CAAK,MAAM,CAAA,EAAG;AACjF,IAAA,QAAA,CAAS,SAAS,IAAA,CAAK,MAAA;AAAA,EACzB;AAEA,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,OAAO,IAAA,CAAK,IAAA,IAAQ,SAAS,OAAA,CAAQ,QAAQ,CAAC,CAAC,CAAA;AAAA,IACrD,IAAA,EAAM,YAAA;AAAA,IACN,WAAA,EAAa,MAAA,CAAO,IAAA,CAAK,WAAA,IAAe,EAAE,CAAA;AAAA,IAC1C,MAAA,EAAQ,QAAA;AAAA,IACR,SAAA,EAAW,QAAA;AAAA,IACX,OAAA,EAAS,eAAe,IAAI,CAAA;AAAA,IAC5B,QAAA,EAAU,cAAc,IAAI,CAAA;AAAA,IAC5B,cAAc,EAAC;AAAA,IACf,UAAU,MAAA,CAAO,IAAA,CAAK,QAAQ,CAAA,CAAE,MAAA,GAAS,IAAI,QAAA,GAAW;AAAA,GAC1D;AACF;AAWO,SAAS,iBAAA,CAAkB,UAAkB,QAAA,EAAgC;AAClF,EAAA,IAAI,OAAgC,EAAC;AACrC,EAAA,IAAI;AACF,IAAA,IAAA,GAAQ,MAAM,YAAA,CAAa,QAAA,EAAU,MAAM,CAAC,KAAiC,EAAC;AAAA,EAChF,CAAA,CAAA,MAAQ;AAAA,EAAC;AACT,EAAA,OAAO;AAAA,IACL,IAAA,EAAM,OAAO,IAAA,CAAK,IAAA,IAAQ,SAAS,OAAA,CAAQ,QAAQ,CAAC,CAAC,CAAA;AAAA,IACrD,IAAA,EAAM,WAAA;AAAA,IACN,WAAA,EAAa,MAAA,CAAO,IAAA,CAAK,WAAA,IAAe,EAAE,CAAA;AAAA,IAC1C,MAAA,EAAQ,QAAA;AAAA,IACR,SAAA,EAAW,QAAA;AAAA,IACX,OAAA,EAAS,MAAA,CAAO,IAAA,CAAK,OAAA,IAAW,EAAE,CAAA;AAAA,IAClC,QAAA,EAAU,cAAc,IAAI,CAAA;AAAA,IAC5B,cAAc;AAAC,GACjB;AACF;AA0BO,SAAS,eAAA,CAAgB,UAAkB,QAAA,EAAgC;AAChF,EAAA,MAAM,IAAA,GAAO,YAAA,CAAa,QAAA,EAAU,OAAO,CAAA;AAC3C,EAAA,MAAM,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAK,GAAI,iBAAiB,IAAI,CAAA;AAClD,EAAA,MAAM,IAAA,GAAO,OAAO,IAAA,CAAK,IAAA,IAAQ,SAAS,OAAA,CAAQ,QAAQ,CAAC,CAAC,CAAA;AAC5D,EAAA,OAAO;AAAA,IACL,IAAA;AAAA,IACA,IAAA,EAAM,WAAA;AAAA,IACN,WAAA,EAAa,MAAA,CAAO,IAAA,CAAK,WAAA,IAAe,EAAE,CAAA;AAAA,IAC1C,MAAA,EAAQ,QAAA;AAAA,IACR,SAAA,EAAW,QAAA;AAAA,IACX,OAAA,EAAS,eAAe,IAAI,CAAA;AAAA,IAC5B,QAAA,EAAU,cAAc,IAAI,CAAA;AAAA,IAC5B,cAAc,EAAC;AAAA,IACf,QAAA,EAAU;AAAA,MACR,KAAA,EAAO,KAAK,KAAA,IAAS,cAAA;AAAA,MACrB,QAAA,EAAU,IAAA,CAAK,QAAA,IAAY,EAAC;AAAA,MAC5B,MAAA,EAAQ,IAAA,CAAK,MAAA,IAAU,EAAC;AAAA,MACxB,YAAA,EAAc,KAAK,YAAA,IAAgB,IAAA;AAAA,MACnC;AAAA;AACF,GACF;AACF;AAmBO,UAAU,QAAQ,GAAA,EAAmC;AAC1D,EAAA,IAAI,UAAA;AACJ,EAAA,IAAI;AACF,IAAA,UAAA,GAAa,YAAY,GAAA,EAAK,EAAE,eAAe,IAAA,EAAM,QAAA,EAAU,QAAQ,CAAA;AAAA,EACzE,CAAA,CAAA,MAAQ;AACN,IAAA;AAAA,EACF;AACA,EAAA,KAAA,MAAW,CAAA,IAAK,UAAA,CAAW,IAAA,CAAK,CAAC,CAAA,EAAG,CAAA,KAAO,CAAA,CAAE,IAAA,GAAO,CAAA,CAAE,IAAA,GAAO,EAAA,GAAK,CAAE,CAAA,EAAG;AACrE,IAAA,MAAM,IAAA,GAAO,IAAA,CAAK,GAAA,EAAK,CAAA,CAAE,IAAI,CAAA;AAC7B,IAAA,IAAI,CAAA,CAAE,gBAAe,EAAG;AACtB,MAAA,IAAI;AACF,QAAA,IAAI,SAAS,IAAI,CAAA,CAAE,aAAY,EAAG,OAAO,QAAQ,IAAI,CAAA;AAAA,mBAC1C,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,EAAE,IAAA,EAAK;AAAA,MACxC,CAAA,CAAA,MAAQ;AAAA,MAAC;AAAA,IACX,CAAA,MAAA,IAAW,CAAA,CAAE,WAAA,EAAY,EAAG;AAC1B,MAAA,IAAI,CAAA,CAAE,SAAS,MAAA,IAAU,CAAA,CAAE,SAAS,cAAA,EAAgB,OAAO,QAAQ,IAAI,CAAA;AAAA,IACzE,CAAA,MAAA,IAAW,CAAA,CAAE,MAAA,EAAO,EAAG;AACrB,MAAA,MAAM,EAAE,IAAA,EAAM,IAAA,EAAM,IAAA,EAAM,EAAE,IAAA,EAAK;AAAA,IACnC;AAAA,EACF;AACF;AASA,IAAM,SAAA,uBAAgB,GAAA,CAAI;AAAA,EACxB,QAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,OAAA;AAAA,EACA,YAAA;AAAA,EACA,SAAA;AAAA,EACA,SAAA;AAAA,EACA,WAAA;AAAA,EACA,WAAA;AAAA,EACA,aAAA;AAAA,EACA,KAAA;AAAA,EACA;AACF,CAAC,CAAA;AAWD,IAAM,gBAAA,uBAAuB,GAAA,CAAI;AAAA,EAC/B,UAAA;AAAA,EACA,UAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,QAAA;AAAA,EACA,cAAA;AAAA,EACA;AACF,CAAC,CAAA;AAeD,SAAS,YAAA,CAAa,MAAc,QAAA,EAA0B;AAC5D,EAAA,MAAM,OAAO,QAAA,CAAS,IAAA,EAAM,QAAQ,CAAA,CAAE,MAAM,GAAG,CAAA;AAC/C,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,IAAA,CAAK,QAAQ,CAAA,EAAA,EAAK;AACpC,IAAA,IAAI,SAAA,CAAU,GAAA,CAAI,IAAA,CAAK,CAAC,CAAE,CAAA,EAAG,OAAO,IAAA,CAAK,KAAA,CAAM,CAAA,EAAG,CAAC,CAAA,CAAE,KAAK,GAAG,CAAA;AAAA,EAC/D;AACA,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,IAAA,CAAK,MAAA,GAAS,CAAC,CAAA,IAAK,EAAA;AAC1C,EAAA,MAAM,UAAA,GAAa,gBAAA,CAAiB,GAAA,CAAI,QAAQ,IAAI,CAAA,GAAI,CAAA;AACxD,EAAA,IAAI,IAAA,CAAK,MAAA,GAAS,UAAA,EAAY,OAAO,IAAA,CAAK,KAAA,CAAM,CAAA,EAAG,IAAA,CAAK,MAAA,GAAS,UAAU,CAAA,CAAE,IAAA,CAAK,GAAG,CAAA;AACrF,EAAA,OAAO,EAAA;AACT;AAgBO,SAAS,aAAA,CAAc,MAAc,QAAA,EAAkC;AAC5E,EAAA,MAAM,OAAA,uBAAc,GAAA,EAA0B;AAE9C,EAAA,SAAS,IAAI,CAAA,EAAuB;AAClC,IAAA,MAAM,MAAM,CAAA,EAAG,CAAA,CAAE,IAAI,CAAA,CAAA,EAAI,EAAE,IAAI,CAAA,CAAA;AAC/B,IAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,GAAA,CAAI,GAAG,CAAA;AAChC,IAAA,IAAI,CAAC,QAAA,EAAU;AACb,MAAA,OAAA,CAAQ,GAAA,CAAI,KAAK,CAAC,CAAA;AAClB,MAAA;AAAA,IACF;AAEA,IAAA,IAAI,EAAE,MAAA,GAAS,QAAA,CAAS,QAAQ,OAAA,CAAQ,GAAA,CAAI,KAAK,CAAC,CAAA;AAAA,EACpD;AAEA,EAAA,KAAA,MAAW,EAAE,IAAA,EAAM,QAAA,EAAU,MAAK,IAAK,OAAA,CAAQ,IAAI,CAAA,EAAG;AACpD,IAAA,MAAM,MAAA,GAAS,YAAA,CAAa,IAAA,EAAM,QAAQ,CAAA;AAC1C,IAAA,IAAI;AACF,MAAA,IAAI,IAAA,KAAS,UAAA,EAAY,GAAA,CAAI,EAAE,GAAG,YAAY,QAAA,EAAU,QAAQ,CAAA,EAAG,MAAA,EAAQ,CAAA;AAAA,WAAA,IAClE,IAAA,KAAS,UAAA,EAAY,GAAA,CAAI,EAAE,GAAG,YAAY,QAAA,EAAU,QAAQ,CAAA,EAAG,MAAA,EAAQ,CAAA;AAAA,WAAA,IACvE,IAAA,KAAS,YAAA,EAAc,GAAA,CAAI,EAAE,GAAG,cAAc,QAAA,EAAU,QAAQ,CAAA,EAAG,MAAA,EAAQ,CAAA;AAAA,WAAA,IAC3E,IAAA,KAAS,aAAA,EAAe,GAAA,CAAI,EAAE,GAAG,eAAe,QAAA,EAAU,QAAQ,CAAA,EAAG,MAAA,EAAQ,CAAA;AAAA,WAAA,IAC7E,IAAA,KAAS,QAAA,EAAU,GAAA,CAAI,EAAE,GAAG,gBAAgB,QAAA,EAAU,QAAQ,CAAA,EAAG,MAAA,EAAQ,CAAA;AAAA,WAAA,IACzE,IAAA,KAAS,cAAA,EAAgB,GAAA,CAAI,EAAE,GAAG,gBAAgB,QAAA,EAAU,QAAQ,CAAA,EAAG,MAAA,EAAQ,CAAA;AAAA,WAAA,IAC/E,IAAA,KAAS,gBAAA,EAAkB,GAAA,CAAI,EAAE,GAAG,kBAAkB,QAAA,EAAU,QAAQ,CAAA,EAAG,MAAA,EAAQ,CAAA;AAAA,WAAA,IACnF,IAAA,CAAK,QAAA,CAAS,YAAY,CAAA,EAAG,GAAA,CAAI,EAAE,GAAG,YAAA,CAAa,QAAA,EAAU,QAAQ,CAAA,EAAG,MAAA,EAAQ,CAAA;AAAA,WAAA,IAChF,IAAA,CAAK,SAAS,cAAc,CAAA;AACnC,QAAA,GAAA,CAAI,EAAE,GAAG,cAAA,CAAe,UAAU,QAAQ,CAAA,EAAG,QAAQ,CAAA;AAAA,WAAA,IAC9C,KAAK,QAAA,CAAS,YAAY,CAAA,IAAK,IAAA,CAAK,SAAS,YAAY,CAAA;AAChE,QAAA,GAAA,CAAI,EAAE,GAAG,YAAA,CAAa,UAAU,QAAQ,CAAA,EAAG,QAAQ,CAAA;AAAA,IACvD,CAAA,CAAA,MAAQ;AAAA,IAAC;AAAA,EACX;AAEA,EAAA,OAAO,CAAC,GAAG,OAAA,CAAQ,MAAA,EAAQ,CAAA;AAC7B","file":"chunk-4AZKT2BU.js","sourcesContent":["/**\n * Manifest parsing — reads SKILL.md, AGENT.md, agent.yaml, CONTRACT.md,\n * CONNECTOR.md, *.prompt.md, *.flow.yaml, *.bundle.yaml files and\n * produces CatalogEntry objects.\n * Used by @skaile/asset-manager for on-demand repo scanning.\n */\n\nimport { readdirSync, readFileSync, statSync } from \"node:fs\";\nimport { basename, dirname, join, relative } from \"node:path\";\nimport { parse } from \"yaml\";\nimport type { AssetKind, CatalogEntry, Dependency } from \"./models.js\";\nimport { parseDep } from \"./models.js\";\n\n// ── Frontmatter helpers ───────────────────────────────────────────────────────\n\n/**\n * Result of parsing YAML frontmatter from a markdown file.\n * @docLink packages/core/concepts#frontmatter-result\n */\nexport interface FrontmatterResult {\n /** Parsed YAML data. Empty object if no frontmatter block is present. */\n data: Record<string, unknown>;\n /** Markdown body below the frontmatter block (trimmed). */\n body: string;\n}\n\n/**\n * Parse YAML frontmatter from a markdown file (`---` delimited).\n * Returns `{ data: {}, body: text }` when no frontmatter block is present.\n *\n * @param text - Raw file contents\n * @returns Parsed frontmatter data and the remaining body text\n * @docLink packages/core/concepts#parse-frontmatter\n */\nexport function parseFrontmatter(text: string): FrontmatterResult {\n const m = text.match(/^---\\s*\\n([\\s\\S]*?)\\n---/);\n if (!m) return { data: {}, body: text.trim() };\n try {\n const data = (parse(m[1]!) as Record<string, unknown>) ?? {};\n const body = text.slice(m[0].length).trim();\n return { data, body };\n } catch {\n return { data: {}, body: text.trim() };\n }\n}\n\n/** Extract version from frontmatter, checking both top-level and metadata.version. */\nfunction extractVersion(meta: Record<string, unknown>): string {\n return String(\n meta.version ?? (meta.metadata as Record<string, unknown> | undefined)?.version ?? \"\",\n );\n}\n\n/**\n * Parse the `requires:` field from manifest frontmatter into typed `Dependency` objects.\n * Accepts a comma-separated string or an array of `\"kind:name\"` strings. Reads from either\n * the root or `metadata.requires` (matching `extractVersion`'s dual-location behavior) so\n * skill authors can follow the agentskills.io convention of placing skaile extensions under\n * `metadata:` while remaining backward-compatible with root-level declarations.\n *\n * @param meta - Parsed frontmatter data object\n * @returns Array of `Dependency` objects (empty when `requires` is absent)\n * @docLink packages/core/concepts#parse-requires\n */\nexport function parseRequires(meta: Record<string, unknown>): Dependency[] {\n const raw = meta.requires ?? (meta.metadata as Record<string, unknown> | undefined)?.requires;\n if (!raw) return [];\n const list =\n typeof raw === \"string\"\n ? raw.split(\",\").map((s) => s.trim())\n : Array.isArray(raw)\n ? (raw as string[])\n : [];\n return list.filter(Boolean).map(parseDep);\n}\n\n// ── Manifest parsers ──────────────────────────────────────────────────────────\n\n/**\n * Parse a `SKILL.md` file into a `CatalogEntry`.\n * The `kind` field defaults to `\"skill\"` but can be overridden to `\"agent\"` or `\"prompt\"`\n * via the `type:` frontmatter key. Falls back to the parent directory name when `name:` is absent.\n *\n * @param filePath - Absolute path to the `SKILL.md` file\n * @param repoName - Repository name used as the `repository` field of the entry\n * @returns Populated `CatalogEntry` with kind, name, description, version, and requires\n * @docLink packages/core/concepts#from-skill-md\n */\nexport function fromSkillMd(filePath: string, repoName: string): CatalogEntry {\n const { data: meta } = parseFrontmatter(readFileSync(filePath, \"utf8\"));\n let kind = String(meta.type ?? \"skill\") as AssetKind;\n if (![\"skill\", \"agent\", \"prompt\", \"persona\", \"ruleset\", \"knowledge\"].includes(kind))\n kind = \"skill\";\n return {\n name: String(meta.name ?? basename(dirname(filePath))),\n kind,\n description: String(meta.description ?? \"\"),\n source: filePath,\n publisher: repoName,\n version: extractVersion(meta),\n requires: parseRequires(meta),\n dependencies: [],\n };\n}\n\n/**\n * Parse an `AGENT.md` file into a `CatalogEntry` with `kind: \"agent\"`.\n * Falls back to the parent directory name when `name:` is absent.\n *\n * @param filePath - Absolute path to the `AGENT.md` file\n * @param repoName - Repository name used as the `repository` field of the entry\n * @returns Populated `CatalogEntry` with kind `\"agent\"`\n * @docLink packages/core/concepts#from-agent-md\n */\nexport function fromAgentMd(filePath: string, repoName: string): CatalogEntry {\n const { data: meta } = parseFrontmatter(readFileSync(filePath, \"utf8\"));\n return {\n name: String(meta.name ?? basename(dirname(filePath))),\n kind: \"agent\",\n description: String(meta.description ?? \"\"),\n source: filePath,\n publisher: repoName,\n version: extractVersion(meta),\n requires: parseRequires(meta),\n dependencies: [],\n };\n}\n\n/**\n * Parse an `agent.yaml` file into a `CatalogEntry` with `kind: \"agent\"`.\n * Collects sub-agent dependencies from `requires[]` (new format) and `dependencies[]`\n * (legacy format), skill abilities from `abilities[]`, and contracts from `contracts[]`.\n *\n * @param filePath - Absolute path to the `agent.yaml` file\n * @param repoName - Repository name used as the `repository` field of the entry\n * @returns Populated `CatalogEntry` with kind `\"agent\"` and full dependency graph\n * @docLink packages/core/concepts#from-agent-yaml\n */\nexport function fromAgentYaml(filePath: string, repoName: string): CatalogEntry {\n let meta: Record<string, unknown> = {};\n try {\n meta = (parse(readFileSync(filePath, \"utf8\")) as Record<string, unknown>) ?? {};\n } catch {}\n\n const requires: Dependency[] = [];\n\n // Sub-agent dependencies from requires[] (new format: {name, source, ...})\n const agentRequires = meta.requires;\n if (Array.isArray(agentRequires)) {\n for (const d of agentRequires) {\n if (typeof d === \"object\" && d !== null && \"name\" in d) {\n requires.push({\n kind: \"agent\",\n name: String((d as Record<string, unknown>).name),\n });\n }\n }\n }\n\n // Legacy sub-agent dependencies from dependencies[] (old format: {name, ...})\n const deps = meta.dependencies;\n if (Array.isArray(deps)) {\n for (const d of deps) {\n if (typeof d === \"object\" && d !== null && \"name\" in d) {\n requires.push({\n kind: \"agent\",\n name: String((d as Record<string, unknown>).name),\n });\n }\n }\n }\n\n // Skill abilities referenced in the system prompt\n const abilities = meta.abilities;\n if (Array.isArray(abilities)) {\n for (const a of abilities) {\n if (typeof a === \"string\" && a) {\n requires.push({ kind: \"skill\", name: a });\n }\n }\n }\n\n // Contracts referenced in the system prompt (co-located in skills dir)\n const contracts = meta.contracts;\n if (Array.isArray(contracts)) {\n for (const c of contracts) {\n if (typeof c === \"string\" && c) {\n requires.push({ kind: \"contract\", name: c });\n }\n }\n }\n\n // Mixin composition fields — track catalog refs as requires so `skaile install`\n // automatically pulls them. Local paths (. or /) are skipped — not catalog assets.\n for (const [field, defaultKind] of [\n [\"persona\", \"persona\"],\n [\"rules\", \"ruleset\"],\n [\"knowledge\", \"knowledge\"],\n ] as const) {\n const refs = meta[field];\n if (!Array.isArray(refs)) continue;\n for (const r of refs) {\n if (typeof r !== \"string\" || !r) continue;\n if (r.startsWith(\".\") || r.startsWith(\"/\")) continue; // local path — skip\n // Normalize: if no kind: prefix, inject the default kind\n const normalized = r.includes(\":\") ? r : `${defaultKind}:${r}`;\n // Strip @repo and #pin — only kind:name matters for requires\n const colonIdx = normalized.indexOf(\":\");\n const kind = normalized.slice(0, colonIdx).trim();\n let name = normalized.slice(colonIdx + 1).trim();\n const atIdx = name.indexOf(\"@\");\n if (atIdx !== -1) name = name.slice(0, atIdx).trim();\n const hashIdx = name.indexOf(\"#\");\n if (hashIdx !== -1) name = name.slice(0, hashIdx).trim();\n if (name) requires.push({ kind, name });\n }\n }\n\n return {\n name: String(meta.name ?? basename(dirname(filePath))),\n kind: \"agent\",\n description: String(meta.description ?? \"\"),\n source: filePath,\n publisher: repoName,\n version: String(meta.version ?? \"\"),\n requires,\n dependencies: [],\n };\n}\n\n/**\n * Parse a `*.prompt.md` file into a `CatalogEntry` with `kind: \"prompt\"`.\n * The name defaults to the filename stem (without the `.prompt.md` suffix)\n * when no `name:` frontmatter key is present.\n *\n * @param filePath - Absolute path to the `.prompt.md` file\n * @param repoName - Repository name used as the `repository` field of the entry\n * @returns Populated `CatalogEntry` with kind `\"prompt\"`\n * @docLink packages/core/concepts#from-prompt-md\n */\nexport function fromPromptMd(filePath: string, repoName: string): CatalogEntry {\n const { data: meta } = parseFrontmatter(readFileSync(filePath, \"utf8\"));\n const name = String(meta.name ?? basename(filePath).replace(/\\.prompt\\.md$/, \"\"));\n return {\n name,\n kind: \"prompt\",\n description: String(meta.description ?? \"\"),\n source: filePath,\n publisher: repoName,\n version: extractVersion(meta),\n requires: parseRequires(meta),\n dependencies: [],\n };\n}\n\n/**\n * Parse a `*.flow.yaml` or `*.flow.json` file into a `CatalogEntry` with `kind: \"flow\"`.\n * The name resolves from `name:` or `id:` frontmatter, falling back to the filename stem.\n *\n * @param filePath - Absolute path to the flow definition file\n * @param repoName - Repository name used as the `repository` field of the entry\n * @returns Populated `CatalogEntry` with kind `\"flow\"`\n * @docLink packages/core/concepts#from-flow-yaml\n */\nexport function fromFlowYaml(filePath: string, repoName: string): CatalogEntry {\n let meta: Record<string, unknown> = {};\n try {\n meta = (parse(readFileSync(filePath, \"utf8\")) as Record<string, unknown>) ?? {};\n } catch {}\n\n const stem = basename(filePath)\n .replace(/\\.flow\\.yaml$/, \"\")\n .replace(/\\.flow\\.json$/, \"\");\n return {\n name: String(meta.name ?? meta.id ?? stem),\n kind: \"flow\",\n description: String(meta.description ?? \"\"),\n source: filePath,\n publisher: repoName,\n version: String(meta.version ?? \"\"),\n requires: parseRequires(meta),\n dependencies: [],\n };\n}\n\n/**\n * Parse a `*.bundle.yaml` file into a `CatalogEntry` with `kind: \"bundle\"`.\n * Bundles declare a flat list of string `dependencies` (asset refs) rather than\n * typed `Dependency` objects; both `requires` and `dependencies` are populated.\n *\n * @param filePath - Absolute path to the bundle YAML file\n * @param repoName - Repository name used as the `repository` field of the entry\n * @returns Populated `CatalogEntry` with kind `\"bundle\"`\n * @docLink packages/core/concepts#from-bundle-yaml\n */\nexport function fromBundleYaml(filePath: string, repoName: string): CatalogEntry {\n let meta: Record<string, unknown> = {};\n try {\n meta = (parse(readFileSync(filePath, \"utf8\")) as Record<string, unknown>) ?? {};\n } catch {}\n\n const name = String(meta.name ?? basename(filePath).replace(/\\.bundle\\.yaml$/, \"\"));\n\n const deps = meta.dependencies;\n const dependencies = Array.isArray(deps) ? (deps as string[]).filter(Boolean) : [];\n\n return {\n name,\n kind: \"bundle\",\n description: String(meta.description ?? \"\"),\n source: filePath,\n publisher: repoName,\n version: String(meta.version ?? \"\"),\n requires: parseRequires(meta),\n dependencies,\n };\n}\n\n/**\n * Parse a `CONTRACT.md` file into a `CatalogEntry` with `kind: \"contract\"`.\n * Falls back to the parent directory name when `name:` is absent.\n *\n * @param filePath - Absolute path to the `CONTRACT.md` file\n * @param repoName - Repository name used as the `repository` field of the entry\n * @returns Populated `CatalogEntry` with kind `\"contract\"`\n * @docLink packages/core/concepts#from-contract-md\n */\nexport function fromContractMd(filePath: string, repoName: string): CatalogEntry {\n const { data: meta } = parseFrontmatter(readFileSync(filePath, \"utf8\"));\n return {\n name: String(meta.name ?? basename(dirname(filePath))),\n kind: \"contract\",\n description: String(meta.description ?? \"\"),\n source: filePath,\n publisher: repoName,\n version: extractVersion(meta),\n requires: parseRequires(meta),\n dependencies: [],\n };\n}\n\n/**\n * Parse an `MCP.md` file into a `CatalogEntry` with `kind: \"mcp-server\"`.\n * Falls back to the parent directory name when `name:` is absent.\n *\n * Frontmatter fields (catalog identity):\n * - `name` — server name (default: parent dir name)\n * - `description` — short description\n * - `version` — semver\n * - `keywords` — array of discovery tags\n *\n * Frontmatter fields (runtime defaults, stored in `metadata`):\n * - `transport` — \"stdio\" | \"sse\" | \"http\" (default: \"stdio\")\n * - `command` — command to execute (stdio)\n * - `args` — command arguments (stdio)\n * - `env` — environment variables (stdio)\n * - `url` — server URL (sse/http)\n * - `headers` — HTTP headers (sse/http)\n *\n * When `mcp:name` appears in `skaile.yaml` `dependencies`, the runner reads\n * these defaults from `metadata` to build a `McpServerDeclaration` without\n * requiring verbose inline config.\n *\n * @param filePath - Absolute path to the `MCP.md` file\n * @param repoName - Repository name used as the `repository` field of the entry\n * @returns Populated `CatalogEntry` with kind `\"mcp-server\"`\n * @docLink packages/core/concepts#from-mcp-server-md\n */\nexport function fromMcpServerMd(filePath: string, repoName: string): CatalogEntry {\n const { data: meta } = parseFrontmatter(readFileSync(filePath, \"utf8\"));\n\n // Extract runtime defaults into metadata\n const metadata: Record<string, unknown> = {};\n if (meta.transport) metadata.transport = String(meta.transport);\n if (meta.command) metadata.command = String(meta.command);\n if (Array.isArray(meta.args)) metadata.args = meta.args.map(String);\n if (meta.env && typeof meta.env === \"object\" && !Array.isArray(meta.env)) {\n metadata.env = meta.env as Record<string, string>;\n }\n if (meta.url) metadata.url = String(meta.url);\n if (meta.headers && typeof meta.headers === \"object\" && !Array.isArray(meta.headers)) {\n metadata.headers = meta.headers as Record<string, string>;\n }\n if (meta.recipe && typeof meta.recipe === \"object\" && !Array.isArray(meta.recipe)) {\n metadata.recipe = meta.recipe;\n }\n\n return {\n name: String(meta.name ?? basename(dirname(filePath))),\n kind: \"mcp-server\",\n description: String(meta.description ?? \"\"),\n source: filePath,\n publisher: repoName,\n version: extractVersion(meta),\n requires: parseRequires(meta),\n dependencies: [],\n metadata: Object.keys(metadata).length > 0 ? metadata : undefined,\n };\n}\n\n/**\n * Parse a `knowledge.yaml` file into a `CatalogEntry` with `kind: \"knowledge\"`.\n * Falls back to the parent directory name when `name:` is absent.\n *\n * @param filePath - Absolute path to the `knowledge.yaml` file\n * @param repoName - Repository name used as the `repository` field of the entry\n * @returns Populated `CatalogEntry` with kind `\"knowledge\"`\n * @docLink packages/core/concepts#from-knowledge-yaml\n */\nexport function fromKnowledgeYaml(filePath: string, repoName: string): CatalogEntry {\n let meta: Record<string, unknown> = {};\n try {\n meta = (parse(readFileSync(filePath, \"utf8\")) as Record<string, unknown>) ?? {};\n } catch {}\n return {\n name: String(meta.name ?? basename(dirname(filePath))),\n kind: \"knowledge\",\n description: String(meta.description ?? \"\"),\n source: filePath,\n publisher: repoName,\n version: String(meta.version ?? \"\"),\n requires: parseRequires(meta),\n dependencies: [],\n };\n}\n\n/**\n * Parse a `CONNECTOR.md` file into a `CatalogEntry` with `kind: \"connector\"`.\n * Falls back to the parent directory name when `name:` is absent.\n *\n * Frontmatter fields (catalog identity):\n * - `name` — connector name (default: parent dir name)\n * - `description` — short description\n * - `version` — semver\n *\n * Frontmatter fields (runtime defaults, stored in `metadata`):\n * - `entry` — adapter entry point (default: \"./adapter.ts\")\n * - `npm_deps` — npm dependencies required by the adapter\n * - `fields` — configuration fields the adapter expects\n * - `health_check` — whether to run a health check on connect\n *\n * The markdown body (below the frontmatter) is stored in `metadata.body`\n * so the runner can inject the connector's skill description into the\n * system prompt when `expose_as_skill` is enabled.\n *\n * @param filePath - Absolute path to the `CONNECTOR.md` file\n * @param repoName - Repository name used as the `repository` field of the entry\n * @returns Populated `CatalogEntry` with kind `\"connector\"`\n * @docLink packages/core/concepts#from-connector-md\n */\nexport function fromConnectorMd(filePath: string, repoName: string): CatalogEntry {\n const text = readFileSync(filePath, \"utf-8\");\n const { data: meta, body } = parseFrontmatter(text);\n const name = String(meta.name ?? basename(dirname(filePath)));\n return {\n name,\n kind: \"connector\" as AssetKind,\n description: String(meta.description ?? \"\"),\n source: filePath,\n publisher: repoName,\n version: extractVersion(meta),\n requires: parseRequires(meta),\n dependencies: [],\n metadata: {\n entry: meta.entry ?? \"./adapter.ts\",\n npm_deps: meta.npm_deps ?? {},\n fields: meta.fields ?? [],\n health_check: meta.health_check ?? null,\n body,\n },\n };\n}\n\n// ── Recursive walker ──────────────────────────────────────────────────────────\n\ninterface WalkEntry {\n path: string;\n name: string;\n}\n\n/**\n * Recursively yield every file entry under `dir`, sorted alphabetically at each level.\n * Skips `.git` and `node_modules` directories and follows symlinks (resolving to\n * the stat target). `node_modules` is excluded because Bun's `node_modules/.bun/...`\n * layout contains symlink farms that form cycles when packages reference each other\n * transitively — entering them causes unbounded recursion in this walker.\n *\n * @param dir - Absolute path to the directory to walk\n * @docLink packages/core/concepts#walk-dir\n */\nexport function* walkDir(dir: string): Generator<WalkEntry> {\n let dirEntries: import(\"node:fs\").Dirent<string>[];\n try {\n dirEntries = readdirSync(dir, { withFileTypes: true, encoding: \"utf8\" });\n } catch {\n return;\n }\n for (const e of dirEntries.sort((a, b) => (a.name < b.name ? -1 : 1))) {\n const full = join(dir, e.name);\n if (e.isSymbolicLink()) {\n try {\n if (statSync(full).isDirectory()) yield* walkDir(full);\n else yield { path: full, name: e.name };\n } catch {}\n } else if (e.isDirectory()) {\n if (e.name !== \".git\" && e.name !== \"node_modules\") yield* walkDir(full);\n } else if (e.isFile()) {\n yield { path: full, name: e.name };\n }\n }\n}\n\n// ── Public scanner ────────────────────────────────────────────────────────────\n\n/**\n * Directory names that hold assets of a given kind. The parent of one of these\n * is the asset's domain — the folder that groups skills/flows/agents/... that\n * belong together.\n */\nconst KIND_DIRS = new Set([\n \"skills\",\n \"agents\",\n \"agent\",\n \"flows\",\n \"connectors\",\n \"prompts\",\n \"bundles\",\n \"contracts\",\n \"knowledge\",\n \"mcp-servers\",\n \"mcp\",\n \"profiles\",\n]);\n\n/**\n * Manifest filenames that live INSIDE a folder named after the asset itself\n * (`<domain.../>/<asset-name>/SKILL.md`). For these, the asset's parent path\n * is two segments above the file.\n *\n * Bare-file manifests (`*.prompt.md`, `*.bundle.yaml`, `*.flow.yaml`,\n * `*.flow.json`) sit directly under the domain folder, so their parent path\n * is one segment above the file.\n */\nconst FOLDER_MANIFESTS = new Set([\n \"SKILL.md\",\n \"AGENT.md\",\n \"agent.yaml\",\n \"CONTRACT.md\",\n \"MCP.md\",\n \"CONNECTOR.md\",\n \"knowledge.yaml\",\n]);\n\n/**\n * Derive the domain for an asset.\n *\n * 1. If any segment in the path matches a known kind directory (`skills/`,\n * `flows/`, ...), return the **full path** from root to that kind dir's\n * parent (e.g. `skaileup/impl-quality/contracts/x/CONTRACT.md` →\n * `\"skaileup/impl-quality\"`). Returning only the immediate parent would\n * break hierarchy when the layout nests `<wrapper>/<domain>/<kind>/...`.\n * 2. Otherwise return the full path from root to the asset's parent folder,\n * `/`-joined. The number of segments stripped depends on whether the\n * manifest is folder-style (strip file + asset folder) or bare-file\n * (strip just the file).\n */\nfunction deriveDomain(root: string, filePath: string): string {\n const segs = relative(root, filePath).split(\"/\");\n for (let i = 1; i < segs.length; i++) {\n if (KIND_DIRS.has(segs[i]!)) return segs.slice(0, i).join(\"/\");\n }\n const fileName = segs[segs.length - 1] ?? \"\";\n const stripCount = FOLDER_MANIFESTS.has(fileName) ? 2 : 1;\n if (segs.length > stripCount) return segs.slice(0, segs.length - stripCount).join(\"/\");\n return \"\";\n}\n\n/**\n * Walk `root` recursively and return a `CatalogEntry` for every recognized asset manifest found.\n *\n * Recognized filenames: `SKILL.md`, `AGENT.md`, `agent.yaml`, `CONTRACT.md`, `MCP.md`,\n * `CONNECTOR.md`, `*.prompt.md`, `*.bundle.yaml`, `*.flow.yaml`, `*.flow.json`.\n *\n * When two entries share the same `kind:name` key, the one with the alphabetically\n * later source path wins (consistent with catalog precedence rules).\n *\n * @param root - Absolute path to the directory tree to scan\n * @param repoName - Repository name attached to every produced entry\n * @returns Array of deduplicated `CatalogEntry` objects, one per manifest file\n * @docLink packages/core/concepts#scan-directory\n */\nexport function scanDirectory(root: string, repoName: string): CatalogEntry[] {\n const entries = new Map<string, CatalogEntry>();\n\n function add(e: CatalogEntry): void {\n const key = `${e.kind}:${e.name}`;\n const existing = entries.get(key);\n if (!existing) {\n entries.set(key, e);\n return;\n }\n // Among duplicates, alphabetically later source path wins\n if (e.source > existing.source) entries.set(key, e);\n }\n\n for (const { path: filePath, name } of walkDir(root)) {\n const domain = deriveDomain(root, filePath);\n try {\n if (name === \"SKILL.md\") add({ ...fromSkillMd(filePath, repoName), domain });\n else if (name === \"AGENT.md\") add({ ...fromAgentMd(filePath, repoName), domain });\n else if (name === \"agent.yaml\") add({ ...fromAgentYaml(filePath, repoName), domain });\n else if (name === \"CONTRACT.md\") add({ ...fromContractMd(filePath, repoName), domain });\n else if (name === \"MCP.md\") add({ ...fromMcpServerMd(filePath, repoName), domain });\n else if (name === \"CONNECTOR.md\") add({ ...fromConnectorMd(filePath, repoName), domain });\n else if (name === \"knowledge.yaml\") add({ ...fromKnowledgeYaml(filePath, repoName), domain });\n else if (name.endsWith(\".prompt.md\")) add({ ...fromPromptMd(filePath, repoName), domain });\n else if (name.endsWith(\".bundle.yaml\"))\n add({ ...fromBundleYaml(filePath, repoName), domain });\n else if (name.endsWith(\".flow.yaml\") || name.endsWith(\".flow.json\"))\n add({ ...fromFlowYaml(filePath, repoName), domain });\n } catch {}\n }\n\n return [...entries.values()];\n}\n"]}
|