@skaile/workspaces 6.4.0 → 6.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +58 -1
- package/README.md +4 -0
- package/dist/ai-sdk.js +55 -25
- package/dist/ai-sdk.js.map +1 -1
- package/dist/app-sdk/index.js +1 -1
- package/dist/{asset-feeds-UJSYGKCX.js → asset-feeds-WQ6YQPHV.js} +22 -22
- package/dist/{asset-feeds-UJSYGKCX.js.map → asset-feeds-WQ6YQPHV.js.map} +1 -1
- package/dist/asset-manager/catalog-deployer.js +8 -8
- package/dist/asset-manager/index.js +14 -14
- package/dist/asset-manager/installer.js +10 -10
- package/dist/asset-manager/renderers.js +9 -9
- package/dist/asset-manager/src/index.d.ts +114 -12
- package/dist/asset-manager/src/index.d.ts.map +1 -1
- package/dist/asset-manager/src/installer.d.ts +6 -0
- package/dist/asset-manager/src/installer.d.ts.map +1 -1
- package/dist/bridge/harnesses/claude-sdk.js +24 -19
- package/dist/bridge/harnesses/claude-sdk.js.map +1 -1
- package/dist/bridge/harnesses/codex.js +38 -36
- package/dist/bridge/harnesses/codex.js.map +1 -1
- package/dist/bridge/harnesses/continue.js +12 -13
- package/dist/bridge/harnesses/continue.js.map +1 -1
- package/dist/bridge/harnesses/echo.js +5 -6
- package/dist/bridge/harnesses/echo.js.map +1 -1
- package/dist/bridge/harnesses/gemini.js +9 -10
- package/dist/bridge/harnesses/goose.js +12 -13
- package/dist/bridge/harnesses/goose.js.map +1 -1
- package/dist/bridge/harnesses/omp.js +17 -12
- package/dist/bridge/harnesses/omp.js.map +1 -1
- package/dist/bridge/harnesses/opencode.js +12 -13
- package/dist/bridge/harnesses/opencode.js.map +1 -1
- package/dist/bridge/harnesses/qwen.js +9 -10
- package/dist/bridge/harnesses/qwen.js.map +1 -1
- package/dist/bridge/index.js +20 -21
- package/dist/bridge/src/ai-sdk.d.ts +0 -2
- package/dist/bridge/src/ai-sdk.d.ts.map +1 -1
- package/dist/bridge/src/codex/login-fallback.d.ts +39 -0
- package/dist/bridge/src/codex/login-fallback.d.ts.map +1 -0
- package/dist/bridge/src/error-classifier.d.ts +6 -0
- package/dist/bridge/src/error-classifier.d.ts.map +1 -1
- package/dist/bridge/src/harnesses/claude-sdk.d.ts.map +1 -1
- package/dist/bridge/src/harnesses/codex.d.ts +0 -6
- package/dist/bridge/src/harnesses/codex.d.ts.map +1 -1
- package/dist/bridge/src/harnesses/omp.d.ts.map +1 -1
- package/dist/bridge/src/index.d.ts +1 -0
- package/dist/bridge/src/index.d.ts.map +1 -1
- package/dist/{chunk-GTMANMBZ.js → chunk-2M3VLKT2.js} +3 -3
- package/dist/{chunk-GTMANMBZ.js.map → chunk-2M3VLKT2.js.map} +1 -1
- package/dist/{chunk-2WOA3TKK.js → chunk-2TLPC6TQ.js} +34 -19
- package/dist/chunk-2TLPC6TQ.js.map +1 -0
- package/dist/{chunk-O7KAQQAI.js → chunk-4BFEPZ6J.js} +4 -4
- package/dist/{chunk-O7KAQQAI.js.map → chunk-4BFEPZ6J.js.map} +1 -1
- package/dist/{chunk-TPQKFX6X.js → chunk-4J7JQX4G.js} +4 -4
- package/dist/{chunk-TPQKFX6X.js.map → chunk-4J7JQX4G.js.map} +1 -1
- package/dist/{chunk-6OHZUUR7.js → chunk-5DE3DGVR.js} +11 -5
- package/dist/chunk-5DE3DGVR.js.map +1 -0
- package/dist/{chunk-Q4XWCVFA.js → chunk-5ETYBC2X.js} +8 -8
- package/dist/{chunk-Q4XWCVFA.js.map → chunk-5ETYBC2X.js.map} +1 -1
- package/dist/{chunk-ZWCGJYR7.js → chunk-5XHQBCB5.js} +3 -3
- package/dist/{chunk-ZWCGJYR7.js.map → chunk-5XHQBCB5.js.map} +1 -1
- package/dist/{chunk-JSWMRYLM.js → chunk-65UAC3ZR.js} +31 -7
- package/dist/chunk-65UAC3ZR.js.map +1 -0
- package/dist/{chunk-UBLZALKP.js → chunk-6A6HE5LW.js} +3 -3
- package/dist/{chunk-UBLZALKP.js.map → chunk-6A6HE5LW.js.map} +1 -1
- package/dist/{chunk-ABVWUM2E.js → chunk-6ARPZHOV.js} +47 -25
- package/dist/chunk-6ARPZHOV.js.map +1 -0
- package/dist/{chunk-TDKZL5ZC.js → chunk-6RHWTZPT.js} +4 -4
- package/dist/{chunk-TDKZL5ZC.js.map → chunk-6RHWTZPT.js.map} +1 -1
- package/dist/{chunk-6WQGJF65.js → chunk-6SXSVKQY.js} +88 -17
- package/dist/chunk-6SXSVKQY.js.map +1 -0
- package/dist/{chunk-YFGXYQW4.js → chunk-7I5PNB2G.js} +3 -3
- package/dist/{chunk-YFGXYQW4.js.map → chunk-7I5PNB2G.js.map} +1 -1
- package/dist/{serve-preflight-NPWI4MV6.js → chunk-7PVGND4J.js} +30 -61
- package/dist/chunk-7PVGND4J.js.map +1 -0
- package/dist/{chunk-P7EL7QRD.js → chunk-7SJHSGUV.js} +34 -20
- package/dist/chunk-7SJHSGUV.js.map +1 -0
- package/dist/{chunk-VSCLUPGZ.js → chunk-AQNW2FET.js} +289 -44
- package/dist/chunk-AQNW2FET.js.map +1 -0
- package/dist/{chunk-45KLCFQB.js → chunk-B6N653ZG.js} +6 -6
- package/dist/{chunk-45KLCFQB.js.map → chunk-B6N653ZG.js.map} +1 -1
- package/dist/{chunk-6UP2EDFN.js → chunk-BSMW3PX2.js} +313 -4
- package/dist/chunk-BSMW3PX2.js.map +1 -0
- package/dist/{chunk-HTGTNN2B.js → chunk-CMXDFTA2.js} +3 -3
- package/dist/{chunk-HTGTNN2B.js.map → chunk-CMXDFTA2.js.map} +1 -1
- package/dist/{chunk-YJNE4V2M.js → chunk-DI6J2PJB.js} +70 -37
- package/dist/chunk-DI6J2PJB.js.map +1 -0
- package/dist/{chunk-V4OXHEWY.js → chunk-DS6UUCFG.js} +4 -4
- package/dist/{chunk-V4OXHEWY.js.map → chunk-DS6UUCFG.js.map} +1 -1
- package/dist/{chunk-U6S5CXKB.js → chunk-E2EC6SAX.js} +4 -4
- package/dist/{chunk-U6S5CXKB.js.map → chunk-E2EC6SAX.js.map} +1 -1
- package/dist/{chunk-TF5CWJQZ.js → chunk-EPXZQIC6.js} +23 -80
- package/dist/chunk-EPXZQIC6.js.map +1 -0
- package/dist/{chunk-6X3GDPCB.js → chunk-F4CZQD3T.js} +3 -4
- package/dist/chunk-F4CZQD3T.js.map +1 -0
- package/dist/{chunk-VZU67OKK.js → chunk-G5SYFFMD.js} +2 -2
- package/dist/{chunk-VZU67OKK.js.map → chunk-G5SYFFMD.js.map} +1 -1
- package/dist/{chunk-VV2DJT4I.js → chunk-GNUA7XT2.js} +4 -3
- package/dist/chunk-GNUA7XT2.js.map +1 -0
- package/dist/{chunk-E237FGGX.js → chunk-GTAHU4N4.js} +4 -4
- package/dist/{chunk-E237FGGX.js.map → chunk-GTAHU4N4.js.map} +1 -1
- package/dist/{chunk-SISUT7VR.js → chunk-GTGWRKMJ.js} +7 -7
- package/dist/{chunk-SISUT7VR.js.map → chunk-GTGWRKMJ.js.map} +1 -1
- package/dist/{chunk-BX7PSWJA.js → chunk-HGZN6JLP.js} +4 -4
- package/dist/{chunk-BX7PSWJA.js.map → chunk-HGZN6JLP.js.map} +1 -1
- package/dist/{chunk-L45IHRDH.js → chunk-HQAPUPBE.js} +3 -3
- package/dist/{chunk-L45IHRDH.js.map → chunk-HQAPUPBE.js.map} +1 -1
- package/dist/{chunk-L4OYPFLB.js → chunk-I5IF3JCG.js} +4 -4
- package/dist/{chunk-L4OYPFLB.js.map → chunk-I5IF3JCG.js.map} +1 -1
- package/dist/{chunk-IYZAJ2J2.js → chunk-J262X4JU.js} +36 -36
- package/dist/chunk-J262X4JU.js.map +1 -0
- package/dist/{chunk-WENTJ5KP.js → chunk-J4WKNJHO.js} +6 -6
- package/dist/{chunk-WENTJ5KP.js.map → chunk-J4WKNJHO.js.map} +1 -1
- package/dist/{chunk-3ENE6ZOF.js → chunk-JIQUF3X2.js} +9 -8
- package/dist/chunk-JIQUF3X2.js.map +1 -0
- package/dist/{chunk-TGB4E5Z6.js → chunk-JRVQV7WC.js} +414 -95
- package/dist/chunk-JRVQV7WC.js.map +1 -0
- package/dist/{chunk-BOS7P2Y4.js → chunk-KSH5CFQS.js} +3 -3
- package/dist/{chunk-BOS7P2Y4.js.map → chunk-KSH5CFQS.js.map} +1 -1
- package/dist/{chunk-UUKCPPTQ.js → chunk-KSUT5KAE.js} +3 -3
- package/dist/{chunk-UUKCPPTQ.js.map → chunk-KSUT5KAE.js.map} +1 -1
- package/dist/{chunk-DF5WJC3Q.js → chunk-LBJ4M5J2.js} +4 -4
- package/dist/{chunk-DF5WJC3Q.js.map → chunk-LBJ4M5J2.js.map} +1 -1
- package/dist/{chunk-GBXQFJ4G.js → chunk-MMOWIRHP.js} +310 -175
- package/dist/chunk-MMOWIRHP.js.map +1 -0
- package/dist/{chunk-G63KOHFS.js → chunk-MXI3XWV6.js} +4 -4
- package/dist/{chunk-G63KOHFS.js.map → chunk-MXI3XWV6.js.map} +1 -1
- package/dist/{chunk-ACBL7X62.js → chunk-N2PBAXAA.js} +3 -3
- package/dist/{chunk-ACBL7X62.js.map → chunk-N2PBAXAA.js.map} +1 -1
- package/dist/{chunk-5NHBLKKU.js → chunk-O7QZI6MQ.js} +3 -3
- package/dist/{chunk-5NHBLKKU.js.map → chunk-O7QZI6MQ.js.map} +1 -1
- package/dist/{chunk-U3SXCVR7.js → chunk-OY22B7E2.js} +4 -4
- package/dist/{chunk-U3SXCVR7.js.map → chunk-OY22B7E2.js.map} +1 -1
- package/dist/{chunk-C7TQARGC.js → chunk-PTJTOPE5.js} +3 -3
- package/dist/{chunk-C7TQARGC.js.map → chunk-PTJTOPE5.js.map} +1 -1
- package/dist/{chunk-HSF665NV.js → chunk-RAU5QPI6.js} +5 -5
- package/dist/{chunk-HSF665NV.js.map → chunk-RAU5QPI6.js.map} +1 -1
- package/dist/{chunk-RKI35EAN.js → chunk-RHCEX2EV.js} +3 -3
- package/dist/{chunk-RKI35EAN.js.map → chunk-RHCEX2EV.js.map} +1 -1
- package/dist/{chunk-76WSWPOB.js → chunk-SCRYXAHH.js} +15 -6
- package/dist/chunk-SCRYXAHH.js.map +1 -0
- package/dist/{chunk-DKXNKFKP.js → chunk-SGI5MRKP.js} +75 -3
- package/dist/chunk-SGI5MRKP.js.map +1 -0
- package/dist/{chunk-24D7IW5O.js → chunk-SHTXMERQ.js} +7 -8
- package/dist/chunk-SHTXMERQ.js.map +1 -0
- package/dist/{chunk-IZV3HDVG.js → chunk-SZKCE7EC.js} +5 -5
- package/dist/{chunk-IZV3HDVG.js.map → chunk-SZKCE7EC.js.map} +1 -1
- package/dist/{chunk-UAOHR6AL.js → chunk-TCH5UDKT.js} +4 -4
- package/dist/{chunk-UAOHR6AL.js.map → chunk-TCH5UDKT.js.map} +1 -1
- package/dist/{chunk-UVTN4O7N.js → chunk-TUFNY6OD.js} +33 -10
- package/dist/chunk-TUFNY6OD.js.map +1 -0
- package/dist/{chunk-PTBX55QF.js → chunk-U3UDOX6I.js} +4 -4
- package/dist/{chunk-PTBX55QF.js.map → chunk-U3UDOX6I.js.map} +1 -1
- package/dist/{chunk-BUU2DLPC.js → chunk-USSP43U3.js} +3 -3
- package/dist/{chunk-BUU2DLPC.js.map → chunk-USSP43U3.js.map} +1 -1
- package/dist/{chunk-IZQOO6MN.js → chunk-V5KG6CCV.js} +2 -2
- package/dist/{chunk-IZQOO6MN.js.map → chunk-V5KG6CCV.js.map} +1 -1
- package/dist/{chunk-CK3CJSRY.js → chunk-VJRL6ZK6.js} +4 -4
- package/dist/{chunk-CK3CJSRY.js.map → chunk-VJRL6ZK6.js.map} +1 -1
- package/dist/{chunk-76FLBODK.js → chunk-VT6G5AJV.js} +10 -7
- package/dist/chunk-VT6G5AJV.js.map +1 -0
- package/dist/{chunk-EXRQKOY6.js → chunk-VXYZ5M7Z.js} +83 -34
- package/dist/chunk-VXYZ5M7Z.js.map +1 -0
- package/dist/{chunk-QSIFEHSN.js → chunk-WW5NAU6N.js} +3 -3
- package/dist/{chunk-QSIFEHSN.js.map → chunk-WW5NAU6N.js.map} +1 -1
- package/dist/chunk-XD3RYAMR.js +83 -0
- package/dist/chunk-XD3RYAMR.js.map +1 -0
- package/dist/{chunk-HXZ3FQQN.js → chunk-XYCYGN3Q.js} +82 -50
- package/dist/chunk-XYCYGN3Q.js.map +1 -0
- package/dist/{chunk-5T3DTK7A.js → chunk-YN6N3RBM.js} +9 -10
- package/dist/chunk-YN6N3RBM.js.map +1 -0
- package/dist/{chunk-DCJ4BION.js → chunk-Z4FERR4U.js} +2 -2
- package/dist/{chunk-DCJ4BION.js.map → chunk-Z4FERR4U.js.map} +1 -1
- package/dist/{claude-code-UBT4ZME7.js → claude-code-LZH7Y4Y5.js} +5 -5
- package/dist/{claude-code-UBT4ZME7.js.map → claude-code-LZH7Y4Y5.js.map} +1 -1
- package/dist/cli/index.js +308 -162
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/src/commands/cache.d.ts.map +1 -1
- package/dist/cli/src/commands/catalog.d.ts.map +1 -1
- package/dist/cli/src/commands/config.d.ts.map +1 -1
- package/dist/cli/src/commands/connector.d.ts.map +1 -1
- package/dist/cli/src/commands/deploy.d.ts.map +1 -1
- package/dist/cli/src/commands/harness.d.ts +5 -4
- package/dist/cli/src/commands/harness.d.ts.map +1 -1
- package/dist/cli/src/commands/integration.d.ts.map +1 -1
- package/dist/cli/src/commands/library-cmd.d.ts.map +1 -1
- package/dist/cli/src/commands/library-index.d.ts +6 -0
- package/dist/cli/src/commands/library-index.d.ts.map +1 -1
- package/dist/cli/src/commands/migrate-files.d.ts +3 -6
- package/dist/cli/src/commands/migrate-files.d.ts.map +1 -1
- package/dist/cli/src/commands/migrate-harness.d.ts +4 -3
- package/dist/cli/src/commands/migrate-harness.d.ts.map +1 -1
- package/dist/cli/src/commands/migrate.d.ts +2 -2
- package/dist/cli/src/commands/outdated.d.ts.map +1 -1
- package/dist/cli/src/commands/plugin-registry-cmd.d.ts.map +1 -1
- package/dist/cli/src/commands/project.d.ts +7 -1
- package/dist/cli/src/commands/project.d.ts.map +1 -1
- package/dist/cli/src/commands/run.d.ts.map +1 -1
- package/dist/cli/src/commands/serve-preflight.d.ts +21 -0
- package/dist/cli/src/commands/serve-preflight.d.ts.map +1 -1
- package/dist/cli/src/commands/serve.d.ts.map +1 -1
- package/dist/cli/src/commands/source-manifest.d.ts.map +1 -1
- package/dist/cli/src/commands/source.d.ts +8 -0
- package/dist/cli/src/commands/source.d.ts.map +1 -1
- package/dist/cli/src/commands/update.d.ts.map +1 -1
- package/dist/cli/src/commands/validate-instances.d.ts +6 -0
- package/dist/cli/src/commands/validate-instances.d.ts.map +1 -1
- package/dist/cli/src/commands/validate.d.ts.map +1 -1
- package/dist/cli/src/commands/verify.d.ts.map +1 -1
- package/dist/cli/src/config-checks.d.ts +8 -0
- package/dist/cli/src/config-checks.d.ts.map +1 -1
- package/dist/cli/src/ensure-sources.d.ts.map +1 -1
- package/dist/cli/src/helpers.d.ts +3 -2
- package/dist/cli/src/helpers.d.ts.map +1 -1
- package/dist/cli/src/plugin-store/index.d.ts.map +1 -1
- package/dist/cli/src/plugin-store/reconcile.d.ts.map +1 -1
- package/dist/cli/src/plugin-store/spec.d.ts +1 -0
- package/dist/cli/src/plugin-store/spec.d.ts.map +1 -1
- package/dist/cli/src/skill-checks.d.ts +2 -0
- package/dist/cli/src/skill-checks.d.ts.map +1 -1
- package/dist/connectors/config.js +5 -5
- package/dist/connectors/index.js +24 -25
- package/dist/connectors/src/connector-manager.d.ts.map +1 -1
- package/dist/connectors/src/index.d.ts +2 -2
- package/dist/connectors/src/index.d.ts.map +1 -1
- package/dist/connectors/src/managed-gitconfig.d.ts +22 -0
- package/dist/connectors/src/managed-gitconfig.d.ts.map +1 -1
- package/dist/connectors/src/mount-ledger.d.ts.map +1 -1
- package/dist/connectors/src/npm-installer.d.ts +11 -3
- package/dist/connectors/src/npm-installer.d.ts.map +1 -1
- package/dist/connectors-HU5MHSUJ.js +49 -0
- package/dist/{connectors-4WH32NK2.js.map → connectors-HU5MHSUJ.js.map} +1 -1
- package/dist/connectors-shared/index.js +2 -2
- package/dist/core/index.js +7 -7
- package/dist/core/logging.js +1 -1
- package/dist/core/manifest.js +2 -2
- package/dist/core/models.js +1 -1
- package/dist/core/publish-manifest.js +3 -3
- package/dist/core/ref.js +1 -1
- package/dist/core/runtime-assets.js +5 -5
- package/dist/core/src/agent-instances.d.ts +6 -0
- package/dist/core/src/agent-instances.d.ts.map +1 -1
- package/dist/core/src/config-key-diagnostics.d.ts +2 -1
- package/dist/core/src/config-key-diagnostics.d.ts.map +1 -1
- package/dist/core/src/index.d.ts +4 -4
- package/dist/core/src/index.d.ts.map +1 -1
- package/dist/core/src/lock.d.ts +20 -1
- package/dist/core/src/lock.d.ts.map +1 -1
- package/dist/core/src/logging/index.d.ts +1 -0
- package/dist/core/src/logging/index.d.ts.map +1 -1
- package/dist/core/src/logging/log-safe-text.d.ts +20 -0
- package/dist/core/src/logging/log-safe-text.d.ts.map +1 -0
- package/dist/core/src/manifest-yaml-editor.d.ts +4 -1
- package/dist/core/src/manifest-yaml-editor.d.ts.map +1 -1
- package/dist/core/src/manifest.d.ts.map +1 -1
- package/dist/core/src/models.d.ts +10 -0
- package/dist/core/src/models.d.ts.map +1 -1
- package/dist/core/src/repo-manager.d.ts +11 -0
- package/dist/core/src/repo-manager.d.ts.map +1 -1
- package/dist/core/src/runtime-assets.d.ts +12 -1
- package/dist/core/src/runtime-assets.d.ts.map +1 -1
- package/dist/core/src/walker.d.ts +3 -0
- package/dist/core/src/walker.d.ts.map +1 -1
- package/dist/core/src/workspace-config.d.ts +10 -2
- package/dist/core/src/workspace-config.d.ts.map +1 -1
- package/dist/core/workspace-config.js +4 -4
- package/dist/deploy/index.js +7 -7
- package/dist/discovery/index.js +5 -5
- package/dist/{ensure-sources-UC2RBYMP.js → ensure-sources-CAMWJTMR.js} +32 -32
- package/dist/ensure-sources-CAMWJTMR.js.map +1 -0
- package/dist/factory-assets/connectors/box.js +24 -25
- package/dist/factory-assets/connectors/deploy.js +24 -25
- package/dist/factory-assets/connectors/devserver.js +24 -25
- package/dist/factory-assets/connectors/flow/adapter.js +24 -25
- package/dist/factory-assets/connectors/flow/engine.js +8 -8
- package/dist/factory-assets/connectors/flow/run-flow.js +26 -27
- package/dist/factory-assets/connectors/flow.js +24 -25
- package/dist/factory-assets/connectors/git.js +24 -25
- package/dist/factory-assets/connectors/gmail.js +24 -25
- package/dist/factory-assets/connectors/googledrive.js +24 -25
- package/dist/factory-assets/connectors/local.js +24 -25
- package/dist/factory-assets/connectors/mattermost.js +24 -25
- package/dist/factory-assets/connectors/memory.js +24 -25
- package/dist/factory-assets/connectors/minio.js +24 -25
- package/dist/factory-assets/connectors/postgres.js +24 -25
- package/dist/factory-assets/connectors/s3.js +24 -25
- package/dist/factory-assets/connectors/sharepoint.js +24 -25
- package/dist/factory-assets/connectors/sqlite.js +24 -25
- package/dist/factory-assets/connectors/static-server.js +24 -25
- package/dist/factory-assets/connectors/tunnel.js +24 -25
- package/dist/factory-assets/connectors/webdav.js +24 -25
- package/dist/factory-assets/connectors/xstate-store.js +24 -25
- package/dist/factory-assets/connectors/xstate.js +24 -25
- package/dist/factory-assets/skills/authoring-skaile-assets/SKILL.md +2 -1
- package/dist/{flows-LYTKNGKE.js → flows-GVOVQGQW.js} +12 -12
- package/dist/{flows-LYTKNGKE.js.map → flows-GVOVQGQW.js.map} +1 -1
- package/dist/{helpers-SSSKT5XK.js → helpers-WMCCODAV.js} +29 -30
- package/dist/{helpers-SSSKT5XK.js.map → helpers-WMCCODAV.js.map} +1 -1
- package/dist/library/index.js +11 -11
- package/dist/library/install.js +4 -4
- package/dist/library/src/manifest-writer.d.ts +9 -0
- package/dist/library/src/manifest-writer.d.ts.map +1 -1
- package/dist/library/src/remote/remote-catalog-source.d.ts +9 -0
- package/dist/library/src/remote/remote-catalog-source.d.ts.map +1 -1
- package/dist/library/src/remote/rest-catalog-source.d.ts +1 -0
- package/dist/library/src/remote/rest-catalog-source.d.ts.map +1 -1
- package/dist/{library-publish-GQMNTAKK.js → library-publish-UQQMHTND.js} +55 -55
- package/dist/{library-publish-GQMNTAKK.js.map → library-publish-UQQMHTND.js.map} +1 -1
- package/dist/model-endpoint/index.js +10 -11
- package/dist/open-library-OJ4HT2X4.js +57 -0
- package/dist/{open-library-XGUCUJYE.js.map → open-library-OJ4HT2X4.js.map} +1 -1
- package/dist/open-registry-LWGIOJDK.js +32 -0
- package/dist/{open-registry-DIFEPDF6.js.map → open-registry-LWGIOJDK.js.map} +1 -1
- package/dist/paths-FR2752HV.js +22 -0
- package/dist/{paths-G4GFJLE2.js.map → paths-FR2752HV.js.map} +1 -1
- package/dist/{plugin-store-BBLDFD3L.js → plugin-store-IALJUBN2.js} +10 -10
- package/dist/{plugin-store-BBLDFD3L.js.map → plugin-store-IALJUBN2.js.map} +1 -1
- package/dist/project-UQFCYHYS.js +88 -0
- package/dist/{project-LB745WVZ.js.map → project-UQFCYHYS.js.map} +1 -1
- package/dist/resolver/index.js +8 -8
- package/dist/runner/index.js +40 -41
- package/dist/runner/src/composition/resolve-instance.d.ts.map +1 -1
- package/dist/runner/src/composition/resolve.d.ts +6 -0
- package/dist/runner/src/composition/resolve.d.ts.map +1 -1
- package/dist/runner/src/credential-notice.d.ts +3 -2
- package/dist/runner/src/credential-notice.d.ts.map +1 -1
- package/dist/runner/src/external-mcp.d.ts +22 -0
- package/dist/runner/src/external-mcp.d.ts.map +1 -1
- package/dist/runner/src/mcp-tools-snapshot.d.ts +13 -0
- package/dist/runner/src/mcp-tools-snapshot.d.ts.map +1 -0
- package/dist/runner/src/resources.d.ts +14 -0
- package/dist/runner/src/resources.d.ts.map +1 -1
- package/dist/runner/src/serve.d.ts.map +1 -1
- package/dist/sdk/asset-manager.js +14 -14
- package/dist/sdk/bridge.js +20 -21
- package/dist/sdk/core.js +7 -7
- package/dist/sdk/flow.js +8 -8
- package/dist/sdk/index.js +40 -41
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/resolver.js +8 -8
- package/dist/sdk/runner.js +40 -41
- package/dist/sdk/session.js +2 -2
- package/dist/sdk/transport/ws/server.js +8 -8
- package/dist/sdk/transport/ws.js +8 -8
- package/dist/sdk/transport.js +8 -8
- package/dist/sdk/types.js +1 -1
- package/dist/serve-preflight-TYEKHC32.js +56 -0
- package/dist/serve-preflight-TYEKHC32.js.map +1 -0
- package/dist/session/index.js +2 -2
- package/dist/{setup-X6ZYH2MW.js → setup-4JV2IMCB.js} +30 -31
- package/dist/setup-4JV2IMCB.js.map +1 -0
- package/dist/{skills-62PXDBPJ.js → skills-6QTKFMLW.js} +13 -13
- package/dist/{skills-62PXDBPJ.js.map → skills-6QTKFMLW.js.map} +1 -1
- package/dist/source-XYMMJVKR.js +86 -0
- package/dist/{source-LAYCTRHP.js.map → source-XYMMJVKR.js.map} +1 -1
- package/dist/{source-manifest-publish-3S6PJ25W.js → source-manifest-publish-SZFGGKB4.js} +52 -53
- package/dist/source-manifest-publish-SZFGGKB4.js.map +1 -0
- package/dist/transport/index.js +8 -8
- package/dist/transport/ws/server.js +8 -8
- package/dist/transport/ws.js +8 -8
- package/dist/tui/index.js +40 -41
- package/dist/tui/index.js.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/types/manifests.js +1 -1
- package/dist/types/src/manifests/agent.d.ts +2 -2
- package/dist/types/src/manifests/agent.d.ts.map +1 -1
- package/dist/types/src/version.d.ts +8 -8
- package/dist/workspace-plugin/adapters/mcp.js +31 -32
- package/dist/workspace-plugin/adapters/omp.js +14 -14
- package/dist/workspace-plugin/index.js +2 -2
- package/package.json +1 -1
- package/dist/chunk-24D7IW5O.js.map +0 -1
- package/dist/chunk-2WOA3TKK.js.map +0 -1
- package/dist/chunk-3ENE6ZOF.js.map +0 -1
- package/dist/chunk-5T3DTK7A.js.map +0 -1
- package/dist/chunk-6OHZUUR7.js.map +0 -1
- package/dist/chunk-6UP2EDFN.js.map +0 -1
- package/dist/chunk-6WQGJF65.js.map +0 -1
- package/dist/chunk-6X3GDPCB.js.map +0 -1
- package/dist/chunk-76FLBODK.js.map +0 -1
- package/dist/chunk-76WSWPOB.js.map +0 -1
- package/dist/chunk-ABVWUM2E.js.map +0 -1
- package/dist/chunk-DKXNKFKP.js.map +0 -1
- package/dist/chunk-EXRQKOY6.js.map +0 -1
- package/dist/chunk-GBXQFJ4G.js.map +0 -1
- package/dist/chunk-HXZ3FQQN.js.map +0 -1
- package/dist/chunk-IYZAJ2J2.js.map +0 -1
- package/dist/chunk-JSWMRYLM.js.map +0 -1
- package/dist/chunk-P7EL7QRD.js.map +0 -1
- package/dist/chunk-QJQQNBVT.js +0 -315
- package/dist/chunk-QJQQNBVT.js.map +0 -1
- package/dist/chunk-TF5CWJQZ.js.map +0 -1
- package/dist/chunk-TGB4E5Z6.js.map +0 -1
- package/dist/chunk-UVTN4O7N.js.map +0 -1
- package/dist/chunk-VSCLUPGZ.js.map +0 -1
- package/dist/chunk-VV2DJT4I.js.map +0 -1
- package/dist/chunk-YJNE4V2M.js.map +0 -1
- package/dist/connectors-4WH32NK2.js +0 -50
- package/dist/ensure-sources-UC2RBYMP.js.map +0 -1
- package/dist/open-library-XGUCUJYE.js +0 -58
- package/dist/open-registry-DIFEPDF6.js +0 -32
- package/dist/paths-G4GFJLE2.js +0 -22
- package/dist/project-LB745WVZ.js +0 -88
- package/dist/serve-preflight-NPWI4MV6.js.map +0 -1
- package/dist/setup-X6ZYH2MW.js.map +0 -1
- package/dist/source-LAYCTRHP.js +0 -87
- package/dist/source-manifest-publish-3S6PJ25W.js.map +0 -1
|
@@ -1,26 +1,28 @@
|
|
|
1
|
-
import { readManifestSourceConfig, discoverAssetsInTree, barePublisher, createDefaultKindRegistry, sharesItsFolder, SEMVER_RE, invalidSemverMessage, parseManifestFile } from './chunk-
|
|
2
|
-
import { installFromManifest, assertSafeManifestPath } from './chunk-
|
|
3
|
-
import { PresetManifestSchema } from './chunk-
|
|
4
|
-
import { defaultLibraryDir, resolveLibraryDir, GLOBAL_INSTALL_DIR_NAME, readLock, buildLibraryLockEntries, writeLock, mergeLockFile, buildLockFile, ManifestYamlEditor } from './chunk-
|
|
5
|
-
import { getGlobalCacheDir, storeManifestSlug, priorStoreManifestSlugs, resolveSourcePublisher } from './chunk-
|
|
1
|
+
import { readManifestSourceConfig, discoverAssetsInTree, barePublisher, createDefaultKindRegistry, sharesItsFolder, SEMVER_RE, invalidSemverMessage, parseManifestFile } from './chunk-J4WKNJHO.js';
|
|
2
|
+
import { installFromManifest, assertSafeManifestPath } from './chunk-VJRL6ZK6.js';
|
|
3
|
+
import { PresetManifestSchema } from './chunk-VT6G5AJV.js';
|
|
4
|
+
import { defaultLibraryDir, resolveLibraryDir, GLOBAL_INSTALL_DIR_NAME, readLock, buildLibraryLockEntries, writeLock, mergeLockFile, buildLockFile, ManifestYamlEditor } from './chunk-6ARPZHOV.js';
|
|
5
|
+
import { getGlobalCacheDir, storeManifestSlug, priorStoreManifestSlugs, resolveSourcePublisher } from './chunk-6SXSVKQY.js';
|
|
6
6
|
import { userConfigPath, globalSkaileDir, mergeLegacyEntriesInto, migrateLegacyDir, globalCacheRoot } from './chunk-L5VSIPQD.js';
|
|
7
|
-
import { encodeSkaileManifest, expandManifestFiles, SKAILE_MANIFEST_FILENAME, librarySymlinkMessage, loadSkPublishManifest } from './chunk-
|
|
8
|
-
import { scanDirectory } from './chunk-
|
|
9
|
-
import { parseAssetRef, assetRefToStr, isValidAssetName } from './chunk-
|
|
7
|
+
import { encodeSkaileManifest, expandManifestFiles, SKAILE_MANIFEST_FILENAME, librarySymlinkMessage, loadSkPublishManifest } from './chunk-E2EC6SAX.js';
|
|
8
|
+
import { scanDirectory } from './chunk-GNUA7XT2.js';
|
|
9
|
+
import { parseAssetRef, assetRefToStr, isValidAssetName } from './chunk-V5KG6CCV.js';
|
|
10
10
|
import { __export } from './chunk-NSBPE2FW.js';
|
|
11
|
-
import * as
|
|
11
|
+
import * as fs14 from 'fs';
|
|
12
12
|
import { existsSync, mkdirSync, symlinkSync, copyFileSync, cpSync } from 'fs';
|
|
13
13
|
import * as path16 from 'path';
|
|
14
14
|
import { resolve, relative, sep, join, dirname } from 'path';
|
|
15
15
|
import { stringify, parse, parseDocument } from 'yaml';
|
|
16
16
|
import * as z3 from 'zod';
|
|
17
17
|
import * as crypto from 'crypto';
|
|
18
|
+
import { randomBytes, createHash } from 'crypto';
|
|
18
19
|
import { eq, and, like } from 'drizzle-orm';
|
|
19
20
|
import { createClient } from '@libsql/client';
|
|
20
21
|
import { drizzle } from 'drizzle-orm/libsql';
|
|
21
22
|
import { sqliteTable, text, integer } from 'drizzle-orm/sqlite-core';
|
|
22
23
|
import { spawnSync } from 'child_process';
|
|
23
24
|
import { valid, gt } from 'semver';
|
|
25
|
+
import * as os from 'os';
|
|
24
26
|
import { isDeepStrictEqual } from 'util';
|
|
25
27
|
|
|
26
28
|
// library/src/library.ts
|
|
@@ -121,9 +123,9 @@ function projectConfigPath(projectDir) {
|
|
|
121
123
|
return path16.join(projectDir, ".skaile", CONFIG_FILENAME);
|
|
122
124
|
}
|
|
123
125
|
function loadConfigFile(filePath) {
|
|
124
|
-
if (!
|
|
126
|
+
if (!fs14.existsSync(filePath)) return null;
|
|
125
127
|
try {
|
|
126
|
-
const content =
|
|
128
|
+
const content = fs14.readFileSync(filePath, "utf-8");
|
|
127
129
|
const raw = parse(content);
|
|
128
130
|
if (!raw || typeof raw !== "object") return null;
|
|
129
131
|
return SkaileConfigSchema.partial().parse(raw);
|
|
@@ -172,10 +174,10 @@ function resolveConfig(opts) {
|
|
|
172
174
|
}
|
|
173
175
|
function saveConfig(filePath, config) {
|
|
174
176
|
const dir = path16.dirname(filePath);
|
|
175
|
-
if (!
|
|
176
|
-
|
|
177
|
+
if (!fs14.existsSync(dir)) {
|
|
178
|
+
fs14.mkdirSync(dir, { recursive: true });
|
|
177
179
|
}
|
|
178
|
-
|
|
180
|
+
fs14.writeFileSync(filePath, stringify(config, { indent: 2 }), "utf-8");
|
|
179
181
|
}
|
|
180
182
|
var KnowledgeManifestSchema = z3.looseObject({
|
|
181
183
|
name: z3.string().optional(),
|
|
@@ -202,9 +204,9 @@ function validateKnowledge(data) {
|
|
|
202
204
|
// library/src/knowledge/knowledge-kind-provider.ts
|
|
203
205
|
function collectDirRecursive(baseDir, relativeDir) {
|
|
204
206
|
const full = path16.join(baseDir, relativeDir);
|
|
205
|
-
if (!
|
|
207
|
+
if (!fs14.existsSync(full) || !fs14.statSync(full).isDirectory()) return [];
|
|
206
208
|
const results = [];
|
|
207
|
-
for (const entry of
|
|
209
|
+
for (const entry of fs14.readdirSync(full, { withFileTypes: true })) {
|
|
208
210
|
const rel = path16.posix.join(relativeDir, entry.name);
|
|
209
211
|
if (entry.isDirectory()) {
|
|
210
212
|
results.push(...collectDirRecursive(baseDir, rel));
|
|
@@ -312,7 +314,7 @@ var assignments = sqliteTable("assignments", {
|
|
|
312
314
|
assignedAt: text("assigned_at").notNull()
|
|
313
315
|
});
|
|
314
316
|
function isClone(dir) {
|
|
315
|
-
return
|
|
317
|
+
return fs14.existsSync(path16.join(dir, ".git"));
|
|
316
318
|
}
|
|
317
319
|
function getSidecarRoot() {
|
|
318
320
|
const home = globalSkaileDir();
|
|
@@ -346,9 +348,9 @@ function deriveSlug(sourceConfig, sourcePath, existingSlugs) {
|
|
|
346
348
|
}
|
|
347
349
|
function listSidecarSlugsOnDisk() {
|
|
348
350
|
const root = getSidecarRoot();
|
|
349
|
-
if (!
|
|
351
|
+
if (!fs14.existsSync(root)) return [];
|
|
350
352
|
const out = [];
|
|
351
|
-
for (const entry of
|
|
353
|
+
for (const entry of fs14.readdirSync(root, { withFileTypes: true })) {
|
|
352
354
|
if (!entry.isDirectory()) continue;
|
|
353
355
|
if (entry.name.startsWith(".")) continue;
|
|
354
356
|
out.push(entry.name);
|
|
@@ -369,16 +371,16 @@ function getStoreManifestsDir() {
|
|
|
369
371
|
function storeManifestFile(sourceUrl) {
|
|
370
372
|
const dir = getStoreManifestsDir();
|
|
371
373
|
const current = path16.join(dir, `${storeManifestSlug(sourceUrl)}.yaml`);
|
|
372
|
-
if (
|
|
374
|
+
if (fs14.existsSync(current)) return current;
|
|
373
375
|
for (const slug of priorStoreManifestSlugs(sourceUrl)) {
|
|
374
376
|
const old = path16.join(dir, `${slug}.yaml`);
|
|
375
|
-
if (
|
|
377
|
+
if (fs14.existsSync(old)) return old;
|
|
376
378
|
}
|
|
377
379
|
return current;
|
|
378
380
|
}
|
|
379
381
|
function curatedManifestOverlay(sourceUrl) {
|
|
380
382
|
const file = storeManifestFile(sourceUrl);
|
|
381
|
-
return
|
|
383
|
+
return fs14.existsSync(file) ? file : void 0;
|
|
382
384
|
}
|
|
383
385
|
function commitStoreManifest(file, message) {
|
|
384
386
|
const root = getStoreRoot();
|
|
@@ -410,14 +412,14 @@ function migratedMarkerPath() {
|
|
|
410
412
|
}
|
|
411
413
|
function collectSidecarMigrationCandidates(sidecarRoot) {
|
|
412
414
|
const candidates = [];
|
|
413
|
-
if (
|
|
414
|
-
for (const entry of
|
|
415
|
+
if (fs14.existsSync(sidecarRoot)) {
|
|
416
|
+
for (const entry of fs14.readdirSync(sidecarRoot, { withFileTypes: true })) {
|
|
415
417
|
if (!entry.isDirectory()) continue;
|
|
416
418
|
if (entry.name.startsWith(".")) continue;
|
|
417
419
|
const sidecarDir = path16.join(sidecarRoot, entry.name);
|
|
418
420
|
const current = path16.join(sidecarDir, "skaile.manifest.yaml");
|
|
419
421
|
const legacy = path16.join(sidecarDir, ".skaile-source.yaml");
|
|
420
|
-
const src =
|
|
422
|
+
const src = fs14.existsSync(current) ? current : fs14.existsSync(legacy) ? legacy : void 0;
|
|
421
423
|
if (src) candidates.push({ src, slug: entry.name });
|
|
422
424
|
}
|
|
423
425
|
}
|
|
@@ -427,9 +429,9 @@ function moveSidecarManifests(candidates, manifestsDir) {
|
|
|
427
429
|
let migrated = 0;
|
|
428
430
|
for (const { src, slug } of candidates) {
|
|
429
431
|
const dest = path16.join(manifestsDir, `${slug}.yaml`);
|
|
430
|
-
if (
|
|
432
|
+
if (fs14.existsSync(dest)) continue;
|
|
431
433
|
try {
|
|
432
|
-
|
|
434
|
+
fs14.renameSync(src, dest);
|
|
433
435
|
migrated++;
|
|
434
436
|
} catch (err) {
|
|
435
437
|
process.stderr.write(
|
|
@@ -441,10 +443,10 @@ function moveSidecarManifests(candidates, manifestsDir) {
|
|
|
441
443
|
return migrated;
|
|
442
444
|
}
|
|
443
445
|
function initStoreGitRepo(storeRoot) {
|
|
444
|
-
if (
|
|
446
|
+
if (fs14.existsSync(path16.join(storeRoot, ".git"))) return;
|
|
445
447
|
try {
|
|
446
448
|
spawnSync("git", ["init", "--quiet"], { cwd: storeRoot, stdio: "ignore" });
|
|
447
|
-
|
|
449
|
+
fs14.writeFileSync(
|
|
448
450
|
path16.join(storeRoot, ".gitignore"),
|
|
449
451
|
"# Remote-store cache \u2014 local to this machine.\nremote-cache/\n",
|
|
450
452
|
"utf8"
|
|
@@ -455,14 +457,14 @@ function initStoreGitRepo(storeRoot) {
|
|
|
455
457
|
function migrateSidecarsToStoreIfNeeded() {
|
|
456
458
|
const storeRoot = getStoreRoot();
|
|
457
459
|
const marker = migratedMarkerPath();
|
|
458
|
-
if (
|
|
460
|
+
if (fs14.existsSync(marker)) return { migrated: 0, storeRoot };
|
|
459
461
|
const sidecarRoot = getSidecarRoot();
|
|
460
462
|
const manifestsDir = getStoreManifestsDir();
|
|
461
463
|
const candidates = collectSidecarMigrationCandidates(sidecarRoot);
|
|
462
|
-
|
|
464
|
+
fs14.mkdirSync(manifestsDir, { recursive: true });
|
|
463
465
|
const migrated = moveSidecarManifests(candidates, manifestsDir);
|
|
464
466
|
initStoreGitRepo(storeRoot);
|
|
465
|
-
|
|
467
|
+
fs14.writeFileSync(marker, (/* @__PURE__ */ new Date()).toISOString(), "utf8");
|
|
466
468
|
return { migrated, storeRoot };
|
|
467
469
|
}
|
|
468
470
|
|
|
@@ -707,7 +709,7 @@ async function purgeOrphanedAssetDefinitions(client) {
|
|
|
707
709
|
await client.execute(`PRAGMA user_version = ${ORPHAN_PURGE_VERSION}`);
|
|
708
710
|
}
|
|
709
711
|
function assertNoLegacyLibDb(newDbPath) {
|
|
710
|
-
if (
|
|
712
|
+
if (fs14.existsSync(newDbPath)) return;
|
|
711
713
|
const parent = path16.dirname(newDbPath);
|
|
712
714
|
const skaileHome = globalSkaileDir();
|
|
713
715
|
const defaultIndexPath2 = path16.join(skaileHome, "index.db");
|
|
@@ -723,7 +725,7 @@ function assertNoLegacyLibDb(newDbPath) {
|
|
|
723
725
|
candidates.push(path16.join(path16.dirname(parent), "library", "lib.db"));
|
|
724
726
|
}
|
|
725
727
|
for (const legacy of candidates) {
|
|
726
|
-
if (!
|
|
728
|
+
if (!fs14.existsSync(legacy)) continue;
|
|
727
729
|
throw new Error(
|
|
728
730
|
`Found legacy index database at ${legacy}. The lib.db \u2192 index.db relocation ran for one release and has been removed. Move the file manually to ${newDbPath} (and any -wal / -shm siblings), then retry.`
|
|
729
731
|
);
|
|
@@ -898,12 +900,12 @@ var LocalIndex = class {
|
|
|
898
900
|
dbPath = resolveIndexPath();
|
|
899
901
|
this._kindRegistry = optionsOrDir?.kindRegistry;
|
|
900
902
|
}
|
|
901
|
-
if (!
|
|
902
|
-
|
|
903
|
+
if (!fs14.existsSync(dir)) {
|
|
904
|
+
fs14.mkdirSync(dir, { recursive: true });
|
|
903
905
|
}
|
|
904
906
|
const dbParent = path16.dirname(dbPath);
|
|
905
|
-
if (!
|
|
906
|
-
|
|
907
|
+
if (!fs14.existsSync(dbParent)) {
|
|
908
|
+
fs14.mkdirSync(dbParent, { recursive: true });
|
|
907
909
|
}
|
|
908
910
|
this.libraryDir = dir;
|
|
909
911
|
this.dbPath = dbPath;
|
|
@@ -1250,7 +1252,7 @@ var LocalIndex = class {
|
|
|
1250
1252
|
var UNREGISTERED_FILE = ".unregistered-libraries";
|
|
1251
1253
|
function libraryDirMissing(lib) {
|
|
1252
1254
|
try {
|
|
1253
|
-
return !
|
|
1255
|
+
return !fs14.statSync(lib.path).isDirectory();
|
|
1254
1256
|
} catch {
|
|
1255
1257
|
return true;
|
|
1256
1258
|
}
|
|
@@ -1263,7 +1265,7 @@ function missingLibraryDirMessage(lib) {
|
|
|
1263
1265
|
}
|
|
1264
1266
|
function realDir(dir) {
|
|
1265
1267
|
try {
|
|
1266
|
-
return
|
|
1268
|
+
return fs14.realpathSync(dir);
|
|
1267
1269
|
} catch {
|
|
1268
1270
|
return path16.resolve(dir);
|
|
1269
1271
|
}
|
|
@@ -1271,7 +1273,7 @@ function realDir(dir) {
|
|
|
1271
1273
|
function unregisteredLibraryNames() {
|
|
1272
1274
|
try {
|
|
1273
1275
|
return new Set(
|
|
1274
|
-
|
|
1276
|
+
fs14.readFileSync(path16.join(resolveLibraryDir(), UNREGISTERED_FILE), "utf8").split("\n").map((l) => l.trim()).filter(Boolean)
|
|
1275
1277
|
);
|
|
1276
1278
|
} catch {
|
|
1277
1279
|
return /* @__PURE__ */ new Set();
|
|
@@ -1282,8 +1284,8 @@ function markLibraryUnregistered(lib) {
|
|
|
1282
1284
|
const known = unregisteredLibraryNames();
|
|
1283
1285
|
const add = [.../* @__PURE__ */ new Set([lib.name, path16.basename(lib.path)])].filter((n) => !known.has(n));
|
|
1284
1286
|
if (add.length === 0) return;
|
|
1285
|
-
|
|
1286
|
-
|
|
1287
|
+
fs14.mkdirSync(resolveLibraryDir(), { recursive: true });
|
|
1288
|
+
fs14.appendFileSync(
|
|
1287
1289
|
path16.join(resolveLibraryDir(), UNREGISTERED_FILE),
|
|
1288
1290
|
`${add.join("\n")}
|
|
1289
1291
|
`,
|
|
@@ -1300,15 +1302,15 @@ function clearLibraryUnregistered(lib) {
|
|
|
1300
1302
|
const keep = [...known].filter((n) => !drop.has(n));
|
|
1301
1303
|
if (keep.length === known.size) return;
|
|
1302
1304
|
const file = path16.join(resolveLibraryDir(), UNREGISTERED_FILE);
|
|
1303
|
-
if (keep.length === 0)
|
|
1304
|
-
else
|
|
1305
|
+
if (keep.length === 0) fs14.rmSync(file, { force: true });
|
|
1306
|
+
else fs14.writeFileSync(file, `${keep.join("\n")}
|
|
1305
1307
|
`, "utf8");
|
|
1306
1308
|
}
|
|
1307
1309
|
var RENAMED_FILE = ".renamed-libraries";
|
|
1308
1310
|
function readAllRenames() {
|
|
1309
1311
|
const out = /* @__PURE__ */ new Map();
|
|
1310
1312
|
try {
|
|
1311
|
-
for (const line of
|
|
1313
|
+
for (const line of fs14.readFileSync(path16.join(resolveLibraryDir(), RENAMED_FILE), "utf8").split("\n")) {
|
|
1312
1314
|
const [from, to, flag] = line.split(" ").map((s) => s.trim());
|
|
1313
1315
|
if (from && to && from !== to) out.set(from, { to, gone: flag === "gone" });
|
|
1314
1316
|
}
|
|
@@ -1319,11 +1321,11 @@ function readAllRenames() {
|
|
|
1319
1321
|
function writeAllRenames(renames) {
|
|
1320
1322
|
const file = path16.join(resolveLibraryDir(), RENAMED_FILE);
|
|
1321
1323
|
if (renames.size === 0) {
|
|
1322
|
-
|
|
1324
|
+
fs14.rmSync(file, { force: true });
|
|
1323
1325
|
return;
|
|
1324
1326
|
}
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
+
fs14.mkdirSync(resolveLibraryDir(), { recursive: true });
|
|
1328
|
+
fs14.writeFileSync(
|
|
1327
1329
|
file,
|
|
1328
1330
|
`${[...renames].map(([from, r]) => `${from} ${r.to}${r.gone ? " gone" : ""}`).join("\n")}
|
|
1329
1331
|
`,
|
|
@@ -1907,8 +1909,8 @@ var LibraryManager = class {
|
|
|
1907
1909
|
async removeLibrary(nameOrId, opts = {}) {
|
|
1908
1910
|
const lib = await this.requireLibrary(nameOrId);
|
|
1909
1911
|
await this.lib.removeSource(lib.id);
|
|
1910
|
-
if (opts.purge &&
|
|
1911
|
-
|
|
1912
|
+
if (opts.purge && fs14.existsSync(lib.path)) {
|
|
1913
|
+
fs14.rmSync(lib.path, { recursive: true, force: true });
|
|
1912
1914
|
}
|
|
1913
1915
|
dropLibraryRenamesTo(lib.name);
|
|
1914
1916
|
if (!opts.purge) markLibraryUnregistered(lib);
|
|
@@ -1927,7 +1929,7 @@ var LibraryManager = class {
|
|
|
1927
1929
|
);
|
|
1928
1930
|
if (writableDefault) return { library: writableDefault, created: false };
|
|
1929
1931
|
const personalPath = path16.join(librariesDir, "personal");
|
|
1930
|
-
|
|
1932
|
+
fs14.mkdirSync(personalPath, { recursive: true });
|
|
1931
1933
|
const lib = await this.addLibrary({
|
|
1932
1934
|
name: "personal",
|
|
1933
1935
|
path: personalPath,
|
|
@@ -2118,7 +2120,7 @@ var LocalCatalogSource = class {
|
|
|
2118
2120
|
};
|
|
2119
2121
|
function isReadableDirectory(dir) {
|
|
2120
2122
|
try {
|
|
2121
|
-
|
|
2123
|
+
fs14.readdirSync(dir);
|
|
2122
2124
|
return true;
|
|
2123
2125
|
} catch {
|
|
2124
2126
|
return false;
|
|
@@ -2260,11 +2262,11 @@ var SidecarGit = class {
|
|
|
2260
2262
|
* @docLink packages/library/concepts#sidecar-git
|
|
2261
2263
|
*/
|
|
2262
2264
|
async ensureInitialized() {
|
|
2263
|
-
if (!
|
|
2264
|
-
|
|
2265
|
+
if (!fs14.existsSync(this.rootDir)) {
|
|
2266
|
+
fs14.mkdirSync(this.rootDir, { recursive: true });
|
|
2265
2267
|
}
|
|
2266
2268
|
const gitDir = path16.join(this.rootDir, ".git");
|
|
2267
|
-
const freshRepo = !
|
|
2269
|
+
const freshRepo = !fs14.existsSync(gitDir);
|
|
2268
2270
|
if (freshRepo) {
|
|
2269
2271
|
const init = this.spawn(["init", "-b", "main"]);
|
|
2270
2272
|
if (init.exitCode !== 0) {
|
|
@@ -2272,9 +2274,9 @@ var SidecarGit = class {
|
|
|
2272
2274
|
}
|
|
2273
2275
|
}
|
|
2274
2276
|
const attrsPath = path16.join(this.rootDir, ".gitattributes");
|
|
2275
|
-
if (!
|
|
2277
|
+
if (!fs14.existsSync(attrsPath)) fs14.writeFileSync(attrsPath, GITATTRIBUTES, "utf-8");
|
|
2276
2278
|
const readmePath = path16.join(this.rootDir, "README.md");
|
|
2277
|
-
if (!
|
|
2279
|
+
if (!fs14.existsSync(readmePath)) fs14.writeFileSync(readmePath, ROOT_README, "utf-8");
|
|
2278
2280
|
if (!this.hasGlobalGitConfig("user.name")) {
|
|
2279
2281
|
this.spawn(["config", "user.name", FALLBACK_USER_NAME]);
|
|
2280
2282
|
}
|
|
@@ -2300,7 +2302,7 @@ var SidecarGit = class {
|
|
|
2300
2302
|
async commit(slug, message, opts) {
|
|
2301
2303
|
if (opts?.skip) return;
|
|
2302
2304
|
const slugDir = path16.join(this.rootDir, slug);
|
|
2303
|
-
if (
|
|
2305
|
+
if (fs14.existsSync(slugDir)) {
|
|
2304
2306
|
this.spawn(["add", "--", slug]);
|
|
2305
2307
|
} else {
|
|
2306
2308
|
this.spawn(["add", "-A"]);
|
|
@@ -2361,10 +2363,10 @@ ${result.stderr}`;
|
|
|
2361
2363
|
function migrateWorkspaceConfig(dir, opts) {
|
|
2362
2364
|
const filename = opts?.filename ?? "skaile.yaml";
|
|
2363
2365
|
const filePath = path16.join(dir, filename);
|
|
2364
|
-
if (!
|
|
2366
|
+
if (!fs14.existsSync(filePath)) {
|
|
2365
2367
|
return { migrated: false, version: 1, warnings: ["No skaile.yaml found"] };
|
|
2366
2368
|
}
|
|
2367
|
-
const content =
|
|
2369
|
+
const content = fs14.readFileSync(filePath, "utf-8");
|
|
2368
2370
|
const raw = parse(content);
|
|
2369
2371
|
if (!raw || typeof raw !== "object") {
|
|
2370
2372
|
return { migrated: false, version: 1, warnings: ["Invalid YAML content"] };
|
|
@@ -2396,7 +2398,7 @@ function migrateWorkspaceConfig(dir, opts) {
|
|
|
2396
2398
|
} else {
|
|
2397
2399
|
doc.set("version", 2);
|
|
2398
2400
|
}
|
|
2399
|
-
|
|
2401
|
+
fs14.writeFileSync(filePath, doc.toString(), "utf-8");
|
|
2400
2402
|
}
|
|
2401
2403
|
return {
|
|
2402
2404
|
migrated: !opts?.dryRun,
|
|
@@ -3290,17 +3292,17 @@ var CatalogCache = class {
|
|
|
3290
3292
|
/** Read a cached tarball from disk if present, otherwise `null`. */
|
|
3291
3293
|
readTarball(sha256) {
|
|
3292
3294
|
const p = this.tarballPath(sha256);
|
|
3293
|
-
if (!
|
|
3294
|
-
return
|
|
3295
|
+
if (!fs14.existsSync(p)) return null;
|
|
3296
|
+
return fs14.readFileSync(p);
|
|
3295
3297
|
}
|
|
3296
3298
|
/** Persist a tarball blob to disk (atomic write). */
|
|
3297
3299
|
writeTarball(sha256, bytes) {
|
|
3298
3300
|
const dir = path16.join(this.dir, TARBALL_DIR);
|
|
3299
|
-
if (!
|
|
3301
|
+
if (!fs14.existsSync(dir)) fs14.mkdirSync(dir, { recursive: true });
|
|
3300
3302
|
const finalPath = this.tarballPath(sha256);
|
|
3301
3303
|
const tmpPath = `${finalPath}.${process.pid}.${Math.random().toString(36).slice(2)}.tmp`;
|
|
3302
|
-
|
|
3303
|
-
|
|
3304
|
+
fs14.writeFileSync(tmpPath, bytes);
|
|
3305
|
+
fs14.renameSync(tmpPath, finalPath);
|
|
3304
3306
|
}
|
|
3305
3307
|
// ── public: invalidation ────────────────────────────────────────────────
|
|
3306
3308
|
/**
|
|
@@ -3320,8 +3322,8 @@ var CatalogCache = class {
|
|
|
3320
3322
|
invalidateEverything() {
|
|
3321
3323
|
this.invalidateAll();
|
|
3322
3324
|
const tarballDir = path16.join(this.dir, TARBALL_DIR);
|
|
3323
|
-
if (
|
|
3324
|
-
|
|
3325
|
+
if (fs14.existsSync(tarballDir)) {
|
|
3326
|
+
fs14.rmSync(tarballDir, { recursive: true, force: true });
|
|
3325
3327
|
}
|
|
3326
3328
|
}
|
|
3327
3329
|
/** Return whether `ttlMs` is zero (air-gapped mode). */
|
|
@@ -3330,9 +3332,9 @@ var CatalogCache = class {
|
|
|
3330
3332
|
}
|
|
3331
3333
|
// ── private ─────────────────────────────────────────────────────────────
|
|
3332
3334
|
ensureDir() {
|
|
3333
|
-
if (!
|
|
3335
|
+
if (!fs14.existsSync(this.dir)) fs14.mkdirSync(this.dir, { recursive: true });
|
|
3334
3336
|
const tarballDir = path16.join(this.dir, TARBALL_DIR);
|
|
3335
|
-
if (!
|
|
3337
|
+
if (!fs14.existsSync(tarballDir)) fs14.mkdirSync(tarballDir, { recursive: true });
|
|
3336
3338
|
}
|
|
3337
3339
|
indexPath() {
|
|
3338
3340
|
return path16.join(this.dir, INDEX_FILE);
|
|
@@ -3340,12 +3342,12 @@ var CatalogCache = class {
|
|
|
3340
3342
|
loadIndex() {
|
|
3341
3343
|
if (this.index) return this.index;
|
|
3342
3344
|
const p = this.indexPath();
|
|
3343
|
-
if (!
|
|
3345
|
+
if (!fs14.existsSync(p)) {
|
|
3344
3346
|
this.index = { version: 1, resolve: {}, list: {} };
|
|
3345
3347
|
return this.index;
|
|
3346
3348
|
}
|
|
3347
3349
|
try {
|
|
3348
|
-
const raw = JSON.parse(
|
|
3350
|
+
const raw = JSON.parse(fs14.readFileSync(p, "utf-8"));
|
|
3349
3351
|
if (raw && typeof raw === "object" && raw.version === 1) {
|
|
3350
3352
|
this.index = {
|
|
3351
3353
|
version: 1,
|
|
@@ -3363,8 +3365,8 @@ var CatalogCache = class {
|
|
|
3363
3365
|
this.index = idx;
|
|
3364
3366
|
const p = this.indexPath();
|
|
3365
3367
|
const tmp = `${p}.${process.pid}.${Math.random().toString(36).slice(2)}.tmp`;
|
|
3366
|
-
|
|
3367
|
-
|
|
3368
|
+
fs14.writeFileSync(tmp, JSON.stringify(idx, null, 2), "utf-8");
|
|
3369
|
+
fs14.renameSync(tmp, p);
|
|
3368
3370
|
}
|
|
3369
3371
|
};
|
|
3370
3372
|
function filterKey(filter) {
|
|
@@ -3424,6 +3426,14 @@ function describeCatalogError(err, baseUrl) {
|
|
|
3424
3426
|
const why = cause?.code ?? cause?.message ?? e?.message ?? String(err);
|
|
3425
3427
|
return `cannot reach ${baseUrl} (${why})`;
|
|
3426
3428
|
}
|
|
3429
|
+
var staleNoticed = /* @__PURE__ */ new Set();
|
|
3430
|
+
function staleCatalogNotice(baseUrl, err, ageMs) {
|
|
3431
|
+
if (staleNoticed.has(baseUrl)) return null;
|
|
3432
|
+
staleNoticed.add(baseUrl);
|
|
3433
|
+
const s = Math.max(0, Math.round(ageMs / 1e3));
|
|
3434
|
+
const age = s < 60 ? `${s} s` : s < 3600 ? `${Math.round(s / 60)} min` : s < 86400 ? `${Math.round(s / 3600)} h` : `${Math.round(s / 86400)} d`;
|
|
3435
|
+
return `The store is not reachable (${describeCatalogError(err, baseUrl)}). This answer comes from the cache and is ${age} old.`;
|
|
3436
|
+
}
|
|
3427
3437
|
var DEFAULT_TTL_MS = 864e5;
|
|
3428
3438
|
var RemoteCatalogSource = class {
|
|
3429
3439
|
id;
|
|
@@ -3432,6 +3442,7 @@ var RemoteCatalogSource = class {
|
|
|
3432
3442
|
cacheTtlMs;
|
|
3433
3443
|
httpClient;
|
|
3434
3444
|
silentBackgroundErrors;
|
|
3445
|
+
now;
|
|
3435
3446
|
/** Tracks in-flight background revalidations so callers can `await` them in tests. */
|
|
3436
3447
|
inFlight = /* @__PURE__ */ new Map();
|
|
3437
3448
|
constructor(opts) {
|
|
@@ -3440,6 +3451,7 @@ var RemoteCatalogSource = class {
|
|
|
3440
3451
|
this.cacheTtlMs = opts.cacheTtlMs ?? DEFAULT_TTL_MS;
|
|
3441
3452
|
this.httpClient = opts.httpClient ?? defaultFetch;
|
|
3442
3453
|
this.silentBackgroundErrors = opts.silentBackgroundErrors ?? false;
|
|
3454
|
+
this.now = opts.now ?? Date.now;
|
|
3443
3455
|
this.cache = opts.cache ?? new CatalogCache({
|
|
3444
3456
|
dir: opts.cacheDir,
|
|
3445
3457
|
ttlMs: this.cacheTtlMs,
|
|
@@ -3473,7 +3485,11 @@ var RemoteCatalogSource = class {
|
|
|
3473
3485
|
}
|
|
3474
3486
|
const stale = this.cache.getResolveStale(ref);
|
|
3475
3487
|
if (stale && (stale.value === null || stale.value.requires !== void 0)) {
|
|
3476
|
-
this.scheduleBackground(
|
|
3488
|
+
this.scheduleBackground(
|
|
3489
|
+
`resolve:${ref}`,
|
|
3490
|
+
() => this.fetchAndStoreResolve(ref),
|
|
3491
|
+
stale.fetchedAt
|
|
3492
|
+
);
|
|
3477
3493
|
return cachedAsset(stale.value);
|
|
3478
3494
|
}
|
|
3479
3495
|
try {
|
|
@@ -3565,7 +3581,11 @@ var RemoteCatalogSource = class {
|
|
|
3565
3581
|
const stale = this.cache.getListStale(filter);
|
|
3566
3582
|
if (stale) {
|
|
3567
3583
|
const filterKey2 = JSON.stringify(filter ?? null);
|
|
3568
|
-
this.scheduleBackground(
|
|
3584
|
+
this.scheduleBackground(
|
|
3585
|
+
`list:${filterKey2}`,
|
|
3586
|
+
() => this.fetchAndStoreList(filter),
|
|
3587
|
+
stale.fetchedAt
|
|
3588
|
+
);
|
|
3569
3589
|
return stale.items.map(cachedAsset);
|
|
3570
3590
|
}
|
|
3571
3591
|
try {
|
|
@@ -3774,17 +3794,16 @@ var RemoteCatalogSource = class {
|
|
|
3774
3794
|
await Promise.allSettled(promises);
|
|
3775
3795
|
}
|
|
3776
3796
|
// ── private ─────────────────────────────────────────────────────────────
|
|
3777
|
-
scheduleBackground(key, fn) {
|
|
3797
|
+
scheduleBackground(key, fn, servedFetchedAt) {
|
|
3778
3798
|
if (this.inFlight.has(key)) return;
|
|
3779
3799
|
const p = (async () => {
|
|
3780
3800
|
try {
|
|
3781
3801
|
await fn();
|
|
3782
3802
|
} catch (err) {
|
|
3783
3803
|
if (!this.silentBackgroundErrors) {
|
|
3784
|
-
|
|
3785
|
-
|
|
3786
|
-
`
|
|
3787
|
-
);
|
|
3804
|
+
const line = staleCatalogNotice(this.baseUrl, err, this.now() - servedFetchedAt);
|
|
3805
|
+
if (line) process.stderr.write(`${line}
|
|
3806
|
+
`);
|
|
3788
3807
|
}
|
|
3789
3808
|
} finally {
|
|
3790
3809
|
this.inFlight.delete(key);
|
|
@@ -3986,6 +4005,7 @@ var RestCatalogSource = class {
|
|
|
3986
4005
|
cacheTtlMs;
|
|
3987
4006
|
httpClient;
|
|
3988
4007
|
silentBackgroundErrors;
|
|
4008
|
+
now;
|
|
3989
4009
|
/** Tracks in-flight background revalidations so callers can `await` them in tests. */
|
|
3990
4010
|
inFlight = /* @__PURE__ */ new Map();
|
|
3991
4011
|
constructor(opts) {
|
|
@@ -3994,6 +4014,7 @@ var RestCatalogSource = class {
|
|
|
3994
4014
|
this.cacheTtlMs = opts.cacheTtlMs ?? DEFAULT_TTL_MS2;
|
|
3995
4015
|
this.httpClient = opts.httpClient ?? defaultFetch2;
|
|
3996
4016
|
this.silentBackgroundErrors = opts.silentBackgroundErrors ?? false;
|
|
4017
|
+
this.now = opts.now ?? Date.now;
|
|
3997
4018
|
this.cache = opts.cache ?? new CatalogCache({
|
|
3998
4019
|
dir: opts.cacheDir,
|
|
3999
4020
|
ttlMs: this.cacheTtlMs,
|
|
@@ -4020,7 +4041,11 @@ var RestCatalogSource = class {
|
|
|
4020
4041
|
}
|
|
4021
4042
|
const stale = this.cache.getResolveStale(ref);
|
|
4022
4043
|
if (stale) {
|
|
4023
|
-
this.scheduleBackground(
|
|
4044
|
+
this.scheduleBackground(
|
|
4045
|
+
`resolve:${ref}`,
|
|
4046
|
+
() => this.fetchAndStoreResolve(ref),
|
|
4047
|
+
stale.fetchedAt
|
|
4048
|
+
);
|
|
4024
4049
|
return stale.value;
|
|
4025
4050
|
}
|
|
4026
4051
|
return this.fetchAndStoreResolve(ref);
|
|
@@ -4046,7 +4071,11 @@ var RestCatalogSource = class {
|
|
|
4046
4071
|
const stale = this.cache.getListStale(filter);
|
|
4047
4072
|
if (stale) {
|
|
4048
4073
|
const filterKey2 = JSON.stringify(filter ?? null);
|
|
4049
|
-
this.scheduleBackground(
|
|
4074
|
+
this.scheduleBackground(
|
|
4075
|
+
`list:${filterKey2}`,
|
|
4076
|
+
() => this.fetchAndStoreList(filter),
|
|
4077
|
+
stale.fetchedAt
|
|
4078
|
+
);
|
|
4050
4079
|
return stale.items;
|
|
4051
4080
|
}
|
|
4052
4081
|
return this.fetchAndStoreList(filter);
|
|
@@ -4186,17 +4215,16 @@ var RestCatalogSource = class {
|
|
|
4186
4215
|
await Promise.allSettled(promises);
|
|
4187
4216
|
}
|
|
4188
4217
|
// ── private ─────────────────────────────────────────────────────────────
|
|
4189
|
-
scheduleBackground(key, fn) {
|
|
4218
|
+
scheduleBackground(key, fn, servedFetchedAt) {
|
|
4190
4219
|
if (this.inFlight.has(key)) return;
|
|
4191
4220
|
const p = (async () => {
|
|
4192
4221
|
try {
|
|
4193
4222
|
await fn();
|
|
4194
4223
|
} catch (err) {
|
|
4195
4224
|
if (!this.silentBackgroundErrors) {
|
|
4196
|
-
|
|
4197
|
-
|
|
4198
|
-
`
|
|
4199
|
-
);
|
|
4225
|
+
const line = staleCatalogNotice(this.baseUrl, err, this.now() - servedFetchedAt);
|
|
4226
|
+
if (line) process.stderr.write(`${line}
|
|
4227
|
+
`);
|
|
4200
4228
|
}
|
|
4201
4229
|
} finally {
|
|
4202
4230
|
this.inFlight.delete(key);
|
|
@@ -4359,15 +4387,15 @@ function discoveredToAssetEntry(asset, repoPublisher, inheritPublisher) {
|
|
|
4359
4387
|
}
|
|
4360
4388
|
function writeCuratedManifest(input) {
|
|
4361
4389
|
const manifestPath = input.manifestFile;
|
|
4362
|
-
if (
|
|
4390
|
+
if (fs14.existsSync(manifestPath) && !input.force) {
|
|
4363
4391
|
return { wrote: false, manifestPath, assetCount: 0 };
|
|
4364
4392
|
}
|
|
4365
4393
|
const publisher = input.publisher.startsWith("@") ? input.publisher.slice(1) : input.publisher;
|
|
4366
4394
|
const inheritPublisher = input.inheritPublisher ?? false;
|
|
4367
4395
|
const assets = input.assets.map((a) => discoveredToAssetEntry(a, publisher, inheritPublisher)).sort((a, b) => `${a.kind}:${a.name}`.localeCompare(`${b.kind}:${b.name}`));
|
|
4368
4396
|
const manifest = { publisher, assets };
|
|
4369
|
-
|
|
4370
|
-
|
|
4397
|
+
fs14.mkdirSync(path16.dirname(manifestPath), { recursive: true });
|
|
4398
|
+
fs14.writeFileSync(manifestPath, encodeSkaileManifest(manifest), "utf-8");
|
|
4371
4399
|
return { wrote: true, manifestPath, assetCount: assets.length };
|
|
4372
4400
|
}
|
|
4373
4401
|
function filesEntryPaths(libraryPath, entry) {
|
|
@@ -4378,11 +4406,104 @@ function filesEntryPaths(libraryPath, entry) {
|
|
|
4378
4406
|
return expandManifestFiles(libraryPath, patterns).files;
|
|
4379
4407
|
}
|
|
4380
4408
|
var DEFAULT_ASSET_VERSION = "0.1.0";
|
|
4409
|
+
var MANIFEST_LOCK_WAIT_MS = 2e4;
|
|
4410
|
+
var MANIFEST_LOCK_STALE_MS = 1e4;
|
|
4411
|
+
function sleepSync(ms) {
|
|
4412
|
+
Atomics.wait(new Int32Array(new SharedArrayBuffer(4)), 0, 0, ms);
|
|
4413
|
+
}
|
|
4414
|
+
function manifestLockFile(libraryPath) {
|
|
4415
|
+
const dir = path16.resolve(libraryPath);
|
|
4416
|
+
fs14.mkdirSync(dir, { recursive: true });
|
|
4417
|
+
const id = createHash("sha256").update(fs14.realpathSync(dir)).digest("hex").slice(0, 24);
|
|
4418
|
+
const lockDir = path16.join(os.tmpdir(), "skaile-manifest-locks");
|
|
4419
|
+
fs14.mkdirSync(lockDir, { recursive: true });
|
|
4420
|
+
return path16.join(lockDir, `${id}.lock`);
|
|
4421
|
+
}
|
|
4422
|
+
function manifestLockIsStale(lockFile) {
|
|
4423
|
+
try {
|
|
4424
|
+
const stat = fs14.statSync(lockFile);
|
|
4425
|
+
if (Date.now() - stat.mtimeMs > MANIFEST_LOCK_STALE_MS) return true;
|
|
4426
|
+
const pid = Number.parseInt(fs14.readFileSync(lockFile, "utf8"), 10);
|
|
4427
|
+
if (!Number.isInteger(pid) || pid <= 0) return false;
|
|
4428
|
+
try {
|
|
4429
|
+
process.kill(pid, 0);
|
|
4430
|
+
} catch (err) {
|
|
4431
|
+
return err.code === "ESRCH";
|
|
4432
|
+
}
|
|
4433
|
+
return false;
|
|
4434
|
+
} catch {
|
|
4435
|
+
return false;
|
|
4436
|
+
}
|
|
4437
|
+
}
|
|
4438
|
+
function takeOverStaleLock(lockFile) {
|
|
4439
|
+
let seen;
|
|
4440
|
+
try {
|
|
4441
|
+
seen = fs14.readFileSync(lockFile, "utf8");
|
|
4442
|
+
} catch {
|
|
4443
|
+
return false;
|
|
4444
|
+
}
|
|
4445
|
+
if (!manifestLockIsStale(lockFile)) return false;
|
|
4446
|
+
const moved = `${lockFile}.stale.${process.pid}.${randomBytes(6).toString("hex")}`;
|
|
4447
|
+
try {
|
|
4448
|
+
fs14.renameSync(lockFile, moved);
|
|
4449
|
+
} catch {
|
|
4450
|
+
return false;
|
|
4451
|
+
}
|
|
4452
|
+
let held;
|
|
4453
|
+
try {
|
|
4454
|
+
held = fs14.readFileSync(moved, "utf8");
|
|
4455
|
+
} catch {
|
|
4456
|
+
return false;
|
|
4457
|
+
}
|
|
4458
|
+
if (held === seen) {
|
|
4459
|
+
fs14.rmSync(moved, { force: true });
|
|
4460
|
+
return true;
|
|
4461
|
+
}
|
|
4462
|
+
try {
|
|
4463
|
+
fs14.linkSync(moved, lockFile);
|
|
4464
|
+
} catch {
|
|
4465
|
+
}
|
|
4466
|
+
fs14.rmSync(moved, { force: true });
|
|
4467
|
+
return false;
|
|
4468
|
+
}
|
|
4469
|
+
function withManifestLock(libraryPath, fn) {
|
|
4470
|
+
const lockFile = manifestLockFile(libraryPath);
|
|
4471
|
+
const token = `${process.pid}:${randomBytes(8).toString("hex")}`;
|
|
4472
|
+
const deadline = Date.now() + MANIFEST_LOCK_WAIT_MS;
|
|
4473
|
+
for (; ; ) {
|
|
4474
|
+
try {
|
|
4475
|
+
const fd = fs14.openSync(lockFile, "wx");
|
|
4476
|
+
try {
|
|
4477
|
+
fs14.writeSync(fd, token);
|
|
4478
|
+
} finally {
|
|
4479
|
+
fs14.closeSync(fd);
|
|
4480
|
+
}
|
|
4481
|
+
break;
|
|
4482
|
+
} catch (err) {
|
|
4483
|
+
if (err.code !== "EEXIST") throw err;
|
|
4484
|
+
if (takeOverStaleLock(lockFile)) continue;
|
|
4485
|
+
if (Date.now() > deadline) {
|
|
4486
|
+
throw new Error(
|
|
4487
|
+
`${SKAILE_MANIFEST_FILENAME} of ${path16.resolve(libraryPath)} is being written by another skaile process; retry in a moment.`
|
|
4488
|
+
);
|
|
4489
|
+
}
|
|
4490
|
+
sleepSync(5 + Math.floor(Math.random() * 20));
|
|
4491
|
+
}
|
|
4492
|
+
}
|
|
4493
|
+
try {
|
|
4494
|
+
return fn();
|
|
4495
|
+
} finally {
|
|
4496
|
+
try {
|
|
4497
|
+
if (fs14.readFileSync(lockFile, "utf8") === token) fs14.rmSync(lockFile, { force: true });
|
|
4498
|
+
} catch {
|
|
4499
|
+
}
|
|
4500
|
+
}
|
|
4501
|
+
}
|
|
4381
4502
|
function openManifest(libraryPath) {
|
|
4382
4503
|
const dir = path16.resolve(libraryPath);
|
|
4383
4504
|
const file = path16.join(dir, SKAILE_MANIFEST_FILENAME);
|
|
4384
|
-
if (!
|
|
4385
|
-
|
|
4505
|
+
if (!fs14.existsSync(file)) {
|
|
4506
|
+
fs14.mkdirSync(dir, { recursive: true });
|
|
4386
4507
|
return { editor: ManifestYamlEditor.create(file), created: true };
|
|
4387
4508
|
}
|
|
4388
4509
|
const editor = ManifestYamlEditor.load(file);
|
|
@@ -4392,14 +4513,14 @@ function openManifest(libraryPath) {
|
|
|
4392
4513
|
}
|
|
4393
4514
|
function assertManifestEditable(libraryPath) {
|
|
4394
4515
|
const file = path16.join(path16.resolve(libraryPath), SKAILE_MANIFEST_FILENAME);
|
|
4395
|
-
if (!
|
|
4516
|
+
if (!fs14.existsSync(file)) return;
|
|
4396
4517
|
openManifest(libraryPath);
|
|
4397
4518
|
}
|
|
4398
4519
|
function assetRootProblem(libraryPath, root) {
|
|
4399
4520
|
const libDir = path16.resolve(libraryPath);
|
|
4400
4521
|
let realLib;
|
|
4401
4522
|
try {
|
|
4402
|
-
realLib =
|
|
4523
|
+
realLib = fs14.realpathSync(libDir);
|
|
4403
4524
|
} catch {
|
|
4404
4525
|
return void 0;
|
|
4405
4526
|
}
|
|
@@ -4418,12 +4539,12 @@ function assetRootProblem(libraryPath, root) {
|
|
|
4418
4539
|
walked.push(part);
|
|
4419
4540
|
let stat;
|
|
4420
4541
|
try {
|
|
4421
|
-
stat =
|
|
4542
|
+
stat = fs14.lstatSync(current);
|
|
4422
4543
|
} catch {
|
|
4423
4544
|
return void 0;
|
|
4424
4545
|
}
|
|
4425
4546
|
if (stat.isSymbolicLink()) {
|
|
4426
|
-
return librarySymlinkMessage({ path: walked.join("/"), target:
|
|
4547
|
+
return librarySymlinkMessage({ path: walked.join("/"), target: fs14.readlinkSync(current) });
|
|
4427
4548
|
}
|
|
4428
4549
|
}
|
|
4429
4550
|
return void 0;
|
|
@@ -4438,80 +4559,92 @@ function existingRootConflict(libraryPath, existing, root) {
|
|
|
4438
4559
|
if (!existing?.root || existing.source) return void 0;
|
|
4439
4560
|
const existingAbs = path16.resolve(libraryPath, existing.root);
|
|
4440
4561
|
if (existingAbs === path16.resolve(libraryPath, root)) return void 0;
|
|
4441
|
-
const stat =
|
|
4562
|
+
const stat = fs14.statSync(existingAbs, { throwIfNoEntry: false });
|
|
4442
4563
|
return stat?.isDirectory() ? existing.root : void 0;
|
|
4443
4564
|
}
|
|
4444
4565
|
function upsertManifestAsset(libraryPath, input) {
|
|
4445
4566
|
if (input.root.split(/[\\/]+/).includes("..")) {
|
|
4446
4567
|
throw new Error(`Asset root "${input.root}" must stay inside the library (no "..").`);
|
|
4447
4568
|
}
|
|
4448
|
-
|
|
4449
|
-
|
|
4450
|
-
|
|
4451
|
-
|
|
4452
|
-
|
|
4453
|
-
|
|
4454
|
-
|
|
4455
|
-
|
|
4456
|
-
|
|
4457
|
-
|
|
4458
|
-
|
|
4459
|
-
|
|
4460
|
-
|
|
4461
|
-
|
|
4462
|
-
|
|
4463
|
-
|
|
4464
|
-
|
|
4465
|
-
|
|
4466
|
-
|
|
4467
|
-
|
|
4468
|
-
|
|
4469
|
-
|
|
4470
|
-
|
|
4471
|
-
|
|
4569
|
+
return withManifestLock(libraryPath, () => {
|
|
4570
|
+
const { editor } = openManifest(libraryPath);
|
|
4571
|
+
const declared = editor.getPublisher();
|
|
4572
|
+
const topLevel = declared === void 0 ? void 0 : barePublisher(declared);
|
|
4573
|
+
const overridesTopLevel = !!input.publisher && input.publisher !== topLevel;
|
|
4574
|
+
const entry = { kind: input.kind, name: input.name, root: input.root };
|
|
4575
|
+
if (input.version) entry.version = input.version;
|
|
4576
|
+
if (overridesTopLevel) entry.publisher = input.publisher;
|
|
4577
|
+
if (input.description) entry.description = input.description;
|
|
4578
|
+
if (input.keywords && input.keywords.length > 0) entry.keywords = input.keywords;
|
|
4579
|
+
const existing = editor.getAssets().find((a) => a.kind === input.kind && a.name === input.name);
|
|
4580
|
+
const conflict = existingRootConflict(libraryPath, existing, input.root);
|
|
4581
|
+
if (conflict) {
|
|
4582
|
+
throw new Error(
|
|
4583
|
+
`${input.kind}:${input.name} is already registered at "${conflict}" \u2014 "${input.root}" would re-point it and orphan the first asset. Remove or rename one of them.`
|
|
4584
|
+
);
|
|
4585
|
+
}
|
|
4586
|
+
const next = existing ? { ...existing, ...entry } : entry;
|
|
4587
|
+
if (existing?.files && !existing.root && !existing.source) delete next.root;
|
|
4588
|
+
if (existing && input.publisher && !overridesTopLevel) delete next.publisher;
|
|
4589
|
+
if (!existing || !isDeepStrictEqual(existing, next)) {
|
|
4590
|
+
editor.setAsset(next);
|
|
4591
|
+
editor.save();
|
|
4592
|
+
}
|
|
4593
|
+
return { manifestPath: editor.path, added: !existing };
|
|
4594
|
+
});
|
|
4472
4595
|
}
|
|
4473
4596
|
function missingRootAssets(libraryPath, manifest) {
|
|
4474
4597
|
return (manifest.assets ?? []).filter((a) => {
|
|
4475
4598
|
if (a.source || manifest.source || !a.root) return false;
|
|
4476
4599
|
const dir = path16.resolve(libraryPath, a.root);
|
|
4477
|
-
return !(
|
|
4600
|
+
return !(fs14.existsSync(dir) && fs14.statSync(dir).isDirectory());
|
|
4478
4601
|
});
|
|
4479
4602
|
}
|
|
4480
4603
|
function pruneMissingRootAssets(libraryPath) {
|
|
4481
4604
|
const manifest = loadSkPublishManifest(libraryPath);
|
|
4482
|
-
if (!manifest) return [];
|
|
4483
|
-
|
|
4484
|
-
|
|
4485
|
-
|
|
4486
|
-
|
|
4487
|
-
|
|
4488
|
-
|
|
4605
|
+
if (!manifest || missingRootAssets(libraryPath, manifest).length === 0) return [];
|
|
4606
|
+
return withManifestLock(libraryPath, () => {
|
|
4607
|
+
const current = loadSkPublishManifest(libraryPath);
|
|
4608
|
+
const missing = current ? missingRootAssets(libraryPath, current) : [];
|
|
4609
|
+
if (missing.length === 0) return [];
|
|
4610
|
+
const { editor } = openManifest(libraryPath);
|
|
4611
|
+
const removed = missing.filter((a) => editor.removeAsset(a.kind, a.name));
|
|
4612
|
+
if (removed.length > 0) editor.save();
|
|
4613
|
+
return removed;
|
|
4614
|
+
});
|
|
4489
4615
|
}
|
|
4490
4616
|
function pruneUnknownKindAssets(libraryPath, knownKinds) {
|
|
4617
|
+
const unknownOf = (manifest2) => (manifest2.assets ?? []).filter((a) => !knownKinds.has(a.kind));
|
|
4491
4618
|
const manifest = loadSkPublishManifest(libraryPath);
|
|
4492
|
-
if (!manifest) return [];
|
|
4493
|
-
|
|
4494
|
-
|
|
4495
|
-
|
|
4496
|
-
|
|
4497
|
-
|
|
4498
|
-
|
|
4619
|
+
if (!manifest || unknownOf(manifest).length === 0) return [];
|
|
4620
|
+
return withManifestLock(libraryPath, () => {
|
|
4621
|
+
const unknown = unknownOf(loadSkPublishManifest(libraryPath) ?? {});
|
|
4622
|
+
if (unknown.length === 0) return [];
|
|
4623
|
+
const { editor } = openManifest(libraryPath);
|
|
4624
|
+
const removed = unknown.filter((a) => editor.removeAsset(a.kind, a.name));
|
|
4625
|
+
if (removed.length > 0) editor.save();
|
|
4626
|
+
return removed;
|
|
4627
|
+
});
|
|
4499
4628
|
}
|
|
4500
4629
|
function stampManifestPublisher(libraryPath, publisher) {
|
|
4501
|
-
|
|
4502
|
-
|
|
4503
|
-
|
|
4504
|
-
|
|
4505
|
-
|
|
4506
|
-
|
|
4630
|
+
return withManifestLock(libraryPath, () => {
|
|
4631
|
+
const { editor, created } = openManifest(libraryPath);
|
|
4632
|
+
if (editor.getPublisher()) return false;
|
|
4633
|
+
editor.setPublisher(publisher);
|
|
4634
|
+
if (created) editor.ensureAssets();
|
|
4635
|
+
editor.save();
|
|
4636
|
+
return true;
|
|
4637
|
+
});
|
|
4507
4638
|
}
|
|
4508
4639
|
function setManifestPublisher(libraryPath, publisher) {
|
|
4509
|
-
|
|
4510
|
-
|
|
4511
|
-
|
|
4512
|
-
|
|
4513
|
-
|
|
4514
|
-
|
|
4640
|
+
return withManifestLock(libraryPath, () => {
|
|
4641
|
+
const { editor, created } = openManifest(libraryPath);
|
|
4642
|
+
if (editor.getPublisher() === publisher) return false;
|
|
4643
|
+
editor.setPublisher(publisher);
|
|
4644
|
+
if (created) editor.ensureAssets();
|
|
4645
|
+
editor.save();
|
|
4646
|
+
return true;
|
|
4647
|
+
});
|
|
4515
4648
|
}
|
|
4516
4649
|
function reconcileEntryNames(libraryPath, scanned, refused) {
|
|
4517
4650
|
const renamed = [];
|
|
@@ -4536,7 +4669,7 @@ function reconcileEntryNames(libraryPath, scanned, refused) {
|
|
|
4536
4669
|
);
|
|
4537
4670
|
if (renamedAway) {
|
|
4538
4671
|
superseded.push(entry);
|
|
4539
|
-
edits.push((
|
|
4672
|
+
edits.push((editor) => editor.removeAsset(entry.kind, entry.name));
|
|
4540
4673
|
}
|
|
4541
4674
|
continue;
|
|
4542
4675
|
}
|
|
@@ -4545,16 +4678,18 @@ function reconcileEntryNames(libraryPath, scanned, refused) {
|
|
|
4545
4678
|
if (target) {
|
|
4546
4679
|
listed.add(`${target.kind}:${target.name}`);
|
|
4547
4680
|
renamed.push({ from: entry, to: target.name });
|
|
4548
|
-
edits.push((
|
|
4681
|
+
edits.push((editor) => editor.renameAsset(entry.kind, entry.name, target.name));
|
|
4549
4682
|
} else if (free.length === 0) {
|
|
4550
4683
|
superseded.push(entry);
|
|
4551
|
-
edits.push((
|
|
4684
|
+
edits.push((editor) => editor.removeAsset(entry.kind, entry.name));
|
|
4552
4685
|
}
|
|
4553
4686
|
}
|
|
4554
4687
|
if (edits.length === 0) return { renamed, superseded };
|
|
4555
|
-
|
|
4556
|
-
|
|
4557
|
-
|
|
4688
|
+
withManifestLock(libraryPath, () => {
|
|
4689
|
+
const { editor } = openManifest(libraryPath);
|
|
4690
|
+
for (const edit of edits) edit(editor);
|
|
4691
|
+
editor.save();
|
|
4692
|
+
});
|
|
4558
4693
|
return { renamed, superseded };
|
|
4559
4694
|
}
|
|
4560
4695
|
async function syncManifestWithDisk(libraryPath, defaultPublisher, registry, opts = {}) {
|
|
@@ -4719,14 +4854,14 @@ async function unparsableAssetFiles(libraryPath, registry) {
|
|
|
4719
4854
|
}
|
|
4720
4855
|
function isParsable(file) {
|
|
4721
4856
|
try {
|
|
4722
|
-
return parseManifestFile(file,
|
|
4857
|
+
return parseManifestFile(file, fs14.readFileSync(file, "utf-8")).ok;
|
|
4723
4858
|
} catch {
|
|
4724
4859
|
return false;
|
|
4725
4860
|
}
|
|
4726
4861
|
}
|
|
4727
4862
|
function parseFailureOf(file) {
|
|
4728
4863
|
try {
|
|
4729
|
-
const res = parseManifestFile(file,
|
|
4864
|
+
const res = parseManifestFile(file, fs14.readFileSync(file, "utf-8"));
|
|
4730
4865
|
return res.ok ? void 0 : res.reason;
|
|
4731
4866
|
} catch (err) {
|
|
4732
4867
|
return err instanceof Error ? err.message : String(err);
|
|
@@ -4734,7 +4869,7 @@ function parseFailureOf(file) {
|
|
|
4734
4869
|
}
|
|
4735
4870
|
function declaresInvalidName(file, kind) {
|
|
4736
4871
|
try {
|
|
4737
|
-
const res = parseManifestFile(file,
|
|
4872
|
+
const res = parseManifestFile(file, fs14.readFileSync(file, "utf-8"));
|
|
4738
4873
|
if (!res.ok) return false;
|
|
4739
4874
|
const declared = kind === "flow" ? res.data.id : res.data.name;
|
|
4740
4875
|
if (declared === void 0 || declared === null || declared === "") return false;
|
|
@@ -4796,8 +4931,8 @@ function parseWorkspaceV2(raw) {
|
|
|
4796
4931
|
}
|
|
4797
4932
|
function loadWorkspaceV2(dir, filename = "skaile.yaml") {
|
|
4798
4933
|
const filePath = path16.join(dir, filename);
|
|
4799
|
-
if (!
|
|
4800
|
-
const content =
|
|
4934
|
+
if (!fs14.existsSync(filePath)) return null;
|
|
4935
|
+
const content = fs14.readFileSync(filePath, "utf-8");
|
|
4801
4936
|
const raw = parse(content);
|
|
4802
4937
|
if (!raw || typeof raw !== "object") return null;
|
|
4803
4938
|
return parseWorkspaceV2(raw);
|
|
@@ -4805,23 +4940,23 @@ function loadWorkspaceV2(dir, filename = "skaile.yaml") {
|
|
|
4805
4940
|
function saveWorkspaceV2(dir, v2, filename = "skaile.yaml") {
|
|
4806
4941
|
const filePath = path16.join(dir, filename);
|
|
4807
4942
|
let existing = {};
|
|
4808
|
-
if (
|
|
4809
|
-
const content =
|
|
4943
|
+
if (fs14.existsSync(filePath)) {
|
|
4944
|
+
const content = fs14.readFileSync(filePath, "utf-8");
|
|
4810
4945
|
existing = parse(content) ?? {};
|
|
4811
4946
|
}
|
|
4812
4947
|
existing.version = 2;
|
|
4813
4948
|
if (v2.library !== void 0) existing.library = v2.library;
|
|
4814
4949
|
if (v2.presets_applied !== void 0) existing.presets_applied = v2.presets_applied;
|
|
4815
|
-
if (!
|
|
4816
|
-
|
|
4950
|
+
if (!fs14.existsSync(dir)) {
|
|
4951
|
+
fs14.mkdirSync(dir, { recursive: true });
|
|
4817
4952
|
}
|
|
4818
|
-
|
|
4953
|
+
fs14.writeFileSync(filePath, stringify(existing, { indent: 2 }), "utf-8");
|
|
4819
4954
|
}
|
|
4820
4955
|
var LOCK_FILENAME = "skaile.lock.yaml";
|
|
4821
4956
|
function loadLockFile(dir) {
|
|
4822
4957
|
const filePath = path16.join(dir, LOCK_FILENAME);
|
|
4823
|
-
if (!
|
|
4824
|
-
const content =
|
|
4958
|
+
if (!fs14.existsSync(filePath)) return null;
|
|
4959
|
+
const content = fs14.readFileSync(filePath, "utf-8");
|
|
4825
4960
|
const raw = parse(content);
|
|
4826
4961
|
if (raw !== null && !("assignments" in raw) && "subscriptions" in raw) {
|
|
4827
4962
|
const legacySubs = raw.subscriptions;
|
|
@@ -4838,10 +4973,10 @@ function loadLockFile(dir) {
|
|
|
4838
4973
|
}
|
|
4839
4974
|
function saveLockFile(dir, lock) {
|
|
4840
4975
|
const filePath = path16.join(dir, LOCK_FILENAME);
|
|
4841
|
-
if (!
|
|
4842
|
-
|
|
4976
|
+
if (!fs14.existsSync(dir)) {
|
|
4977
|
+
fs14.mkdirSync(dir, { recursive: true });
|
|
4843
4978
|
}
|
|
4844
|
-
|
|
4979
|
+
fs14.writeFileSync(
|
|
4845
4980
|
filePath,
|
|
4846
4981
|
`# Auto-generated by skaile. Do not edit manually.
|
|
4847
4982
|
${stringify(lock, { indent: 2 })}`,
|
|
@@ -4859,13 +4994,13 @@ function createEmptyLockFile() {
|
|
|
4859
4994
|
}
|
|
4860
4995
|
function detectWorkspaceVersion(dir, filename = "skaile.yaml") {
|
|
4861
4996
|
const filePath = path16.join(dir, filename);
|
|
4862
|
-
if (!
|
|
4863
|
-
const content =
|
|
4997
|
+
if (!fs14.existsSync(filePath)) return null;
|
|
4998
|
+
const content = fs14.readFileSync(filePath, "utf-8");
|
|
4864
4999
|
const raw = parse(content);
|
|
4865
5000
|
if (!raw || typeof raw !== "object") return null;
|
|
4866
5001
|
return raw.version === 2 ? 2 : 1;
|
|
4867
5002
|
}
|
|
4868
5003
|
|
|
4869
5004
|
export { AssignmentNotFoundError, CatalogCache, CatalogConfigSchema, CatalogHttpError, DuplicateAssignmentError, DuplicateLibraryNameError, GitSyncDriver, InstanceHasConsumersError, InstanceNotFoundError, InterpolationError, KnowledgeManifestSchema, LIBRARY_BACKENDS, LIBRARY_OWNERSHIPS, LOCAL_CATALOG_URL, LibraryConfigSchema, LibraryError, LibraryInstanceRefSchema, LibraryManager, LibrarySectionSchema, LibrarySyncError, LocalCatalogSource, LocalIndex, LocalSyncDriver, LockAssignmentSchema, LockFileSchema, OfflineError, OperationNotPermittedError, PIN_POLICIES, PinPolicySchema, PresetAppliedSchema, PresetExpandedSchema, RemoteCatalogSource, RequiresEdgeSchema, RestCatalogSource, SidecarGit, SkaileConfigSchema, SourceNotFoundError, TarballHashMismatchError, UNLISTED_SCAN_SKIP_DIRS, UserLibraryNotFoundError, WorkspaceConfigV2Schema, applyNonStructuralUpgrade, applyPreset, applyPresetFromData, assertManifestEditable, assertValidLibraryName, assetRootProblem, classifyRef, cloneOrInitGitRepo, commitStoreManifest, conflictingAssetRoot, createEmptyLockFile, curatedManifestOverlay, deriveSlug, describeCatalogError, detectChanges, detectNestedPresetRefs, detectWorkspaceVersion, ensureGitRepo, evaluateUpgrade, extractLibraryInstanceId, extractReferencedKeys, filesEntryPaths, filterKey, getConfigDefaults, getDefaultValue, getSidecarRoot, getStoreManifestsDir, getStoreRoot, hasInterpolationTokens, installLibraryAsset, interpolate, isGitRepo, isLocalCatalogUrl, isSecretPlaceholder, knowledgeKindProvider, lastLibraryName, libraryDirMissing, listSidecarSlugsOnDisk, loadLockFile, loadWorkspaceV2, markLibraryUnregistered, migrateSidecarsToStoreIfNeeded, migrateWorkspaceConfig, missingLibraryDirMessage, missingRootAssets, parsePreset, parsePresetYaml, parseWorkspaceV2, projectConfigPath, pruneMissingRootAssets, queryInstancePickerChoices, recordLibraryRename, renamedLibraryName, resolveAllItems, resolveConfig, resolveIndexPath, resolveItem, resolvePin, resolveSidecarPaths, saveConfig, saveLockFile, saveWorkspaceV2, scanAuthoringLibraries, scanLibraryRoot, scanUnlistedAssets, setManifestPublisher, setOriginUrl, sha256Hex, stampManifestPublisher, storeManifestFile, storeSecrets, syncManifestWithDisk, trackOriginBranch, trpcGetUrl, unparsableAssetFiles, unregisteredLibraryNames, upsertManifestAsset, validateAllPlaceholders, validateKnowledge, validateNestingDepth, validatePlaceholder, writeCuratedManifest };
|
|
4870
|
-
//# sourceMappingURL=chunk-
|
|
4871
|
-
//# sourceMappingURL=chunk-
|
|
5005
|
+
//# sourceMappingURL=chunk-MMOWIRHP.js.map
|
|
5006
|
+
//# sourceMappingURL=chunk-MMOWIRHP.js.map
|