@skaile/workspaces 6.5.0 → 6.7.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 +36 -0
- package/dist/ai-sdk.js +12 -19
- package/dist/ai-sdk.js.map +1 -1
- package/dist/app-sdk/index.js +1 -1
- package/dist/{asset-feeds-4I6Z4OI3.js → asset-feeds-4A7PJ4OB.js} +20 -20
- package/dist/{asset-feeds-4I6Z4OI3.js.map → asset-feeds-4A7PJ4OB.js.map} +1 -1
- package/dist/asset-manager/catalog-deployer.js +7 -7
- package/dist/asset-manager/index.js +12 -12
- package/dist/asset-manager/installer.js +8 -8
- package/dist/asset-manager/renderers.js +7 -7
- package/dist/asset-manager/src/index.d.ts +89 -15
- package/dist/asset-manager/src/index.d.ts.map +1 -1
- package/dist/asset-manager/src/install-agent.d.ts +22 -1
- package/dist/asset-manager/src/install-agent.d.ts.map +1 -1
- package/dist/asset-manager/src/install-instances.d.ts +30 -1
- package/dist/asset-manager/src/install-instances.d.ts.map +1 -1
- package/dist/asset-manager/src/installer.d.ts +12 -0
- package/dist/asset-manager/src/installer.d.ts.map +1 -1
- package/dist/asset-manager/src/renderers.d.ts.map +1 -1
- package/dist/bridge/harnesses/claude-sdk.js +23 -17
- package/dist/bridge/harnesses/claude-sdk.js.map +1 -1
- package/dist/bridge/harnesses/codex.js +12 -11
- package/dist/bridge/harnesses/codex.js.map +1 -1
- package/dist/bridge/harnesses/continue.js +13 -11
- package/dist/bridge/harnesses/continue.js.map +1 -1
- package/dist/bridge/harnesses/echo.js +6 -5
- package/dist/bridge/harnesses/echo.js.map +1 -1
- package/dist/bridge/harnesses/gemini.js +9 -7
- package/dist/bridge/harnesses/goose.js +13 -11
- package/dist/bridge/harnesses/goose.js.map +1 -1
- package/dist/bridge/harnesses/omp.js +10 -8
- package/dist/bridge/harnesses/omp.js.map +1 -1
- package/dist/bridge/harnesses/opencode.js +13 -11
- package/dist/bridge/harnesses/opencode.js.map +1 -1
- package/dist/bridge/harnesses/qwen.js +10 -8
- package/dist/bridge/harnesses/qwen.js.map +1 -1
- package/dist/bridge/index.js +19 -17
- package/dist/bridge/src/ai-sdk.d.ts.map +1 -1
- package/dist/bridge/src/claude-sdk-surface.d.ts +2 -1
- package/dist/bridge/src/claude-sdk-surface.d.ts.map +1 -1
- package/dist/bridge/src/harness-binaries.d.ts +21 -0
- package/dist/bridge/src/harness-binaries.d.ts.map +1 -0
- package/dist/bridge/src/harness-model-check.d.ts +22 -6
- 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/continue.d.ts.map +1 -1
- package/dist/bridge/src/harnesses/gemini.d.ts.map +1 -1
- package/dist/bridge/src/harnesses/goose.d.ts.map +1 -1
- package/dist/bridge/src/harnesses/omp-models-yml.d.ts.map +1 -1
- package/dist/bridge/src/harnesses/omp.d.ts.map +1 -1
- package/dist/bridge/src/harnesses/opencode.d.ts.map +1 -1
- package/dist/bridge/src/harnesses/qwen.d.ts.map +1 -1
- package/dist/bridge/src/index.d.ts +2 -1
- package/dist/bridge/src/index.d.ts.map +1 -1
- package/dist/{chunk-UZET67SO.js → chunk-237BMOZW.js} +4 -4
- package/dist/{chunk-UZET67SO.js.map → chunk-237BMOZW.js.map} +1 -1
- package/dist/{chunk-J5JWLKLB.js → chunk-37AYPPOO.js} +41 -19
- package/dist/chunk-37AYPPOO.js.map +1 -0
- package/dist/{chunk-3KSLUVKB.js → chunk-37X4A6VZ.js} +7 -7
- package/dist/{chunk-3KSLUVKB.js.map → chunk-37X4A6VZ.js.map} +1 -1
- package/dist/{chunk-EO7KGX6P.js → chunk-3HSLJAMJ.js} +4 -4
- package/dist/{chunk-EO7KGX6P.js.map → chunk-3HSLJAMJ.js.map} +1 -1
- package/dist/{chunk-AFTZNR2W.js → chunk-3W6XZQ2Y.js} +3 -3
- package/dist/{chunk-AFTZNR2W.js.map → chunk-3W6XZQ2Y.js.map} +1 -1
- package/dist/{chunk-SZTHSPRC.js → chunk-4C2E5QUP.js} +4 -3
- package/dist/chunk-4C2E5QUP.js.map +1 -0
- package/dist/{chunk-T7HGEMNB.js → chunk-4CD2R4MJ.js} +5 -4
- package/dist/chunk-4CD2R4MJ.js.map +1 -0
- package/dist/{chunk-TNQLDEM6.js → chunk-6RPS7JEH.js} +302 -54
- package/dist/chunk-6RPS7JEH.js.map +1 -0
- package/dist/{chunk-NSIOBKDX.js → chunk-6UP2EDFN.js} +4 -313
- package/dist/chunk-6UP2EDFN.js.map +1 -0
- package/dist/{chunk-KUADKMNX.js → chunk-72TLO2AG.js} +4 -4
- package/dist/{chunk-KUADKMNX.js.map → chunk-72TLO2AG.js.map} +1 -1
- package/dist/{chunk-HPA3RP5E.js → chunk-AO57IFME.js} +3 -3
- package/dist/{chunk-HPA3RP5E.js.map → chunk-AO57IFME.js.map} +1 -1
- package/dist/{chunk-G5SYFFMD.js → chunk-ASBZOTEO.js} +2 -2
- package/dist/{chunk-G5SYFFMD.js.map → chunk-ASBZOTEO.js.map} +1 -1
- package/dist/{chunk-YBEJCQE5.js → chunk-BB5EJLKZ.js} +3 -3
- package/dist/{chunk-YBEJCQE5.js.map → chunk-BB5EJLKZ.js.map} +1 -1
- package/dist/{chunk-LE6QS4PG.js → chunk-BKLDBUQA.js} +3 -3
- package/dist/{chunk-LE6QS4PG.js.map → chunk-BKLDBUQA.js.map} +1 -1
- package/dist/{chunk-HTGTNN2B.js → chunk-CMXDFTA2.js} +3 -3
- package/dist/{chunk-HTGTNN2B.js.map → chunk-CMXDFTA2.js.map} +1 -1
- package/dist/{chunk-J6YPKMMY.js → chunk-CTRTFMCX.js} +6 -6
- package/dist/{chunk-J6YPKMMY.js.map → chunk-CTRTFMCX.js.map} +1 -1
- package/dist/{chunk-ETF6Q3R3.js → chunk-DFP476EU.js} +8 -4
- package/dist/chunk-DFP476EU.js.map +1 -0
- package/dist/{chunk-TGUMN5G7.js → chunk-G44FFUMA.js} +13 -11
- package/dist/chunk-G44FFUMA.js.map +1 -0
- package/dist/{chunk-G4NCSYWR.js → chunk-G7NMF5WQ.js} +4 -4
- package/dist/{chunk-G4NCSYWR.js.map → chunk-G7NMF5WQ.js.map} +1 -1
- package/dist/{chunk-KA2GLAPS.js → chunk-GAIMSCZ7.js} +10 -8
- package/dist/chunk-GAIMSCZ7.js.map +1 -0
- package/dist/{chunk-AVFRFGM2.js → chunk-GNUA7XT2.js} +3 -2
- package/dist/chunk-GNUA7XT2.js.map +1 -0
- package/dist/{chunk-6Y3SC7O4.js → chunk-GTAHU4N4.js} +4 -4
- package/dist/{chunk-6Y3SC7O4.js.map → chunk-GTAHU4N4.js.map} +1 -1
- package/dist/{chunk-7H4GTP7V.js → chunk-HLAEYFUN.js} +3 -3
- package/dist/{chunk-7H4GTP7V.js.map → chunk-HLAEYFUN.js.map} +1 -1
- package/dist/{chunk-B436SG5P.js → chunk-HMVAGPYR.js} +48 -12
- package/dist/chunk-HMVAGPYR.js.map +1 -0
- package/dist/{chunk-EN5REMWV.js → chunk-HPXONAI2.js} +7 -5
- package/dist/chunk-HPXONAI2.js.map +1 -0
- package/dist/{chunk-KYNCY3F3.js → chunk-HQAPUPBE.js} +3 -3
- package/dist/{chunk-KYNCY3F3.js.map → chunk-HQAPUPBE.js.map} +1 -1
- package/dist/{chunk-USVUS4DJ.js → chunk-IRK3LNG3.js} +7 -7
- package/dist/{chunk-USVUS4DJ.js.map → chunk-IRK3LNG3.js.map} +1 -1
- package/dist/{chunk-7EMS2GZO.js → chunk-J7VEQORJ.js} +70 -17
- package/dist/chunk-J7VEQORJ.js.map +1 -0
- package/dist/{chunk-2HS357RA.js → chunk-KO3VSZQP.js} +48 -19
- package/dist/chunk-KO3VSZQP.js.map +1 -0
- package/dist/{chunk-KSH5CFQS.js → chunk-KORDNXKA.js} +3 -3
- package/dist/{chunk-KSH5CFQS.js.map → chunk-KORDNXKA.js.map} +1 -1
- package/dist/{chunk-Z2X7UZEZ.js → chunk-L3JQJ6D5.js} +6 -6
- package/dist/{chunk-Z2X7UZEZ.js.map → chunk-L3JQJ6D5.js.map} +1 -1
- package/dist/{chunk-OBZ5WQ32.js → chunk-L7QOZG5V.js} +3 -3
- package/dist/{chunk-OBZ5WQ32.js.map → chunk-L7QOZG5V.js.map} +1 -1
- package/dist/{chunk-B4BLJUYN.js → chunk-LX4TTTRR.js} +79 -36
- package/dist/chunk-LX4TTTRR.js.map +1 -0
- package/dist/{chunk-KSUT5KAE.js → chunk-LZPJOF7Y.js} +3 -3
- package/dist/{chunk-KSUT5KAE.js.map → chunk-LZPJOF7Y.js.map} +1 -1
- package/dist/{chunk-OLHHN3NO.js → chunk-N6ZGB5ES.js} +4 -3
- package/dist/chunk-N6ZGB5ES.js.map +1 -0
- package/dist/{chunk-2M3VLKT2.js → chunk-NURTGAWM.js} +3 -3
- package/dist/{chunk-2M3VLKT2.js.map → chunk-NURTGAWM.js.map} +1 -1
- package/dist/{chunk-22ZX33H6.js → chunk-O5Y7VMVQ.js} +16 -15
- package/dist/chunk-O5Y7VMVQ.js.map +1 -0
- package/dist/{chunk-IWKKTCXY.js → chunk-O7ADRMCR.js} +67 -16
- package/dist/chunk-O7ADRMCR.js.map +1 -0
- package/dist/{chunk-SRTWKZP2.js → chunk-OGTQUEAO.js} +21 -14
- package/dist/chunk-OGTQUEAO.js.map +1 -0
- package/dist/{chunk-U6KRTCNA.js → chunk-OSABUEWA.js} +3 -3
- package/dist/{chunk-U6KRTCNA.js.map → chunk-OSABUEWA.js.map} +1 -1
- package/dist/{chunk-E6UWI3TP.js → chunk-PLLZSKOO.js} +3 -3
- package/dist/{chunk-E6UWI3TP.js.map → chunk-PLLZSKOO.js.map} +1 -1
- package/dist/{chunk-W5KCAWGN.js → chunk-PTJTOPE5.js} +3 -3
- package/dist/{chunk-W5KCAWGN.js.map → chunk-PTJTOPE5.js.map} +1 -1
- package/dist/{chunk-TROEC2Z2.js → chunk-Q2NYTMT6.js} +18 -17
- package/dist/chunk-Q2NYTMT6.js.map +1 -0
- package/dist/{chunk-23SG4JRV.js → chunk-QC5BYUED.js} +52 -16
- package/dist/chunk-QC5BYUED.js.map +1 -0
- package/dist/{chunk-WFLQMAR5.js → chunk-QCR5AE5E.js} +5 -5
- package/dist/{chunk-WFLQMAR5.js.map → chunk-QCR5AE5E.js.map} +1 -1
- package/dist/{chunk-THX5EE3K.js → chunk-QW5B3TEO.js} +10 -4
- package/dist/chunk-QW5B3TEO.js.map +1 -0
- package/dist/{chunk-TDPQOR3C.js → chunk-RAHAZ7LP.js} +2 -2
- package/dist/{chunk-TDPQOR3C.js.map → chunk-RAHAZ7LP.js.map} +1 -1
- package/dist/{chunk-ZUU2PLA3.js → chunk-SBNUXJ6E.js} +3 -3
- package/dist/{chunk-ZUU2PLA3.js.map → chunk-SBNUXJ6E.js.map} +1 -1
- package/dist/{chunk-DKXNKFKP.js → chunk-SGI5MRKP.js} +75 -3
- package/dist/chunk-SGI5MRKP.js.map +1 -0
- package/dist/{chunk-UMLCKKIA.js → chunk-TMJBEGS4.js} +36 -7
- package/dist/chunk-TMJBEGS4.js.map +1 -0
- package/dist/{chunk-K4DHYTUM.js → chunk-TXX3OUYI.js} +3 -3
- package/dist/{chunk-K4DHYTUM.js.map → chunk-TXX3OUYI.js.map} +1 -1
- package/dist/{chunk-SN663FCA.js → chunk-U52FYGK5.js} +5 -5
- package/dist/{chunk-SN663FCA.js.map → chunk-U52FYGK5.js.map} +1 -1
- package/dist/{chunk-S7DVT2BV.js → chunk-UCB7FK25.js} +10 -8
- package/dist/chunk-UCB7FK25.js.map +1 -0
- package/dist/{chunk-3DA74PLW.js → chunk-USSP43U3.js} +3 -3
- package/dist/{chunk-3DA74PLW.js.map → chunk-USSP43U3.js.map} +1 -1
- package/dist/{chunk-X44XKBZX.js → chunk-WFK4MUBL.js} +21 -7
- package/dist/chunk-WFK4MUBL.js.map +1 -0
- package/dist/{chunk-YRC2EFOU.js → chunk-WIYVR24B.js} +4 -4
- package/dist/{chunk-YRC2EFOU.js.map → chunk-WIYVR24B.js.map} +1 -1
- package/dist/{chunk-6EKQENAP.js → chunk-WKENHNDM.js} +6 -6
- package/dist/{chunk-6EKQENAP.js.map → chunk-WKENHNDM.js.map} +1 -1
- package/dist/chunk-WWSRIT3J.js +59 -0
- package/dist/chunk-WWSRIT3J.js.map +1 -0
- package/dist/chunk-XON6ODIC.js +315 -0
- package/dist/chunk-XON6ODIC.js.map +1 -0
- package/dist/{chunk-2IAWVUW3.js → chunk-ZBA4P5TD.js} +4 -4
- package/dist/{chunk-2IAWVUW3.js.map → chunk-ZBA4P5TD.js.map} +1 -1
- package/dist/{chunk-IS3NIZBX.js → chunk-ZDTDS62B.js} +596 -127
- package/dist/chunk-ZDTDS62B.js.map +1 -0
- package/dist/{chunk-DNXPXJ3X.js → chunk-ZM4SDVUV.js} +79 -20
- package/dist/chunk-ZM4SDVUV.js.map +1 -0
- package/dist/{claude-code-JY6CYEG7.js → claude-code-BLFRZU2X.js} +5 -5
- package/dist/{claude-code-JY6CYEG7.js.map → claude-code-BLFRZU2X.js.map} +1 -1
- package/dist/cli/index.js +481 -205
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/src/agent-pins.d.ts +9 -3
- package/dist/cli/src/agent-pins.d.ts.map +1 -1
- package/dist/cli/src/commands/asset-cmd.d.ts +1 -1
- package/dist/cli/src/commands/asset-cmd.d.ts.map +1 -1
- package/dist/cli/src/commands/cache.d.ts.map +1 -1
- package/dist/cli/src/commands/catalog.d.ts +2 -0
- package/dist/cli/src/commands/catalog.d.ts.map +1 -1
- package/dist/cli/src/commands/config.d.ts.map +1 -1
- package/dist/cli/src/commands/harness-preflight.d.ts +38 -0
- package/dist/cli/src/commands/harness-preflight.d.ts.map +1 -0
- package/dist/cli/src/commands/library-cmd.d.ts.map +1 -1
- package/dist/cli/src/commands/library-index.d.ts +16 -0
- package/dist/cli/src/commands/library-index.d.ts.map +1 -1
- package/dist/cli/src/commands/migrate-assets.d.ts +5 -0
- package/dist/cli/src/commands/migrate-assets.d.ts.map +1 -1
- package/dist/cli/src/commands/migrate-harness.d.ts +15 -7
- package/dist/cli/src/commands/migrate-harness.d.ts.map +1 -1
- package/dist/cli/src/commands/migrate.d.ts.map +1 -1
- package/dist/cli/src/commands/outdated.d.ts.map +1 -1
- package/dist/cli/src/commands/plugin-registry-cmd.d.ts.map +1 -1
- package/dist/cli/src/commands/project.d.ts +14 -0
- 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 +6 -5
- 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/session.d.ts.map +1 -1
- package/dist/cli/src/commands/source.d.ts +11 -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/why.d.ts.map +1 -1
- package/dist/cli/src/plugin-store/reconcile.d.ts.map +1 -1
- package/dist/cli/src/session-hint.d.ts +7 -0
- package/dist/cli/src/session-hint.d.ts.map +1 -0
- package/dist/connectors/config.js +4 -4
- package/dist/connectors/index.js +23 -21
- package/dist/connectors/src/connector-manager.d.ts.map +1 -1
- package/dist/connectors/src/managed-gitconfig.d.ts +6 -4
- package/dist/connectors/src/managed-gitconfig.d.ts.map +1 -1
- package/dist/connectors/src/mount-ledger.d.ts.map +1 -1
- package/dist/{connectors-VLFOQNS6.js → connectors-OJJU4LSN.js} +26 -24
- package/dist/{connectors-VLFOQNS6.js.map → connectors-OJJU4LSN.js.map} +1 -1
- package/dist/connectors-shared/index.js +2 -2
- package/dist/core/index.js +6 -6
- package/dist/core/logging.js +1 -1
- package/dist/core/manifest.js +1 -1
- package/dist/core/publish-manifest.js +2 -2
- package/dist/core/runtime-assets.js +4 -4
- package/dist/core/src/agent-instances.d.ts +11 -0
- package/dist/core/src/agent-instances.d.ts.map +1 -1
- package/dist/core/src/index.d.ts +3 -2
- package/dist/core/src/index.d.ts.map +1 -1
- package/dist/core/src/logging/index.d.ts +1 -0
- package/dist/core/src/logging/index.d.ts.map +1 -1
- package/dist/core/src/logging/log-safe-text.d.ts +20 -0
- package/dist/core/src/logging/log-safe-text.d.ts.map +1 -0
- package/dist/core/src/manifest.d.ts.map +1 -1
- package/dist/core/src/publish-manifest.d.ts +20 -6
- package/dist/core/src/publish-manifest.d.ts.map +1 -1
- package/dist/core/src/repo-manager.d.ts +9 -0
- package/dist/core/src/repo-manager.d.ts.map +1 -1
- package/dist/core/src/run-state-ignore.d.ts +17 -0
- package/dist/core/src/run-state-ignore.d.ts.map +1 -0
- package/dist/core/src/workspace-config.d.ts +6 -0
- package/dist/core/src/workspace-config.d.ts.map +1 -1
- package/dist/core/workspace-config.js +3 -3
- package/dist/deploy/index.js +6 -6
- package/dist/discovery/index.js +3 -3
- package/dist/discovery/src/builtin-providers.d.ts.map +1 -1
- package/dist/discovery/src/discover-manifest.d.ts.map +1 -1
- package/dist/discovery/src/tree-entries.d.ts.map +1 -1
- package/dist/{ensure-sources-6O54DUQB.js → ensure-sources-F6VQDCWY.js} +28 -26
- package/dist/ensure-sources-F6VQDCWY.js.map +1 -0
- package/dist/factory-assets/connectors/box.js +23 -21
- package/dist/factory-assets/connectors/deploy.js +23 -21
- package/dist/factory-assets/connectors/devserver.js +23 -21
- package/dist/factory-assets/connectors/flow/adapter.js +23 -21
- package/dist/factory-assets/connectors/flow/engine/router-settlement.d.ts +2 -0
- package/dist/factory-assets/connectors/flow/engine/router-settlement.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/engine.js +7 -7
- package/dist/factory-assets/connectors/flow/run-flow.js +25 -23
- package/dist/factory-assets/connectors/flow.js +23 -21
- package/dist/factory-assets/connectors/git/CONNECTOR.md +4 -1
- package/dist/factory-assets/connectors/git/exec.d.ts.map +1 -1
- package/dist/factory-assets/connectors/git.js +23 -21
- package/dist/factory-assets/connectors/gmail.js +23 -21
- package/dist/factory-assets/connectors/googledrive.js +23 -21
- package/dist/factory-assets/connectors/local.js +23 -21
- package/dist/factory-assets/connectors/mattermost.js +23 -21
- package/dist/factory-assets/connectors/memory.js +23 -21
- package/dist/factory-assets/connectors/minio.js +23 -21
- package/dist/factory-assets/connectors/postgres.js +23 -21
- package/dist/factory-assets/connectors/s3.js +23 -21
- package/dist/factory-assets/connectors/sharepoint.js +23 -21
- package/dist/factory-assets/connectors/sqlite.js +23 -21
- package/dist/factory-assets/connectors/static-server.js +23 -21
- package/dist/factory-assets/connectors/tunnel.js +23 -21
- package/dist/factory-assets/connectors/webdav.js +23 -21
- package/dist/factory-assets/connectors/xstate-store.js +23 -21
- package/dist/factory-assets/connectors/xstate.js +23 -21
- package/dist/factory-assets/skills/authoring-skaile-assets/SKILL.md +14 -1
- package/dist/{flows-CIUPK7SB.js → flows-I6ODIPZZ.js} +11 -11
- package/dist/{flows-CIUPK7SB.js.map → flows-I6ODIPZZ.js.map} +1 -1
- package/dist/{helpers-YHDQHQEQ.js → helpers-PJNUTZXZ.js} +28 -26
- package/dist/{helpers-YHDQHQEQ.js.map → helpers-PJNUTZXZ.js.map} +1 -1
- package/dist/library/index.js +9 -9
- package/dist/library/install.js +3 -3
- package/dist/library/src/manifest-writer.d.ts +5 -0
- package/dist/library/src/manifest-writer.d.ts.map +1 -1
- package/dist/{library-publish-MUGUST43.js → library-publish-FNNDWVBO.js} +54 -52
- package/dist/library-publish-FNNDWVBO.js.map +1 -0
- package/dist/model-endpoint/index.js +10 -9
- package/dist/open-library-R5EZROFN.js +59 -0
- package/dist/{open-library-BVQCB37E.js.map → open-library-R5EZROFN.js.map} +1 -1
- package/dist/{open-registry-JCSIAKEC.js → open-registry-RZW2AFD6.js} +13 -13
- package/dist/{open-registry-JCSIAKEC.js.map → open-registry-RZW2AFD6.js.map} +1 -1
- package/dist/{paths-XLKCAFRZ.js → paths-RPK5PNZQ.js} +9 -9
- package/dist/{paths-XLKCAFRZ.js.map → paths-RPK5PNZQ.js.map} +1 -1
- package/dist/{plugin-store-NGRUTCJI.js → plugin-store-OJTERUEZ.js} +9 -9
- package/dist/{plugin-store-NGRUTCJI.js.map → plugin-store-OJTERUEZ.js.map} +1 -1
- package/dist/project-S2FT3LLR.js +90 -0
- package/dist/{project-BGYMLAS6.js.map → project-S2FT3LLR.js.map} +1 -1
- package/dist/resolver/index.js +7 -7
- package/dist/runner/index.js +39 -37
- package/dist/runner/src/capability-roundtrip.d.ts +6 -6
- package/dist/runner/src/capability-roundtrip.d.ts.map +1 -1
- package/dist/runner/src/composition/run-snapshot.d.ts +7 -1
- package/dist/runner/src/composition/run-snapshot.d.ts.map +1 -1
- package/dist/runner/src/external-mcp.d.ts +22 -0
- package/dist/runner/src/external-mcp.d.ts.map +1 -1
- package/dist/runner/src/mcp-tools-snapshot.d.ts +13 -0
- package/dist/runner/src/mcp-tools-snapshot.d.ts.map +1 -0
- package/dist/runner/src/resources.d.ts +14 -0
- package/dist/runner/src/resources.d.ts.map +1 -1
- package/dist/runner/src/serve.d.ts.map +1 -1
- package/dist/sdk/asset-manager.js +12 -12
- package/dist/sdk/bridge.js +19 -17
- package/dist/sdk/core.js +6 -6
- package/dist/sdk/flow.js +7 -7
- package/dist/sdk/index.js +39 -37
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/resolver.js +7 -7
- package/dist/sdk/runner.js +39 -37
- 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-AADSOUO2.js +58 -0
- package/dist/{serve-preflight-GQY5DZX6.js.map → serve-preflight-AADSOUO2.js.map} +1 -1
- package/dist/session/index.js +2 -2
- package/dist/{setup-2NWSKSCO.js → setup-HOAJHUFQ.js} +29 -27
- package/dist/setup-HOAJHUFQ.js.map +1 -0
- package/dist/{skills-PXZOL2FZ.js → skills-KHHW3RZ3.js} +12 -12
- package/dist/{skills-PXZOL2FZ.js.map → skills-KHHW3RZ3.js.map} +1 -1
- package/dist/source-FOELFCY6.js +88 -0
- package/dist/{source-XA3L4H6I.js.map → source-FOELFCY6.js.map} +1 -1
- package/dist/{source-manifest-publish-QEGMTS33.js → source-manifest-publish-Q7P5AEVU.js} +51 -49
- package/dist/source-manifest-publish-Q7P5AEVU.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 +63 -44
- package/dist/tui/index.js.map +1 -1
- package/dist/tui/src/repl.d.ts +10 -0
- package/dist/tui/src/repl.d.ts.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/types/src/version.d.ts +4 -4
- package/dist/workspace-plugin/adapters/mcp.js +30 -28
- package/dist/workspace-plugin/adapters/omp.js +14 -14
- package/dist/workspace-plugin/index.js +2 -2
- package/package.json +1 -1
- package/dist/chunk-22ZX33H6.js.map +0 -1
- package/dist/chunk-23SG4JRV.js.map +0 -1
- package/dist/chunk-2HS357RA.js.map +0 -1
- package/dist/chunk-7EMS2GZO.js.map +0 -1
- package/dist/chunk-AVFRFGM2.js.map +0 -1
- package/dist/chunk-B436SG5P.js.map +0 -1
- package/dist/chunk-B4BLJUYN.js.map +0 -1
- package/dist/chunk-DKXNKFKP.js.map +0 -1
- package/dist/chunk-DNXPXJ3X.js.map +0 -1
- package/dist/chunk-EN5REMWV.js.map +0 -1
- package/dist/chunk-ETF6Q3R3.js.map +0 -1
- package/dist/chunk-IS3NIZBX.js.map +0 -1
- package/dist/chunk-IWKKTCXY.js.map +0 -1
- package/dist/chunk-J5JWLKLB.js.map +0 -1
- package/dist/chunk-KA2GLAPS.js.map +0 -1
- package/dist/chunk-NSIOBKDX.js.map +0 -1
- package/dist/chunk-OLHHN3NO.js.map +0 -1
- package/dist/chunk-S7DVT2BV.js.map +0 -1
- package/dist/chunk-SRTWKZP2.js.map +0 -1
- package/dist/chunk-SZTHSPRC.js.map +0 -1
- package/dist/chunk-T7HGEMNB.js.map +0 -1
- package/dist/chunk-TGUMN5G7.js.map +0 -1
- package/dist/chunk-THX5EE3K.js.map +0 -1
- package/dist/chunk-TNQLDEM6.js.map +0 -1
- package/dist/chunk-TROEC2Z2.js.map +0 -1
- package/dist/chunk-UMLCKKIA.js.map +0 -1
- package/dist/chunk-X44XKBZX.js.map +0 -1
- package/dist/ensure-sources-6O54DUQB.js.map +0 -1
- package/dist/library-publish-MUGUST43.js.map +0 -1
- package/dist/open-library-BVQCB37E.js +0 -57
- package/dist/project-BGYMLAS6.js +0 -88
- package/dist/serve-preflight-GQY5DZX6.js +0 -56
- package/dist/setup-2NWSKSCO.js.map +0 -1
- package/dist/source-XA3L4H6I.js +0 -86
- package/dist/source-manifest-publish-QEGMTS33.js.map +0 -1
package/dist/cli/index.js
CHANGED
|
@@ -1,98 +1,100 @@
|
|
|
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 { checkHarnessSdk } from '../chunk-
|
|
6
|
-
import { makeProvidersCommand, loadRegistryView, addProviderEntry, ProviderRegistryWriteError, removeProviderEntry } from '../chunk-
|
|
7
|
-
import { makeInstallCommand, makeCheckCommand, makeCleanCommand, pinComposedAgents, reportRewritten, reportReplaced, reportRelocked, reportMoved, reportStoreNotChecked, globalProblems, editedConventionFiles, supportsInstallManifest, runYamlInstall, REF_HINT, reportInstalledSoftDeps } from '../chunk-
|
|
8
|
-
import { reportUnknownHarnesses, reportProjectConfig, agentInstanceErrorLines } from '../chunk-
|
|
9
|
-
import { isRecord } from '../chunk-
|
|
2
|
+
import { status, enable, disable, install, uninstall } from '../chunk-BKLDBUQA.js';
|
|
3
|
+
import { makeValidateCommand, scanIdentities } from '../chunk-Q2NYTMT6.js';
|
|
4
|
+
import { storeNotInstallableReason, mcpNotRunnableHere } from '../chunk-TXX3OUYI.js';
|
|
5
|
+
import { checkHarnessSdk } from '../chunk-OGTQUEAO.js';
|
|
6
|
+
import { makeProvidersCommand, loadRegistryView, addProviderEntry, ProviderRegistryWriteError, removeProviderEntry } from '../chunk-WKENHNDM.js';
|
|
7
|
+
import { makeInstallCommand, makeCheckCommand, makeCleanCommand, pinComposedAgents, reportRewritten, reportReplaced, reportRelocked, reportMoved, reportStoreNotChecked, reportStoreNotCheckedForUpdates, globalProblems, editedConventionFiles, supportsInstallManifest, runYamlInstall, REF_HINT, reportInstalledSoftDeps } from '../chunk-37AYPPOO.js';
|
|
8
|
+
import { reportUnknownHarnesses, reportProjectConfig, agentInstanceErrorLines } from '../chunk-CTRTFMCX.js';
|
|
9
|
+
import { isRecord } from '../chunk-DFP476EU.js';
|
|
10
10
|
import { createSpinner } from '../chunk-NESV47MF.js';
|
|
11
|
-
import { loadDeclaredPlugins } from '../chunk-
|
|
12
|
-
import { getStoreConfig, storeFetch, isStoreAuthenticated, getStoreToken } from '../chunk-
|
|
13
|
-
import { makeSourceCommand, syncProjectSources, divergedSourceClones } from '../chunk-
|
|
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-
|
|
15
|
-
import { openCatalogSource, LocalCatalogDisabledError, openLibraryManager, openLibrary } from '../chunk-
|
|
16
|
-
import { getKindRegistry, getKnownKinds } from '../chunk-
|
|
17
|
-
import { AI_RESOURCES } from '../chunk-
|
|
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-
|
|
11
|
+
import { loadDeclaredPlugins } from '../chunk-QW5B3TEO.js';
|
|
12
|
+
import { getStoreConfig, storeFetch, isStoreAuthenticated, getStoreToken } from '../chunk-72TLO2AG.js';
|
|
13
|
+
import { makeSourceCommand, dropVanishedSourceRows, syncProjectSources, divergedSourceClones, uncachedSources } from '../chunk-ZM4SDVUV.js';
|
|
14
|
+
import { manifestEntryRootRefusals, 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, warnUntrackedAssetFiles, checkComposeKinds } from '../chunk-J7VEQORJ.js';
|
|
15
|
+
import { openCatalogSource, LocalCatalogDisabledError, openLibraryManager, openLibrary } from '../chunk-WIYVR24B.js';
|
|
16
|
+
import { getKindRegistry, getKnownKinds } from '../chunk-QCR5AE5E.js';
|
|
17
|
+
import { AI_RESOURCES } from '../chunk-237BMOZW.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-L3JQJ6D5.js';
|
|
19
19
|
import { LocalSecretsProvider } from '../chunk-ILFGVSTJ.js';
|
|
20
|
-
import { resolveInstanceAgentDir, instanceSessionOverrides, runAgentChat, isCompositionError, resolveSessionId, loadSessionById, loadSession, listSessions, setCurrentSession, deleteSession, clearSession,
|
|
21
|
-
import '../chunk-
|
|
22
|
-
import '../chunk-
|
|
23
|
-
import '../chunk-
|
|
24
|
-
import '../chunk-
|
|
20
|
+
import { resolveInstanceAgentDir, instanceSessionOverrides, loadAgentManifest, manifestModelForHarness, runAgentChat, isCompositionError, resolveSessionId, loadSessionById, loadSession, listSessions, setCurrentSession, deleteSession, clearSession, hashAgentFiles, createCompositionContentSource, compileComposition, MarkdownStreamer, createFinalTextFallback, instanceForSession, resolveAgentInstance, describeComposition } from '../chunk-6RPS7JEH.js';
|
|
21
|
+
import '../chunk-RAHAZ7LP.js';
|
|
22
|
+
import '../chunk-37X4A6VZ.js';
|
|
23
|
+
import '../chunk-L7QOZG5V.js';
|
|
24
|
+
import '../chunk-BB5EJLKZ.js';
|
|
25
25
|
import '../chunk-WYZXSJBK.js';
|
|
26
|
-
import '../chunk-
|
|
27
|
-
import '../chunk-
|
|
26
|
+
import '../chunk-GTAHU4N4.js';
|
|
27
|
+
import '../chunk-HQAPUPBE.js';
|
|
28
28
|
import '../chunk-KW37WNXY.js';
|
|
29
29
|
import '../chunk-3MWQKQUB.js';
|
|
30
|
-
import '../chunk-
|
|
30
|
+
import '../chunk-U52FYGK5.js';
|
|
31
31
|
import '../chunk-O7SG5PC2.js';
|
|
32
32
|
import '../chunk-7QBNJTTQ.js';
|
|
33
33
|
import '../chunk-O2SYFJWP.js';
|
|
34
|
-
import '../chunk-
|
|
34
|
+
import '../chunk-HLAEYFUN.js';
|
|
35
35
|
import '../chunk-32NA4TVC.js';
|
|
36
36
|
import '../chunk-W3UDISS2.js';
|
|
37
|
-
import '../chunk-
|
|
38
|
-
import { runFlow, resumeFlow } from '../chunk-
|
|
37
|
+
import '../chunk-CMXDFTA2.js';
|
|
38
|
+
import { runFlow, resumeFlow } from '../chunk-IRK3LNG3.js';
|
|
39
39
|
import '../chunk-4R6DROGN.js';
|
|
40
|
-
import { parseSkillRequirements, validateRequirements } from '../chunk-
|
|
41
|
-
import '../chunk-
|
|
42
|
-
import '../chunk-
|
|
43
|
-
import '../chunk-
|
|
44
|
-
import '../chunk-
|
|
45
|
-
import { checkHarnessModel,
|
|
46
|
-
import '../chunk-
|
|
47
|
-
import '../chunk-
|
|
48
|
-
import '../chunk-
|
|
40
|
+
import { parseSkillRequirements, validateRequirements } from '../chunk-PTJTOPE5.js';
|
|
41
|
+
import '../chunk-USSP43U3.js';
|
|
42
|
+
import '../chunk-LX4TTTRR.js';
|
|
43
|
+
import '../chunk-NURTGAWM.js';
|
|
44
|
+
import '../chunk-ZBA4P5TD.js';
|
|
45
|
+
import { checkHarnessModel, checkOmpListedModel, isUnlistedModel, checkModelSurface } from '../chunk-HMVAGPYR.js';
|
|
46
|
+
import '../chunk-UCB7FK25.js';
|
|
47
|
+
import '../chunk-HPXONAI2.js';
|
|
48
|
+
import '../chunk-N6ZGB5ES.js';
|
|
49
49
|
import '../chunk-LOO5CB5M.js';
|
|
50
|
-
import '../chunk-
|
|
51
|
-
import '../chunk-
|
|
50
|
+
import '../chunk-LZPJOF7Y.js';
|
|
51
|
+
import '../chunk-SBNUXJ6E.js';
|
|
52
|
+
import { findHarnessBinary, HARNESS_BINARIES } from '../chunk-WWSRIT3J.js';
|
|
53
|
+
import '../chunk-4C2E5QUP.js';
|
|
52
54
|
import '../chunk-5DE3DGVR.js';
|
|
53
55
|
import '../chunk-7DN6JKP2.js';
|
|
54
|
-
import '../chunk-
|
|
55
|
-
import '../chunk-
|
|
56
|
-
import '../chunk-SZTHSPRC.js';
|
|
57
|
-
import { listHarnesses, getProviderPreset, AI_PROVIDER_PRESETS } from '../chunk-NSIOBKDX.js';
|
|
56
|
+
import '../chunk-PLLZSKOO.js';
|
|
57
|
+
import { listHarnesses } from '../chunk-XON6ODIC.js';
|
|
58
58
|
import '../chunk-G5SUWZEU.js';
|
|
59
|
+
import '../chunk-3HSLJAMJ.js';
|
|
60
|
+
import { getProviderPreset, AI_PROVIDER_PRESETS } from '../chunk-6UP2EDFN.js';
|
|
59
61
|
import '../chunk-IFGTRL2I.js';
|
|
60
|
-
import { loadFlow, flowLookupRoots, findFlowFileInRoots, loadAllFlowEntries } from '../chunk-
|
|
62
|
+
import { loadFlow, flowLookupRoots, findFlowFileInRoots, loadAllFlowEntries } from '../chunk-WFK4MUBL.js';
|
|
61
63
|
import '../chunk-WD3L5QSU.js';
|
|
62
64
|
import { nodeLabel, nodeSkillAsset, nodeIsInert, nodeIsOptional, nodeRunKind, nodeAssets } from '../chunk-7RGTAEG6.js';
|
|
63
|
-
import '../chunk-
|
|
64
|
-
import { setLibraryAssetCheck, setRenamedEntryLookup, LibraryEntryError, AssetManager, parseRefTolerant, MissingManifestError, parseCanonicalLockKey, normalizeRepoUrl } from '../chunk-
|
|
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-
|
|
66
|
-
import { flowFileNameError, SEMVER_RE } from '../chunk-
|
|
67
|
-
import '../chunk-
|
|
65
|
+
import '../chunk-ASBZOTEO.js';
|
|
66
|
+
import { setLibraryAssetCheck, setRenamedEntryLookup, LibraryEntryError, AssetManager, parseRefTolerant, MissingManifestError, parseCanonicalLockKey, normalizeRepoUrl } from '../chunk-ZDTDS62B.js';
|
|
67
|
+
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-G44FFUMA.js';
|
|
68
|
+
import { flowFileNameError, SEMVER_RE } from '../chunk-O5Y7VMVQ.js';
|
|
69
|
+
import '../chunk-OSABUEWA.js';
|
|
68
70
|
import '../chunk-F3D25RGM.js';
|
|
69
71
|
import '../chunk-3TXEJN4W.js';
|
|
70
72
|
import '../chunk-ISHJITXJ.js';
|
|
71
73
|
import '../chunk-LNFKL23K.js';
|
|
72
74
|
import '../chunk-JRN5QF4C.js';
|
|
73
75
|
import '../chunk-NUELZWCF.js';
|
|
74
|
-
import { installTargetOf, SCAFFOLD_KINDS } from '../chunk-
|
|
76
|
+
import { installTargetOf, SCAFFOLD_KINDS } from '../chunk-KO3VSZQP.js';
|
|
75
77
|
import '../chunk-PKE3PXOK.js';
|
|
76
78
|
import '../chunk-KTBKW2FI.js';
|
|
77
79
|
import '../chunk-UQ6LFBPZ.js';
|
|
78
|
-
import '../chunk-
|
|
80
|
+
import '../chunk-4CD2R4MJ.js';
|
|
79
81
|
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-
|
|
82
|
+
import { RUN_STATE_GITIGNORE_ENTRIES, 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-TMJBEGS4.js';
|
|
81
83
|
import '../chunk-4GY63JU6.js';
|
|
82
|
-
import { factoryAssetRoots } from '../chunk-
|
|
84
|
+
import { factoryAssetRoots } from '../chunk-G7NMF5WQ.js';
|
|
83
85
|
import { deployedDir } from '../chunk-5KRMNUL4.js';
|
|
84
86
|
import { DEFAULT_HARNESS_ID, HARNESS_DEFAULTS } from '../chunk-C5HFK34M.js';
|
|
85
87
|
import { findKindDirs } from '../chunk-MWXYN6NY.js';
|
|
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-
|
|
88
|
+
import { SourceEntryError, LegacyKeyError, ConfigParseError, resolveSkWorkspaceConfig, unselectedInstanceIds, instanceChoiceText, sourceCacheKey, getGlobalCacheDir, resolveAgentDir, AgentRefResolutionError, resolveAgentDefinitionDir, effectiveAgentInstances, matchPin, coerceVersion, loadSkWorkspaceConfig, configParseErrorOf, findWorkspaceRoot, isWorkspaceConfigFilename, SKAILE_YAML_DEFAULT, AGENT_PROFILE_FIELDS } from '../chunk-O7ADRMCR.js';
|
|
87
89
|
import { globalCacheRoot, globalSkaileDir, userConfigPath } from '../chunk-L5VSIPQD.js';
|
|
88
90
|
import { HARNESS_TARGETS, SUPPORTED_HARNESSES, harnessNameForHarnessId } from '../chunk-VTETQCR6.js';
|
|
89
|
-
import { SKAILE_MANIFEST_FILENAME, loadSkPublishManifest, decodeSkaileManifest, LIBRARY_GITIGNORE, librarySymlinkMessage, isNonAssetPath, isNonAssetDir, encodeSkaileManifest } from '../chunk-
|
|
90
|
-
import { setWalkTruncationSink, dedupeRequirements, parseFrontmatter, scanDirectory, parseRequires } from '../chunk-
|
|
91
|
+
import { SKAILE_MANIFEST_FILENAME, loadSkPublishManifest, decodeSkaileManifest, LIBRARY_GITIGNORE, librarySymlinkMessage, isNonAssetPath, isNonAssetDir, encodeSkaileManifest } from '../chunk-QC5BYUED.js';
|
|
92
|
+
import { setWalkTruncationSink, dedupeRequirements, parseFrontmatter, scanDirectory, parseRequires } from '../chunk-GNUA7XT2.js';
|
|
91
93
|
import { pluginTitle } from '../chunk-RVRB27AN.js';
|
|
92
94
|
import { parseAssetRef, isValidPublisher, PUBLISHER_HINT, isValidAssetName, ASSET_NAME_HINT, depToStr, assetRefToStr, slugifyAssetName, parseAssetRefLoose } from '../chunk-V5KG6CCV.js';
|
|
93
95
|
import { portableSpawn, portableSpawnSync } from '../chunk-VSX2G7LA.js';
|
|
94
96
|
import { parseModelRef, resolveEntryBaseUrl } from '../chunk-RXGPFAMN.js';
|
|
95
|
-
import { openSqlite } from '../chunk-
|
|
97
|
+
import { openSqlite } from '../chunk-SGI5MRKP.js';
|
|
96
98
|
import '../chunk-C3CAXQMA.js';
|
|
97
99
|
import { registerLogStore, LogStore, StdoutSink } from '../chunk-BOFL7GIF.js';
|
|
98
100
|
import '../chunk-NSBPE2FW.js';
|
|
@@ -239,7 +241,7 @@ async function runSearch(kind, query, opts) {
|
|
|
239
241
|
}
|
|
240
242
|
}
|
|
241
243
|
async function searchIndex(query, kind, projectDir) {
|
|
242
|
-
const { openLibrary: openLibrary2 } = await import('../open-library-
|
|
244
|
+
const { openLibrary: openLibrary2 } = await import('../open-library-R5EZROFN.js');
|
|
243
245
|
const library = await openLibrary2();
|
|
244
246
|
try {
|
|
245
247
|
const { libraryDirMissing: libraryDirMissing2 } = await import('../library/index.js');
|
|
@@ -415,14 +417,14 @@ async function withAddVersions(entries, projectDir) {
|
|
|
415
417
|
}
|
|
416
418
|
async function searchLocal(query, kind, opts, showStore, airGapped) {
|
|
417
419
|
const projectDir = path19__default.resolve(opts.projectDir);
|
|
418
|
-
const { restoreSourceReaders } = await import('../source-
|
|
420
|
+
const { restoreSourceReaders } = await import('../source-FOELFCY6.js');
|
|
419
421
|
for (const name of await restoreSourceReaders(projectDir)) {
|
|
420
422
|
logInfo(`Re-registered source "${name}" (its library entry was removed elsewhere).`);
|
|
421
423
|
}
|
|
422
424
|
const factory = await searchFactory(projectDir, query, kind);
|
|
423
425
|
let entries = unionEntries(await searchIndex(query, kind, projectDir), factory);
|
|
424
426
|
if (entries.length === 0 && !query && !kind && !airGapped) {
|
|
425
|
-
const { autoSyncForSearch } = await import('../source-
|
|
427
|
+
const { autoSyncForSearch } = await import('../source-FOELFCY6.js');
|
|
426
428
|
if (await autoSyncForSearch(projectDir)) {
|
|
427
429
|
entries = unionEntries(await searchIndex(query, kind, projectDir), factory);
|
|
428
430
|
}
|
|
@@ -540,7 +542,7 @@ async function searchStore(query, kind, opts, airGapped) {
|
|
|
540
542
|
logInfo("air-gapped (cache_ttl: 0) \u2014 local sources only");
|
|
541
543
|
return "skipped";
|
|
542
544
|
}
|
|
543
|
-
const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError: LocalCatalogDisabledError2 } = await import('../open-library-
|
|
545
|
+
const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError: LocalCatalogDisabledError2 } = await import('../open-library-R5EZROFN.js');
|
|
544
546
|
try {
|
|
545
547
|
const remote = await openCatalogSource2({ projectDir: path19__default.resolve(opts.projectDir) });
|
|
546
548
|
const assets = await remote.listAssets(kind ? { kind } : {});
|
|
@@ -1071,7 +1073,8 @@ function infoShowsLocked(locked, latest) {
|
|
|
1071
1073
|
}
|
|
1072
1074
|
function infoVersionLine(locked, latest) {
|
|
1073
1075
|
if (infoShowsLocked(locked, latest)) return `locked ${locked} (latest ${latest})`;
|
|
1074
|
-
|
|
1076
|
+
if (latest) return latest;
|
|
1077
|
+
return locked && !locked.startsWith("0.0.0-sha") ? locked : void 0;
|
|
1075
1078
|
}
|
|
1076
1079
|
function lockedVersionOf(projectDir, kind, name, publisher) {
|
|
1077
1080
|
try {
|
|
@@ -1086,6 +1089,20 @@ function lockedVersionOf(projectDir, kind, name, publisher) {
|
|
|
1086
1089
|
}
|
|
1087
1090
|
return void 0;
|
|
1088
1091
|
}
|
|
1092
|
+
function lockedUpstreamOf(projectDir, kind, name, publisher) {
|
|
1093
|
+
try {
|
|
1094
|
+
const lock = readLock(path19__default.join(projectDir, "skaile.lock.yaml"));
|
|
1095
|
+
for (const [key, entry] of Object.entries(lock?.assets ?? {})) {
|
|
1096
|
+
const id = parseCanonicalLockKey(key);
|
|
1097
|
+
if (id.kind !== kind || id.name !== name || entry.library || !entry.source) continue;
|
|
1098
|
+
if (publisher && id.publisher && id.publisher !== publisher.replace(/^@/, "")) continue;
|
|
1099
|
+
const commit = /^0+$/.test(entry.source.commit) ? "" : entry.source.commit.slice(0, 7);
|
|
1100
|
+
return commit ? `${entry.source.url}@${commit}` : entry.source.url;
|
|
1101
|
+
}
|
|
1102
|
+
} catch {
|
|
1103
|
+
}
|
|
1104
|
+
return void 0;
|
|
1105
|
+
}
|
|
1089
1106
|
async function resolveInfoEntry(am2, ref, opts) {
|
|
1090
1107
|
const local = await am2.info(ref);
|
|
1091
1108
|
if (local) return { entry: local };
|
|
@@ -1095,14 +1112,17 @@ async function resolveInfoEntry(am2, ref, opts) {
|
|
|
1095
1112
|
if (deployed) {
|
|
1096
1113
|
if (isFile(deployed.source)) {
|
|
1097
1114
|
const { data } = parseFrontmatter(readTextOrEmpty(deployed.source));
|
|
1098
|
-
if (typeof data.name === "string" && data.name !== deployed.name)
|
|
1115
|
+
if (typeof data.name === "string" && data.name !== deployed.name) {
|
|
1116
|
+
return { entry: deployed, deployed: true };
|
|
1117
|
+
}
|
|
1099
1118
|
const description = typeof data.description === "string" ? data.description : "";
|
|
1100
1119
|
return {
|
|
1101
1120
|
entry: {
|
|
1102
1121
|
...deployed,
|
|
1103
1122
|
description: description || deployed.description,
|
|
1104
1123
|
version: lockedVersionOf(opts.projectDir, deployed.kind, deployed.name) ?? deployed.version
|
|
1105
|
-
}
|
|
1124
|
+
},
|
|
1125
|
+
deployed: true
|
|
1106
1126
|
};
|
|
1107
1127
|
}
|
|
1108
1128
|
const scanned = await scanDirectory(deployed.source, deployed.publisher ?? "", {
|
|
@@ -1112,10 +1132,10 @@ async function resolveInfoEntry(am2, ref, opts) {
|
|
|
1112
1132
|
// kind. Never fall back across kinds — a nested manifest of another kind
|
|
1113
1133
|
// is a different asset, not this one.
|
|
1114
1134
|
scanned.find((e) => e.kind === deployed.kind);
|
|
1115
|
-
return { entry: match ?? deployed };
|
|
1135
|
+
return { entry: match ?? deployed, deployed: true };
|
|
1116
1136
|
}
|
|
1117
1137
|
const lookup = opts.storeLookup ?? (async (filter) => {
|
|
1118
|
-
const { resolveCatalogSource } = await import('../open-library-
|
|
1138
|
+
const { resolveCatalogSource } = await import('../open-library-R5EZROFN.js');
|
|
1119
1139
|
const { source, close } = await resolveCatalogSource({ projectDir: opts.projectDir });
|
|
1120
1140
|
try {
|
|
1121
1141
|
return await source.listAssets(filter);
|
|
@@ -1131,7 +1151,7 @@ async function resolveInfoEntry(am2, ref, opts) {
|
|
|
1131
1151
|
);
|
|
1132
1152
|
return { entry: hit ? catalogAssetToEntry(hit) : null };
|
|
1133
1153
|
} catch (err) {
|
|
1134
|
-
const { LocalCatalogDisabledError: LocalCatalogDisabledError2 } = await import('../open-library-
|
|
1154
|
+
const { LocalCatalogDisabledError: LocalCatalogDisabledError2 } = await import('../open-library-R5EZROFN.js');
|
|
1135
1155
|
const storeNote = err instanceof Error ? err.message : String(err);
|
|
1136
1156
|
const disabled = err instanceof LocalCatalogDisabledError2 || /catalog\.url/i.test(storeNote);
|
|
1137
1157
|
return { entry: null, storeNote, ...disabled ? { storeDisabled: true } : {} };
|
|
@@ -1179,8 +1199,10 @@ function makeInfoCommand() {
|
|
|
1179
1199
|
if (infoVersionText) console.log(` version: ${infoVersionText}`);
|
|
1180
1200
|
if (entry.description) console.log(` description: ${entry.description}`);
|
|
1181
1201
|
if (entry.publisher) console.log(` repository: ${S.dim(entry.publisher)}`);
|
|
1202
|
+
const upstream = lookup.deployed ? lockedUpstreamOf(projectDir, entry.kind, entry.name, parseRefTolerant(ref)?.publisher) : void 0;
|
|
1182
1203
|
const infoSource = showLocked && entry.source.endsWith(`#${entry.version}`) ? `${entry.source.slice(0, -`#${entry.version}`.length)}#${infoLocked}` : entry.source;
|
|
1183
|
-
console.log(` source: ${S.dim(infoSource)}`);
|
|
1204
|
+
console.log(` source: ${S.dim(upstream ?? infoSource)}`);
|
|
1205
|
+
if (upstream) console.log(` deployed: ${S.dim(infoSource)}`);
|
|
1184
1206
|
const infoLibrary = await am2.lockedLibraryOf(
|
|
1185
1207
|
entry.kind,
|
|
1186
1208
|
entry.name,
|
|
@@ -1270,15 +1292,20 @@ function makeDoctorCommand() {
|
|
|
1270
1292
|
// A library that went back past the lock is no drift either (p1257).
|
|
1271
1293
|
...await am2.libraryOlderNotices()
|
|
1272
1294
|
];
|
|
1273
|
-
|
|
1295
|
+
await am2.probeStoreOrigins();
|
|
1296
|
+
const notChecked = am2.takeStoreNotChecked();
|
|
1297
|
+
const storeUnreachable = notChecked.some((n) => n.reason === "unreachable");
|
|
1298
|
+
if (gaps.length === 0 && edited.length === 0 && !storeUnreachable) {
|
|
1274
1299
|
if (configErrors === 0) logOk("No missing dependencies.");
|
|
1275
1300
|
for (const n of notices) logWarn(n);
|
|
1301
|
+
reportStoreNotCheckedForUpdates(notChecked);
|
|
1276
1302
|
return;
|
|
1277
1303
|
}
|
|
1278
1304
|
for (const n of notices) logWarn(n);
|
|
1279
1305
|
process.exitCode = 1;
|
|
1280
1306
|
for (const e of edited) logErr(e);
|
|
1281
1307
|
for (const g of gaps) if (g.type !== "requires") logErr(g.message);
|
|
1308
|
+
reportStoreNotCheckedForUpdates(notChecked);
|
|
1282
1309
|
const missing = gaps.filter((g) => g.type === "requires" && g.asset !== void 0);
|
|
1283
1310
|
if (missing.length === 0) return;
|
|
1284
1311
|
const assetW = Math.max(5, ...missing.map((g) => (g.asset ?? "").length));
|
|
@@ -1374,7 +1401,8 @@ ${body}
|
|
|
1374
1401
|
function copyFilter(root) {
|
|
1375
1402
|
return (src) => {
|
|
1376
1403
|
const rel = path19.relative(root, src).split(path19.sep).join("/");
|
|
1377
|
-
return rel === "" || !(isNonAssetPath(rel) ||
|
|
1404
|
+
return rel === "" || !(isNonAssetPath(rel, "asset-root") || // The generic build names count only directly in the copied folder.
|
|
1405
|
+
isNonAssetDir(path19.basename(src), !rel.includes("/")));
|
|
1378
1406
|
};
|
|
1379
1407
|
}
|
|
1380
1408
|
async function resolveDefByRef(library, ref, opts) {
|
|
@@ -1755,9 +1783,9 @@ function dirSizeOfDir(dir) {
|
|
|
1755
1783
|
return total;
|
|
1756
1784
|
}
|
|
1757
1785
|
function removeCacheTargets(targets, opts) {
|
|
1758
|
-
const
|
|
1759
|
-
for (const t of
|
|
1760
|
-
return
|
|
1786
|
+
const present2 = targets.filter((t) => existsSync(t));
|
|
1787
|
+
for (const t of present2) rmSync(t, { recursive: true, force: true });
|
|
1788
|
+
return present2;
|
|
1761
1789
|
}
|
|
1762
1790
|
function fmtBytes(n) {
|
|
1763
1791
|
const u = ["B", "KB", "MB", "GB"];
|
|
@@ -1805,6 +1833,7 @@ function makeCacheCommand() {
|
|
|
1805
1833
|
const removed = removeCacheTargets(targets);
|
|
1806
1834
|
console.log();
|
|
1807
1835
|
for (const r of removed) logOk(`Removed ${r}`);
|
|
1836
|
+
if (opts.global) await dropVanishedSourceRows();
|
|
1808
1837
|
});
|
|
1809
1838
|
cmd.command("dir").description("Print the resolved cache roots").option("--global", "Include the global cache root").option("--project-dir <path>", "Project directory", process.cwd()).action((opts) => {
|
|
1810
1839
|
console.log(path19__default.join(path19__default.resolve(opts.projectDir), ".skaile", "cache"));
|
|
@@ -1859,7 +1888,7 @@ function makeCatalogCommand() {
|
|
|
1859
1888
|
return catalog;
|
|
1860
1889
|
}
|
|
1861
1890
|
async function runLocalCatalogTest(projectDir) {
|
|
1862
|
-
const { resolveCatalogSource } = await import('../open-library-
|
|
1891
|
+
const { resolveCatalogSource } = await import('../open-library-R5EZROFN.js');
|
|
1863
1892
|
let resolved;
|
|
1864
1893
|
try {
|
|
1865
1894
|
resolved = await resolveCatalogSource({ projectDir });
|
|
@@ -2035,7 +2064,7 @@ async function scanLibraryFlowEntries() {
|
|
|
2035
2064
|
const { LocalIndex, resolveIndexPath, scanAuthoringLibraries } = await import('../library/index.js');
|
|
2036
2065
|
const indexPath = resolveIndexPath();
|
|
2037
2066
|
if (!existsSync(indexPath)) return entries;
|
|
2038
|
-
const { getKindRegistry: getKindRegistry2 } = await import('../open-registry-
|
|
2067
|
+
const { getKindRegistry: getKindRegistry2 } = await import('../open-registry-RZW2AFD6.js');
|
|
2039
2068
|
const index = new LocalIndex({ indexPath });
|
|
2040
2069
|
try {
|
|
2041
2070
|
for (const { library, assets } of await scanAuthoringLibraries(index, getKindRegistry2())) {
|
|
@@ -2247,6 +2276,20 @@ async function unsetCatalogKey(key) {
|
|
|
2247
2276
|
console.log(S.dim(` \u2192 ${filePath}`));
|
|
2248
2277
|
}
|
|
2249
2278
|
var API_KEY_PREFIX = "apiKey.";
|
|
2279
|
+
function unknownKeyMessage(key) {
|
|
2280
|
+
if (CATALOG_KEYS.has(key) || PERSONAL_KEYS.has(key) || key.startsWith(API_KEY_PREFIX)) {
|
|
2281
|
+
return null;
|
|
2282
|
+
}
|
|
2283
|
+
if (key === "provider" || key === "cloud" || key === "cloudConfig") {
|
|
2284
|
+
return `'${key}' is no longer a setting \u2014 an endpoint is an AI provider registry entry and a session selects one with a model reference.
|
|
2285
|
+
Define it: skaile providers add <id> --preset <preset>
|
|
2286
|
+
Select it: skaile config set model <providerId>/<modelId>`;
|
|
2287
|
+
}
|
|
2288
|
+
return `'${key}' is not a personal setting.
|
|
2289
|
+
Personal keys: ${[...PERSONAL_KEYS].join(", ")}, ${API_KEY_PREFIX}<provider>
|
|
2290
|
+
Catalog keys: ${[...CATALOG_KEYS].join(", ")}
|
|
2291
|
+
Project config (harness, model, paths, resources) belongs in skaile.yaml`;
|
|
2292
|
+
}
|
|
2250
2293
|
function collectWorkspaceDefaults(projectDir) {
|
|
2251
2294
|
const wsDefaults = {};
|
|
2252
2295
|
const ws = resolveSkWorkspaceConfig(projectDir);
|
|
@@ -2417,6 +2460,11 @@ function makeConfigCommand() {
|
|
|
2417
2460
|
console.log(resolveConfig({ projectDir }).catalog[field]);
|
|
2418
2461
|
return;
|
|
2419
2462
|
}
|
|
2463
|
+
const refusal = unknownKeyMessage(key);
|
|
2464
|
+
if (refusal) {
|
|
2465
|
+
logErr(refusal);
|
|
2466
|
+
process.exit(1);
|
|
2467
|
+
}
|
|
2420
2468
|
const config = opts.global ? await loadSettings(globalSettingsPath()) : await resolveSettings(projectDir);
|
|
2421
2469
|
const value = config[key];
|
|
2422
2470
|
console.log(value ?? S.dim("(not set)"));
|
|
@@ -2431,23 +2479,12 @@ function makeConfigCommand() {
|
|
|
2431
2479
|
await setCatalogKey(key, value);
|
|
2432
2480
|
return;
|
|
2433
2481
|
}
|
|
2434
|
-
|
|
2435
|
-
|
|
2436
|
-
|
|
2437
|
-
Define it: skaile providers add <id> --preset <preset>
|
|
2438
|
-
Select it: skaile config set model <providerId>/<modelId>`
|
|
2439
|
-
);
|
|
2482
|
+
const refusal = unknownKeyMessage(key);
|
|
2483
|
+
if (refusal) {
|
|
2484
|
+
logErr(refusal);
|
|
2440
2485
|
process.exit(1);
|
|
2441
2486
|
}
|
|
2442
2487
|
const isApiKey = key.startsWith(API_KEY_PREFIX);
|
|
2443
|
-
if (!PERSONAL_KEYS.has(key) && !isApiKey) {
|
|
2444
|
-
logErr(
|
|
2445
|
-
`'${key}' is not a personal setting.
|
|
2446
|
-
Personal keys: ${[...PERSONAL_KEYS].join(", ")}, ${API_KEY_PREFIX}<provider>
|
|
2447
|
-
Project config (harness, model, paths, resources) belongs in skaile.yaml`
|
|
2448
|
-
);
|
|
2449
|
-
process.exit(1);
|
|
2450
|
-
}
|
|
2451
2488
|
if (isApiKey) {
|
|
2452
2489
|
setApiKeySugar(key.slice(API_KEY_PREFIX.length), value, projectDir);
|
|
2453
2490
|
return;
|
|
@@ -2463,13 +2500,13 @@ function makeConfigCommand() {
|
|
|
2463
2500
|
if (key === "model") {
|
|
2464
2501
|
await loadDeclaredPlugins(projectDir);
|
|
2465
2502
|
const harness = (await resolveSettings(projectDir)).harness ?? DEFAULT_HARNESS_ID;
|
|
2466
|
-
const
|
|
2503
|
+
const refusal2 = checkHarnessModel(harness, {
|
|
2467
2504
|
registry: loadRegistryView({ projectDir }).merged,
|
|
2468
2505
|
model: value,
|
|
2469
2506
|
roles: resolveSkWorkspaceConfig(projectDir).roles
|
|
2470
2507
|
});
|
|
2471
|
-
if (
|
|
2472
|
-
logErr(`${
|
|
2508
|
+
if (refusal2) {
|
|
2509
|
+
logErr(`${refusal2} (the project's harness is ${harness})`);
|
|
2473
2510
|
process.exit(1);
|
|
2474
2511
|
}
|
|
2475
2512
|
}
|
|
@@ -3200,7 +3237,7 @@ async function ensureTargetsRegistered(projectDir) {
|
|
|
3200
3237
|
const { resolveSkWorkspaceConfig: resolveSkWorkspaceConfig2 } = await import('../core/index.js');
|
|
3201
3238
|
const config = resolveSkWorkspaceConfig2(projectDir);
|
|
3202
3239
|
if (config.plugins && config.plugins.length > 0) {
|
|
3203
|
-
const { ensurePluginsLoaded } = await import('../plugin-store-
|
|
3240
|
+
const { ensurePluginsLoaded } = await import('../plugin-store-OJTERUEZ.js');
|
|
3204
3241
|
const result = await ensurePluginsLoaded(projectDir, config.plugins, pluginRegistry);
|
|
3205
3242
|
for (const f of result.failed) logWarn(f.error);
|
|
3206
3243
|
}
|
|
@@ -4426,6 +4463,7 @@ async function reindexLibrary(lib, library, name) {
|
|
|
4426
4463
|
(failing > 0 ? logWarn : logOk)(`Indexed ${res.assetsUpdated} asset(s) from ${name}.`);
|
|
4427
4464
|
warnIgnoredDomainFiles(lib.path);
|
|
4428
4465
|
warnLegacyBundleFiles(lib.path);
|
|
4466
|
+
warnUntrackedAssetFiles(lib.path);
|
|
4429
4467
|
if (skippedUnparsable > 0) {
|
|
4430
4468
|
logErr(`${skippedUnparsable} asset(s) skipped: manifest could not be parsed.`);
|
|
4431
4469
|
process.exitCode = 1;
|
|
@@ -4569,6 +4607,18 @@ function canonicalDir(dir) {
|
|
|
4569
4607
|
}
|
|
4570
4608
|
return path19.join(fs8.realpathSync(existing), ...missing);
|
|
4571
4609
|
}
|
|
4610
|
+
function libraryContaining(libraries, cwd) {
|
|
4611
|
+
const here = canonicalDir(cwd);
|
|
4612
|
+
let best;
|
|
4613
|
+
for (const lib of libraries) {
|
|
4614
|
+
if (lib.ownership === "reader" || libraryDirMissing(lib)) continue;
|
|
4615
|
+
const root = canonicalDir(lib.path);
|
|
4616
|
+
const rel = path19.relative(root, here);
|
|
4617
|
+
const inside = rel === "" || !rel.startsWith(`..${path19.sep}`) && rel !== ".." && !path19.isAbsolute(rel);
|
|
4618
|
+
if (inside && (!best || root.length > best.root.length)) best = { lib, root };
|
|
4619
|
+
}
|
|
4620
|
+
return best?.lib;
|
|
4621
|
+
}
|
|
4572
4622
|
function refuseGlobalInstallFolder(name, dir) {
|
|
4573
4623
|
const reserved = globalInstallDir();
|
|
4574
4624
|
const rel = path19.relative(canonicalDir(reserved).toLowerCase(), canonicalDir(dir).toLowerCase());
|
|
@@ -4686,6 +4736,23 @@ function readOriginTracking(dir) {
|
|
|
4686
4736
|
});
|
|
4687
4737
|
return { url, branch: head.status === 0 && head.stdout.trim() || "main" };
|
|
4688
4738
|
}
|
|
4739
|
+
function exitOnCloneWithoutCheckout(dir, name) {
|
|
4740
|
+
const head = spawnSync("git", ["rev-parse", "--verify", "-q", "HEAD"], {
|
|
4741
|
+
cwd: dir,
|
|
4742
|
+
encoding: "utf-8"
|
|
4743
|
+
});
|
|
4744
|
+
if (head.status === 0) return;
|
|
4745
|
+
const refs = spawnSync("git", ["for-each-ref", "--format=%(refname)", "refs/remotes/origin"], {
|
|
4746
|
+
cwd: dir,
|
|
4747
|
+
encoding: "utf-8"
|
|
4748
|
+
});
|
|
4749
|
+
const branches = (refs.stdout ?? "").split("\n").map((ref) => ref.trim().replace(/^refs\/remotes\/origin\//, "")).filter((branch) => branch !== "" && branch !== "HEAD" && !branch.startsWith("refs/"));
|
|
4750
|
+
if (branches.length === 0) return;
|
|
4751
|
+
logErr(
|
|
4752
|
+
`${dir} is a git clone with no branch checked out (its remote HEAD names a branch that does not exist): run \`git -C ${dir} checkout ${branches[0]}\` (remote branches: ${branches.join(", ")}), then re-run \`skaile library init ${name} --path ${dir}\`.`
|
|
4753
|
+
);
|
|
4754
|
+
process.exit(1);
|
|
4755
|
+
}
|
|
4689
4756
|
function requireGitBackend(lib, verb) {
|
|
4690
4757
|
if (lib.backend !== "git") {
|
|
4691
4758
|
logErr(
|
|
@@ -4732,7 +4799,7 @@ function remoteBranches(url) {
|
|
|
4732
4799
|
return r.stdout.split("\n").map((line) => line.split(" ")[1]?.replace(/^refs\/heads\//, "")).filter((b) => !!b);
|
|
4733
4800
|
}
|
|
4734
4801
|
async function warnIfNotGithubRemote(name, url) {
|
|
4735
|
-
const { isGithubRemote, notGithubRemoteMessage } = await import('../library-publish-
|
|
4802
|
+
const { isGithubRemote, notGithubRemoteMessage } = await import('../library-publish-FNNDWVBO.js');
|
|
4736
4803
|
if (!isGithubRemote(url)) logWarn(notGithubRemoteMessage(name, url));
|
|
4737
4804
|
}
|
|
4738
4805
|
function scaffoldLibraryFiles(dir, name) {
|
|
@@ -4771,23 +4838,59 @@ by the same ref.
|
|
|
4771
4838
|
}
|
|
4772
4839
|
return written;
|
|
4773
4840
|
}
|
|
4841
|
+
function commitScaffold(dir, files) {
|
|
4842
|
+
const run2 = (args) => spawnSync("git", args, { cwd: dir, encoding: "utf-8" });
|
|
4843
|
+
const add = run2(["add", "--", ...files]);
|
|
4844
|
+
if (add.status !== 0) return add.stderr.trim().split("\n")[0] || "git add failed";
|
|
4845
|
+
const commit = run2(["commit", "-q", "-m", "skaile: scaffold library", "--", ...files]);
|
|
4846
|
+
if (commit.status === 0) return void 0;
|
|
4847
|
+
return (commit.stderr.trim() || commit.stdout.trim()).split("\n")[0] || "git commit failed";
|
|
4848
|
+
}
|
|
4849
|
+
async function refuseRemoteOfSource(manager, url) {
|
|
4850
|
+
const key = sourceCacheKey(url);
|
|
4851
|
+
const libraries = await manager.listLibraries();
|
|
4852
|
+
const cacheRoot = path19.resolve(getGlobalCacheDir()) + path19.sep;
|
|
4853
|
+
const clash = libraries.find(
|
|
4854
|
+
(l) => path19.resolve(l.path).startsWith(cacheRoot) && "url" in l.backendConfig && sourceCacheKey(l.backendConfig.url) === key
|
|
4855
|
+
);
|
|
4856
|
+
if (!clash) return;
|
|
4857
|
+
logErr(
|
|
4858
|
+
`${url} is already registered as the source "${clash.name}"; it needs no library \u2014 its assets are searchable already. Run \`skaile source remove\` first to register it as a library.`
|
|
4859
|
+
);
|
|
4860
|
+
process.exit(1);
|
|
4861
|
+
}
|
|
4774
4862
|
function makeLibraryCommand() {
|
|
4775
4863
|
const cmd = new Command("library").description("Manage user authoring libraries (local / git)").enablePositionalOptions();
|
|
4776
4864
|
cmd.command("list").description("List all registered libraries").option("--json", "Output as JSON").action(async (opts) => {
|
|
4777
4865
|
const { manager, close } = await openLibraryManager();
|
|
4778
4866
|
try {
|
|
4779
|
-
const
|
|
4867
|
+
const scoped = new AssetManager({
|
|
4868
|
+
registry: getKindRegistry(),
|
|
4869
|
+
projectDir: process.cwd()
|
|
4870
|
+
}).scopeLibraryList(await manager.listLibraries());
|
|
4871
|
+
const ls = scoped.libraries;
|
|
4780
4872
|
if (opts.json) {
|
|
4781
4873
|
return console.log(
|
|
4782
4874
|
JSON.stringify(
|
|
4783
|
-
ls.map((l) =>
|
|
4875
|
+
ls.map((l) => ({
|
|
4876
|
+
...l,
|
|
4877
|
+
...libraryDirMissing(l) ? { directoryMissing: true } : {},
|
|
4878
|
+
...scoped.sources.has(l.id) ? { source: true } : {}
|
|
4879
|
+
})),
|
|
4784
4880
|
null,
|
|
4785
4881
|
2
|
|
4786
4882
|
)
|
|
4787
4883
|
);
|
|
4788
4884
|
}
|
|
4885
|
+
const uncached = uncachedSources(process.cwd());
|
|
4886
|
+
const hintUncached = () => {
|
|
4887
|
+
for (const name of uncached) {
|
|
4888
|
+
logInfo(`source ${name} is not cloned: run \`skaile source sync\` to clone it.`);
|
|
4889
|
+
}
|
|
4890
|
+
};
|
|
4789
4891
|
if (ls.length === 0) {
|
|
4790
4892
|
logInfo("No libraries registered. Run `skaile library init personal` to start.");
|
|
4893
|
+
hintUncached();
|
|
4791
4894
|
return;
|
|
4792
4895
|
}
|
|
4793
4896
|
console.log();
|
|
@@ -4799,13 +4902,14 @@ function makeLibraryCommand() {
|
|
|
4799
4902
|
for (const l of ls) {
|
|
4800
4903
|
const def = l.isDefault ? pc5.green("\u25B8 ") : " ";
|
|
4801
4904
|
console.log(
|
|
4802
|
-
`${def}${S.cmd(l.name.padEnd(nameW))} ${pc5.dim(l.backend.padEnd(backendW))} ${pc5.dim(l.ownership.padEnd(ownerW))} ${pc5.dim(l.path)}${libraryDirMissing(l) ? ` ${pc5.red("(directory missing)")}` : ""}`
|
|
4905
|
+
`${def}${S.cmd(l.name.padEnd(nameW))} ${pc5.dim(l.backend.padEnd(backendW))} ${pc5.dim(l.ownership.padEnd(ownerW))} ${pc5.dim(l.path)}${scoped.sources.has(l.id) ? ` ${pc5.dim("(source)")}` : ""}${libraryDirMissing(l) ? ` ${pc5.red("(directory missing)")}` : ""}`
|
|
4803
4906
|
);
|
|
4804
4907
|
}
|
|
4805
4908
|
console.log(`
|
|
4806
4909
|
${S.dim(`${ls.length} library(s)`)}
|
|
4807
4910
|
`);
|
|
4808
4911
|
for (const l of ls) if (libraryDirMissing(l)) logWarn(missingLibraryDirMessage(l));
|
|
4912
|
+
hintUncached();
|
|
4809
4913
|
} finally {
|
|
4810
4914
|
close();
|
|
4811
4915
|
}
|
|
@@ -4865,6 +4969,7 @@ function makeLibraryCommand() {
|
|
|
4865
4969
|
process.exit(1);
|
|
4866
4970
|
}
|
|
4867
4971
|
const adopted = opts.git ? null : readOriginTracking(libPath);
|
|
4972
|
+
if (adopted) exitOnCloneWithoutCheckout(libPath, name);
|
|
4868
4973
|
if (ownership !== "owner" && !opts.git && !adopted) {
|
|
4869
4974
|
logErr(
|
|
4870
4975
|
`--${ownership} needs --git <url> or an existing git clone: ${LOCAL_OWNERSHIP_REASON}`
|
|
@@ -4878,6 +4983,7 @@ function makeLibraryCommand() {
|
|
|
4878
4983
|
logErr(`A library named "${name}" is already registered.`);
|
|
4879
4984
|
process.exit(1);
|
|
4880
4985
|
}
|
|
4986
|
+
if (opts.git) await refuseRemoteOfSource(manager, opts.git);
|
|
4881
4987
|
if (existing) await manager.removeLibrary(name);
|
|
4882
4988
|
await assertLibraryPathFree(manager, libPath);
|
|
4883
4989
|
await refuseNestedLibraryPath(manager, libPath);
|
|
@@ -4923,6 +5029,16 @@ function makeLibraryCommand() {
|
|
|
4923
5029
|
`Library "${name}" ${blank ? "created" : "registered"} at ${libPath}${isDefault ? " (default)" : ""}`
|
|
4924
5030
|
);
|
|
4925
5031
|
if (scaffolded.length > 0) logInfo(`Scaffolded ${scaffolded.join(", ")}.`);
|
|
5032
|
+
if (scaffolded.length > 0 && opts.git) {
|
|
5033
|
+
const failure = commitScaffold(libPath, scaffolded);
|
|
5034
|
+
if (failure) {
|
|
5035
|
+
logWarn(
|
|
5036
|
+
`Could not commit the scaffold (${failure}). Run \`skaile library commit ${name} -m "init"\` before \`pull\` or \`sync\`.`
|
|
5037
|
+
);
|
|
5038
|
+
} else {
|
|
5039
|
+
logInfo("Committed the scaffold.");
|
|
5040
|
+
}
|
|
5041
|
+
}
|
|
4926
5042
|
if (adopted) {
|
|
4927
5043
|
logInfo(
|
|
4928
5044
|
`Adopted existing git clone as a git library tracking ${adopted.url} (ownership: ${ownership}).`
|
|
@@ -4979,6 +5095,7 @@ function makeLibraryCommand() {
|
|
|
4979
5095
|
const { manager, close } = await openLibraryManager();
|
|
4980
5096
|
try {
|
|
4981
5097
|
const lib = await manager.requireLibraryDir(name);
|
|
5098
|
+
await refuseRemoteOfSource(manager, url);
|
|
4982
5099
|
if (lib.backend === "git") {
|
|
4983
5100
|
logErr(
|
|
4984
5101
|
`Library "${name}" is already git-backed. Use \`skaile library set ${name} backendConfig.url=${url}\` to change its remote.`
|
|
@@ -5096,7 +5213,7 @@ function makeLibraryCommand() {
|
|
|
5096
5213
|
logErr(res.path);
|
|
5097
5214
|
process.exit(1);
|
|
5098
5215
|
}
|
|
5099
|
-
logOk(`Created ${effectiveKind}: ${pc5.dim(res.path)}`);
|
|
5216
|
+
logOk(`Created ${effectiveKind} in library ${target.name}: ${pc5.dim(res.path)}`);
|
|
5100
5217
|
if (opts.description === void 0) {
|
|
5101
5218
|
logWarn(
|
|
5102
5219
|
`Description is a TODO placeholder \u2014 edit it (what the ${effectiveKind} does and when to use it) or \`skaile validate\` will fail.`
|
|
@@ -5125,6 +5242,8 @@ function makeLibraryCommand() {
|
|
|
5125
5242
|
);
|
|
5126
5243
|
async function resolveTargetLibrary(manager, libraryName) {
|
|
5127
5244
|
if (libraryName) return manager.requireLibraryDir(libraryName);
|
|
5245
|
+
const here = libraryContaining(await manager.listLibraries(), process.cwd());
|
|
5246
|
+
if (here) return manager.requireLibraryDir(here.name);
|
|
5128
5247
|
const def = await manager.findDefaultLibrary();
|
|
5129
5248
|
if (def) return manager.requireLibraryDir(def.name);
|
|
5130
5249
|
if ((await manager.listLibraries()).length === 0) {
|
|
@@ -5483,16 +5602,16 @@ function makeLibraryCommand() {
|
|
|
5483
5602
|
"With --create-repo: create the repo private (the store only accepts public repos)"
|
|
5484
5603
|
).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(
|
|
5485
5604
|
async (lib, opts) => {
|
|
5486
|
-
const { runLibraryPublish } = await import('../library-publish-
|
|
5605
|
+
const { runLibraryPublish } = await import('../library-publish-FNNDWVBO.js');
|
|
5487
5606
|
await withStoreErrorHandling(() => runLibraryPublish(lib, opts));
|
|
5488
5607
|
}
|
|
5489
5608
|
);
|
|
5490
5609
|
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) => {
|
|
5491
|
-
const { runLibraryRegister } = await import('../library-publish-
|
|
5610
|
+
const { runLibraryRegister } = await import('../library-publish-FNNDWVBO.js');
|
|
5492
5611
|
await withStoreErrorHandling(() => runLibraryRegister(lib, opts));
|
|
5493
5612
|
});
|
|
5494
5613
|
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) => {
|
|
5495
|
-
const { runLibraryYank } = await import('../library-publish-
|
|
5614
|
+
const { runLibraryYank } = await import('../library-publish-FNNDWVBO.js');
|
|
5496
5615
|
await withStoreErrorHandling(() => runLibraryYank(lib, opts));
|
|
5497
5616
|
});
|
|
5498
5617
|
return cmd;
|
|
@@ -6152,7 +6271,7 @@ function scheduleSoftDepPreview() {
|
|
|
6152
6271
|
}
|
|
6153
6272
|
async function loadAssets() {
|
|
6154
6273
|
softDepPreviewCache.clear();
|
|
6155
|
-
const { gatherAssetFeeds } = await import('../asset-feeds-
|
|
6274
|
+
const { gatherAssetFeeds } = await import('../asset-feeds-4A7PJ4OB.js');
|
|
6156
6275
|
const { entries, notes } = await gatherAssetFeeds(am, am.projectDir);
|
|
6157
6276
|
if (notes.length > 0) {
|
|
6158
6277
|
state.message = notes.map((n) => `[${n.feed}] ${n.message}`).join(" \u2022 ");
|
|
@@ -6356,7 +6475,7 @@ function reconcileCollapsedSets(rows) {
|
|
|
6356
6475
|
async function loadSourcesAndLibraries() {
|
|
6357
6476
|
try {
|
|
6358
6477
|
const [{ openLibraryManager: openLibraryManager2 }, { getGlobalCacheDir: getGlobalCacheDir2, globalSkaileDir: globalSkaileDir2 }] = await Promise.all([
|
|
6359
|
-
import('../open-library-
|
|
6478
|
+
import('../open-library-R5EZROFN.js'),
|
|
6360
6479
|
import('../core/index.js')
|
|
6361
6480
|
]);
|
|
6362
6481
|
const { manager, library, close } = await openLibraryManager2();
|
|
@@ -8220,7 +8339,7 @@ function existingIdentities(root) {
|
|
|
8220
8339
|
}
|
|
8221
8340
|
return found;
|
|
8222
8341
|
}
|
|
8223
|
-
function planMarkdownMoves(root, knownKinds, manual, unknownTypes, identities, conflicts, existing) {
|
|
8342
|
+
function planMarkdownMoves(root, knownKinds, manual, unknownTypes, identities, conflicts, existing, notConverted) {
|
|
8224
8343
|
const moves = [];
|
|
8225
8344
|
const changes = [];
|
|
8226
8345
|
const targets = /* @__PURE__ */ new Set();
|
|
@@ -8238,6 +8357,9 @@ function planMarkdownMoves(root, knownKinds, manual, unknownTypes, identities, c
|
|
|
8238
8357
|
manual.push(
|
|
8239
8358
|
`${posix2(path19__default.relative(root, file))}: ${posix2(path19__default.relative(root, to))} already exists; not moved`
|
|
8240
8359
|
);
|
|
8360
|
+
notConverted.push(
|
|
8361
|
+
`${posix2(path19__default.relative(root, file))} (${posix2(path19__default.relative(root, to))} exists)`
|
|
8362
|
+
);
|
|
8241
8363
|
continue;
|
|
8242
8364
|
}
|
|
8243
8365
|
const identity = finalIdentity(found.type, base.replace(/\.md$/i, ""));
|
|
@@ -8248,10 +8370,10 @@ function planMarkdownMoves(root, knownKinds, manual, unknownTypes, identities, c
|
|
|
8248
8370
|
);
|
|
8249
8371
|
continue;
|
|
8250
8372
|
}
|
|
8251
|
-
const
|
|
8252
|
-
if (
|
|
8373
|
+
const present2 = existing.get(identity);
|
|
8374
|
+
if (present2 !== void 0) {
|
|
8253
8375
|
conflicts.push(
|
|
8254
|
-
`${
|
|
8376
|
+
`${present2} already is ${identity}, and ${posix2(path19__default.relative(root, file))} would become it too: rename one first. Nothing was changed.`
|
|
8255
8377
|
);
|
|
8256
8378
|
continue;
|
|
8257
8379
|
}
|
|
@@ -8339,7 +8461,7 @@ function repoPublisher(root) {
|
|
|
8339
8461
|
}
|
|
8340
8462
|
return DEFAULT_PUBLISHER;
|
|
8341
8463
|
}
|
|
8342
|
-
function planBundles(root, skaileYamls, publisher, notes, manual, conflicts, identities, existing) {
|
|
8464
|
+
function planBundles(root, skaileYamls, publisher, notes, manual, conflicts, identities, existing, notConverted) {
|
|
8343
8465
|
const changes = [];
|
|
8344
8466
|
const presets = [];
|
|
8345
8467
|
const handled = /* @__PURE__ */ new Set();
|
|
@@ -8365,12 +8487,13 @@ function planBundles(root, skaileYamls, publisher, notes, manual, conflicts, ide
|
|
|
8365
8487
|
}
|
|
8366
8488
|
if (existsSync(target)) {
|
|
8367
8489
|
manual.push(`${rel(target)} already exists; bundle ${name} not converted`);
|
|
8490
|
+
notConverted.push(`${origin.replace(/\/$/, "")} (${rel(target)} exists)`);
|
|
8368
8491
|
return;
|
|
8369
8492
|
}
|
|
8370
|
-
const
|
|
8371
|
-
if (
|
|
8493
|
+
const present2 = existing.get(identity);
|
|
8494
|
+
if (present2 !== void 0) {
|
|
8372
8495
|
conflicts.push(
|
|
8373
|
-
`${
|
|
8496
|
+
`${present2} already is ${identity}, and ${origin} would become it too: rename the bundle first. Nothing was changed.`
|
|
8374
8497
|
);
|
|
8375
8498
|
return;
|
|
8376
8499
|
}
|
|
@@ -8403,6 +8526,7 @@ function planBundles(root, skaileYamls, publisher, notes, manual, conflicts, ide
|
|
|
8403
8526
|
manual.push(
|
|
8404
8527
|
`bundle ${name}: no dependencies found${bundleFile ? ` in ${rel(bundleFile)}` : ` and no skills under ${rel(path19__default.join(dir, "skills"))}`}; no preset generated`
|
|
8405
8528
|
);
|
|
8529
|
+
notConverted.push(`${origin.replace(/\/$/, "")} (no dependencies found)`);
|
|
8406
8530
|
return;
|
|
8407
8531
|
}
|
|
8408
8532
|
claimed.set(target, origin);
|
|
@@ -8452,7 +8576,7 @@ function planBundles(root, skaileYamls, publisher, notes, manual, conflicts, ide
|
|
|
8452
8576
|
return changes;
|
|
8453
8577
|
}
|
|
8454
8578
|
var PUBLICATION_KEYS = ["publisher", "version", "assets"];
|
|
8455
|
-
function planSkaileYaml(root, file, source, notes, manual) {
|
|
8579
|
+
function planSkaileYaml(root, file, source, notes, manual, notConverted) {
|
|
8456
8580
|
const doc = parseDocument(source);
|
|
8457
8581
|
if (doc.errors.length > 0 || !isMap(doc.contents)) return [];
|
|
8458
8582
|
const map = doc.contents;
|
|
@@ -8480,6 +8604,7 @@ function planSkaileYaml(root, file, source, notes, manual) {
|
|
|
8480
8604
|
manual.push(
|
|
8481
8605
|
`${rel(file)}: publisher/version/assets left in place \u2014 ${rel(manifestPath)} already exists; merge by hand`
|
|
8482
8606
|
);
|
|
8607
|
+
notConverted.push(`${rel(file)} (${rel(manifestPath)} exists)`);
|
|
8483
8608
|
} else {
|
|
8484
8609
|
const dropped = Array.isArray(raw.assets) ? raw.assets.length : 0;
|
|
8485
8610
|
const draft = {};
|
|
@@ -8490,6 +8615,7 @@ function planSkaileYaml(root, file, source, notes, manual) {
|
|
|
8490
8615
|
const failed = decoded.diagnostics.filter((d) => d.severity === "error");
|
|
8491
8616
|
if (failed.length > 0) {
|
|
8492
8617
|
manual.push(`${rel(file)}: not converted \u2014 ${failed[0]?.message ?? "invalid manifest"}`);
|
|
8618
|
+
notConverted.push(`${rel(file)} (${failed[0]?.message ?? "invalid manifest"})`);
|
|
8493
8619
|
} else {
|
|
8494
8620
|
if (Object.keys(decoded.manifest).length > 0) {
|
|
8495
8621
|
changes.push({
|
|
@@ -8537,6 +8663,7 @@ function planAssetMigration(options) {
|
|
|
8537
8663
|
const notes = [];
|
|
8538
8664
|
const manual = [];
|
|
8539
8665
|
const conflicts = [];
|
|
8666
|
+
const notConverted = [];
|
|
8540
8667
|
const unknownTypes = [];
|
|
8541
8668
|
const identities = /* @__PURE__ */ new Map();
|
|
8542
8669
|
const existing = existingIdentities(root);
|
|
@@ -8547,7 +8674,8 @@ function planAssetMigration(options) {
|
|
|
8547
8674
|
unknownTypes,
|
|
8548
8675
|
identities,
|
|
8549
8676
|
conflicts,
|
|
8550
|
-
existing
|
|
8677
|
+
existing,
|
|
8678
|
+
notConverted
|
|
8551
8679
|
);
|
|
8552
8680
|
for (const move of moves) {
|
|
8553
8681
|
notes.push(
|
|
@@ -8575,16 +8703,18 @@ function planAssetMigration(options) {
|
|
|
8575
8703
|
manual,
|
|
8576
8704
|
conflicts,
|
|
8577
8705
|
identities,
|
|
8578
|
-
existing
|
|
8706
|
+
existing,
|
|
8707
|
+
notConverted
|
|
8579
8708
|
);
|
|
8580
8709
|
const skaileChanges = skaileYamls.flatMap(
|
|
8581
|
-
({ file, source }) => planSkaileYaml(root, file, source, notes, manual)
|
|
8710
|
+
({ file, source }) => planSkaileYaml(root, file, source, notes, manual, notConverted)
|
|
8582
8711
|
);
|
|
8583
8712
|
return {
|
|
8584
8713
|
changes: [...moveChanges, ...agentChanges, ...bundleChanges, ...skaileChanges],
|
|
8585
8714
|
notes,
|
|
8586
8715
|
manual,
|
|
8587
8716
|
conflicts,
|
|
8717
|
+
notConverted,
|
|
8588
8718
|
unknownTypes
|
|
8589
8719
|
};
|
|
8590
8720
|
}
|
|
@@ -8668,8 +8798,9 @@ function migrateHarnessSettings(text, label = "settings.json") {
|
|
|
8668
8798
|
notes.push(`${label}: \`driver\` \u2192 \`harness\``);
|
|
8669
8799
|
}
|
|
8670
8800
|
}
|
|
8801
|
+
const oneLine = !text.trim().includes("\n");
|
|
8671
8802
|
const trailing = text.endsWith("\n") ? "\n" : "";
|
|
8672
|
-
return { output: `${JSON.stringify(out, null, 2)}${trailing}`, notes };
|
|
8803
|
+
return { output: `${JSON.stringify(out, null, oneLine ? void 0 : 2)}${trailing}`, notes };
|
|
8673
8804
|
}
|
|
8674
8805
|
function workspaceYamlFiles(projectDir) {
|
|
8675
8806
|
const files = [];
|
|
@@ -8688,11 +8819,10 @@ function planHarnessMigration(opts) {
|
|
|
8688
8819
|
const changes = [];
|
|
8689
8820
|
const notes = [];
|
|
8690
8821
|
const seen = /* @__PURE__ */ new Set();
|
|
8691
|
-
const plan = (file, rewrite) => {
|
|
8822
|
+
const plan = (file, rewrite, label = path19__default.basename(file), notChanged) => {
|
|
8692
8823
|
if (seen.has(file) || !existsSync(file)) return;
|
|
8693
8824
|
seen.add(file);
|
|
8694
8825
|
const before = readText(file);
|
|
8695
|
-
const label = path19__default.basename(file);
|
|
8696
8826
|
let result;
|
|
8697
8827
|
try {
|
|
8698
8828
|
result = rewrite(before, label);
|
|
@@ -8701,18 +8831,27 @@ function planHarnessMigration(opts) {
|
|
|
8701
8831
|
return;
|
|
8702
8832
|
}
|
|
8703
8833
|
if (result.output === before) return;
|
|
8834
|
+
if (notChanged !== void 0) {
|
|
8835
|
+
notes.push(`${label}: \`driver\` still set, not changed (${notChanged})`);
|
|
8836
|
+
return;
|
|
8837
|
+
}
|
|
8704
8838
|
notes.push(...result.notes);
|
|
8705
8839
|
changes.push({ type: "write", path: file, before, after: result.output });
|
|
8706
8840
|
};
|
|
8707
8841
|
for (const file of workspaceYamlFiles(opts.projectDir)) plan(file, migrateHarnessYaml);
|
|
8708
|
-
plan(projectSettingsPath(opts.projectDir), migrateHarnessSettings);
|
|
8709
|
-
plan(
|
|
8842
|
+
plan(projectSettingsPath(opts.projectDir), migrateHarnessSettings, "project settings.json");
|
|
8843
|
+
plan(
|
|
8844
|
+
globalSettingsPath(),
|
|
8845
|
+
migrateHarnessSettings,
|
|
8846
|
+
"user settings.json",
|
|
8847
|
+
opts.user === true ? void 0 : "run `skaile migrate harness --user` to migrate it"
|
|
8848
|
+
);
|
|
8710
8849
|
return { changes, notes };
|
|
8711
8850
|
}
|
|
8712
8851
|
function runMigrateHarness(opts) {
|
|
8713
8852
|
const cwd = process.cwd();
|
|
8714
8853
|
const projectDir = path19__default.resolve(opts.projectDir ?? findWorkspaceRoot(cwd) ?? cwd);
|
|
8715
|
-
const plan = planHarnessMigration({ projectDir });
|
|
8854
|
+
const plan = planHarnessMigration({ projectDir, user: opts.user === true });
|
|
8716
8855
|
for (const note of plan.notes) console.log(` ${note}`);
|
|
8717
8856
|
printChanges(plan.changes, projectDir);
|
|
8718
8857
|
if (opts.dryRun === true && plan.changes.length > 0) {
|
|
@@ -8727,13 +8866,14 @@ function runMigrateHarness(opts) {
|
|
|
8727
8866
|
function addMigrateHarnessCommand(migrate) {
|
|
8728
8867
|
migrate.command("harness").description(
|
|
8729
8868
|
"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(
|
|
8869
|
+
).option("--project-dir <path>", "Project directory (default: the workspace root of the cwd)").option("--user", "Also migrate the user-level settings.json ($SKAILE_HOME, else ~/.skaile)").option("--dry-run", "Print the diff and write nothing").addHelpText(
|
|
8731
8870
|
"after",
|
|
8732
8871
|
`
|
|
8733
8872
|
Rewrites (the connector/mount \`driver\` of connectors: and mounts: is never touched):
|
|
8734
8873
|
skaile.yaml agent-config.<profile>.driver -> harness (also the flat agent-config: { driver: \u2026 } shape)
|
|
8735
8874
|
skaile.yaml agent-config.<profile>.agent removed (nothing reads it)
|
|
8736
|
-
.skaile/settings.json
|
|
8875
|
+
.skaile/settings.json (project settings.json) driver -> harness
|
|
8876
|
+
~/.skaile/settings.json (user settings.json) driver -> harness, only with --user
|
|
8737
8877
|
A profile or file that sets both keys keeps \`harness\` and drops \`driver\`.
|
|
8738
8878
|
|
|
8739
8879
|
Prints a unified diff per file and writes the files. Pass --dry-run to print the diff only.
|
|
@@ -9186,7 +9326,12 @@ async function runMigrateAssets(root, opts) {
|
|
|
9186
9326
|
);
|
|
9187
9327
|
}
|
|
9188
9328
|
printChanges(plan.changes, base);
|
|
9189
|
-
finish(plan.changes, write, base);
|
|
9329
|
+
if (plan.changes.length > 0 || plan.notConverted.length === 0) finish(plan.changes, write, base);
|
|
9330
|
+
if (plan.notConverted.length > 0) {
|
|
9331
|
+
console.log();
|
|
9332
|
+
logErr(`${plan.notConverted.length} file(s) not converted: ${plan.notConverted.join(", ")}.`);
|
|
9333
|
+
process.exitCode = 1;
|
|
9334
|
+
}
|
|
9190
9335
|
}
|
|
9191
9336
|
function makeMigrateCommand() {
|
|
9192
9337
|
const cmd = new Command("migrate").description("One-time config and asset migrations");
|
|
@@ -9358,17 +9503,28 @@ function makeOutdatedCommand() {
|
|
|
9358
9503
|
const unreachable = am2.takeUnreachableSources();
|
|
9359
9504
|
for (const u of unreachable) {
|
|
9360
9505
|
logWarn(
|
|
9361
|
-
`Source ${u.name}: could not reach its origin (${u.reason}); commits behind not checked.`
|
|
9506
|
+
u.notCompared ? `Source ${u.name}: ${u.reason}; commits behind not checked.` : `Source ${u.name}: could not reach its origin (${u.reason}); commits behind not checked.`
|
|
9362
9507
|
);
|
|
9363
9508
|
}
|
|
9364
9509
|
if (unreachable.length > 0) process.exitCode = 1;
|
|
9510
|
+
const notChecked = am2.takeStoreNotChecked().filter((n) => {
|
|
9511
|
+
if (!filter) return true;
|
|
9512
|
+
const p6 = parseAssetRef(n.ref);
|
|
9513
|
+
return matchesOutdatedFilter(
|
|
9514
|
+
{ kind: p6.kind, name: p6.name, publisher: p6.publisher ?? "" },
|
|
9515
|
+
filter
|
|
9516
|
+
);
|
|
9517
|
+
});
|
|
9518
|
+
if (reportStoreNotCheckedForUpdates(notChecked)) process.exitCode = 1;
|
|
9519
|
+
const allChecked = unreachable.length === 0 && notChecked.length === 0;
|
|
9520
|
+
for (const notice of am2.legacyLockNotices()) logWarn(notice);
|
|
9365
9521
|
if (entries.length === 0) {
|
|
9366
|
-
if (
|
|
9522
|
+
if (allChecked) logInfo("All assets are up to date.");
|
|
9367
9523
|
return;
|
|
9368
9524
|
}
|
|
9369
9525
|
const filtered = filter ? entries.filter((e) => matchesOutdatedFilter(e, filter)) : entries;
|
|
9370
9526
|
if (filtered.length === 0) {
|
|
9371
|
-
if (
|
|
9527
|
+
if (allChecked) logInfo(`${filter} is up to date.`);
|
|
9372
9528
|
return;
|
|
9373
9529
|
}
|
|
9374
9530
|
const refW = Math.max(4, ...filtered.map((e) => outdatedRef(e).length));
|
|
@@ -9457,14 +9613,14 @@ function action2(fn) {
|
|
|
9457
9613
|
try {
|
|
9458
9614
|
await fn(...args);
|
|
9459
9615
|
} catch (err) {
|
|
9460
|
-
const { condensePluginFailure } = await import('../plugin-store-
|
|
9616
|
+
const { condensePluginFailure } = await import('../plugin-store-OJTERUEZ.js');
|
|
9461
9617
|
logErr(condensePluginFailure(err instanceof Error ? err.message : String(err)));
|
|
9462
9618
|
process.exitCode = 1;
|
|
9463
9619
|
}
|
|
9464
9620
|
};
|
|
9465
9621
|
}
|
|
9466
9622
|
async function reconcileAndReport(projectDir, plugins, opts = {}) {
|
|
9467
|
-
const { reconcilePlugins } = await import('../plugin-store-
|
|
9623
|
+
const { reconcilePlugins } = await import('../plugin-store-OJTERUEZ.js');
|
|
9468
9624
|
if (plugins.length === 0) {
|
|
9469
9625
|
logInfo("No plugins declared \u2014 nothing to reconcile.");
|
|
9470
9626
|
return;
|
|
@@ -9475,29 +9631,37 @@ async function reconcileAndReport(projectDir, plugins, opts = {}) {
|
|
|
9475
9631
|
else logInfo(`Plugin store ${result.reason}.`);
|
|
9476
9632
|
} catch (err) {
|
|
9477
9633
|
if (opts.strict) throw err;
|
|
9478
|
-
const { condensePluginFailure } = await import('../plugin-store-
|
|
9634
|
+
const { condensePluginFailure } = await import('../plugin-store-OJTERUEZ.js');
|
|
9479
9635
|
logWarn(
|
|
9480
9636
|
`reconcile skipped: ${condensePluginFailure(err instanceof Error ? err.message : String(err))}`
|
|
9481
9637
|
);
|
|
9482
9638
|
}
|
|
9483
9639
|
}
|
|
9484
|
-
async function verifyPluginLoads(projectDir, spec) {
|
|
9485
|
-
const { loadPlugins } = await import('../plugin-store-
|
|
9640
|
+
async function verifyPluginLoads(projectDir, spec, declared) {
|
|
9641
|
+
const { loadPlugins } = await import('../plugin-store-OJTERUEZ.js');
|
|
9486
9642
|
const { createPluginRegistry } = await import('../plugin-registry/index.js');
|
|
9487
9643
|
const registry = createPluginRegistry();
|
|
9644
|
+
await loadPlugins(
|
|
9645
|
+
projectDir,
|
|
9646
|
+
declared.filter((other) => other !== spec),
|
|
9647
|
+
registry
|
|
9648
|
+
);
|
|
9649
|
+
const before = new Set(
|
|
9650
|
+
["harness", "connector", "deployTarget"].flatMap(
|
|
9651
|
+
(kind) => registry.list(kind).map((m) => `${kind} ${m.id}`)
|
|
9652
|
+
)
|
|
9653
|
+
);
|
|
9488
9654
|
const result = await loadPlugins(projectDir, [spec], registry);
|
|
9489
9655
|
const failure = result.failed[0];
|
|
9490
9656
|
if (failure) throw new Error(failure.error);
|
|
9491
|
-
const contributed = ["harness", "connector", "deployTarget"].flatMap(
|
|
9492
|
-
(kind) => registry.list(kind).map((m) => `${kind} ${m.id}`)
|
|
9493
|
-
);
|
|
9657
|
+
const contributed = ["harness", "connector", "deployTarget"].flatMap((kind) => registry.list(kind).map((m) => `${kind} ${m.id}`)).filter((entry) => !before.has(entry));
|
|
9494
9658
|
logOk(`Loaded ${S.cmd(spec)}${contributed.length > 0 ? ` (${contributed.join(", ")})` : ""}`);
|
|
9495
9659
|
}
|
|
9496
9660
|
async function runInstall2(typedSpec, opts) {
|
|
9497
9661
|
const rawSpec = typedSpec.trim();
|
|
9498
9662
|
const projectDir = path19__default.resolve(opts.projectDir);
|
|
9499
9663
|
const { WorkspaceYamlEditor: WorkspaceYamlEditor2 } = await import('../core/index.js');
|
|
9500
|
-
const { specName, rollbackPluginStore, npmSpecError, projectRelativeFileSpec } = await import('../plugin-store-
|
|
9664
|
+
const { specName, rollbackPluginStore, npmSpecError, projectRelativeFileSpec } = await import('../plugin-store-OJTERUEZ.js');
|
|
9501
9665
|
const specError = npmSpecError(rawSpec);
|
|
9502
9666
|
if (specError) throw new Error(specError);
|
|
9503
9667
|
const spec = projectRelativeFileSpec(rawSpec, process.cwd(), projectDir);
|
|
@@ -9508,28 +9672,33 @@ async function runInstall2(typedSpec, opts) {
|
|
|
9508
9672
|
const original = readFileSync(yamlPath, "utf8");
|
|
9509
9673
|
const editor = WorkspaceYamlEditor2.load(yamlPath);
|
|
9510
9674
|
const previousPlugins = [...editor.getPlugins()];
|
|
9675
|
+
let recorded;
|
|
9511
9676
|
if (previousPlugins.includes(spec)) {
|
|
9512
9677
|
logInfo(`${S.cmd(spec)} already declared in skaile.yaml`);
|
|
9678
|
+
recorded = "same";
|
|
9513
9679
|
} else {
|
|
9514
|
-
|
|
9680
|
+
recorded = editor.addPlugin(spec, specName) ? "replaced" : "added";
|
|
9515
9681
|
editor.save();
|
|
9516
|
-
if (replaced) logOk(`Updated ${S.cmd(specName(spec))} \u2192 ${S.cmd(spec)} in skaile.yaml`);
|
|
9517
|
-
else logOk(`Added ${S.cmd(spec)} to skaile.yaml plugins`);
|
|
9518
9682
|
}
|
|
9519
9683
|
try {
|
|
9520
9684
|
await reconcileAndReport(projectDir, editor.getPlugins(), { strict: true });
|
|
9521
|
-
await verifyPluginLoads(projectDir, spec);
|
|
9685
|
+
await verifyPluginLoads(projectDir, spec, editor.getPlugins());
|
|
9522
9686
|
} catch (err) {
|
|
9523
9687
|
writeFileSync(yamlPath, original);
|
|
9524
9688
|
logInfo("skaile.yaml restored; the plugin was not recorded.");
|
|
9525
9689
|
await rollbackPluginStore(projectDir, previousPlugins);
|
|
9526
9690
|
throw err;
|
|
9527
9691
|
}
|
|
9692
|
+
if (recorded === "replaced") {
|
|
9693
|
+
logOk(`Updated ${S.cmd(specName(spec))} \u2192 ${S.cmd(spec)} in skaile.yaml`);
|
|
9694
|
+
} else if (recorded === "added") {
|
|
9695
|
+
logOk(`Added ${S.cmd(spec)} to skaile.yaml plugins`);
|
|
9696
|
+
}
|
|
9528
9697
|
}
|
|
9529
9698
|
async function runRemove(name, opts) {
|
|
9530
9699
|
const projectDir = path19__default.resolve(opts.projectDir);
|
|
9531
9700
|
const { WorkspaceYamlEditor: WorkspaceYamlEditor2 } = await import('../core/index.js');
|
|
9532
|
-
const { specName } = await import('../plugin-store-
|
|
9701
|
+
const { specName } = await import('../plugin-store-OJTERUEZ.js');
|
|
9533
9702
|
const yamlPath = path19__default.join(projectDir, "skaile.yaml");
|
|
9534
9703
|
if (!existsSync(yamlPath)) {
|
|
9535
9704
|
logInfo(`No plugin matching ${S.cmd(name)}: there is no skaile.yaml in ${projectDir}.`);
|
|
@@ -9545,7 +9714,7 @@ async function runRemove(name, opts) {
|
|
|
9545
9714
|
logOk(`Removed ${S.cmd(name)} from skaile.yaml plugins`);
|
|
9546
9715
|
const remaining = editor.getPlugins();
|
|
9547
9716
|
if (remaining.length === 0) {
|
|
9548
|
-
const { rollbackPluginStore } = await import('../plugin-store-
|
|
9717
|
+
const { rollbackPluginStore } = await import('../plugin-store-OJTERUEZ.js');
|
|
9549
9718
|
await rollbackPluginStore(projectDir, []);
|
|
9550
9719
|
logInfo("No plugins declared; removed .skaile/plugins/.");
|
|
9551
9720
|
return;
|
|
@@ -9568,7 +9737,7 @@ async function runList(opts) {
|
|
|
9568
9737
|
const registry = createPluginRegistry();
|
|
9569
9738
|
if (declared.length > 0) {
|
|
9570
9739
|
try {
|
|
9571
|
-
const { loadPlugins } = await import('../plugin-store-
|
|
9740
|
+
const { loadPlugins } = await import('../plugin-store-OJTERUEZ.js');
|
|
9572
9741
|
const result = await loadPlugins(projectDir, declared, registry);
|
|
9573
9742
|
for (const f of result.failed) logWarn(f.error);
|
|
9574
9743
|
} catch (err) {
|
|
@@ -10428,6 +10597,67 @@ function makeRebuildCommand() {
|
|
|
10428
10597
|
logInfo(`Written: ${result.manifestPath}`);
|
|
10429
10598
|
});
|
|
10430
10599
|
}
|
|
10600
|
+
|
|
10601
|
+
// cli/src/session-hint.ts
|
|
10602
|
+
async function sessionIdsHint(projectDir) {
|
|
10603
|
+
const sessions = await listSessions(projectDir);
|
|
10604
|
+
return sessions.length > 0 ? "Run skaile session list to see the ids." : null;
|
|
10605
|
+
}
|
|
10606
|
+
|
|
10607
|
+
// cli/src/commands/harness-preflight.ts
|
|
10608
|
+
var present = (...lines) => lines.filter((l) => !!l);
|
|
10609
|
+
var OR_PICK_ANOTHER = "Or pick another harness with --harness.";
|
|
10610
|
+
function missingBinary(harnessId) {
|
|
10611
|
+
const hint = HARNESS_BINARIES[harnessId]?.hint ?? `${harnessId} is not installed.`;
|
|
10612
|
+
return `${hint} ${OR_PICK_ANOTHER}`;
|
|
10613
|
+
}
|
|
10614
|
+
var claudeSdk = async (input, deps) => present(
|
|
10615
|
+
await deps.sdkProblem(input.projectDir, input.harness),
|
|
10616
|
+
checkHarnessModel("claude-sdk", input),
|
|
10617
|
+
checkModelSurface("claude-sdk", input)
|
|
10618
|
+
);
|
|
10619
|
+
var codex = async (input, deps) => present(
|
|
10620
|
+
await deps.sdkProblem(input.projectDir, input.harness),
|
|
10621
|
+
checkHarnessModel("codex", input)
|
|
10622
|
+
);
|
|
10623
|
+
var omp = async (input, deps) => {
|
|
10624
|
+
if (!deps.hasBinary("omp")) return [missingBinary("omp")];
|
|
10625
|
+
const refusal = checkHarnessModel("omp", input);
|
|
10626
|
+
if (refusal) return [refusal];
|
|
10627
|
+
const own = input.model && !input.model.startsWith("@") ? input.model : void 0;
|
|
10628
|
+
const unlisted = own && isUnlistedModel(input);
|
|
10629
|
+
return present(unlisted ? await deps.ompListed(own) : void 0);
|
|
10630
|
+
};
|
|
10631
|
+
function cliHarness(harnessId) {
|
|
10632
|
+
return async (input, deps) => deps.hasBinary(harnessId) ? present(checkHarnessModel(harnessId, input), checkModelSurface(harnessId, input)) : [missingBinary(harnessId)];
|
|
10633
|
+
}
|
|
10634
|
+
var PREFLIGHTS = {
|
|
10635
|
+
"claude-sdk": claudeSdk,
|
|
10636
|
+
codex,
|
|
10637
|
+
omp,
|
|
10638
|
+
gemini: cliHarness("gemini"),
|
|
10639
|
+
qwen: cliHarness("qwen"),
|
|
10640
|
+
opencode: cliHarness("opencode"),
|
|
10641
|
+
goose: cliHarness("goose"),
|
|
10642
|
+
continue: cliHarness("continue")
|
|
10643
|
+
};
|
|
10644
|
+
async function preflightHarness(input, deps = {}) {
|
|
10645
|
+
const check = PREFLIGHTS[input.harness];
|
|
10646
|
+
if (!check) return [];
|
|
10647
|
+
return check(
|
|
10648
|
+
{
|
|
10649
|
+
...input,
|
|
10650
|
+
registry: input.registry ?? loadRegistryView({ projectDir: input.projectDir }).merged
|
|
10651
|
+
},
|
|
10652
|
+
{
|
|
10653
|
+
hasBinary: deps.hasBinary ?? ((id) => findHarnessBinary(HARNESS_BINARIES[id])),
|
|
10654
|
+
sdkProblem: deps.sdkProblem ?? checkHarnessSdk,
|
|
10655
|
+
ompListed: deps.ompListed ?? checkOmpListedModel
|
|
10656
|
+
}
|
|
10657
|
+
);
|
|
10658
|
+
}
|
|
10659
|
+
|
|
10660
|
+
// cli/src/commands/run.ts
|
|
10431
10661
|
function resolveSingleShotAgentDir(projectDir, agentDefinition) {
|
|
10432
10662
|
if (!agentDefinition) return resolveAgentDir(projectDir);
|
|
10433
10663
|
const asPath = agentDefinition.endsWith("agent.yaml") ? path19__default.dirname(path19__default.resolve(projectDir, agentDefinition)) : agentDefinition;
|
|
@@ -10439,13 +10669,12 @@ function resolveSingleShotAgentDir(projectDir, agentDefinition) {
|
|
|
10439
10669
|
}
|
|
10440
10670
|
return dir;
|
|
10441
10671
|
}
|
|
10442
|
-
async function printCompositionDryRun(projectDir, agentDir, harness, model, instanceIdOverride) {
|
|
10672
|
+
async function printCompositionDryRun(projectDir, agentDir, harness, model, check, instanceIdOverride) {
|
|
10443
10673
|
const manifest = agentDir ? await loadAgentManifest(agentDir) : void 0;
|
|
10444
|
-
|
|
10445
|
-
|
|
10446
|
-
|
|
10447
|
-
|
|
10448
|
-
if (refusal) throw new Error(refusal);
|
|
10674
|
+
await printCompositionPlan(projectDir, agentDir, manifest, harness, model, instanceIdOverride);
|
|
10675
|
+
return reportPreflight(await check(model ?? manifestModelForHarness(manifest, harness)));
|
|
10676
|
+
}
|
|
10677
|
+
async function printCompositionPlan(projectDir, agentDir, manifest, harness, model, instanceIdOverride) {
|
|
10449
10678
|
console.log();
|
|
10450
10679
|
console.log(` ${S.label("Project dir:")} ${projectDir}`);
|
|
10451
10680
|
console.log(` ${S.label("Agent dir:")} ${agentDir ?? S.dim("(none)")}`);
|
|
@@ -10453,7 +10682,15 @@ async function printCompositionDryRun(projectDir, agentDir, harness, model, inst
|
|
|
10453
10682
|
console.log(` ${S.warn("(dry run \u2014 no model will be started)")}`);
|
|
10454
10683
|
console.log();
|
|
10455
10684
|
if (!agentDir || !manifest) {
|
|
10456
|
-
|
|
10685
|
+
const unselected = unselectedInstanceIds(resolveSkWorkspaceConfig(projectDir));
|
|
10686
|
+
if (unselected.length > 0) {
|
|
10687
|
+
logInfo(
|
|
10688
|
+
"No primary agent (neither `agent:` nor `agents.default`): a plain run starts the generic assistant."
|
|
10689
|
+
);
|
|
10690
|
+
logInfo(`Agent instances: ${instanceChoiceText(unselected)}`);
|
|
10691
|
+
} else {
|
|
10692
|
+
logInfo("No agent definition \u2014 nothing to resolve.");
|
|
10693
|
+
}
|
|
10457
10694
|
return;
|
|
10458
10695
|
}
|
|
10459
10696
|
const { instanceId: instanceId2, instance } = instanceForSession(
|
|
@@ -10612,7 +10849,11 @@ function isNearFlowId(typed, id) {
|
|
|
10612
10849
|
return a.length >= 3 && (b.includes(a) || a.includes(b) || editDistance2(a, b) <= 2);
|
|
10613
10850
|
}
|
|
10614
10851
|
function harnessOptionDescription() {
|
|
10615
|
-
return `Harness to run (${listHarnesses().map((d) => d.id).join(", ")})`;
|
|
10852
|
+
return `Harness to run (${listHarnesses().map((d) => d.id).join(", ")}); claude-code (deploy) = claude-sdk (run)`;
|
|
10853
|
+
}
|
|
10854
|
+
function reportPreflight(problems) {
|
|
10855
|
+
for (const line of problems) logErr(line);
|
|
10856
|
+
return problems.length > 0;
|
|
10616
10857
|
}
|
|
10617
10858
|
function nodeSkillRefs(flow) {
|
|
10618
10859
|
const refs = /* @__PURE__ */ new Map();
|
|
@@ -10643,7 +10884,10 @@ async function reportMissingNodeSkills(projectDir, flow) {
|
|
|
10643
10884
|
}
|
|
10644
10885
|
}
|
|
10645
10886
|
function makeRunCommand() {
|
|
10646
|
-
const cmd = new Command("run").description("Start a flow or run a single-shot text prompt").argument("[flow-id-or-text...]", "Flow ID or text prompt").option("--project-dir <path>", "Project directory", process.cwd()).option("--harness <name>", harnessOptionDescription()).addOption(driverAliasOption()).option("--model <name>", "Model override").option("--label <label>", "Human-readable session label").option(
|
|
10887
|
+
const cmd = new Command("run").description("Start a flow or run a single-shot text prompt").argument("[flow-id-or-text...]", "Flow ID or text prompt").option("--project-dir <path>", "Project directory", process.cwd()).option("--harness <name>", harnessOptionDescription()).addOption(driverAliasOption()).option("--model <name>", "Model override").option("--label <label>", "Human-readable session label").option(
|
|
10888
|
+
"--dry-run",
|
|
10889
|
+
"Print the plan without executing (single-shot: resolved composition items), then one line per problem the real run would stop on (harness program or SDK, provider, model); exit 1 if any"
|
|
10890
|
+
).option(
|
|
10647
10891
|
"--agent-definition <ref|path>",
|
|
10648
10892
|
"Agent asset for this one invocation (agent:@pub/name, ai-assets://\u2026, or a directory with agent.yaml); single-shot prompts only"
|
|
10649
10893
|
).option(
|
|
@@ -10655,7 +10899,7 @@ function makeRunCommand() {
|
|
|
10655
10899
|
if (await reportProjectConfig(projectDir, { harness: false, instances: true }) > 0) {
|
|
10656
10900
|
process.exit(1);
|
|
10657
10901
|
}
|
|
10658
|
-
const
|
|
10902
|
+
const cliHarness2 = foldDriverFlag(opts).harness;
|
|
10659
10903
|
const dryRun = opts.dryRun ?? false;
|
|
10660
10904
|
const agentDefinition = opts.agentDefinition?.trim() || void 0;
|
|
10661
10905
|
const instanceId2 = opts.instance?.trim() || void 0;
|
|
@@ -10689,7 +10933,7 @@ function makeRunCommand() {
|
|
|
10689
10933
|
flowId = selected;
|
|
10690
10934
|
}
|
|
10691
10935
|
const config = await resolveSettings(projectDir, {
|
|
10692
|
-
harness:
|
|
10936
|
+
harness: cliHarness2,
|
|
10693
10937
|
model: opts.model
|
|
10694
10938
|
});
|
|
10695
10939
|
const harness = config.harness ?? DEFAULT_HARNESS_ID;
|
|
@@ -10699,21 +10943,7 @@ function makeRunCommand() {
|
|
|
10699
10943
|
logErr(unknownHarness);
|
|
10700
10944
|
process.exit(1);
|
|
10701
10945
|
}
|
|
10702
|
-
const
|
|
10703
|
-
registry: loadRegistryView({ projectDir }).merged,
|
|
10704
|
-
model
|
|
10705
|
-
});
|
|
10706
|
-
if (providerRefusal) {
|
|
10707
|
-
logErr(providerRefusal);
|
|
10708
|
-
process.exit(1);
|
|
10709
|
-
}
|
|
10710
|
-
if (dryRun) {
|
|
10711
|
-
const sdkProblem = await checkHarnessSdk(projectDir, harness);
|
|
10712
|
-
if (sdkProblem) {
|
|
10713
|
-
logErr(sdkProblem);
|
|
10714
|
-
process.exit(1);
|
|
10715
|
-
}
|
|
10716
|
-
}
|
|
10946
|
+
const preflightFor = (forModel) => preflightHarness({ projectDir, harness, model: forModel, roles: config.roles });
|
|
10717
10947
|
const flowPath = findProjectFlowFile(flowId, projectDir);
|
|
10718
10948
|
if (flowPath && agentDefinition) {
|
|
10719
10949
|
logErr(
|
|
@@ -10753,21 +10983,43 @@ function makeRunCommand() {
|
|
|
10753
10983
|
}
|
|
10754
10984
|
try {
|
|
10755
10985
|
const agentDir = instanceId2 ? resolveInstanceAgentDir(projectDir, resolveSkWorkspaceConfig(projectDir), instanceId2) : resolveSingleShotAgentDir(projectDir, agentDefinition);
|
|
10986
|
+
const overrides = instanceId2 ? instanceSessionOverrides(resolveSkWorkspaceConfig(projectDir), instanceId2) : {};
|
|
10987
|
+
const instanceModel = opts.model ? void 0 : overrides.model;
|
|
10988
|
+
const sessionModel = instanceModel ?? config.model;
|
|
10756
10989
|
if (dryRun) {
|
|
10757
|
-
await printCompositionDryRun(
|
|
10758
|
-
|
|
10759
|
-
|
|
10760
|
-
|
|
10990
|
+
const problem = await printCompositionDryRun(
|
|
10991
|
+
projectDir,
|
|
10992
|
+
agentDir,
|
|
10993
|
+
harness,
|
|
10994
|
+
sessionModel,
|
|
10995
|
+
preflightFor,
|
|
10996
|
+
instanceId2
|
|
10997
|
+
);
|
|
10998
|
+
const skillFound = !opts.skill || await printSkillDryRun(projectDir, opts.skill);
|
|
10999
|
+
if (problem) process.exitCode = 1;
|
|
11000
|
+
if (!skillFound) process.exit(1);
|
|
10761
11001
|
return;
|
|
10762
11002
|
}
|
|
10763
|
-
const
|
|
10764
|
-
|
|
11003
|
+
const manifest = agentDir ? await loadAgentManifest(agentDir) : void 0;
|
|
11004
|
+
if (reportPreflight(
|
|
11005
|
+
await preflightFor(sessionModel ?? manifestModelForHarness(manifest, harness))
|
|
11006
|
+
)) {
|
|
11007
|
+
process.exit(1);
|
|
11008
|
+
}
|
|
11009
|
+
if (!agentDir) {
|
|
11010
|
+
const unselected = unselectedInstanceIds(resolveSkWorkspaceConfig(projectDir));
|
|
11011
|
+
if (unselected.length > 0) {
|
|
11012
|
+
console.error(
|
|
11013
|
+
` ${S.dim("\xB7")} ${S.dim(`Agent instances: ${instanceChoiceText(unselected)}`)}`
|
|
11014
|
+
);
|
|
11015
|
+
}
|
|
11016
|
+
}
|
|
10765
11017
|
await runAgentChat({
|
|
10766
11018
|
projectDir,
|
|
10767
11019
|
...agentDir ? { agentDir } : {},
|
|
10768
11020
|
...instanceId2 ? { instanceId: instanceId2 } : {},
|
|
10769
11021
|
harness: config.harness,
|
|
10770
|
-
model:
|
|
11022
|
+
model: sessionModel,
|
|
10771
11023
|
...instanceModel ? { modelRef: instanceModel } : {},
|
|
10772
11024
|
...overrides.maxTurns !== void 0 ? { maxTurns: overrides.maxTurns } : {},
|
|
10773
11025
|
message: textPrompt,
|
|
@@ -10790,6 +11042,7 @@ function makeRunCommand() {
|
|
|
10790
11042
|
}
|
|
10791
11043
|
return;
|
|
10792
11044
|
}
|
|
11045
|
+
if (!dryRun && reportPreflight(await preflightFor(model))) process.exit(1);
|
|
10793
11046
|
let flow;
|
|
10794
11047
|
try {
|
|
10795
11048
|
flow = loadFlow(flowPath);
|
|
@@ -10823,6 +11076,7 @@ function makeRunCommand() {
|
|
|
10823
11076
|
logErr(friendly ?? (err instanceof Error ? err.message : String(err)));
|
|
10824
11077
|
process.exit(1);
|
|
10825
11078
|
}
|
|
11079
|
+
if (dryRun && reportPreflight(await preflightFor(model))) process.exitCode = 1;
|
|
10826
11080
|
});
|
|
10827
11081
|
return cmd;
|
|
10828
11082
|
}
|
|
@@ -10844,8 +11098,10 @@ function makeResumeCommand() {
|
|
|
10844
11098
|
}
|
|
10845
11099
|
const session = sessionId ? await loadSessionById(projectDir, sessionId) : await loadSession(projectDir);
|
|
10846
11100
|
if (!session) {
|
|
10847
|
-
|
|
10848
|
-
|
|
11101
|
+
const idsHint = await sessionIdsHint(projectDir);
|
|
11102
|
+
logErr(opts.session ? `Session not found: ${opts.session}` : `No session in ${projectDir}`);
|
|
11103
|
+
if (idsHint) console.log(` ${S.dim(idsHint)}`);
|
|
11104
|
+
else console.log(` ${S.dim("Run")} ${S.cmd("skaile run <flow-id>")} ${S.dim("first.")}`);
|
|
10849
11105
|
process.exit(1);
|
|
10850
11106
|
}
|
|
10851
11107
|
console.log();
|
|
@@ -10971,14 +11227,13 @@ function makeReplCommand() {
|
|
|
10971
11227
|
} catch {
|
|
10972
11228
|
}
|
|
10973
11229
|
}
|
|
10974
|
-
const
|
|
10975
|
-
|
|
10976
|
-
|
|
11230
|
+
const preflight = await preflightHarness({
|
|
11231
|
+
projectDir,
|
|
11232
|
+
harness: effective.harness ?? DEFAULT_HARNESS_ID,
|
|
11233
|
+
model: effectiveModel,
|
|
11234
|
+
roles: effective.roles
|
|
10977
11235
|
});
|
|
10978
|
-
if (
|
|
10979
|
-
logErr(providerRefusal);
|
|
10980
|
-
process.exit(1);
|
|
10981
|
-
}
|
|
11236
|
+
if (reportPreflight(preflight)) process.exit(1);
|
|
10982
11237
|
try {
|
|
10983
11238
|
await startRepl({
|
|
10984
11239
|
projectDir,
|
|
@@ -11112,7 +11367,7 @@ function makeServeCommand() {
|
|
|
11112
11367
|
process.exitCode = 1;
|
|
11113
11368
|
return;
|
|
11114
11369
|
}
|
|
11115
|
-
const dirProblem = (await import('../serve-preflight-
|
|
11370
|
+
const dirProblem = (await import('../serve-preflight-AADSOUO2.js')).checkServeProjectDir(
|
|
11116
11371
|
opts.projectDir
|
|
11117
11372
|
);
|
|
11118
11373
|
if (dirProblem) {
|
|
@@ -11141,7 +11396,7 @@ function makeServeCommand() {
|
|
|
11141
11396
|
}
|
|
11142
11397
|
let providers = parseProviderIds(opts.providers);
|
|
11143
11398
|
if (!managedCodex) {
|
|
11144
|
-
const { resolveServeProvider } = await import('../serve-preflight-
|
|
11399
|
+
const { resolveServeProvider } = await import('../serve-preflight-AADSOUO2.js');
|
|
11145
11400
|
const picked = resolveServeProvider(opts.projectDir, opts.provider, providers);
|
|
11146
11401
|
if ("problem" in picked) {
|
|
11147
11402
|
logErr(picked.problem);
|
|
@@ -11151,9 +11406,9 @@ function makeServeCommand() {
|
|
|
11151
11406
|
providers = [...picked.providers];
|
|
11152
11407
|
}
|
|
11153
11408
|
const modelEndpoint = parseModelEndpointFlag(opts.modelEndpoint);
|
|
11154
|
-
const { checkHarnessSdk: checkHarnessSdk2, checkModelEndpointPeer, checkServeModel } = await import('../serve-preflight-
|
|
11155
|
-
const { checkServeHarness,
|
|
11156
|
-
const startProblem = managedCodex ? null : await checkServeHarness(opts.projectDir, opts.harness) ??
|
|
11409
|
+
const { checkHarnessSdk: checkHarnessSdk2, checkModelEndpointPeer, checkServeModel } = await import('../serve-preflight-AADSOUO2.js');
|
|
11410
|
+
const { checkServeHarness, checkServeAgents } = await import('../serve-preflight-AADSOUO2.js');
|
|
11411
|
+
const startProblem = managedCodex ? null : await checkServeHarness(opts.projectDir, opts.harness) ?? checkServeAgents(opts.projectDir);
|
|
11157
11412
|
if (startProblem) {
|
|
11158
11413
|
logErr(startProblem);
|
|
11159
11414
|
process.exitCode = 1;
|
|
@@ -11219,12 +11474,12 @@ function makeServeCommand() {
|
|
|
11219
11474
|
);
|
|
11220
11475
|
}
|
|
11221
11476
|
async function ensurePluginsLoadedForServe(projectDir) {
|
|
11222
|
-
const { logInfo: logInfo2, logWarn: logWarn2 } = await import('../helpers-
|
|
11477
|
+
const { logInfo: logInfo2, logWarn: logWarn2 } = await import('../helpers-PJNUTZXZ.js');
|
|
11223
11478
|
try {
|
|
11224
11479
|
const { resolveSkWorkspaceConfig: resolveSkWorkspaceConfig2 } = await import('../core/index.js');
|
|
11225
11480
|
const config = resolveSkWorkspaceConfig2(projectDir);
|
|
11226
11481
|
if (!config.plugins || config.plugins.length === 0) return;
|
|
11227
|
-
const { ensurePluginsLoaded } = await import('../plugin-store-
|
|
11482
|
+
const { ensurePluginsLoaded } = await import('../plugin-store-OJTERUEZ.js');
|
|
11228
11483
|
const { pluginRegistry } = await import('../plugin-registry/index.js');
|
|
11229
11484
|
const result = await ensurePluginsLoaded(projectDir, config.plugins, pluginRegistry);
|
|
11230
11485
|
if (result.loaded.length > 0) {
|
|
@@ -11238,14 +11493,14 @@ async function ensurePluginsLoadedForServe(projectDir) {
|
|
|
11238
11493
|
}
|
|
11239
11494
|
}
|
|
11240
11495
|
async function runCompileTest(opts) {
|
|
11241
|
-
const { logOk: logOk2, logErr: logErr2, logInfo: logInfo2, S: S2 } = await import('../helpers-
|
|
11496
|
+
const { logOk: logOk2, logErr: logErr2, logInfo: logInfo2, S: S2 } = await import('../helpers-PJNUTZXZ.js');
|
|
11242
11497
|
const { tmpdir } = await import('os');
|
|
11243
11498
|
const { dirname: dirname3, join: join6, resolve: resolve4 } = await import('path');
|
|
11244
11499
|
const { fileURLToPath: fileURLToPath2 } = await import('url');
|
|
11245
11500
|
const { unlinkSync, existsSync: existsSync22 } = await import('fs');
|
|
11246
11501
|
const { spawn } = await import('child_process');
|
|
11247
11502
|
const { portableSpawnSync: portableSpawnSync2 } = await import('../core/index.js');
|
|
11248
|
-
const { MONOREPO_ROOT } = await import('../paths-
|
|
11503
|
+
const { MONOREPO_ROOT } = await import('../paths-RPK5PNZQ.js');
|
|
11249
11504
|
if (MONOREPO_ROOT === null) {
|
|
11250
11505
|
logErr2("--compile-test is only available inside the skaile-dev workspace.");
|
|
11251
11506
|
logInfo2("Run it from a checkout of skaile-ai/skaile-dev (the monorepo shell).");
|
|
@@ -11962,7 +12217,9 @@ async function requireSession(projectDir, idOrPrefix) {
|
|
|
11962
12217
|
}
|
|
11963
12218
|
const session = runId ? await loadSessionById(projectDir, runId) : null;
|
|
11964
12219
|
if (!runId || !session) {
|
|
11965
|
-
|
|
12220
|
+
const hint = await sessionIdsHint(projectDir);
|
|
12221
|
+
logErr(`Session not found: ${idOrPrefix}${hint ? `
|
|
12222
|
+
${hint}` : ""}`);
|
|
11966
12223
|
process.exit(1);
|
|
11967
12224
|
}
|
|
11968
12225
|
return { runId, session };
|
|
@@ -12203,8 +12460,8 @@ function makeStoreCommand() {
|
|
|
12203
12460
|
"--all",
|
|
12204
12461
|
`List every match (default: ${STORE_ROW_LIMIT} rows, only what \`skaile add\` can install)`
|
|
12205
12462
|
).option("-C, --project-dir <dir>", "Project directory (catalog config overlay)", process.cwd()).action(async (query, opts) => {
|
|
12206
|
-
const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError: LocalCatalogDisabledError2 } = await import('../open-library-
|
|
12207
|
-
const { getKnownKinds: getKnownKinds2 } = await import('../open-registry-
|
|
12463
|
+
const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError: LocalCatalogDisabledError2 } = await import('../open-library-R5EZROFN.js');
|
|
12464
|
+
const { getKnownKinds: getKnownKinds2 } = await import('../open-registry-RZW2AFD6.js');
|
|
12208
12465
|
const projectDir = path19__default.resolve(opts.projectDir);
|
|
12209
12466
|
if (opts.kind && !getKnownKinds2().has(opts.kind)) {
|
|
12210
12467
|
logErr(
|
|
@@ -12262,8 +12519,8 @@ function makeStoreCommand() {
|
|
|
12262
12519
|
}
|
|
12263
12520
|
});
|
|
12264
12521
|
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) => {
|
|
12265
|
-
const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError: LocalCatalogDisabledError2 } = await import('../open-library-
|
|
12266
|
-
const { supportsInstallManifest: supportsInstallManifest2 } = await import('../project-
|
|
12522
|
+
const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError: LocalCatalogDisabledError2 } = await import('../open-library-R5EZROFN.js');
|
|
12523
|
+
const { supportsInstallManifest: supportsInstallManifest2 } = await import('../project-S2FT3LLR.js');
|
|
12267
12524
|
try {
|
|
12268
12525
|
parseAssetRef(ref);
|
|
12269
12526
|
} catch (e) {
|
|
@@ -12543,11 +12800,12 @@ function makeUpdateCommand() {
|
|
|
12543
12800
|
}
|
|
12544
12801
|
reportRewritten(result.rewritten);
|
|
12545
12802
|
for (const r of result.removed) logWarn(`Removed: ${r}`);
|
|
12803
|
+
for (const f of result.agentFilesRemoved ?? []) logWarn(`Removed: ${f}`);
|
|
12546
12804
|
reportReplaced(result.replaced);
|
|
12547
12805
|
reportRelocked(result.relocked);
|
|
12548
12806
|
reportMoved(result.moved);
|
|
12549
|
-
await pinComposedAgents(projectDir);
|
|
12550
|
-
const changed = result.deployed.length > 0 || result.removed.length > 0 || !!result.replaced?.length || !!result.moved?.length || !!result.relocked?.length;
|
|
12807
|
+
if (!failed) await pinComposedAgents(projectDir, { repin: true });
|
|
12808
|
+
const changed = result.deployed.length > 0 || result.removed.length > 0 || !!result.replaced?.length || !!result.agentFilesRemoved?.length || !!result.moved?.length || !!result.relocked?.length;
|
|
12551
12809
|
if (result.lockWritten) {
|
|
12552
12810
|
logInfo(`Lock file written: ${S.dim("skaile.lock.yaml")}`);
|
|
12553
12811
|
}
|
|
@@ -12680,7 +12938,7 @@ async function updateOne(am2, projectDir, target, force) {
|
|
|
12680
12938
|
return;
|
|
12681
12939
|
}
|
|
12682
12940
|
spinner.stop(process.exitCode === 1 ? "Failed" : "Done");
|
|
12683
|
-
await pinComposedAgents(projectDir);
|
|
12941
|
+
if (process.exitCode !== 1) await pinComposedAgents(projectDir, { repin: true });
|
|
12684
12942
|
for (const d of deployed) logOk(`Updated ${d}`);
|
|
12685
12943
|
if (deployed.length > 0) return;
|
|
12686
12944
|
if (readText2(lockPath) !== before) logInfo(`Re-locked ${target.ref}`);
|
|
@@ -12879,7 +13137,8 @@ function makeWhyCommand() {
|
|
|
12879
13137
|
}
|
|
12880
13138
|
const otherKind = await am2.otherKindHint(ref);
|
|
12881
13139
|
if (otherKind) {
|
|
12882
|
-
|
|
13140
|
+
const kinded = /^[^@/#\s]+:/.test(ref.trim());
|
|
13141
|
+
logErr(`${ref} is not ${kinded ? "locked" : "a locked skill"}. ${otherKind}`);
|
|
12883
13142
|
process.exitCode = 1;
|
|
12884
13143
|
return;
|
|
12885
13144
|
}
|
|
@@ -13063,6 +13322,17 @@ Advanced:
|
|
|
13063
13322
|
connector ... Connector operations
|
|
13064
13323
|
path Show resolved paths
|
|
13065
13324
|
|
|
13325
|
+
More:
|
|
13326
|
+
asset import|migrate|install|list|show Author and install AI assets
|
|
13327
|
+
migrate providers|agents|assets|harness One-time config and asset migrations
|
|
13328
|
+
providers list|add|set|rm|test AI provider registry
|
|
13329
|
+
auth status|set-key-strategy Secret key strategy and provider status
|
|
13330
|
+
cache clean|dir|size Inspect and reclaim the re-derivable cache
|
|
13331
|
+
npx skills add <url> Compatibility shim for npx skills syntax
|
|
13332
|
+
rebuild Re-snapshot composition items, bump prompt version
|
|
13333
|
+
verify Verify installed assets against store signatures
|
|
13334
|
+
complete --shell <shell> Shell completion script (zsh | bash | fish)
|
|
13335
|
+
|
|
13066
13336
|
Run skaile <command> --help for per-command options.
|
|
13067
13337
|
`;
|
|
13068
13338
|
}
|
|
@@ -13171,6 +13441,9 @@ async function initGitScaffold(resolved, created) {
|
|
|
13171
13441
|
".skaile/providers.yml",
|
|
13172
13442
|
".skaile/history.yaml",
|
|
13173
13443
|
".skaile/model-endpoint.json",
|
|
13444
|
+
// Machine state of the runs: one compiled-prompt snapshot per run, and the ledger of the
|
|
13445
|
+
// agent files an install wrote.
|
|
13446
|
+
...RUN_STATE_GITIGNORE_ENTRIES,
|
|
13174
13447
|
// Per-machine files a run writes into the project: the system prompt handed to the harness
|
|
13175
13448
|
// (it carries the host path) and omp's session logs.
|
|
13176
13449
|
".codex/skaile-session-instructions.md",
|
|
@@ -13181,6 +13454,8 @@ async function initGitScaffold(resolved, created) {
|
|
|
13181
13454
|
// extension: it is committed, so it is not listed here.
|
|
13182
13455
|
".codex/config.toml",
|
|
13183
13456
|
".skaile/plugin-state.json",
|
|
13457
|
+
// What the plugin store installed on this machine; a clone that took it along would skip the install.
|
|
13458
|
+
".skaile/plugins/.reconcile-hash",
|
|
13184
13459
|
// `.mcp.json` and `.skaile/assets/` are committed on purpose, so they are not listed: the
|
|
13185
13460
|
// entries use `.` for the project root and secrets are only `${NAME}` references, so the
|
|
13186
13461
|
// files read the same in every clone (p1294).
|
|
@@ -13227,7 +13502,7 @@ async function bootstrapUserConfig() {
|
|
|
13227
13502
|
}
|
|
13228
13503
|
async function hydrateInitSources(resolved, created) {
|
|
13229
13504
|
try {
|
|
13230
|
-
const { ensureSourcesCloned } = await import('../ensure-sources-
|
|
13505
|
+
const { ensureSourcesCloned } = await import('../ensure-sources-F6VQDCWY.js');
|
|
13231
13506
|
const hydrate = ensureSourcesCloned(resolved, { quiet: true });
|
|
13232
13507
|
for (const n of hydrate.cloned) created.push(`~/.skaile/cache/sources/${n}/`);
|
|
13233
13508
|
if (hydrate.failed.length > 0) {
|
|
@@ -13268,7 +13543,7 @@ function printInitSummary(resolved, projectDir, created) {
|
|
|
13268
13543
|
}
|
|
13269
13544
|
program.hook("preAction", (_program, actionCommand) => setActiveCommand(actionCommand));
|
|
13270
13545
|
program.command("setup").description("Interactive provider setup wizard").action(async () => {
|
|
13271
|
-
const { cmdSetup } = await import('../setup-
|
|
13546
|
+
const { cmdSetup } = await import('../setup-HOAJHUFQ.js');
|
|
13272
13547
|
await cmdSetup([], { projectDir: process.cwd() });
|
|
13273
13548
|
});
|
|
13274
13549
|
program.addCommand(makeInstallCommand());
|
|
@@ -13349,7 +13624,7 @@ program.hook("postAction", async (_thisCommand, actionCommand) => {
|
|
|
13349
13624
|
const opts = actionCommand.opts();
|
|
13350
13625
|
if (opts.global || opts.dryRun) return;
|
|
13351
13626
|
const projectDir = path19__default.resolve(opts.projectDir ?? process.cwd());
|
|
13352
|
-
const { refreshPluginSkills } = await import('../claude-code-
|
|
13627
|
+
const { refreshPluginSkills } = await import('../claude-code-BLFRZU2X.js');
|
|
13353
13628
|
try {
|
|
13354
13629
|
if (await refreshPluginSkills(projectDir)) {
|
|
13355
13630
|
logInfo(`Updated ${S.cmd(".claude/plugins/skaile/skills")} (the --full plugin copy)`);
|
|
@@ -13368,6 +13643,7 @@ process.once("beforeExit", () => {
|
|
|
13368
13643
|
process.exit(1);
|
|
13369
13644
|
});
|
|
13370
13645
|
setLibraryAssetCheck((asset, libraryPath) => [
|
|
13646
|
+
...manifestEntryRootRefusals(libraryPath, asset.kind, asset.name),
|
|
13371
13647
|
...manifestEntryFilesRefusals(libraryPath, asset.kind, asset.name),
|
|
13372
13648
|
...libraryAssetRefusals(asset, libraryPath, getKindRegistry())
|
|
13373
13649
|
]);
|