@skaile/workspaces 6.3.0 → 6.5.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 +72 -1
- package/README.md +4 -0
- package/dist/ai-sdk.js +74 -32
- package/dist/ai-sdk.js.map +1 -1
- package/dist/app-sdk/index.js +1 -1
- package/dist/{asset-feeds-3YO2352Y.js → asset-feeds-4I6Z4OI3.js} +21 -21
- package/dist/{asset-feeds-3YO2352Y.js.map → asset-feeds-4I6Z4OI3.js.map} +1 -1
- package/dist/asset-manager/catalog-deployer.js +7 -7
- package/dist/asset-manager/index.js +13 -13
- package/dist/asset-manager/installer.js +9 -9
- package/dist/asset-manager/renderers.js +8 -8
- package/dist/asset-manager/src/index.d.ts +156 -27
- package/dist/asset-manager/src/index.d.ts.map +1 -1
- package/dist/asset-manager/src/install-instances.d.ts +2 -0
- package/dist/asset-manager/src/install-instances.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 +23 -18
- package/dist/bridge/harnesses/claude-sdk.js.map +1 -1
- package/dist/bridge/harnesses/codex.js +36 -34
- package/dist/bridge/harnesses/codex.js.map +1 -1
- package/dist/bridge/harnesses/continue.js +11 -12
- package/dist/bridge/harnesses/continue.js.map +1 -1
- package/dist/bridge/harnesses/echo.js +4 -5
- package/dist/bridge/harnesses/echo.js.map +1 -1
- package/dist/bridge/harnesses/gemini.js +8 -9
- package/dist/bridge/harnesses/goose.js +11 -12
- package/dist/bridge/harnesses/goose.js.map +1 -1
- package/dist/bridge/harnesses/omp.js +16 -11
- package/dist/bridge/harnesses/omp.js.map +1 -1
- package/dist/bridge/harnesses/opencode.js +11 -12
- package/dist/bridge/harnesses/opencode.js.map +1 -1
- package/dist/bridge/harnesses/qwen.js +8 -9
- package/dist/bridge/harnesses/qwen.js.map +1 -1
- package/dist/bridge/index.js +19 -20
- package/dist/bridge/src/ai-sdk.d.ts +5 -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/harness-model-check.d.ts +11 -7
- package/dist/bridge/src/harness-model-check.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-XEVFSDIF.js → chunk-22ZX33H6.js} +6 -6
- package/dist/{chunk-XEVFSDIF.js.map → chunk-22ZX33H6.js.map} +1 -1
- package/dist/{chunk-KPKGWXUJ.js → chunk-23SG4JRV.js} +4 -4
- package/dist/{chunk-KPKGWXUJ.js.map → chunk-23SG4JRV.js.map} +1 -1
- package/dist/{chunk-MYXFR27L.js → chunk-2HS357RA.js} +77 -37
- package/dist/chunk-2HS357RA.js.map +1 -0
- package/dist/{chunk-7TSNR5H5.js → chunk-2IAWVUW3.js} +4 -4
- package/dist/{chunk-7TSNR5H5.js.map → chunk-2IAWVUW3.js.map} +1 -1
- package/dist/{chunk-6GWSDPBP.js → chunk-2M3VLKT2.js} +3 -3
- package/dist/{chunk-6GWSDPBP.js.map → chunk-2M3VLKT2.js.map} +1 -1
- package/dist/{chunk-PNUM7GUY.js → chunk-3DA74PLW.js} +3 -3
- package/dist/{chunk-PNUM7GUY.js.map → chunk-3DA74PLW.js.map} +1 -1
- package/dist/{chunk-7RH6E332.js → chunk-3KSLUVKB.js} +7 -7
- package/dist/{chunk-7RH6E332.js.map → chunk-3KSLUVKB.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-32FYVSSW.js → chunk-6EKQENAP.js} +6 -6
- package/dist/{chunk-32FYVSSW.js.map → chunk-6EKQENAP.js.map} +1 -1
- package/dist/{chunk-QK7AG5AV.js → chunk-6Y3SC7O4.js} +4 -4
- package/dist/{chunk-QK7AG5AV.js.map → chunk-6Y3SC7O4.js.map} +1 -1
- package/dist/{chunk-ROVZCGTN.js → chunk-7EMS2GZO.js} +40 -37
- package/dist/chunk-7EMS2GZO.js.map +1 -0
- package/dist/{chunk-COUJOTAJ.js → chunk-7H4GTP7V.js} +3 -3
- package/dist/{chunk-COUJOTAJ.js.map → chunk-7H4GTP7V.js.map} +1 -1
- package/dist/{chunk-VUWRGMT6.js → chunk-AFTZNR2W.js} +3 -3
- package/dist/{chunk-VUWRGMT6.js.map → chunk-AFTZNR2W.js.map} +1 -1
- package/dist/{chunk-JMIKGAUA.js → chunk-AVFRFGM2.js} +16 -6
- package/dist/chunk-AVFRFGM2.js.map +1 -0
- package/dist/{chunk-7MV3NHPT.js → chunk-B436SG5P.js} +42 -25
- package/dist/chunk-B436SG5P.js.map +1 -0
- package/dist/{chunk-ZEH4WFEG.js → chunk-B4BLJUYN.js} +69 -26
- package/dist/chunk-B4BLJUYN.js.map +1 -0
- package/dist/{chunk-LEJQAX7G.js → chunk-DNXPXJ3X.js} +82 -50
- package/dist/chunk-DNXPXJ3X.js.map +1 -0
- package/dist/{chunk-HDVLBEEX.js → chunk-E6UWI3TP.js} +3 -3
- package/dist/{chunk-HDVLBEEX.js.map → chunk-E6UWI3TP.js.map} +1 -1
- package/dist/{chunk-2TFKXSB5.js → chunk-EN5REMWV.js} +4 -4
- package/dist/{chunk-2TFKXSB5.js.map → chunk-EN5REMWV.js.map} +1 -1
- package/dist/{chunk-QFFMFZIR.js → chunk-EO7KGX6P.js} +4 -4
- package/dist/{chunk-QFFMFZIR.js.map → chunk-EO7KGX6P.js.map} +1 -1
- package/dist/{chunk-KIPCBIFJ.js → chunk-ETF6Q3R3.js} +23 -80
- package/dist/chunk-ETF6Q3R3.js.map +1 -0
- package/dist/{chunk-6WH2WE4B.js → chunk-G4NCSYWR.js} +9 -8
- package/dist/chunk-G4NCSYWR.js.map +1 -0
- package/dist/{chunk-JCPD4QRM.js → chunk-G5SYFFMD.js} +2 -2
- package/dist/{chunk-JCPD4QRM.js.map → chunk-G5SYFFMD.js.map} +1 -1
- package/dist/{chunk-Q7CU5GQO.js → chunk-HPA3RP5E.js} +4 -4
- package/dist/{chunk-Q7CU5GQO.js.map → chunk-HPA3RP5E.js.map} +1 -1
- package/dist/{chunk-KGHYXXXV.js → chunk-IS3NIZBX.js} +588 -133
- package/dist/chunk-IS3NIZBX.js.map +1 -0
- package/dist/{chunk-XBQTXGY4.js → chunk-IWKKTCXY.js} +98 -17
- package/dist/chunk-IWKKTCXY.js.map +1 -0
- package/dist/{chunk-HH2H2ZV7.js → chunk-J5JWLKLB.js} +35 -20
- package/dist/chunk-J5JWLKLB.js.map +1 -0
- package/dist/chunk-J6YPKMMY.js +83 -0
- package/dist/chunk-J6YPKMMY.js.map +1 -0
- package/dist/{chunk-TGV2EWGL.js → chunk-K4DHYTUM.js} +4 -4
- package/dist/{chunk-TGV2EWGL.js.map → chunk-K4DHYTUM.js.map} +1 -1
- package/dist/{chunk-72NT2TJU.js → chunk-KA2GLAPS.js} +7 -8
- package/dist/chunk-KA2GLAPS.js.map +1 -0
- package/dist/{chunk-VUJXZDCY.js → chunk-KSH5CFQS.js} +3 -3
- package/dist/{chunk-VUJXZDCY.js.map → chunk-KSH5CFQS.js.map} +1 -1
- package/dist/{chunk-BIRW3HOG.js → chunk-KSUT5KAE.js} +3 -3
- package/dist/{chunk-BIRW3HOG.js.map → chunk-KSUT5KAE.js.map} +1 -1
- package/dist/{chunk-AMJ6KEV7.js → chunk-KUADKMNX.js} +4 -4
- package/dist/{chunk-AMJ6KEV7.js.map → chunk-KUADKMNX.js.map} +1 -1
- package/dist/{chunk-TSTRH4SM.js → chunk-KYNCY3F3.js} +3 -3
- package/dist/{chunk-TSTRH4SM.js.map → chunk-KYNCY3F3.js.map} +1 -1
- package/dist/{chunk-V5BPDB4J.js → chunk-LE6QS4PG.js} +3 -3
- package/dist/{chunk-V5BPDB4J.js.map → chunk-LE6QS4PG.js.map} +1 -1
- package/dist/{chunk-6UP2EDFN.js → chunk-NSIOBKDX.js} +313 -4
- package/dist/chunk-NSIOBKDX.js.map +1 -0
- package/dist/{chunk-MD3FUZS3.js → chunk-OBZ5WQ32.js} +3 -3
- package/dist/{chunk-MD3FUZS3.js.map → chunk-OBZ5WQ32.js.map} +1 -1
- package/dist/{chunk-ELSGFI3I.js → chunk-OLHHN3NO.js} +31 -7
- package/dist/chunk-OLHHN3NO.js.map +1 -0
- package/dist/{chunk-JGH7NB47.js → chunk-S7DVT2BV.js} +4 -4
- package/dist/{chunk-JGH7NB47.js.map → chunk-S7DVT2BV.js.map} +1 -1
- package/dist/{chunk-PHAMYCZH.js → chunk-SN663FCA.js} +5 -5
- package/dist/{chunk-PHAMYCZH.js.map → chunk-SN663FCA.js.map} +1 -1
- package/dist/{serve-preflight-H2AYMGJ6.js → chunk-SRTWKZP2.js} +30 -61
- package/dist/chunk-SRTWKZP2.js.map +1 -0
- package/dist/{chunk-H622YULS.js → chunk-SZTHSPRC.js} +3 -4
- package/dist/chunk-SZTHSPRC.js.map +1 -0
- package/dist/{chunk-LD6O6QKU.js → chunk-T7HGEMNB.js} +4 -4
- package/dist/{chunk-LD6O6QKU.js.map → chunk-T7HGEMNB.js.map} +1 -1
- package/dist/{chunk-4QRJBY2P.js → chunk-TDPQOR3C.js} +2 -2
- package/dist/{chunk-4QRJBY2P.js.map → chunk-TDPQOR3C.js.map} +1 -1
- package/dist/{chunk-Y3I4KGLX.js → chunk-TGUMN5G7.js} +310 -175
- package/dist/chunk-TGUMN5G7.js.map +1 -0
- package/dist/{chunk-TO5SSMRI.js → chunk-THX5EE3K.js} +67 -19
- package/dist/chunk-THX5EE3K.js.map +1 -0
- package/dist/{chunk-QTLUZUF2.js → chunk-TNQLDEM6.js} +86 -34
- package/dist/chunk-TNQLDEM6.js.map +1 -0
- package/dist/{chunk-EQNIBBB6.js → chunk-TROEC2Z2.js} +34 -20
- package/dist/chunk-TROEC2Z2.js.map +1 -0
- package/dist/{chunk-E5NQRHEB.js → chunk-U6KRTCNA.js} +4 -4
- package/dist/{chunk-E5NQRHEB.js.map → chunk-U6KRTCNA.js.map} +1 -1
- package/dist/{chunk-J5JRGBKK.js → chunk-UMLCKKIA.js} +64 -32
- package/dist/chunk-UMLCKKIA.js.map +1 -0
- package/dist/{chunk-DU26AVK2.js → chunk-USVUS4DJ.js} +8 -8
- package/dist/{chunk-DU26AVK2.js.map → chunk-USVUS4DJ.js.map} +1 -1
- package/dist/{chunk-HGOJEVHY.js → chunk-UZET67SO.js} +4 -4
- package/dist/{chunk-HGOJEVHY.js.map → chunk-UZET67SO.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-76FLBODK.js → chunk-VT6G5AJV.js} +10 -7
- package/dist/chunk-VT6G5AJV.js.map +1 -0
- package/dist/{chunk-URCJIV7T.js → chunk-W5KCAWGN.js} +3 -3
- package/dist/{chunk-URCJIV7T.js.map → chunk-W5KCAWGN.js.map} +1 -1
- package/dist/{chunk-YW4ASEUP.js → chunk-WFLQMAR5.js} +5 -5
- package/dist/{chunk-YW4ASEUP.js.map → chunk-WFLQMAR5.js.map} +1 -1
- package/dist/{chunk-RFQONXET.js → chunk-X44XKBZX.js} +3 -3
- package/dist/{chunk-RFQONXET.js.map → chunk-X44XKBZX.js.map} +1 -1
- package/dist/{chunk-BPTWWKGF.js → chunk-YBEJCQE5.js} +3 -3
- package/dist/{chunk-BPTWWKGF.js.map → chunk-YBEJCQE5.js.map} +1 -1
- package/dist/{chunk-PL52CI4U.js → chunk-YRC2EFOU.js} +4 -4
- package/dist/{chunk-PL52CI4U.js.map → chunk-YRC2EFOU.js.map} +1 -1
- package/dist/{chunk-7QG2WRSN.js → chunk-Z2X7UZEZ.js} +25 -8
- package/dist/chunk-Z2X7UZEZ.js.map +1 -0
- package/dist/{chunk-U3SXCVR7.js → chunk-ZUU2PLA3.js} +4 -4
- package/dist/{chunk-U3SXCVR7.js.map → chunk-ZUU2PLA3.js.map} +1 -1
- package/dist/{claude-code-EUKDGOOO.js → claude-code-JY6CYEG7.js} +4 -4
- package/dist/{claude-code-EUKDGOOO.js.map → claude-code-JY6CYEG7.js.map} +1 -1
- package/dist/cli/index.js +322 -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/preset-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 +13 -4
- package/dist/cli/src/helpers.d.ts.map +1 -1
- package/dist/cli/src/plugin-store/index.d.ts +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 +20 -14
- package/dist/cli/src/plugin-store/spec.d.ts.map +1 -1
- package/dist/cli/src/setup.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 +23 -24
- 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/npm-installer.d.ts +11 -3
- package/dist/connectors/src/npm-installer.d.ts.map +1 -1
- package/dist/connectors-VLFOQNS6.js +49 -0
- package/dist/{connectors-XYPE2DCQ.js.map → connectors-VLFOQNS6.js.map} +1 -1
- package/dist/connectors-shared/index.js +2 -2
- package/dist/core/index.js +6 -6
- 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 +5 -5
- 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/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 +9 -3
- 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 +19 -2
- package/dist/core/src/workspace-config.d.ts.map +1 -1
- package/dist/core/src/workspace-yaml-editor.d.ts.map +1 -1
- package/dist/core/workspace-config.js +4 -4
- package/dist/deploy/index.js +6 -6
- package/dist/discovery/index.js +5 -5
- package/dist/{ensure-sources-IN3VKHUA.js → ensure-sources-6O54DUQB.js} +31 -31
- package/dist/ensure-sources-6O54DUQB.js.map +1 -0
- package/dist/factory-assets/connectors/box.js +23 -24
- package/dist/factory-assets/connectors/deploy.js +23 -24
- package/dist/factory-assets/connectors/devserver.js +23 -24
- package/dist/factory-assets/connectors/flow/adapter.js +23 -24
- package/dist/factory-assets/connectors/flow/engine.js +7 -7
- package/dist/factory-assets/connectors/flow/run-flow.js +25 -26
- package/dist/factory-assets/connectors/flow.js +23 -24
- package/dist/factory-assets/connectors/git.js +23 -24
- package/dist/factory-assets/connectors/gmail.js +23 -24
- package/dist/factory-assets/connectors/googledrive.js +23 -24
- package/dist/factory-assets/connectors/local.js +23 -24
- package/dist/factory-assets/connectors/mattermost.js +23 -24
- package/dist/factory-assets/connectors/memory.js +23 -24
- package/dist/factory-assets/connectors/minio.js +23 -24
- package/dist/factory-assets/connectors/postgres.js +23 -24
- package/dist/factory-assets/connectors/s3.js +23 -24
- package/dist/factory-assets/connectors/sharepoint.js +23 -24
- package/dist/factory-assets/connectors/sqlite.js +23 -24
- package/dist/factory-assets/connectors/static-server.js +23 -24
- package/dist/factory-assets/connectors/tunnel.js +23 -24
- package/dist/factory-assets/connectors/webdav.js +23 -24
- package/dist/factory-assets/connectors/xstate-store.js +23 -24
- package/dist/factory-assets/connectors/xstate.js +23 -24
- package/dist/factory-assets/skills/authoring-skaile-assets/SKILL.md +2 -1
- package/dist/{flows-QAO63TDV.js → flows-CIUPK7SB.js} +11 -11
- package/dist/{flows-QAO63TDV.js.map → flows-CIUPK7SB.js.map} +1 -1
- package/dist/{helpers-HDVGCF3M.js → helpers-YHDQHQEQ.js} +28 -29
- package/dist/{helpers-HDVGCF3M.js.map → helpers-YHDQHQEQ.js.map} +1 -1
- package/dist/library/index.js +10 -10
- 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-62OWCNB5.js → library-publish-MUGUST43.js} +53 -53
- package/dist/{library-publish-62OWCNB5.js.map → library-publish-MUGUST43.js.map} +1 -1
- package/dist/model-endpoint/index.js +9 -10
- package/dist/open-library-BVQCB37E.js +57 -0
- package/dist/{open-library-TZ7OSDEJ.js.map → open-library-BVQCB37E.js.map} +1 -1
- package/dist/{open-registry-RLZKTJG3.js → open-registry-JCSIAKEC.js} +14 -14
- package/dist/{open-registry-RLZKTJG3.js.map → open-registry-JCSIAKEC.js.map} +1 -1
- package/dist/{paths-D6LBQETQ.js → paths-XLKCAFRZ.js} +9 -9
- package/dist/{paths-D6LBQETQ.js.map → paths-XLKCAFRZ.js.map} +1 -1
- package/dist/{plugin-store-A5J4TLCH.js → plugin-store-NGRUTCJI.js} +9 -9
- package/dist/{plugin-store-A5J4TLCH.js.map → plugin-store-NGRUTCJI.js.map} +1 -1
- package/dist/project-BGYMLAS6.js +88 -0
- package/dist/{project-4AVRES3M.js.map → project-BGYMLAS6.js.map} +1 -1
- package/dist/resolver/index.js +7 -7
- package/dist/runner/index.js +38 -39
- package/dist/runner/src/capability-roundtrip.d.ts +4 -1
- package/dist/runner/src/capability-roundtrip.d.ts.map +1 -1
- 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/resources.d.ts.map +1 -1
- package/dist/runner/src/serve.d.ts.map +1 -1
- package/dist/sdk/asset-manager.js +13 -13
- package/dist/sdk/bridge.js +19 -20
- package/dist/sdk/core.js +6 -6
- package/dist/sdk/flow.js +7 -7
- package/dist/sdk/index.js +38 -39
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/resolver.js +7 -7
- package/dist/sdk/runner.js +38 -39
- package/dist/sdk/session.js +2 -2
- package/dist/sdk/transport/ws/server.js +7 -7
- package/dist/sdk/transport/ws.js +7 -7
- package/dist/sdk/transport.js +7 -7
- package/dist/sdk/types.js +1 -1
- package/dist/serve-preflight-GQY5DZX6.js +56 -0
- package/dist/serve-preflight-GQY5DZX6.js.map +1 -0
- package/dist/session/index.js +2 -2
- package/dist/{setup-NSPQD4V4.js → setup-2NWSKSCO.js} +34 -32
- package/dist/setup-2NWSKSCO.js.map +1 -0
- package/dist/{skills-B533SRVZ.js → skills-PXZOL2FZ.js} +12 -12
- package/dist/{skills-B533SRVZ.js.map → skills-PXZOL2FZ.js.map} +1 -1
- package/dist/source-XA3L4H6I.js +86 -0
- package/dist/{source-VTECABUO.js.map → source-XA3L4H6I.js.map} +1 -1
- package/dist/{source-manifest-publish-YORI42MN.js → source-manifest-publish-QEGMTS33.js} +50 -51
- package/dist/source-manifest-publish-QEGMTS33.js.map +1 -0
- package/dist/transport/index.js +7 -7
- package/dist/transport/ws/server.js +7 -7
- package/dist/transport/ws.js +7 -7
- package/dist/tui/index.js +38 -39
- 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/capabilities.d.ts +9 -1
- package/dist/types/src/capabilities.d.ts.map +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 +30 -31
- package/dist/workspace-plugin/adapters/omp.js +14 -14
- package/dist/workspace-plugin/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-6OHZUUR7.js.map +0 -1
- package/dist/chunk-6UP2EDFN.js.map +0 -1
- package/dist/chunk-6WH2WE4B.js.map +0 -1
- package/dist/chunk-72NT2TJU.js.map +0 -1
- package/dist/chunk-76FLBODK.js.map +0 -1
- package/dist/chunk-7MV3NHPT.js.map +0 -1
- package/dist/chunk-7QG2WRSN.js.map +0 -1
- package/dist/chunk-ELSGFI3I.js.map +0 -1
- package/dist/chunk-EQNIBBB6.js.map +0 -1
- package/dist/chunk-H622YULS.js.map +0 -1
- package/dist/chunk-HH2H2ZV7.js.map +0 -1
- package/dist/chunk-J5JRGBKK.js.map +0 -1
- package/dist/chunk-JMIKGAUA.js.map +0 -1
- package/dist/chunk-KGHYXXXV.js.map +0 -1
- package/dist/chunk-KIPCBIFJ.js.map +0 -1
- package/dist/chunk-LEJQAX7G.js.map +0 -1
- package/dist/chunk-MYXFR27L.js.map +0 -1
- package/dist/chunk-QTLUZUF2.js.map +0 -1
- package/dist/chunk-ROVZCGTN.js.map +0 -1
- package/dist/chunk-S6KZHPR4.js +0 -315
- package/dist/chunk-S6KZHPR4.js.map +0 -1
- package/dist/chunk-TO5SSMRI.js.map +0 -1
- package/dist/chunk-XBQTXGY4.js.map +0 -1
- package/dist/chunk-Y3I4KGLX.js.map +0 -1
- package/dist/chunk-ZEH4WFEG.js.map +0 -1
- package/dist/connectors-XYPE2DCQ.js +0 -50
- package/dist/ensure-sources-IN3VKHUA.js.map +0 -1
- package/dist/open-library-TZ7OSDEJ.js +0 -58
- package/dist/project-4AVRES3M.js +0 -88
- package/dist/serve-preflight-H2AYMGJ6.js.map +0 -1
- package/dist/setup-NSPQD4V4.js.map +0 -1
- package/dist/source-VTECABUO.js +0 -87
- package/dist/source-manifest-publish-YORI42MN.js.map +0 -1
package/dist/cli/index.js
CHANGED
|
@@ -1,94 +1,95 @@
|
|
|
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-LE6QS4PG.js';
|
|
3
|
+
import { makeValidateCommand, scanIdentities } from '../chunk-TROEC2Z2.js';
|
|
4
|
+
import { storeNotInstallableReason, mcpNotRunnableHere } from '../chunk-K4DHYTUM.js';
|
|
5
|
+
import { checkHarnessSdk } from '../chunk-SRTWKZP2.js';
|
|
6
|
+
import { makeProvidersCommand, loadRegistryView, addProviderEntry, ProviderRegistryWriteError, removeProviderEntry } from '../chunk-6EKQENAP.js';
|
|
7
|
+
import { makeInstallCommand, makeCheckCommand, makeCleanCommand, pinComposedAgents, reportRewritten, reportReplaced, reportRelocked, reportMoved, reportStoreNotChecked, globalProblems, editedConventionFiles, supportsInstallManifest, runYamlInstall, REF_HINT, reportInstalledSoftDeps } from '../chunk-J5JWLKLB.js';
|
|
8
|
+
import { reportUnknownHarnesses, reportProjectConfig, agentInstanceErrorLines } from '../chunk-J6YPKMMY.js';
|
|
9
|
+
import { isRecord } from '../chunk-ETF6Q3R3.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, 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-THX5EE3K.js';
|
|
12
|
+
import { getStoreConfig, storeFetch, isStoreAuthenticated, getStoreToken } from '../chunk-KUADKMNX.js';
|
|
13
|
+
import { makeSourceCommand, syncProjectSources, divergedSourceClones } from '../chunk-DNXPXJ3X.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-7EMS2GZO.js';
|
|
15
|
+
import { openCatalogSource, LocalCatalogDisabledError, openLibraryManager, openLibrary } from '../chunk-YRC2EFOU.js';
|
|
16
|
+
import { getKindRegistry, getKnownKinds } from '../chunk-WFLQMAR5.js';
|
|
17
|
+
import { AI_RESOURCES } from '../chunk-UZET67SO.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-Z2X7UZEZ.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-TNQLDEM6.js';
|
|
21
|
+
import '../chunk-TDPQOR3C.js';
|
|
22
|
+
import '../chunk-3KSLUVKB.js';
|
|
23
|
+
import '../chunk-OBZ5WQ32.js';
|
|
24
|
+
import '../chunk-YBEJCQE5.js';
|
|
23
25
|
import '../chunk-WYZXSJBK.js';
|
|
24
|
-
import '../chunk-
|
|
25
|
-
import '../chunk-
|
|
26
|
+
import '../chunk-6Y3SC7O4.js';
|
|
27
|
+
import '../chunk-KYNCY3F3.js';
|
|
26
28
|
import '../chunk-KW37WNXY.js';
|
|
27
29
|
import '../chunk-3MWQKQUB.js';
|
|
28
|
-
import '../chunk-
|
|
30
|
+
import '../chunk-SN663FCA.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-7H4GTP7V.js';
|
|
33
35
|
import '../chunk-32NA4TVC.js';
|
|
34
36
|
import '../chunk-W3UDISS2.js';
|
|
35
37
|
import '../chunk-HTGTNN2B.js';
|
|
36
|
-
import { runFlow, resumeFlow } from '../chunk-
|
|
38
|
+
import { runFlow, resumeFlow } from '../chunk-USVUS4DJ.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-W5KCAWGN.js';
|
|
41
|
+
import '../chunk-3DA74PLW.js';
|
|
42
|
+
import '../chunk-B4BLJUYN.js';
|
|
43
|
+
import '../chunk-2M3VLKT2.js';
|
|
44
|
+
import '../chunk-2IAWVUW3.js';
|
|
45
|
+
import { checkHarnessModel, checkModelProvider } from '../chunk-B436SG5P.js';
|
|
46
|
+
import '../chunk-S7DVT2BV.js';
|
|
47
|
+
import '../chunk-EN5REMWV.js';
|
|
48
|
+
import '../chunk-OLHHN3NO.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-ZUU2PLA3.js';
|
|
52
|
+
import '../chunk-5DE3DGVR.js';
|
|
52
53
|
import '../chunk-7DN6JKP2.js';
|
|
53
|
-
import '../chunk-
|
|
54
|
-
import
|
|
54
|
+
import '../chunk-E6UWI3TP.js';
|
|
55
|
+
import '../chunk-EO7KGX6P.js';
|
|
56
|
+
import '../chunk-SZTHSPRC.js';
|
|
57
|
+
import { listHarnesses, getProviderPreset, AI_PROVIDER_PRESETS } from '../chunk-NSIOBKDX.js';
|
|
55
58
|
import '../chunk-G5SUWZEU.js';
|
|
56
|
-
import '../chunk-QFFMFZIR.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-X44XKBZX.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-IS3NIZBX.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-TGUMN5G7.js';
|
|
66
|
+
import { flowFileNameError, SEMVER_RE } from '../chunk-22ZX33H6.js';
|
|
67
|
+
import '../chunk-U6KRTCNA.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-2HS357RA.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-T7HGEMNB.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-UMLCKKIA.js';
|
|
80
81
|
import '../chunk-4GY63JU6.js';
|
|
81
|
-
import { factoryAssetRoots } from '../chunk-
|
|
82
|
+
import { factoryAssetRoots } from '../chunk-G4NCSYWR.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, resolveSkWorkspaceConfig, sourceCacheKey, getGlobalCacheDir, resolveAgentDir, AgentRefResolutionError, resolveAgentDefinitionDir, effectiveAgentInstances, matchPin, coerceVersion, loadSkWorkspaceConfig, 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-IWKKTCXY.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-23SG4JRV.js';
|
|
90
|
+
import { setWalkTruncationSink, dedupeRequirements, parseFrontmatter, scanDirectory, parseRequires } from '../chunk-AVFRFGM2.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
95
|
import { openSqlite } from '../chunk-DKXNKFKP.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-BVQCB37E.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-XA3L4H6I.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-XA3L4H6I.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-BVQCB37E.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-BVQCB37E.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-BVQCB37E.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-BVQCB37E.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-JCSIAKEC.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-NGRUTCJI.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-MUGUST43.js');
|
|
4669
4736
|
if (!isGithubRemote(url)) logWarn(notGithubRemoteMessage(name, url));
|
|
4670
4737
|
}
|
|
4671
4738
|
function scaffoldLibraryFiles(dir, name) {
|
|
@@ -4885,7 +4952,14 @@ function makeLibraryCommand() {
|
|
|
4885
4952
|
stampManifestPublisher(lib.path, resolved.publisher);
|
|
4886
4953
|
warnManifestNeedsCommit(lib.path, name);
|
|
4887
4954
|
}
|
|
4888
|
-
|
|
4955
|
+
let toIndex = lib;
|
|
4956
|
+
if (ownership !== "owner" && resolved.source !== "manifest" && backendConfig) {
|
|
4957
|
+
await manager.updateLibrary(name, {
|
|
4958
|
+
backendConfig: { ...backendConfig, publisher: resolved.publisher }
|
|
4959
|
+
});
|
|
4960
|
+
toIndex = await manager.requireLibrary(name);
|
|
4961
|
+
}
|
|
4962
|
+
const res = await indexLibrary(toIndex, library);
|
|
4889
4963
|
for (const e of res.errors) logWarn(e);
|
|
4890
4964
|
logOk(`Indexed ${res.assetsUpdated} asset(s) from ${name}.`);
|
|
4891
4965
|
warnUnlistedAssets(unlisted, name);
|
|
@@ -5060,7 +5134,7 @@ function makeLibraryCommand() {
|
|
|
5060
5134
|
logErr("No default library set. Run `skaile library default <name>` or pass --library.");
|
|
5061
5135
|
process.exit(1);
|
|
5062
5136
|
}
|
|
5063
|
-
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) => {
|
|
5064
5138
|
const { manager, close } = await openLibraryManager();
|
|
5065
5139
|
try {
|
|
5066
5140
|
const lib = await manager.requireLibrary(name);
|
|
@@ -5069,6 +5143,17 @@ function makeLibraryCommand() {
|
|
|
5069
5143
|
process.exitCode = 1;
|
|
5070
5144
|
return;
|
|
5071
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
|
+
}
|
|
5072
5157
|
const updated = await manager.setDefault(name);
|
|
5073
5158
|
logOk(`Default \u2192 ${updated.name}`);
|
|
5074
5159
|
} finally {
|
|
@@ -5398,16 +5483,16 @@ function makeLibraryCommand() {
|
|
|
5398
5483
|
"With --create-repo: create the repo private (the store only accepts public repos)"
|
|
5399
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(
|
|
5400
5485
|
async (lib, opts) => {
|
|
5401
|
-
const { runLibraryPublish } = await import('../library-publish-
|
|
5486
|
+
const { runLibraryPublish } = await import('../library-publish-MUGUST43.js');
|
|
5402
5487
|
await withStoreErrorHandling(() => runLibraryPublish(lib, opts));
|
|
5403
5488
|
}
|
|
5404
5489
|
);
|
|
5405
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) => {
|
|
5406
|
-
const { runLibraryRegister } = await import('../library-publish-
|
|
5491
|
+
const { runLibraryRegister } = await import('../library-publish-MUGUST43.js');
|
|
5407
5492
|
await withStoreErrorHandling(() => runLibraryRegister(lib, opts));
|
|
5408
5493
|
});
|
|
5409
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) => {
|
|
5410
|
-
const { runLibraryYank } = await import('../library-publish-
|
|
5495
|
+
const { runLibraryYank } = await import('../library-publish-MUGUST43.js');
|
|
5411
5496
|
await withStoreErrorHandling(() => runLibraryYank(lib, opts));
|
|
5412
5497
|
});
|
|
5413
5498
|
return cmd;
|
|
@@ -6067,7 +6152,7 @@ function scheduleSoftDepPreview() {
|
|
|
6067
6152
|
}
|
|
6068
6153
|
async function loadAssets() {
|
|
6069
6154
|
softDepPreviewCache.clear();
|
|
6070
|
-
const { gatherAssetFeeds } = await import('../asset-feeds-
|
|
6155
|
+
const { gatherAssetFeeds } = await import('../asset-feeds-4I6Z4OI3.js');
|
|
6071
6156
|
const { entries, notes } = await gatherAssetFeeds(am, am.projectDir);
|
|
6072
6157
|
if (notes.length > 0) {
|
|
6073
6158
|
state.message = notes.map((n) => `[${n.feed}] ${n.message}`).join(" \u2022 ");
|
|
@@ -6271,7 +6356,7 @@ function reconcileCollapsedSets(rows) {
|
|
|
6271
6356
|
async function loadSourcesAndLibraries() {
|
|
6272
6357
|
try {
|
|
6273
6358
|
const [{ openLibraryManager: openLibraryManager2 }, { getGlobalCacheDir: getGlobalCacheDir2, globalSkaileDir: globalSkaileDir2 }] = await Promise.all([
|
|
6274
|
-
import('../open-library-
|
|
6359
|
+
import('../open-library-BVQCB37E.js'),
|
|
6275
6360
|
import('../core/index.js')
|
|
6276
6361
|
]);
|
|
6277
6362
|
const { manager, library, close } = await openLibraryManager2();
|
|
@@ -7456,9 +7541,9 @@ function changeLabel(change, base) {
|
|
|
7456
7541
|
return `move ${rel(change.from)} \u2192 ${rel(change.to)}`;
|
|
7457
7542
|
}
|
|
7458
7543
|
}
|
|
7459
|
-
function resolveMode(opts
|
|
7544
|
+
function resolveMode(opts) {
|
|
7460
7545
|
if (opts.write && opts.dryRun) {
|
|
7461
|
-
logErr(
|
|
7546
|
+
logErr("--write and --dry-run are mutually exclusive.");
|
|
7462
7547
|
process.exit(1);
|
|
7463
7548
|
}
|
|
7464
7549
|
return opts.write === true;
|
|
@@ -7469,7 +7554,7 @@ function printChanges(changes, base) {
|
|
|
7469
7554
|
console.log(colorizeDiff(renderChange(change, base)).trimEnd());
|
|
7470
7555
|
}
|
|
7471
7556
|
}
|
|
7472
|
-
function finish(changes, write, base
|
|
7557
|
+
function finish(changes, write, base) {
|
|
7473
7558
|
console.log();
|
|
7474
7559
|
if (changes.length === 0) {
|
|
7475
7560
|
logOk("Nothing to migrate.");
|
|
@@ -7477,7 +7562,7 @@ function finish(changes, write, base, writeFlag = "--write") {
|
|
|
7477
7562
|
}
|
|
7478
7563
|
if (!write) {
|
|
7479
7564
|
logInfo(
|
|
7480
|
-
`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.`
|
|
7481
7566
|
);
|
|
7482
7567
|
return;
|
|
7483
7568
|
}
|
|
@@ -8504,10 +8589,22 @@ function planAssetMigration(options) {
|
|
|
8504
8589
|
};
|
|
8505
8590
|
}
|
|
8506
8591
|
var SKAILE_YAML_SUFFIX = ".skaile.yaml";
|
|
8592
|
+
var RETIRED_AGENT_KEY = "agent";
|
|
8507
8593
|
var OLD_KEY = "driver";
|
|
8508
8594
|
var NEW_KEY = "harness";
|
|
8509
8595
|
var AGENT_CONFIG_KEYS = ["agent-config", "agent_config", "agentConfig"];
|
|
8510
|
-
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) {
|
|
8511
8608
|
const oldIdx = map.items.findIndex((p6) => isScalar(p6.key) && p6.key.value === OLD_KEY);
|
|
8512
8609
|
if (oldIdx < 0) return false;
|
|
8513
8610
|
const hasNew = map.items.some((p6) => isScalar(p6.key) && p6.key.value === NEW_KEY);
|
|
@@ -8534,17 +8631,17 @@ function migrateHarnessYaml(text, label = SKAILE_YAML_DEFAULT) {
|
|
|
8534
8631
|
for (const key of AGENT_CONFIG_KEYS) {
|
|
8535
8632
|
const block = root.get(key, true);
|
|
8536
8633
|
if (!isMap(block)) continue;
|
|
8537
|
-
const flat = AGENT_PROFILE_FIELDS.some((f) => {
|
|
8634
|
+
const flat = [...AGENT_PROFILE_FIELDS, RETIRED_AGENT_KEY].some((f) => {
|
|
8538
8635
|
const v = block.get(f, true);
|
|
8539
8636
|
return isScalar(v) && typeof v.value === "string";
|
|
8540
8637
|
});
|
|
8541
8638
|
if (flat) {
|
|
8542
|
-
changed =
|
|
8639
|
+
changed = rewriteProfile(block, `${label}: ${key}`, notes) || changed;
|
|
8543
8640
|
continue;
|
|
8544
8641
|
}
|
|
8545
8642
|
for (const pair of block.items) {
|
|
8546
8643
|
if (!isMap(pair.value) || !isScalar(pair.key)) continue;
|
|
8547
|
-
changed =
|
|
8644
|
+
changed = rewriteProfile(pair.value, `${label}: ${key}.${String(pair.key.value)}`, notes) || changed;
|
|
8548
8645
|
}
|
|
8549
8646
|
}
|
|
8550
8647
|
return { output: changed ? String(doc) : text, notes };
|
|
@@ -8613,29 +8710,33 @@ function planHarnessMigration(opts) {
|
|
|
8613
8710
|
return { changes, notes };
|
|
8614
8711
|
}
|
|
8615
8712
|
function runMigrateHarness(opts) {
|
|
8616
|
-
const apply = resolveMode(
|
|
8617
|
-
{ write: opts.apply === true || opts.write === true, dryRun: opts.dryRun },
|
|
8618
|
-
"--apply"
|
|
8619
|
-
);
|
|
8620
8713
|
const cwd = process.cwd();
|
|
8621
8714
|
const projectDir = path19__default.resolve(opts.projectDir ?? findWorkspaceRoot(cwd) ?? cwd);
|
|
8622
8715
|
const plan = planHarnessMigration({ projectDir });
|
|
8623
8716
|
for (const note of plan.notes) console.log(` ${note}`);
|
|
8624
8717
|
printChanges(plan.changes, projectDir);
|
|
8625
|
-
|
|
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);
|
|
8626
8726
|
}
|
|
8627
8727
|
function addMigrateHarnessCommand(migrate) {
|
|
8628
8728
|
migrate.command("harness").description(
|
|
8629
|
-
"Rename the `driver` key to `harness` in skaile.yaml
|
|
8630
|
-
).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(
|
|
8631
8731
|
"after",
|
|
8632
8732
|
`
|
|
8633
8733
|
Rewrites (the connector/mount \`driver\` of connectors: and mounts: is never touched):
|
|
8634
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)
|
|
8635
8736
|
.skaile/settings.json, ~/.skaile/settings.json driver -> harness
|
|
8636
|
-
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\`.
|
|
8637
8738
|
|
|
8638
|
-
|
|
8739
|
+
Prints a unified diff per file and writes the files. Pass --dry-run to print the diff only.
|
|
8639
8740
|
`
|
|
8640
8741
|
).action((opts) => runMigrateHarness(opts));
|
|
8641
8742
|
}
|
|
@@ -9254,13 +9355,20 @@ function makeOutdatedCommand() {
|
|
|
9254
9355
|
harness: opts.target
|
|
9255
9356
|
});
|
|
9256
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;
|
|
9257
9365
|
if (entries.length === 0) {
|
|
9258
|
-
logInfo("All assets are up to date.");
|
|
9366
|
+
if (unreachable.length === 0) logInfo("All assets are up to date.");
|
|
9259
9367
|
return;
|
|
9260
9368
|
}
|
|
9261
9369
|
const filtered = filter ? entries.filter((e) => matchesOutdatedFilter(e, filter)) : entries;
|
|
9262
9370
|
if (filtered.length === 0) {
|
|
9263
|
-
logInfo(`${filter} is up to date.`);
|
|
9371
|
+
if (unreachable.length === 0) logInfo(`${filter} is up to date.`);
|
|
9264
9372
|
return;
|
|
9265
9373
|
}
|
|
9266
9374
|
const refW = Math.max(4, ...filtered.map((e) => outdatedRef(e).length));
|
|
@@ -9274,16 +9382,8 @@ function makeOutdatedCommand() {
|
|
|
9274
9382
|
);
|
|
9275
9383
|
}
|
|
9276
9384
|
console.log();
|
|
9277
|
-
const needsUpdate = filtered.some(
|
|
9278
|
-
(e) => e.problem === void 0 && !e.pinned && !e.contentChanged
|
|
9279
|
-
);
|
|
9280
|
-
const needsRelock = filtered.some(
|
|
9281
|
-
(e) => e.problem === void 0 && !e.pinned && e.contentChanged
|
|
9282
|
-
);
|
|
9385
|
+
const needsUpdate = filtered.some((e) => e.problem === void 0 && !e.pinned);
|
|
9283
9386
|
if (needsUpdate) logWarn(`Run ${S.cmd("skaile update")} to re-lock and re-deploy.`);
|
|
9284
|
-
if (needsRelock) {
|
|
9285
|
-
logWarn(`Run ${S.cmd("skaile install")} to re-lock the changed library assets.`);
|
|
9286
|
-
}
|
|
9287
9387
|
if (filtered.some((e) => e.problem !== void 0 && !e.manualFix)) {
|
|
9288
9388
|
logWarn(`Run ${S.cmd("skaile install")} to restore or re-lock the broken assets.`);
|
|
9289
9389
|
}
|
|
@@ -9357,13 +9457,14 @@ function action2(fn) {
|
|
|
9357
9457
|
try {
|
|
9358
9458
|
await fn(...args);
|
|
9359
9459
|
} catch (err) {
|
|
9360
|
-
|
|
9460
|
+
const { condensePluginFailure } = await import('../plugin-store-NGRUTCJI.js');
|
|
9461
|
+
logErr(condensePluginFailure(err instanceof Error ? err.message : String(err)));
|
|
9361
9462
|
process.exitCode = 1;
|
|
9362
9463
|
}
|
|
9363
9464
|
};
|
|
9364
9465
|
}
|
|
9365
9466
|
async function reconcileAndReport(projectDir, plugins, opts = {}) {
|
|
9366
|
-
const { reconcilePlugins } = await import('../plugin-store-
|
|
9467
|
+
const { reconcilePlugins } = await import('../plugin-store-NGRUTCJI.js');
|
|
9367
9468
|
if (plugins.length === 0) {
|
|
9368
9469
|
logInfo("No plugins declared \u2014 nothing to reconcile.");
|
|
9369
9470
|
return;
|
|
@@ -9374,11 +9475,14 @@ async function reconcileAndReport(projectDir, plugins, opts = {}) {
|
|
|
9374
9475
|
else logInfo(`Plugin store ${result.reason}.`);
|
|
9375
9476
|
} catch (err) {
|
|
9376
9477
|
if (opts.strict) throw err;
|
|
9377
|
-
|
|
9478
|
+
const { condensePluginFailure } = await import('../plugin-store-NGRUTCJI.js');
|
|
9479
|
+
logWarn(
|
|
9480
|
+
`reconcile skipped: ${condensePluginFailure(err instanceof Error ? err.message : String(err))}`
|
|
9481
|
+
);
|
|
9378
9482
|
}
|
|
9379
9483
|
}
|
|
9380
9484
|
async function verifyPluginLoads(projectDir, spec) {
|
|
9381
|
-
const { loadPlugins } = await import('../plugin-store-
|
|
9485
|
+
const { loadPlugins } = await import('../plugin-store-NGRUTCJI.js');
|
|
9382
9486
|
const { createPluginRegistry } = await import('../plugin-registry/index.js');
|
|
9383
9487
|
const registry = createPluginRegistry();
|
|
9384
9488
|
const result = await loadPlugins(projectDir, [spec], registry);
|
|
@@ -9389,12 +9493,14 @@ async function verifyPluginLoads(projectDir, spec) {
|
|
|
9389
9493
|
);
|
|
9390
9494
|
logOk(`Loaded ${S.cmd(spec)}${contributed.length > 0 ? ` (${contributed.join(", ")})` : ""}`);
|
|
9391
9495
|
}
|
|
9392
|
-
async function runInstall2(
|
|
9496
|
+
async function runInstall2(typedSpec, opts) {
|
|
9497
|
+
const rawSpec = typedSpec.trim();
|
|
9393
9498
|
const projectDir = path19__default.resolve(opts.projectDir);
|
|
9394
9499
|
const { WorkspaceYamlEditor: WorkspaceYamlEditor2 } = await import('../core/index.js');
|
|
9395
|
-
const { specName, rollbackPluginStore, npmSpecError } = await import('../plugin-store-
|
|
9396
|
-
const specError = npmSpecError(
|
|
9500
|
+
const { specName, rollbackPluginStore, npmSpecError, projectRelativeFileSpec } = await import('../plugin-store-NGRUTCJI.js');
|
|
9501
|
+
const specError = npmSpecError(rawSpec);
|
|
9397
9502
|
if (specError) throw new Error(specError);
|
|
9503
|
+
const spec = projectRelativeFileSpec(rawSpec, process.cwd(), projectDir);
|
|
9398
9504
|
const yamlPath = path19__default.join(projectDir, "skaile.yaml");
|
|
9399
9505
|
if (!existsSync(yamlPath)) {
|
|
9400
9506
|
throw new Error(`no skaile.yaml in ${projectDir}; run \`skaile init\` first`);
|
|
@@ -9423,7 +9529,7 @@ async function runInstall2(spec, opts) {
|
|
|
9423
9529
|
async function runRemove(name, opts) {
|
|
9424
9530
|
const projectDir = path19__default.resolve(opts.projectDir);
|
|
9425
9531
|
const { WorkspaceYamlEditor: WorkspaceYamlEditor2 } = await import('../core/index.js');
|
|
9426
|
-
const { specName } = await import('../plugin-store-
|
|
9532
|
+
const { specName } = await import('../plugin-store-NGRUTCJI.js');
|
|
9427
9533
|
const yamlPath = path19__default.join(projectDir, "skaile.yaml");
|
|
9428
9534
|
if (!existsSync(yamlPath)) {
|
|
9429
9535
|
logInfo(`No plugin matching ${S.cmd(name)}: there is no skaile.yaml in ${projectDir}.`);
|
|
@@ -9437,7 +9543,14 @@ async function runRemove(name, opts) {
|
|
|
9437
9543
|
}
|
|
9438
9544
|
editor.save();
|
|
9439
9545
|
logOk(`Removed ${S.cmd(name)} from skaile.yaml plugins`);
|
|
9440
|
-
|
|
9546
|
+
const remaining = editor.getPlugins();
|
|
9547
|
+
if (remaining.length === 0) {
|
|
9548
|
+
const { rollbackPluginStore } = await import('../plugin-store-NGRUTCJI.js');
|
|
9549
|
+
await rollbackPluginStore(projectDir, []);
|
|
9550
|
+
logInfo("No plugins declared; removed .skaile/plugins/.");
|
|
9551
|
+
return;
|
|
9552
|
+
}
|
|
9553
|
+
await reconcileAndReport(projectDir, remaining);
|
|
9441
9554
|
}
|
|
9442
9555
|
async function runList(opts) {
|
|
9443
9556
|
const projectDir = path19__default.resolve(opts.projectDir);
|
|
@@ -9455,7 +9568,7 @@ async function runList(opts) {
|
|
|
9455
9568
|
const registry = createPluginRegistry();
|
|
9456
9569
|
if (declared.length > 0) {
|
|
9457
9570
|
try {
|
|
9458
|
-
const { loadPlugins } = await import('../plugin-store-
|
|
9571
|
+
const { loadPlugins } = await import('../plugin-store-NGRUTCJI.js');
|
|
9459
9572
|
const result = await loadPlugins(projectDir, declared, registry);
|
|
9460
9573
|
for (const f of result.failed) logWarn(f.error);
|
|
9461
9574
|
} catch (err) {
|
|
@@ -9787,6 +9900,11 @@ async function runPresetExport(name, opts) {
|
|
|
9787
9900
|
logInfo("Run this from a project directory or pass --project-dir <path>.");
|
|
9788
9901
|
process.exit(1);
|
|
9789
9902
|
}
|
|
9903
|
+
const parseError = configParseErrorOf(file, "skaile.yaml");
|
|
9904
|
+
if (parseError) {
|
|
9905
|
+
logErr(parseError.message);
|
|
9906
|
+
process.exit(1);
|
|
9907
|
+
}
|
|
9790
9908
|
const presetName = name ?? file.config.name ?? "my-preset";
|
|
9791
9909
|
let lock = null;
|
|
9792
9910
|
try {
|
|
@@ -10589,6 +10707,13 @@ function makeRunCommand() {
|
|
|
10589
10707
|
logErr(providerRefusal);
|
|
10590
10708
|
process.exit(1);
|
|
10591
10709
|
}
|
|
10710
|
+
if (dryRun) {
|
|
10711
|
+
const sdkProblem = await checkHarnessSdk(projectDir, harness);
|
|
10712
|
+
if (sdkProblem) {
|
|
10713
|
+
logErr(sdkProblem);
|
|
10714
|
+
process.exit(1);
|
|
10715
|
+
}
|
|
10716
|
+
}
|
|
10592
10717
|
const flowPath = findProjectFlowFile(flowId, projectDir);
|
|
10593
10718
|
if (flowPath && agentDefinition) {
|
|
10594
10719
|
logErr(
|
|
@@ -10938,7 +11063,11 @@ function makeServeCommand() {
|
|
|
10938
11063
|
"--managed-codex-config <path>",
|
|
10939
11064
|
"Explicit private host configuration for managed Codex",
|
|
10940
11065
|
valueNotFlag("--managed-codex-config")
|
|
10941
|
-
).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(
|
|
10942
11071
|
"--session-id <id>",
|
|
10943
11072
|
"Label for the session; does not restore the conversation (use --resume-session-id)",
|
|
10944
11073
|
valueNotFlag("--session-id")
|
|
@@ -10983,7 +11112,7 @@ function makeServeCommand() {
|
|
|
10983
11112
|
process.exitCode = 1;
|
|
10984
11113
|
return;
|
|
10985
11114
|
}
|
|
10986
|
-
const dirProblem = (await import('../serve-preflight-
|
|
11115
|
+
const dirProblem = (await import('../serve-preflight-GQY5DZX6.js')).checkServeProjectDir(
|
|
10987
11116
|
opts.projectDir
|
|
10988
11117
|
);
|
|
10989
11118
|
if (dirProblem) {
|
|
@@ -11010,17 +11139,27 @@ function makeServeCommand() {
|
|
|
11010
11139
|
} else {
|
|
11011
11140
|
await ensurePluginsLoadedForServe(opts.projectDir);
|
|
11012
11141
|
}
|
|
11013
|
-
|
|
11142
|
+
let providers = parseProviderIds(opts.providers);
|
|
11143
|
+
if (!managedCodex) {
|
|
11144
|
+
const { resolveServeProvider } = await import('../serve-preflight-GQY5DZX6.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
|
+
}
|
|
11014
11153
|
const modelEndpoint = parseModelEndpointFlag(opts.modelEndpoint);
|
|
11015
|
-
const { checkHarnessSdk, checkModelEndpointPeer, checkServeModel } = await import('../serve-preflight-
|
|
11016
|
-
const { checkServeHarness, checkServeAgentDefinition } = await import('../serve-preflight-
|
|
11154
|
+
const { checkHarnessSdk: checkHarnessSdk2, checkModelEndpointPeer, checkServeModel } = await import('../serve-preflight-GQY5DZX6.js');
|
|
11155
|
+
const { checkServeHarness, checkServeAgentDefinition } = await import('../serve-preflight-GQY5DZX6.js');
|
|
11017
11156
|
const startProblem = managedCodex ? null : await checkServeHarness(opts.projectDir, opts.harness) ?? checkServeAgentDefinition(opts.projectDir);
|
|
11018
11157
|
if (startProblem) {
|
|
11019
11158
|
logErr(startProblem);
|
|
11020
11159
|
process.exitCode = 1;
|
|
11021
11160
|
return;
|
|
11022
11161
|
}
|
|
11023
|
-
const harnessProblem = managedCodex ? null : await
|
|
11162
|
+
const harnessProblem = managedCodex ? null : await checkHarnessSdk2(opts.projectDir, opts.harness);
|
|
11024
11163
|
if (harnessProblem) {
|
|
11025
11164
|
logErr(harnessProblem);
|
|
11026
11165
|
process.exitCode = 1;
|
|
@@ -11080,12 +11219,12 @@ function makeServeCommand() {
|
|
|
11080
11219
|
);
|
|
11081
11220
|
}
|
|
11082
11221
|
async function ensurePluginsLoadedForServe(projectDir) {
|
|
11083
|
-
const { logInfo: logInfo2, logWarn: logWarn2 } = await import('../helpers-
|
|
11222
|
+
const { logInfo: logInfo2, logWarn: logWarn2 } = await import('../helpers-YHDQHQEQ.js');
|
|
11084
11223
|
try {
|
|
11085
11224
|
const { resolveSkWorkspaceConfig: resolveSkWorkspaceConfig2 } = await import('../core/index.js');
|
|
11086
11225
|
const config = resolveSkWorkspaceConfig2(projectDir);
|
|
11087
11226
|
if (!config.plugins || config.plugins.length === 0) return;
|
|
11088
|
-
const { ensurePluginsLoaded } = await import('../plugin-store-
|
|
11227
|
+
const { ensurePluginsLoaded } = await import('../plugin-store-NGRUTCJI.js');
|
|
11089
11228
|
const { pluginRegistry } = await import('../plugin-registry/index.js');
|
|
11090
11229
|
const result = await ensurePluginsLoaded(projectDir, config.plugins, pluginRegistry);
|
|
11091
11230
|
if (result.loaded.length > 0) {
|
|
@@ -11099,14 +11238,14 @@ async function ensurePluginsLoadedForServe(projectDir) {
|
|
|
11099
11238
|
}
|
|
11100
11239
|
}
|
|
11101
11240
|
async function runCompileTest(opts) {
|
|
11102
|
-
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-YHDQHQEQ.js');
|
|
11103
11242
|
const { tmpdir } = await import('os');
|
|
11104
11243
|
const { dirname: dirname3, join: join6, resolve: resolve4 } = await import('path');
|
|
11105
11244
|
const { fileURLToPath: fileURLToPath2 } = await import('url');
|
|
11106
11245
|
const { unlinkSync, existsSync: existsSync22 } = await import('fs');
|
|
11107
11246
|
const { spawn } = await import('child_process');
|
|
11108
11247
|
const { portableSpawnSync: portableSpawnSync2 } = await import('../core/index.js');
|
|
11109
|
-
const { MONOREPO_ROOT } = await import('../paths-
|
|
11248
|
+
const { MONOREPO_ROOT } = await import('../paths-XLKCAFRZ.js');
|
|
11110
11249
|
if (MONOREPO_ROOT === null) {
|
|
11111
11250
|
logErr2("--compile-test is only available inside the skaile-dev workspace.");
|
|
11112
11251
|
logInfo2("Run it from a checkout of skaile-ai/skaile-dev (the monorepo shell).");
|
|
@@ -12064,8 +12203,8 @@ function makeStoreCommand() {
|
|
|
12064
12203
|
"--all",
|
|
12065
12204
|
`List every match (default: ${STORE_ROW_LIMIT} rows, only what \`skaile add\` can install)`
|
|
12066
12205
|
).option("-C, --project-dir <dir>", "Project directory (catalog config overlay)", process.cwd()).action(async (query, opts) => {
|
|
12067
|
-
const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError: LocalCatalogDisabledError2 } = await import('../open-library-
|
|
12068
|
-
const { getKnownKinds: getKnownKinds2 } = await import('../open-registry-
|
|
12206
|
+
const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError: LocalCatalogDisabledError2 } = await import('../open-library-BVQCB37E.js');
|
|
12207
|
+
const { getKnownKinds: getKnownKinds2 } = await import('../open-registry-JCSIAKEC.js');
|
|
12069
12208
|
const projectDir = path19__default.resolve(opts.projectDir);
|
|
12070
12209
|
if (opts.kind && !getKnownKinds2().has(opts.kind)) {
|
|
12071
12210
|
logErr(
|
|
@@ -12123,8 +12262,8 @@ function makeStoreCommand() {
|
|
|
12123
12262
|
}
|
|
12124
12263
|
});
|
|
12125
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) => {
|
|
12126
|
-
const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError: LocalCatalogDisabledError2 } = await import('../open-library-
|
|
12127
|
-
const { supportsInstallManifest: supportsInstallManifest2 } = await import('../project-
|
|
12265
|
+
const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError: LocalCatalogDisabledError2 } = await import('../open-library-BVQCB37E.js');
|
|
12266
|
+
const { supportsInstallManifest: supportsInstallManifest2 } = await import('../project-BGYMLAS6.js');
|
|
12128
12267
|
try {
|
|
12129
12268
|
parseAssetRef(ref);
|
|
12130
12269
|
} catch (e) {
|
|
@@ -12351,6 +12490,7 @@ function makeUpdateCommand() {
|
|
|
12351
12490
|
}
|
|
12352
12491
|
}
|
|
12353
12492
|
if (opts.catalogOnly) return;
|
|
12493
|
+
let sourceFailed = false;
|
|
12354
12494
|
if (await shouldSyncSources(opts)) {
|
|
12355
12495
|
const syncSpinner = createSpinner();
|
|
12356
12496
|
syncSpinner.start("Syncing sources");
|
|
@@ -12358,13 +12498,25 @@ function makeUpdateCommand() {
|
|
|
12358
12498
|
syncSpinner.stop(
|
|
12359
12499
|
total === 0 ? "No sources to sync." : `Synced ${S.heading(`${synced}/${total}`)} source(s)` + (failed2 ? ` (${failed2} failed)` : "")
|
|
12360
12500
|
);
|
|
12361
|
-
if (failed2 > 0)
|
|
12501
|
+
if (failed2 > 0) {
|
|
12502
|
+
process.exitCode = 1;
|
|
12503
|
+
sourceFailed = true;
|
|
12504
|
+
}
|
|
12362
12505
|
} else {
|
|
12363
12506
|
for (const slug of divergedSourceClones(projectDir)) {
|
|
12364
12507
|
logErr(`${slug}: git pull failed: Not possible to fast-forward, aborting.`);
|
|
12365
12508
|
process.exitCode = 1;
|
|
12366
12509
|
}
|
|
12367
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
|
+
}
|
|
12368
12520
|
if (target) {
|
|
12369
12521
|
await updateOne(am2, projectDir, target, opts.force);
|
|
12370
12522
|
return;
|
|
@@ -12555,6 +12707,14 @@ function makeVerifyCommand() {
|
|
|
12555
12707
|
logInfo("No skaile.lock.yaml found \u2014 nothing to verify");
|
|
12556
12708
|
return;
|
|
12557
12709
|
}
|
|
12710
|
+
try {
|
|
12711
|
+
readLock(lockPath);
|
|
12712
|
+
} catch (err) {
|
|
12713
|
+
if (err instanceof LockParseError) {
|
|
12714
|
+
logErr(err.message);
|
|
12715
|
+
process.exit(1);
|
|
12716
|
+
}
|
|
12717
|
+
}
|
|
12558
12718
|
const yaml = await import('yaml');
|
|
12559
12719
|
const lockContent = readFileSync(lockPath, "utf-8");
|
|
12560
12720
|
const lock = yaml.parse(lockContent);
|
|
@@ -12888,9 +13048,8 @@ Libraries (your authoring workspaces):
|
|
|
12888
13048
|
|
|
12889
13049
|
Store (manifest catalog + auth):
|
|
12890
13050
|
store login / logout / whoami / yank Auth + admin
|
|
12891
|
-
store
|
|
12892
|
-
store
|
|
12893
|
-
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
|
|
12894
13053
|
|
|
12895
13054
|
Catalog (debug):
|
|
12896
13055
|
catalog test / show Probe a catalog endpoint, print resolved config
|
|
@@ -12983,7 +13142,6 @@ function buildInitWorkspaceConfig(projectName, harness) {
|
|
|
12983
13142
|
description: `${projectName} AI skill dependencies`,
|
|
12984
13143
|
"agent-config": {
|
|
12985
13144
|
default: {
|
|
12986
|
-
agent: harness,
|
|
12987
13145
|
// model is omitted unless a harness fixes it (none do today).
|
|
12988
13146
|
...harnessDefaults.model ? { model: harnessDefaults.model } : {},
|
|
12989
13147
|
harness: harnessDefaults.harness,
|
|
@@ -13069,7 +13227,7 @@ async function bootstrapUserConfig() {
|
|
|
13069
13227
|
}
|
|
13070
13228
|
async function hydrateInitSources(resolved, created) {
|
|
13071
13229
|
try {
|
|
13072
|
-
const { ensureSourcesCloned } = await import('../ensure-sources-
|
|
13230
|
+
const { ensureSourcesCloned } = await import('../ensure-sources-6O54DUQB.js');
|
|
13073
13231
|
const hydrate = ensureSourcesCloned(resolved, { quiet: true });
|
|
13074
13232
|
for (const n of hydrate.cloned) created.push(`~/.skaile/cache/sources/${n}/`);
|
|
13075
13233
|
if (hydrate.failed.length > 0) {
|
|
@@ -13108,8 +13266,9 @@ function printInitSummary(resolved, projectDir, created) {
|
|
|
13108
13266
|
);
|
|
13109
13267
|
console.log();
|
|
13110
13268
|
}
|
|
13269
|
+
program.hook("preAction", (_program, actionCommand) => setActiveCommand(actionCommand));
|
|
13111
13270
|
program.command("setup").description("Interactive provider setup wizard").action(async () => {
|
|
13112
|
-
const { cmdSetup } = await import('../setup-
|
|
13271
|
+
const { cmdSetup } = await import('../setup-2NWSKSCO.js');
|
|
13113
13272
|
await cmdSetup([], { projectDir: process.cwd() });
|
|
13114
13273
|
});
|
|
13115
13274
|
program.addCommand(makeInstallCommand());
|
|
@@ -13190,7 +13349,7 @@ program.hook("postAction", async (_thisCommand, actionCommand) => {
|
|
|
13190
13349
|
const opts = actionCommand.opts();
|
|
13191
13350
|
if (opts.global || opts.dryRun) return;
|
|
13192
13351
|
const projectDir = path19__default.resolve(opts.projectDir ?? process.cwd());
|
|
13193
|
-
const { refreshPluginSkills } = await import('../claude-code-
|
|
13352
|
+
const { refreshPluginSkills } = await import('../claude-code-JY6CYEG7.js');
|
|
13194
13353
|
try {
|
|
13195
13354
|
if (await refreshPluginSkills(projectDir)) {
|
|
13196
13355
|
logInfo(`Updated ${S.cmd(".claude/plugins/skaile/skills")} (the --full plugin copy)`);
|
|
@@ -13208,9 +13367,10 @@ process.once("beforeExit", () => {
|
|
|
13208
13367
|
logErr("The command ended before it finished (nothing left to wait for).");
|
|
13209
13368
|
process.exit(1);
|
|
13210
13369
|
});
|
|
13211
|
-
setLibraryAssetCheck(
|
|
13212
|
-
(
|
|
13213
|
-
)
|
|
13370
|
+
setLibraryAssetCheck((asset, libraryPath) => [
|
|
13371
|
+
...manifestEntryFilesRefusals(libraryPath, asset.kind, asset.name),
|
|
13372
|
+
...libraryAssetRefusals(asset, libraryPath, getKindRegistry())
|
|
13373
|
+
]);
|
|
13214
13374
|
setRenamedEntryLookup(manifestEntryRenames);
|
|
13215
13375
|
setWalkTruncationSink((info, root) => {
|
|
13216
13376
|
const where = path19__default.basename(root);
|
|
@@ -13231,7 +13391,7 @@ try {
|
|
|
13231
13391
|
process.exit(1);
|
|
13232
13392
|
}
|
|
13233
13393
|
const { LibrarySyncError } = await import('../library/index.js');
|
|
13234
|
-
if (!(err instanceof LibrarySyncError || err instanceof LibraryEntryError || err instanceof SourceEntryError || err instanceof LegacyKeyError))
|
|
13394
|
+
if (!(err instanceof LibrarySyncError || err instanceof LibraryEntryError || err instanceof SourceEntryError || err instanceof LegacyKeyError || err instanceof ConfigParseError || err instanceof LockParseError))
|
|
13235
13395
|
throw err;
|
|
13236
13396
|
logErr(err.message);
|
|
13237
13397
|
process.exit(1);
|