@skaile/workspaces 5.11.0 → 5.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +97 -0
- package/README.md +2 -2
- package/dist/{asset-feeds-CXGQIDFR.js → asset-feeds-AM6PSSGM.js} +24 -21
- package/dist/asset-feeds-AM6PSSGM.js.map +1 -0
- package/dist/asset-manager/catalog-deployer.js +8 -8
- package/dist/asset-manager/fragments.js +1 -1
- package/dist/asset-manager/index.js +16 -16
- package/dist/asset-manager/installer.js +11 -11
- package/dist/asset-manager/renderers.js +9 -9
- package/dist/asset-manager/src/fragments.d.ts +5 -0
- package/dist/asset-manager/src/fragments.d.ts.map +1 -1
- package/dist/asset-manager/src/index.d.ts +95 -10
- package/dist/asset-manager/src/index.d.ts.map +1 -1
- package/dist/asset-manager/src/install-agent.d.ts +9 -1
- package/dist/asset-manager/src/install-agent.d.ts.map +1 -1
- package/dist/asset-manager/src/installer.d.ts +10 -0
- package/dist/asset-manager/src/installer.d.ts.map +1 -1
- package/dist/asset-manager/src/renderers.d.ts +5 -0
- package/dist/asset-manager/src/renderers.d.ts.map +1 -1
- package/dist/bridge/drivers/claude-sdk.js +16 -13
- package/dist/bridge/drivers/claude-sdk.js.map +1 -1
- package/dist/bridge/drivers/codex.js +43 -16
- package/dist/bridge/drivers/codex.js.map +1 -1
- package/dist/bridge/drivers/continue.js +10 -10
- package/dist/bridge/drivers/echo.js +2 -2
- package/dist/bridge/drivers/gemini.js +7 -7
- package/dist/bridge/drivers/goose.js +10 -10
- package/dist/bridge/drivers/omp.js +37 -10
- package/dist/bridge/drivers/omp.js.map +1 -1
- package/dist/bridge/drivers/opencode.js +10 -10
- package/dist/bridge/drivers/qwen.js +7 -7
- package/dist/bridge/index.js +12 -12
- package/dist/bridge/src/codex/config-toml.d.ts +8 -3
- package/dist/bridge/src/codex/config-toml.d.ts.map +1 -1
- package/dist/bridge/src/codex/managed-driver.d.ts.map +1 -1
- package/dist/bridge/src/drivers/claude-sdk.d.ts +1 -1
- package/dist/bridge/src/drivers/claude-sdk.d.ts.map +1 -1
- package/dist/bridge/src/drivers/codex.d.ts.map +1 -1
- package/dist/bridge/src/drivers/omp-models-yml.d.ts.map +1 -1
- package/dist/bridge/src/drivers/omp.d.ts +9 -0
- package/dist/bridge/src/drivers/omp.d.ts.map +1 -1
- package/dist/bridge/src/provider-materialize/credential-env.d.ts +15 -0
- package/dist/bridge/src/provider-materialize/credential-env.d.ts.map +1 -1
- package/dist/{chunk-4A4OD24G.js → chunk-27L6BBAT.js} +9 -9
- package/dist/{chunk-4A4OD24G.js.map → chunk-27L6BBAT.js.map} +1 -1
- package/dist/{chunk-HCEVNYSH.js → chunk-2JFIFDDO.js} +3 -3
- package/dist/{chunk-HCEVNYSH.js.map → chunk-2JFIFDDO.js.map} +1 -1
- package/dist/{chunk-3SM2DL2T.js → chunk-2X3JBVGD.js} +11 -10
- package/dist/chunk-2X3JBVGD.js.map +1 -0
- package/dist/{chunk-G4FFOV3N.js → chunk-3HUV2LJF.js} +4 -4
- package/dist/{chunk-G4FFOV3N.js.map → chunk-3HUV2LJF.js.map} +1 -1
- package/dist/{chunk-QZNJOHN6.js → chunk-3LVB3HGH.js} +3 -3
- package/dist/{chunk-QZNJOHN6.js.map → chunk-3LVB3HGH.js.map} +1 -1
- package/dist/{chunk-ZCAJZ4B2.js → chunk-6VLHITAM.js} +145 -3
- package/dist/chunk-6VLHITAM.js.map +1 -0
- package/dist/{chunk-J4RBUFGM.js → chunk-7CR2OZPA.js} +6 -6
- package/dist/{chunk-J4RBUFGM.js.map → chunk-7CR2OZPA.js.map} +1 -1
- package/dist/{chunk-HZXUXHIV.js → chunk-7QWQTA5S.js} +89 -12
- package/dist/chunk-7QWQTA5S.js.map +1 -0
- package/dist/{chunk-TCHRMVTO.js → chunk-7XWUJC3A.js} +4 -4
- package/dist/{chunk-TCHRMVTO.js.map → chunk-7XWUJC3A.js.map} +1 -1
- package/dist/{chunk-2F5AWQX5.js → chunk-C3BMXXTN.js} +137 -31
- package/dist/chunk-C3BMXXTN.js.map +1 -0
- package/dist/{chunk-ZPWTOUTK.js → chunk-CTP3XBMF.js} +7 -4
- package/dist/chunk-CTP3XBMF.js.map +1 -0
- package/dist/{chunk-GCHPUTA3.js → chunk-DCHQ6BAZ.js} +3 -3
- package/dist/{chunk-GCHPUTA3.js.map → chunk-DCHQ6BAZ.js.map} +1 -1
- package/dist/{chunk-DALV4HHP.js → chunk-DKXNKFKP.js} +3 -2
- package/dist/{chunk-DALV4HHP.js.map → chunk-DKXNKFKP.js.map} +1 -1
- package/dist/{chunk-X77SUM4P.js → chunk-G3X4MLDB.js} +3 -3
- package/dist/{chunk-X77SUM4P.js.map → chunk-G3X4MLDB.js.map} +1 -1
- package/dist/{chunk-CAHB6MHA.js → chunk-GWD3QNVS.js} +5 -5
- package/dist/{chunk-CAHB6MHA.js.map → chunk-GWD3QNVS.js.map} +1 -1
- package/dist/chunk-H5U7LNTJ.js +122 -0
- package/dist/chunk-H5U7LNTJ.js.map +1 -0
- package/dist/{chunk-QVFAS5IO.js → chunk-HYMERG57.js} +3 -3
- package/dist/{chunk-QVFAS5IO.js.map → chunk-HYMERG57.js.map} +1 -1
- package/dist/{chunk-R7NHYEJF.js → chunk-ICIYSJBQ.js} +4 -4
- package/dist/{chunk-R7NHYEJF.js.map → chunk-ICIYSJBQ.js.map} +1 -1
- package/dist/{chunk-YOH2L76X.js → chunk-ID745F3R.js} +353 -233
- package/dist/chunk-ID745F3R.js.map +1 -0
- package/dist/{chunk-PQFHMQHQ.js → chunk-JQ3DXNQV.js} +4 -4
- package/dist/{chunk-PQFHMQHQ.js.map → chunk-JQ3DXNQV.js.map} +1 -1
- package/dist/chunk-K4VOEYOR.js +21 -0
- package/dist/chunk-K4VOEYOR.js.map +1 -0
- package/dist/{chunk-XDKH7XSA.js → chunk-KVSDRB35.js} +5 -5
- package/dist/{chunk-XDKH7XSA.js.map → chunk-KVSDRB35.js.map} +1 -1
- package/dist/{chunk-47U4GZ4M.js → chunk-MF54ZHWT.js} +20 -3
- package/dist/chunk-MF54ZHWT.js.map +1 -0
- package/dist/{chunk-VLTQGE2E.js → chunk-N5M2EISA.js} +197 -52
- package/dist/chunk-N5M2EISA.js.map +1 -0
- package/dist/{chunk-T7CTHHG7.js → chunk-NDF24LYP.js} +3 -3
- package/dist/{chunk-T7CTHHG7.js.map → chunk-NDF24LYP.js.map} +1 -1
- package/dist/{chunk-CPWLNZGJ.js → chunk-NGJIVDDD.js} +3 -3
- package/dist/{chunk-CPWLNZGJ.js.map → chunk-NGJIVDDD.js.map} +1 -1
- package/dist/{chunk-FH7W6TJ4.js → chunk-NJV5SLEK.js} +104 -23
- package/dist/chunk-NJV5SLEK.js.map +1 -0
- package/dist/{chunk-M3B6EIJD.js → chunk-NJXR5OAM.js} +4 -4
- package/dist/{chunk-M3B6EIJD.js.map → chunk-NJXR5OAM.js.map} +1 -1
- package/dist/{chunk-CGYEHQOX.js → chunk-NOA6EJXE.js} +11 -2
- package/dist/chunk-NOA6EJXE.js.map +1 -0
- package/dist/{chunk-RYYLMBA2.js → chunk-NR7H7ZJP.js} +14 -6
- package/dist/chunk-NR7H7ZJP.js.map +1 -0
- package/dist/{chunk-OBYKJB4U.js → chunk-O2SYFJWP.js} +79 -5
- package/dist/chunk-O2SYFJWP.js.map +1 -0
- package/dist/{chunk-5LKOAX7I.js → chunk-OQ5MKDS3.js} +21 -5
- package/dist/chunk-OQ5MKDS3.js.map +1 -0
- package/dist/{chunk-CJERAGFY.js → chunk-P23WJCH2.js} +37 -11
- package/dist/chunk-P23WJCH2.js.map +1 -0
- package/dist/{chunk-NWDSLXOX.js → chunk-PHRNUTSG.js} +118 -118
- package/dist/chunk-PHRNUTSG.js.map +1 -0
- package/dist/{chunk-ALEYHUC5.js → chunk-PNOGX36L.js} +104 -24
- package/dist/chunk-PNOGX36L.js.map +1 -0
- package/dist/{chunk-BNMZVPYA.js → chunk-PNTXHTBC.js} +2 -2
- package/dist/{chunk-BNMZVPYA.js.map → chunk-PNTXHTBC.js.map} +1 -1
- package/dist/{chunk-GV4DZ6MT.js → chunk-POQ6PGNE.js} +4 -4
- package/dist/{chunk-GV4DZ6MT.js.map → chunk-POQ6PGNE.js.map} +1 -1
- package/dist/{chunk-T42WRQ4O.js → chunk-QCEKGYHF.js} +3 -3
- package/dist/{chunk-T42WRQ4O.js.map → chunk-QCEKGYHF.js.map} +1 -1
- package/dist/{chunk-EDYHEMJA.js → chunk-SHQMPGOL.js} +4 -4
- package/dist/{chunk-EDYHEMJA.js.map → chunk-SHQMPGOL.js.map} +1 -1
- package/dist/{chunk-S3O3GKB7.js → chunk-SMT3LNAG.js} +4 -4
- package/dist/{chunk-S3O3GKB7.js.map → chunk-SMT3LNAG.js.map} +1 -1
- package/dist/{chunk-PBBPZYVG.js → chunk-T5TSLSRO.js} +110 -44
- package/dist/chunk-T5TSLSRO.js.map +1 -0
- package/dist/{chunk-DZMNFCWB.js → chunk-TVAR4JHA.js} +530 -126
- package/dist/chunk-TVAR4JHA.js.map +1 -0
- package/dist/{chunk-COH6FQAG.js → chunk-UTKENBB6.js} +5 -5
- package/dist/{chunk-COH6FQAG.js.map → chunk-UTKENBB6.js.map} +1 -1
- package/dist/{chunk-XUSALIEI.js → chunk-VRLKHL74.js} +6 -6
- package/dist/{chunk-XUSALIEI.js.map → chunk-VRLKHL74.js.map} +1 -1
- package/dist/{chunk-WSBKB4CJ.js → chunk-WI4T3KIS.js} +51 -16
- package/dist/chunk-WI4T3KIS.js.map +1 -0
- package/dist/{chunk-D3B36CYC.js → chunk-X3RMRJNR.js} +4 -3
- package/dist/chunk-X3RMRJNR.js.map +1 -0
- package/dist/{chunk-IER3KIPH.js → chunk-X6LKA3TJ.js} +5 -5
- package/dist/{chunk-IER3KIPH.js.map → chunk-X6LKA3TJ.js.map} +1 -1
- package/dist/{chunk-Y3HTGHJC.js → chunk-XMAJJPA4.js} +3 -3
- package/dist/{chunk-Y3HTGHJC.js.map → chunk-XMAJJPA4.js.map} +1 -1
- package/dist/{chunk-SBSA3IQA.js → chunk-XTVSNWLL.js} +19 -7
- package/dist/chunk-XTVSNWLL.js.map +1 -0
- package/dist/{chunk-MZG34MBZ.js → chunk-XZY6SBGU.js} +3 -3
- package/dist/{chunk-MZG34MBZ.js.map → chunk-XZY6SBGU.js.map} +1 -1
- package/dist/{chunk-6O2X3GPW.js → chunk-YQU2BPQD.js} +7 -5
- package/dist/chunk-YQU2BPQD.js.map +1 -0
- package/dist/cli/index.js +1077 -497
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/src/agent-checks.d.ts +40 -0
- package/dist/cli/src/agent-checks.d.ts.map +1 -0
- package/dist/cli/src/asset-feeds.d.ts.map +1 -1
- package/dist/cli/src/commands/asset-cmd.d.ts.map +1 -1
- package/dist/cli/src/commands/catalog.d.ts +24 -0
- package/dist/cli/src/commands/catalog.d.ts.map +1 -1
- package/dist/cli/src/commands/config.d.ts.map +1 -1
- package/dist/cli/src/commands/diff.d.ts.map +1 -1
- package/dist/cli/src/commands/integration.d.ts.map +1 -1
- package/dist/cli/src/commands/library-cmd.d.ts.map +1 -1
- package/dist/cli/src/commands/library-publish.d.ts.map +1 -1
- package/dist/cli/src/commands/mcp-server.d.ts +1 -1
- package/dist/cli/src/commands/migrate-assets.d.ts +2 -1
- package/dist/cli/src/commands/migrate-assets.d.ts.map +1 -1
- package/dist/cli/src/commands/migrate.d.ts.map +1 -1
- package/dist/cli/src/commands/plugin/claude-code.d.ts +1 -1
- package/dist/cli/src/commands/plugin/claude-code.d.ts.map +1 -1
- package/dist/cli/src/commands/plugin/types.d.ts +1 -1
- package/dist/cli/src/commands/plugin-registry-cmd.d.ts.map +1 -1
- package/dist/cli/src/commands/project.d.ts.map +1 -1
- package/dist/cli/src/commands/publish-core.d.ts +5 -0
- package/dist/cli/src/commands/publish-core.d.ts.map +1 -1
- package/dist/cli/src/commands/run.d.ts +2 -1
- package/dist/cli/src/commands/run.d.ts.map +1 -1
- package/dist/cli/src/commands/serve-preflight.d.ts +22 -0
- package/dist/cli/src/commands/serve-preflight.d.ts.map +1 -0
- package/dist/cli/src/commands/serve.d.ts.map +1 -1
- package/dist/cli/src/commands/source-manifest-publish.d.ts.map +1 -1
- package/dist/cli/src/commands/source-manifest.d.ts.map +1 -1
- package/dist/cli/src/commands/source.d.ts.map +1 -1
- package/dist/cli/src/commands/store.d.ts.map +1 -1
- package/dist/cli/src/commands/tree.d.ts.map +1 -1
- package/dist/cli/src/commands/update.d.ts.map +1 -1
- package/dist/cli/src/commands/validate.d.ts.map +1 -1
- package/dist/cli/src/commands/why.d.ts.map +1 -1
- package/dist/cli/src/curated-manifests.d.ts +21 -0
- package/dist/cli/src/curated-manifests.d.ts.map +1 -0
- package/dist/cli/src/index-busy.d.ts +8 -0
- package/dist/cli/src/index-busy.d.ts.map +1 -0
- package/dist/cli/src/plugin-store/paths.d.ts +7 -3
- package/dist/cli/src/plugin-store/paths.d.ts.map +1 -1
- package/dist/cli/src/skill-checks.d.ts +15 -2
- package/dist/cli/src/skill-checks.d.ts.map +1 -1
- package/dist/cli/src/store-addable.d.ts +18 -0
- package/dist/cli/src/store-addable.d.ts.map +1 -0
- package/dist/connectors/config.js +5 -5
- package/dist/connectors/index.js +16 -16
- package/dist/{connectors-4QWAKPHB.js → connectors-UNKUKEPG.js} +19 -19
- package/dist/{connectors-4QWAKPHB.js.map → connectors-UNKUKEPG.js.map} +1 -1
- package/dist/core/index.js +7 -7
- package/dist/core/logging.js +1 -1
- package/dist/core/manifest.js +2 -2
- package/dist/core/models.js +1 -1
- package/dist/core/publish-manifest.js +2 -2
- package/dist/core/ref.js +1 -1
- package/dist/core/runtime-assets.js +5 -5
- package/dist/core/src/index.d.ts +5 -4
- package/dist/core/src/index.d.ts.map +1 -1
- package/dist/core/src/lock.d.ts +15 -5
- package/dist/core/src/lock.d.ts.map +1 -1
- package/dist/core/src/logging/sinks/sqlite-sink.d.ts.map +1 -1
- package/dist/core/src/manifest.d.ts +5 -0
- package/dist/core/src/manifest.d.ts.map +1 -1
- package/dist/core/src/models.d.ts +3 -3
- package/dist/core/src/package-manager.d.ts +19 -0
- package/dist/core/src/package-manager.d.ts.map +1 -0
- package/dist/core/src/publish-manifest.d.ts.map +1 -1
- package/dist/core/src/repo-manager.d.ts +11 -0
- package/dist/core/src/repo-manager.d.ts.map +1 -1
- package/dist/core/src/settings.d.ts +26 -6
- package/dist/core/src/settings.d.ts.map +1 -1
- package/dist/core/src/walker.d.ts +6 -1
- package/dist/core/src/walker.d.ts.map +1 -1
- package/dist/core/src/workspace-config.d.ts.map +1 -1
- package/dist/core/workspace-config.js +4 -4
- package/dist/deploy/index.js +7 -7
- package/dist/discovery/index.js +5 -5
- package/dist/{ensure-sources-2RONZKCU.js → ensure-sources-POMEQSTM.js} +19 -19
- package/dist/{ensure-sources-2RONZKCU.js.map → ensure-sources-POMEQSTM.js.map} +1 -1
- package/dist/factory-assets/connectors/box.js +16 -16
- package/dist/factory-assets/connectors/deploy.js +16 -16
- package/dist/factory-assets/connectors/devserver.js +16 -16
- package/dist/factory-assets/connectors/flow/adapter.js +16 -16
- package/dist/factory-assets/connectors/flow/contract/normalize.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/contract.js +1 -1
- package/dist/factory-assets/connectors/flow/engine.js +9 -9
- package/dist/factory-assets/connectors/flow/run-flow.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/run-flow.js +18 -18
- package/dist/factory-assets/connectors/flow.js +16 -16
- package/dist/factory-assets/connectors/git.js +16 -16
- package/dist/factory-assets/connectors/gmail.js +16 -16
- package/dist/factory-assets/connectors/googledrive.js +16 -16
- package/dist/factory-assets/connectors/local.js +16 -16
- package/dist/factory-assets/connectors/mattermost.js +16 -16
- package/dist/factory-assets/connectors/memory.js +16 -16
- package/dist/factory-assets/connectors/minio.js +16 -16
- package/dist/factory-assets/connectors/postgres.js +16 -16
- package/dist/factory-assets/connectors/s3.js +16 -16
- package/dist/factory-assets/connectors/sharepoint.js +16 -16
- package/dist/factory-assets/connectors/sqlite.js +16 -16
- package/dist/factory-assets/connectors/static-server.js +16 -16
- package/dist/factory-assets/connectors/tunnel.js +16 -16
- package/dist/factory-assets/connectors/webdav.js +16 -16
- package/dist/factory-assets/connectors/xstate-store.js +16 -16
- package/dist/factory-assets/connectors/xstate.js +16 -16
- package/dist/factory-assets/skills/authoring-skaile-assets/SKILL.md +10 -8
- package/dist/factory-assets/skills/authoring-skaile-manifests/SKILL.md +15 -11
- package/dist/factory-assets/skills/authoring-skaile-manifests/references/dependency-standard.md +12 -9
- package/dist/factory-assets/skills/skaile-author-asset/SKILL.md +2 -2
- package/dist/{flows-EQF2CH4U.js → flows-DVKMZKM4.js} +12 -12
- package/dist/{flows-EQF2CH4U.js.map → flows-DVKMZKM4.js.map} +1 -1
- package/dist/{helpers-CFK6YP6R.js → helpers-Y4OT7VIS.js} +19 -19
- package/dist/{helpers-CFK6YP6R.js.map → helpers-Y4OT7VIS.js.map} +1 -1
- package/dist/library/index.js +12 -12
- package/dist/library/install.js +4 -4
- package/dist/library/src/index.d.ts +2 -2
- package/dist/library/src/index.d.ts.map +1 -1
- package/dist/library/src/install/source-fetch-github.d.ts.map +1 -1
- package/dist/library/src/local/db.d.ts +2 -0
- package/dist/library/src/local/db.d.ts.map +1 -1
- package/dist/library/src/local/library-manager.d.ts +5 -0
- package/dist/library/src/local/library-manager.d.ts.map +1 -1
- package/dist/library/src/local/library.d.ts +5 -3
- package/dist/library/src/local/library.d.ts.map +1 -1
- package/dist/library/src/local/local-catalog-source.d.ts.map +1 -1
- package/dist/library/src/local/store-paths.d.ts +9 -0
- package/dist/library/src/local/store-paths.d.ts.map +1 -1
- package/dist/library/src/manifest-writer.d.ts.map +1 -1
- package/dist/library/src/remote/index.d.ts +1 -1
- package/dist/library/src/remote/index.d.ts.map +1 -1
- 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/library/src/sync/git-driver.d.ts.map +1 -1
- package/dist/{library-publish-53UTB3MB.js → library-publish-DI4Q5UOG.js} +45 -37
- package/dist/library-publish-DI4Q5UOG.js.map +1 -0
- package/dist/open-library-N6ESO6IK.js +40 -0
- package/dist/{open-library-BOSPJVID.js.map → open-library-N6ESO6IK.js.map} +1 -1
- package/dist/open-registry-CBZ5MWTT.js +32 -0
- package/dist/{open-registry-4FI7HKET.js.map → open-registry-CBZ5MWTT.js.map} +1 -1
- package/dist/paths-U6W6MQNQ.js +22 -0
- package/dist/{paths-SUS4S4YT.js.map → paths-U6W6MQNQ.js.map} +1 -1
- package/dist/{plugin-store-AGQDMING.js → plugin-store-XMZSPVBF.js} +48 -12
- package/dist/plugin-store-XMZSPVBF.js.map +1 -0
- package/dist/project-UP52HEHC.js +79 -0
- package/dist/{project-I55A4O2T.js.map → project-UP52HEHC.js.map} +1 -1
- package/dist/resolver/index.js +8 -8
- package/dist/runner/index.js +33 -33
- package/dist/runner/src/agent.d.ts.map +1 -1
- package/dist/runner/src/agents/in-process-host.d.ts.map +1 -1
- package/dist/runner/src/composition/index.d.ts +1 -0
- package/dist/runner/src/composition/index.d.ts.map +1 -1
- package/dist/runner/src/composition/prompt-sections.d.ts +7 -4
- package/dist/runner/src/composition/prompt-sections.d.ts.map +1 -1
- package/dist/runner/src/composition/resolve.d.ts +10 -1
- package/dist/runner/src/composition/resolve.d.ts.map +1 -1
- package/dist/runner/src/composition/verify.d.ts +29 -0
- package/dist/runner/src/composition/verify.d.ts.map +1 -0
- package/dist/runner/src/credential-notice.d.ts +14 -0
- package/dist/runner/src/credential-notice.d.ts.map +1 -0
- package/dist/runner/src/environment.d.ts.map +1 -1
- package/dist/runner/src/final-text.d.ts +17 -0
- package/dist/runner/src/final-text.d.ts.map +1 -0
- package/dist/runner/src/index.d.ts +2 -0
- package/dist/runner/src/index.d.ts.map +1 -1
- package/dist/runner/src/resource-handler.d.ts.map +1 -1
- package/dist/runner/src/serve.d.ts +13 -0
- package/dist/runner/src/serve.d.ts.map +1 -1
- package/dist/sdk/asset-manager.js +16 -16
- package/dist/sdk/bridge.js +12 -12
- package/dist/sdk/core.js +7 -7
- package/dist/sdk/flow.js +9 -9
- package/dist/sdk/index.js +36 -34
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/resolver.js +8 -8
- package/dist/sdk/runner.js +33 -33
- package/dist/sdk/src/local-runtime.d.ts.map +1 -1
- package/dist/sdk/transport/ws/client.js +1 -1
- package/dist/sdk/transport/ws/server.js +1 -1
- package/dist/sdk/transport/ws.js +2 -2
- package/dist/sdk/transport.js +2 -2
- package/dist/serve-preflight-6P2JJEJ3.js +47 -0
- package/dist/serve-preflight-6P2JJEJ3.js.map +1 -0
- package/dist/{setup-7DQJKHUI.js → setup-5IRUH5OS.js} +24 -24
- package/dist/{setup-7DQJKHUI.js.map → setup-5IRUH5OS.js.map} +1 -1
- package/dist/{skills-NUEN5NDX.js → skills-HA36RFNM.js} +13 -13
- package/dist/{skills-NUEN5NDX.js.map → skills-HA36RFNM.js.map} +1 -1
- package/dist/source-DX5SGWEI.js +41 -0
- package/dist/{source-G2LV5LVD.js.map → source-DX5SGWEI.js.map} +1 -1
- package/dist/source-fetch-github-PIO6EMMF.js +4 -0
- package/dist/{source-fetch-github-QN4LLTL5.js.map → source-fetch-github-PIO6EMMF.js.map} +1 -1
- package/dist/{source-manifest-publish-6RM7SWLZ.js → source-manifest-publish-NMRLXWVW.js} +27 -26
- package/dist/source-manifest-publish-NMRLXWVW.js.map +1 -0
- package/dist/transport/index.js +2 -2
- package/dist/transport/src/ws/client.d.ts +6 -0
- package/dist/transport/src/ws/client.d.ts.map +1 -1
- package/dist/transport/src/ws/server.d.ts +4 -0
- package/dist/transport/src/ws/server.d.ts.map +1 -1
- package/dist/transport/ws/client.js +1 -1
- package/dist/transport/ws/server.js +1 -1
- package/dist/transport/ws.js +2 -2
- package/dist/tui/index.js +58 -41
- package/dist/tui/index.js.map +1 -1
- package/dist/tui/src/repl-session.d.ts +1 -1
- package/dist/tui/src/repl-session.d.ts.map +1 -1
- package/dist/tui/src/repl.d.ts +3 -0
- package/dist/tui/src/repl.d.ts.map +1 -1
- package/dist/types/manifests.js +1 -1
- package/dist/types/src/manifests/agent-composition.d.ts +20 -0
- package/dist/types/src/manifests/agent-composition.d.ts.map +1 -1
- package/dist/types/src/manifests/agent.d.ts.map +1 -1
- package/dist/types/src/manifests/cron.d.ts +15 -0
- package/dist/types/src/manifests/cron.d.ts.map +1 -0
- package/dist/types/src/manifests/index.d.ts +3 -2
- package/dist/types/src/manifests/index.d.ts.map +1 -1
- package/dist/workspace-plugin/adapters/mcp.js +23 -23
- package/dist/workspace-plugin/adapters/omp.js +106 -51
- package/dist/workspace-plugin/adapters/omp.js.map +1 -1
- package/dist/workspace-plugin/index.js +2 -2
- package/dist/workspace-plugin/src/adapters/claude-code.d.ts.map +1 -1
- package/dist/workspace-plugin/src/adapters/omp.d.ts +11 -2
- package/dist/workspace-plugin/src/adapters/omp.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/asset-feeds-CXGQIDFR.js.map +0 -1
- package/dist/chunk-2F5AWQX5.js.map +0 -1
- package/dist/chunk-3SM2DL2T.js.map +0 -1
- package/dist/chunk-47U4GZ4M.js.map +0 -1
- package/dist/chunk-5LKOAX7I.js.map +0 -1
- package/dist/chunk-6O2X3GPW.js.map +0 -1
- package/dist/chunk-ALEYHUC5.js.map +0 -1
- package/dist/chunk-CGYEHQOX.js.map +0 -1
- package/dist/chunk-CJERAGFY.js.map +0 -1
- package/dist/chunk-D3B36CYC.js.map +0 -1
- package/dist/chunk-DZMNFCWB.js.map +0 -1
- package/dist/chunk-FH7W6TJ4.js.map +0 -1
- package/dist/chunk-HZXUXHIV.js.map +0 -1
- package/dist/chunk-NWDSLXOX.js.map +0 -1
- package/dist/chunk-OBYKJB4U.js.map +0 -1
- package/dist/chunk-PBBPZYVG.js.map +0 -1
- package/dist/chunk-R7FOF242.js +0 -59
- package/dist/chunk-R7FOF242.js.map +0 -1
- package/dist/chunk-RYYLMBA2.js.map +0 -1
- package/dist/chunk-SBSA3IQA.js.map +0 -1
- package/dist/chunk-VLTQGE2E.js.map +0 -1
- package/dist/chunk-WSBKB4CJ.js.map +0 -1
- package/dist/chunk-YOH2L76X.js.map +0 -1
- package/dist/chunk-ZCAJZ4B2.js.map +0 -1
- package/dist/chunk-ZPWTOUTK.js.map +0 -1
- package/dist/library-publish-53UTB3MB.js.map +0 -1
- package/dist/open-library-BOSPJVID.js +0 -40
- package/dist/open-registry-4FI7HKET.js +0 -32
- package/dist/paths-SUS4S4YT.js +0 -22
- package/dist/plugin-store-AGQDMING.js.map +0 -1
- package/dist/project-I55A4O2T.js +0 -41
- package/dist/source-G2LV5LVD.js +0 -41
- package/dist/source-fetch-github-QN4LLTL5.js +0 -4
- package/dist/source-manifest-publish-6RM7SWLZ.js.map +0 -1
|
@@ -1,49 +1,49 @@
|
|
|
1
|
-
export { buildWorkspaceMcpServer, buildWorkspaceMcpStdioServer, buildWorkspaceToolDefs, runMcpServerStdio } from '../../chunk-
|
|
2
|
-
import '../../chunk-
|
|
1
|
+
export { buildWorkspaceMcpServer, buildWorkspaceMcpStdioServer, buildWorkspaceToolDefs, runMcpServerStdio } from '../../chunk-X6LKA3TJ.js';
|
|
2
|
+
import '../../chunk-HYMERG57.js';
|
|
3
3
|
import '../../chunk-R6O6YWU7.js';
|
|
4
|
-
import '../../chunk-
|
|
5
|
-
import '../../chunk-
|
|
4
|
+
import '../../chunk-3HUV2LJF.js';
|
|
5
|
+
import '../../chunk-QCEKGYHF.js';
|
|
6
6
|
import '../../chunk-4ZTPYIBE.js';
|
|
7
|
-
import '../../chunk-
|
|
7
|
+
import '../../chunk-XZY6SBGU.js';
|
|
8
8
|
import '../../chunk-X5YPJV4N.js';
|
|
9
|
-
import '../../chunk-
|
|
10
|
-
import '../../chunk-
|
|
11
|
-
import '../../chunk-
|
|
9
|
+
import '../../chunk-G3X4MLDB.js';
|
|
10
|
+
import '../../chunk-DCHQ6BAZ.js';
|
|
11
|
+
import '../../chunk-27L6BBAT.js';
|
|
12
12
|
import '../../chunk-X4BAYGMT.js';
|
|
13
|
-
import '../../chunk-
|
|
14
|
-
import '../../chunk-
|
|
15
|
-
import '../../chunk-
|
|
13
|
+
import '../../chunk-ICIYSJBQ.js';
|
|
14
|
+
import '../../chunk-NDF24LYP.js';
|
|
15
|
+
import '../../chunk-2JFIFDDO.js';
|
|
16
16
|
import '../../chunk-LOO5CB5M.js';
|
|
17
17
|
import '../../chunk-2H73V6XR.js';
|
|
18
|
-
import '../../chunk-
|
|
18
|
+
import '../../chunk-NJXR5OAM.js';
|
|
19
19
|
import '../../chunk-B4X2N7JQ.js';
|
|
20
20
|
import '../../chunk-YROR332M.js';
|
|
21
|
-
import '../../chunk-
|
|
21
|
+
import '../../chunk-MF54ZHWT.js';
|
|
22
22
|
import '../../chunk-6E6PKKAD.js';
|
|
23
23
|
import '../../chunk-IFGTRL2I.js';
|
|
24
|
-
import '../../chunk-
|
|
24
|
+
import '../../chunk-7XWUJC3A.js';
|
|
25
25
|
import '../../chunk-LNFKL23K.js';
|
|
26
|
-
import '../../chunk-
|
|
26
|
+
import '../../chunk-X3RMRJNR.js';
|
|
27
27
|
import '../../chunk-M3WPBTGJ.js';
|
|
28
28
|
import '../../chunk-7RGTAEG6.js';
|
|
29
29
|
import '../../chunk-NUELZWCF.js';
|
|
30
30
|
import '../../chunk-F4NJDSR7.js';
|
|
31
|
-
import '../../chunk-
|
|
32
|
-
import '../../chunk-
|
|
31
|
+
import '../../chunk-6VLHITAM.js';
|
|
32
|
+
import '../../chunk-T5TSLSRO.js';
|
|
33
33
|
import '../../chunk-4GY63JU6.js';
|
|
34
|
-
import '../../chunk-
|
|
34
|
+
import '../../chunk-SHQMPGOL.js';
|
|
35
35
|
import '../../chunk-PMECEZK3.js';
|
|
36
36
|
import '../../chunk-5BEFNLOR.js';
|
|
37
37
|
import '../../chunk-A2ULN3KX.js';
|
|
38
|
-
import '../../chunk-
|
|
38
|
+
import '../../chunk-PNOGX36L.js';
|
|
39
39
|
import '../../chunk-L5VSIPQD.js';
|
|
40
40
|
import '../../chunk-CPSIPIX7.js';
|
|
41
|
-
import '../../chunk-
|
|
41
|
+
import '../../chunk-CTP3XBMF.js';
|
|
42
42
|
import '../../chunk-RVRB27AN.js';
|
|
43
|
-
import '../../chunk-
|
|
44
|
-
import '../../chunk-
|
|
43
|
+
import '../../chunk-XTVSNWLL.js';
|
|
44
|
+
import '../../chunk-PNTXHTBC.js';
|
|
45
45
|
import '../../chunk-ICSCSM5D.js';
|
|
46
|
-
import '../../chunk-
|
|
46
|
+
import '../../chunk-DKXNKFKP.js';
|
|
47
47
|
import '../../chunk-MJHSLODD.js';
|
|
48
48
|
import '../../chunk-C3CAXQMA.js';
|
|
49
49
|
import '../../chunk-BOFL7GIF.js';
|
|
@@ -2,52 +2,107 @@ import { DEFAULT_DRIVER_ID } from '../../chunk-5BEFNLOR.js';
|
|
|
2
2
|
import '../../chunk-NSBPE2FW.js';
|
|
3
3
|
|
|
4
4
|
// workspace-plugin/src/adapters/omp.ts
|
|
5
|
-
|
|
6
|
-
const escaped = JSON.stringify(projectDir);
|
|
7
|
-
return `// .omp/extensions/skaile.ts
|
|
8
|
-
// Generated by: skaile plugin install --driver omp
|
|
9
|
-
// or: skaile repl --driver omp (ephemeral \u2014 removed on exit)
|
|
10
|
-
// Re-generate: skaile plugin install --driver omp --project-dir ${projectDir}
|
|
11
|
-
import { WorkspacePlugin } from "@skaile/workspaces/workspace-plugin";
|
|
12
|
-
|
|
13
|
-
const plugin = new WorkspacePlugin({ projectDir: ${escaped}, bootOwned: true });
|
|
14
|
-
|
|
15
|
-
export async function onInit() {
|
|
16
|
-
await plugin.boot();
|
|
17
|
-
return { systemPromptAppend: plugin.buildSystemPromptSection() };
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
export function tools() {
|
|
21
|
-
return plugin.buildOmpToolSet();
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
export const slashCommands = [
|
|
25
|
-
{
|
|
26
|
-
name: "/flow",
|
|
27
|
-
description: "Flow inspection: /flow list | show <id> | sessions | session <runId>",
|
|
28
|
-
handler: (args: string[]) => plugin.handleSlashCommand("flow", args),
|
|
29
|
-
},
|
|
5
|
+
var OMP_COMMANDS = [
|
|
30
6
|
{
|
|
31
|
-
name: "
|
|
32
|
-
description: "
|
|
33
|
-
handler: (args: string[]) => plugin.handleSlashCommand("connector", args),
|
|
7
|
+
name: "flow",
|
|
8
|
+
description: "Flow inspection: /flow list | show <id> | sessions | session <runId>"
|
|
34
9
|
},
|
|
35
10
|
{
|
|
36
|
-
name: "
|
|
37
|
-
description: "
|
|
38
|
-
handler: (args: string[]) => plugin.handleSlashCommand("skill", args),
|
|
11
|
+
name: "connector",
|
|
12
|
+
description: "Connector CRUD: /connector list | read <id> <path> | exec <id> <op> [json-args] | describe <id>"
|
|
39
13
|
},
|
|
40
14
|
{
|
|
41
|
-
name: "
|
|
42
|
-
description: "
|
|
43
|
-
handler: (args: string[]) => plugin.handleSlashCommand("mounts", args),
|
|
15
|
+
name: "skill",
|
|
16
|
+
description: "Skill catalog: /skill list | show <id> | search <query> | run <id>"
|
|
44
17
|
},
|
|
45
18
|
{
|
|
46
|
-
name: "
|
|
47
|
-
description: "
|
|
48
|
-
handler: () => plugin.handleSlashCommand("validate", []),
|
|
19
|
+
name: "mounts",
|
|
20
|
+
description: "Mount management: /mounts list | sync <id> | status <id>"
|
|
49
21
|
},
|
|
22
|
+
{ name: "validate", description: "Validate workspace config (skaile.yaml)" }
|
|
50
23
|
];
|
|
24
|
+
function buildOmpExtensionSource(projectDir) {
|
|
25
|
+
const tools = buildOmpToolSet({}).map(
|
|
26
|
+
({ name, description, parameters }) => ({ name, description, parameters })
|
|
27
|
+
);
|
|
28
|
+
return `// .omp/extensions/skaile.ts
|
|
29
|
+
// Generated by: skaile integration install --driver omp
|
|
30
|
+
// or: skaile repl --driver omp (ephemeral \u2014 removed on exit)
|
|
31
|
+
// Re-generate: skaile integration install --driver omp --project-dir ${projectDir}
|
|
32
|
+
import { spawn } from "node:child_process";
|
|
33
|
+
|
|
34
|
+
const PROJECT_DIR = ${JSON.stringify(projectDir)};
|
|
35
|
+
const TOOLS = ${JSON.stringify(tools, null, 2)};
|
|
36
|
+
const COMMANDS = ${JSON.stringify(OMP_COMMANDS, null, 2)};
|
|
37
|
+
|
|
38
|
+
/** Run \`skaile integration omp-exec <kind> <name>\` with a JSON payload on stdin; resolves to its stdout. */
|
|
39
|
+
function skaileExec(kind, name, payload) {
|
|
40
|
+
return new Promise((resolve, reject) => {
|
|
41
|
+
const child = spawn(
|
|
42
|
+
"skaile",
|
|
43
|
+
["integration", "omp-exec", kind, name, "--project-dir", PROJECT_DIR],
|
|
44
|
+
{ stdio: ["pipe", "pipe", "pipe"] },
|
|
45
|
+
);
|
|
46
|
+
let out = "";
|
|
47
|
+
let err = "";
|
|
48
|
+
child.stdout.on("data", (chunk) => (out += chunk));
|
|
49
|
+
child.stderr.on("data", (chunk) => (err += chunk));
|
|
50
|
+
child.on("error", (e) => reject(new Error("could not run skaile: " + e.message)));
|
|
51
|
+
child.on("close", (code) =>
|
|
52
|
+
code === 0 ? resolve(out.trimEnd()) : reject(new Error(err.trim() || "skaile exited " + code)),
|
|
53
|
+
);
|
|
54
|
+
child.stdin.end(JSON.stringify(payload));
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function schemaFor(z, spec) {
|
|
59
|
+
const base = spec.type === "object" ? z.record(z.string(), z.unknown()) : z.string();
|
|
60
|
+
return spec.optional ? base.optional() : base;
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export default function skaile(pi) {
|
|
64
|
+
const z = pi.zod;
|
|
65
|
+
pi.setLabel("skaile workspace");
|
|
66
|
+
|
|
67
|
+
for (const tool of TOOLS) {
|
|
68
|
+
pi.registerTool({
|
|
69
|
+
name: tool.name,
|
|
70
|
+
label: tool.name,
|
|
71
|
+
description: tool.description,
|
|
72
|
+
parameters: z.object(
|
|
73
|
+
Object.fromEntries(
|
|
74
|
+
Object.entries(tool.parameters).map(([key, spec]) => [key, schemaFor(z, spec)]),
|
|
75
|
+
),
|
|
76
|
+
),
|
|
77
|
+
async execute(_toolCallId, params) {
|
|
78
|
+
const text = await skaileExec("tool", tool.name, params);
|
|
79
|
+
return { content: [{ type: "text", text }], details: {} };
|
|
80
|
+
},
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
for (const command of COMMANDS) {
|
|
85
|
+
pi.registerCommand(command.name, {
|
|
86
|
+
description: command.description,
|
|
87
|
+
handler: async (args, ctx) => {
|
|
88
|
+
try {
|
|
89
|
+
const parts = args.trim().split(/\\s+/).filter(Boolean);
|
|
90
|
+
pi.sendMessage(
|
|
91
|
+
{
|
|
92
|
+
customType: "skaile-" + command.name,
|
|
93
|
+
content: await skaileExec("slash", command.name, parts),
|
|
94
|
+
display: true,
|
|
95
|
+
attribution: "agent",
|
|
96
|
+
},
|
|
97
|
+
{ triggerTurn: false },
|
|
98
|
+
);
|
|
99
|
+
} catch (e) {
|
|
100
|
+
ctx.ui.notify(e instanceof Error ? e.message : String(e), "error");
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
}
|
|
51
106
|
`;
|
|
52
107
|
}
|
|
53
108
|
function buildOmpToolSet(plugin) {
|
|
@@ -57,7 +112,7 @@ function buildOmpToolSet(plugin) {
|
|
|
57
112
|
description: "List all mounts declared in skaile.yaml with their mount status.",
|
|
58
113
|
parameters: {},
|
|
59
114
|
handler: async () => {
|
|
60
|
-
const { mountList } = await import('../../connectors-
|
|
115
|
+
const { mountList } = await import('../../connectors-UNKUKEPG.js');
|
|
61
116
|
return (await mountList(plugin.connectorManager)).content[0].text;
|
|
62
117
|
}
|
|
63
118
|
},
|
|
@@ -66,7 +121,7 @@ function buildOmpToolSet(plugin) {
|
|
|
66
121
|
description: "Sync a mount (pull latest from remote).",
|
|
67
122
|
parameters: { mount_id: { type: "string" } },
|
|
68
123
|
handler: async ({ mount_id }) => {
|
|
69
|
-
const { mountSync } = await import('../../connectors-
|
|
124
|
+
const { mountSync } = await import('../../connectors-UNKUKEPG.js');
|
|
70
125
|
return (await mountSync(plugin.connectorManager, mount_id)).content[0].text;
|
|
71
126
|
}
|
|
72
127
|
},
|
|
@@ -75,7 +130,7 @@ function buildOmpToolSet(plugin) {
|
|
|
75
130
|
description: "List all available flow definitions from ai-assets.",
|
|
76
131
|
parameters: {},
|
|
77
132
|
handler: async () => {
|
|
78
|
-
const { flowList } = await import('../../flows-
|
|
133
|
+
const { flowList } = await import('../../flows-DVKMZKM4.js');
|
|
79
134
|
return (await flowList(plugin.projectDir)).content[0].text;
|
|
80
135
|
}
|
|
81
136
|
},
|
|
@@ -84,7 +139,7 @@ function buildOmpToolSet(plugin) {
|
|
|
84
139
|
description: "List past flow run sessions for this workspace.",
|
|
85
140
|
parameters: {},
|
|
86
141
|
handler: async () => {
|
|
87
|
-
const { flowListSessions } = await import('../../flows-
|
|
142
|
+
const { flowListSessions } = await import('../../flows-DVKMZKM4.js');
|
|
88
143
|
return (await flowListSessions(plugin.projectDir)).content[0].text;
|
|
89
144
|
}
|
|
90
145
|
},
|
|
@@ -93,7 +148,7 @@ function buildOmpToolSet(plugin) {
|
|
|
93
148
|
description: "List all skills in the ai-assets catalog.",
|
|
94
149
|
parameters: {},
|
|
95
150
|
handler: async () => {
|
|
96
|
-
const { skillList } = await import('../../skills-
|
|
151
|
+
const { skillList } = await import('../../skills-HA36RFNM.js');
|
|
97
152
|
return (await skillList(plugin.projectDir)).content[0].text;
|
|
98
153
|
}
|
|
99
154
|
},
|
|
@@ -102,7 +157,7 @@ function buildOmpToolSet(plugin) {
|
|
|
102
157
|
description: "Search skills by name, description, or keywords.",
|
|
103
158
|
parameters: { query: { type: "string" } },
|
|
104
159
|
handler: async ({ query }) => {
|
|
105
|
-
const { skillSearch } = await import('../../skills-
|
|
160
|
+
const { skillSearch } = await import('../../skills-HA36RFNM.js');
|
|
106
161
|
return (await skillSearch(plugin.projectDir, query)).content[0].text;
|
|
107
162
|
}
|
|
108
163
|
},
|
|
@@ -111,7 +166,7 @@ function buildOmpToolSet(plugin) {
|
|
|
111
166
|
description: "Show the full SKILL.md content for a skill.",
|
|
112
167
|
parameters: { skill_id: { type: "string" } },
|
|
113
168
|
handler: async ({ skill_id }) => {
|
|
114
|
-
const { skillShow } = await import('../../skills-
|
|
169
|
+
const { skillShow } = await import('../../skills-HA36RFNM.js');
|
|
115
170
|
return (await skillShow(plugin.projectDir, skill_id)).content[0].text;
|
|
116
171
|
}
|
|
117
172
|
},
|
|
@@ -120,7 +175,7 @@ function buildOmpToolSet(plugin) {
|
|
|
120
175
|
description: "List connectors declared in skaile.yaml as {connected, failed, notice?}. A host-managed mount in `connected` carries `health` {status: ok|stale|failed, errorClass, checkedAt}; if it is not ok, tell the user and do not write to it. `failed` holds connectors that did not connect this session, with the failure reason \u2014 their mount paths are dead directories, not synced workspaces.",
|
|
121
176
|
parameters: {},
|
|
122
177
|
handler: async () => {
|
|
123
|
-
const { connectorList } = await import('../../connectors-
|
|
178
|
+
const { connectorList } = await import('../../connectors-UNKUKEPG.js');
|
|
124
179
|
return (await connectorList(plugin.connectorManager)).content[0].text;
|
|
125
180
|
}
|
|
126
181
|
},
|
|
@@ -129,7 +184,7 @@ function buildOmpToolSet(plugin) {
|
|
|
129
184
|
description: "Read content from a connector by path.",
|
|
130
185
|
parameters: { connector_id: { type: "string" }, path: { type: "string" } },
|
|
131
186
|
handler: async ({ connector_id, path }) => {
|
|
132
|
-
const { connectorRead } = await import('../../connectors-
|
|
187
|
+
const { connectorRead } = await import('../../connectors-UNKUKEPG.js');
|
|
133
188
|
return (await connectorRead(plugin.connectorManager, connector_id, path)).content[0].text;
|
|
134
189
|
}
|
|
135
190
|
},
|
|
@@ -146,7 +201,7 @@ function buildOmpToolSet(plugin) {
|
|
|
146
201
|
operation,
|
|
147
202
|
args
|
|
148
203
|
}) => {
|
|
149
|
-
const { connectorExec } = await import('../../connectors-
|
|
204
|
+
const { connectorExec } = await import('../../connectors-UNKUKEPG.js');
|
|
150
205
|
return (await connectorExec(plugin.connectorManager, connector_id, operation, args ?? {})).content[0].text;
|
|
151
206
|
}
|
|
152
207
|
},
|
|
@@ -202,7 +257,7 @@ async function handleSlashCommand(plugin, group, args) {
|
|
|
202
257
|
}
|
|
203
258
|
}
|
|
204
259
|
async function handleFlowCommand(plugin, sub, rest) {
|
|
205
|
-
const { flowList, flowShow, flowListSessions, flowGetSession } = await import('../../flows-
|
|
260
|
+
const { flowList, flowShow, flowListSessions, flowGetSession } = await import('../../flows-DVKMZKM4.js');
|
|
206
261
|
if (!sub || sub === "list") return (await flowList(plugin.projectDir)).content[0].text;
|
|
207
262
|
if (sub === "show" && rest[0])
|
|
208
263
|
return (await flowShow(plugin.projectDir, rest[0])).content[0].text;
|
|
@@ -212,7 +267,7 @@ async function handleFlowCommand(plugin, sub, rest) {
|
|
|
212
267
|
return "Usage: /flow list | show <id> | sessions | session <runId>";
|
|
213
268
|
}
|
|
214
269
|
async function handleConnectorCommand(plugin, sub, rest) {
|
|
215
|
-
const { connectorList, connectorRead, connectorExec, connectorDescribe } = await import('../../connectors-
|
|
270
|
+
const { connectorList, connectorRead, connectorExec, connectorDescribe } = await import('../../connectors-UNKUKEPG.js');
|
|
216
271
|
if (!sub || sub === "list") return (await connectorList(plugin.connectorManager)).content[0].text;
|
|
217
272
|
if (sub === "read" && rest[0] && rest[1])
|
|
218
273
|
return (await connectorRead(plugin.connectorManager, rest[0], rest[1])).content[0].text;
|
|
@@ -231,7 +286,7 @@ async function handleConnectorCommand(plugin, sub, rest) {
|
|
|
231
286
|
return "Usage: /connector list | read <id> <path> | exec <id> <op> [json-args] | describe <id>";
|
|
232
287
|
}
|
|
233
288
|
async function handleSkillCommand(plugin, sub, rest) {
|
|
234
|
-
const { skillList, skillShow, skillSearch } = await import('../../skills-
|
|
289
|
+
const { skillList, skillShow, skillSearch } = await import('../../skills-HA36RFNM.js');
|
|
235
290
|
if (sub === "run" && rest[0])
|
|
236
291
|
return (await skillShow(plugin.projectDir, rest[0])).content[0].text;
|
|
237
292
|
if (!sub || sub === "list") return (await skillList(plugin.projectDir)).content[0].text;
|
|
@@ -242,7 +297,7 @@ async function handleSkillCommand(plugin, sub, rest) {
|
|
|
242
297
|
return "Usage: /skill list | show <id> | search <query> | run <id>";
|
|
243
298
|
}
|
|
244
299
|
async function handleMountsCommand(plugin, sub, rest) {
|
|
245
|
-
const { mountList, mountSync, mountStatus } = await import('../../connectors-
|
|
300
|
+
const { mountList, mountSync, mountStatus } = await import('../../connectors-UNKUKEPG.js');
|
|
246
301
|
if (!sub || sub === "list") return (await mountList(plugin.connectorManager)).content[0].text;
|
|
247
302
|
if (sub === "sync" && rest[0])
|
|
248
303
|
return (await mountSync(plugin.connectorManager, rest[0])).content[0].text;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../workspace-plugin/src/adapters/omp.ts"],"names":[],"mappings":"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","file":"omp.js","sourcesContent":["import { DEFAULT_DRIVER_ID } from \"@skaile/workspaces/core/framework\";\nimport type { WorkspacePlugin } from \"../plugin.js\";\n\n// ── Extension source generator (STATELESS) ──────────────────────────────────\n// This function generates the .omp/extensions/skaile.ts file content.\n// It is stateless — takes only projectDir, does not require a booted plugin.\n// OMP tool set in the generated file is intentionally a reduced subset\n// (high-frequency tools only) — the full set is available via the MCP adapter.\n\n/**\n * Generate the `.omp/extensions/skaile.ts` file content for a given project.\n *\n * Stateless — accepts only `projectDir` and embeds it as a JSON string\n * literal in the generated TypeScript source. No `boot()` or plugin instance\n * is required; this function is safe to call from install commands.\n *\n * The generated file exports `onInit`, `tools`, and `slashCommands` as\n * required by the OMP extension API.\n *\n * @param projectDir - Absolute path to the skaile project root (embedded in\n * the generated source).\n * @returns A TypeScript source string ready to be written to\n * `.omp/extensions/skaile.ts`.\n *\n * @docLink packages/workspace-plugin/concepts#adapters\n */\nexport function buildOmpExtensionSource(projectDir: string): string {\n const escaped = JSON.stringify(projectDir);\n return `// .omp/extensions/skaile.ts\n// Generated by: skaile plugin install --driver omp\n// or: skaile repl --driver omp (ephemeral — removed on exit)\n// Re-generate: skaile plugin install --driver omp --project-dir ${projectDir}\nimport { WorkspacePlugin } from \"@skaile/workspaces/workspace-plugin\";\n\nconst plugin = new WorkspacePlugin({ projectDir: ${escaped}, bootOwned: true });\n\nexport async function onInit() {\n await plugin.boot();\n return { systemPromptAppend: plugin.buildSystemPromptSection() };\n}\n\nexport function tools() {\n return plugin.buildOmpToolSet();\n}\n\nexport const slashCommands = [\n {\n name: \"/flow\",\n description: \"Flow inspection: /flow list | show <id> | sessions | session <runId>\",\n handler: (args: string[]) => plugin.handleSlashCommand(\"flow\", args),\n },\n {\n name: \"/connector\",\n description: \"Connector CRUD: /connector list | read <id> <path> | exec <id> <op> [json-args] | describe <id>\",\n handler: (args: string[]) => plugin.handleSlashCommand(\"connector\", args),\n },\n {\n name: \"/skill\",\n description: \"Skill catalog: /skill list | show <id> | search <query> | run <id>\",\n handler: (args: string[]) => plugin.handleSlashCommand(\"skill\", args),\n },\n {\n name: \"/mounts\",\n description: \"Mount management: /mounts list | sync <id> | status <id>\",\n handler: (args: string[]) => plugin.handleSlashCommand(\"mounts\", args),\n },\n {\n name: \"/validate\",\n description: \"Validate workspace config (skaile.yaml)\",\n handler: () => plugin.handleSlashCommand(\"validate\", []),\n },\n];\n`;\n}\n\n// ── OMP tool set builder ──────────────────────────────────────────────────────\n// OMP tool definition shape: { name, description, parameters, handler }\n// This is a reduced subset of the MCP tool surface (high-frequency tools only).\n\n/**\n * Build the OMP-native tool set for a booted `WorkspacePlugin`.\n *\n * Returns 13 tool objects in OMP's `{ name, description, parameters, handler }`\n * shape — a high-frequency subset of the 27 MCP tools. The full tool surface\n * is available via the MCP adapter.\n *\n * Included tools: `mount_list`, `mount_sync`, `flow_list`, `flow_list_sessions`,\n * `skill_list`, `skill_search`, `skill_show`, `connector_list`, `connector_read`,\n * `connector_exec`, `session_list`, `workspace_validate`, `workspace_info`.\n *\n * @param plugin - A booted `WorkspacePlugin` instance.\n * @returns Array of OMP tool definition objects.\n *\n * @docLink packages/workspace-plugin/concepts#adapters\n */\nexport function buildOmpToolSet(plugin: WorkspacePlugin): unknown[] {\n return [\n {\n name: \"mount_list\",\n description: \"List all mounts declared in skaile.yaml with their mount status.\",\n parameters: {},\n handler: async () => {\n const { mountList } = await import(\"../tools/connectors.js\");\n return (await mountList(plugin.connectorManager)).content[0].text;\n },\n },\n {\n name: \"mount_sync\",\n description: \"Sync a mount (pull latest from remote).\",\n parameters: { mount_id: { type: \"string\" } },\n handler: async ({ mount_id }: { mount_id: string }) => {\n const { mountSync } = await import(\"../tools/connectors.js\");\n return (await mountSync(plugin.connectorManager, mount_id)).content[0].text;\n },\n },\n {\n name: \"flow_list\",\n description: \"List all available flow definitions from ai-assets.\",\n parameters: {},\n handler: async () => {\n const { flowList } = await import(\"../tools/flows.js\");\n return (await flowList(plugin.projectDir)).content[0].text;\n },\n },\n {\n name: \"flow_list_sessions\",\n description: \"List past flow run sessions for this workspace.\",\n parameters: {},\n handler: async () => {\n const { flowListSessions } = await import(\"../tools/flows.js\");\n return (await flowListSessions(plugin.projectDir)).content[0].text;\n },\n },\n {\n name: \"skill_list\",\n description: \"List all skills in the ai-assets catalog.\",\n parameters: {},\n handler: async () => {\n const { skillList } = await import(\"../tools/skills.js\");\n return (await skillList(plugin.projectDir)).content[0].text;\n },\n },\n {\n name: \"skill_search\",\n description: \"Search skills by name, description, or keywords.\",\n parameters: { query: { type: \"string\" } },\n handler: async ({ query }: { query: string }) => {\n const { skillSearch } = await import(\"../tools/skills.js\");\n return (await skillSearch(plugin.projectDir, query)).content[0].text;\n },\n },\n {\n name: \"skill_show\",\n description: \"Show the full SKILL.md content for a skill.\",\n parameters: { skill_id: { type: \"string\" } },\n handler: async ({ skill_id }: { skill_id: string }) => {\n const { skillShow } = await import(\"../tools/skills.js\");\n return (await skillShow(plugin.projectDir, skill_id)).content[0].text;\n },\n },\n {\n name: \"connector_list\",\n description:\n \"List connectors declared in skaile.yaml as {connected, failed, notice?}. A host-managed mount in `connected` carries `health` {status: ok|stale|failed, errorClass, checkedAt}; if it is not ok, tell the user and do not write to it. `failed` holds connectors that did not connect this session, with the failure reason — their mount paths are dead directories, not synced workspaces.\",\n parameters: {},\n handler: async () => {\n const { connectorList } = await import(\"../tools/connectors.js\");\n return (await connectorList(plugin.connectorManager)).content[0].text;\n },\n },\n {\n name: \"connector_read\",\n description: \"Read content from a connector by path.\",\n parameters: { connector_id: { type: \"string\" }, path: { type: \"string\" } },\n handler: async ({ connector_id, path }: { connector_id: string; path: string }) => {\n const { connectorRead } = await import(\"../tools/connectors.js\");\n return (await connectorRead(plugin.connectorManager, connector_id, path)).content[0].text;\n },\n },\n {\n name: \"connector_exec\",\n description: \"Execute a custom operation on a connector.\",\n parameters: {\n connector_id: { type: \"string\" },\n operation: { type: \"string\" },\n args: { type: \"object\", optional: true },\n },\n handler: async ({\n connector_id,\n operation,\n args,\n }: {\n connector_id: string;\n operation: string;\n args?: Record<string, unknown>;\n }) => {\n const { connectorExec } = await import(\"../tools/connectors.js\");\n return (await connectorExec(plugin.connectorManager, connector_id, operation, args ?? {}))\n .content[0].text;\n },\n },\n {\n name: \"session_list\",\n description: \"List past agent run sessions.\",\n parameters: {},\n handler: async () => {\n const { sessionList } = await import(\"../tools/sessions.js\");\n return (await sessionList(plugin.projectDir)).content[0].text;\n },\n },\n {\n name: \"workspace_validate\",\n description: \"Run a full health check on the workspace config.\",\n parameters: {},\n handler: async () => {\n const { workspaceValidate } = await import(\"../tools/validator.js\");\n return (await workspaceValidate(plugin, plugin.driver ?? DEFAULT_DRIVER_ID)).content[0]\n .text;\n },\n },\n {\n name: \"workspace_info\",\n description: \"Show workspace configuration (driver, model, resource counts).\",\n parameters: {},\n handler: async () => {\n const { workspaceInfo } = await import(\"../tools/validator.js\");\n return (await workspaceInfo(plugin, plugin.driver ?? DEFAULT_DRIVER_ID, plugin.model))\n .content[0].text;\n },\n },\n ];\n}\n\n// ── Slash command dispatcher ──────────────────────────────────────────────────\n\n/**\n * Dispatch an OMP slash command to the appropriate tool group.\n *\n * Routes the command group string to the corresponding tool functions.\n * Supported groups: `\"flow\"`, `\"connector\"`, `\"skill\"`, `\"mounts\"`,\n * `\"validate\"`. Returns a human-readable string for display in the OMP\n * terminal.\n *\n * Sub-commands per group:\n * - `flow`: `list` | `show <id>` | `sessions` | `session <runId>`\n * - `connector`: `list` | `read <id> <path>` | `exec <id> <op> [json-args]` | `describe <id>`\n * - `skill`: `list` | `show <id>` | `search <query>` | `run <id>`\n * - `mounts`: `list` | `sync <id>` | `status <id>`\n * - `validate`: (no sub-commands)\n *\n * @param plugin - A booted `WorkspacePlugin` instance.\n * @param group - Slash command group name (without the leading `/`).\n * @param args - Tokenised arguments following the group name.\n * @returns Plain-text result string for the OMP terminal.\n *\n * @docLink packages/workspace-plugin/concepts#adapters\n */\nexport async function handleSlashCommand(\n plugin: WorkspacePlugin,\n group: string,\n args: string[],\n): Promise<string> {\n const sub = args[0];\n const rest = args.slice(1);\n\n try {\n switch (group) {\n case \"flow\":\n return await handleFlowCommand(plugin, sub, rest);\n case \"connector\":\n return await handleConnectorCommand(plugin, sub, rest);\n case \"skill\":\n return await handleSkillCommand(plugin, sub, rest);\n case \"mounts\":\n return await handleMountsCommand(plugin, sub, rest);\n case \"validate\":\n return await handleValidateCommand(plugin);\n default:\n return `Unknown group '${group}'`;\n }\n } catch (e: unknown) {\n return `Error: ${e instanceof Error ? e.message : String(e)}`;\n }\n}\n\nasync function handleFlowCommand(\n plugin: WorkspacePlugin,\n sub: string | undefined,\n rest: string[],\n): Promise<string> {\n const { flowList, flowShow, flowListSessions, flowGetSession } = await import(\n \"../tools/flows.js\"\n );\n if (!sub || sub === \"list\") return (await flowList(plugin.projectDir)).content[0].text;\n if (sub === \"show\" && rest[0])\n return (await flowShow(plugin.projectDir, rest[0])).content[0].text;\n if (sub === \"sessions\") return (await flowListSessions(plugin.projectDir)).content[0].text;\n if (sub === \"session\" && rest[0])\n return (await flowGetSession(plugin.projectDir, rest[0])).content[0].text;\n return \"Usage: /flow list | show <id> | sessions | session <runId>\";\n}\n\nasync function handleConnectorCommand(\n plugin: WorkspacePlugin,\n sub: string | undefined,\n rest: string[],\n): Promise<string> {\n const { connectorList, connectorRead, connectorExec, connectorDescribe } = await import(\n \"../tools/connectors.js\"\n );\n if (!sub || sub === \"list\") return (await connectorList(plugin.connectorManager)).content[0].text;\n if (sub === \"read\" && rest[0] && rest[1])\n return (await connectorRead(plugin.connectorManager, rest[0], rest[1])).content[0].text;\n if (sub === \"exec\" && rest[0] && rest[1]) {\n let args: Record<string, unknown> = {};\n if (rest[2]) {\n try {\n args = JSON.parse(rest.slice(2).join(\" \"));\n } catch {\n /* best-effort parse */\n }\n }\n return (await connectorExec(plugin.connectorManager, rest[0], rest[1], args)).content[0].text;\n }\n if (sub === \"describe\" && rest[0])\n return (await connectorDescribe(plugin.connectorManager, rest[0])).content[0].text;\n return \"Usage: /connector list | read <id> <path> | exec <id> <op> [json-args] | describe <id>\";\n}\n\nasync function handleSkillCommand(\n plugin: WorkspacePlugin,\n sub: string | undefined,\n rest: string[],\n): Promise<string> {\n const { skillList, skillShow, skillSearch } = await import(\"../tools/skills.js\");\n if (sub === \"run\" && rest[0])\n return (await skillShow(plugin.projectDir, rest[0])).content[0].text;\n if (!sub || sub === \"list\") return (await skillList(plugin.projectDir)).content[0].text;\n if (sub === \"show\" && rest[0])\n return (await skillShow(plugin.projectDir, rest[0])).content[0].text;\n if (sub === \"search\" && rest[0])\n return (await skillSearch(plugin.projectDir, rest.join(\" \"))).content[0].text;\n return \"Usage: /skill list | show <id> | search <query> | run <id>\";\n}\n\nasync function handleMountsCommand(\n plugin: WorkspacePlugin,\n sub: string | undefined,\n rest: string[],\n): Promise<string> {\n const { mountList, mountSync, mountStatus } = await import(\"../tools/connectors.js\");\n if (!sub || sub === \"list\") return (await mountList(plugin.connectorManager)).content[0].text;\n if (sub === \"sync\" && rest[0])\n return (await mountSync(plugin.connectorManager, rest[0])).content[0].text;\n if (sub === \"status\" && rest[0])\n return (await mountStatus(plugin.connectorManager, rest[0])).content[0].text;\n return \"Usage: /mounts list | sync <id> | status <id>\";\n}\n\nasync function handleValidateCommand(plugin: WorkspacePlugin): Promise<string> {\n const { workspaceValidate } = await import(\"../tools/validator.js\");\n return (await workspaceValidate(plugin, plugin.driver ?? DEFAULT_DRIVER_ID)).content[0].text;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../workspace-plugin/src/adapters/omp.ts"],"names":[],"mappings":";;;;AAUA,IAAM,YAAA,GAAwD;AAAA,EAC5D;AAAA,IACE,IAAA,EAAM,MAAA;AAAA,IACN,WAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAM,WAAA;AAAA,IACN,WAAA,EACE;AAAA,GACJ;AAAA,EACA;AAAA,IACE,IAAA,EAAM,OAAA;AAAA,IACN,WAAA,EAAa;AAAA,GACf;AAAA,EACA;AAAA,IACE,IAAA,EAAM,QAAA;AAAA,IACN,WAAA,EAAa;AAAA,GACf;AAAA,EACA,EAAE,IAAA,EAAM,UAAA,EAAY,WAAA,EAAa,yCAAA;AACnC,CAAA;AAmCO,SAAS,wBAAwB,UAAA,EAA4B;AAGlE,EAAA,MAAM,KAAA,GAAwB,eAAA,CAAgB,EAAqB,CAAA,CAAoB,GAAA;AAAA,IACrF,CAAC,EAAE,IAAA,EAAM,WAAA,EAAa,YAAW,MAAO,EAAE,IAAA,EAAM,WAAA,EAAa,UAAA,EAAW;AAAA,GAC1E;AACA,EAAA,OAAO,CAAA;AAAA;AAAA;AAAA,uEAAA,EAGgE,UAAU;AAAA;;AAAA,oBAAA,EAG7D,IAAA,CAAK,SAAA,CAAU,UAAU,CAAC,CAAA;AAAA,cAAA,EAChC,IAAA,CAAK,SAAA,CAAU,KAAA,EAAO,IAAA,EAAM,CAAC,CAAC,CAAA;AAAA,iBAAA,EAC3B,IAAA,CAAK,SAAA,CAAU,YAAA,EAAc,IAAA,EAAM,CAAC,CAAC,CAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA;AAuExD;AAsBO,SAAS,gBAAgB,MAAA,EAAoC;AAClE,EAAA,OAAO;AAAA,IACL;AAAA,MACE,IAAA,EAAM,YAAA;AAAA,MACN,WAAA,EAAa,kEAAA;AAAA,MACb,YAAY,EAAC;AAAA,MACb,SAAS,YAAY;AACnB,QAAA,MAAM,EAAE,SAAA,EAAU,GAAI,MAAM,OAAO,8BAAwB,CAAA;AAC3D,QAAA,OAAA,CAAQ,MAAM,SAAA,CAAU,MAAA,CAAO,gBAAgB,CAAA,EAAG,OAAA,CAAQ,CAAC,CAAA,CAAE,IAAA;AAAA,MAC/D;AAAA,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAM,YAAA;AAAA,MACN,WAAA,EAAa,yCAAA;AAAA,MACb,YAAY,EAAE,QAAA,EAAU,EAAE,IAAA,EAAM,UAAS,EAAE;AAAA,MAC3C,OAAA,EAAS,OAAO,EAAE,QAAA,EAAS,KAA4B;AACrD,QAAA,MAAM,EAAE,SAAA,EAAU,GAAI,MAAM,OAAO,8BAAwB,CAAA;AAC3D,QAAA,OAAA,CAAQ,MAAM,UAAU,MAAA,CAAO,gBAAA,EAAkB,QAAQ,CAAA,EAAG,OAAA,CAAQ,CAAC,CAAA,CAAE,IAAA;AAAA,MACzE;AAAA,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAM,WAAA;AAAA,MACN,WAAA,EAAa,qDAAA;AAAA,MACb,YAAY,EAAC;AAAA,MACb,SAAS,YAAY;AACnB,QAAA,MAAM,EAAE,QAAA,EAAS,GAAI,MAAM,OAAO,yBAAmB,CAAA;AACrD,QAAA,OAAA,CAAQ,MAAM,QAAA,CAAS,MAAA,CAAO,UAAU,CAAA,EAAG,OAAA,CAAQ,CAAC,CAAA,CAAE,IAAA;AAAA,MACxD;AAAA,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAM,oBAAA;AAAA,MACN,WAAA,EAAa,iDAAA;AAAA,MACb,YAAY,EAAC;AAAA,MACb,SAAS,YAAY;AACnB,QAAA,MAAM,EAAE,gBAAA,EAAiB,GAAI,MAAM,OAAO,yBAAmB,CAAA;AAC7D,QAAA,OAAA,CAAQ,MAAM,gBAAA,CAAiB,MAAA,CAAO,UAAU,CAAA,EAAG,OAAA,CAAQ,CAAC,CAAA,CAAE,IAAA;AAAA,MAChE;AAAA,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAM,YAAA;AAAA,MACN,WAAA,EAAa,2CAAA;AAAA,MACb,YAAY,EAAC;AAAA,MACb,SAAS,YAAY;AACnB,QAAA,MAAM,EAAE,SAAA,EAAU,GAAI,MAAM,OAAO,0BAAoB,CAAA;AACvD,QAAA,OAAA,CAAQ,MAAM,SAAA,CAAU,MAAA,CAAO,UAAU,CAAA,EAAG,OAAA,CAAQ,CAAC,CAAA,CAAE,IAAA;AAAA,MACzD;AAAA,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAM,cAAA;AAAA,MACN,WAAA,EAAa,kDAAA;AAAA,MACb,YAAY,EAAE,KAAA,EAAO,EAAE,IAAA,EAAM,UAAS,EAAE;AAAA,MACxC,OAAA,EAAS,OAAO,EAAE,KAAA,EAAM,KAAyB;AAC/C,QAAA,MAAM,EAAE,WAAA,EAAY,GAAI,MAAM,OAAO,0BAAoB,CAAA;AACzD,QAAA,OAAA,CAAQ,MAAM,YAAY,MAAA,CAAO,UAAA,EAAY,KAAK,CAAA,EAAG,OAAA,CAAQ,CAAC,CAAA,CAAE,IAAA;AAAA,MAClE;AAAA,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAM,YAAA;AAAA,MACN,WAAA,EAAa,6CAAA;AAAA,MACb,YAAY,EAAE,QAAA,EAAU,EAAE,IAAA,EAAM,UAAS,EAAE;AAAA,MAC3C,OAAA,EAAS,OAAO,EAAE,QAAA,EAAS,KAA4B;AACrD,QAAA,MAAM,EAAE,SAAA,EAAU,GAAI,MAAM,OAAO,0BAAoB,CAAA;AACvD,QAAA,OAAA,CAAQ,MAAM,UAAU,MAAA,CAAO,UAAA,EAAY,QAAQ,CAAA,EAAG,OAAA,CAAQ,CAAC,CAAA,CAAE,IAAA;AAAA,MACnE;AAAA,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAM,gBAAA;AAAA,MACN,WAAA,EACE,mYAAA;AAAA,MACF,YAAY,EAAC;AAAA,MACb,SAAS,YAAY;AACnB,QAAA,MAAM,EAAE,aAAA,EAAc,GAAI,MAAM,OAAO,8BAAwB,CAAA;AAC/D,QAAA,OAAA,CAAQ,MAAM,aAAA,CAAc,MAAA,CAAO,gBAAgB,CAAA,EAAG,OAAA,CAAQ,CAAC,CAAA,CAAE,IAAA;AAAA,MACnE;AAAA,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAM,gBAAA;AAAA,MACN,WAAA,EAAa,wCAAA;AAAA,MACb,UAAA,EAAY,EAAE,YAAA,EAAc,EAAE,IAAA,EAAM,QAAA,EAAS,EAAG,IAAA,EAAM,EAAE,IAAA,EAAM,QAAA,EAAS,EAAE;AAAA,MACzE,OAAA,EAAS,OAAO,EAAE,YAAA,EAAc,MAAK,KAA8C;AACjF,QAAA,MAAM,EAAE,aAAA,EAAc,GAAI,MAAM,OAAO,8BAAwB,CAAA;AAC/D,QAAA,OAAA,CAAQ,MAAM,cAAc,MAAA,CAAO,gBAAA,EAAkB,cAAc,IAAI,CAAA,EAAG,OAAA,CAAQ,CAAC,CAAA,CAAE,IAAA;AAAA,MACvF;AAAA,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAM,gBAAA;AAAA,MACN,WAAA,EAAa,4CAAA;AAAA,MACb,UAAA,EAAY;AAAA,QACV,YAAA,EAAc,EAAE,IAAA,EAAM,QAAA,EAAS;AAAA,QAC/B,SAAA,EAAW,EAAE,IAAA,EAAM,QAAA,EAAS;AAAA,QAC5B,IAAA,EAAM,EAAE,IAAA,EAAM,QAAA,EAAU,UAAU,IAAA;AAAK,OACzC;AAAA,MACA,SAAS,OAAO;AAAA,QACd,YAAA;AAAA,QACA,SAAA;AAAA,QACA;AAAA,OACF,KAIM;AACJ,QAAA,MAAM,EAAE,aAAA,EAAc,GAAI,MAAM,OAAO,8BAAwB,CAAA;AAC/D,QAAA,OAAA,CAAQ,MAAM,aAAA,CAAc,MAAA,CAAO,gBAAA,EAAkB,YAAA,EAAc,SAAA,EAAW,IAAA,IAAQ,EAAE,CAAA,EACrF,OAAA,CAAQ,CAAC,CAAA,CAAE,IAAA;AAAA,MAChB;AAAA,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAM,cAAA;AAAA,MACN,WAAA,EAAa,+BAAA;AAAA,MACb,YAAY,EAAC;AAAA,MACb,SAAS,YAAY;AACnB,QAAA,MAAM,EAAE,WAAA,EAAY,GAAI,MAAM,OAAO,4BAAsB,CAAA;AAC3D,QAAA,OAAA,CAAQ,MAAM,WAAA,CAAY,MAAA,CAAO,UAAU,CAAA,EAAG,OAAA,CAAQ,CAAC,CAAA,CAAE,IAAA;AAAA,MAC3D;AAAA,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAM,oBAAA;AAAA,MACN,WAAA,EAAa,kDAAA;AAAA,MACb,YAAY,EAAC;AAAA,MACb,SAAS,YAAY;AACnB,QAAA,MAAM,EAAE,iBAAA,EAAkB,GAAI,MAAM,OAAO,6BAAuB,CAAA;AAClE,QAAA,OAAA,CAAQ,MAAM,kBAAkB,MAAA,EAAQ,MAAA,CAAO,UAAU,iBAAiB,CAAA,EAAG,OAAA,CAAQ,CAAC,CAAA,CACnF,IAAA;AAAA,MACL;AAAA,KACF;AAAA,IACA;AAAA,MACE,IAAA,EAAM,gBAAA;AAAA,MACN,WAAA,EAAa,gEAAA;AAAA,MACb,YAAY,EAAC;AAAA,MACb,SAAS,YAAY;AACnB,QAAA,MAAM,EAAE,aAAA,EAAc,GAAI,MAAM,OAAO,6BAAuB,CAAA;AAC9D,QAAA,OAAA,CAAQ,MAAM,aAAA,CAAc,MAAA,EAAQ,MAAA,CAAO,MAAA,IAAU,iBAAA,EAAmB,MAAA,CAAO,KAAK,CAAA,EACjF,OAAA,CAAQ,CAAC,CAAA,CAAE,IAAA;AAAA,MAChB;AAAA;AACF,GACF;AACF;AA0BA,eAAsB,kBAAA,CACpB,MAAA,EACA,KAAA,EACA,IAAA,EACiB;AACjB,EAAA,MAAM,GAAA,GAAM,KAAK,CAAC,CAAA;AAClB,EAAA,MAAM,IAAA,GAAO,IAAA,CAAK,KAAA,CAAM,CAAC,CAAA;AAEzB,EAAA,IAAI;AACF,IAAA,QAAQ,KAAA;AAAO,MACb,KAAK,MAAA;AACH,QAAA,OAAO,MAAM,iBAAA,CAAkB,MAAA,EAAQ,GAAA,EAAK,IAAI,CAAA;AAAA,MAClD,KAAK,WAAA;AACH,QAAA,OAAO,MAAM,sBAAA,CAAuB,MAAA,EAAQ,GAAA,EAAK,IAAI,CAAA;AAAA,MACvD,KAAK,OAAA;AACH,QAAA,OAAO,MAAM,kBAAA,CAAmB,MAAA,EAAQ,GAAA,EAAK,IAAI,CAAA;AAAA,MACnD,KAAK,QAAA;AACH,QAAA,OAAO,MAAM,mBAAA,CAAoB,MAAA,EAAQ,GAAA,EAAK,IAAI,CAAA;AAAA,MACpD,KAAK,UAAA;AACH,QAAA,OAAO,MAAM,sBAAsB,MAAM,CAAA;AAAA,MAC3C;AACE,QAAA,OAAO,kBAAkB,KAAK,CAAA,CAAA,CAAA;AAAA;AAClC,EACF,SAAS,CAAA,EAAY;AACnB,IAAA,OAAO,UAAU,CAAA,YAAa,KAAA,GAAQ,EAAE,OAAA,GAAU,MAAA,CAAO,CAAC,CAAC,CAAA,CAAA;AAAA,EAC7D;AACF;AAEA,eAAe,iBAAA,CACb,MAAA,EACA,GAAA,EACA,IAAA,EACiB;AACjB,EAAA,MAAM,EAAE,UAAU,QAAA,EAAU,gBAAA,EAAkB,gBAAe,GAAI,MAAM,OACrE,yBACF,CAAA;AACA,EAAA,IAAI,CAAC,GAAA,IAAO,GAAA,KAAQ,MAAA,EAAQ,OAAA,CAAQ,MAAM,QAAA,CAAS,MAAA,CAAO,UAAU,CAAA,EAAG,OAAA,CAAQ,CAAC,CAAA,CAAE,IAAA;AAClF,EAAA,IAAI,GAAA,KAAQ,MAAA,IAAU,IAAA,CAAK,CAAC,CAAA;AAC1B,IAAA,OAAA,CAAQ,MAAM,QAAA,CAAS,MAAA,CAAO,UAAA,EAAY,IAAA,CAAK,CAAC,CAAC,CAAA,EAAG,OAAA,CAAQ,CAAC,CAAA,CAAE,IAAA;AACjE,EAAA,IAAI,GAAA,KAAQ,UAAA,EAAY,OAAA,CAAQ,MAAM,gBAAA,CAAiB,OAAO,UAAU,CAAA,EAAG,OAAA,CAAQ,CAAC,CAAA,CAAE,IAAA;AACtF,EAAA,IAAI,GAAA,KAAQ,SAAA,IAAa,IAAA,CAAK,CAAC,CAAA;AAC7B,IAAA,OAAA,CAAQ,MAAM,cAAA,CAAe,MAAA,CAAO,UAAA,EAAY,IAAA,CAAK,CAAC,CAAC,CAAA,EAAG,OAAA,CAAQ,CAAC,CAAA,CAAE,IAAA;AACvE,EAAA,OAAO,4DAAA;AACT;AAEA,eAAe,sBAAA,CACb,MAAA,EACA,GAAA,EACA,IAAA,EACiB;AACjB,EAAA,MAAM,EAAE,eAAe,aAAA,EAAe,aAAA,EAAe,mBAAkB,GAAI,MAAM,OAC/E,8BACF,CAAA;AACA,EAAA,IAAI,CAAC,GAAA,IAAO,GAAA,KAAQ,MAAA,EAAQ,OAAA,CAAQ,MAAM,aAAA,CAAc,MAAA,CAAO,gBAAgB,CAAA,EAAG,OAAA,CAAQ,CAAC,CAAA,CAAE,IAAA;AAC7F,EAAA,IAAI,QAAQ,MAAA,IAAU,IAAA,CAAK,CAAC,CAAA,IAAK,KAAK,CAAC,CAAA;AACrC,IAAA,OAAA,CAAQ,MAAM,aAAA,CAAc,MAAA,CAAO,gBAAA,EAAkB,IAAA,CAAK,CAAC,CAAA,EAAG,IAAA,CAAK,CAAC,CAAC,CAAA,EAAG,OAAA,CAAQ,CAAC,CAAA,CAAE,IAAA;AACrF,EAAA,IAAI,QAAQ,MAAA,IAAU,IAAA,CAAK,CAAC,CAAA,IAAK,IAAA,CAAK,CAAC,CAAA,EAAG;AACxC,IAAA,IAAI,OAAgC,EAAC;AACrC,IAAA,IAAI,IAAA,CAAK,CAAC,CAAA,EAAG;AACX,MAAA,IAAI;AACF,QAAA,IAAA,GAAO,IAAA,CAAK,MAAM,IAAA,CAAK,KAAA,CAAM,CAAC,CAAA,CAAE,IAAA,CAAK,GAAG,CAAC,CAAA;AAAA,MAC3C,CAAA,CAAA,MAAQ;AAAA,MAER;AAAA,IACF;AACA,IAAA,OAAA,CAAQ,MAAM,aAAA,CAAc,MAAA,CAAO,gBAAA,EAAkB,KAAK,CAAC,CAAA,EAAG,IAAA,CAAK,CAAC,CAAA,EAAG,IAAI,CAAA,EAAG,OAAA,CAAQ,CAAC,CAAA,CAAE,IAAA;AAAA,EAC3F;AACA,EAAA,IAAI,GAAA,KAAQ,UAAA,IAAc,IAAA,CAAK,CAAC,CAAA;AAC9B,IAAA,OAAA,CAAQ,MAAM,iBAAA,CAAkB,MAAA,CAAO,gBAAA,EAAkB,IAAA,CAAK,CAAC,CAAC,CAAA,EAAG,OAAA,CAAQ,CAAC,CAAA,CAAE,IAAA;AAChF,EAAA,OAAO,wFAAA;AACT;AAEA,eAAe,kBAAA,CACb,MAAA,EACA,GAAA,EACA,IAAA,EACiB;AACjB,EAAA,MAAM,EAAE,SAAA,EAAW,SAAA,EAAW,aAAY,GAAI,MAAM,OAAO,0BAAoB,CAAA;AAC/E,EAAA,IAAI,GAAA,KAAQ,KAAA,IAAS,IAAA,CAAK,CAAC,CAAA;AACzB,IAAA,OAAA,CAAQ,MAAM,SAAA,CAAU,MAAA,CAAO,UAAA,EAAY,IAAA,CAAK,CAAC,CAAC,CAAA,EAAG,OAAA,CAAQ,CAAC,CAAA,CAAE,IAAA;AAClE,EAAA,IAAI,CAAC,GAAA,IAAO,GAAA,KAAQ,MAAA,EAAQ,OAAA,CAAQ,MAAM,SAAA,CAAU,MAAA,CAAO,UAAU,CAAA,EAAG,OAAA,CAAQ,CAAC,CAAA,CAAE,IAAA;AACnF,EAAA,IAAI,GAAA,KAAQ,MAAA,IAAU,IAAA,CAAK,CAAC,CAAA;AAC1B,IAAA,OAAA,CAAQ,MAAM,SAAA,CAAU,MAAA,CAAO,UAAA,EAAY,IAAA,CAAK,CAAC,CAAC,CAAA,EAAG,OAAA,CAAQ,CAAC,CAAA,CAAE,IAAA;AAClE,EAAA,IAAI,GAAA,KAAQ,QAAA,IAAY,IAAA,CAAK,CAAC,CAAA;AAC5B,IAAA,OAAA,CAAQ,MAAM,WAAA,CAAY,MAAA,CAAO,UAAA,EAAY,IAAA,CAAK,IAAA,CAAK,GAAG,CAAC,CAAA,EAAG,OAAA,CAAQ,CAAC,CAAA,CAAE,IAAA;AAC3E,EAAA,OAAO,4DAAA;AACT;AAEA,eAAe,mBAAA,CACb,MAAA,EACA,GAAA,EACA,IAAA,EACiB;AACjB,EAAA,MAAM,EAAE,SAAA,EAAW,SAAA,EAAW,aAAY,GAAI,MAAM,OAAO,8BAAwB,CAAA;AACnF,EAAA,IAAI,CAAC,GAAA,IAAO,GAAA,KAAQ,MAAA,EAAQ,OAAA,CAAQ,MAAM,SAAA,CAAU,MAAA,CAAO,gBAAgB,CAAA,EAAG,OAAA,CAAQ,CAAC,CAAA,CAAE,IAAA;AACzF,EAAA,IAAI,GAAA,KAAQ,MAAA,IAAU,IAAA,CAAK,CAAC,CAAA;AAC1B,IAAA,OAAA,CAAQ,MAAM,SAAA,CAAU,MAAA,CAAO,gBAAA,EAAkB,IAAA,CAAK,CAAC,CAAC,CAAA,EAAG,OAAA,CAAQ,CAAC,CAAA,CAAE,IAAA;AACxE,EAAA,IAAI,GAAA,KAAQ,QAAA,IAAY,IAAA,CAAK,CAAC,CAAA;AAC5B,IAAA,OAAA,CAAQ,MAAM,WAAA,CAAY,MAAA,CAAO,gBAAA,EAAkB,IAAA,CAAK,CAAC,CAAC,CAAA,EAAG,OAAA,CAAQ,CAAC,CAAA,CAAE,IAAA;AAC1E,EAAA,OAAO,+CAAA;AACT;AAEA,eAAe,sBAAsB,MAAA,EAA0C;AAC7E,EAAA,MAAM,EAAE,iBAAA,EAAkB,GAAI,MAAM,OAAO,6BAAuB,CAAA;AAClE,EAAA,OAAA,CAAQ,MAAM,kBAAkB,MAAA,EAAQ,MAAA,CAAO,UAAU,iBAAiB,CAAA,EAAG,OAAA,CAAQ,CAAC,CAAA,CAAE,IAAA;AAC1F","file":"omp.js","sourcesContent":["import { DEFAULT_DRIVER_ID } from \"@skaile/workspaces/core/framework\";\nimport type { WorkspacePlugin } from \"../plugin.js\";\n\n// ── Extension source generator (STATELESS) ──────────────────────────────────\n// This function generates the .omp/extensions/skaile.ts file content.\n// It is stateless — takes only projectDir, does not require a booted plugin.\n// OMP tool set in the generated file is intentionally a reduced subset\n// (high-frequency tools only) — the full set is available via the MCP adapter.\n\n/** Slash command groups the generated extension registers (one omp command each). */\nconst OMP_COMMANDS: { name: string; description: string }[] = [\n {\n name: \"flow\",\n description: \"Flow inspection: /flow list | show <id> | sessions | session <runId>\",\n },\n {\n name: \"connector\",\n description:\n \"Connector CRUD: /connector list | read <id> <path> | exec <id> <op> [json-args] | describe <id>\",\n },\n {\n name: \"skill\",\n description: \"Skill catalog: /skill list | show <id> | search <query> | run <id>\",\n },\n {\n name: \"mounts\",\n description: \"Mount management: /mounts list | sync <id> | status <id>\",\n },\n { name: \"validate\", description: \"Validate workspace config (skaile.yaml)\" },\n];\n\n/** Static description of one tool the generated extension registers. */\ninterface OmpToolSpec {\n name: string;\n description: string;\n parameters: Record<string, { type: string; optional?: boolean }>;\n}\n\n/**\n * Generate the `.omp/extensions/skaile.ts` file content for a given project.\n *\n * Stateless — accepts only `projectDir` and embeds it as a JSON string\n * literal in the generated TypeScript source. No `boot()` or plugin instance\n * is required; this function is safe to call from install commands.\n *\n * The generated file has the shape omp 18.x loads: a **default export factory**\n * `(pi) => …` that registers the tools (`pi.registerTool`) and slash commands\n * (`pi.registerCommand`). A module that exports `onInit`/`tools`/`slashCommands`\n * instead is rejected with \"Extension does not export a valid factory function\".\n *\n * The file imports nothing from skaile. omp resolves bare package names with\n * its own loader, which cannot resolve every dependency of the runtime (it\n * fails on `ulid` and `picocolors`), and a project rarely has\n * `@skaile/workspaces` installed beside `.omp/`. Each tool and command instead\n * runs `skaile integration omp-exec` — the same `skaile` the MCP entries invoke —\n * which boots the workspace plugin in an ordinary process.\n *\n * @param projectDir - Absolute path to the skaile project root (embedded in\n * the generated source).\n * @returns A TypeScript source string ready to be written to\n * `.omp/extensions/skaile.ts`.\n *\n * @docLink packages/workspace-plugin/concepts#adapters\n */\nexport function buildOmpExtensionSource(projectDir: string): string {\n // Only name/description/parameters are read: the handlers close over a plugin\n // that is never booted here.\n const tools: OmpToolSpec[] = (buildOmpToolSet({} as WorkspacePlugin) as OmpToolSpec[]).map(\n ({ name, description, parameters }) => ({ name, description, parameters }),\n );\n return `// .omp/extensions/skaile.ts\n// Generated by: skaile integration install --driver omp\n// or: skaile repl --driver omp (ephemeral — removed on exit)\n// Re-generate: skaile integration install --driver omp --project-dir ${projectDir}\nimport { spawn } from \"node:child_process\";\n\nconst PROJECT_DIR = ${JSON.stringify(projectDir)};\nconst TOOLS = ${JSON.stringify(tools, null, 2)};\nconst COMMANDS = ${JSON.stringify(OMP_COMMANDS, null, 2)};\n\n/** Run \\`skaile integration omp-exec <kind> <name>\\` with a JSON payload on stdin; resolves to its stdout. */\nfunction skaileExec(kind, name, payload) {\n return new Promise((resolve, reject) => {\n const child = spawn(\n \"skaile\",\n [\"integration\", \"omp-exec\", kind, name, \"--project-dir\", PROJECT_DIR],\n { stdio: [\"pipe\", \"pipe\", \"pipe\"] },\n );\n let out = \"\";\n let err = \"\";\n child.stdout.on(\"data\", (chunk) => (out += chunk));\n child.stderr.on(\"data\", (chunk) => (err += chunk));\n child.on(\"error\", (e) => reject(new Error(\"could not run skaile: \" + e.message)));\n child.on(\"close\", (code) =>\n code === 0 ? resolve(out.trimEnd()) : reject(new Error(err.trim() || \"skaile exited \" + code)),\n );\n child.stdin.end(JSON.stringify(payload));\n });\n}\n\nfunction schemaFor(z, spec) {\n const base = spec.type === \"object\" ? z.record(z.string(), z.unknown()) : z.string();\n return spec.optional ? base.optional() : base;\n}\n\nexport default function skaile(pi) {\n const z = pi.zod;\n pi.setLabel(\"skaile workspace\");\n\n for (const tool of TOOLS) {\n pi.registerTool({\n name: tool.name,\n label: tool.name,\n description: tool.description,\n parameters: z.object(\n Object.fromEntries(\n Object.entries(tool.parameters).map(([key, spec]) => [key, schemaFor(z, spec)]),\n ),\n ),\n async execute(_toolCallId, params) {\n const text = await skaileExec(\"tool\", tool.name, params);\n return { content: [{ type: \"text\", text }], details: {} };\n },\n });\n }\n\n for (const command of COMMANDS) {\n pi.registerCommand(command.name, {\n description: command.description,\n handler: async (args, ctx) => {\n try {\n const parts = args.trim().split(/\\\\s+/).filter(Boolean);\n pi.sendMessage(\n {\n customType: \"skaile-\" + command.name,\n content: await skaileExec(\"slash\", command.name, parts),\n display: true,\n attribution: \"agent\",\n },\n { triggerTurn: false },\n );\n } catch (e) {\n ctx.ui.notify(e instanceof Error ? e.message : String(e), \"error\");\n }\n },\n });\n }\n}\n`;\n}\n\n// ── OMP tool set builder ──────────────────────────────────────────────────────\n// OMP tool definition shape: { name, description, parameters, handler }\n// This is a reduced subset of the MCP tool surface (high-frequency tools only).\n\n/**\n * Build the OMP-native tool set for a booted `WorkspacePlugin`.\n *\n * Returns 13 tool objects in OMP's `{ name, description, parameters, handler }`\n * shape — a high-frequency subset of the 27 MCP tools. The full tool surface\n * is available via the MCP adapter.\n *\n * Included tools: `mount_list`, `mount_sync`, `flow_list`, `flow_list_sessions`,\n * `skill_list`, `skill_search`, `skill_show`, `connector_list`, `connector_read`,\n * `connector_exec`, `session_list`, `workspace_validate`, `workspace_info`.\n *\n * @param plugin - A booted `WorkspacePlugin` instance.\n * @returns Array of OMP tool definition objects.\n *\n * @docLink packages/workspace-plugin/concepts#adapters\n */\nexport function buildOmpToolSet(plugin: WorkspacePlugin): unknown[] {\n return [\n {\n name: \"mount_list\",\n description: \"List all mounts declared in skaile.yaml with their mount status.\",\n parameters: {},\n handler: async () => {\n const { mountList } = await import(\"../tools/connectors.js\");\n return (await mountList(plugin.connectorManager)).content[0].text;\n },\n },\n {\n name: \"mount_sync\",\n description: \"Sync a mount (pull latest from remote).\",\n parameters: { mount_id: { type: \"string\" } },\n handler: async ({ mount_id }: { mount_id: string }) => {\n const { mountSync } = await import(\"../tools/connectors.js\");\n return (await mountSync(plugin.connectorManager, mount_id)).content[0].text;\n },\n },\n {\n name: \"flow_list\",\n description: \"List all available flow definitions from ai-assets.\",\n parameters: {},\n handler: async () => {\n const { flowList } = await import(\"../tools/flows.js\");\n return (await flowList(plugin.projectDir)).content[0].text;\n },\n },\n {\n name: \"flow_list_sessions\",\n description: \"List past flow run sessions for this workspace.\",\n parameters: {},\n handler: async () => {\n const { flowListSessions } = await import(\"../tools/flows.js\");\n return (await flowListSessions(plugin.projectDir)).content[0].text;\n },\n },\n {\n name: \"skill_list\",\n description: \"List all skills in the ai-assets catalog.\",\n parameters: {},\n handler: async () => {\n const { skillList } = await import(\"../tools/skills.js\");\n return (await skillList(plugin.projectDir)).content[0].text;\n },\n },\n {\n name: \"skill_search\",\n description: \"Search skills by name, description, or keywords.\",\n parameters: { query: { type: \"string\" } },\n handler: async ({ query }: { query: string }) => {\n const { skillSearch } = await import(\"../tools/skills.js\");\n return (await skillSearch(plugin.projectDir, query)).content[0].text;\n },\n },\n {\n name: \"skill_show\",\n description: \"Show the full SKILL.md content for a skill.\",\n parameters: { skill_id: { type: \"string\" } },\n handler: async ({ skill_id }: { skill_id: string }) => {\n const { skillShow } = await import(\"../tools/skills.js\");\n return (await skillShow(plugin.projectDir, skill_id)).content[0].text;\n },\n },\n {\n name: \"connector_list\",\n description:\n \"List connectors declared in skaile.yaml as {connected, failed, notice?}. A host-managed mount in `connected` carries `health` {status: ok|stale|failed, errorClass, checkedAt}; if it is not ok, tell the user and do not write to it. `failed` holds connectors that did not connect this session, with the failure reason — their mount paths are dead directories, not synced workspaces.\",\n parameters: {},\n handler: async () => {\n const { connectorList } = await import(\"../tools/connectors.js\");\n return (await connectorList(plugin.connectorManager)).content[0].text;\n },\n },\n {\n name: \"connector_read\",\n description: \"Read content from a connector by path.\",\n parameters: { connector_id: { type: \"string\" }, path: { type: \"string\" } },\n handler: async ({ connector_id, path }: { connector_id: string; path: string }) => {\n const { connectorRead } = await import(\"../tools/connectors.js\");\n return (await connectorRead(plugin.connectorManager, connector_id, path)).content[0].text;\n },\n },\n {\n name: \"connector_exec\",\n description: \"Execute a custom operation on a connector.\",\n parameters: {\n connector_id: { type: \"string\" },\n operation: { type: \"string\" },\n args: { type: \"object\", optional: true },\n },\n handler: async ({\n connector_id,\n operation,\n args,\n }: {\n connector_id: string;\n operation: string;\n args?: Record<string, unknown>;\n }) => {\n const { connectorExec } = await import(\"../tools/connectors.js\");\n return (await connectorExec(plugin.connectorManager, connector_id, operation, args ?? {}))\n .content[0].text;\n },\n },\n {\n name: \"session_list\",\n description: \"List past agent run sessions.\",\n parameters: {},\n handler: async () => {\n const { sessionList } = await import(\"../tools/sessions.js\");\n return (await sessionList(plugin.projectDir)).content[0].text;\n },\n },\n {\n name: \"workspace_validate\",\n description: \"Run a full health check on the workspace config.\",\n parameters: {},\n handler: async () => {\n const { workspaceValidate } = await import(\"../tools/validator.js\");\n return (await workspaceValidate(plugin, plugin.driver ?? DEFAULT_DRIVER_ID)).content[0]\n .text;\n },\n },\n {\n name: \"workspace_info\",\n description: \"Show workspace configuration (driver, model, resource counts).\",\n parameters: {},\n handler: async () => {\n const { workspaceInfo } = await import(\"../tools/validator.js\");\n return (await workspaceInfo(plugin, plugin.driver ?? DEFAULT_DRIVER_ID, plugin.model))\n .content[0].text;\n },\n },\n ];\n}\n\n// ── Slash command dispatcher ──────────────────────────────────────────────────\n\n/**\n * Dispatch an OMP slash command to the appropriate tool group.\n *\n * Routes the command group string to the corresponding tool functions.\n * Supported groups: `\"flow\"`, `\"connector\"`, `\"skill\"`, `\"mounts\"`,\n * `\"validate\"`. Returns a human-readable string for display in the OMP\n * terminal.\n *\n * Sub-commands per group:\n * - `flow`: `list` | `show <id>` | `sessions` | `session <runId>`\n * - `connector`: `list` | `read <id> <path>` | `exec <id> <op> [json-args]` | `describe <id>`\n * - `skill`: `list` | `show <id>` | `search <query>` | `run <id>`\n * - `mounts`: `list` | `sync <id>` | `status <id>`\n * - `validate`: (no sub-commands)\n *\n * @param plugin - A booted `WorkspacePlugin` instance.\n * @param group - Slash command group name (without the leading `/`).\n * @param args - Tokenised arguments following the group name.\n * @returns Plain-text result string for the OMP terminal.\n *\n * @docLink packages/workspace-plugin/concepts#adapters\n */\nexport async function handleSlashCommand(\n plugin: WorkspacePlugin,\n group: string,\n args: string[],\n): Promise<string> {\n const sub = args[0];\n const rest = args.slice(1);\n\n try {\n switch (group) {\n case \"flow\":\n return await handleFlowCommand(plugin, sub, rest);\n case \"connector\":\n return await handleConnectorCommand(plugin, sub, rest);\n case \"skill\":\n return await handleSkillCommand(plugin, sub, rest);\n case \"mounts\":\n return await handleMountsCommand(plugin, sub, rest);\n case \"validate\":\n return await handleValidateCommand(plugin);\n default:\n return `Unknown group '${group}'`;\n }\n } catch (e: unknown) {\n return `Error: ${e instanceof Error ? e.message : String(e)}`;\n }\n}\n\nasync function handleFlowCommand(\n plugin: WorkspacePlugin,\n sub: string | undefined,\n rest: string[],\n): Promise<string> {\n const { flowList, flowShow, flowListSessions, flowGetSession } = await import(\n \"../tools/flows.js\"\n );\n if (!sub || sub === \"list\") return (await flowList(plugin.projectDir)).content[0].text;\n if (sub === \"show\" && rest[0])\n return (await flowShow(plugin.projectDir, rest[0])).content[0].text;\n if (sub === \"sessions\") return (await flowListSessions(plugin.projectDir)).content[0].text;\n if (sub === \"session\" && rest[0])\n return (await flowGetSession(plugin.projectDir, rest[0])).content[0].text;\n return \"Usage: /flow list | show <id> | sessions | session <runId>\";\n}\n\nasync function handleConnectorCommand(\n plugin: WorkspacePlugin,\n sub: string | undefined,\n rest: string[],\n): Promise<string> {\n const { connectorList, connectorRead, connectorExec, connectorDescribe } = await import(\n \"../tools/connectors.js\"\n );\n if (!sub || sub === \"list\") return (await connectorList(plugin.connectorManager)).content[0].text;\n if (sub === \"read\" && rest[0] && rest[1])\n return (await connectorRead(plugin.connectorManager, rest[0], rest[1])).content[0].text;\n if (sub === \"exec\" && rest[0] && rest[1]) {\n let args: Record<string, unknown> = {};\n if (rest[2]) {\n try {\n args = JSON.parse(rest.slice(2).join(\" \"));\n } catch {\n /* best-effort parse */\n }\n }\n return (await connectorExec(plugin.connectorManager, rest[0], rest[1], args)).content[0].text;\n }\n if (sub === \"describe\" && rest[0])\n return (await connectorDescribe(plugin.connectorManager, rest[0])).content[0].text;\n return \"Usage: /connector list | read <id> <path> | exec <id> <op> [json-args] | describe <id>\";\n}\n\nasync function handleSkillCommand(\n plugin: WorkspacePlugin,\n sub: string | undefined,\n rest: string[],\n): Promise<string> {\n const { skillList, skillShow, skillSearch } = await import(\"../tools/skills.js\");\n if (sub === \"run\" && rest[0])\n return (await skillShow(plugin.projectDir, rest[0])).content[0].text;\n if (!sub || sub === \"list\") return (await skillList(plugin.projectDir)).content[0].text;\n if (sub === \"show\" && rest[0])\n return (await skillShow(plugin.projectDir, rest[0])).content[0].text;\n if (sub === \"search\" && rest[0])\n return (await skillSearch(plugin.projectDir, rest.join(\" \"))).content[0].text;\n return \"Usage: /skill list | show <id> | search <query> | run <id>\";\n}\n\nasync function handleMountsCommand(\n plugin: WorkspacePlugin,\n sub: string | undefined,\n rest: string[],\n): Promise<string> {\n const { mountList, mountSync, mountStatus } = await import(\"../tools/connectors.js\");\n if (!sub || sub === \"list\") return (await mountList(plugin.connectorManager)).content[0].text;\n if (sub === \"sync\" && rest[0])\n return (await mountSync(plugin.connectorManager, rest[0])).content[0].text;\n if (sub === \"status\" && rest[0])\n return (await mountStatus(plugin.connectorManager, rest[0])).content[0].text;\n return \"Usage: /mounts list | sync <id> | status <id>\";\n}\n\nasync function handleValidateCommand(plugin: WorkspacePlugin): Promise<string> {\n const { workspaceValidate } = await import(\"../tools/validator.js\");\n return (await workspaceValidate(plugin, plugin.driver ?? DEFAULT_DRIVER_ID)).content[0].text;\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export { PluginStore, WorkspacePlugin, buildClaudePluginFiles, resolveProjectDir } from '../chunk-
|
|
1
|
+
export { PluginStore, WorkspacePlugin, buildClaudePluginFiles, resolveProjectDir } from '../chunk-YQU2BPQD.js';
|
|
2
2
|
export { err, ok, okJson } from '../chunk-X5YPJV4N.js';
|
|
3
3
|
import '../chunk-5BEFNLOR.js';
|
|
4
|
-
import '../chunk-
|
|
4
|
+
import '../chunk-DKXNKFKP.js';
|
|
5
5
|
import '../chunk-C3CAXQMA.js';
|
|
6
6
|
import '../chunk-BOFL7GIF.js';
|
|
7
7
|
import '../chunk-NSBPE2FW.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../../../../workspace-plugin/src/adapters/claude-code.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"claude-code.d.ts","sourceRoot":"","sources":["../../../../workspace-plugin/src/adapters/claude-code.ts"],"names":[],"mappings":"AAgEA;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAO/D"}
|
|
@@ -6,8 +6,17 @@ import type { WorkspacePlugin } from "../plugin.js";
|
|
|
6
6
|
* literal in the generated TypeScript source. No `boot()` or plugin instance
|
|
7
7
|
* is required; this function is safe to call from install commands.
|
|
8
8
|
*
|
|
9
|
-
* The generated file
|
|
10
|
-
*
|
|
9
|
+
* The generated file has the shape omp 18.x loads: a **default export factory**
|
|
10
|
+
* `(pi) => …` that registers the tools (`pi.registerTool`) and slash commands
|
|
11
|
+
* (`pi.registerCommand`). A module that exports `onInit`/`tools`/`slashCommands`
|
|
12
|
+
* instead is rejected with "Extension does not export a valid factory function".
|
|
13
|
+
*
|
|
14
|
+
* The file imports nothing from skaile. omp resolves bare package names with
|
|
15
|
+
* its own loader, which cannot resolve every dependency of the runtime (it
|
|
16
|
+
* fails on `ulid` and `picocolors`), and a project rarely has
|
|
17
|
+
* `@skaile/workspaces` installed beside `.omp/`. Each tool and command instead
|
|
18
|
+
* runs `skaile integration omp-exec` — the same `skaile` the MCP entries invoke —
|
|
19
|
+
* which boots the workspace plugin in an ordinary process.
|
|
11
20
|
*
|
|
12
21
|
* @param projectDir - Absolute path to the skaile project root (embedded in
|
|
13
22
|
* the generated source).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"omp.d.ts","sourceRoot":"","sources":["../../../../workspace-plugin/src/adapters/omp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"omp.d.ts","sourceRoot":"","sources":["../../../../workspace-plugin/src/adapters/omp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAqCpD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAqFlE;AAMD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,EAAE,CAwIlE;AAID;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,eAAe,EACvB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EAAE,GACb,OAAO,CAAC,MAAM,CAAC,CAsBjB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@skaile/workspaces",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.12.0",
|
|
4
4
|
"description": "Skaile workspaces runtime — types, core, bridge, runner, store, connectors, and supporting layers as one publishable package",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"packageManager": "bun@1.3.9",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../cli/src/asset-feeds.ts"],"names":[],"mappings":"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","file":"asset-feeds-CXGQIDFR.js","sourcesContent":["/**\n * asset-feeds.ts — gather installable assets from every feed the manage TUI\n * surfaces.\n *\n * Four feeds, normalized into `CatalogEntry`:\n * - **Project sources** — `skaile.yaml` `sources:` entries (scanned via\n * `AssetManager.search()`; the new `sources:` field is merged into the\n * legacy repositories map in `AssetManager.loadConfig`).\n * - **Local libraries** — user authoring places from `LocalIndex`, read through\n * `scanAuthoringLibraries` (`@skaile/workspaces/library`): the same scan\n * `library index` / `search --local` use, so publishers and refs match them\n * (per-asset `publisher_overrides` honoured), `dev_paths` assets are left out,\n * and a library that fails to scan becomes one note while the rest stay listed.\n * - **Factory assets** — the bundled first-party `factory-assets` tree\n * (`factoryAssetRoots()`), scanned from disk. Always present; no network.\n * - **Remote store** — the configured catalog source when `catalog.url` is\n * not `local`. Failures are non-fatal — they surface as notes.\n */\n\nimport * as path from \"node:path\";\nimport {\n type AssetKind,\n type CatalogEntry,\n factoryAssetRoots,\n parseRequires,\n scanRepo,\n} from \"@skaile/workspaces/core\";\nimport { getKnownKinds } from \"./open-registry.ts\";\nimport type { DiscoveredAsset } from \"@skaile/workspaces/discovery\";\n\n/** One non-fatal note returned to the caller for surfacing in the UI. */\nexport interface FeedNote {\n feed: \"sources\" | \"libraries\" | \"store\" | \"factory\";\n message: string;\n}\n\n/**\n * Which feed an asset came from. This is the top-level grouping axis in the\n * manage TUI (\"where is this skill coming from?\") and is intentionally distinct\n * from `publisher` (asset-intrinsic identity): the same publisher can legitimately\n * appear under more than one origin (e.g. a github repo you added as a `source`\n * that is also listed in the remote `store`).\n */\nexport type AssetOrigin = \"source\" | \"library\" | \"factory\" | \"store\";\n\n/** A catalog entry tagged with the feed it was gathered from. */\nexport interface OriginEntry {\n origin: AssetOrigin;\n entry: CatalogEntry;\n /**\n * Second-level grouping label for the manage tree. Defaults (when unset) to the\n * entry's `publisher`; the source feed sets it to the source's short repo name\n * so the Sources band groups by source — \"which repo did this come from\" — not\n * by the asset-intrinsic publisher.\n */\n group?: string;\n}\n\nexport interface AssetFeedResult {\n entries: OriginEntry[];\n notes: FeedNote[];\n}\n\n/**\n * Map one discovered library asset to the `CatalogEntry` the manage rows read.\n * `publisher` is the bare per-asset publisher (what `search --local` prints),\n * `source` the manifest path. `repo` is left unset: it only feeds the Sources-tree\n * org grouping. `requires` / `dependencies` come from the manifest the way the\n * scanner fills them — string `requires:` refs parsed to `{kind, name}`, a bundle's\n * string `dependencies:` list verbatim.\n */\nfunction libraryEntryOf(asset: DiscoveredAsset): CatalogEntry {\n const { manifest } = asset;\n const nested = (manifest.metadata as Record<string, unknown> | undefined)?.requires;\n const rawRequires = manifest.requires ?? nested;\n const requireRefs =\n typeof rawRequires === \"string\"\n ? rawRequires\n : Array.isArray(rawRequires)\n ? rawRequires.filter((r): r is string => typeof r === \"string\")\n : undefined;\n const deps = manifest.dependencies;\n return {\n name: asset.name,\n kind: asset.kind as AssetKind,\n description: typeof manifest.description === \"string\" ? manifest.description : \"\",\n source: asset.manifestPath,\n publisher: asset.publisher,\n ...(asset.plugin ? { plugin: asset.plugin } : {}),\n version: asset.version,\n requires: requireRefs === undefined ? [] : parseRequires({ requires: requireRefs }),\n dependencies:\n asset.kind === \"bundle\" && Array.isArray(deps)\n ? deps.filter((d): d is string => typeof d === \"string\" && d.length > 0)\n : [],\n };\n}\n\n/**\n * Pull assets from local libraries (the authoring places under\n * `~/.skaile/libraries/<name>/`, not the `~/.skaile/cache/sources/` cache) through\n * `scanAuthoringLibraries`, grouped under the bare library name\n * (`group: <name>`) so the manage TUI shows a clean `<name>` band — no\n * `library:` prefix (mirrors the source feed). Plugin grouping (`entry.plugin`)\n * comes from `DiscoveredAsset.plugin`. A library whose scan fails becomes one\n * `FeedNote`; the outer `catch` covers only opening the index.\n */\nasync function libraryAssets(): Promise<{\n entries: OriginEntry[];\n notes: FeedNote[];\n}> {\n const notes: FeedNote[] = [];\n try {\n // Lazy: the library subpath pulls in SQLite, which the other feeds never need.\n const { openLibraryManager } = await import(\"./open-library.ts\");\n const { getKindRegistry } = await import(\"./open-registry.ts\");\n const { scanAuthoringLibraries } = await import(\"@skaile/workspaces/library\");\n const { library: index, close } = await openLibraryManager();\n try {\n const entries: OriginEntry[] = [];\n for (const scan of await scanAuthoringLibraries(index, getKindRegistry())) {\n if (scan.error !== undefined) {\n notes.push({ feed: \"libraries\", message: `${scan.library.name}: ${scan.error}` });\n continue;\n }\n for (const asset of scan.assets) {\n entries.push({\n origin: \"library\",\n entry: libraryEntryOf(asset),\n group: scan.library.name,\n });\n }\n }\n return { entries, notes };\n } finally {\n close();\n }\n } catch (err) {\n notes.push({\n feed: \"libraries\",\n message: err instanceof Error ? err.message : String(err),\n });\n return { entries: [], notes };\n }\n}\n\n/**\n * Pull a (best-effort) snapshot of the connected remote store catalog.\n *\n * - Returns no entries when the resolved catalog is local-only or the host\n * is unreachable (the failure becomes a note, not an exception).\n * - Maps `CatalogAsset` → `CatalogEntry`, carrying `publisher`, `repo`, and\n * `category` straight through and using `source = \"store://<id>\"`; per-file\n * `source` paths are not available for remote assets so the canonical ref is\n * a stable placeholder.\n */\nasync function storeAssets(projectDir: string): Promise<{\n entries: CatalogEntry[];\n notes: FeedNote[];\n}> {\n const notes: FeedNote[] = [];\n try {\n const { resolveCatalogSource } = await import(\"./open-library.ts\");\n const { source, close } = await resolveCatalogSource({ projectDir });\n try {\n const assets = await source.listAssets();\n const entries: CatalogEntry[] = assets.map((a) => ({\n name: a.name,\n kind: (a.kind as AssetKind) ?? \"skill\",\n description: a.description ?? \"\",\n source: `store://${a.id}`,\n publisher: a.publisher,\n repo: a.repo,\n plugin: a.plugin,\n category: a.category,\n version: a.version,\n requires: [],\n dependencies: [],\n }));\n return { entries, notes };\n } finally {\n close();\n }\n } catch (err) {\n const msg = err instanceof Error ? err.message : String(err);\n // Local-only catalog throws a recognizable message — silence it; absence\n // is the user's choice, not an error.\n if (!/local/i.test(msg)) {\n notes.push({ feed: \"store\", message: msg });\n }\n return { entries: [], notes };\n }\n}\n\n/** The slice of `AssetManager` the source feed needs (kept narrow for tests). */\ninterface AssetManagerLike {\n search: () => Promise<CatalogEntry[]>;\n searchRepoRoots: () => { repoName: string; root: string }[];\n}\n\n/**\n * Project-source feed: leans on `AssetManager.search()`, which merges\n * `skaile.yaml`'s `sources:` field into the repositories map. Plugin grouping\n * (`entry.plugin`) is stamped by the scanner, so entries pass through as-is.\n */\nasync function sourceAssets(am: AssetManagerLike): Promise<OriginEntry[]> {\n // The bundled factory tree is injected into the repositories map as an implicit\n // source, so `am.search()` returns it too. It has its own `factory` origin band,\n // so drop it here — otherwise the same first-party skills list twice under Sources.\n const factoryPrefixes = factoryAssetRoots().map((r) => (r.endsWith(path.sep) ? r : r + path.sep));\n const isFactoryPath = (p: string) =>\n factoryPrefixes.some((fp) => p === fp.slice(0, -1) || p.startsWith(fp));\n\n const all = (await am.search()).filter((e) => !isFactoryPath(e.source));\n const entries: OriginEntry[] = [];\n // Group each source's entries under the source node (its short repo name), not\n // the publisher: under Sources the navigational question is \"which repo did\n // this come from\". Each entry's `source` (absolute manifest path) lives under\n // exactly one declared root, so group by prefix. The cache slug is\n // URL-keyed `github.com/<org>/<repo>` — take the trailing segment.\n for (const { repoName, root } of am.searchRepoRoots()) {\n if (isFactoryPath(root)) continue;\n const prefix = root.endsWith(path.sep) ? root : root + path.sep;\n const owned = all.filter((e) => e.source === root || e.source.startsWith(prefix));\n if (owned.length === 0) continue;\n const sourceName = repoName.split(\"/\").pop() || repoName;\n for (const entry of owned) entries.push({ origin: \"source\", entry, group: sourceName });\n }\n return entries;\n}\n\n/**\n * Factory-asset feed: scan the bundled first-party `factory-assets` tree(s)\n * resolved by `factoryAssetRoots()` (the `SKAILE_FACTORY_ASSETS_DIR` override\n * layer ahead of the bundled tree). Local disk only, no network — the entries are\n * the built-in skills / connectors / bundles that ship with `@skaile/workspaces`.\n * `factoryAssetRoots()` already dedupes, so the env override pointing at the\n * bundled dir collapses to one root.\n */\nasync function factoryAssets(): Promise<{\n entries: CatalogEntry[];\n notes: FeedNote[];\n}> {\n const notes: FeedNote[] = [];\n try {\n const entries: CatalogEntry[] = [];\n for (const root of factoryAssetRoots()) {\n entries.push(...(await scanRepo(root, \"skaile-factory\", { knownKinds: getKnownKinds() })));\n }\n return { entries, notes };\n } catch (err) {\n notes.push({\n feed: \"factory\",\n message: err instanceof Error ? err.message : String(err),\n });\n return { entries: [], notes };\n }\n}\n\n/** Tag a flat entry list with a single origin. */\nfunction tag(origin: AssetOrigin, entries: CatalogEntry[]): OriginEntry[] {\n return entries.map((entry) => ({ origin, entry }));\n}\n\n/**\n * Run all feeds and return a single normalized result.\n *\n * Feeds run in parallel where possible — the store fetch is the slow one\n * (one HTTP call) and is fired alongside the local library walk. The factory\n * scan is local disk only, so it runs inline.\n */\nexport async function gatherAssetFeeds(\n am: AssetManagerLike,\n projectDir: string,\n): Promise<AssetFeedResult> {\n const [libs, store] = await Promise.all([libraryAssets(), storeAssets(projectDir)]);\n const factory = await factoryAssets();\n const src = await sourceAssets(am);\n return {\n entries: [\n ...src,\n ...libs.entries,\n ...tag(\"factory\", factory.entries),\n ...tag(\"store\", store.entries),\n ],\n notes: [...libs.notes, ...store.notes, ...factory.notes],\n };\n}\n"]}
|