@skaile/workspaces 6.4.0 → 6.6.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 +58 -1
- package/README.md +4 -0
- package/dist/ai-sdk.js +55 -25
- package/dist/ai-sdk.js.map +1 -1
- package/dist/app-sdk/index.js +1 -1
- package/dist/{asset-feeds-UJSYGKCX.js → asset-feeds-WQ6YQPHV.js} +22 -22
- package/dist/{asset-feeds-UJSYGKCX.js.map → asset-feeds-WQ6YQPHV.js.map} +1 -1
- package/dist/asset-manager/catalog-deployer.js +8 -8
- package/dist/asset-manager/index.js +14 -14
- package/dist/asset-manager/installer.js +10 -10
- package/dist/asset-manager/renderers.js +9 -9
- package/dist/asset-manager/src/index.d.ts +114 -12
- package/dist/asset-manager/src/index.d.ts.map +1 -1
- package/dist/asset-manager/src/installer.d.ts +6 -0
- package/dist/asset-manager/src/installer.d.ts.map +1 -1
- package/dist/bridge/harnesses/claude-sdk.js +24 -19
- package/dist/bridge/harnesses/claude-sdk.js.map +1 -1
- package/dist/bridge/harnesses/codex.js +38 -36
- package/dist/bridge/harnesses/codex.js.map +1 -1
- package/dist/bridge/harnesses/continue.js +12 -13
- package/dist/bridge/harnesses/continue.js.map +1 -1
- package/dist/bridge/harnesses/echo.js +5 -6
- package/dist/bridge/harnesses/echo.js.map +1 -1
- package/dist/bridge/harnesses/gemini.js +9 -10
- package/dist/bridge/harnesses/goose.js +12 -13
- package/dist/bridge/harnesses/goose.js.map +1 -1
- package/dist/bridge/harnesses/omp.js +17 -12
- package/dist/bridge/harnesses/omp.js.map +1 -1
- package/dist/bridge/harnesses/opencode.js +12 -13
- package/dist/bridge/harnesses/opencode.js.map +1 -1
- package/dist/bridge/harnesses/qwen.js +9 -10
- package/dist/bridge/harnesses/qwen.js.map +1 -1
- package/dist/bridge/index.js +20 -21
- package/dist/bridge/src/ai-sdk.d.ts +0 -2
- package/dist/bridge/src/ai-sdk.d.ts.map +1 -1
- package/dist/bridge/src/codex/login-fallback.d.ts +39 -0
- package/dist/bridge/src/codex/login-fallback.d.ts.map +1 -0
- package/dist/bridge/src/error-classifier.d.ts +6 -0
- package/dist/bridge/src/error-classifier.d.ts.map +1 -1
- package/dist/bridge/src/harnesses/claude-sdk.d.ts.map +1 -1
- package/dist/bridge/src/harnesses/codex.d.ts +0 -6
- package/dist/bridge/src/harnesses/codex.d.ts.map +1 -1
- package/dist/bridge/src/harnesses/omp.d.ts.map +1 -1
- package/dist/bridge/src/index.d.ts +1 -0
- package/dist/bridge/src/index.d.ts.map +1 -1
- package/dist/{chunk-GTMANMBZ.js → chunk-2M3VLKT2.js} +3 -3
- package/dist/{chunk-GTMANMBZ.js.map → chunk-2M3VLKT2.js.map} +1 -1
- package/dist/{chunk-2WOA3TKK.js → chunk-2TLPC6TQ.js} +34 -19
- package/dist/chunk-2TLPC6TQ.js.map +1 -0
- package/dist/{chunk-O7KAQQAI.js → chunk-4BFEPZ6J.js} +4 -4
- package/dist/{chunk-O7KAQQAI.js.map → chunk-4BFEPZ6J.js.map} +1 -1
- package/dist/{chunk-TPQKFX6X.js → chunk-4J7JQX4G.js} +4 -4
- package/dist/{chunk-TPQKFX6X.js.map → chunk-4J7JQX4G.js.map} +1 -1
- package/dist/{chunk-6OHZUUR7.js → chunk-5DE3DGVR.js} +11 -5
- package/dist/chunk-5DE3DGVR.js.map +1 -0
- package/dist/{chunk-Q4XWCVFA.js → chunk-5ETYBC2X.js} +8 -8
- package/dist/{chunk-Q4XWCVFA.js.map → chunk-5ETYBC2X.js.map} +1 -1
- package/dist/{chunk-ZWCGJYR7.js → chunk-5XHQBCB5.js} +3 -3
- package/dist/{chunk-ZWCGJYR7.js.map → chunk-5XHQBCB5.js.map} +1 -1
- package/dist/{chunk-JSWMRYLM.js → chunk-65UAC3ZR.js} +31 -7
- package/dist/chunk-65UAC3ZR.js.map +1 -0
- package/dist/{chunk-UBLZALKP.js → chunk-6A6HE5LW.js} +3 -3
- package/dist/{chunk-UBLZALKP.js.map → chunk-6A6HE5LW.js.map} +1 -1
- package/dist/{chunk-ABVWUM2E.js → chunk-6ARPZHOV.js} +47 -25
- package/dist/chunk-6ARPZHOV.js.map +1 -0
- package/dist/{chunk-TDKZL5ZC.js → chunk-6RHWTZPT.js} +4 -4
- package/dist/{chunk-TDKZL5ZC.js.map → chunk-6RHWTZPT.js.map} +1 -1
- package/dist/{chunk-6WQGJF65.js → chunk-6SXSVKQY.js} +88 -17
- package/dist/chunk-6SXSVKQY.js.map +1 -0
- package/dist/{chunk-YFGXYQW4.js → chunk-7I5PNB2G.js} +3 -3
- package/dist/{chunk-YFGXYQW4.js.map → chunk-7I5PNB2G.js.map} +1 -1
- package/dist/{serve-preflight-NPWI4MV6.js → chunk-7PVGND4J.js} +30 -61
- package/dist/chunk-7PVGND4J.js.map +1 -0
- package/dist/{chunk-P7EL7QRD.js → chunk-7SJHSGUV.js} +34 -20
- package/dist/chunk-7SJHSGUV.js.map +1 -0
- package/dist/{chunk-VSCLUPGZ.js → chunk-AQNW2FET.js} +289 -44
- package/dist/chunk-AQNW2FET.js.map +1 -0
- package/dist/{chunk-45KLCFQB.js → chunk-B6N653ZG.js} +6 -6
- package/dist/{chunk-45KLCFQB.js.map → chunk-B6N653ZG.js.map} +1 -1
- package/dist/{chunk-6UP2EDFN.js → chunk-BSMW3PX2.js} +313 -4
- package/dist/chunk-BSMW3PX2.js.map +1 -0
- package/dist/{chunk-HTGTNN2B.js → chunk-CMXDFTA2.js} +3 -3
- package/dist/{chunk-HTGTNN2B.js.map → chunk-CMXDFTA2.js.map} +1 -1
- package/dist/{chunk-YJNE4V2M.js → chunk-DI6J2PJB.js} +70 -37
- package/dist/chunk-DI6J2PJB.js.map +1 -0
- package/dist/{chunk-V4OXHEWY.js → chunk-DS6UUCFG.js} +4 -4
- package/dist/{chunk-V4OXHEWY.js.map → chunk-DS6UUCFG.js.map} +1 -1
- package/dist/{chunk-U6S5CXKB.js → chunk-E2EC6SAX.js} +4 -4
- package/dist/{chunk-U6S5CXKB.js.map → chunk-E2EC6SAX.js.map} +1 -1
- package/dist/{chunk-TF5CWJQZ.js → chunk-EPXZQIC6.js} +23 -80
- package/dist/chunk-EPXZQIC6.js.map +1 -0
- package/dist/{chunk-6X3GDPCB.js → chunk-F4CZQD3T.js} +3 -4
- package/dist/chunk-F4CZQD3T.js.map +1 -0
- package/dist/{chunk-VZU67OKK.js → chunk-G5SYFFMD.js} +2 -2
- package/dist/{chunk-VZU67OKK.js.map → chunk-G5SYFFMD.js.map} +1 -1
- package/dist/{chunk-VV2DJT4I.js → chunk-GNUA7XT2.js} +4 -3
- package/dist/chunk-GNUA7XT2.js.map +1 -0
- package/dist/{chunk-E237FGGX.js → chunk-GTAHU4N4.js} +4 -4
- package/dist/{chunk-E237FGGX.js.map → chunk-GTAHU4N4.js.map} +1 -1
- package/dist/{chunk-SISUT7VR.js → chunk-GTGWRKMJ.js} +7 -7
- package/dist/{chunk-SISUT7VR.js.map → chunk-GTGWRKMJ.js.map} +1 -1
- package/dist/{chunk-BX7PSWJA.js → chunk-HGZN6JLP.js} +4 -4
- package/dist/{chunk-BX7PSWJA.js.map → chunk-HGZN6JLP.js.map} +1 -1
- package/dist/{chunk-L45IHRDH.js → chunk-HQAPUPBE.js} +3 -3
- package/dist/{chunk-L45IHRDH.js.map → chunk-HQAPUPBE.js.map} +1 -1
- package/dist/{chunk-L4OYPFLB.js → chunk-I5IF3JCG.js} +4 -4
- package/dist/{chunk-L4OYPFLB.js.map → chunk-I5IF3JCG.js.map} +1 -1
- package/dist/{chunk-IYZAJ2J2.js → chunk-J262X4JU.js} +36 -36
- package/dist/chunk-J262X4JU.js.map +1 -0
- package/dist/{chunk-WENTJ5KP.js → chunk-J4WKNJHO.js} +6 -6
- package/dist/{chunk-WENTJ5KP.js.map → chunk-J4WKNJHO.js.map} +1 -1
- package/dist/{chunk-3ENE6ZOF.js → chunk-JIQUF3X2.js} +9 -8
- package/dist/chunk-JIQUF3X2.js.map +1 -0
- package/dist/{chunk-TGB4E5Z6.js → chunk-JRVQV7WC.js} +414 -95
- package/dist/chunk-JRVQV7WC.js.map +1 -0
- package/dist/{chunk-BOS7P2Y4.js → chunk-KSH5CFQS.js} +3 -3
- package/dist/{chunk-BOS7P2Y4.js.map → chunk-KSH5CFQS.js.map} +1 -1
- package/dist/{chunk-UUKCPPTQ.js → chunk-KSUT5KAE.js} +3 -3
- package/dist/{chunk-UUKCPPTQ.js.map → chunk-KSUT5KAE.js.map} +1 -1
- package/dist/{chunk-DF5WJC3Q.js → chunk-LBJ4M5J2.js} +4 -4
- package/dist/{chunk-DF5WJC3Q.js.map → chunk-LBJ4M5J2.js.map} +1 -1
- package/dist/{chunk-GBXQFJ4G.js → chunk-MMOWIRHP.js} +310 -175
- package/dist/chunk-MMOWIRHP.js.map +1 -0
- package/dist/{chunk-G63KOHFS.js → chunk-MXI3XWV6.js} +4 -4
- package/dist/{chunk-G63KOHFS.js.map → chunk-MXI3XWV6.js.map} +1 -1
- package/dist/{chunk-ACBL7X62.js → chunk-N2PBAXAA.js} +3 -3
- package/dist/{chunk-ACBL7X62.js.map → chunk-N2PBAXAA.js.map} +1 -1
- package/dist/{chunk-5NHBLKKU.js → chunk-O7QZI6MQ.js} +3 -3
- package/dist/{chunk-5NHBLKKU.js.map → chunk-O7QZI6MQ.js.map} +1 -1
- package/dist/{chunk-U3SXCVR7.js → chunk-OY22B7E2.js} +4 -4
- package/dist/{chunk-U3SXCVR7.js.map → chunk-OY22B7E2.js.map} +1 -1
- package/dist/{chunk-C7TQARGC.js → chunk-PTJTOPE5.js} +3 -3
- package/dist/{chunk-C7TQARGC.js.map → chunk-PTJTOPE5.js.map} +1 -1
- package/dist/{chunk-HSF665NV.js → chunk-RAU5QPI6.js} +5 -5
- package/dist/{chunk-HSF665NV.js.map → chunk-RAU5QPI6.js.map} +1 -1
- package/dist/{chunk-RKI35EAN.js → chunk-RHCEX2EV.js} +3 -3
- package/dist/{chunk-RKI35EAN.js.map → chunk-RHCEX2EV.js.map} +1 -1
- package/dist/{chunk-76WSWPOB.js → chunk-SCRYXAHH.js} +15 -6
- package/dist/chunk-SCRYXAHH.js.map +1 -0
- package/dist/{chunk-DKXNKFKP.js → chunk-SGI5MRKP.js} +75 -3
- package/dist/chunk-SGI5MRKP.js.map +1 -0
- package/dist/{chunk-24D7IW5O.js → chunk-SHTXMERQ.js} +7 -8
- package/dist/chunk-SHTXMERQ.js.map +1 -0
- package/dist/{chunk-IZV3HDVG.js → chunk-SZKCE7EC.js} +5 -5
- package/dist/{chunk-IZV3HDVG.js.map → chunk-SZKCE7EC.js.map} +1 -1
- package/dist/{chunk-UAOHR6AL.js → chunk-TCH5UDKT.js} +4 -4
- package/dist/{chunk-UAOHR6AL.js.map → chunk-TCH5UDKT.js.map} +1 -1
- package/dist/{chunk-UVTN4O7N.js → chunk-TUFNY6OD.js} +33 -10
- package/dist/chunk-TUFNY6OD.js.map +1 -0
- package/dist/{chunk-PTBX55QF.js → chunk-U3UDOX6I.js} +4 -4
- package/dist/{chunk-PTBX55QF.js.map → chunk-U3UDOX6I.js.map} +1 -1
- package/dist/{chunk-BUU2DLPC.js → chunk-USSP43U3.js} +3 -3
- package/dist/{chunk-BUU2DLPC.js.map → chunk-USSP43U3.js.map} +1 -1
- package/dist/{chunk-IZQOO6MN.js → chunk-V5KG6CCV.js} +2 -2
- package/dist/{chunk-IZQOO6MN.js.map → chunk-V5KG6CCV.js.map} +1 -1
- package/dist/{chunk-CK3CJSRY.js → chunk-VJRL6ZK6.js} +4 -4
- package/dist/{chunk-CK3CJSRY.js.map → chunk-VJRL6ZK6.js.map} +1 -1
- package/dist/{chunk-76FLBODK.js → chunk-VT6G5AJV.js} +10 -7
- package/dist/chunk-VT6G5AJV.js.map +1 -0
- package/dist/{chunk-EXRQKOY6.js → chunk-VXYZ5M7Z.js} +83 -34
- package/dist/chunk-VXYZ5M7Z.js.map +1 -0
- package/dist/{chunk-QSIFEHSN.js → chunk-WW5NAU6N.js} +3 -3
- package/dist/{chunk-QSIFEHSN.js.map → chunk-WW5NAU6N.js.map} +1 -1
- package/dist/chunk-XD3RYAMR.js +83 -0
- package/dist/chunk-XD3RYAMR.js.map +1 -0
- package/dist/{chunk-HXZ3FQQN.js → chunk-XYCYGN3Q.js} +82 -50
- package/dist/chunk-XYCYGN3Q.js.map +1 -0
- package/dist/{chunk-5T3DTK7A.js → chunk-YN6N3RBM.js} +9 -10
- package/dist/chunk-YN6N3RBM.js.map +1 -0
- package/dist/{chunk-DCJ4BION.js → chunk-Z4FERR4U.js} +2 -2
- package/dist/{chunk-DCJ4BION.js.map → chunk-Z4FERR4U.js.map} +1 -1
- package/dist/{claude-code-UBT4ZME7.js → claude-code-LZH7Y4Y5.js} +5 -5
- package/dist/{claude-code-UBT4ZME7.js.map → claude-code-LZH7Y4Y5.js.map} +1 -1
- package/dist/cli/index.js +308 -162
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/src/commands/cache.d.ts.map +1 -1
- 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/connector.d.ts.map +1 -1
- package/dist/cli/src/commands/deploy.d.ts.map +1 -1
- package/dist/cli/src/commands/harness.d.ts +5 -4
- package/dist/cli/src/commands/harness.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-index.d.ts +6 -0
- package/dist/cli/src/commands/library-index.d.ts.map +1 -1
- package/dist/cli/src/commands/migrate-files.d.ts +3 -6
- package/dist/cli/src/commands/migrate-files.d.ts.map +1 -1
- package/dist/cli/src/commands/migrate-harness.d.ts +4 -3
- package/dist/cli/src/commands/migrate-harness.d.ts.map +1 -1
- package/dist/cli/src/commands/migrate.d.ts +2 -2
- package/dist/cli/src/commands/outdated.d.ts.map +1 -1
- package/dist/cli/src/commands/plugin-registry-cmd.d.ts.map +1 -1
- package/dist/cli/src/commands/project.d.ts +7 -1
- package/dist/cli/src/commands/project.d.ts.map +1 -1
- package/dist/cli/src/commands/run.d.ts.map +1 -1
- package/dist/cli/src/commands/serve-preflight.d.ts +21 -0
- package/dist/cli/src/commands/serve-preflight.d.ts.map +1 -1
- package/dist/cli/src/commands/serve.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 +8 -0
- package/dist/cli/src/commands/source.d.ts.map +1 -1
- package/dist/cli/src/commands/update.d.ts.map +1 -1
- package/dist/cli/src/commands/validate-instances.d.ts +6 -0
- package/dist/cli/src/commands/validate-instances.d.ts.map +1 -1
- package/dist/cli/src/commands/validate.d.ts.map +1 -1
- package/dist/cli/src/commands/verify.d.ts.map +1 -1
- package/dist/cli/src/config-checks.d.ts +8 -0
- package/dist/cli/src/config-checks.d.ts.map +1 -1
- package/dist/cli/src/ensure-sources.d.ts.map +1 -1
- package/dist/cli/src/helpers.d.ts +3 -2
- package/dist/cli/src/helpers.d.ts.map +1 -1
- package/dist/cli/src/plugin-store/index.d.ts.map +1 -1
- package/dist/cli/src/plugin-store/reconcile.d.ts.map +1 -1
- package/dist/cli/src/plugin-store/spec.d.ts +1 -0
- package/dist/cli/src/plugin-store/spec.d.ts.map +1 -1
- package/dist/cli/src/skill-checks.d.ts +2 -0
- package/dist/cli/src/skill-checks.d.ts.map +1 -1
- package/dist/connectors/config.js +5 -5
- package/dist/connectors/index.js +24 -25
- package/dist/connectors/src/connector-manager.d.ts.map +1 -1
- package/dist/connectors/src/index.d.ts +2 -2
- package/dist/connectors/src/index.d.ts.map +1 -1
- package/dist/connectors/src/managed-gitconfig.d.ts +22 -0
- package/dist/connectors/src/managed-gitconfig.d.ts.map +1 -1
- package/dist/connectors/src/mount-ledger.d.ts.map +1 -1
- package/dist/connectors/src/npm-installer.d.ts +11 -3
- package/dist/connectors/src/npm-installer.d.ts.map +1 -1
- package/dist/connectors-HU5MHSUJ.js +49 -0
- package/dist/{connectors-4WH32NK2.js.map → connectors-HU5MHSUJ.js.map} +1 -1
- package/dist/connectors-shared/index.js +2 -2
- 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 +3 -3
- package/dist/core/ref.js +1 -1
- package/dist/core/runtime-assets.js +5 -5
- package/dist/core/src/agent-instances.d.ts +6 -0
- package/dist/core/src/agent-instances.d.ts.map +1 -1
- package/dist/core/src/config-key-diagnostics.d.ts +2 -1
- package/dist/core/src/config-key-diagnostics.d.ts.map +1 -1
- package/dist/core/src/index.d.ts +4 -4
- package/dist/core/src/index.d.ts.map +1 -1
- package/dist/core/src/lock.d.ts +20 -1
- package/dist/core/src/lock.d.ts.map +1 -1
- package/dist/core/src/logging/index.d.ts +1 -0
- package/dist/core/src/logging/index.d.ts.map +1 -1
- package/dist/core/src/logging/log-safe-text.d.ts +20 -0
- package/dist/core/src/logging/log-safe-text.d.ts.map +1 -0
- package/dist/core/src/manifest-yaml-editor.d.ts +4 -1
- package/dist/core/src/manifest-yaml-editor.d.ts.map +1 -1
- package/dist/core/src/manifest.d.ts.map +1 -1
- package/dist/core/src/models.d.ts +10 -0
- package/dist/core/src/models.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/runtime-assets.d.ts +12 -1
- package/dist/core/src/runtime-assets.d.ts.map +1 -1
- package/dist/core/src/walker.d.ts +3 -0
- package/dist/core/src/walker.d.ts.map +1 -1
- package/dist/core/src/workspace-config.d.ts +10 -2
- 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-UC2RBYMP.js → ensure-sources-CAMWJTMR.js} +32 -32
- package/dist/ensure-sources-CAMWJTMR.js.map +1 -0
- package/dist/factory-assets/connectors/box.js +24 -25
- package/dist/factory-assets/connectors/deploy.js +24 -25
- package/dist/factory-assets/connectors/devserver.js +24 -25
- package/dist/factory-assets/connectors/flow/adapter.js +24 -25
- package/dist/factory-assets/connectors/flow/engine.js +8 -8
- package/dist/factory-assets/connectors/flow/run-flow.js +26 -27
- package/dist/factory-assets/connectors/flow.js +24 -25
- package/dist/factory-assets/connectors/git.js +24 -25
- package/dist/factory-assets/connectors/gmail.js +24 -25
- package/dist/factory-assets/connectors/googledrive.js +24 -25
- package/dist/factory-assets/connectors/local.js +24 -25
- package/dist/factory-assets/connectors/mattermost.js +24 -25
- package/dist/factory-assets/connectors/memory.js +24 -25
- package/dist/factory-assets/connectors/minio.js +24 -25
- package/dist/factory-assets/connectors/postgres.js +24 -25
- package/dist/factory-assets/connectors/s3.js +24 -25
- package/dist/factory-assets/connectors/sharepoint.js +24 -25
- package/dist/factory-assets/connectors/sqlite.js +24 -25
- package/dist/factory-assets/connectors/static-server.js +24 -25
- package/dist/factory-assets/connectors/tunnel.js +24 -25
- package/dist/factory-assets/connectors/webdav.js +24 -25
- package/dist/factory-assets/connectors/xstate-store.js +24 -25
- package/dist/factory-assets/connectors/xstate.js +24 -25
- package/dist/factory-assets/skills/authoring-skaile-assets/SKILL.md +2 -1
- package/dist/{flows-LYTKNGKE.js → flows-GVOVQGQW.js} +12 -12
- package/dist/{flows-LYTKNGKE.js.map → flows-GVOVQGQW.js.map} +1 -1
- package/dist/{helpers-SSSKT5XK.js → helpers-WMCCODAV.js} +29 -30
- package/dist/{helpers-SSSKT5XK.js.map → helpers-WMCCODAV.js.map} +1 -1
- package/dist/library/index.js +11 -11
- package/dist/library/install.js +4 -4
- package/dist/library/src/manifest-writer.d.ts +9 -0
- package/dist/library/src/manifest-writer.d.ts.map +1 -1
- package/dist/library/src/remote/remote-catalog-source.d.ts +9 -0
- package/dist/library/src/remote/remote-catalog-source.d.ts.map +1 -1
- package/dist/library/src/remote/rest-catalog-source.d.ts +1 -0
- package/dist/library/src/remote/rest-catalog-source.d.ts.map +1 -1
- package/dist/{library-publish-GQMNTAKK.js → library-publish-UQQMHTND.js} +55 -55
- package/dist/{library-publish-GQMNTAKK.js.map → library-publish-UQQMHTND.js.map} +1 -1
- package/dist/model-endpoint/index.js +10 -11
- package/dist/open-library-OJ4HT2X4.js +57 -0
- package/dist/{open-library-XGUCUJYE.js.map → open-library-OJ4HT2X4.js.map} +1 -1
- package/dist/open-registry-LWGIOJDK.js +32 -0
- package/dist/{open-registry-DIFEPDF6.js.map → open-registry-LWGIOJDK.js.map} +1 -1
- package/dist/paths-FR2752HV.js +22 -0
- package/dist/{paths-G4GFJLE2.js.map → paths-FR2752HV.js.map} +1 -1
- package/dist/{plugin-store-BBLDFD3L.js → plugin-store-IALJUBN2.js} +10 -10
- package/dist/{plugin-store-BBLDFD3L.js.map → plugin-store-IALJUBN2.js.map} +1 -1
- package/dist/project-UQFCYHYS.js +88 -0
- package/dist/{project-LB745WVZ.js.map → project-UQFCYHYS.js.map} +1 -1
- package/dist/resolver/index.js +8 -8
- package/dist/runner/index.js +40 -41
- package/dist/runner/src/composition/resolve-instance.d.ts.map +1 -1
- package/dist/runner/src/composition/resolve.d.ts +6 -0
- package/dist/runner/src/composition/resolve.d.ts.map +1 -1
- package/dist/runner/src/credential-notice.d.ts +3 -2
- package/dist/runner/src/credential-notice.d.ts.map +1 -1
- package/dist/runner/src/external-mcp.d.ts +22 -0
- package/dist/runner/src/external-mcp.d.ts.map +1 -1
- package/dist/runner/src/mcp-tools-snapshot.d.ts +13 -0
- package/dist/runner/src/mcp-tools-snapshot.d.ts.map +1 -0
- package/dist/runner/src/resources.d.ts +14 -0
- package/dist/runner/src/resources.d.ts.map +1 -1
- package/dist/runner/src/serve.d.ts.map +1 -1
- package/dist/sdk/asset-manager.js +14 -14
- package/dist/sdk/bridge.js +20 -21
- package/dist/sdk/core.js +7 -7
- package/dist/sdk/flow.js +8 -8
- package/dist/sdk/index.js +40 -41
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/resolver.js +8 -8
- package/dist/sdk/runner.js +40 -41
- package/dist/sdk/session.js +2 -2
- package/dist/sdk/transport/ws/server.js +8 -8
- package/dist/sdk/transport/ws.js +8 -8
- package/dist/sdk/transport.js +8 -8
- package/dist/sdk/types.js +1 -1
- package/dist/serve-preflight-TYEKHC32.js +56 -0
- package/dist/serve-preflight-TYEKHC32.js.map +1 -0
- package/dist/session/index.js +2 -2
- package/dist/{setup-X6ZYH2MW.js → setup-4JV2IMCB.js} +30 -31
- package/dist/setup-4JV2IMCB.js.map +1 -0
- package/dist/{skills-62PXDBPJ.js → skills-6QTKFMLW.js} +13 -13
- package/dist/{skills-62PXDBPJ.js.map → skills-6QTKFMLW.js.map} +1 -1
- package/dist/source-XYMMJVKR.js +86 -0
- package/dist/{source-LAYCTRHP.js.map → source-XYMMJVKR.js.map} +1 -1
- package/dist/{source-manifest-publish-3S6PJ25W.js → source-manifest-publish-SZFGGKB4.js} +52 -53
- package/dist/source-manifest-publish-SZFGGKB4.js.map +1 -0
- package/dist/transport/index.js +8 -8
- package/dist/transport/ws/server.js +8 -8
- package/dist/transport/ws.js +8 -8
- package/dist/tui/index.js +40 -41
- package/dist/tui/index.js.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/types/manifests.js +1 -1
- package/dist/types/src/manifests/agent.d.ts +2 -2
- package/dist/types/src/manifests/agent.d.ts.map +1 -1
- package/dist/types/src/version.d.ts +8 -8
- package/dist/workspace-plugin/adapters/mcp.js +31 -32
- package/dist/workspace-plugin/adapters/omp.js +14 -14
- package/dist/workspace-plugin/index.js +2 -2
- package/package.json +1 -1
- package/dist/chunk-24D7IW5O.js.map +0 -1
- package/dist/chunk-2WOA3TKK.js.map +0 -1
- package/dist/chunk-3ENE6ZOF.js.map +0 -1
- package/dist/chunk-5T3DTK7A.js.map +0 -1
- package/dist/chunk-6OHZUUR7.js.map +0 -1
- package/dist/chunk-6UP2EDFN.js.map +0 -1
- package/dist/chunk-6WQGJF65.js.map +0 -1
- package/dist/chunk-6X3GDPCB.js.map +0 -1
- package/dist/chunk-76FLBODK.js.map +0 -1
- package/dist/chunk-76WSWPOB.js.map +0 -1
- package/dist/chunk-ABVWUM2E.js.map +0 -1
- package/dist/chunk-DKXNKFKP.js.map +0 -1
- package/dist/chunk-EXRQKOY6.js.map +0 -1
- package/dist/chunk-GBXQFJ4G.js.map +0 -1
- package/dist/chunk-HXZ3FQQN.js.map +0 -1
- package/dist/chunk-IYZAJ2J2.js.map +0 -1
- package/dist/chunk-JSWMRYLM.js.map +0 -1
- package/dist/chunk-P7EL7QRD.js.map +0 -1
- package/dist/chunk-QJQQNBVT.js +0 -315
- package/dist/chunk-QJQQNBVT.js.map +0 -1
- package/dist/chunk-TF5CWJQZ.js.map +0 -1
- package/dist/chunk-TGB4E5Z6.js.map +0 -1
- package/dist/chunk-UVTN4O7N.js.map +0 -1
- package/dist/chunk-VSCLUPGZ.js.map +0 -1
- package/dist/chunk-VV2DJT4I.js.map +0 -1
- package/dist/chunk-YJNE4V2M.js.map +0 -1
- package/dist/connectors-4WH32NK2.js +0 -50
- package/dist/ensure-sources-UC2RBYMP.js.map +0 -1
- package/dist/open-library-XGUCUJYE.js +0 -58
- package/dist/open-registry-DIFEPDF6.js +0 -32
- package/dist/paths-G4GFJLE2.js +0 -22
- package/dist/project-LB745WVZ.js +0 -88
- package/dist/serve-preflight-NPWI4MV6.js.map +0 -1
- package/dist/setup-X6ZYH2MW.js.map +0 -1
- package/dist/source-LAYCTRHP.js +0 -87
- package/dist/source-manifest-publish-3S6PJ25W.js.map +0 -1
package/dist/cli/index.js
CHANGED
|
@@ -1,97 +1,98 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { status, enable, disable, install, uninstall } from '../chunk-
|
|
3
|
-
import { makeValidateCommand, scanIdentities } from '../chunk-
|
|
4
|
-
import { storeNotInstallableReason, mcpNotRunnableHere } from '../chunk-
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
2
|
+
import { status, enable, disable, install, uninstall } from '../chunk-N2PBAXAA.js';
|
|
3
|
+
import { makeValidateCommand, scanIdentities } from '../chunk-7SJHSGUV.js';
|
|
4
|
+
import { storeNotInstallableReason, mcpNotRunnableHere } from '../chunk-6RHWTZPT.js';
|
|
5
|
+
import { checkHarnessSdk } from '../chunk-7PVGND4J.js';
|
|
6
|
+
import { makeProvidersCommand, loadRegistryView, addProviderEntry, ProviderRegistryWriteError, removeProviderEntry } from '../chunk-B6N653ZG.js';
|
|
7
|
+
import { makeInstallCommand, makeCheckCommand, makeCleanCommand, pinComposedAgents, reportRewritten, reportReplaced, reportRelocked, reportMoved, reportStoreNotChecked, globalProblems, editedConventionFiles, supportsInstallManifest, runYamlInstall, REF_HINT, reportInstalledSoftDeps } from '../chunk-2TLPC6TQ.js';
|
|
8
|
+
import { reportUnknownHarnesses, reportProjectConfig, agentInstanceErrorLines } from '../chunk-XD3RYAMR.js';
|
|
9
|
+
import { isRecord } from '../chunk-EPXZQIC6.js';
|
|
8
10
|
import { createSpinner } from '../chunk-NESV47MF.js';
|
|
9
|
-
import { loadDeclaredPlugins } from '../chunk-
|
|
10
|
-
import { getStoreConfig, storeFetch, isStoreAuthenticated, getStoreToken } from '../chunk-
|
|
11
|
-
import { makeSourceCommand, syncProjectSources, divergedSourceClones } from '../chunk-
|
|
12
|
-
import { libraryAssetRefusals, manifestEntryRenames, deviceLogin, loadStoreAuthConfig, logout, hasStoredAuth, exitOnLibrarySymlinks, resolveLibraryPublisherDetailed, getStoreIdentity, warnLibraryNameFallback, indexLibrary, warnIgnoredDomainFiles, removedDomainOption, rejectRemovedDomainOption, requireValidPublisherOrExit, exitOnManifestPublisherProblems, findAssetManifestFile, checkAssetFile, registerLibraryAsset, DOMAIN_REMOVED_HINT, reportLibrarySymlinks, checkAsset, manifestPublisherProblems, exitOnManifestPathProblems, manifestRequiresProblems, composeRefContext, registeredAssetKeys, assetEntryRef, duplicateAssetMessage, manifestParseFailureLine, manifestParseErrorText, unresolvedManifestDependencies, findEntryManifestFile, unheldRequiresOfFile, warnLegacyBundleFiles, checkComposeKinds } from '../chunk-
|
|
13
|
-
import { openCatalogSource, LocalCatalogDisabledError, openLibraryManager, openLibrary } from '../chunk-
|
|
14
|
-
import { getKindRegistry, getKnownKinds } from '../chunk-
|
|
15
|
-
import { AI_RESOURCES } from '../chunk-
|
|
16
|
-
import { logErr, unknownHarnessTargetMessage, S, logOk, setActiveCommand, logInfo, logWarnErr, unknownHarnessMessage, logWarn, TARGET_DEFAULT_HINT, parseHarnessFilter, requireProjectConfig, deferredWarnings, warnPlaceholderBodies, warnFilesOnlyDelegates, reportLegacyOmpCopies, logNoProject, warnStaleHarnessCopies, kindColorPad, kindColor, colorRef, formatSoftDepSection, bareSoftDepName, driverAliasOption, foldDriverFlag, friendlyHarnessError, harnessErrorNotes, formatSoftDepHint, formatRelativeTime, formatSoftDepRemovePreview, formatSoftDepAddPreview, fitWidth, KIND_COL_WIDTH } from '../chunk-
|
|
11
|
+
import { loadDeclaredPlugins } from '../chunk-TUFNY6OD.js';
|
|
12
|
+
import { getStoreConfig, storeFetch, isStoreAuthenticated, getStoreToken } from '../chunk-4J7JQX4G.js';
|
|
13
|
+
import { makeSourceCommand, syncProjectSources, divergedSourceClones } from '../chunk-XYCYGN3Q.js';
|
|
14
|
+
import { manifestEntryFilesRefusals, libraryAssetRefusals, manifestEntryRenames, deviceLogin, loadStoreAuthConfig, logout, hasStoredAuth, exitOnLibrarySymlinks, resolveLibraryPublisherDetailed, getStoreIdentity, warnLibraryNameFallback, indexLibrary, warnIgnoredDomainFiles, removedDomainOption, rejectRemovedDomainOption, requireValidPublisherOrExit, exitOnManifestPublisherProblems, findAssetManifestFile, checkAssetFile, registerLibraryAsset, DOMAIN_REMOVED_HINT, reportLibrarySymlinks, checkAsset, manifestPublisherProblems, exitOnManifestPathProblems, manifestRequiresProblems, composeRefContext, registeredAssetKeys, assetEntryRef, duplicateAssetMessage, manifestParseFailureLine, manifestParseErrorText, unresolvedManifestDependencies, findEntryManifestFile, unheldRequiresOfFile, warnLegacyBundleFiles, checkComposeKinds } from '../chunk-J262X4JU.js';
|
|
15
|
+
import { openCatalogSource, LocalCatalogDisabledError, openLibraryManager, openLibrary } from '../chunk-HGZN6JLP.js';
|
|
16
|
+
import { getKindRegistry, getKnownKinds } from '../chunk-RAU5QPI6.js';
|
|
17
|
+
import { AI_RESOURCES } from '../chunk-LBJ4M5J2.js';
|
|
18
|
+
import { logErr, unknownHarnessTargetMessage, S, logOk, setActiveCommand, logInfo, logWarnErr, unknownHarnessMessage, logWarn, TARGET_DEFAULT_HINT, parseHarnessFilter, requireProjectConfig, deferredWarnings, warnPlaceholderBodies, warnFilesOnlyDelegates, reportLegacyOmpCopies, logNoProject, warnStaleHarnessCopies, kindColorPad, kindColor, colorRef, formatSoftDepSection, bareSoftDepName, driverAliasOption, foldDriverFlag, friendlyHarnessError, harnessErrorNotes, formatSoftDepHint, formatRelativeTime, formatSoftDepRemovePreview, formatSoftDepAddPreview, fitWidth, KIND_COL_WIDTH } from '../chunk-SCRYXAHH.js';
|
|
17
19
|
import { LocalSecretsProvider } from '../chunk-ILFGVSTJ.js';
|
|
18
|
-
import { resolveInstanceAgentDir, instanceSessionOverrides, runAgentChat, isCompositionError, resolveSessionId, loadSessionById, loadSession, listSessions, setCurrentSession, deleteSession, clearSession, loadAgentManifest, hashAgentFiles, createCompositionContentSource, compileComposition, manifestModelForHarness, instanceForSession, resolveAgentInstance, describeComposition, MarkdownStreamer, createFinalTextFallback } from '../chunk-
|
|
19
|
-
import '../chunk-
|
|
20
|
-
import '../chunk-
|
|
21
|
-
import '../chunk-
|
|
22
|
-
import '../chunk-
|
|
20
|
+
import { resolveInstanceAgentDir, instanceSessionOverrides, runAgentChat, isCompositionError, resolveSessionId, loadSessionById, loadSession, listSessions, setCurrentSession, deleteSession, clearSession, loadAgentManifest, hashAgentFiles, createCompositionContentSource, compileComposition, manifestModelForHarness, instanceForSession, resolveAgentInstance, describeComposition, MarkdownStreamer, createFinalTextFallback } from '../chunk-AQNW2FET.js';
|
|
21
|
+
import '../chunk-Z4FERR4U.js';
|
|
22
|
+
import '../chunk-GTGWRKMJ.js';
|
|
23
|
+
import '../chunk-7I5PNB2G.js';
|
|
24
|
+
import '../chunk-O7QZI6MQ.js';
|
|
23
25
|
import '../chunk-WYZXSJBK.js';
|
|
24
|
-
import '../chunk-
|
|
25
|
-
import '../chunk-
|
|
26
|
+
import '../chunk-GTAHU4N4.js';
|
|
27
|
+
import '../chunk-HQAPUPBE.js';
|
|
26
28
|
import '../chunk-KW37WNXY.js';
|
|
27
29
|
import '../chunk-3MWQKQUB.js';
|
|
28
|
-
import '../chunk-
|
|
30
|
+
import '../chunk-SZKCE7EC.js';
|
|
29
31
|
import '../chunk-O7SG5PC2.js';
|
|
30
32
|
import '../chunk-7QBNJTTQ.js';
|
|
31
33
|
import '../chunk-O2SYFJWP.js';
|
|
32
|
-
import '../chunk-
|
|
34
|
+
import '../chunk-6A6HE5LW.js';
|
|
33
35
|
import '../chunk-32NA4TVC.js';
|
|
34
36
|
import '../chunk-W3UDISS2.js';
|
|
35
|
-
import '../chunk-
|
|
36
|
-
import { runFlow, resumeFlow } from '../chunk-
|
|
37
|
+
import '../chunk-CMXDFTA2.js';
|
|
38
|
+
import { runFlow, resumeFlow } from '../chunk-5ETYBC2X.js';
|
|
37
39
|
import '../chunk-4R6DROGN.js';
|
|
38
|
-
import { parseSkillRequirements, validateRequirements } from '../chunk-
|
|
39
|
-
import '../chunk-
|
|
40
|
-
import '../chunk-
|
|
41
|
-
import '../chunk-
|
|
42
|
-
import '../chunk-
|
|
43
|
-
import { checkHarnessModel, checkModelProvider } from '../chunk-
|
|
44
|
-
import '../chunk-
|
|
45
|
-
import '../chunk-
|
|
46
|
-
import '../chunk-
|
|
40
|
+
import { parseSkillRequirements, validateRequirements } from '../chunk-PTJTOPE5.js';
|
|
41
|
+
import '../chunk-USSP43U3.js';
|
|
42
|
+
import '../chunk-VXYZ5M7Z.js';
|
|
43
|
+
import '../chunk-2M3VLKT2.js';
|
|
44
|
+
import '../chunk-4BFEPZ6J.js';
|
|
45
|
+
import { checkHarnessModel, checkModelProvider } from '../chunk-YN6N3RBM.js';
|
|
46
|
+
import '../chunk-TCH5UDKT.js';
|
|
47
|
+
import '../chunk-U3UDOX6I.js';
|
|
48
|
+
import '../chunk-65UAC3ZR.js';
|
|
47
49
|
import '../chunk-LOO5CB5M.js';
|
|
48
|
-
import '../chunk-
|
|
49
|
-
import '../chunk-
|
|
50
|
-
import '../chunk-
|
|
51
|
-
import '../chunk-6OHZUUR7.js';
|
|
50
|
+
import '../chunk-KSUT5KAE.js';
|
|
51
|
+
import '../chunk-OY22B7E2.js';
|
|
52
|
+
import '../chunk-5DE3DGVR.js';
|
|
52
53
|
import '../chunk-7DN6JKP2.js';
|
|
53
|
-
import '../chunk-
|
|
54
|
-
import
|
|
54
|
+
import '../chunk-WW5NAU6N.js';
|
|
55
|
+
import '../chunk-MXI3XWV6.js';
|
|
56
|
+
import '../chunk-F4CZQD3T.js';
|
|
57
|
+
import { listHarnesses, getProviderPreset, AI_PROVIDER_PRESETS } from '../chunk-BSMW3PX2.js';
|
|
55
58
|
import '../chunk-G5SUWZEU.js';
|
|
56
|
-
import '../chunk-G63KOHFS.js';
|
|
57
|
-
import { getProviderPreset, AI_PROVIDER_PRESETS } from '../chunk-6UP2EDFN.js';
|
|
58
59
|
import '../chunk-IFGTRL2I.js';
|
|
59
|
-
import { loadFlow, flowLookupRoots, findFlowFileInRoots, loadAllFlowEntries } from '../chunk-
|
|
60
|
+
import { loadFlow, flowLookupRoots, findFlowFileInRoots, loadAllFlowEntries } from '../chunk-5XHQBCB5.js';
|
|
60
61
|
import '../chunk-WD3L5QSU.js';
|
|
61
62
|
import { nodeLabel, nodeSkillAsset, nodeIsInert, nodeIsOptional, nodeRunKind, nodeAssets } from '../chunk-7RGTAEG6.js';
|
|
62
|
-
import '../chunk-
|
|
63
|
-
import { setLibraryAssetCheck, setRenamedEntryLookup, LibraryEntryError, AssetManager, parseRefTolerant, MissingManifestError, parseCanonicalLockKey, normalizeRepoUrl } from '../chunk-
|
|
64
|
-
import { CatalogHttpError, libraryDirMissing, missingLibraryDirMessage, cloneOrInitGitRepo, trackOriginBranch, stampManifestPublisher, isGitRepo, ensureGitRepo, conflictingAssetRoot, scanUnlistedAssets, setManifestPublisher, LIBRARY_OWNERSHIPS, assertManifestEditable, installLibraryAsset, getStoreManifestsDir, assertValidLibraryName, unparsableAssetFiles, syncManifestWithDisk, renamedLibraryName, storeManifestFile, getDefaultValue, isSecretPlaceholder } from '../chunk-
|
|
65
|
-
import { flowFileNameError, SEMVER_RE } from '../chunk-
|
|
66
|
-
import '../chunk-
|
|
63
|
+
import '../chunk-G5SYFFMD.js';
|
|
64
|
+
import { setLibraryAssetCheck, setRenamedEntryLookup, LibraryEntryError, AssetManager, parseRefTolerant, MissingManifestError, parseCanonicalLockKey, normalizeRepoUrl } from '../chunk-JRVQV7WC.js';
|
|
65
|
+
import { CatalogHttpError, libraryDirMissing, missingLibraryDirMessage, cloneOrInitGitRepo, trackOriginBranch, stampManifestPublisher, isGitRepo, ensureGitRepo, conflictingAssetRoot, scanUnlistedAssets, setManifestPublisher, LIBRARY_OWNERSHIPS, assertManifestEditable, installLibraryAsset, getStoreManifestsDir, assertValidLibraryName, unparsableAssetFiles, syncManifestWithDisk, renamedLibraryName, storeManifestFile, getDefaultValue, isSecretPlaceholder } from '../chunk-MMOWIRHP.js';
|
|
66
|
+
import { flowFileNameError, SEMVER_RE } from '../chunk-J4WKNJHO.js';
|
|
67
|
+
import '../chunk-VJRL6ZK6.js';
|
|
67
68
|
import '../chunk-F3D25RGM.js';
|
|
68
69
|
import '../chunk-3TXEJN4W.js';
|
|
69
70
|
import '../chunk-ISHJITXJ.js';
|
|
70
71
|
import '../chunk-LNFKL23K.js';
|
|
71
72
|
import '../chunk-JRN5QF4C.js';
|
|
72
73
|
import '../chunk-NUELZWCF.js';
|
|
73
|
-
import { installTargetOf, SCAFFOLD_KINDS } from '../chunk-
|
|
74
|
+
import { installTargetOf, SCAFFOLD_KINDS } from '../chunk-DI6J2PJB.js';
|
|
74
75
|
import '../chunk-PKE3PXOK.js';
|
|
75
76
|
import '../chunk-KTBKW2FI.js';
|
|
76
77
|
import '../chunk-UQ6LFBPZ.js';
|
|
77
|
-
import '../chunk-
|
|
78
|
-
import { effectiveComposes, validatePreset, validateAgent, composeSlotDiagnostics, agentDeprecationDiagnostics, SLOT_ID_PATTERN } from '../chunk-
|
|
79
|
-
import { loadSettings, globalSettingsPath, resolveSettings, projectSettingsPath, saveSettings, WorkspaceYamlEditor, resolveLibraryDir, checkAgentSkillConformance, resolveSettingsWithSources, resolveConfiguredHarnessName,
|
|
78
|
+
import '../chunk-DS6UUCFG.js';
|
|
79
|
+
import { effectiveComposes, validatePreset, validateAgent, composeSlotDiagnostics, agentDeprecationDiagnostics, SLOT_ID_PATTERN } from '../chunk-VT6G5AJV.js';
|
|
80
|
+
import { LockParseError, loadSettings, globalSettingsPath, resolveSettings, projectSettingsPath, saveSettings, WorkspaceYamlEditor, readLock, resolveLibraryDir, checkAgentSkillConformance, resolveSettingsWithSources, resolveConfiguredHarnessName, FACTORY_SOURCE_URL, globalInstallDir, GLOBAL_INSTALL_DIR_NAME, workspaceProviderRegistryPath, userProviderRegistryPath, loadProviderRegistryFile, aiResourceRoots } from '../chunk-6ARPZHOV.js';
|
|
80
81
|
import '../chunk-4GY63JU6.js';
|
|
81
|
-
import { factoryAssetRoots } from '../chunk-
|
|
82
|
+
import { factoryAssetRoots } from '../chunk-JIQUF3X2.js';
|
|
82
83
|
import { deployedDir } from '../chunk-5KRMNUL4.js';
|
|
83
84
|
import { DEFAULT_HARNESS_ID, HARNESS_DEFAULTS } from '../chunk-C5HFK34M.js';
|
|
84
85
|
import { findKindDirs } from '../chunk-MWXYN6NY.js';
|
|
85
|
-
import { SourceEntryError, LegacyKeyError, ConfigParseError, resolveSkWorkspaceConfig, sourceCacheKey, getGlobalCacheDir, resolveAgentDir, AgentRefResolutionError, resolveAgentDefinitionDir, effectiveAgentInstances, matchPin, coerceVersion, loadSkWorkspaceConfig, configParseErrorOf, findWorkspaceRoot, isWorkspaceConfigFilename, SKAILE_YAML_DEFAULT, AGENT_PROFILE_FIELDS } from '../chunk-
|
|
86
|
+
import { SourceEntryError, LegacyKeyError, ConfigParseError, resolveSkWorkspaceConfig, sourceCacheKey, getGlobalCacheDir, resolveAgentDir, AgentRefResolutionError, resolveAgentDefinitionDir, effectiveAgentInstances, matchPin, coerceVersion, loadSkWorkspaceConfig, configParseErrorOf, findWorkspaceRoot, isWorkspaceConfigFilename, SKAILE_YAML_DEFAULT, AGENT_PROFILE_FIELDS } from '../chunk-6SXSVKQY.js';
|
|
86
87
|
import { globalCacheRoot, globalSkaileDir, userConfigPath } from '../chunk-L5VSIPQD.js';
|
|
87
88
|
import { HARNESS_TARGETS, SUPPORTED_HARNESSES, harnessNameForHarnessId } from '../chunk-VTETQCR6.js';
|
|
88
|
-
import { SKAILE_MANIFEST_FILENAME, loadSkPublishManifest, decodeSkaileManifest, LIBRARY_GITIGNORE, librarySymlinkMessage, isNonAssetPath, isNonAssetDir, encodeSkaileManifest } from '../chunk-
|
|
89
|
-
import { setWalkTruncationSink, dedupeRequirements, parseFrontmatter, scanDirectory, parseRequires } from '../chunk-
|
|
89
|
+
import { SKAILE_MANIFEST_FILENAME, loadSkPublishManifest, decodeSkaileManifest, LIBRARY_GITIGNORE, librarySymlinkMessage, isNonAssetPath, isNonAssetDir, encodeSkaileManifest } from '../chunk-E2EC6SAX.js';
|
|
90
|
+
import { setWalkTruncationSink, dedupeRequirements, parseFrontmatter, scanDirectory, parseRequires } from '../chunk-GNUA7XT2.js';
|
|
90
91
|
import { pluginTitle } from '../chunk-RVRB27AN.js';
|
|
91
|
-
import { parseAssetRef, isValidPublisher, PUBLISHER_HINT, isValidAssetName, ASSET_NAME_HINT, depToStr, assetRefToStr, slugifyAssetName, parseAssetRefLoose } from '../chunk-
|
|
92
|
+
import { parseAssetRef, isValidPublisher, PUBLISHER_HINT, isValidAssetName, ASSET_NAME_HINT, depToStr, assetRefToStr, slugifyAssetName, parseAssetRefLoose } from '../chunk-V5KG6CCV.js';
|
|
92
93
|
import { portableSpawn, portableSpawnSync } from '../chunk-VSX2G7LA.js';
|
|
93
94
|
import { parseModelRef, resolveEntryBaseUrl } from '../chunk-RXGPFAMN.js';
|
|
94
|
-
import { openSqlite } from '../chunk-
|
|
95
|
+
import { openSqlite } from '../chunk-SGI5MRKP.js';
|
|
95
96
|
import '../chunk-C3CAXQMA.js';
|
|
96
97
|
import { registerLogStore, LogStore, StdoutSink } from '../chunk-BOFL7GIF.js';
|
|
97
98
|
import '../chunk-NSBPE2FW.js';
|
|
@@ -238,19 +239,20 @@ async function runSearch(kind, query, opts) {
|
|
|
238
239
|
}
|
|
239
240
|
}
|
|
240
241
|
async function searchIndex(query, kind, projectDir) {
|
|
241
|
-
const { openLibrary: openLibrary2 } = await import('../open-library-
|
|
242
|
+
const { openLibrary: openLibrary2 } = await import('../open-library-OJ4HT2X4.js');
|
|
242
243
|
const library = await openLibrary2();
|
|
243
244
|
try {
|
|
244
245
|
const { libraryDirMissing: libraryDirMissing2 } = await import('../library/index.js');
|
|
245
|
-
const
|
|
246
|
-
const gone = new Set(
|
|
247
|
-
|
|
246
|
+
const allSources = await library.listSources();
|
|
247
|
+
const gone = new Set(allSources.filter(libraryDirMissing2).map((l) => l.id));
|
|
248
|
+
const { libraries: sources, defs: allDefs } = new AssetManager({
|
|
248
249
|
registry: getKindRegistry(),
|
|
249
250
|
projectDir
|
|
250
|
-
}).
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
251
|
+
}).scopeLibraryIndex(
|
|
252
|
+
allSources,
|
|
253
|
+
await library.listAssetDefs(kind ? { kind } : {})
|
|
254
|
+
);
|
|
255
|
+
const defs = allDefs.filter((d) => !d.libraryId || !gone.has(d.libraryId));
|
|
254
256
|
const libraryNames = new Map(sources.map((l) => [l.id, l.name]));
|
|
255
257
|
let entries = defs.map(
|
|
256
258
|
(d) => ({
|
|
@@ -413,14 +415,14 @@ async function withAddVersions(entries, projectDir) {
|
|
|
413
415
|
}
|
|
414
416
|
async function searchLocal(query, kind, opts, showStore, airGapped) {
|
|
415
417
|
const projectDir = path19__default.resolve(opts.projectDir);
|
|
416
|
-
const { restoreSourceReaders } = await import('../source-
|
|
418
|
+
const { restoreSourceReaders } = await import('../source-XYMMJVKR.js');
|
|
417
419
|
for (const name of await restoreSourceReaders(projectDir)) {
|
|
418
420
|
logInfo(`Re-registered source "${name}" (its library entry was removed elsewhere).`);
|
|
419
421
|
}
|
|
420
422
|
const factory = await searchFactory(projectDir, query, kind);
|
|
421
423
|
let entries = unionEntries(await searchIndex(query, kind, projectDir), factory);
|
|
422
424
|
if (entries.length === 0 && !query && !kind && !airGapped) {
|
|
423
|
-
const { autoSyncForSearch } = await import('../source-
|
|
425
|
+
const { autoSyncForSearch } = await import('../source-XYMMJVKR.js');
|
|
424
426
|
if (await autoSyncForSearch(projectDir)) {
|
|
425
427
|
entries = unionEntries(await searchIndex(query, kind, projectDir), factory);
|
|
426
428
|
}
|
|
@@ -538,7 +540,7 @@ async function searchStore(query, kind, opts, airGapped) {
|
|
|
538
540
|
logInfo("air-gapped (cache_ttl: 0) \u2014 local sources only");
|
|
539
541
|
return "skipped";
|
|
540
542
|
}
|
|
541
|
-
const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError: LocalCatalogDisabledError2 } = await import('../open-library-
|
|
543
|
+
const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError: LocalCatalogDisabledError2 } = await import('../open-library-OJ4HT2X4.js');
|
|
542
544
|
try {
|
|
543
545
|
const remote = await openCatalogSource2({ projectDir: path19__default.resolve(opts.projectDir) });
|
|
544
546
|
const assets = await remote.listAssets(kind ? { kind } : {});
|
|
@@ -698,6 +700,7 @@ function makeAddCommand() {
|
|
|
698
700
|
let presets = [];
|
|
699
701
|
const skippedSecrets = /* @__PURE__ */ new Set();
|
|
700
702
|
let plan = [];
|
|
703
|
+
const agentBound = [];
|
|
701
704
|
const added = await am2.add(ref, {
|
|
702
705
|
link: opts.link,
|
|
703
706
|
force: opts.force,
|
|
@@ -711,6 +714,10 @@ function makeAddCommand() {
|
|
|
711
714
|
onPlaceholderBody: (deployedRef) => placeholderBodies.push(deployedRef),
|
|
712
715
|
onPlaceholderDescription: (deployedRef) => placeholderDescriptions.push(deployedRef),
|
|
713
716
|
onLibraryMoved: (m) => warnings.push(`${m.ref} moved from ${m.from} to ${m.to}`),
|
|
717
|
+
onAgentBound: (id) => agentBound.push({ id }),
|
|
718
|
+
onAgentBindingKept: (id, keptRef) => warnings.push(
|
|
719
|
+
`agents.${id} already binds ${keptRef}; bind this one under another id in skaile.yaml`
|
|
720
|
+
),
|
|
714
721
|
onPresets: (expanded) => {
|
|
715
722
|
presets = expanded;
|
|
716
723
|
},
|
|
@@ -747,6 +754,11 @@ function makeAddCommand() {
|
|
|
747
754
|
onError: logErr,
|
|
748
755
|
onHint: (line) => logInfo(S.dim(line))
|
|
749
756
|
});
|
|
757
|
+
for (const { id } of agentBound) {
|
|
758
|
+
logInfo(
|
|
759
|
+
`Bound agent instance ${S.cmd(id)} in skaile.yaml (${S.dim(`run it with skaile run --instance ${id}`)})`
|
|
760
|
+
);
|
|
761
|
+
}
|
|
750
762
|
if (added.length === 0) {
|
|
751
763
|
const parsedRef = parseAssetRef(ref);
|
|
752
764
|
const kind = parsedRef.kind;
|
|
@@ -1054,7 +1066,8 @@ function readTextOrEmpty(file) {
|
|
|
1054
1066
|
}
|
|
1055
1067
|
}
|
|
1056
1068
|
function infoShowsLocked(locked, latest) {
|
|
1057
|
-
return locked !== void 0 && !locked.startsWith("0.0.0-sha") && latest
|
|
1069
|
+
return locked !== void 0 && !locked.startsWith("0.0.0-sha") && // An empty `latest` is unknown, like an absent one: a store row without a version (p1893).
|
|
1070
|
+
latest !== void 0 && latest !== "" && latest !== locked;
|
|
1058
1071
|
}
|
|
1059
1072
|
function infoVersionLine(locked, latest) {
|
|
1060
1073
|
if (infoShowsLocked(locked, latest)) return `locked ${locked} (latest ${latest})`;
|
|
@@ -1102,7 +1115,7 @@ async function resolveInfoEntry(am2, ref, opts) {
|
|
|
1102
1115
|
return { entry: match ?? deployed };
|
|
1103
1116
|
}
|
|
1104
1117
|
const lookup = opts.storeLookup ?? (async (filter) => {
|
|
1105
|
-
const { resolveCatalogSource } = await import('../open-library-
|
|
1118
|
+
const { resolveCatalogSource } = await import('../open-library-OJ4HT2X4.js');
|
|
1106
1119
|
const { source, close } = await resolveCatalogSource({ projectDir: opts.projectDir });
|
|
1107
1120
|
try {
|
|
1108
1121
|
return await source.listAssets(filter);
|
|
@@ -1118,7 +1131,7 @@ async function resolveInfoEntry(am2, ref, opts) {
|
|
|
1118
1131
|
);
|
|
1119
1132
|
return { entry: hit ? catalogAssetToEntry(hit) : null };
|
|
1120
1133
|
} catch (err) {
|
|
1121
|
-
const { LocalCatalogDisabledError: LocalCatalogDisabledError2 } = await import('../open-library-
|
|
1134
|
+
const { LocalCatalogDisabledError: LocalCatalogDisabledError2 } = await import('../open-library-OJ4HT2X4.js');
|
|
1122
1135
|
const storeNote = err instanceof Error ? err.message : String(err);
|
|
1123
1136
|
const disabled = err instanceof LocalCatalogDisabledError2 || /catalog\.url/i.test(storeNote);
|
|
1124
1137
|
return { entry: null, storeNote, ...disabled ? { storeDisabled: true } : {} };
|
|
@@ -1777,6 +1790,10 @@ function makeCacheCommand() {
|
|
|
1777
1790
|
return;
|
|
1778
1791
|
}
|
|
1779
1792
|
if (!opts.yes) {
|
|
1793
|
+
if (!process.stdin.isTTY) {
|
|
1794
|
+
logErr("cache clean needs --yes when there is no terminal to ask: nothing was removed");
|
|
1795
|
+
process.exit(1);
|
|
1796
|
+
}
|
|
1780
1797
|
const ok = await p4.confirm({
|
|
1781
1798
|
message: opts.global ? "Clear project AND global cache?" : "Clear project cache?"
|
|
1782
1799
|
});
|
|
@@ -1842,7 +1859,7 @@ function makeCatalogCommand() {
|
|
|
1842
1859
|
return catalog;
|
|
1843
1860
|
}
|
|
1844
1861
|
async function runLocalCatalogTest(projectDir) {
|
|
1845
|
-
const { resolveCatalogSource } = await import('../open-library-
|
|
1862
|
+
const { resolveCatalogSource } = await import('../open-library-OJ4HT2X4.js');
|
|
1846
1863
|
let resolved;
|
|
1847
1864
|
try {
|
|
1848
1865
|
resolved = await resolveCatalogSource({ projectDir });
|
|
@@ -2018,7 +2035,7 @@ async function scanLibraryFlowEntries() {
|
|
|
2018
2035
|
const { LocalIndex, resolveIndexPath, scanAuthoringLibraries } = await import('../library/index.js');
|
|
2019
2036
|
const indexPath = resolveIndexPath();
|
|
2020
2037
|
if (!existsSync(indexPath)) return entries;
|
|
2021
|
-
const { getKindRegistry: getKindRegistry2 } = await import('../open-registry-
|
|
2038
|
+
const { getKindRegistry: getKindRegistry2 } = await import('../open-registry-LWGIOJDK.js');
|
|
2022
2039
|
const index = new LocalIndex({ indexPath });
|
|
2023
2040
|
try {
|
|
2024
2041
|
for (const { library, assets } of await scanAuthoringLibraries(index, getKindRegistry2())) {
|
|
@@ -2336,6 +2353,7 @@ async function showConfig(opts) {
|
|
|
2336
2353
|
process.exit(1);
|
|
2337
2354
|
}
|
|
2338
2355
|
if (await reportUnknownHarnesses(projectDir) > 0) process.exit(1);
|
|
2356
|
+
await reportProjectConfig(projectDir, { harness: false });
|
|
2339
2357
|
printEffectiveSection(config, sources);
|
|
2340
2358
|
printWorkspaceDefaultsSection(wsDefaults);
|
|
2341
2359
|
printModelSelectionSection(config, projectDir);
|
|
@@ -2692,6 +2710,7 @@ async function scanFactoryConnectors(scanDirectory2, roots) {
|
|
|
2692
2710
|
return [...byName.values()];
|
|
2693
2711
|
}
|
|
2694
2712
|
async function connectConnectors(projectDir) {
|
|
2713
|
+
await loadDeclaredPlugins(projectDir);
|
|
2695
2714
|
const res = await import('../connectors/index.js');
|
|
2696
2715
|
res.registerBuiltinConnectors();
|
|
2697
2716
|
const declarations = res.loadConnectorDeclarations(projectDir);
|
|
@@ -2792,10 +2811,14 @@ async function promptField(field) {
|
|
|
2792
2811
|
}
|
|
2793
2812
|
function makeConnectorCommand() {
|
|
2794
2813
|
const cmd = new Command("connector").description("Operate on connectors in a workspace");
|
|
2795
|
-
cmd.command("catalog").description("List all available connector drivers and their dependencies").action(async () => {
|
|
2814
|
+
cmd.command("catalog").description("List all available connector drivers and their dependencies").option("--project-dir <path>", "Workspace directory", process.cwd()).action(async (opts) => {
|
|
2796
2815
|
const { scanDirectory: scanDirectory2, factoryAssetRoots: factoryAssetRoots2 } = await import('../core/index.js');
|
|
2797
2816
|
const entries = await scanFactoryConnectors(scanDirectory2, factoryAssetRoots2());
|
|
2798
|
-
|
|
2817
|
+
await loadDeclaredPlugins(path19__default.resolve(opts.projectDir));
|
|
2818
|
+
const { listConnectors } = await import('../connectors/index.js');
|
|
2819
|
+
const known = new Set(entries.map((e) => e.name));
|
|
2820
|
+
const pluginDrivers = listConnectors().filter((id) => !known.has(id));
|
|
2821
|
+
if (entries.length === 0 && pluginDrivers.length === 0) {
|
|
2799
2822
|
console.log("No connector descriptors found.");
|
|
2800
2823
|
return;
|
|
2801
2824
|
}
|
|
@@ -2812,6 +2835,11 @@ function makeConnectorCommand() {
|
|
|
2812
2835
|
if (depsStr) console.log(` ${"".padEnd(18)} ${depsStr}`);
|
|
2813
2836
|
console.log();
|
|
2814
2837
|
}
|
|
2838
|
+
for (const id of pluginDrivers) {
|
|
2839
|
+
console.log(` ${id.padEnd(18)} ${id}`);
|
|
2840
|
+
console.log(` ${"".padEnd(18)} Registered by a plugin of this project.`);
|
|
2841
|
+
console.log();
|
|
2842
|
+
}
|
|
2815
2843
|
console.log(`Run: skaile connector add <driver> to add one to your project.
|
|
2816
2844
|
`);
|
|
2817
2845
|
});
|
|
@@ -2855,14 +2883,16 @@ Adding connector: ${entry.name} (${driver})
|
|
|
2855
2883
|
Installing npm deps: ${allDeps.join(", ")}...`);
|
|
2856
2884
|
const installResult = await installNpmPackages(allDeps, projectDir);
|
|
2857
2885
|
if (!installResult.success) {
|
|
2858
|
-
logErr(
|
|
2859
|
-
|
|
2886
|
+
logErr(
|
|
2887
|
+
`Failed to install dependencies:
|
|
2888
|
+
${installResult.output.trim() || "the package manager gave no output"}`
|
|
2889
|
+
);
|
|
2860
2890
|
process.exit(1);
|
|
2861
2891
|
}
|
|
2862
2892
|
console.log(" \u2713 Dependencies installed");
|
|
2863
2893
|
} else if (!opts.install && allDeps.length > 0) {
|
|
2864
2894
|
console.log(
|
|
2865
|
-
` \u26A0 Skipping install. Add manually: bun add --optional ${allDeps.join(" ")}`
|
|
2895
|
+
` \u26A0 Skipping install. Add manually, in ${projectDir}: npm install --save-optional ${allDeps.join(" ")} (bun: bun add --optional ${allDeps.join(" ")})`
|
|
2866
2896
|
);
|
|
2867
2897
|
}
|
|
2868
2898
|
const editor = WorkspaceYamlEditor2.load(yamlPath);
|
|
@@ -2896,9 +2926,10 @@ ${installResult.output}`);
|
|
|
2896
2926
|
console.log(`\u2713 Connector '${id}' removed from skaile.yaml`);
|
|
2897
2927
|
});
|
|
2898
2928
|
cmd.command("status [id]").option("--project-dir <path>", "Workspace directory", process.cwd()).description("Connect and report health status for one or all connectors").action(async (id, opts) => {
|
|
2929
|
+
const projectDir = path19__default.resolve(opts.projectDir);
|
|
2930
|
+
await loadDeclaredPlugins(projectDir);
|
|
2899
2931
|
const res = await import('../connectors/index.js');
|
|
2900
2932
|
res.registerBuiltinConnectors();
|
|
2901
|
-
const projectDir = path19__default.resolve(opts.projectDir);
|
|
2902
2933
|
const declarations = res.loadConnectorDeclarations(projectDir);
|
|
2903
2934
|
if (declarations.length === 0) {
|
|
2904
2935
|
console.log("No connectors configured in skaile.yaml.");
|
|
@@ -3157,6 +3188,11 @@ async function buildDeployContext(projectDir) {
|
|
|
3157
3188
|
};
|
|
3158
3189
|
return { ctx, controller };
|
|
3159
3190
|
}
|
|
3191
|
+
var CLOUD_TARGET_PLUGINS = {
|
|
3192
|
+
fly: "@skaile/provider-fly",
|
|
3193
|
+
k8s: "@skaile/provider-k8s",
|
|
3194
|
+
"vercel-sandbox": "@skaile/provider-vercel-sandbox"
|
|
3195
|
+
};
|
|
3160
3196
|
async function ensureTargetsRegistered(projectDir) {
|
|
3161
3197
|
const { registerBuiltinDeployTargets } = await import('../deploy/index.js');
|
|
3162
3198
|
const { pluginRegistry } = await import('../plugin-registry/index.js');
|
|
@@ -3164,7 +3200,7 @@ async function ensureTargetsRegistered(projectDir) {
|
|
|
3164
3200
|
const { resolveSkWorkspaceConfig: resolveSkWorkspaceConfig2 } = await import('../core/index.js');
|
|
3165
3201
|
const config = resolveSkWorkspaceConfig2(projectDir);
|
|
3166
3202
|
if (config.plugins && config.plugins.length > 0) {
|
|
3167
|
-
const { ensurePluginsLoaded } = await import('../plugin-store-
|
|
3203
|
+
const { ensurePluginsLoaded } = await import('../plugin-store-IALJUBN2.js');
|
|
3168
3204
|
const result = await ensurePluginsLoaded(projectDir, config.plugins, pluginRegistry);
|
|
3169
3205
|
for (const f of result.failed) logWarn(f.error);
|
|
3170
3206
|
}
|
|
@@ -3180,7 +3216,12 @@ async function runUp(opts) {
|
|
|
3180
3216
|
{ deploy: config.deploy },
|
|
3181
3217
|
opts.target ? { target: opts.target, config: overrideConfig, reason: "cli --target" } : void 0,
|
|
3182
3218
|
pluginRegistry
|
|
3183
|
-
)
|
|
3219
|
+
).catch((err) => {
|
|
3220
|
+
const id = err instanceof Error ? /^No deploy target registered with id "(.+)"\.$/.exec(err.message)?.[1] : void 0;
|
|
3221
|
+
const pkg2 = id !== void 0 && Object.hasOwn(CLOUD_TARGET_PLUGINS, id) ? CLOUD_TARGET_PLUGINS[id] : void 0;
|
|
3222
|
+
if (pkg2) throw new Error(`${err.message} Run: skaile plugin install ${pkg2}`);
|
|
3223
|
+
throw err;
|
|
3224
|
+
});
|
|
3184
3225
|
const { ctx, controller } = await buildDeployContext(projectDir);
|
|
3185
3226
|
ctx.log.debug(`deploy target resolved`, {
|
|
3186
3227
|
target: resolution.target.id,
|
|
@@ -3438,13 +3479,16 @@ function makeHarnessCommand() {
|
|
|
3438
3479
|
const cmd = new Command("harness").description("Choose the coding-agent harness of a project");
|
|
3439
3480
|
cmd.command("set <name>").description(
|
|
3440
3481
|
`Switch the project to a harness (${SUPPORTED_HARNESSES.join(" | ")}): rewrite skaile.yaml and install for it`
|
|
3441
|
-
).option("--project-dir <path>", "Project directory", process.cwd()).
|
|
3442
|
-
|
|
3482
|
+
).option("--project-dir <path>", "Project directory", process.cwd()).option(
|
|
3483
|
+
"--clean",
|
|
3484
|
+
"Delete the copies of the old harness (.claude/, .omp/, .codex/) instead of only naming them"
|
|
3485
|
+
).action(async (name, opts) => {
|
|
3486
|
+
await runHarnessSet(name, path19__default.resolve(opts.projectDir), opts);
|
|
3443
3487
|
});
|
|
3444
3488
|
cmd.action(() => cmd.help());
|
|
3445
3489
|
return cmd;
|
|
3446
3490
|
}
|
|
3447
|
-
async function runHarnessSet(name, projectDir) {
|
|
3491
|
+
async function runHarnessSet(name, projectDir, opts) {
|
|
3448
3492
|
const target = parseHarnessTarget(name);
|
|
3449
3493
|
if (!target) {
|
|
3450
3494
|
logErr(unknownHarnessTargetMessage(name));
|
|
@@ -3461,16 +3505,14 @@ async function runHarnessSet(name, projectDir) {
|
|
|
3461
3505
|
process.exit(1);
|
|
3462
3506
|
}
|
|
3463
3507
|
const profile = editor.getAgentConfig("default");
|
|
3464
|
-
editor.setAgentConfig("default", {
|
|
3465
|
-
|
|
3466
|
-
harness: HARNESS_ID_OF_TARGET[target]
|
|
3467
|
-
});
|
|
3508
|
+
editor.setAgentConfig("default", { harness: HARNESS_ID_OF_TARGET[target] });
|
|
3509
|
+
editor.deleteAgentConfigField("default", "agent");
|
|
3468
3510
|
editor.save();
|
|
3469
3511
|
if (before === target) {
|
|
3470
3512
|
logInfo(`Project is already on ${S.cmd(target)}; installing for it.`);
|
|
3471
3513
|
} else {
|
|
3472
3514
|
logOk(
|
|
3473
|
-
`Set ${S.cmd("agent-config.default")} to ${S.cmd(`
|
|
3515
|
+
`Set ${S.cmd("agent-config.default")} to ${S.cmd(`harness: ${HARNESS_ID_OF_TARGET[target]}`)} in skaile.yaml`
|
|
3474
3516
|
);
|
|
3475
3517
|
}
|
|
3476
3518
|
if (profile?.model) {
|
|
@@ -3480,6 +3522,29 @@ async function runHarnessSet(name, projectDir) {
|
|
|
3480
3522
|
}
|
|
3481
3523
|
logInfo(`Installing for ${target} (${HARNESS_TARGETS[target].local.skill})`);
|
|
3482
3524
|
await runYamlInstall({ projectDir });
|
|
3525
|
+
if (opts.clean) removeOldHarnessCopies(projectDir);
|
|
3526
|
+
}
|
|
3527
|
+
function removeOldHarnessCopies(projectDir) {
|
|
3528
|
+
const am2 = new AssetManager({ registry: getKindRegistry(), projectDir });
|
|
3529
|
+
const stale = am2.listStaleHarnessCopies();
|
|
3530
|
+
if (stale.length === 0) {
|
|
3531
|
+
logInfo("No old harness copies to remove.");
|
|
3532
|
+
return;
|
|
3533
|
+
}
|
|
3534
|
+
const rel = (copies) => copies.map((c) => path19__default.relative(projectDir, c.path)).join(", ");
|
|
3535
|
+
const owned = stale.filter((c) => c.skaileWrote);
|
|
3536
|
+
const foreign = stale.filter((c) => !c.skaileWrote);
|
|
3537
|
+
for (const copy of owned) rmSync(copy.path, { recursive: true, force: true });
|
|
3538
|
+
if (owned.length > 0) {
|
|
3539
|
+
logOk(
|
|
3540
|
+
`Removed ${owned.length} old harness cop${owned.length === 1 ? "y" : "ies"}: ${rel(owned)}`
|
|
3541
|
+
);
|
|
3542
|
+
}
|
|
3543
|
+
if (foreign.length > 0) {
|
|
3544
|
+
logWarn(
|
|
3545
|
+
`Kept ${foreign.length} cop${foreign.length === 1 ? "y" : "ies"} skaile did not write (the bytes differ from the new harness's copy, or it is not in the lock): ${rel(foreign)}. Delete ${foreign.length === 1 ? "it" : "them"} by hand if you do not need ${foreign.length === 1 ? "it" : "them"}.`
|
|
3546
|
+
);
|
|
3547
|
+
}
|
|
3483
3548
|
}
|
|
3484
3549
|
function makeHistoryCommand() {
|
|
3485
3550
|
const cmd = new Command("history").description("Show recent add/remove/update actions");
|
|
@@ -3825,7 +3890,9 @@ async function installClaudeCode(projectDir, opts) {
|
|
|
3825
3890
|
} else {
|
|
3826
3891
|
logInfo(`claude-code: already installed (mcp)`);
|
|
3827
3892
|
}
|
|
3828
|
-
console.log(
|
|
3893
|
+
console.log(
|
|
3894
|
+
r.method === "plugin" ? ` ${S.dim("\u2192")} Restart Claude Code to pick up the change.` : ` ${S.dim("\u2192")} Restart Claude Code and approve the skaile-workspace server: it stays "Pending approval" until you start \`claude\` in the project and approve it.`
|
|
3895
|
+
);
|
|
3829
3896
|
}
|
|
3830
3897
|
async function installOmp(projectDir) {
|
|
3831
3898
|
const r = await install3(projectDir);
|
|
@@ -4409,7 +4476,7 @@ function warnManifestNeedsCommit(libPath, name) {
|
|
|
4409
4476
|
});
|
|
4410
4477
|
if (status4.status !== 0 || status4.stdout.trim() === "") return;
|
|
4411
4478
|
logInfo(
|
|
4412
|
-
`${SKAILE_MANIFEST_FILENAME} was changed in the clone. Commit it with \`skaile library commit ${name}\`; \`pull\`
|
|
4479
|
+
`${SKAILE_MANIFEST_FILENAME} was changed in the clone. Commit it with \`skaile library commit ${name}\`; a \`pull\` or \`sync\` stops only when a tracked file has uncommitted changes.`
|
|
4413
4480
|
);
|
|
4414
4481
|
}
|
|
4415
4482
|
function assertManifestEditableOrExit(libraryPath) {
|
|
@@ -4665,7 +4732,7 @@ function remoteBranches(url) {
|
|
|
4665
4732
|
return r.stdout.split("\n").map((line) => line.split(" ")[1]?.replace(/^refs\/heads\//, "")).filter((b) => !!b);
|
|
4666
4733
|
}
|
|
4667
4734
|
async function warnIfNotGithubRemote(name, url) {
|
|
4668
|
-
const { isGithubRemote, notGithubRemoteMessage } = await import('../library-publish-
|
|
4735
|
+
const { isGithubRemote, notGithubRemoteMessage } = await import('../library-publish-UQQMHTND.js');
|
|
4669
4736
|
if (!isGithubRemote(url)) logWarn(notGithubRemoteMessage(name, url));
|
|
4670
4737
|
}
|
|
4671
4738
|
function scaffoldLibraryFiles(dir, name) {
|
|
@@ -5067,7 +5134,7 @@ function makeLibraryCommand() {
|
|
|
5067
5134
|
logErr("No default library set. Run `skaile library default <name>` or pass --library.");
|
|
5068
5135
|
process.exit(1);
|
|
5069
5136
|
}
|
|
5070
|
-
cmd.command("default <name>").description("Set <name> as the default library").action(async (name) => {
|
|
5137
|
+
cmd.command("default <name>").description("Set <name> as the default library").option("--project-dir <path>", "Project directory", process.cwd()).action(async (name, opts) => {
|
|
5071
5138
|
const { manager, close } = await openLibraryManager();
|
|
5072
5139
|
try {
|
|
5073
5140
|
const lib = await manager.requireLibrary(name);
|
|
@@ -5076,6 +5143,17 @@ function makeLibraryCommand() {
|
|
|
5076
5143
|
process.exitCode = 1;
|
|
5077
5144
|
return;
|
|
5078
5145
|
}
|
|
5146
|
+
const am2 = new AssetManager({
|
|
5147
|
+
registry: getKindRegistry(),
|
|
5148
|
+
projectDir: path19.resolve(opts.projectDir)
|
|
5149
|
+
});
|
|
5150
|
+
if (am2.undeclaredSourceClones([lib]).has(lib.id)) {
|
|
5151
|
+
logErr(
|
|
5152
|
+
`"${lib.name}" is a source clone that this project does not declare in skaile.yaml sources:. Run \`skaile source add <url>\` here to use it.`
|
|
5153
|
+
);
|
|
5154
|
+
process.exitCode = 1;
|
|
5155
|
+
return;
|
|
5156
|
+
}
|
|
5079
5157
|
const updated = await manager.setDefault(name);
|
|
5080
5158
|
logOk(`Default \u2192 ${updated.name}`);
|
|
5081
5159
|
} finally {
|
|
@@ -5405,16 +5483,16 @@ function makeLibraryCommand() {
|
|
|
5405
5483
|
"With --create-repo: create the repo private (the store only accepts public repos)"
|
|
5406
5484
|
).option("--ref <gitref>", "Git ref to ingest (default: the library branch or main)").option("--dry-run", "Print the plan; push nothing and call no store endpoint").action(
|
|
5407
5485
|
async (lib, opts) => {
|
|
5408
|
-
const { runLibraryPublish } = await import('../library-publish-
|
|
5486
|
+
const { runLibraryPublish } = await import('../library-publish-UQQMHTND.js');
|
|
5409
5487
|
await withStoreErrorHandling(() => runLibraryPublish(lib, opts));
|
|
5410
5488
|
}
|
|
5411
5489
|
);
|
|
5412
5490
|
cmd.command("register <lib>").description("Register the library's manifest without pushing (bytes already on github)").option("--asset <ref>", "Publish only the single asset matching this ref/name").option("--ref <gitref>", "Git ref to ingest (default: the library branch or main)").option("--dry-run", "Print the plan; call no store endpoint").action(async (lib, opts) => {
|
|
5413
|
-
const { runLibraryRegister } = await import('../library-publish-
|
|
5491
|
+
const { runLibraryRegister } = await import('../library-publish-UQQMHTND.js');
|
|
5414
5492
|
await withStoreErrorHandling(() => runLibraryRegister(lib, opts));
|
|
5415
5493
|
});
|
|
5416
5494
|
cmd.command("yank <lib>").description("Retract the library's published assets from the store").option("--asset <ref>", "Yank only the single asset matching this ref/name").action(async (lib, opts) => {
|
|
5417
|
-
const { runLibraryYank } = await import('../library-publish-
|
|
5495
|
+
const { runLibraryYank } = await import('../library-publish-UQQMHTND.js');
|
|
5418
5496
|
await withStoreErrorHandling(() => runLibraryYank(lib, opts));
|
|
5419
5497
|
});
|
|
5420
5498
|
return cmd;
|
|
@@ -6074,7 +6152,7 @@ function scheduleSoftDepPreview() {
|
|
|
6074
6152
|
}
|
|
6075
6153
|
async function loadAssets() {
|
|
6076
6154
|
softDepPreviewCache.clear();
|
|
6077
|
-
const { gatherAssetFeeds } = await import('../asset-feeds-
|
|
6155
|
+
const { gatherAssetFeeds } = await import('../asset-feeds-WQ6YQPHV.js');
|
|
6078
6156
|
const { entries, notes } = await gatherAssetFeeds(am, am.projectDir);
|
|
6079
6157
|
if (notes.length > 0) {
|
|
6080
6158
|
state.message = notes.map((n) => `[${n.feed}] ${n.message}`).join(" \u2022 ");
|
|
@@ -6278,7 +6356,7 @@ function reconcileCollapsedSets(rows) {
|
|
|
6278
6356
|
async function loadSourcesAndLibraries() {
|
|
6279
6357
|
try {
|
|
6280
6358
|
const [{ openLibraryManager: openLibraryManager2 }, { getGlobalCacheDir: getGlobalCacheDir2, globalSkaileDir: globalSkaileDir2 }] = await Promise.all([
|
|
6281
|
-
import('../open-library-
|
|
6359
|
+
import('../open-library-OJ4HT2X4.js'),
|
|
6282
6360
|
import('../core/index.js')
|
|
6283
6361
|
]);
|
|
6284
6362
|
const { manager, library, close } = await openLibraryManager2();
|
|
@@ -7463,9 +7541,9 @@ function changeLabel(change, base) {
|
|
|
7463
7541
|
return `move ${rel(change.from)} \u2192 ${rel(change.to)}`;
|
|
7464
7542
|
}
|
|
7465
7543
|
}
|
|
7466
|
-
function resolveMode(opts
|
|
7544
|
+
function resolveMode(opts) {
|
|
7467
7545
|
if (opts.write && opts.dryRun) {
|
|
7468
|
-
logErr(
|
|
7546
|
+
logErr("--write and --dry-run are mutually exclusive.");
|
|
7469
7547
|
process.exit(1);
|
|
7470
7548
|
}
|
|
7471
7549
|
return opts.write === true;
|
|
@@ -7476,7 +7554,7 @@ function printChanges(changes, base) {
|
|
|
7476
7554
|
console.log(colorizeDiff(renderChange(change, base)).trimEnd());
|
|
7477
7555
|
}
|
|
7478
7556
|
}
|
|
7479
|
-
function finish(changes, write, base
|
|
7557
|
+
function finish(changes, write, base) {
|
|
7480
7558
|
console.log();
|
|
7481
7559
|
if (changes.length === 0) {
|
|
7482
7560
|
logOk("Nothing to migrate.");
|
|
@@ -7484,7 +7562,7 @@ function finish(changes, write, base, writeFlag = "--write") {
|
|
|
7484
7562
|
}
|
|
7485
7563
|
if (!write) {
|
|
7486
7564
|
logInfo(
|
|
7487
|
-
`Dry run: ${changes.length} file change(s) planned, nothing written. Re-run with
|
|
7565
|
+
`Dry run: ${changes.length} file change(s) planned, nothing written. Re-run with --write to apply.`
|
|
7488
7566
|
);
|
|
7489
7567
|
return;
|
|
7490
7568
|
}
|
|
@@ -8511,10 +8589,22 @@ function planAssetMigration(options) {
|
|
|
8511
8589
|
};
|
|
8512
8590
|
}
|
|
8513
8591
|
var SKAILE_YAML_SUFFIX = ".skaile.yaml";
|
|
8592
|
+
var RETIRED_AGENT_KEY = "agent";
|
|
8514
8593
|
var OLD_KEY = "driver";
|
|
8515
8594
|
var NEW_KEY = "harness";
|
|
8516
8595
|
var AGENT_CONFIG_KEYS = ["agent-config", "agent_config", "agentConfig"];
|
|
8517
|
-
function
|
|
8596
|
+
function dropAgentKey(map, where, notes) {
|
|
8597
|
+
const idx = map.items.findIndex((p6) => isScalar(p6.key) && p6.key.value === RETIRED_AGENT_KEY);
|
|
8598
|
+
if (idx < 0) return false;
|
|
8599
|
+
map.items.splice(idx, 1);
|
|
8600
|
+
notes.push(`${where}: removed \`agent\` (nothing reads it)`);
|
|
8601
|
+
return true;
|
|
8602
|
+
}
|
|
8603
|
+
function rewriteProfile(map, where, notes) {
|
|
8604
|
+
const renamed = renameDriver(map, where, notes);
|
|
8605
|
+
return dropAgentKey(map, where, notes) || renamed;
|
|
8606
|
+
}
|
|
8607
|
+
function renameDriver(map, where, notes) {
|
|
8518
8608
|
const oldIdx = map.items.findIndex((p6) => isScalar(p6.key) && p6.key.value === OLD_KEY);
|
|
8519
8609
|
if (oldIdx < 0) return false;
|
|
8520
8610
|
const hasNew = map.items.some((p6) => isScalar(p6.key) && p6.key.value === NEW_KEY);
|
|
@@ -8541,17 +8631,17 @@ function migrateHarnessYaml(text, label = SKAILE_YAML_DEFAULT) {
|
|
|
8541
8631
|
for (const key of AGENT_CONFIG_KEYS) {
|
|
8542
8632
|
const block = root.get(key, true);
|
|
8543
8633
|
if (!isMap(block)) continue;
|
|
8544
|
-
const flat = AGENT_PROFILE_FIELDS.some((f) => {
|
|
8634
|
+
const flat = [...AGENT_PROFILE_FIELDS, RETIRED_AGENT_KEY].some((f) => {
|
|
8545
8635
|
const v = block.get(f, true);
|
|
8546
8636
|
return isScalar(v) && typeof v.value === "string";
|
|
8547
8637
|
});
|
|
8548
8638
|
if (flat) {
|
|
8549
|
-
changed =
|
|
8639
|
+
changed = rewriteProfile(block, `${label}: ${key}`, notes) || changed;
|
|
8550
8640
|
continue;
|
|
8551
8641
|
}
|
|
8552
8642
|
for (const pair of block.items) {
|
|
8553
8643
|
if (!isMap(pair.value) || !isScalar(pair.key)) continue;
|
|
8554
|
-
changed =
|
|
8644
|
+
changed = rewriteProfile(pair.value, `${label}: ${key}.${String(pair.key.value)}`, notes) || changed;
|
|
8555
8645
|
}
|
|
8556
8646
|
}
|
|
8557
8647
|
return { output: changed ? String(doc) : text, notes };
|
|
@@ -8620,29 +8710,33 @@ function planHarnessMigration(opts) {
|
|
|
8620
8710
|
return { changes, notes };
|
|
8621
8711
|
}
|
|
8622
8712
|
function runMigrateHarness(opts) {
|
|
8623
|
-
const apply = resolveMode(
|
|
8624
|
-
{ write: opts.apply === true || opts.write === true, dryRun: opts.dryRun },
|
|
8625
|
-
"--apply"
|
|
8626
|
-
);
|
|
8627
8713
|
const cwd = process.cwd();
|
|
8628
8714
|
const projectDir = path19__default.resolve(opts.projectDir ?? findWorkspaceRoot(cwd) ?? cwd);
|
|
8629
8715
|
const plan = planHarnessMigration({ projectDir });
|
|
8630
8716
|
for (const note of plan.notes) console.log(` ${note}`);
|
|
8631
8717
|
printChanges(plan.changes, projectDir);
|
|
8632
|
-
|
|
8718
|
+
if (opts.dryRun === true && plan.changes.length > 0) {
|
|
8719
|
+
console.log();
|
|
8720
|
+
logInfo(
|
|
8721
|
+
`Dry run: ${plan.changes.length} file change(s) planned, nothing written. Run \`skaile migrate harness\` to write them.`
|
|
8722
|
+
);
|
|
8723
|
+
return;
|
|
8724
|
+
}
|
|
8725
|
+
finish(plan.changes, true, projectDir);
|
|
8633
8726
|
}
|
|
8634
8727
|
function addMigrateHarnessCommand(migrate) {
|
|
8635
8728
|
migrate.command("harness").description(
|
|
8636
|
-
"Rename the `driver` key to `harness` in skaile.yaml
|
|
8637
|
-
).option("--project-dir <path>", "Project directory (default: the workspace root of the cwd)").option("--
|
|
8729
|
+
"Rename the `driver` key to `harness` and remove the retired `agent` key in skaile.yaml and settings.json"
|
|
8730
|
+
).option("--project-dir <path>", "Project directory (default: the workspace root of the cwd)").option("--dry-run", "Print the diff and write nothing").addHelpText(
|
|
8638
8731
|
"after",
|
|
8639
8732
|
`
|
|
8640
8733
|
Rewrites (the connector/mount \`driver\` of connectors: and mounts: is never touched):
|
|
8641
8734
|
skaile.yaml agent-config.<profile>.driver -> harness (also the flat agent-config: { driver: \u2026 } shape)
|
|
8735
|
+
skaile.yaml agent-config.<profile>.agent removed (nothing reads it)
|
|
8642
8736
|
.skaile/settings.json, ~/.skaile/settings.json driver -> harness
|
|
8643
|
-
A profile or file that sets both keeps \`harness\` and drops \`driver\`.
|
|
8737
|
+
A profile or file that sets both keys keeps \`harness\` and drops \`driver\`.
|
|
8644
8738
|
|
|
8645
|
-
|
|
8739
|
+
Prints a unified diff per file and writes the files. Pass --dry-run to print the diff only.
|
|
8646
8740
|
`
|
|
8647
8741
|
).action((opts) => runMigrateHarness(opts));
|
|
8648
8742
|
}
|
|
@@ -9261,13 +9355,20 @@ function makeOutdatedCommand() {
|
|
|
9261
9355
|
harness: opts.target
|
|
9262
9356
|
});
|
|
9263
9357
|
const entries = await am2.outdated();
|
|
9358
|
+
const unreachable = am2.takeUnreachableSources();
|
|
9359
|
+
for (const u of unreachable) {
|
|
9360
|
+
logWarn(
|
|
9361
|
+
`Source ${u.name}: could not reach its origin (${u.reason}); commits behind not checked.`
|
|
9362
|
+
);
|
|
9363
|
+
}
|
|
9364
|
+
if (unreachable.length > 0) process.exitCode = 1;
|
|
9264
9365
|
if (entries.length === 0) {
|
|
9265
|
-
logInfo("All assets are up to date.");
|
|
9366
|
+
if (unreachable.length === 0) logInfo("All assets are up to date.");
|
|
9266
9367
|
return;
|
|
9267
9368
|
}
|
|
9268
9369
|
const filtered = filter ? entries.filter((e) => matchesOutdatedFilter(e, filter)) : entries;
|
|
9269
9370
|
if (filtered.length === 0) {
|
|
9270
|
-
logInfo(`${filter} is up to date.`);
|
|
9371
|
+
if (unreachable.length === 0) logInfo(`${filter} is up to date.`);
|
|
9271
9372
|
return;
|
|
9272
9373
|
}
|
|
9273
9374
|
const refW = Math.max(4, ...filtered.map((e) => outdatedRef(e).length));
|
|
@@ -9281,16 +9382,8 @@ function makeOutdatedCommand() {
|
|
|
9281
9382
|
);
|
|
9282
9383
|
}
|
|
9283
9384
|
console.log();
|
|
9284
|
-
const needsUpdate = filtered.some(
|
|
9285
|
-
(e) => e.problem === void 0 && !e.pinned && !e.contentChanged
|
|
9286
|
-
);
|
|
9287
|
-
const needsRelock = filtered.some(
|
|
9288
|
-
(e) => e.problem === void 0 && !e.pinned && e.contentChanged
|
|
9289
|
-
);
|
|
9385
|
+
const needsUpdate = filtered.some((e) => e.problem === void 0 && !e.pinned);
|
|
9290
9386
|
if (needsUpdate) logWarn(`Run ${S.cmd("skaile update")} to re-lock and re-deploy.`);
|
|
9291
|
-
if (needsRelock) {
|
|
9292
|
-
logWarn(`Run ${S.cmd("skaile install")} to re-lock the changed library assets.`);
|
|
9293
|
-
}
|
|
9294
9387
|
if (filtered.some((e) => e.problem !== void 0 && !e.manualFix)) {
|
|
9295
9388
|
logWarn(`Run ${S.cmd("skaile install")} to restore or re-lock the broken assets.`);
|
|
9296
9389
|
}
|
|
@@ -9364,13 +9457,14 @@ function action2(fn) {
|
|
|
9364
9457
|
try {
|
|
9365
9458
|
await fn(...args);
|
|
9366
9459
|
} catch (err) {
|
|
9367
|
-
|
|
9460
|
+
const { condensePluginFailure } = await import('../plugin-store-IALJUBN2.js');
|
|
9461
|
+
logErr(condensePluginFailure(err instanceof Error ? err.message : String(err)));
|
|
9368
9462
|
process.exitCode = 1;
|
|
9369
9463
|
}
|
|
9370
9464
|
};
|
|
9371
9465
|
}
|
|
9372
9466
|
async function reconcileAndReport(projectDir, plugins, opts = {}) {
|
|
9373
|
-
const { reconcilePlugins } = await import('../plugin-store-
|
|
9467
|
+
const { reconcilePlugins } = await import('../plugin-store-IALJUBN2.js');
|
|
9374
9468
|
if (plugins.length === 0) {
|
|
9375
9469
|
logInfo("No plugins declared \u2014 nothing to reconcile.");
|
|
9376
9470
|
return;
|
|
@@ -9381,11 +9475,14 @@ async function reconcileAndReport(projectDir, plugins, opts = {}) {
|
|
|
9381
9475
|
else logInfo(`Plugin store ${result.reason}.`);
|
|
9382
9476
|
} catch (err) {
|
|
9383
9477
|
if (opts.strict) throw err;
|
|
9384
|
-
|
|
9478
|
+
const { condensePluginFailure } = await import('../plugin-store-IALJUBN2.js');
|
|
9479
|
+
logWarn(
|
|
9480
|
+
`reconcile skipped: ${condensePluginFailure(err instanceof Error ? err.message : String(err))}`
|
|
9481
|
+
);
|
|
9385
9482
|
}
|
|
9386
9483
|
}
|
|
9387
9484
|
async function verifyPluginLoads(projectDir, spec) {
|
|
9388
|
-
const { loadPlugins } = await import('../plugin-store-
|
|
9485
|
+
const { loadPlugins } = await import('../plugin-store-IALJUBN2.js');
|
|
9389
9486
|
const { createPluginRegistry } = await import('../plugin-registry/index.js');
|
|
9390
9487
|
const registry = createPluginRegistry();
|
|
9391
9488
|
const result = await loadPlugins(projectDir, [spec], registry);
|
|
@@ -9396,10 +9493,11 @@ async function verifyPluginLoads(projectDir, spec) {
|
|
|
9396
9493
|
);
|
|
9397
9494
|
logOk(`Loaded ${S.cmd(spec)}${contributed.length > 0 ? ` (${contributed.join(", ")})` : ""}`);
|
|
9398
9495
|
}
|
|
9399
|
-
async function runInstall2(
|
|
9496
|
+
async function runInstall2(typedSpec, opts) {
|
|
9497
|
+
const rawSpec = typedSpec.trim();
|
|
9400
9498
|
const projectDir = path19__default.resolve(opts.projectDir);
|
|
9401
9499
|
const { WorkspaceYamlEditor: WorkspaceYamlEditor2 } = await import('../core/index.js');
|
|
9402
|
-
const { specName, rollbackPluginStore, npmSpecError, projectRelativeFileSpec } = await import('../plugin-store-
|
|
9500
|
+
const { specName, rollbackPluginStore, npmSpecError, projectRelativeFileSpec } = await import('../plugin-store-IALJUBN2.js');
|
|
9403
9501
|
const specError = npmSpecError(rawSpec);
|
|
9404
9502
|
if (specError) throw new Error(specError);
|
|
9405
9503
|
const spec = projectRelativeFileSpec(rawSpec, process.cwd(), projectDir);
|
|
@@ -9431,7 +9529,7 @@ async function runInstall2(rawSpec, opts) {
|
|
|
9431
9529
|
async function runRemove(name, opts) {
|
|
9432
9530
|
const projectDir = path19__default.resolve(opts.projectDir);
|
|
9433
9531
|
const { WorkspaceYamlEditor: WorkspaceYamlEditor2 } = await import('../core/index.js');
|
|
9434
|
-
const { specName } = await import('../plugin-store-
|
|
9532
|
+
const { specName } = await import('../plugin-store-IALJUBN2.js');
|
|
9435
9533
|
const yamlPath = path19__default.join(projectDir, "skaile.yaml");
|
|
9436
9534
|
if (!existsSync(yamlPath)) {
|
|
9437
9535
|
logInfo(`No plugin matching ${S.cmd(name)}: there is no skaile.yaml in ${projectDir}.`);
|
|
@@ -9445,7 +9543,14 @@ async function runRemove(name, opts) {
|
|
|
9445
9543
|
}
|
|
9446
9544
|
editor.save();
|
|
9447
9545
|
logOk(`Removed ${S.cmd(name)} from skaile.yaml plugins`);
|
|
9448
|
-
|
|
9546
|
+
const remaining = editor.getPlugins();
|
|
9547
|
+
if (remaining.length === 0) {
|
|
9548
|
+
const { rollbackPluginStore } = await import('../plugin-store-IALJUBN2.js');
|
|
9549
|
+
await rollbackPluginStore(projectDir, []);
|
|
9550
|
+
logInfo("No plugins declared; removed .skaile/plugins/.");
|
|
9551
|
+
return;
|
|
9552
|
+
}
|
|
9553
|
+
await reconcileAndReport(projectDir, remaining);
|
|
9449
9554
|
}
|
|
9450
9555
|
async function runList(opts) {
|
|
9451
9556
|
const projectDir = path19__default.resolve(opts.projectDir);
|
|
@@ -9463,7 +9568,7 @@ async function runList(opts) {
|
|
|
9463
9568
|
const registry = createPluginRegistry();
|
|
9464
9569
|
if (declared.length > 0) {
|
|
9465
9570
|
try {
|
|
9466
|
-
const { loadPlugins } = await import('../plugin-store-
|
|
9571
|
+
const { loadPlugins } = await import('../plugin-store-IALJUBN2.js');
|
|
9467
9572
|
const result = await loadPlugins(projectDir, declared, registry);
|
|
9468
9573
|
for (const f of result.failed) logWarn(f.error);
|
|
9469
9574
|
} catch (err) {
|
|
@@ -10602,6 +10707,13 @@ function makeRunCommand() {
|
|
|
10602
10707
|
logErr(providerRefusal);
|
|
10603
10708
|
process.exit(1);
|
|
10604
10709
|
}
|
|
10710
|
+
if (dryRun) {
|
|
10711
|
+
const sdkProblem = await checkHarnessSdk(projectDir, harness);
|
|
10712
|
+
if (sdkProblem) {
|
|
10713
|
+
logErr(sdkProblem);
|
|
10714
|
+
process.exit(1);
|
|
10715
|
+
}
|
|
10716
|
+
}
|
|
10605
10717
|
const flowPath = findProjectFlowFile(flowId, projectDir);
|
|
10606
10718
|
if (flowPath && agentDefinition) {
|
|
10607
10719
|
logErr(
|
|
@@ -10951,7 +11063,11 @@ function makeServeCommand() {
|
|
|
10951
11063
|
"--managed-codex-config <path>",
|
|
10952
11064
|
"Explicit private host configuration for managed Codex",
|
|
10953
11065
|
valueNotFlag("--managed-codex-config")
|
|
10954
|
-
).option("--harness <name>", "Override harness", valueNotFlag("--harness")).addOption(driverAliasOption().argParser(valueNotFlag("--driver"))).option("--model <name>", "Override model", valueNotFlag("--model")).option(
|
|
11066
|
+
).option("--harness <name>", "Override harness", valueNotFlag("--harness")).addOption(driverAliasOption().argParser(valueNotFlag("--driver"))).option("--model <name>", "Override model", valueNotFlag("--model")).option(
|
|
11067
|
+
"--provider <name>",
|
|
11068
|
+
'Use only this AI provider registry entry (same as --providers <name>); managed Codex takes "openai"',
|
|
11069
|
+
valueNotFlag("--provider")
|
|
11070
|
+
).option(
|
|
10955
11071
|
"--session-id <id>",
|
|
10956
11072
|
"Label for the session; does not restore the conversation (use --resume-session-id)",
|
|
10957
11073
|
valueNotFlag("--session-id")
|
|
@@ -10996,7 +11112,7 @@ function makeServeCommand() {
|
|
|
10996
11112
|
process.exitCode = 1;
|
|
10997
11113
|
return;
|
|
10998
11114
|
}
|
|
10999
|
-
const dirProblem = (await import('../serve-preflight-
|
|
11115
|
+
const dirProblem = (await import('../serve-preflight-TYEKHC32.js')).checkServeProjectDir(
|
|
11000
11116
|
opts.projectDir
|
|
11001
11117
|
);
|
|
11002
11118
|
if (dirProblem) {
|
|
@@ -11023,17 +11139,27 @@ function makeServeCommand() {
|
|
|
11023
11139
|
} else {
|
|
11024
11140
|
await ensurePluginsLoadedForServe(opts.projectDir);
|
|
11025
11141
|
}
|
|
11026
|
-
|
|
11142
|
+
let providers = parseProviderIds(opts.providers);
|
|
11143
|
+
if (!managedCodex) {
|
|
11144
|
+
const { resolveServeProvider } = await import('../serve-preflight-TYEKHC32.js');
|
|
11145
|
+
const picked = resolveServeProvider(opts.projectDir, opts.provider, providers);
|
|
11146
|
+
if ("problem" in picked) {
|
|
11147
|
+
logErr(picked.problem);
|
|
11148
|
+
process.exitCode = 1;
|
|
11149
|
+
return;
|
|
11150
|
+
}
|
|
11151
|
+
providers = [...picked.providers];
|
|
11152
|
+
}
|
|
11027
11153
|
const modelEndpoint = parseModelEndpointFlag(opts.modelEndpoint);
|
|
11028
|
-
const { checkHarnessSdk, checkModelEndpointPeer, checkServeModel } = await import('../serve-preflight-
|
|
11029
|
-
const { checkServeHarness, checkServeAgentDefinition } = await import('../serve-preflight-
|
|
11154
|
+
const { checkHarnessSdk: checkHarnessSdk2, checkModelEndpointPeer, checkServeModel } = await import('../serve-preflight-TYEKHC32.js');
|
|
11155
|
+
const { checkServeHarness, checkServeAgentDefinition } = await import('../serve-preflight-TYEKHC32.js');
|
|
11030
11156
|
const startProblem = managedCodex ? null : await checkServeHarness(opts.projectDir, opts.harness) ?? checkServeAgentDefinition(opts.projectDir);
|
|
11031
11157
|
if (startProblem) {
|
|
11032
11158
|
logErr(startProblem);
|
|
11033
11159
|
process.exitCode = 1;
|
|
11034
11160
|
return;
|
|
11035
11161
|
}
|
|
11036
|
-
const harnessProblem = managedCodex ? null : await
|
|
11162
|
+
const harnessProblem = managedCodex ? null : await checkHarnessSdk2(opts.projectDir, opts.harness);
|
|
11037
11163
|
if (harnessProblem) {
|
|
11038
11164
|
logErr(harnessProblem);
|
|
11039
11165
|
process.exitCode = 1;
|
|
@@ -11093,12 +11219,12 @@ function makeServeCommand() {
|
|
|
11093
11219
|
);
|
|
11094
11220
|
}
|
|
11095
11221
|
async function ensurePluginsLoadedForServe(projectDir) {
|
|
11096
|
-
const { logInfo: logInfo2, logWarn: logWarn2 } = await import('../helpers-
|
|
11222
|
+
const { logInfo: logInfo2, logWarn: logWarn2 } = await import('../helpers-WMCCODAV.js');
|
|
11097
11223
|
try {
|
|
11098
11224
|
const { resolveSkWorkspaceConfig: resolveSkWorkspaceConfig2 } = await import('../core/index.js');
|
|
11099
11225
|
const config = resolveSkWorkspaceConfig2(projectDir);
|
|
11100
11226
|
if (!config.plugins || config.plugins.length === 0) return;
|
|
11101
|
-
const { ensurePluginsLoaded } = await import('../plugin-store-
|
|
11227
|
+
const { ensurePluginsLoaded } = await import('../plugin-store-IALJUBN2.js');
|
|
11102
11228
|
const { pluginRegistry } = await import('../plugin-registry/index.js');
|
|
11103
11229
|
const result = await ensurePluginsLoaded(projectDir, config.plugins, pluginRegistry);
|
|
11104
11230
|
if (result.loaded.length > 0) {
|
|
@@ -11112,14 +11238,14 @@ async function ensurePluginsLoadedForServe(projectDir) {
|
|
|
11112
11238
|
}
|
|
11113
11239
|
}
|
|
11114
11240
|
async function runCompileTest(opts) {
|
|
11115
|
-
const { logOk: logOk2, logErr: logErr2, logInfo: logInfo2, S: S2 } = await import('../helpers-
|
|
11241
|
+
const { logOk: logOk2, logErr: logErr2, logInfo: logInfo2, S: S2 } = await import('../helpers-WMCCODAV.js');
|
|
11116
11242
|
const { tmpdir } = await import('os');
|
|
11117
11243
|
const { dirname: dirname3, join: join6, resolve: resolve4 } = await import('path');
|
|
11118
11244
|
const { fileURLToPath: fileURLToPath2 } = await import('url');
|
|
11119
11245
|
const { unlinkSync, existsSync: existsSync22 } = await import('fs');
|
|
11120
11246
|
const { spawn } = await import('child_process');
|
|
11121
11247
|
const { portableSpawnSync: portableSpawnSync2 } = await import('../core/index.js');
|
|
11122
|
-
const { MONOREPO_ROOT } = await import('../paths-
|
|
11248
|
+
const { MONOREPO_ROOT } = await import('../paths-FR2752HV.js');
|
|
11123
11249
|
if (MONOREPO_ROOT === null) {
|
|
11124
11250
|
logErr2("--compile-test is only available inside the skaile-dev workspace.");
|
|
11125
11251
|
logInfo2("Run it from a checkout of skaile-ai/skaile-dev (the monorepo shell).");
|
|
@@ -12077,8 +12203,8 @@ function makeStoreCommand() {
|
|
|
12077
12203
|
"--all",
|
|
12078
12204
|
`List every match (default: ${STORE_ROW_LIMIT} rows, only what \`skaile add\` can install)`
|
|
12079
12205
|
).option("-C, --project-dir <dir>", "Project directory (catalog config overlay)", process.cwd()).action(async (query, opts) => {
|
|
12080
|
-
const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError: LocalCatalogDisabledError2 } = await import('../open-library-
|
|
12081
|
-
const { getKnownKinds: getKnownKinds2 } = await import('../open-registry-
|
|
12206
|
+
const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError: LocalCatalogDisabledError2 } = await import('../open-library-OJ4HT2X4.js');
|
|
12207
|
+
const { getKnownKinds: getKnownKinds2 } = await import('../open-registry-LWGIOJDK.js');
|
|
12082
12208
|
const projectDir = path19__default.resolve(opts.projectDir);
|
|
12083
12209
|
if (opts.kind && !getKnownKinds2().has(opts.kind)) {
|
|
12084
12210
|
logErr(
|
|
@@ -12136,8 +12262,8 @@ function makeStoreCommand() {
|
|
|
12136
12262
|
}
|
|
12137
12263
|
});
|
|
12138
12264
|
store.command("show <ref>").description("Show a store asset's details + provenance (source, files, integrity)").option("-C, --project-dir <dir>", "Project directory (catalog config overlay)", process.cwd()).action(async (ref, opts) => {
|
|
12139
|
-
const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError: LocalCatalogDisabledError2 } = await import('../open-library-
|
|
12140
|
-
const { supportsInstallManifest: supportsInstallManifest2 } = await import('../project-
|
|
12265
|
+
const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError: LocalCatalogDisabledError2 } = await import('../open-library-OJ4HT2X4.js');
|
|
12266
|
+
const { supportsInstallManifest: supportsInstallManifest2 } = await import('../project-UQFCYHYS.js');
|
|
12141
12267
|
try {
|
|
12142
12268
|
parseAssetRef(ref);
|
|
12143
12269
|
} catch (e) {
|
|
@@ -12364,6 +12490,7 @@ function makeUpdateCommand() {
|
|
|
12364
12490
|
}
|
|
12365
12491
|
}
|
|
12366
12492
|
if (opts.catalogOnly) return;
|
|
12493
|
+
let sourceFailed = false;
|
|
12367
12494
|
if (await shouldSyncSources(opts)) {
|
|
12368
12495
|
const syncSpinner = createSpinner();
|
|
12369
12496
|
syncSpinner.start("Syncing sources");
|
|
@@ -12371,13 +12498,25 @@ function makeUpdateCommand() {
|
|
|
12371
12498
|
syncSpinner.stop(
|
|
12372
12499
|
total === 0 ? "No sources to sync." : `Synced ${S.heading(`${synced}/${total}`)} source(s)` + (failed2 ? ` (${failed2} failed)` : "")
|
|
12373
12500
|
);
|
|
12374
|
-
if (failed2 > 0)
|
|
12501
|
+
if (failed2 > 0) {
|
|
12502
|
+
process.exitCode = 1;
|
|
12503
|
+
sourceFailed = true;
|
|
12504
|
+
}
|
|
12375
12505
|
} else {
|
|
12376
12506
|
for (const slug of divergedSourceClones(projectDir)) {
|
|
12377
12507
|
logErr(`${slug}: git pull failed: Not possible to fast-forward, aborting.`);
|
|
12378
12508
|
process.exitCode = 1;
|
|
12379
12509
|
}
|
|
12380
12510
|
}
|
|
12511
|
+
if (sourceFailed) {
|
|
12512
|
+
const skipped = createSpinner();
|
|
12513
|
+
skipped.start("Re-deploying assets");
|
|
12514
|
+
skipped.stop("Failed");
|
|
12515
|
+
logErr(
|
|
12516
|
+
"Nothing was updated: a source could not be synced, so skaile.lock.yaml is unchanged. Fix the source, then run `skaile update` again."
|
|
12517
|
+
);
|
|
12518
|
+
return;
|
|
12519
|
+
}
|
|
12381
12520
|
if (target) {
|
|
12382
12521
|
await updateOne(am2, projectDir, target, opts.force);
|
|
12383
12522
|
return;
|
|
@@ -12568,6 +12707,14 @@ function makeVerifyCommand() {
|
|
|
12568
12707
|
logInfo("No skaile.lock.yaml found \u2014 nothing to verify");
|
|
12569
12708
|
return;
|
|
12570
12709
|
}
|
|
12710
|
+
try {
|
|
12711
|
+
readLock(lockPath);
|
|
12712
|
+
} catch (err) {
|
|
12713
|
+
if (err instanceof LockParseError) {
|
|
12714
|
+
logErr(err.message);
|
|
12715
|
+
process.exit(1);
|
|
12716
|
+
}
|
|
12717
|
+
}
|
|
12571
12718
|
const yaml = await import('yaml');
|
|
12572
12719
|
const lockContent = readFileSync(lockPath, "utf-8");
|
|
12573
12720
|
const lock = yaml.parse(lockContent);
|
|
@@ -12901,9 +13048,8 @@ Libraries (your authoring workspaces):
|
|
|
12901
13048
|
|
|
12902
13049
|
Store (manifest catalog + auth):
|
|
12903
13050
|
store login / logout / whoami / yank Auth + admin
|
|
12904
|
-
store
|
|
12905
|
-
store
|
|
12906
|
-
store sync / push Local-store sync (stub)
|
|
13051
|
+
store search / show Search the catalog, show one asset
|
|
13052
|
+
store mode/favourite/unfavourite/sync/push Not yet wired
|
|
12907
13053
|
|
|
12908
13054
|
Catalog (debug):
|
|
12909
13055
|
catalog test / show Probe a catalog endpoint, print resolved config
|
|
@@ -12996,7 +13142,6 @@ function buildInitWorkspaceConfig(projectName, harness) {
|
|
|
12996
13142
|
description: `${projectName} AI skill dependencies`,
|
|
12997
13143
|
"agent-config": {
|
|
12998
13144
|
default: {
|
|
12999
|
-
agent: harness,
|
|
13000
13145
|
// model is omitted unless a harness fixes it (none do today).
|
|
13001
13146
|
...harnessDefaults.model ? { model: harnessDefaults.model } : {},
|
|
13002
13147
|
harness: harnessDefaults.harness,
|
|
@@ -13082,7 +13227,7 @@ async function bootstrapUserConfig() {
|
|
|
13082
13227
|
}
|
|
13083
13228
|
async function hydrateInitSources(resolved, created) {
|
|
13084
13229
|
try {
|
|
13085
|
-
const { ensureSourcesCloned } = await import('../ensure-sources-
|
|
13230
|
+
const { ensureSourcesCloned } = await import('../ensure-sources-CAMWJTMR.js');
|
|
13086
13231
|
const hydrate = ensureSourcesCloned(resolved, { quiet: true });
|
|
13087
13232
|
for (const n of hydrate.cloned) created.push(`~/.skaile/cache/sources/${n}/`);
|
|
13088
13233
|
if (hydrate.failed.length > 0) {
|
|
@@ -13123,7 +13268,7 @@ function printInitSummary(resolved, projectDir, created) {
|
|
|
13123
13268
|
}
|
|
13124
13269
|
program.hook("preAction", (_program, actionCommand) => setActiveCommand(actionCommand));
|
|
13125
13270
|
program.command("setup").description("Interactive provider setup wizard").action(async () => {
|
|
13126
|
-
const { cmdSetup } = await import('../setup-
|
|
13271
|
+
const { cmdSetup } = await import('../setup-4JV2IMCB.js');
|
|
13127
13272
|
await cmdSetup([], { projectDir: process.cwd() });
|
|
13128
13273
|
});
|
|
13129
13274
|
program.addCommand(makeInstallCommand());
|
|
@@ -13204,7 +13349,7 @@ program.hook("postAction", async (_thisCommand, actionCommand) => {
|
|
|
13204
13349
|
const opts = actionCommand.opts();
|
|
13205
13350
|
if (opts.global || opts.dryRun) return;
|
|
13206
13351
|
const projectDir = path19__default.resolve(opts.projectDir ?? process.cwd());
|
|
13207
|
-
const { refreshPluginSkills } = await import('../claude-code-
|
|
13352
|
+
const { refreshPluginSkills } = await import('../claude-code-LZH7Y4Y5.js');
|
|
13208
13353
|
try {
|
|
13209
13354
|
if (await refreshPluginSkills(projectDir)) {
|
|
13210
13355
|
logInfo(`Updated ${S.cmd(".claude/plugins/skaile/skills")} (the --full plugin copy)`);
|
|
@@ -13222,9 +13367,10 @@ process.once("beforeExit", () => {
|
|
|
13222
13367
|
logErr("The command ended before it finished (nothing left to wait for).");
|
|
13223
13368
|
process.exit(1);
|
|
13224
13369
|
});
|
|
13225
|
-
setLibraryAssetCheck(
|
|
13226
|
-
(
|
|
13227
|
-
)
|
|
13370
|
+
setLibraryAssetCheck((asset, libraryPath) => [
|
|
13371
|
+
...manifestEntryFilesRefusals(libraryPath, asset.kind, asset.name),
|
|
13372
|
+
...libraryAssetRefusals(asset, libraryPath, getKindRegistry())
|
|
13373
|
+
]);
|
|
13228
13374
|
setRenamedEntryLookup(manifestEntryRenames);
|
|
13229
13375
|
setWalkTruncationSink((info, root) => {
|
|
13230
13376
|
const where = path19__default.basename(root);
|
|
@@ -13245,7 +13391,7 @@ try {
|
|
|
13245
13391
|
process.exit(1);
|
|
13246
13392
|
}
|
|
13247
13393
|
const { LibrarySyncError } = await import('../library/index.js');
|
|
13248
|
-
if (!(err instanceof LibrarySyncError || err instanceof LibraryEntryError || err instanceof SourceEntryError || err instanceof LegacyKeyError || err instanceof ConfigParseError))
|
|
13394
|
+
if (!(err instanceof LibrarySyncError || err instanceof LibraryEntryError || err instanceof SourceEntryError || err instanceof LegacyKeyError || err instanceof ConfigParseError || err instanceof LockParseError))
|
|
13249
13395
|
throw err;
|
|
13250
13396
|
logErr(err.message);
|
|
13251
13397
|
process.exit(1);
|