@skaile/workspaces 6.0.0 → 6.2.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 +98 -0
- package/dist/{asset-feeds-PXUWCXVI.js → asset-feeds-KPKCE64E.js} +31 -23
- package/dist/asset-feeds-KPKCE64E.js.map +1 -0
- package/dist/asset-manager/catalog-deployer.js +10 -10
- package/dist/asset-manager/fragments.js +1 -1
- package/dist/asset-manager/index.js +19 -19
- package/dist/asset-manager/installer.js +13 -13
- package/dist/asset-manager/renderers.js +11 -11
- package/dist/asset-manager/src/index.d.ts +339 -19
- package/dist/asset-manager/src/index.d.ts.map +1 -1
- package/dist/asset-manager/src/installer.d.ts +40 -0
- package/dist/asset-manager/src/installer.d.ts.map +1 -1
- package/dist/asset-manager/src/mcp-config.d.ts +21 -0
- package/dist/asset-manager/src/mcp-config.d.ts.map +1 -1
- package/dist/asset-manager/src/renderers.d.ts +7 -0
- package/dist/asset-manager/src/renderers.d.ts.map +1 -1
- package/dist/bridge/harnesses/claude-sdk.js +18 -22
- package/dist/bridge/harnesses/claude-sdk.js.map +1 -1
- package/dist/bridge/harnesses/codex.js +24 -17
- package/dist/bridge/harnesses/codex.js.map +1 -1
- package/dist/bridge/harnesses/continue.js +14 -14
- package/dist/bridge/harnesses/echo.js +4 -4
- package/dist/bridge/harnesses/gemini.js +10 -10
- package/dist/bridge/harnesses/goose.js +14 -14
- package/dist/bridge/harnesses/omp.js +15 -8
- package/dist/bridge/harnesses/omp.js.map +1 -1
- package/dist/bridge/harnesses/opencode.js +14 -14
- package/dist/bridge/harnesses/qwen.js +10 -10
- package/dist/bridge/index.js +19 -19
- package/dist/bridge/src/claude-sdk-surface.d.ts +17 -0
- package/dist/bridge/src/claude-sdk-surface.d.ts.map +1 -0
- package/dist/bridge/src/harness-model-check.d.ts +30 -0
- package/dist/bridge/src/harness-model-check.d.ts.map +1 -1
- package/dist/bridge/src/harnesses/_subprocess-cli.d.ts.map +1 -1
- package/dist/bridge/src/harnesses/claude-sdk.d.ts.map +1 -1
- package/dist/bridge/src/harnesses/codex.d.ts.map +1 -1
- package/dist/bridge/src/harnesses/omp.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/bridge/src/normalizer.d.ts +3 -1
- package/dist/bridge/src/normalizer.d.ts.map +1 -1
- package/dist/bridge/src/runner-private-env.d.ts +7 -0
- package/dist/bridge/src/runner-private-env.d.ts.map +1 -1
- package/dist/{chunk-HK7HMEPT.js → chunk-27SXN33H.js} +13 -5
- package/dist/chunk-27SXN33H.js.map +1 -0
- package/dist/{chunk-TKHJXPSB.js → chunk-2XM3ZH36.js} +183 -33
- package/dist/chunk-2XM3ZH36.js.map +1 -0
- package/dist/{chunk-E3GPGTW3.js → chunk-3HACK2Z7.js} +142 -28
- package/dist/chunk-3HACK2Z7.js.map +1 -0
- package/dist/{chunk-T2BDID2J.js → chunk-5JPW27BI.js} +10 -9
- package/dist/chunk-5JPW27BI.js.map +1 -0
- package/dist/{chunk-2UUKCROR.js → chunk-5LQ62LNT.js} +4 -4
- package/dist/{chunk-2UUKCROR.js.map → chunk-5LQ62LNT.js.map} +1 -1
- package/dist/{chunk-UL22SDGR.js → chunk-6CYKTHNT.js} +194 -127
- package/dist/chunk-6CYKTHNT.js.map +1 -0
- package/dist/{chunk-XFIEVEU7.js → chunk-6OHZUUR7.js} +5 -4
- package/dist/chunk-6OHZUUR7.js.map +1 -0
- package/dist/{chunk-E572OHGY.js → chunk-76FLBODK.js} +4 -3
- package/dist/chunk-76FLBODK.js.map +1 -0
- package/dist/{chunk-GN4VVSAA.js → chunk-7DRFKAJZ.js} +7 -7
- package/dist/{chunk-GN4VVSAA.js.map → chunk-7DRFKAJZ.js.map} +1 -1
- package/dist/chunk-7H6XRCPG.js +31 -0
- package/dist/chunk-7H6XRCPG.js.map +1 -0
- package/dist/{chunk-MCUJTNY5.js → chunk-7Y6S4XLL.js} +3 -3
- package/dist/{chunk-MCUJTNY5.js.map → chunk-7Y6S4XLL.js.map} +1 -1
- package/dist/{chunk-DHYSUJ3H.js → chunk-BEYNH2LS.js} +4 -4
- package/dist/{chunk-DHYSUJ3H.js.map → chunk-BEYNH2LS.js.map} +1 -1
- package/dist/{chunk-GEQSUC6U.js → chunk-BOT64P3U.js} +4 -4
- package/dist/{chunk-GEQSUC6U.js.map → chunk-BOT64P3U.js.map} +1 -1
- package/dist/{chunk-L4YKW5AY.js → chunk-BRK5QZKI.js} +121 -20
- package/dist/chunk-BRK5QZKI.js.map +1 -0
- package/dist/{chunk-YGRZNFRO.js → chunk-BY5WIRCU.js} +58 -5
- package/dist/chunk-BY5WIRCU.js.map +1 -0
- package/dist/{chunk-Z7ZEZZB6.js → chunk-C5HFK34M.js} +3 -3
- package/dist/chunk-C5HFK34M.js.map +1 -0
- package/dist/{chunk-DUMTLYSO.js → chunk-COAFAYBS.js} +31 -7
- package/dist/chunk-COAFAYBS.js.map +1 -0
- package/dist/{chunk-7XSAW5OC.js → chunk-E5NQRHEB.js} +30 -7
- package/dist/chunk-E5NQRHEB.js.map +1 -0
- package/dist/{chunk-BFMYYNDT.js → chunk-F3D25RGM.js} +11 -3
- package/dist/chunk-F3D25RGM.js.map +1 -0
- package/dist/{chunk-VBI7HGHB.js → chunk-GF5JXQIZ.js} +3 -3
- package/dist/{chunk-VBI7HGHB.js.map → chunk-GF5JXQIZ.js.map} +1 -1
- package/dist/{chunk-ZFUZ5AKM.js → chunk-I7LC5TDY.js} +3 -3
- package/dist/{chunk-ZFUZ5AKM.js.map → chunk-I7LC5TDY.js.map} +1 -1
- package/dist/{chunk-3IXIEHUB.js → chunk-ICSGNT5P.js} +7 -7
- package/dist/{chunk-3IXIEHUB.js.map → chunk-ICSGNT5P.js.map} +1 -1
- package/dist/{chunk-WEH33JSG.js → chunk-ITFCWMOY.js} +93 -29
- package/dist/chunk-ITFCWMOY.js.map +1 -0
- package/dist/{chunk-WDXZA7QW.js → chunk-IZQOO6MN.js} +2 -2
- package/dist/{chunk-WDXZA7QW.js.map → chunk-IZQOO6MN.js.map} +1 -1
- package/dist/{chunk-WDAIWDLK.js → chunk-JFLQICIU.js} +5 -5
- package/dist/{chunk-WDAIWDLK.js.map → chunk-JFLQICIU.js.map} +1 -1
- package/dist/{chunk-ARWKK325.js → chunk-JJJ2G4K2.js} +5 -5
- package/dist/{chunk-ARWKK325.js.map → chunk-JJJ2G4K2.js.map} +1 -1
- package/dist/{chunk-GOCWM7FN.js → chunk-JMIKGAUA.js} +43 -4
- package/dist/chunk-JMIKGAUA.js.map +1 -0
- package/dist/{chunk-X3RMRJNR.js → chunk-JRN5QF4C.js} +8 -3
- package/dist/chunk-JRN5QF4C.js.map +1 -0
- package/dist/{chunk-SNEE6UGY.js → chunk-K3R2UKG7.js} +18 -12
- package/dist/chunk-K3R2UKG7.js.map +1 -0
- package/dist/{chunk-VXEYX73S.js → chunk-KB56WBQ3.js} +4 -4
- package/dist/{chunk-VXEYX73S.js.map → chunk-KB56WBQ3.js.map} +1 -1
- package/dist/{chunk-OHNKYHRR.js → chunk-KJSC2ZD6.js} +264 -18
- package/dist/chunk-KJSC2ZD6.js.map +1 -0
- package/dist/{chunk-UQ33Y4DM.js → chunk-KPKGWXUJ.js} +4 -4
- package/dist/{chunk-UQ33Y4DM.js.map → chunk-KPKGWXUJ.js.map} +1 -1
- package/dist/{chunk-AF432MS3.js → chunk-KXJMQTOU.js} +3 -3
- package/dist/{chunk-AF432MS3.js.map → chunk-KXJMQTOU.js.map} +1 -1
- package/dist/chunk-LRBP3234.js +302 -0
- package/dist/chunk-LRBP3234.js.map +1 -0
- package/dist/{chunk-UVVVR4XO.js → chunk-M4OG2YN4.js} +4 -4
- package/dist/{chunk-UVVVR4XO.js.map → chunk-M4OG2YN4.js.map} +1 -1
- package/dist/{chunk-QOM5Z62G.js → chunk-MAZ3UXJK.js} +17 -24
- package/dist/chunk-MAZ3UXJK.js.map +1 -0
- package/dist/{chunk-Y2TO2U7W.js → chunk-MM4YO3EL.js} +3 -3
- package/dist/{chunk-Y2TO2U7W.js.map → chunk-MM4YO3EL.js.map} +1 -1
- package/dist/{chunk-OULSJRXV.js → chunk-OCQNUV4T.js} +7 -7
- package/dist/{chunk-OULSJRXV.js.map → chunk-OCQNUV4T.js.map} +1 -1
- package/dist/{chunk-SZXGRHQQ.js → chunk-PJJSBZZP.js} +4 -4
- package/dist/{chunk-SZXGRHQQ.js.map → chunk-PJJSBZZP.js.map} +1 -1
- package/dist/{chunk-OAHVKSQJ.js → chunk-PKBLJI23.js} +1471 -126
- package/dist/chunk-PKBLJI23.js.map +1 -0
- package/dist/{chunk-NOA6EJXE.js → chunk-PKE3PXOK.js} +3 -3
- package/dist/{chunk-NOA6EJXE.js.map → chunk-PKE3PXOK.js.map} +1 -1
- package/dist/{chunk-WYHQUCHR.js → chunk-PMWRM4EJ.js} +109 -48
- package/dist/chunk-PMWRM4EJ.js.map +1 -0
- package/dist/{chunk-H6UVIKQ2.js → chunk-PNUM7GUY.js} +3 -3
- package/dist/{chunk-H6UVIKQ2.js.map → chunk-PNUM7GUY.js.map} +1 -1
- package/dist/{chunk-SRODW6M2.js → chunk-Q5RN4PWV.js} +3 -3
- package/dist/{chunk-SRODW6M2.js.map → chunk-Q5RN4PWV.js.map} +1 -1
- package/dist/{chunk-LN6QB7XI.js → chunk-QIHL3YPL.js} +4 -4
- package/dist/{chunk-LN6QB7XI.js.map → chunk-QIHL3YPL.js.map} +1 -1
- package/dist/{chunk-U56GGCC2.js → chunk-QK7AG5AV.js} +4 -4
- package/dist/{chunk-U56GGCC2.js.map → chunk-QK7AG5AV.js.map} +1 -1
- package/dist/{chunk-OTIB4D2K.js → chunk-QPWR3YMY.js} +15 -5
- package/dist/chunk-QPWR3YMY.js.map +1 -0
- package/dist/{chunk-4DWBSTYA.js → chunk-QXKUFROW.js} +22 -5
- package/dist/chunk-QXKUFROW.js.map +1 -0
- package/dist/{chunk-4XWLB7JB.js → chunk-RQMIZONH.js} +95 -35
- package/dist/chunk-RQMIZONH.js.map +1 -0
- package/dist/{chunk-LSI2IVFT.js → chunk-RXGPFAMN.js} +4 -3
- package/dist/chunk-RXGPFAMN.js.map +1 -0
- package/dist/{chunk-3JKGY2YC.js → chunk-S2H3RBK7.js} +182 -33
- package/dist/chunk-S2H3RBK7.js.map +1 -0
- package/dist/{chunk-VJRTDKXS.js → chunk-SJNZ4WPA.js} +165 -106
- package/dist/chunk-SJNZ4WPA.js.map +1 -0
- package/dist/{chunk-KX2PT5Q4.js → chunk-T2VBPVWZ.js} +77 -18
- package/dist/chunk-T2VBPVWZ.js.map +1 -0
- package/dist/{chunk-6Z5KTFJT.js → chunk-TSTRH4SM.js} +3 -3
- package/dist/{chunk-6Z5KTFJT.js.map → chunk-TSTRH4SM.js.map} +1 -1
- package/dist/{chunk-7CV3HFWJ.js → chunk-TZERN27L.js} +5 -5
- package/dist/{chunk-7CV3HFWJ.js.map → chunk-TZERN27L.js.map} +1 -1
- package/dist/{chunk-JDR6ILCW.js → chunk-U673DB5U.js} +4 -4
- package/dist/{chunk-JDR6ILCW.js.map → chunk-U673DB5U.js.map} +1 -1
- package/dist/{chunk-FKU57Q5Q.js → chunk-URCJIV7T.js} +3 -3
- package/dist/{chunk-FKU57Q5Q.js.map → chunk-URCJIV7T.js.map} +1 -1
- package/dist/{chunk-ADPM6AYF.js → chunk-VSX2G7LA.js} +3 -3
- package/dist/{chunk-ADPM6AYF.js.map → chunk-VSX2G7LA.js.map} +1 -1
- package/dist/{chunk-F2GOZMRA.js → chunk-X37JUNEW.js} +49 -49
- package/dist/chunk-X37JUNEW.js.map +1 -0
- package/dist/{chunk-NMI2TWMH.js → chunk-Z3IRZBXB.js} +158 -344
- package/dist/chunk-Z3IRZBXB.js.map +1 -0
- package/dist/{chunk-7TPYPVAH.js → chunk-ZWJCRHP3.js} +3 -3
- package/dist/{chunk-7TPYPVAH.js.map → chunk-ZWJCRHP3.js.map} +1 -1
- package/dist/{claude-code-VJGYBXQR.js → claude-code-BBMNVH2J.js} +5 -5
- package/dist/{claude-code-VJGYBXQR.js.map → claude-code-BBMNVH2J.js.map} +1 -1
- package/dist/cli/index.js +964 -501
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/src/agent-pins.d.ts +11 -0
- package/dist/cli/src/agent-pins.d.ts.map +1 -1
- package/dist/cli/src/commands/asset-cmd.d.ts.map +1 -1
- package/dist/cli/src/commands/catalog.d.ts +1 -1
- package/dist/cli/src/commands/catalog.d.ts.map +1 -1
- package/dist/cli/src/commands/config.d.ts.map +1 -1
- package/dist/cli/src/commands/diff.d.ts.map +1 -1
- package/dist/cli/src/commands/harness.d.ts +24 -0
- package/dist/cli/src/commands/harness.d.ts.map +1 -0
- package/dist/cli/src/commands/integration.d.ts.map +1 -1
- package/dist/cli/src/commands/library-cmd.d.ts.map +1 -1
- package/dist/cli/src/commands/library-index.d.ts +28 -3
- package/dist/cli/src/commands/library-index.d.ts.map +1 -1
- package/dist/cli/src/commands/library-publish.d.ts.map +1 -1
- package/dist/cli/src/commands/migrate-assets.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 +19 -1
- package/dist/cli/src/commands/project.d.ts.map +1 -1
- package/dist/cli/src/commands/rebuild.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 +31 -1
- package/dist/cli/src/commands/serve-preflight.d.ts.map +1 -1
- package/dist/cli/src/commands/serve.d.ts +10 -0
- package/dist/cli/src/commands/serve.d.ts.map +1 -1
- package/dist/cli/src/commands/session-logs/local-query.d.ts +2 -0
- package/dist/cli/src/commands/session-logs/local-query.d.ts.map +1 -1
- package/dist/cli/src/commands/source-manifest-publish.d.ts.map +1 -1
- package/dist/cli/src/commands/source-manifest.d.ts +19 -7
- package/dist/cli/src/commands/source-manifest.d.ts.map +1 -1
- package/dist/cli/src/commands/source.d.ts +9 -2
- package/dist/cli/src/commands/source.d.ts.map +1 -1
- package/dist/cli/src/commands/store.d.ts.map +1 -1
- package/dist/cli/src/commands/update.d.ts.map +1 -1
- 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/config-checks.d.ts +55 -0
- package/dist/cli/src/config-checks.d.ts.map +1 -0
- package/dist/cli/src/harness-error.d.ts +12 -1
- package/dist/cli/src/harness-error.d.ts.map +1 -1
- package/dist/cli/src/helpers.d.ts +18 -8
- package/dist/cli/src/helpers.d.ts.map +1 -1
- package/dist/cli/src/plugin-store/index.d.ts +10 -1
- package/dist/cli/src/plugin-store/index.d.ts.map +1 -1
- package/dist/cli/src/plugin-store/spec.d.ts +8 -0
- package/dist/cli/src/plugin-store/spec.d.ts.map +1 -1
- package/dist/cli/src/skill-checks.d.ts +27 -0
- package/dist/cli/src/skill-checks.d.ts.map +1 -1
- package/dist/cli/src/store-addable.d.ts +11 -0
- package/dist/cli/src/store-addable.d.ts.map +1 -1
- package/dist/connectors/config.js +5 -5
- package/dist/connectors/index.js +23 -23
- package/dist/connectors/src/connector-manager.d.ts.map +1 -1
- package/dist/connectors-47EM6C2P.js +48 -0
- package/dist/{connectors-CXZLXAFZ.js.map → connectors-47EM6C2P.js.map} +1 -1
- package/dist/core/framework.js +1 -1
- package/dist/core/index.js +9 -9
- package/dist/core/manifest.js +2 -2
- package/dist/core/models.js +1 -1
- package/dist/core/provider-registry-credentials.js +2 -2
- package/dist/core/provider-registry.js +1 -1
- package/dist/core/publish-manifest.js +3 -3
- package/dist/core/ref.js +1 -1
- package/dist/core/runtime-assets.js +5 -5
- package/dist/core/src/agent-instances.d.ts.map +1 -1
- package/dist/core/src/config-key-diagnostics.d.ts +9 -0
- package/dist/core/src/config-key-diagnostics.d.ts.map +1 -0
- package/dist/core/src/framework.d.ts +5 -3
- package/dist/core/src/framework.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/lock.d.ts +12 -0
- package/dist/core/src/lock.d.ts.map +1 -1
- package/dist/core/src/manifest.d.ts +25 -0
- package/dist/core/src/manifest.d.ts.map +1 -1
- package/dist/core/src/models.d.ts +15 -0
- package/dist/core/src/models.d.ts.map +1 -1
- package/dist/core/src/provider-registry.d.ts +6 -0
- package/dist/core/src/provider-registry.d.ts.map +1 -1
- package/dist/core/src/workspace-config.d.ts +18 -1
- package/dist/core/src/workspace-config.d.ts.map +1 -1
- package/dist/core/src/workspace-yaml-editor.d.ts +9 -2
- package/dist/core/src/workspace-yaml-editor.d.ts.map +1 -1
- package/dist/core/workspace-config.js +4 -4
- package/dist/deploy/index.js +9 -9
- package/dist/discovery/index.js +5 -5
- package/dist/discovery/src/builtin-providers.d.ts.map +1 -1
- package/dist/discovery/src/parse-manifest.d.ts.map +1 -1
- package/dist/{ensure-sources-UPTHZKGF.js → ensure-sources-K5EFNC3L.js} +36 -22
- package/dist/ensure-sources-K5EFNC3L.js.map +1 -0
- package/dist/factory-assets/connectors/box.js +23 -23
- package/dist/factory-assets/connectors/deploy.js +23 -23
- package/dist/factory-assets/connectors/devserver.js +23 -23
- package/dist/factory-assets/connectors/flow/adapter.js +23 -23
- package/dist/factory-assets/connectors/flow/contract/normalize.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/contract.js +1 -1
- package/dist/factory-assets/connectors/flow/engine.js +11 -11
- package/dist/factory-assets/connectors/flow/run-flow.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/run-flow.js +25 -25
- package/dist/factory-assets/connectors/flow.js +23 -23
- package/dist/factory-assets/connectors/git.js +23 -23
- package/dist/factory-assets/connectors/gmail.js +23 -23
- package/dist/factory-assets/connectors/googledrive.js +23 -23
- package/dist/factory-assets/connectors/local.js +23 -23
- package/dist/factory-assets/connectors/mattermost.js +23 -23
- package/dist/factory-assets/connectors/memory.js +23 -23
- package/dist/factory-assets/connectors/minio.js +23 -23
- package/dist/factory-assets/connectors/postgres.js +23 -23
- package/dist/factory-assets/connectors/s3.js +23 -23
- package/dist/factory-assets/connectors/sharepoint.js +23 -23
- package/dist/factory-assets/connectors/sqlite.js +23 -23
- package/dist/factory-assets/connectors/static-server.js +23 -23
- package/dist/factory-assets/connectors/tunnel.js +23 -23
- package/dist/factory-assets/connectors/webdav.js +23 -23
- package/dist/factory-assets/connectors/xstate-store.js +23 -23
- package/dist/factory-assets/connectors/xstate.js +23 -23
- package/dist/factory-assets/skills/authoring-skaile-assets/SKILL.md +1 -1
- package/dist/factory-assets/skills/authoring-skaile-manifests/SKILL.md +2 -2
- package/dist/factory-assets/skills/authoring-skaile-manifests/references/dependency-standard.md +3 -3
- package/dist/flows-KLBNSKLO.js +26 -0
- package/dist/{flows-TJQIMGUX.js.map → flows-KLBNSKLO.js.map} +1 -1
- package/dist/helpers-LUSV2ICC.js +52 -0
- package/dist/{helpers-DE53KG3E.js.map → helpers-LUSV2ICC.js.map} +1 -1
- package/dist/library/index.js +14 -14
- package/dist/library/install.js +5 -5
- package/dist/library/src/index.d.ts +2 -2
- package/dist/library/src/index.d.ts.map +1 -1
- package/dist/library/src/install/index.d.ts +1 -1
- package/dist/library/src/install/index.d.ts.map +1 -1
- package/dist/library/src/install/install-from-manifest.d.ts +13 -0
- package/dist/library/src/install/install-from-manifest.d.ts.map +1 -1
- package/dist/library/src/install/source-fetch-github.d.ts.map +1 -1
- package/dist/library/src/local/library-dir.d.ts +22 -5
- package/dist/library/src/local/library-dir.d.ts.map +1 -1
- package/dist/library/src/local/local-catalog-source.d.ts.map +1 -1
- package/dist/library/src/manifest-writer.d.ts.map +1 -1
- package/dist/library/src/remote/remote-catalog-source.d.ts +8 -0
- package/dist/library/src/remote/remote-catalog-source.d.ts.map +1 -1
- package/dist/library/src/remote/rest-catalog-source.d.ts +3 -2
- package/dist/library/src/remote/rest-catalog-source.d.ts.map +1 -1
- package/dist/{library-publish-KKQ2ULLX.js → library-publish-XMRCKRNR.js} +59 -58
- package/dist/library-publish-XMRCKRNR.js.map +1 -0
- package/dist/model-endpoint/index.js +12 -12
- package/dist/model-endpoint/src/openai-chat.d.ts +7 -2
- package/dist/model-endpoint/src/openai-chat.d.ts.map +1 -1
- package/dist/model-endpoint/src/openai-shared.d.ts +8 -0
- package/dist/model-endpoint/src/openai-shared.d.ts.map +1 -1
- package/dist/model-endpoint/src/server.d.ts.map +1 -1
- package/dist/model-endpoint/src/types.d.ts +1 -1
- package/dist/model-endpoint/src/types.d.ts.map +1 -1
- package/dist/model-endpoint/src/usage-cost.d.ts +23 -0
- package/dist/model-endpoint/src/usage-cost.d.ts.map +1 -0
- package/dist/open-library-XBR46DJL.js +56 -0
- package/dist/{open-library-RJGJIW5H.js.map → open-library-XBR46DJL.js.map} +1 -1
- package/dist/open-registry-W562DCDL.js +32 -0
- package/dist/{open-registry-3QS3J7KO.js.map → open-registry-W562DCDL.js.map} +1 -1
- package/dist/paths-2AZXB3QL.js +22 -0
- package/dist/{paths-QAV4C3KX.js.map → paths-2AZXB3QL.js.map} +1 -1
- package/dist/plugin-store-36SIL4TV.js +23 -0
- package/dist/{plugin-store-MSH6GK6T.js.map → plugin-store-36SIL4TV.js.map} +1 -1
- package/dist/project-D7GN7WLS.js +86 -0
- package/dist/{project-HZW2MZPA.js.map → project-D7GN7WLS.js.map} +1 -1
- package/dist/resolver/index.js +10 -10
- package/dist/runner/index.js +40 -40
- package/dist/runner/src/capability-roundtrip.d.ts +7 -6
- package/dist/runner/src/capability-roundtrip.d.ts.map +1 -1
- package/dist/runner/src/composition/content-source.d.ts.map +1 -1
- package/dist/runner/src/composition/errors.d.ts +16 -1
- package/dist/runner/src/composition/errors.d.ts.map +1 -1
- package/dist/runner/src/credential-notice.d.ts +3 -3
- package/dist/runner/src/credential-notice.d.ts.map +1 -1
- package/dist/runner/src/serve.d.ts +20 -7
- package/dist/runner/src/serve.d.ts.map +1 -1
- package/dist/sdk/asset-manager.js +19 -19
- package/dist/sdk/bridge.js +19 -19
- package/dist/sdk/core.js +9 -9
- package/dist/sdk/flow.js +11 -11
- package/dist/sdk/index.js +40 -40
- package/dist/sdk/resolver.js +10 -10
- package/dist/sdk/runner.js +40 -40
- package/dist/sdk/transport/ws/server.js +10 -10
- package/dist/sdk/transport/ws.js +10 -10
- package/dist/sdk/transport.js +10 -10
- package/dist/serve-preflight-CGA5G3AE.js +135 -0
- package/dist/serve-preflight-CGA5G3AE.js.map +1 -0
- package/dist/{setup-AGYB4PKR.js → setup-IBDNJAOU.js} +32 -32
- package/dist/{setup-AGYB4PKR.js.map → setup-IBDNJAOU.js.map} +1 -1
- package/dist/skills-CTTO7SZK.js +26 -0
- package/dist/{skills-2LMQ2IAD.js.map → skills-CTTO7SZK.js.map} +1 -1
- package/dist/source-2DJ5KNOI.js +85 -0
- package/dist/{source-GBMYD3RO.js.map → source-2DJ5KNOI.js.map} +1 -1
- package/dist/source-fetch-github-RWHV4I5Z.js +4 -0
- package/dist/{source-fetch-github-ST4MFL3D.js.map → source-fetch-github-RWHV4I5Z.js.map} +1 -1
- package/dist/{source-manifest-publish-FK22TVQT.js → source-manifest-publish-IYWUMUCY.js} +55 -57
- package/dist/source-manifest-publish-IYWUMUCY.js.map +1 -0
- package/dist/transport/index.js +10 -10
- package/dist/transport/ws/server.js +10 -10
- package/dist/transport/ws.js +10 -10
- package/dist/tui/index.js +48 -41
- package/dist/tui/index.js.map +1 -1
- package/dist/tui/src/repl.d.ts.map +1 -1
- package/dist/types/manifests.js +1 -1
- package/dist/types/src/install-manifest.d.ts +1 -1
- package/dist/types/src/install-manifest.d.ts.map +1 -1
- package/dist/types/src/manifests/index.d.ts +1 -1
- package/dist/types/src/manifests/index.d.ts.map +1 -1
- package/dist/types/src/manifests/scaffold-body.d.ts +2 -0
- package/dist/types/src/manifests/scaffold-body.d.ts.map +1 -1
- package/dist/workspace-plugin/adapters/mcp.js +30 -30
- package/dist/workspace-plugin/adapters/omp.js +15 -15
- package/dist/workspace-plugin/index.js +2 -2
- package/package.json +1 -1
- package/dist/asset-feeds-PXUWCXVI.js.map +0 -1
- package/dist/chunk-3JKGY2YC.js.map +0 -1
- package/dist/chunk-4DWBSTYA.js.map +0 -1
- package/dist/chunk-4XWLB7JB.js.map +0 -1
- package/dist/chunk-7XSAW5OC.js.map +0 -1
- package/dist/chunk-BFMYYNDT.js.map +0 -1
- package/dist/chunk-DUMTLYSO.js.map +0 -1
- package/dist/chunk-E3GPGTW3.js.map +0 -1
- package/dist/chunk-E572OHGY.js.map +0 -1
- package/dist/chunk-F2GOZMRA.js.map +0 -1
- package/dist/chunk-GOCWM7FN.js.map +0 -1
- package/dist/chunk-HK7HMEPT.js.map +0 -1
- package/dist/chunk-KX2PT5Q4.js.map +0 -1
- package/dist/chunk-L4YKW5AY.js.map +0 -1
- package/dist/chunk-LSI2IVFT.js.map +0 -1
- package/dist/chunk-NMI2TWMH.js.map +0 -1
- package/dist/chunk-OAHVKSQJ.js.map +0 -1
- package/dist/chunk-OHNKYHRR.js.map +0 -1
- package/dist/chunk-OTIB4D2K.js.map +0 -1
- package/dist/chunk-PUK7TQT4.js +0 -13
- package/dist/chunk-PUK7TQT4.js.map +0 -1
- package/dist/chunk-QOM5Z62G.js.map +0 -1
- package/dist/chunk-SNEE6UGY.js.map +0 -1
- package/dist/chunk-T2BDID2J.js.map +0 -1
- package/dist/chunk-TKHJXPSB.js.map +0 -1
- package/dist/chunk-UL22SDGR.js.map +0 -1
- package/dist/chunk-VJRTDKXS.js.map +0 -1
- package/dist/chunk-WEH33JSG.js.map +0 -1
- package/dist/chunk-WYHQUCHR.js.map +0 -1
- package/dist/chunk-X3RMRJNR.js.map +0 -1
- package/dist/chunk-XFIEVEU7.js.map +0 -1
- package/dist/chunk-YGRZNFRO.js.map +0 -1
- package/dist/chunk-Z7ZEZZB6.js.map +0 -1
- package/dist/connectors-CXZLXAFZ.js +0 -48
- package/dist/ensure-sources-UPTHZKGF.js.map +0 -1
- package/dist/flows-TJQIMGUX.js +0 -26
- package/dist/helpers-DE53KG3E.js +0 -38
- package/dist/library-publish-KKQ2ULLX.js.map +0 -1
- package/dist/open-library-RJGJIW5H.js +0 -42
- package/dist/open-registry-3QS3J7KO.js +0 -32
- package/dist/paths-QAV4C3KX.js +0 -22
- package/dist/plugin-store-MSH6GK6T.js +0 -23
- package/dist/project-HZW2MZPA.js +0 -84
- package/dist/serve-preflight-L4POEHNQ.js +0 -108
- package/dist/serve-preflight-L4POEHNQ.js.map +0 -1
- package/dist/skills-2LMQ2IAD.js +0 -26
- package/dist/source-GBMYD3RO.js +0 -85
- package/dist/source-fetch-github-ST4MFL3D.js +0 -4
- package/dist/source-manifest-publish-FK22TVQT.js.map +0 -1
|
@@ -79,7 +79,7 @@ function connectorUsageFragment(ctx) {
|
|
|
79
79
|
"",
|
|
80
80
|
...rows,
|
|
81
81
|
"",
|
|
82
|
-
"Access via `skaile
|
|
82
|
+
"Access via `skaile connector ops <id>` to list a source's operations and `skaile connector run <id> <operation>` to run one, or the registered tool functions.",
|
|
83
83
|
"Respect the declared access level \u2014 read-only resources must not be written to."
|
|
84
84
|
].join("\n");
|
|
85
85
|
}
|
|
@@ -122,5 +122,5 @@ function loadPromptExtensions(paths, workspaceRoot) {
|
|
|
122
122
|
}
|
|
123
123
|
|
|
124
124
|
export { BUILT_IN_FRAGMENTS, loadPromptExtensions, resolveFragments };
|
|
125
|
-
//# sourceMappingURL=chunk-
|
|
126
|
-
//# sourceMappingURL=chunk-
|
|
125
|
+
//# sourceMappingURL=chunk-PKE3PXOK.js.map
|
|
126
|
+
//# sourceMappingURL=chunk-PKE3PXOK.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../asset-manager/src/fragments.ts"],"names":[],"mappings":"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","file":"chunk-NOA6EJXE.js","sourcesContent":["/**\n * Framework fragments — conditional system prompt sections injected by the\n * agent renderer at install time.\n *\n * Each fragment explains a specific aspect of the agent framework to the agent.\n * Fragments are conditional (return null when context is empty) and overridable\n * per project via skaile.yaml `agent.fragments`.\n */\n\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\n\n// ── Types ─────────────────────────────────────────────────────────────────────\n\n/**\n * A skill installed into the agent's ability directory, referenced in the system prompt.\n *\n * @docLink packages/asset-manager/api-reference#fragments\n */\nexport interface AbilityRef {\n /** Skill name used as the slash command (e.g. `\"code-review\"`). */\n name: string;\n /** One-line description shown in the `## Installed Abilities` section. */\n description: string;\n}\n\n/**\n * A contract file installed alongside skills, referenced by path in the system prompt.\n *\n * @docLink packages/asset-manager/api-reference#fragments\n */\nexport interface ContractRef {\n /** Contract name for display purposes. */\n name: string;\n /** Path relative to workspace root, e.g. `\".claude/skills/iron-laws/CONTRACT.md\"`. */\n relativePath: string;\n}\n\n/**\n * A data connector declared in `skaile.yaml` resources.\n *\n * @docLink packages/asset-manager/api-reference#fragments\n */\nexport interface ConnectorRef {\n /** Connector ID as declared in `skaile.yaml`. */\n id: string;\n /** Connector driver type (e.g. `\"postgres\"`, `\"redis\"`, `\"sqlite\"`). */\n driver: string;\n /** Declared access level (`\"read-only\"` or `\"read-write\"`). */\n access: string;\n}\n\n/**\n * Context passed to each fragment function at render time.\n *\n * @docLink packages/asset-manager/api-reference#fragments\n */\nexport interface FragmentContext {\n /** Agent framework ID (e.g. `\"claude-code\"`, `\"omp\"`, `\"codex\"`). */\n framework: string;\n /** Relative path to the framework's skill/ability directory, e.g. `\".claude/skills\"`. */\n skillsDir: string;\n /** Relative path to the framework's agent directory, e.g. `\".claude/agents\"`. */\n agentsDir: string;\n /** Sub-agent names from `manifest.requires[]`. */\n subAgents: string[];\n /**\n * `true` when the agent is rendered to be called by another agent (a `delegate` sub-agent, or a\n * `role`): it is told it is a sub-agent, not the workspace's only agent.\n */\n subAgent?: boolean;\n /** Connectors declared in `skaile.yaml`. */\n connectors: ConnectorRef[];\n /** Resolved ability refs (installed skills). */\n abilityRefs: AbilityRef[];\n /** Resolved contract refs (installed alongside skills). */\n contractRefs: ContractRef[];\n}\n\n/**\n * Identifier for a built-in system prompt fragment.\n * - `\"agent-mode\"` — describes whether the agent is a sole agent or an orchestrator.\n * - `\"handoff\"` — delegation guidelines injected when sub-agents are declared.\n * - `\"skill-discovery\"` — skill directory location injected when abilities are installed.\n * - `\"connector-usage\"` — connected resources list injected when connectors are declared.\n *\n * @docLink packages/asset-manager/api-reference#fragments\n */\nexport type FragmentId = \"agent-mode\" | \"handoff\" | \"skill-discovery\" | \"connector-usage\";\n\n// ── Built-in fragments ────────────────────────────────────────────────────────\n\nfunction agentModeFragment(ctx: FragmentContext): string | null {\n if (ctx.subAgents.length === 0) {\n if (ctx.subAgent) {\n return [\n \"## Operating Mode\",\n \"\",\n \"You are a sub-agent: another agent hands you one task at a time. Do exactly that\",\n \"task with your installed abilities, and answer in the output format it asks for.\",\n \"Do not take over the conversation or assume you are the only agent in the workspace.\",\n ].join(\"\\n\");\n }\n return [\n \"## Operating Mode\",\n \"\",\n \"You are the sole agent for this workspace. Complete tasks autonomously\",\n \"using your installed abilities and connected resources.\",\n ].join(\"\\n\");\n }\n\n const list = ctx.subAgents.map((n) => `- \\`${n}\\``).join(\"\\n\");\n return [\n \"## Operating Mode\",\n \"\",\n \"You are the orchestrator for this workspace. Coordinate specialized\",\n \"sub-agents when tasks fall within their expertise:\",\n \"\",\n list,\n \"\",\n \"Delegate clearly: describe the task, expected output format, and any\",\n \"constraints. Synthesize results before presenting to the user.\",\n ].join(\"\\n\");\n}\n\nfunction handoffFragment(ctx: FragmentContext): string | null {\n if (ctx.subAgents.length === 0) return null;\n\n const lines = [\n \"## Delegation\",\n \"\",\n \"When delegating to a sub-agent:\",\n \"1. State the specific task and its acceptance criteria.\",\n \"2. Provide relevant context the sub-agent cannot infer on its own.\",\n \"3. Specify the expected output format.\",\n \"4. If the result is incomplete, refine and retry once before escalating.\",\n ];\n\n if (ctx.framework === \"claude-code\") {\n lines.push(\"\", `Use the Agent tool to dispatch. Sub-agents are in \\`${ctx.agentsDir}/\\`.`);\n }\n\n return lines.join(\"\\n\");\n}\n\nfunction skillDiscoveryFragment(ctx: FragmentContext): string | null {\n if (ctx.abilityRefs.length === 0 && ctx.contractRefs.length === 0) return null;\n\n const lines = [\n \"## Skills and Abilities\",\n \"\",\n `Your specialized abilities are installed in \\`${ctx.skillsDir}/\\`.`,\n \"Read a skill's SKILL.md before executing a task that matches its purpose.\",\n ];\n\n if (ctx.framework === \"claude-code\") {\n lines.push(\"Abilities are also available as slash commands.\");\n }\n\n if (ctx.contractRefs.length > 0) {\n lines.push(\n \"\",\n `Operational contracts are co-located in \\`${ctx.skillsDir}/\\`. Read the`,\n \"relevant CONTRACT.md before acting on any constrained task.\",\n );\n }\n\n return lines.join(\"\\n\");\n}\n\nfunction connectorUsageFragment(ctx: FragmentContext): string | null {\n if (ctx.connectors.length === 0) return null;\n\n const rows = ctx.connectors.map((c) => `- \\`${c.id}\\` (${c.driver}, ${c.access})`);\n\n return [\n \"## Connected Resources\",\n \"\",\n \"The following data sources are connected to this workspace:\",\n \"\",\n ...rows,\n \"\",\n \"Access via `skaile res <id> <operation>` or the registered tool functions.\",\n \"Respect the declared access level — read-only resources must not be written to.\",\n ].join(\"\\n\");\n}\n\n/**\n * Registry of all built-in fragment functions keyed by {@link FragmentId}.\n *\n * Each function receives a {@link FragmentContext} and returns the fragment markdown\n * to inject, or `null` when the fragment's condition is not met (e.g. `\"handoff\"`\n * returns `null` when there are no sub-agents).\n *\n * @docLink packages/asset-manager/api-reference#fragments\n */\nexport const BUILT_IN_FRAGMENTS: Record<FragmentId, (ctx: FragmentContext) => string | null> = {\n \"agent-mode\": agentModeFragment,\n handoff: handoffFragment,\n \"skill-discovery\": skillDiscoveryFragment,\n \"connector-usage\": connectorUsageFragment,\n};\n\n// ── Resolution ────────────────────────────────────────────────────────────────\n\n/**\n * Resolve all framework fragments for the rendered system prompt.\n *\n * Applies per-project overrides from `skaile.yaml` `agent.fragments`:\n * - `true` / absent → include built-in fragment (default)\n * - `false` → omit fragment\n * - `string` → load markdown from path relative to `workspaceRoot`\n *\n * @param ctx - Fragment context built from the agent manifest and workspace config.\n * @param overrides - Per-project overrides map from `skaile.yaml` `agent.fragments`.\n * @param workspaceRoot - Absolute path to the workspace root (for resolving custom fragment paths).\n * @returns Ordered list of resolved fragment markdown strings to inject into the system prompt.\n * @docLink packages/asset-manager/api-reference#fragments\n */\nexport function resolveFragments(\n ctx: FragmentContext,\n overrides: Record<string, boolean | string> | undefined,\n workspaceRoot: string,\n): string[] {\n const results: string[] = [];\n\n for (const id of [\n \"agent-mode\",\n \"handoff\",\n \"skill-discovery\",\n \"connector-usage\",\n ] as FragmentId[]) {\n const override = overrides?.[id];\n\n if (override === false) continue;\n\n if (typeof override === \"string\") {\n const filePath = resolve(workspaceRoot, override);\n if (existsSync(filePath)) {\n const content = readFileSync(filePath, \"utf-8\").trim();\n if (content) results.push(content);\n }\n continue;\n }\n\n // true or absent — use built-in\n const fragment = BUILT_IN_FRAGMENTS[id](ctx);\n if (fragment) results.push(fragment);\n }\n\n return results;\n}\n\n/**\n * Load prompt-extension files declared under `skaile.yaml` `agent.prompt-extensions`.\n *\n * Paths are relative to `workspaceRoot`. Missing files are silently skipped.\n *\n * @param paths - Array of relative file paths from `skaile.yaml` `agent.prompt-extensions`.\n * @param workspaceRoot - Absolute path to the workspace root.\n * @returns Non-empty content strings for each file that exists and is non-empty.\n * @docLink packages/asset-manager/api-reference#fragments\n */\nexport function loadPromptExtensions(paths: string[] | undefined, workspaceRoot: string): string[] {\n if (!paths?.length) return [];\n return paths\n .map((p) => {\n const filePath = resolve(workspaceRoot, p);\n if (!existsSync(filePath)) return null;\n return readFileSync(filePath, \"utf-8\").trim();\n })\n .filter((s): s is string => s !== null && s.length > 0);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../asset-manager/src/fragments.ts"],"names":[],"mappings":"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","file":"chunk-PKE3PXOK.js","sourcesContent":["/**\n * Framework fragments — conditional system prompt sections injected by the\n * agent renderer at install time.\n *\n * Each fragment explains a specific aspect of the agent framework to the agent.\n * Fragments are conditional (return null when context is empty) and overridable\n * per project via skaile.yaml `agent.fragments`.\n */\n\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\n\n// ── Types ─────────────────────────────────────────────────────────────────────\n\n/**\n * A skill installed into the agent's ability directory, referenced in the system prompt.\n *\n * @docLink packages/asset-manager/api-reference#fragments\n */\nexport interface AbilityRef {\n /** Skill name used as the slash command (e.g. `\"code-review\"`). */\n name: string;\n /** One-line description shown in the `## Installed Abilities` section. */\n description: string;\n}\n\n/**\n * A contract file installed alongside skills, referenced by path in the system prompt.\n *\n * @docLink packages/asset-manager/api-reference#fragments\n */\nexport interface ContractRef {\n /** Contract name for display purposes. */\n name: string;\n /** Path relative to workspace root, e.g. `\".claude/skills/iron-laws/CONTRACT.md\"`. */\n relativePath: string;\n}\n\n/**\n * A data connector declared in `skaile.yaml` resources.\n *\n * @docLink packages/asset-manager/api-reference#fragments\n */\nexport interface ConnectorRef {\n /** Connector ID as declared in `skaile.yaml`. */\n id: string;\n /** Connector driver type (e.g. `\"postgres\"`, `\"redis\"`, `\"sqlite\"`). */\n driver: string;\n /** Declared access level (`\"read-only\"` or `\"read-write\"`). */\n access: string;\n}\n\n/**\n * Context passed to each fragment function at render time.\n *\n * @docLink packages/asset-manager/api-reference#fragments\n */\nexport interface FragmentContext {\n /** Agent framework ID (e.g. `\"claude-code\"`, `\"omp\"`, `\"codex\"`). */\n framework: string;\n /** Relative path to the framework's skill/ability directory, e.g. `\".claude/skills\"`. */\n skillsDir: string;\n /** Relative path to the framework's agent directory, e.g. `\".claude/agents\"`. */\n agentsDir: string;\n /** Sub-agent names from `manifest.requires[]`. */\n subAgents: string[];\n /**\n * `true` when the agent is rendered to be called by another agent (a `delegate` sub-agent, or a\n * `role`): it is told it is a sub-agent, not the workspace's only agent.\n */\n subAgent?: boolean;\n /** Connectors declared in `skaile.yaml`. */\n connectors: ConnectorRef[];\n /** Resolved ability refs (installed skills). */\n abilityRefs: AbilityRef[];\n /** Resolved contract refs (installed alongside skills). */\n contractRefs: ContractRef[];\n}\n\n/**\n * Identifier for a built-in system prompt fragment.\n * - `\"agent-mode\"` — describes whether the agent is a sole agent or an orchestrator.\n * - `\"handoff\"` — delegation guidelines injected when sub-agents are declared.\n * - `\"skill-discovery\"` — skill directory location injected when abilities are installed.\n * - `\"connector-usage\"` — connected resources list injected when connectors are declared.\n *\n * @docLink packages/asset-manager/api-reference#fragments\n */\nexport type FragmentId = \"agent-mode\" | \"handoff\" | \"skill-discovery\" | \"connector-usage\";\n\n// ── Built-in fragments ────────────────────────────────────────────────────────\n\nfunction agentModeFragment(ctx: FragmentContext): string | null {\n if (ctx.subAgents.length === 0) {\n if (ctx.subAgent) {\n return [\n \"## Operating Mode\",\n \"\",\n \"You are a sub-agent: another agent hands you one task at a time. Do exactly that\",\n \"task with your installed abilities, and answer in the output format it asks for.\",\n \"Do not take over the conversation or assume you are the only agent in the workspace.\",\n ].join(\"\\n\");\n }\n return [\n \"## Operating Mode\",\n \"\",\n \"You are the sole agent for this workspace. Complete tasks autonomously\",\n \"using your installed abilities and connected resources.\",\n ].join(\"\\n\");\n }\n\n const list = ctx.subAgents.map((n) => `- \\`${n}\\``).join(\"\\n\");\n return [\n \"## Operating Mode\",\n \"\",\n \"You are the orchestrator for this workspace. Coordinate specialized\",\n \"sub-agents when tasks fall within their expertise:\",\n \"\",\n list,\n \"\",\n \"Delegate clearly: describe the task, expected output format, and any\",\n \"constraints. Synthesize results before presenting to the user.\",\n ].join(\"\\n\");\n}\n\nfunction handoffFragment(ctx: FragmentContext): string | null {\n if (ctx.subAgents.length === 0) return null;\n\n const lines = [\n \"## Delegation\",\n \"\",\n \"When delegating to a sub-agent:\",\n \"1. State the specific task and its acceptance criteria.\",\n \"2. Provide relevant context the sub-agent cannot infer on its own.\",\n \"3. Specify the expected output format.\",\n \"4. If the result is incomplete, refine and retry once before escalating.\",\n ];\n\n if (ctx.framework === \"claude-code\") {\n lines.push(\"\", `Use the Agent tool to dispatch. Sub-agents are in \\`${ctx.agentsDir}/\\`.`);\n }\n\n return lines.join(\"\\n\");\n}\n\nfunction skillDiscoveryFragment(ctx: FragmentContext): string | null {\n if (ctx.abilityRefs.length === 0 && ctx.contractRefs.length === 0) return null;\n\n const lines = [\n \"## Skills and Abilities\",\n \"\",\n `Your specialized abilities are installed in \\`${ctx.skillsDir}/\\`.`,\n \"Read a skill's SKILL.md before executing a task that matches its purpose.\",\n ];\n\n if (ctx.framework === \"claude-code\") {\n lines.push(\"Abilities are also available as slash commands.\");\n }\n\n if (ctx.contractRefs.length > 0) {\n lines.push(\n \"\",\n `Operational contracts are co-located in \\`${ctx.skillsDir}/\\`. Read the`,\n \"relevant CONTRACT.md before acting on any constrained task.\",\n );\n }\n\n return lines.join(\"\\n\");\n}\n\nfunction connectorUsageFragment(ctx: FragmentContext): string | null {\n if (ctx.connectors.length === 0) return null;\n\n const rows = ctx.connectors.map((c) => `- \\`${c.id}\\` (${c.driver}, ${c.access})`);\n\n return [\n \"## Connected Resources\",\n \"\",\n \"The following data sources are connected to this workspace:\",\n \"\",\n ...rows,\n \"\",\n \"Access via `skaile connector ops <id>` to list a source's operations and `skaile connector run <id> <operation>` to run one, or the registered tool functions.\",\n \"Respect the declared access level — read-only resources must not be written to.\",\n ].join(\"\\n\");\n}\n\n/**\n * Registry of all built-in fragment functions keyed by {@link FragmentId}.\n *\n * Each function receives a {@link FragmentContext} and returns the fragment markdown\n * to inject, or `null` when the fragment's condition is not met (e.g. `\"handoff\"`\n * returns `null` when there are no sub-agents).\n *\n * @docLink packages/asset-manager/api-reference#fragments\n */\nexport const BUILT_IN_FRAGMENTS: Record<FragmentId, (ctx: FragmentContext) => string | null> = {\n \"agent-mode\": agentModeFragment,\n handoff: handoffFragment,\n \"skill-discovery\": skillDiscoveryFragment,\n \"connector-usage\": connectorUsageFragment,\n};\n\n// ── Resolution ────────────────────────────────────────────────────────────────\n\n/**\n * Resolve all framework fragments for the rendered system prompt.\n *\n * Applies per-project overrides from `skaile.yaml` `agent.fragments`:\n * - `true` / absent → include built-in fragment (default)\n * - `false` → omit fragment\n * - `string` → load markdown from path relative to `workspaceRoot`\n *\n * @param ctx - Fragment context built from the agent manifest and workspace config.\n * @param overrides - Per-project overrides map from `skaile.yaml` `agent.fragments`.\n * @param workspaceRoot - Absolute path to the workspace root (for resolving custom fragment paths).\n * @returns Ordered list of resolved fragment markdown strings to inject into the system prompt.\n * @docLink packages/asset-manager/api-reference#fragments\n */\nexport function resolveFragments(\n ctx: FragmentContext,\n overrides: Record<string, boolean | string> | undefined,\n workspaceRoot: string,\n): string[] {\n const results: string[] = [];\n\n for (const id of [\n \"agent-mode\",\n \"handoff\",\n \"skill-discovery\",\n \"connector-usage\",\n ] as FragmentId[]) {\n const override = overrides?.[id];\n\n if (override === false) continue;\n\n if (typeof override === \"string\") {\n const filePath = resolve(workspaceRoot, override);\n if (existsSync(filePath)) {\n const content = readFileSync(filePath, \"utf-8\").trim();\n if (content) results.push(content);\n }\n continue;\n }\n\n // true or absent — use built-in\n const fragment = BUILT_IN_FRAGMENTS[id](ctx);\n if (fragment) results.push(fragment);\n }\n\n return results;\n}\n\n/**\n * Load prompt-extension files declared under `skaile.yaml` `agent.prompt-extensions`.\n *\n * Paths are relative to `workspaceRoot`. Missing files are silently skipped.\n *\n * @param paths - Array of relative file paths from `skaile.yaml` `agent.prompt-extensions`.\n * @param workspaceRoot - Absolute path to the workspace root.\n * @returns Non-empty content strings for each file that exists and is non-empty.\n * @docLink packages/asset-manager/api-reference#fragments\n */\nexport function loadPromptExtensions(paths: string[] | undefined, workspaceRoot: string): string[] {\n if (!paths?.length) return [];\n return paths\n .map((p) => {\n const filePath = resolve(workspaceRoot, p);\n if (!existsSync(filePath)) return null;\n return readFileSync(filePath, \"utf-8\").trim();\n })\n .filter((s): s is string => s !== null && s.length > 0);\n}\n"]}
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { requireValidPublisherOrExit } from './chunk-
|
|
2
|
-
import { openLibraryManager } from './chunk-
|
|
3
|
-
import { logErr, logWarn, logInfo, logOk
|
|
4
|
-
import { getKindRegistry, getKnownKinds } from './chunk-
|
|
5
|
-
import { AssetManager } from './chunk-
|
|
6
|
-
import { getStoreManifestsDir, storeManifestFile, LocalCatalogSource, curatedManifestOverlay, writeCuratedManifest, commitStoreManifest } from './chunk-
|
|
7
|
-
import { computeDeterministicHash, discoverAssetsInTree } from './chunk-
|
|
8
|
-
import { WorkspaceYamlEditor } from './chunk-
|
|
9
|
-
import { findWorkspaceRoot, workspaceConfigFilename, sourceShortName, sourceCacheKey, getGlobalCacheDir, attachToBranch, resolveSourcePublisher, resolveSkWorkspaceConfig, priorSourceCacheKeys, buildProvenanceIndex, getRepoCommit } from './chunk-
|
|
1
|
+
import { requireValidPublisherOrExit } from './chunk-2XM3ZH36.js';
|
|
2
|
+
import { openLibraryManager } from './chunk-BEYNH2LS.js';
|
|
3
|
+
import { S, logErr, logWarn, logInfo, logOk } from './chunk-T2VBPVWZ.js';
|
|
4
|
+
import { getKindRegistry, getKnownKinds } from './chunk-JJJ2G4K2.js';
|
|
5
|
+
import { AssetManager } from './chunk-PKBLJI23.js';
|
|
6
|
+
import { getStoreManifestsDir, storeManifestFile, LocalCatalogSource, curatedManifestOverlay, writeCuratedManifest, commitStoreManifest } from './chunk-6CYKTHNT.js';
|
|
7
|
+
import { computeDeterministicHash, discoverAssetsInTree } from './chunk-MAZ3UXJK.js';
|
|
8
|
+
import { WorkspaceYamlEditor } from './chunk-BRK5QZKI.js';
|
|
9
|
+
import { findWorkspaceRoot, workspaceConfigFilename, sourceShortName, sourceCacheKey, getGlobalCacheDir, attachToBranch, resolveSourcePublisher, resolveSkWorkspaceConfig, priorSourceCacheKeys, buildProvenanceIndex, getRepoCommit } from './chunk-KJSC2ZD6.js';
|
|
10
10
|
import { globalCacheRoot } from './chunk-L5VSIPQD.js';
|
|
11
|
-
import { decodeSkaileManifest, encodeSkaileManifest } from './chunk-
|
|
12
|
-
import { parseAssetRef } from './chunk-
|
|
11
|
+
import { decodeSkaileManifest, encodeSkaileManifest } from './chunk-KPKGWXUJ.js';
|
|
12
|
+
import { parseAssetRef } from './chunk-IZQOO6MN.js';
|
|
13
13
|
import { spawnSync } from 'child_process';
|
|
14
14
|
import { existsSync, realpathSync, rmSync, renameSync, mkdirSync, statSync, readdirSync, rmdirSync, readFileSync, writeFileSync } from 'fs';
|
|
15
15
|
import * as os from 'os';
|
|
@@ -22,11 +22,12 @@ function notWired(verb) {
|
|
|
22
22
|
logErr(`${NOT_WIRED_MSG} (verb: source manifest ${verb})`);
|
|
23
23
|
process.exit(2);
|
|
24
24
|
}
|
|
25
|
-
function resolveSourceArg(arg, projectDir) {
|
|
25
|
+
function resolveSourceArg(arg, projectDir, opts = {}) {
|
|
26
26
|
const root = findWorkspaceRoot(projectDir);
|
|
27
27
|
const registered = root ? readProjectSources(path2.join(root, workspaceConfigFilename())) : [];
|
|
28
28
|
const match = registered.find((e) => sourceMatchesKey(e, arg));
|
|
29
|
-
const
|
|
29
|
+
const found = !match ? resolveByStoreSlug(arg, opts.byName ?? true) : void 0;
|
|
30
|
+
const bySlug = found && "url" in found ? found : void 0;
|
|
30
31
|
const url = match ? match.url : bySlug?.url ?? normalizeSourceUrl(arg);
|
|
31
32
|
const slug = sourceShortName(url);
|
|
32
33
|
const dest = sourceClonePath(sourceCacheKey(url));
|
|
@@ -35,16 +36,49 @@ function resolveSourceArg(arg, projectDir) {
|
|
|
35
36
|
slug,
|
|
36
37
|
dest,
|
|
37
38
|
manifestFile: bySlug?.manifestFile ?? storeManifestPath(url),
|
|
38
|
-
guessed: !match && !bySlug
|
|
39
|
+
guessed: !match && !bySlug,
|
|
40
|
+
...found && "ambiguous" in found ? { ambiguous: found.ambiguous } : {}
|
|
39
41
|
};
|
|
40
42
|
}
|
|
41
|
-
function
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
43
|
+
function storeManifestSlugs() {
|
|
44
|
+
try {
|
|
45
|
+
return readdirSync(getStoreManifestsDir()).filter((f) => f.endsWith(".yaml")).map((f) => f.slice(0, -".yaml".length));
|
|
46
|
+
} catch {
|
|
47
|
+
return [];
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function cloneOriginUrl(key) {
|
|
51
|
+
const dest = sourceClonePath(key);
|
|
52
|
+
if (!existsSync(dest)) return void 0;
|
|
53
|
+
const r = spawnSync("git", ["-C", dest, "remote", "get-url", "origin"], { encoding: "utf8" });
|
|
54
|
+
const out = r.status === 0 ? r.stdout.trim() : "";
|
|
55
|
+
return out || void 0;
|
|
56
|
+
}
|
|
57
|
+
function resolveByStoreSlug(arg, byName) {
|
|
58
|
+
if (!/^[\w.-]+$/.test(arg)) return void 0;
|
|
59
|
+
const slugs = storeManifestSlugs();
|
|
60
|
+
let slug = slugs.includes(arg) ? arg : void 0;
|
|
61
|
+
if (!slug && byName) {
|
|
62
|
+
const named = slugs.filter(
|
|
63
|
+
(s) => s.startsWith(`${arg}-`) && /^[0-9a-f]{8}$/.test(s.slice(arg.length + 1))
|
|
64
|
+
);
|
|
65
|
+
if (named.length === 1) slug = named[0];
|
|
66
|
+
else if (named.length > 1) return { ambiguous: [...named].sort() };
|
|
67
|
+
}
|
|
68
|
+
if (!slug) return void 0;
|
|
69
|
+
const manifestFile = path2.join(getStoreManifestsDir(), `${slug}.yaml`);
|
|
70
|
+
if (slug.includes("__")) {
|
|
71
|
+
const [host, owner, repo] = slug.split("__");
|
|
72
|
+
return { url: host && owner && repo ? `https://${host}/${owner}/${repo}` : slug, manifestFile };
|
|
73
|
+
}
|
|
74
|
+
const origin = cloneOriginUrl(slug);
|
|
75
|
+
return origin ? { url: origin, manifestFile } : void 0;
|
|
76
|
+
}
|
|
77
|
+
function missingManifestMessage(slug, manifestFile, ambiguous) {
|
|
78
|
+
if (ambiguous?.length) {
|
|
79
|
+
return `"${slug}" matches several curated manifests: ${ambiguous.join(", ")} \u2014 pass one of these slugs or the full source URL.`;
|
|
80
|
+
}
|
|
81
|
+
return `No curated manifest for "${slug}" at ${S.dim(manifestFile)} \u2014 run \`skaile source manifest init\` first.`;
|
|
48
82
|
}
|
|
49
83
|
function storeManifestPath(url) {
|
|
50
84
|
return storeManifestFile(url);
|
|
@@ -63,7 +97,14 @@ function isTestFixtureAsset(relativePath) {
|
|
|
63
97
|
}
|
|
64
98
|
async function runInit(arg, opts) {
|
|
65
99
|
const projectDir = path2.resolve(opts.projectDir);
|
|
66
|
-
const {
|
|
100
|
+
const {
|
|
101
|
+
url,
|
|
102
|
+
dest,
|
|
103
|
+
manifestFile: target,
|
|
104
|
+
guessed
|
|
105
|
+
} = resolveSourceArg(arg, projectDir, {
|
|
106
|
+
byName: false
|
|
107
|
+
});
|
|
67
108
|
if (guessed && /^[\w.-]+$/.test(arg.trim().replace(/\.git$/, ""))) {
|
|
68
109
|
logErr(
|
|
69
110
|
`"${arg}" is not a git URL or an owner/repo shorthand. Use \`skaile source manifest init <owner>/<repo>\` or the full URL.`
|
|
@@ -146,11 +187,9 @@ function entryRef(entry) {
|
|
|
146
187
|
}
|
|
147
188
|
async function runRebuild(arg, opts) {
|
|
148
189
|
const projectDir = path2.resolve(opts.projectDir);
|
|
149
|
-
const { url, dest, slug, manifestFile: target } = resolveSourceArg(arg, projectDir);
|
|
190
|
+
const { url, dest, slug, manifestFile: target, ambiguous } = resolveSourceArg(arg, projectDir);
|
|
150
191
|
if (!existsSync(target)) {
|
|
151
|
-
logErr(
|
|
152
|
-
`No curated manifest for "${slug}" at ${S.dim(target)} \u2014 run \`skaile source manifest init\` first.`
|
|
153
|
-
);
|
|
192
|
+
logErr(missingManifestMessage(slug, target, ambiguous));
|
|
154
193
|
process.exit(1);
|
|
155
194
|
}
|
|
156
195
|
const entry = { url };
|
|
@@ -234,11 +273,9 @@ async function runRebuild(arg, opts) {
|
|
|
234
273
|
}
|
|
235
274
|
async function runVerify(arg, opts) {
|
|
236
275
|
const projectDir = path2.resolve(opts.projectDir);
|
|
237
|
-
const { url, dest, slug, manifestFile: target } = resolveSourceArg(arg, projectDir);
|
|
276
|
+
const { url, dest, slug, manifestFile: target, ambiguous } = resolveSourceArg(arg, projectDir);
|
|
238
277
|
if (!existsSync(target)) {
|
|
239
|
-
logErr(
|
|
240
|
-
`No curated manifest for "${slug}" at ${S.dim(target)} \u2014 run \`skaile source manifest init\` first.`
|
|
241
|
-
);
|
|
278
|
+
logErr(missingManifestMessage(slug, target, ambiguous));
|
|
242
279
|
process.exit(1);
|
|
243
280
|
}
|
|
244
281
|
ensureClone({ url });
|
|
@@ -309,11 +346,9 @@ function resolveEditorCommand(editorEnv, target) {
|
|
|
309
346
|
}
|
|
310
347
|
function runEdit(arg, opts, spawn = spawnSync) {
|
|
311
348
|
const projectDir = path2.resolve(opts.projectDir);
|
|
312
|
-
const { slug, manifestFile: target } = resolveSourceArg(arg, projectDir);
|
|
349
|
+
const { slug, manifestFile: target, ambiguous } = resolveSourceArg(arg, projectDir);
|
|
313
350
|
if (!existsSync(target)) {
|
|
314
|
-
logErr(
|
|
315
|
-
`No curated manifest for "${slug}" at ${target}. Run \`skaile source manifest init\` first.`
|
|
316
|
-
);
|
|
351
|
+
logErr(missingManifestMessage(slug, target, ambiguous));
|
|
317
352
|
process.exit(1);
|
|
318
353
|
}
|
|
319
354
|
const { command, args } = resolveEditorCommand(process.env.VISUAL || process.env.EDITOR, target);
|
|
@@ -345,12 +380,12 @@ function addSourceManifestCommands(src) {
|
|
|
345
380
|
).option("-C, --project-dir <dir>", "Project directory", process.cwd()).option("--publisher <name>", "Override the publisher (--overwrite only)").option("--dev", "Include assets under the source's dev_paths", false).option("--overwrite", "Discard curation and re-scan the full inventory", false).action((arg, opts) => runRebuild(arg, opts));
|
|
346
381
|
manifest.command("verify <src>").description("Verify hashes, deps, and schema (read-only)").option("-C, --project-dir <dir>", "Project directory", process.cwd()).option("--strict", "Fail on advisory checks (warnings force a nonzero exit)", false).action((arg, opts) => runVerify(arg, opts));
|
|
347
382
|
manifest.command("publish <src>").description("Push the curated sidecar manifest and publish it to the store").option("-C, --project-dir <dir>", "Project directory", process.cwd()).option("--as <namespace>", "Publisher namespace (default: your store username)").option("--sidecar-repo <url>", "Public GitHub repo you own to hold the curated manifest").option("--ref <gitref>", "Foreign source ref to ingest (branch/sha; default: main)").option("--dry-run", "Print the publish plan without pushing or calling the store", false).action(async (arg, opts) => {
|
|
348
|
-
const { runPublish } = await import('./source-manifest-publish-
|
|
383
|
+
const { runPublish } = await import('./source-manifest-publish-IYWUMUCY.js');
|
|
349
384
|
await runPublish(arg, opts);
|
|
350
385
|
});
|
|
351
386
|
manifest.command("propose <src>").description("Open a PR to upstream with the sidecar manifest").action(() => notWired("propose"));
|
|
352
387
|
manifest.command("yank <src>").description("Retract the source's published assets from the store").option("-C, --project-dir <dir>", "Project directory", process.cwd()).option("--asset <ref>", "Yank only the asset matching this ref/name").action(async (arg, opts) => {
|
|
353
|
-
const { runYank } = await import('./source-manifest-publish-
|
|
388
|
+
const { runYank } = await import('./source-manifest-publish-IYWUMUCY.js');
|
|
354
389
|
await runYank(arg, opts);
|
|
355
390
|
});
|
|
356
391
|
}
|
|
@@ -410,11 +445,15 @@ function sourceLabel(entry, all) {
|
|
|
410
445
|
const shared = all.some((s) => s.url !== entry.url && sourceShortName(s.url) === short);
|
|
411
446
|
return shared ? sourceCacheKey(entry.url) : short;
|
|
412
447
|
}
|
|
448
|
+
function isLocalSourceUrl(url) {
|
|
449
|
+
return url.startsWith("/") || url.startsWith("file://");
|
|
450
|
+
}
|
|
413
451
|
function resolveSource(sources, key) {
|
|
414
452
|
const tiers = [
|
|
415
453
|
(s) => s.url === key,
|
|
416
454
|
(s) => sourceCacheKey(s.url) === key,
|
|
417
|
-
(s) => sourceShortName(s.url) === key || s.url === normalizeSourceUrl(key)
|
|
455
|
+
(s) => sourceShortName(s.url) === key || s.url === normalizeSourceUrl(key),
|
|
456
|
+
(s) => isLocalSourceUrl(key) && isLocalSourceUrl(s.url) && realLocalCacheKey(s.url) === realLocalCacheKey(normalizeSourceUrl(key))
|
|
418
457
|
];
|
|
419
458
|
for (const tier of tiers) {
|
|
420
459
|
const hits = sources.filter(tier);
|
|
@@ -445,8 +484,18 @@ function logAdvisories(advisories, verbose, slug) {
|
|
|
445
484
|
}
|
|
446
485
|
}
|
|
447
486
|
function findCacheKeyCollision(sources, url) {
|
|
448
|
-
const key =
|
|
449
|
-
return sources.find((s) => s.url !== url &&
|
|
487
|
+
const key = realLocalCacheKey(url);
|
|
488
|
+
return sources.find((s) => s.url !== url && realLocalCacheKey(s.url) === key);
|
|
489
|
+
}
|
|
490
|
+
function realLocalCacheKey(url) {
|
|
491
|
+
const local = url.startsWith("file://") ? url.slice("file://".length) : url;
|
|
492
|
+
if (local.startsWith("/") && existsSync(local)) {
|
|
493
|
+
try {
|
|
494
|
+
return sourceCacheKey(realpathSync(local));
|
|
495
|
+
} catch {
|
|
496
|
+
}
|
|
497
|
+
}
|
|
498
|
+
return sourceCacheKey(url);
|
|
450
499
|
}
|
|
451
500
|
function requireProjectYamlPath() {
|
|
452
501
|
const root = findWorkspaceRoot(process.cwd());
|
|
@@ -458,10 +507,19 @@ function requireProjectYamlPath() {
|
|
|
458
507
|
}
|
|
459
508
|
return path2.join(root, workspaceConfigFilename());
|
|
460
509
|
}
|
|
510
|
+
function loadProjectEditor(yamlPath) {
|
|
511
|
+
try {
|
|
512
|
+
return WorkspaceYamlEditor.load(yamlPath);
|
|
513
|
+
} catch (err) {
|
|
514
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
515
|
+
logErr(/ — parse error: /.test(message) ? message : `Could not read ${yamlPath}: ${message}`);
|
|
516
|
+
process.exit(1);
|
|
517
|
+
}
|
|
518
|
+
}
|
|
461
519
|
function readProjectSources(yamlPath) {
|
|
462
520
|
if (!existsSync(yamlPath)) return [];
|
|
463
521
|
try {
|
|
464
|
-
return
|
|
522
|
+
return loadProjectEditor(yamlPath).getSources();
|
|
465
523
|
} catch (err) {
|
|
466
524
|
logErr(`Could not read ${yamlPath}: ${err instanceof Error ? err.message : String(err)}`);
|
|
467
525
|
process.exit(1);
|
|
@@ -768,10 +826,12 @@ function makeSourceCommand() {
|
|
|
768
826
|
process.exitCode = 1;
|
|
769
827
|
return;
|
|
770
828
|
}
|
|
771
|
-
|
|
829
|
+
let url = normalizeSourceUrl(source);
|
|
772
830
|
const yamlPath = requireProjectYamlPath();
|
|
773
831
|
const collision = findCacheKeyCollision(readProjectSources(yamlPath), url);
|
|
774
|
-
if (collision) {
|
|
832
|
+
if (collision && isLocalSourceUrl(collision.url) && isLocalSourceUrl(url)) {
|
|
833
|
+
url = collision.url;
|
|
834
|
+
} else if (collision) {
|
|
775
835
|
logErr(
|
|
776
836
|
`"${url}" maps to the same cache key (${sourceCacheKey(url)}) as already-registered "${collision.url}". Remove that source first (skaile source remove) or re-use its exact URL to update it.`
|
|
777
837
|
);
|
|
@@ -790,7 +850,8 @@ function makeSourceCommand() {
|
|
|
790
850
|
if (opts.publisher) entry.publisher = requireValidPublisherOrExit(opts.publisher);
|
|
791
851
|
const registered = readProjectSources(yamlPath).find((s) => s.url === url);
|
|
792
852
|
const clonedAt = sourceClonePath(sourceCacheKey(url));
|
|
793
|
-
const
|
|
853
|
+
const urlOrg = registered ? /github\.com[/:]([^/]+)\/[^/]+/.exec(registered.url)?.[1]?.toLowerCase() : void 0;
|
|
854
|
+
const publisherNow = registered && existsSync(clonedAt) ? resolveSourcePublisher(clonedAt, registered.publisher ?? urlOrg) : registered?.publisher ?? urlOrg;
|
|
794
855
|
const publisherThen = registered && entry.publisher !== void 0 && existsSync(clonedAt) ? resolveSourcePublisher(clonedAt, entry.publisher) : entry.publisher;
|
|
795
856
|
if (registered && publisherNow !== void 0 && entry.publisher !== void 0 && publisherNow !== publisherThen && !opts.force) {
|
|
796
857
|
let declared = [];
|
|
@@ -826,7 +887,7 @@ function makeSourceCommand() {
|
|
|
826
887
|
} else {
|
|
827
888
|
logOk(`Cloned ${url} \u2192 ${dest}`);
|
|
828
889
|
}
|
|
829
|
-
const editor =
|
|
890
|
+
const editor = loadProjectEditor(yamlPath);
|
|
830
891
|
editor.setSource(entry);
|
|
831
892
|
editor.save();
|
|
832
893
|
const result = await refreshManifestCache(entry, opts.dev);
|
|
@@ -902,7 +963,7 @@ function makeSourceCommand() {
|
|
|
902
963
|
false
|
|
903
964
|
).option("--force", "Remove the source although a locked asset still comes from it", false).action(async (key, opts) => {
|
|
904
965
|
const yamlPath = requireProjectYamlPath();
|
|
905
|
-
const editor =
|
|
966
|
+
const editor = loadProjectEditor(yamlPath);
|
|
906
967
|
const all = editor.getSources();
|
|
907
968
|
const resolved = resolveSource(all, key);
|
|
908
969
|
if (resolved.kind === "none") {
|
|
@@ -1011,6 +1072,6 @@ function makeSourceCommand() {
|
|
|
1011
1072
|
return cmd;
|
|
1012
1073
|
}
|
|
1013
1074
|
|
|
1014
|
-
export { autoSyncForSearch, divergedSourceClones, ensureClone, findCacheKeyCollision, indexingHadFailures, legacySourceConfigHint, localPathNotASource, makeSourceCommand, normalizeSourceUrl, pullSourceClone, readProjectSources, resolveSource, resolveSourceArg, restoreSourceReaders, sourceClonePath, sourceLabel, sourceMatchesKey, syncProjectSources };
|
|
1015
|
-
//# sourceMappingURL=chunk-
|
|
1016
|
-
//# sourceMappingURL=chunk-
|
|
1075
|
+
export { autoSyncForSearch, divergedSourceClones, ensureClone, findCacheKeyCollision, indexingHadFailures, legacySourceConfigHint, loadProjectEditor, localPathNotASource, makeSourceCommand, missingManifestMessage, normalizeSourceUrl, pullSourceClone, readProjectSources, resolveSource, resolveSourceArg, restoreSourceReaders, sourceClonePath, sourceLabel, sourceMatchesKey, syncProjectSources };
|
|
1076
|
+
//# sourceMappingURL=chunk-PMWRM4EJ.js.map
|
|
1077
|
+
//# sourceMappingURL=chunk-PMWRM4EJ.js.map
|