@skaile/workspaces 5.10.0 → 5.12.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 +146 -0
- package/README.md +14 -2
- package/dist/{asset-feeds-ELEBTNUS.js → asset-feeds-AM6PSSGM.js} +24 -21
- package/dist/asset-feeds-AM6PSSGM.js.map +1 -0
- package/dist/asset-manager/catalog-deployer.js +8 -8
- package/dist/asset-manager/fragments.js +1 -1
- package/dist/asset-manager/index.js +16 -16
- package/dist/asset-manager/installer.js +11 -11
- package/dist/asset-manager/renderers.js +9 -9
- package/dist/asset-manager/src/fragments.d.ts +5 -0
- package/dist/asset-manager/src/fragments.d.ts.map +1 -1
- package/dist/asset-manager/src/index.d.ts +197 -11
- package/dist/asset-manager/src/index.d.ts.map +1 -1
- package/dist/asset-manager/src/install-agent.d.ts +9 -1
- package/dist/asset-manager/src/install-agent.d.ts.map +1 -1
- package/dist/asset-manager/src/install-instances.d.ts.map +1 -1
- package/dist/asset-manager/src/installer.d.ts +33 -3
- package/dist/asset-manager/src/installer.d.ts.map +1 -1
- package/dist/asset-manager/src/renderers.d.ts +5 -0
- package/dist/asset-manager/src/renderers.d.ts.map +1 -1
- package/dist/bridge/drivers/claude-sdk.js +16 -13
- package/dist/bridge/drivers/claude-sdk.js.map +1 -1
- package/dist/bridge/drivers/codex.js +43 -16
- package/dist/bridge/drivers/codex.js.map +1 -1
- package/dist/bridge/drivers/continue.js +10 -10
- package/dist/bridge/drivers/echo.js +2 -2
- package/dist/bridge/drivers/gemini.js +7 -7
- package/dist/bridge/drivers/goose.js +10 -10
- package/dist/bridge/drivers/omp.js +52 -9
- package/dist/bridge/drivers/omp.js.map +1 -1
- package/dist/bridge/drivers/opencode.js +10 -10
- package/dist/bridge/drivers/qwen.js +7 -7
- package/dist/bridge/index.js +12 -12
- package/dist/bridge/src/codex/config-toml.d.ts +8 -3
- package/dist/bridge/src/codex/config-toml.d.ts.map +1 -1
- package/dist/bridge/src/codex/managed-driver.d.ts.map +1 -1
- package/dist/bridge/src/drivers/claude-sdk.d.ts +1 -1
- package/dist/bridge/src/drivers/claude-sdk.d.ts.map +1 -1
- package/dist/bridge/src/drivers/codex.d.ts.map +1 -1
- package/dist/bridge/src/drivers/omp-models-yml.d.ts.map +1 -1
- package/dist/bridge/src/drivers/omp.d.ts +9 -0
- package/dist/bridge/src/drivers/omp.d.ts.map +1 -1
- package/dist/bridge/src/provider-materialize/credential-env.d.ts +15 -0
- package/dist/bridge/src/provider-materialize/credential-env.d.ts.map +1 -1
- package/dist/{chunk-7CR6HT2X.js → chunk-27L6BBAT.js} +9 -9
- package/dist/{chunk-7CR6HT2X.js.map → chunk-27L6BBAT.js.map} +1 -1
- package/dist/{chunk-QG3HOJEK.js → chunk-2JFIFDDO.js} +3 -3
- package/dist/{chunk-QG3HOJEK.js.map → chunk-2JFIFDDO.js.map} +1 -1
- package/dist/{chunk-IJHH4DSW.js → chunk-2X3JBVGD.js} +11 -10
- package/dist/chunk-2X3JBVGD.js.map +1 -0
- package/dist/{chunk-G54USEUP.js → chunk-3HUV2LJF.js} +4 -4
- package/dist/{chunk-G54USEUP.js.map → chunk-3HUV2LJF.js.map} +1 -1
- package/dist/{chunk-JFXQEVLF.js → chunk-3LVB3HGH.js} +3 -3
- package/dist/{chunk-JFXQEVLF.js.map → chunk-3LVB3HGH.js.map} +1 -1
- package/dist/{chunk-32XKCNCL.js → chunk-6VLHITAM.js} +146 -4
- package/dist/chunk-6VLHITAM.js.map +1 -0
- package/dist/{chunk-GEWAIQZ5.js → chunk-7CR2OZPA.js} +10 -12
- package/dist/chunk-7CR2OZPA.js.map +1 -0
- package/dist/{chunk-6HHE63CO.js → chunk-7QWQTA5S.js} +89 -12
- package/dist/chunk-7QWQTA5S.js.map +1 -0
- package/dist/{chunk-7I5VRVDP.js → chunk-7XWUJC3A.js} +4 -4
- package/dist/{chunk-7I5VRVDP.js.map → chunk-7XWUJC3A.js.map} +1 -1
- package/dist/{chunk-3BEY4WK3.js → chunk-C3BMXXTN.js} +203 -31
- package/dist/chunk-C3BMXXTN.js.map +1 -0
- package/dist/{chunk-IXWODEED.js → chunk-CTP3XBMF.js} +47 -8
- package/dist/chunk-CTP3XBMF.js.map +1 -0
- package/dist/{chunk-HOHUEKES.js → chunk-DCHQ6BAZ.js} +3 -3
- package/dist/{chunk-HOHUEKES.js.map → chunk-DCHQ6BAZ.js.map} +1 -1
- package/dist/{chunk-DALV4HHP.js → chunk-DKXNKFKP.js} +3 -2
- package/dist/{chunk-DALV4HHP.js.map → chunk-DKXNKFKP.js.map} +1 -1
- package/dist/{chunk-3MKPZZRE.js → chunk-G3X4MLDB.js} +3 -3
- package/dist/{chunk-3MKPZZRE.js.map → chunk-G3X4MLDB.js.map} +1 -1
- package/dist/{chunk-SBFW3CJH.js → chunk-GWD3QNVS.js} +5 -5
- package/dist/{chunk-SBFW3CJH.js.map → chunk-GWD3QNVS.js.map} +1 -1
- package/dist/chunk-H5U7LNTJ.js +122 -0
- package/dist/chunk-H5U7LNTJ.js.map +1 -0
- package/dist/{chunk-SX5U422E.js → chunk-HYMERG57.js} +3 -3
- package/dist/{chunk-SX5U422E.js.map → chunk-HYMERG57.js.map} +1 -1
- package/dist/{chunk-V5TZH4GF.js → chunk-ICIYSJBQ.js} +4 -4
- package/dist/{chunk-V5TZH4GF.js.map → chunk-ICIYSJBQ.js.map} +1 -1
- package/dist/{chunk-YBQONMH2.js → chunk-ID745F3R.js} +353 -193
- package/dist/chunk-ID745F3R.js.map +1 -0
- package/dist/{chunk-CLTHEKHR.js → chunk-JQ3DXNQV.js} +4 -4
- package/dist/{chunk-CLTHEKHR.js.map → chunk-JQ3DXNQV.js.map} +1 -1
- package/dist/chunk-K4VOEYOR.js +21 -0
- package/dist/chunk-K4VOEYOR.js.map +1 -0
- package/dist/{chunk-XCNK4UE5.js → chunk-KVSDRB35.js} +5 -5
- package/dist/{chunk-XCNK4UE5.js.map → chunk-KVSDRB35.js.map} +1 -1
- package/dist/{chunk-HJ5MCB3L.js → chunk-MF54ZHWT.js} +20 -3
- package/dist/chunk-MF54ZHWT.js.map +1 -0
- package/dist/{chunk-NRDSGLCQ.js → chunk-N5M2EISA.js} +240 -52
- package/dist/chunk-N5M2EISA.js.map +1 -0
- package/dist/{chunk-OBVJ7RPW.js → chunk-NDF24LYP.js} +3 -3
- package/dist/{chunk-OBVJ7RPW.js.map → chunk-NDF24LYP.js.map} +1 -1
- package/dist/{chunk-ZGQTS3Y4.js → chunk-NGJIVDDD.js} +3 -3
- package/dist/{chunk-ZGQTS3Y4.js.map → chunk-NGJIVDDD.js.map} +1 -1
- package/dist/{chunk-PE36IF2D.js → chunk-NJV5SLEK.js} +159 -44
- package/dist/chunk-NJV5SLEK.js.map +1 -0
- package/dist/{chunk-OOWHXOK6.js → chunk-NJXR5OAM.js} +4 -4
- package/dist/{chunk-OOWHXOK6.js.map → chunk-NJXR5OAM.js.map} +1 -1
- package/dist/{chunk-CGYEHQOX.js → chunk-NOA6EJXE.js} +11 -2
- package/dist/chunk-NOA6EJXE.js.map +1 -0
- package/dist/{chunk-V7PQZOBR.js → chunk-NR7H7ZJP.js} +14 -6
- package/dist/chunk-NR7H7ZJP.js.map +1 -0
- package/dist/{chunk-OBYKJB4U.js → chunk-O2SYFJWP.js} +79 -5
- package/dist/chunk-O2SYFJWP.js.map +1 -0
- package/dist/{chunk-5LKOAX7I.js → chunk-OQ5MKDS3.js} +21 -5
- package/dist/chunk-OQ5MKDS3.js.map +1 -0
- package/dist/{chunk-4P3KTUZH.js → chunk-P23WJCH2.js} +51 -14
- package/dist/chunk-P23WJCH2.js.map +1 -0
- package/dist/{chunk-NWDSLXOX.js → chunk-PHRNUTSG.js} +118 -118
- package/dist/chunk-PHRNUTSG.js.map +1 -0
- package/dist/{chunk-JZCSNEHK.js → chunk-PNOGX36L.js} +141 -39
- package/dist/chunk-PNOGX36L.js.map +1 -0
- package/dist/{chunk-4OV5DSBB.js → chunk-PNTXHTBC.js} +5 -5
- package/dist/chunk-PNTXHTBC.js.map +1 -0
- package/dist/{chunk-TRSQP3JD.js → chunk-POQ6PGNE.js} +20 -4
- package/dist/chunk-POQ6PGNE.js.map +1 -0
- package/dist/{chunk-Y63UQZ7P.js → chunk-QCEKGYHF.js} +3 -3
- package/dist/{chunk-Y63UQZ7P.js.map → chunk-QCEKGYHF.js.map} +1 -1
- package/dist/{chunk-GFCXNFTW.js → chunk-SHQMPGOL.js} +4 -4
- package/dist/{chunk-GFCXNFTW.js.map → chunk-SHQMPGOL.js.map} +1 -1
- package/dist/{chunk-WBYDAL6X.js → chunk-SMT3LNAG.js} +4 -4
- package/dist/{chunk-WBYDAL6X.js.map → chunk-SMT3LNAG.js.map} +1 -1
- package/dist/{chunk-2FMEGSBN.js → chunk-T5TSLSRO.js} +135 -47
- package/dist/chunk-T5TSLSRO.js.map +1 -0
- package/dist/{chunk-2JMLDZLP.js → chunk-TVAR4JHA.js} +903 -138
- package/dist/chunk-TVAR4JHA.js.map +1 -0
- package/dist/{chunk-MVQ3Q2HM.js → chunk-UTKENBB6.js} +5 -5
- package/dist/{chunk-MVQ3Q2HM.js.map → chunk-UTKENBB6.js.map} +1 -1
- package/dist/{chunk-TH4CTXHX.js → chunk-VRLKHL74.js} +6 -6
- package/dist/{chunk-TH4CTXHX.js.map → chunk-VRLKHL74.js.map} +1 -1
- package/dist/{chunk-Z2K6BGUR.js → chunk-WI4T3KIS.js} +51 -16
- package/dist/chunk-WI4T3KIS.js.map +1 -0
- package/dist/{chunk-MGGFBZWA.js → chunk-X3RMRJNR.js} +6 -4
- package/dist/chunk-X3RMRJNR.js.map +1 -0
- package/dist/{chunk-FRPBSUFH.js → chunk-X6LKA3TJ.js} +5 -5
- package/dist/{chunk-FRPBSUFH.js.map → chunk-X6LKA3TJ.js.map} +1 -1
- package/dist/{chunk-3KHYGOEY.js → chunk-XMAJJPA4.js} +3 -3
- package/dist/{chunk-3KHYGOEY.js.map → chunk-XMAJJPA4.js.map} +1 -1
- package/dist/{chunk-Y34MSWEZ.js → chunk-XTVSNWLL.js} +19 -7
- package/dist/chunk-XTVSNWLL.js.map +1 -0
- package/dist/{chunk-VLXDXRRX.js → chunk-XZY6SBGU.js} +3 -3
- package/dist/{chunk-VLXDXRRX.js.map → chunk-XZY6SBGU.js.map} +1 -1
- package/dist/{chunk-5QI2JYJC.js → chunk-YQU2BPQD.js} +7 -5
- package/dist/chunk-YQU2BPQD.js.map +1 -0
- package/dist/cli/index.js +1207 -580
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/src/agent-checks.d.ts +40 -0
- package/dist/cli/src/agent-checks.d.ts.map +1 -0
- package/dist/cli/src/asset-feeds.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 +24 -0
- package/dist/cli/src/commands/catalog.d.ts.map +1 -1
- package/dist/cli/src/commands/config.d.ts.map +1 -1
- package/dist/cli/src/commands/diff.d.ts +1 -1
- package/dist/cli/src/commands/diff.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-publish.d.ts.map +1 -1
- package/dist/cli/src/commands/manage.d.ts +6 -0
- package/dist/cli/src/commands/manage.d.ts.map +1 -1
- package/dist/cli/src/commands/mcp-server.d.ts +1 -1
- package/dist/cli/src/commands/migrate-assets.d.ts +2 -1
- package/dist/cli/src/commands/migrate-assets.d.ts.map +1 -1
- package/dist/cli/src/commands/migrate.d.ts.map +1 -1
- package/dist/cli/src/commands/outdated.d.ts.map +1 -1
- package/dist/cli/src/commands/plugin/claude-code.d.ts +1 -1
- package/dist/cli/src/commands/plugin/claude-code.d.ts.map +1 -1
- package/dist/cli/src/commands/plugin/types.d.ts +1 -1
- package/dist/cli/src/commands/plugin-registry-cmd.d.ts.map +1 -1
- package/dist/cli/src/commands/project.d.ts +3 -1
- package/dist/cli/src/commands/project.d.ts.map +1 -1
- package/dist/cli/src/commands/publish-core.d.ts +5 -0
- package/dist/cli/src/commands/publish-core.d.ts.map +1 -1
- package/dist/cli/src/commands/run.d.ts +2 -1
- package/dist/cli/src/commands/run.d.ts.map +1 -1
- package/dist/cli/src/commands/serve-preflight.d.ts +22 -0
- package/dist/cli/src/commands/serve-preflight.d.ts.map +1 -0
- package/dist/cli/src/commands/serve.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.map +1 -1
- 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/tree.d.ts.map +1 -1
- package/dist/cli/src/commands/update.d.ts.map +1 -1
- package/dist/cli/src/commands/validate.d.ts.map +1 -1
- package/dist/cli/src/commands/why.d.ts +1 -0
- package/dist/cli/src/commands/why.d.ts.map +1 -1
- package/dist/cli/src/curated-manifests.d.ts +21 -0
- package/dist/cli/src/curated-manifests.d.ts.map +1 -0
- package/dist/cli/src/helpers.d.ts +12 -0
- package/dist/cli/src/helpers.d.ts.map +1 -1
- package/dist/cli/src/index-busy.d.ts +8 -0
- package/dist/cli/src/index-busy.d.ts.map +1 -0
- package/dist/cli/src/plugin-store/paths.d.ts +7 -3
- package/dist/cli/src/plugin-store/paths.d.ts.map +1 -1
- package/dist/cli/src/skill-checks.d.ts +29 -8
- package/dist/cli/src/skill-checks.d.ts.map +1 -1
- package/dist/cli/src/store-addable.d.ts +18 -0
- package/dist/cli/src/store-addable.d.ts.map +1 -0
- package/dist/connectors/config.js +5 -5
- package/dist/connectors/index.js +16 -16
- package/dist/{connectors-OXP2JBGI.js → connectors-UNKUKEPG.js} +19 -19
- package/dist/{connectors-OXP2JBGI.js.map → connectors-UNKUKEPG.js.map} +1 -1
- 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 +2 -2
- package/dist/core/ref.js +1 -1
- package/dist/core/runtime-assets.js +5 -5
- package/dist/core/src/index.d.ts +5 -4
- package/dist/core/src/index.d.ts.map +1 -1
- package/dist/core/src/lock.d.ts +19 -8
- package/dist/core/src/lock.d.ts.map +1 -1
- package/dist/core/src/logging/sinks/sqlite-sink.d.ts.map +1 -1
- package/dist/core/src/manifest.d.ts +5 -0
- package/dist/core/src/manifest.d.ts.map +1 -1
- package/dist/core/src/models.d.ts +4 -4
- package/dist/core/src/models.d.ts.map +1 -1
- package/dist/core/src/package-manager.d.ts +19 -0
- package/dist/core/src/package-manager.d.ts.map +1 -0
- package/dist/core/src/publish-manifest.d.ts +11 -1
- package/dist/core/src/publish-manifest.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/settings.d.ts +26 -6
- package/dist/core/src/settings.d.ts.map +1 -1
- package/dist/core/src/walker.d.ts +6 -1
- package/dist/core/src/walker.d.ts.map +1 -1
- package/dist/core/src/workspace-config.d.ts +4 -1
- 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/discovery/src/source-config.d.ts.map +1 -1
- package/dist/{ensure-sources-5ISVIA4T.js → ensure-sources-POMEQSTM.js} +19 -19
- package/dist/{ensure-sources-5ISVIA4T.js.map → ensure-sources-POMEQSTM.js.map} +1 -1
- package/dist/factory-assets/connectors/box.js +16 -16
- package/dist/factory-assets/connectors/deploy.js +16 -16
- package/dist/factory-assets/connectors/devserver.js +16 -16
- package/dist/factory-assets/connectors/flow/adapter.js +16 -16
- 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 +9 -9
- package/dist/factory-assets/connectors/flow/run-flow.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/run-flow.js +18 -18
- package/dist/factory-assets/connectors/flow.js +16 -16
- package/dist/factory-assets/connectors/git.js +16 -16
- package/dist/factory-assets/connectors/gmail.js +16 -16
- package/dist/factory-assets/connectors/googledrive.js +16 -16
- package/dist/factory-assets/connectors/local.js +16 -16
- package/dist/factory-assets/connectors/mattermost.js +16 -16
- package/dist/factory-assets/connectors/memory.js +16 -16
- package/dist/factory-assets/connectors/minio.js +16 -16
- package/dist/factory-assets/connectors/postgres.js +16 -16
- package/dist/factory-assets/connectors/s3.js +16 -16
- package/dist/factory-assets/connectors/sharepoint.js +16 -16
- package/dist/factory-assets/connectors/sqlite.js +16 -16
- package/dist/factory-assets/connectors/static-server.js +16 -16
- package/dist/factory-assets/connectors/tunnel.js +16 -16
- package/dist/factory-assets/connectors/webdav.js +16 -16
- package/dist/factory-assets/connectors/xstate-store.js +16 -16
- package/dist/factory-assets/connectors/xstate.js +16 -16
- package/dist/factory-assets/skills/authoring-skaile-assets/SKILL.md +10 -8
- package/dist/factory-assets/skills/authoring-skaile-manifests/SKILL.md +15 -11
- package/dist/factory-assets/skills/authoring-skaile-manifests/references/dependency-standard.md +16 -11
- package/dist/factory-assets/skills/skaile-author-asset/SKILL.md +2 -2
- package/dist/{flows-HMSE76PO.js → flows-DVKMZKM4.js} +12 -12
- package/dist/{flows-HMSE76PO.js.map → flows-DVKMZKM4.js.map} +1 -1
- package/dist/{helpers-X6URBGSF.js → helpers-Y4OT7VIS.js} +19 -19
- package/dist/{helpers-X6URBGSF.js.map → helpers-Y4OT7VIS.js.map} +1 -1
- package/dist/library/index.js +12 -12
- package/dist/library/install.js +4 -4
- package/dist/library/src/index.d.ts +3 -3
- package/dist/library/src/index.d.ts.map +1 -1
- package/dist/library/src/install/source-fetch-github.d.ts.map +1 -1
- package/dist/library/src/local/db.d.ts +2 -0
- package/dist/library/src/local/db.d.ts.map +1 -1
- package/dist/library/src/local/library-dir.d.ts +26 -0
- package/dist/library/src/local/library-dir.d.ts.map +1 -1
- package/dist/library/src/local/library-manager.d.ts +5 -0
- package/dist/library/src/local/library-manager.d.ts.map +1 -1
- package/dist/library/src/local/library.d.ts +5 -3
- package/dist/library/src/local/library.d.ts.map +1 -1
- package/dist/library/src/local/local-catalog-source.d.ts.map +1 -1
- package/dist/library/src/local/store-paths.d.ts +9 -0
- package/dist/library/src/local/store-paths.d.ts.map +1 -1
- package/dist/library/src/manifest-writer.d.ts.map +1 -1
- package/dist/library/src/remote/index.d.ts +1 -1
- package/dist/library/src/remote/index.d.ts.map +1 -1
- package/dist/library/src/remote/remote-catalog-source.d.ts +17 -0
- package/dist/library/src/remote/remote-catalog-source.d.ts.map +1 -1
- package/dist/library/src/sync/git-driver.d.ts +2 -0
- package/dist/library/src/sync/git-driver.d.ts.map +1 -1
- package/dist/{library-publish-OS3JDW4S.js → library-publish-DI4Q5UOG.js} +73 -38
- package/dist/library-publish-DI4Q5UOG.js.map +1 -0
- package/dist/open-library-N6ESO6IK.js +40 -0
- package/dist/{open-library-4QSUORI6.js.map → open-library-N6ESO6IK.js.map} +1 -1
- package/dist/open-registry-CBZ5MWTT.js +32 -0
- package/dist/{open-registry-VCKS3MP5.js.map → open-registry-CBZ5MWTT.js.map} +1 -1
- package/dist/paths-U6W6MQNQ.js +22 -0
- package/dist/{paths-BVO56A25.js.map → paths-U6W6MQNQ.js.map} +1 -1
- package/dist/{plugin-store-X7GPWGBG.js → plugin-store-XMZSPVBF.js} +48 -12
- package/dist/plugin-store-XMZSPVBF.js.map +1 -0
- package/dist/project-UP52HEHC.js +79 -0
- package/dist/{project-PAXP46RD.js.map → project-UP52HEHC.js.map} +1 -1
- package/dist/resolver/index.js +8 -8
- package/dist/runner/index.js +33 -33
- package/dist/runner/src/agent.d.ts.map +1 -1
- package/dist/runner/src/agents/in-process-host.d.ts.map +1 -1
- package/dist/runner/src/composition/index.d.ts +1 -0
- package/dist/runner/src/composition/index.d.ts.map +1 -1
- package/dist/runner/src/composition/prompt-sections.d.ts +7 -4
- package/dist/runner/src/composition/prompt-sections.d.ts.map +1 -1
- package/dist/runner/src/composition/resolve.d.ts +10 -1
- package/dist/runner/src/composition/resolve.d.ts.map +1 -1
- package/dist/runner/src/composition/verify.d.ts +29 -0
- package/dist/runner/src/composition/verify.d.ts.map +1 -0
- package/dist/runner/src/credential-notice.d.ts +14 -0
- package/dist/runner/src/credential-notice.d.ts.map +1 -0
- package/dist/runner/src/environment.d.ts.map +1 -1
- package/dist/runner/src/final-text.d.ts +17 -0
- package/dist/runner/src/final-text.d.ts.map +1 -0
- package/dist/runner/src/index.d.ts +2 -0
- package/dist/runner/src/index.d.ts.map +1 -1
- package/dist/runner/src/resource-handler.d.ts.map +1 -1
- package/dist/runner/src/serve.d.ts +13 -0
- package/dist/runner/src/serve.d.ts.map +1 -1
- package/dist/runner/src/usage-limit-turn-hold.d.ts +51 -0
- package/dist/runner/src/usage-limit-turn-hold.d.ts.map +1 -0
- package/dist/sdk/asset-manager.js +16 -16
- package/dist/sdk/bridge.js +12 -12
- package/dist/sdk/core.js +7 -7
- package/dist/sdk/flow.js +9 -9
- package/dist/sdk/index.js +36 -34
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/resolver.js +8 -8
- package/dist/sdk/runner.js +33 -33
- package/dist/sdk/src/local-runtime.d.ts.map +1 -1
- package/dist/sdk/transport/ws/client.js +1 -1
- package/dist/sdk/transport/ws/server.js +1 -1
- package/dist/sdk/transport/ws.js +2 -2
- package/dist/sdk/transport.js +2 -2
- package/dist/serve-preflight-6P2JJEJ3.js +47 -0
- package/dist/serve-preflight-6P2JJEJ3.js.map +1 -0
- package/dist/{setup-BV55VHWC.js → setup-5IRUH5OS.js} +24 -24
- package/dist/{setup-BV55VHWC.js.map → setup-5IRUH5OS.js.map} +1 -1
- package/dist/{skills-EDFUCJPX.js → skills-HA36RFNM.js} +13 -13
- package/dist/{skills-EDFUCJPX.js.map → skills-HA36RFNM.js.map} +1 -1
- package/dist/source-DX5SGWEI.js +41 -0
- package/dist/{source-E4VAT5RZ.js.map → source-DX5SGWEI.js.map} +1 -1
- package/dist/source-fetch-github-PIO6EMMF.js +4 -0
- package/dist/{source-fetch-github-QN4LLTL5.js.map → source-fetch-github-PIO6EMMF.js.map} +1 -1
- package/dist/{source-manifest-publish-CLEE6TNH.js → source-manifest-publish-NMRLXWVW.js} +27 -26
- package/dist/source-manifest-publish-NMRLXWVW.js.map +1 -0
- package/dist/transport/index.js +2 -2
- package/dist/transport/src/ws/client.d.ts +6 -0
- package/dist/transport/src/ws/client.d.ts.map +1 -1
- package/dist/transport/src/ws/server.d.ts +4 -0
- package/dist/transport/src/ws/server.d.ts.map +1 -1
- package/dist/transport/ws/client.js +1 -1
- package/dist/transport/ws/server.js +1 -1
- package/dist/transport/ws.js +2 -2
- package/dist/tui/index.js +89 -52
- package/dist/tui/index.js.map +1 -1
- package/dist/tui/src/repl-session.d.ts +1 -1
- package/dist/tui/src/repl-session.d.ts.map +1 -1
- package/dist/tui/src/repl.d.ts +3 -0
- package/dist/tui/src/repl.d.ts.map +1 -1
- package/dist/types/manifests.js +1 -1
- package/dist/types/src/manifests/agent-composition.d.ts +20 -0
- package/dist/types/src/manifests/agent-composition.d.ts.map +1 -1
- package/dist/types/src/manifests/agent.d.ts.map +1 -1
- package/dist/types/src/manifests/cron.d.ts +15 -0
- package/dist/types/src/manifests/cron.d.ts.map +1 -0
- package/dist/types/src/manifests/index.d.ts +3 -2
- package/dist/types/src/manifests/index.d.ts.map +1 -1
- package/dist/types/src/manifests/preset.d.ts +1 -1
- package/dist/workspace-plugin/adapters/mcp.js +23 -23
- package/dist/workspace-plugin/adapters/omp.js +106 -51
- package/dist/workspace-plugin/adapters/omp.js.map +1 -1
- package/dist/workspace-plugin/index.js +2 -2
- package/dist/workspace-plugin/src/adapters/claude-code.d.ts.map +1 -1
- package/dist/workspace-plugin/src/adapters/omp.d.ts +11 -2
- package/dist/workspace-plugin/src/adapters/omp.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/asset-feeds-ELEBTNUS.js.map +0 -1
- package/dist/chunk-2FMEGSBN.js.map +0 -1
- package/dist/chunk-2JMLDZLP.js.map +0 -1
- package/dist/chunk-32XKCNCL.js.map +0 -1
- package/dist/chunk-3BEY4WK3.js.map +0 -1
- package/dist/chunk-4OV5DSBB.js.map +0 -1
- package/dist/chunk-4P3KTUZH.js.map +0 -1
- package/dist/chunk-5LKOAX7I.js.map +0 -1
- package/dist/chunk-5QI2JYJC.js.map +0 -1
- package/dist/chunk-6HHE63CO.js.map +0 -1
- package/dist/chunk-CGYEHQOX.js.map +0 -1
- package/dist/chunk-GEWAIQZ5.js.map +0 -1
- package/dist/chunk-HJ5MCB3L.js.map +0 -1
- package/dist/chunk-IJHH4DSW.js.map +0 -1
- package/dist/chunk-IXWODEED.js.map +0 -1
- package/dist/chunk-JZCSNEHK.js.map +0 -1
- package/dist/chunk-MGGFBZWA.js.map +0 -1
- package/dist/chunk-NRDSGLCQ.js.map +0 -1
- package/dist/chunk-NWDSLXOX.js.map +0 -1
- package/dist/chunk-OBYKJB4U.js.map +0 -1
- package/dist/chunk-PE36IF2D.js.map +0 -1
- package/dist/chunk-R7FOF242.js +0 -59
- package/dist/chunk-R7FOF242.js.map +0 -1
- package/dist/chunk-TRSQP3JD.js.map +0 -1
- package/dist/chunk-V7PQZOBR.js.map +0 -1
- package/dist/chunk-Y34MSWEZ.js.map +0 -1
- package/dist/chunk-YBQONMH2.js.map +0 -1
- package/dist/chunk-Z2K6BGUR.js.map +0 -1
- package/dist/library-publish-OS3JDW4S.js.map +0 -1
- package/dist/open-library-4QSUORI6.js +0 -40
- package/dist/open-registry-VCKS3MP5.js +0 -32
- package/dist/paths-BVO56A25.js +0 -22
- package/dist/plugin-store-X7GPWGBG.js.map +0 -1
- package/dist/project-PAXP46RD.js +0 -41
- package/dist/source-E4VAT5RZ.js +0 -41
- package/dist/source-fetch-github-QN4LLTL5.js +0 -4
- package/dist/source-manifest-publish-CLEE6TNH.js.map +0 -1
|
@@ -1,26 +1,344 @@
|
|
|
1
|
-
import { getStoreIdentity, refFor } from './chunk-
|
|
2
|
-
import { openLibrary } from './chunk-
|
|
3
|
-
import { logErr, logWarn } from './chunk-
|
|
4
|
-
import { getKindRegistry } from './chunk-
|
|
5
|
-
import { parseFlowDefinition } from './chunk-
|
|
6
|
-
import { stampManifestPublisher, upsertManifestAsset, resolveIndexPath, LocalIndex } from './chunk-
|
|
7
|
-
import {
|
|
8
|
-
import { SKILL_DESCRIPTION_PLACEHOLDER_PREFIX, PRESET_DESCRIPTION_PLACEHOLDER, PRESET_ITEM_PLACEHOLDER_REF, SKILL_BODY_PLACEHOLDER, CONTRACT_BODY_PLACEHOLDER, PROMPT_BODY_PLACEHOLDER, AGENT_BODY_PLACEHOLDER } from './chunk-
|
|
9
|
-
import { checkAgentSkillConformance } from './chunk-
|
|
10
|
-
import { matchPin } from './chunk-
|
|
11
|
-
import { SKAILE_MANIFEST_FILENAME, loadSkPublishManifest } from './chunk-
|
|
12
|
-
import { parseFrontmatter } from './chunk-
|
|
13
|
-
import { parseDep, isValidPublisher, slugifyAssetName, PUBLISHER_HINT } from './chunk-
|
|
14
|
-
import * as
|
|
15
|
-
import * as
|
|
1
|
+
import { getStoreIdentity, refFor } from './chunk-NR7H7ZJP.js';
|
|
2
|
+
import { openLibrary } from './chunk-JQ3DXNQV.js';
|
|
3
|
+
import { logErr, logWarn } from './chunk-POQ6PGNE.js';
|
|
4
|
+
import { getKindRegistry } from './chunk-GWD3QNVS.js';
|
|
5
|
+
import { parseFlowDefinition } from './chunk-X3RMRJNR.js';
|
|
6
|
+
import { stampManifestPublisher, upsertManifestAsset, resolveIndexPath, LocalIndex } from './chunk-C3BMXXTN.js';
|
|
7
|
+
import { SEMVER_RE, parseManifestFile, requiresSyntaxErrors } from './chunk-7CR2OZPA.js';
|
|
8
|
+
import { composeRefTarget, SKILL_DESCRIPTION_PLACEHOLDER_PREFIX, PRESET_DESCRIPTION_PLACEHOLDER, PRESET_ITEM_PLACEHOLDER_REF, SKILL_BODY_PLACEHOLDER, CONTRACT_BODY_PLACEHOLDER, PROMPT_BODY_PLACEHOLDER, AGENT_BODY_PLACEHOLDER } from './chunk-6VLHITAM.js';
|
|
9
|
+
import { checkAgentSkillConformance } from './chunk-T5TSLSRO.js';
|
|
10
|
+
import { matchPin } from './chunk-PNOGX36L.js';
|
|
11
|
+
import { SKAILE_MANIFEST_FILENAME, loadSkPublishManifest } from './chunk-CTP3XBMF.js';
|
|
12
|
+
import { parseFrontmatter } from './chunk-XTVSNWLL.js';
|
|
13
|
+
import { parseDep, isValidPublisher, slugifyAssetName, parseAssetRef, isValidAssetName, ASSET_NAME_HINT, PUBLISHER_HINT } from './chunk-PNTXHTBC.js';
|
|
14
|
+
import * as fs3 from 'fs';
|
|
15
|
+
import * as path3 from 'path';
|
|
16
16
|
import { Option } from 'commander';
|
|
17
17
|
import { parse, stringify } from 'yaml';
|
|
18
18
|
|
|
19
|
+
var error = (text) => ({ tag: "agent", text, conformance: false });
|
|
20
|
+
function isInside(parent, child) {
|
|
21
|
+
const rel = path3.relative(parent, child);
|
|
22
|
+
return rel === "" || !rel.startsWith("..") && !path3.isAbsolute(rel);
|
|
23
|
+
}
|
|
24
|
+
function records(value) {
|
|
25
|
+
return Array.isArray(value) ? value.filter((v) => v !== null && typeof v === "object") : [];
|
|
26
|
+
}
|
|
27
|
+
function checkAgentFiles(parsed, agentDir, libraryRoot) {
|
|
28
|
+
const out = [];
|
|
29
|
+
records(parsed.composes).forEach((item, i) => {
|
|
30
|
+
if (typeof item.kind !== "string" || typeof item.ref !== "string") return;
|
|
31
|
+
const target = composeRefTarget({ kind: item.kind, ref: item.ref });
|
|
32
|
+
if (target?.type !== "local") return;
|
|
33
|
+
const where = `composes[${i}].ref`;
|
|
34
|
+
const resolved = path3.resolve(agentDir, target.path);
|
|
35
|
+
if (!fs3.existsSync(resolved)) {
|
|
36
|
+
out.push(
|
|
37
|
+
error(`${where}: local path "${item.ref}" does not exist (resolved from ${agentDir})`)
|
|
38
|
+
);
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
if (!isInside(libraryRoot, resolved)) {
|
|
42
|
+
out.push(
|
|
43
|
+
error(`${where}: local path "${item.ref}" leaves the library and cannot be published`)
|
|
44
|
+
);
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
const ownManifests = [
|
|
48
|
+
agentDir,
|
|
49
|
+
path3.join(agentDir, "agent.yaml"),
|
|
50
|
+
path3.join(agentDir, "AGENT.md")
|
|
51
|
+
];
|
|
52
|
+
if (item.kind === "agent" && ownManifests.includes(resolved)) {
|
|
53
|
+
out.push(
|
|
54
|
+
error(
|
|
55
|
+
`${where}: agent composes itself (${item.ref}); an agent cannot be its own sub-agent`
|
|
56
|
+
)
|
|
57
|
+
);
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
const blocks = records(
|
|
61
|
+
parsed.memory !== null && typeof parsed.memory === "object" ? parsed.memory.blocks : void 0
|
|
62
|
+
);
|
|
63
|
+
blocks.forEach((block, i) => {
|
|
64
|
+
if (typeof block.source !== "string" || block.source === "") return;
|
|
65
|
+
const where = `memory.blocks[${i}].source`;
|
|
66
|
+
const resolved = path3.resolve(agentDir, block.source);
|
|
67
|
+
if (!isInside(agentDir, resolved)) {
|
|
68
|
+
out.push(error(`${where}: "${block.source}" leaves the agent directory`));
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
let stat;
|
|
72
|
+
try {
|
|
73
|
+
stat = fs3.statSync(resolved);
|
|
74
|
+
} catch {
|
|
75
|
+
out.push(error(`${where}: file "${block.source}" does not exist in ${agentDir}`));
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
if (!stat.isFile()) {
|
|
79
|
+
out.push(error(`${where}: "${block.source}" is not a file`));
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
const max = block.max_chars;
|
|
83
|
+
if (typeof max !== "number") return;
|
|
84
|
+
const length = [...fs3.readFileSync(resolved, "utf-8").trim()].length;
|
|
85
|
+
if (length > max) {
|
|
86
|
+
out.push(
|
|
87
|
+
error(
|
|
88
|
+
`${where}: "${block.source}" holds ${length} characters, more than memory block "${String(block.name)}" max_chars ${max}`
|
|
89
|
+
)
|
|
90
|
+
);
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
return out;
|
|
94
|
+
}
|
|
95
|
+
function agentComposeRefAdvisories(parsed, hasAsset, libraryPublisher) {
|
|
96
|
+
const out = [];
|
|
97
|
+
records(parsed.composes).forEach((item, i) => {
|
|
98
|
+
if (typeof item.kind !== "string" || typeof item.ref !== "string") return;
|
|
99
|
+
const target = composeRefTarget({ kind: item.kind, ref: item.ref });
|
|
100
|
+
if (target?.type !== "asset" || target.kind === "soul") return;
|
|
101
|
+
if (target.publisher !== void 0 && libraryPublisher !== void 0 && target.publisher !== libraryPublisher) {
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
if (target.publisher !== void 0 && libraryPublisher === void 0) return;
|
|
105
|
+
if (hasAsset(target.kind, target.name)) return;
|
|
106
|
+
out.push({
|
|
107
|
+
tag: "agent",
|
|
108
|
+
text: `composes[${i}].ref: ${item.ref} is not in this library; \`skaile add\` fails with "requires \u2026 not found" unless the asset is published elsewhere`,
|
|
109
|
+
conformance: false
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
return out;
|
|
113
|
+
}
|
|
114
|
+
var BODY_PLACEHOLDER_BY_KIND = {
|
|
115
|
+
skill: SKILL_BODY_PLACEHOLDER,
|
|
116
|
+
agent: AGENT_BODY_PLACEHOLDER,
|
|
117
|
+
prompt: PROMPT_BODY_PLACEHOLDER,
|
|
118
|
+
contract: CONTRACT_BODY_PLACEHOLDER
|
|
119
|
+
};
|
|
120
|
+
var MARKDOWN_SCAFFOLD_KINDS = {
|
|
121
|
+
skill: true,
|
|
122
|
+
agent: true,
|
|
123
|
+
prompt: true,
|
|
124
|
+
contract: true
|
|
125
|
+
};
|
|
126
|
+
var FLOW_DESCRIPTION_PLACEHOLDER = "Flow description";
|
|
127
|
+
function checkAssetManifest(kind, parsed, body, dirName) {
|
|
128
|
+
const out = [];
|
|
129
|
+
if (kind === "skill") {
|
|
130
|
+
for (const f of checkAgentSkillConformance(parsed, { dirName })) {
|
|
131
|
+
out.push({ tag: "skill conformance", text: `${f.field}: ${f.message}`, conformance: true });
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
if (MARKDOWN_SCAFFOLD_KINDS[kind]) {
|
|
135
|
+
const bodyText = body?.replace(/^#[^\n]*\n+/, "");
|
|
136
|
+
const isPlaceholder = bodyText === SKILL_BODY_PLACEHOLDER || bodyText === BODY_PLACEHOLDER_BY_KIND[kind];
|
|
137
|
+
if (isPlaceholder) {
|
|
138
|
+
const noun = kind === "skill" ? "skill prompt" : kind;
|
|
139
|
+
out.push({
|
|
140
|
+
tag: kind,
|
|
141
|
+
text: `body is still the scaffold placeholder; write the ${noun}`,
|
|
142
|
+
conformance: false,
|
|
143
|
+
scaffoldBody: true
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return out;
|
|
148
|
+
}
|
|
149
|
+
function declaredVersion(parsed) {
|
|
150
|
+
const scalar = (v) => typeof v === "string" ? v : typeof v === "number" ? String(v) : void 0;
|
|
151
|
+
const meta = parsed.metadata;
|
|
152
|
+
const nested = meta !== null && typeof meta === "object" ? scalar(meta.version) : void 0;
|
|
153
|
+
return scalar(parsed.version) ?? nested;
|
|
154
|
+
}
|
|
155
|
+
function invalidSemverText(version) {
|
|
156
|
+
return SEMVER_RE.test(version) ? void 0 : `version "${version}" is not valid semver`;
|
|
157
|
+
}
|
|
158
|
+
function rawVersionScalar(text) {
|
|
159
|
+
const front = text.startsWith("---") ? text.split(/\n---/, 1)[0] ?? text : text;
|
|
160
|
+
const m = /^[ \t]*version:[ \t]*([^\s#][^#\n]*?)[ \t]*(?:#.*)?$/m.exec(front);
|
|
161
|
+
return m?.[1];
|
|
162
|
+
}
|
|
163
|
+
function versionProblemText(parsed, rawText) {
|
|
164
|
+
const version = declaredVersion(parsed);
|
|
165
|
+
const text = version === void 0 ? void 0 : invalidSemverText(version);
|
|
166
|
+
if (text === void 0) return void 0;
|
|
167
|
+
const meta = parsed.metadata;
|
|
168
|
+
const nested = meta !== null && typeof meta === "object" ? meta.version : void 0;
|
|
169
|
+
const key = parsed.version === void 0 || parsed.version === null ? "metadata.version" : "version";
|
|
170
|
+
const written = key === "version" ? parsed.version : nested;
|
|
171
|
+
if (typeof written !== "number") return text;
|
|
172
|
+
const raw = (rawText === void 0 ? void 0 : rawVersionScalar(rawText)) ?? String(written);
|
|
173
|
+
const fix = /^\d+(\.\d+)?$/.test(raw) ? `${raw}${raw.includes(".") ? "" : ".0"}.0` : DEFAULT_VERSION;
|
|
174
|
+
return `version ${raw} is not valid semver: yaml reads an unquoted number as a number, not a string. Write it quoted with three parts: ${key}: "${fix}"`;
|
|
175
|
+
}
|
|
176
|
+
function duplicateAssetMessage(kind, name, dir, detail, library) {
|
|
177
|
+
return `${kind}:${name} found in ${dir} but ${detail}. Rename or delete one of the two directories, then re-run \`skaile library index ${library}\`.`;
|
|
178
|
+
}
|
|
179
|
+
var DEFAULT_VERSION = "0.1.0";
|
|
180
|
+
var SCAFFOLD_KINDS = {
|
|
181
|
+
skill: true,
|
|
182
|
+
agent: true,
|
|
183
|
+
prompt: true,
|
|
184
|
+
contract: true,
|
|
185
|
+
flow: true,
|
|
186
|
+
preset: true
|
|
187
|
+
};
|
|
188
|
+
function withManifestDefaults(kind, parsed) {
|
|
189
|
+
if (!SCAFFOLD_KINDS[kind]) return parsed;
|
|
190
|
+
const out = { ...parsed };
|
|
191
|
+
if (out.metadata === null) delete out.metadata;
|
|
192
|
+
const meta = out.metadata;
|
|
193
|
+
const nested = typeof meta === "object" && meta !== null && "version" in meta ? meta.version : void 0;
|
|
194
|
+
if (out.version == null && nested == null) out.version = DEFAULT_VERSION;
|
|
195
|
+
return out;
|
|
196
|
+
}
|
|
197
|
+
function manifestIdentityError(kind, parsed) {
|
|
198
|
+
const identity = kind === "flow" ? parsed.id : parsed.name;
|
|
199
|
+
if (typeof identity !== "string" || identity.length === 0) return void 0;
|
|
200
|
+
const publisher = typeof parsed.publisher === "string" ? parsed.publisher : void 0;
|
|
201
|
+
if (publisher !== void 0) {
|
|
202
|
+
try {
|
|
203
|
+
parseAssetRef(`${kind}:@${publisher}/${identity}`);
|
|
204
|
+
return void 0;
|
|
205
|
+
} catch (e) {
|
|
206
|
+
return e instanceof Error ? e.message : String(e);
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
if (!isValidAssetName(identity)) {
|
|
210
|
+
return `invalid asset ${kind === "flow" ? "id" : "name"} "${identity}" \u2014 ${ASSET_NAME_HINT}`;
|
|
211
|
+
}
|
|
212
|
+
return void 0;
|
|
213
|
+
}
|
|
214
|
+
function scaffoldDefinitionErrors(kind, parsed) {
|
|
215
|
+
const out = [];
|
|
216
|
+
if (kind === "flow") {
|
|
217
|
+
if (parsed.description === FLOW_DESCRIPTION_PLACEHOLDER) {
|
|
218
|
+
out.push("description is still the scaffold placeholder; say what the flow does");
|
|
219
|
+
}
|
|
220
|
+
if (parsed.nodes === void 0) {
|
|
221
|
+
out.push("nodes is missing; a flow needs at least one node");
|
|
222
|
+
} else if (Array.isArray(parsed.nodes) && parsed.nodes.length === 0) {
|
|
223
|
+
out.push("nodes is still the scaffold placeholder (nodes: []); add the flow's nodes");
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
if (kind === "preset") {
|
|
227
|
+
if (parsed.description === PRESET_DESCRIPTION_PLACEHOLDER) {
|
|
228
|
+
out.push(
|
|
229
|
+
`description is still the scaffold placeholder ("${PRESET_DESCRIPTION_PLACEHOLDER}"); say what the preset does`
|
|
230
|
+
);
|
|
231
|
+
}
|
|
232
|
+
const items = Array.isArray(parsed.items) ? parsed.items : [];
|
|
233
|
+
const placeholderItem = items.some((item) => {
|
|
234
|
+
const ref = typeof item === "string" ? item : item?.ref;
|
|
235
|
+
return typeof ref === "string" && ref.trim() === PRESET_ITEM_PLACEHOLDER_REF;
|
|
236
|
+
});
|
|
237
|
+
if (placeholderItem) {
|
|
238
|
+
out.push(
|
|
239
|
+
`item ${PRESET_ITEM_PLACEHOLDER_REF} is still the scaffold placeholder; replace it with the preset's real items`
|
|
240
|
+
);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
return out;
|
|
244
|
+
}
|
|
245
|
+
function checkAsset(kind, parsed, body, dirName, registry, rawText) {
|
|
246
|
+
const errors = [];
|
|
247
|
+
const error2 = (text) => {
|
|
248
|
+
errors.push({ tag: kind, text, conformance: false });
|
|
249
|
+
};
|
|
250
|
+
const identity = manifestIdentityError(kind, parsed);
|
|
251
|
+
if (identity) error2(identity);
|
|
252
|
+
const semver = versionProblemText(parsed, rawText);
|
|
253
|
+
if (semver) error2(semver);
|
|
254
|
+
const effective = withManifestDefaults(kind, parsed);
|
|
255
|
+
const versionKey = ["skill", "prompt", "contract"].includes(kind) ? "metadata.version" : "version";
|
|
256
|
+
const provider = registry.getProvider(kind);
|
|
257
|
+
if (!provider) {
|
|
258
|
+
error2(`unknown_asset_kind: kind "${kind}" is not registered`);
|
|
259
|
+
} else {
|
|
260
|
+
const result = provider.validateManifest(effective);
|
|
261
|
+
if (!result.ok) {
|
|
262
|
+
for (const e of result.errors) {
|
|
263
|
+
if (e.path === "version" || e.path === "metadata.version") {
|
|
264
|
+
if (!semver) {
|
|
265
|
+
error2(`${e.path}: must be a semver string \u2014 set ${versionKey}: ${DEFAULT_VERSION}`);
|
|
266
|
+
}
|
|
267
|
+
continue;
|
|
268
|
+
}
|
|
269
|
+
error2(`${e.path ? `${e.path}: ` : ""}${e.message}`);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
const description = parsed.description;
|
|
274
|
+
if (kind !== "skill" && typeof description === "string" && description.trim().startsWith(SKILL_DESCRIPTION_PLACEHOLDER_PREFIX)) {
|
|
275
|
+
error2(
|
|
276
|
+
`description: description is still the scaffold placeholder (${SKILL_DESCRIPTION_PLACEHOLDER_PREFIX} \u2026) \u2014 say what the ${kind} does and when to use it`
|
|
277
|
+
);
|
|
278
|
+
}
|
|
279
|
+
for (const text of scaffoldDefinitionErrors(kind, parsed)) error2(text);
|
|
280
|
+
if (kind === "flow") {
|
|
281
|
+
const flow = parseFlowDefinition(effective);
|
|
282
|
+
if (!flow.ok) {
|
|
283
|
+
for (const e of flow.errors) {
|
|
284
|
+
error2(`invalid flow definition: ${e.path || "<root>"}: ${e.message}`);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
return { errors, advisories: checkAssetManifest(kind, parsed, body, dirName) };
|
|
289
|
+
}
|
|
290
|
+
function findAssetManifestFile(dir, kind, name) {
|
|
291
|
+
const candidates = [];
|
|
292
|
+
if (kind === "skill") candidates.push("SKILL.md");
|
|
293
|
+
else if (kind === "agent") candidates.push("agent.yaml", "AGENT.md");
|
|
294
|
+
else if (kind === "contract") candidates.push("CONTRACT.md");
|
|
295
|
+
else if (kind === "prompt") candidates.push(`${name}.prompt.md`);
|
|
296
|
+
else if (kind === "flow") candidates.push(`${name}.flow.yaml`, `${name}.flow.json`);
|
|
297
|
+
else if (kind === "preset") candidates.push(`${name}.preset.yaml`);
|
|
298
|
+
for (const c of candidates) {
|
|
299
|
+
const file = path3.join(dir, c);
|
|
300
|
+
if (fs3.existsSync(file)) return file;
|
|
301
|
+
}
|
|
302
|
+
const suffix = kind === "prompt" ? ".prompt.md" : kind === "flow" ? ".flow.yaml" : kind === "preset" ? ".preset.yaml" : null;
|
|
303
|
+
if (suffix && fs3.existsSync(dir)) {
|
|
304
|
+
const matches = fs3.readdirSync(dir).filter((f) => f.endsWith(suffix));
|
|
305
|
+
if (matches.length === 1) return path3.join(dir, matches[0]);
|
|
306
|
+
}
|
|
307
|
+
return null;
|
|
308
|
+
}
|
|
309
|
+
function readAssetBody(file, text) {
|
|
310
|
+
if (file.endsWith(".md")) return parseFrontmatter(text).body;
|
|
311
|
+
if (path3.basename(file) !== "agent.yaml") return void 0;
|
|
312
|
+
const soul = path3.join(path3.dirname(file), "SOUL.md");
|
|
313
|
+
return fs3.existsSync(soul) ? fs3.readFileSync(soul, "utf8").trim() : void 0;
|
|
314
|
+
}
|
|
315
|
+
function checkAssetFile(file, kind, registry, libraryRoot) {
|
|
316
|
+
let text;
|
|
317
|
+
try {
|
|
318
|
+
text = fs3.readFileSync(file, "utf8");
|
|
319
|
+
} catch {
|
|
320
|
+
return [];
|
|
321
|
+
}
|
|
322
|
+
const res = parseManifestFile(file, text);
|
|
323
|
+
if (!res.ok) return [];
|
|
324
|
+
const errors = checkAsset(
|
|
325
|
+
kind,
|
|
326
|
+
res.data,
|
|
327
|
+
readAssetBody(file, text),
|
|
328
|
+
path3.basename(path3.dirname(file)),
|
|
329
|
+
registry,
|
|
330
|
+
text
|
|
331
|
+
).errors;
|
|
332
|
+
if (kind === "agent" && libraryRoot !== void 0) {
|
|
333
|
+
errors.push(...checkAgentFiles(res.data, path3.dirname(file), libraryRoot));
|
|
334
|
+
}
|
|
335
|
+
return errors;
|
|
336
|
+
}
|
|
19
337
|
function manifestRequiresProblems(dir) {
|
|
20
|
-
const file =
|
|
338
|
+
const file = path3.join(dir, "skaile.manifest.yaml");
|
|
21
339
|
let doc;
|
|
22
340
|
try {
|
|
23
|
-
doc = parse(
|
|
341
|
+
doc = parse(fs3.readFileSync(file, "utf-8"));
|
|
24
342
|
} catch {
|
|
25
343
|
return [];
|
|
26
344
|
}
|
|
@@ -58,13 +376,13 @@ async function knownAssetVersions(dir) {
|
|
|
58
376
|
};
|
|
59
377
|
addManifest(dir);
|
|
60
378
|
const indexPath = resolveIndexPath();
|
|
61
|
-
if (!
|
|
379
|
+
if (!fs3.existsSync(indexPath)) return known;
|
|
62
380
|
const index = new LocalIndex({ indexPath, kindRegistry: getKindRegistry() });
|
|
63
381
|
try {
|
|
64
382
|
for (const def of await index.listAssetDefs())
|
|
65
383
|
add(def.publisher, def.kind, def.name, def.version);
|
|
66
384
|
for (const lib of await index.listSources()) {
|
|
67
|
-
if (
|
|
385
|
+
if (path3.resolve(lib.path) !== path3.resolve(dir) && fs3.existsSync(lib.path)) {
|
|
68
386
|
addManifest(lib.path);
|
|
69
387
|
}
|
|
70
388
|
}
|
|
@@ -77,7 +395,7 @@ async function knownAssetVersions(dir) {
|
|
|
77
395
|
async function unresolvedManifestDependencies(dir) {
|
|
78
396
|
let doc;
|
|
79
397
|
try {
|
|
80
|
-
doc = parse(
|
|
398
|
+
doc = parse(fs3.readFileSync(path3.join(dir, SKAILE_MANIFEST_FILENAME), "utf-8"));
|
|
81
399
|
} catch {
|
|
82
400
|
return [];
|
|
83
401
|
}
|
|
@@ -129,7 +447,7 @@ function requireValidPublisherOrExit(raw) {
|
|
|
129
447
|
function manifestPublisherProblems(dir) {
|
|
130
448
|
let doc;
|
|
131
449
|
try {
|
|
132
|
-
doc = parse(
|
|
450
|
+
doc = parse(fs3.readFileSync(path3.join(dir, SKAILE_MANIFEST_FILENAME), "utf-8"));
|
|
133
451
|
} catch {
|
|
134
452
|
return [];
|
|
135
453
|
}
|
|
@@ -171,7 +489,7 @@ async function indexLibrary(lib, index, opts = {}) {
|
|
|
171
489
|
const lost = new Set(res.pruned);
|
|
172
490
|
for (const other of await own.listSources()) {
|
|
173
491
|
if (other.id === lib.id || other.backend !== "local" || !other.path) continue;
|
|
174
|
-
if (!
|
|
492
|
+
if (!fs3.existsSync(other.path)) continue;
|
|
175
493
|
await new LocalCatalogSource(own, other.id, other.path, getKindRegistry()).sync({
|
|
176
494
|
only: lost
|
|
177
495
|
});
|
|
@@ -208,16 +526,16 @@ function warnLibraryNameFallback(libName, resolved, hasPublisherFlag = false) {
|
|
|
208
526
|
);
|
|
209
527
|
}
|
|
210
528
|
function normalizeAssetFrontmatter(assetDir) {
|
|
211
|
-
let markerFile = ["SKILL.md", "AGENT.md", "CONTRACT.md"].map((m) =>
|
|
529
|
+
let markerFile = ["SKILL.md", "AGENT.md", "CONTRACT.md"].map((m) => path3.join(assetDir, m)).find((f) => fs3.existsSync(f));
|
|
212
530
|
if (!markerFile) {
|
|
213
|
-
const promptMd =
|
|
214
|
-
if (promptMd) markerFile =
|
|
531
|
+
const promptMd = fs3.readdirSync(assetDir).find((f) => f.endsWith(".prompt.md"));
|
|
532
|
+
if (promptMd) markerFile = path3.join(assetDir, promptMd);
|
|
215
533
|
}
|
|
216
534
|
if (!markerFile) return;
|
|
217
535
|
try {
|
|
218
|
-
const { data, body } = parseFrontmatter(
|
|
536
|
+
const { data, body } = parseFrontmatter(fs3.readFileSync(markerFile, "utf8"));
|
|
219
537
|
const fm = stringify(data).trimEnd();
|
|
220
|
-
|
|
538
|
+
fs3.writeFileSync(markerFile, `---
|
|
221
539
|
${fm}
|
|
222
540
|
---
|
|
223
541
|
|
|
@@ -238,7 +556,7 @@ async function registerLibraryAsset(lib, index, input) {
|
|
|
238
556
|
upsertManifestAsset(lib.path, {
|
|
239
557
|
kind: input.kind,
|
|
240
558
|
name: input.name,
|
|
241
|
-
root:
|
|
559
|
+
root: path3.relative(lib.path, input.assetDir) || input.name,
|
|
242
560
|
version: input.version,
|
|
243
561
|
publisher
|
|
244
562
|
});
|
|
@@ -261,17 +579,17 @@ function findFiles(root, match) {
|
|
|
261
579
|
const walk = (dir) => {
|
|
262
580
|
let entries;
|
|
263
581
|
try {
|
|
264
|
-
entries =
|
|
582
|
+
entries = fs3.readdirSync(dir, { withFileTypes: true });
|
|
265
583
|
} catch {
|
|
266
584
|
return;
|
|
267
585
|
}
|
|
268
586
|
for (const entry of entries) {
|
|
269
587
|
if (entry.isDirectory()) {
|
|
270
588
|
if (!entry.name.startsWith(".") && entry.name !== "node_modules") {
|
|
271
|
-
walk(
|
|
589
|
+
walk(path3.join(dir, entry.name));
|
|
272
590
|
}
|
|
273
591
|
} else if (match(entry.name)) {
|
|
274
|
-
found.push(
|
|
592
|
+
found.push(path3.join(dir, entry.name));
|
|
275
593
|
}
|
|
276
594
|
}
|
|
277
595
|
};
|
|
@@ -293,7 +611,7 @@ function warnIgnoredDomainFiles(root) {
|
|
|
293
611
|
function warnLegacyBundleFiles(root) {
|
|
294
612
|
const files = findFiles(root, (name) => name.endsWith(".bundle.yaml"));
|
|
295
613
|
if (files.length > 0) {
|
|
296
|
-
const shown = files.slice(0, 5).map((f) =>
|
|
614
|
+
const shown = files.slice(0, 5).map((f) => path3.relative(root, f) || f);
|
|
297
615
|
const more = files.length > shown.length ? `, +${files.length - shown.length} more` : "";
|
|
298
616
|
logWarn(
|
|
299
617
|
`${files.length} *.bundle.yaml file(s) are not scanned (the bundle kind became preset): ${shown.join(", ")}${more}. Run \`skaile migrate assets ${root} --write\` to rename them to *.preset.yaml. See ${LIBRARY_UPGRADE_DOCS}`
|
|
@@ -301,165 +619,7 @@ function warnLegacyBundleFiles(root) {
|
|
|
301
619
|
}
|
|
302
620
|
return files.length;
|
|
303
621
|
}
|
|
304
|
-
var BODY_PLACEHOLDER_BY_KIND = {
|
|
305
|
-
skill: SKILL_BODY_PLACEHOLDER,
|
|
306
|
-
agent: AGENT_BODY_PLACEHOLDER,
|
|
307
|
-
prompt: PROMPT_BODY_PLACEHOLDER,
|
|
308
|
-
contract: CONTRACT_BODY_PLACEHOLDER
|
|
309
|
-
};
|
|
310
|
-
var MARKDOWN_SCAFFOLD_KINDS = {
|
|
311
|
-
skill: true,
|
|
312
|
-
agent: true,
|
|
313
|
-
prompt: true,
|
|
314
|
-
contract: true
|
|
315
|
-
};
|
|
316
|
-
var FLOW_DESCRIPTION_PLACEHOLDER = "Flow description";
|
|
317
|
-
function checkAssetManifest(kind, parsed, body, dirName) {
|
|
318
|
-
const out = [];
|
|
319
|
-
if (kind === "skill") {
|
|
320
|
-
for (const f of checkAgentSkillConformance(parsed, { dirName })) {
|
|
321
|
-
out.push({ tag: "skill conformance", text: `${f.field}: ${f.message}`, conformance: true });
|
|
322
|
-
}
|
|
323
|
-
}
|
|
324
|
-
if (MARKDOWN_SCAFFOLD_KINDS[kind]) {
|
|
325
|
-
const bodyText = body?.replace(/^#[^\n]*\n+/, "");
|
|
326
|
-
const isPlaceholder = bodyText === SKILL_BODY_PLACEHOLDER || bodyText === BODY_PLACEHOLDER_BY_KIND[kind];
|
|
327
|
-
if (isPlaceholder) {
|
|
328
|
-
const noun = kind === "skill" ? "skill prompt" : kind;
|
|
329
|
-
out.push({
|
|
330
|
-
tag: kind,
|
|
331
|
-
text: `body is still the scaffold placeholder; write the ${noun}`,
|
|
332
|
-
conformance: false
|
|
333
|
-
});
|
|
334
|
-
}
|
|
335
|
-
}
|
|
336
|
-
if (kind === "flow") {
|
|
337
|
-
if (parsed.description === FLOW_DESCRIPTION_PLACEHOLDER) {
|
|
338
|
-
out.push({
|
|
339
|
-
tag: "flow",
|
|
340
|
-
text: "description is still the scaffold placeholder; say what the flow does",
|
|
341
|
-
conformance: false
|
|
342
|
-
});
|
|
343
|
-
}
|
|
344
|
-
if (Array.isArray(parsed.nodes) && parsed.nodes.length === 0) {
|
|
345
|
-
out.push({
|
|
346
|
-
tag: "flow",
|
|
347
|
-
text: "nodes is still the scaffold placeholder (nodes: []); add the flow's nodes",
|
|
348
|
-
conformance: false
|
|
349
|
-
});
|
|
350
|
-
}
|
|
351
|
-
}
|
|
352
|
-
if (kind === "preset") {
|
|
353
|
-
if (parsed.description === PRESET_DESCRIPTION_PLACEHOLDER) {
|
|
354
|
-
out.push({
|
|
355
|
-
tag: "preset",
|
|
356
|
-
text: `description is still the scaffold placeholder ("${PRESET_DESCRIPTION_PLACEHOLDER}"); say what the preset does`,
|
|
357
|
-
conformance: false
|
|
358
|
-
});
|
|
359
|
-
}
|
|
360
|
-
const items = Array.isArray(parsed.items) ? parsed.items : [];
|
|
361
|
-
const placeholderItem = items.some((item) => {
|
|
362
|
-
const ref = typeof item === "string" ? item : item?.ref;
|
|
363
|
-
return typeof ref === "string" && ref.trim() === PRESET_ITEM_PLACEHOLDER_REF;
|
|
364
|
-
});
|
|
365
|
-
if (placeholderItem) {
|
|
366
|
-
out.push({
|
|
367
|
-
tag: "preset",
|
|
368
|
-
text: `item ${PRESET_ITEM_PLACEHOLDER_REF} is still the scaffold placeholder; replace it with the preset's real items`,
|
|
369
|
-
conformance: false
|
|
370
|
-
});
|
|
371
|
-
}
|
|
372
|
-
}
|
|
373
|
-
return out;
|
|
374
|
-
}
|
|
375
|
-
function declaredVersion(parsed) {
|
|
376
|
-
const scalar = (v) => typeof v === "string" ? v : typeof v === "number" ? String(v) : void 0;
|
|
377
|
-
const meta = parsed.metadata;
|
|
378
|
-
const nested = meta !== null && typeof meta === "object" ? scalar(meta.version) : void 0;
|
|
379
|
-
return scalar(parsed.version) ?? nested;
|
|
380
|
-
}
|
|
381
|
-
function invalidSemverText(version) {
|
|
382
|
-
return SEMVER_RE.test(version) ? void 0 : `version "${version}" is not valid semver`;
|
|
383
|
-
}
|
|
384
|
-
function duplicateAssetMessage(kind, name, dir, detail, library) {
|
|
385
|
-
return `${kind}:${name} found in ${dir} but ${detail}. Rename or delete one of the two directories, then re-run \`skaile library index ${library}\`.`;
|
|
386
|
-
}
|
|
387
|
-
function checkAsset(kind, parsed, body, dirName, registry) {
|
|
388
|
-
const errors = [];
|
|
389
|
-
const error = (text) => {
|
|
390
|
-
errors.push({ tag: kind, text, conformance: false });
|
|
391
|
-
};
|
|
392
|
-
const version = declaredVersion(parsed);
|
|
393
|
-
const semver = version === void 0 ? void 0 : invalidSemverText(version);
|
|
394
|
-
if (semver) error(semver);
|
|
395
|
-
const provider = registry.getProvider(kind);
|
|
396
|
-
if (!provider) {
|
|
397
|
-
error(`unknown_asset_kind: kind "${kind}" is not registered`);
|
|
398
|
-
} else {
|
|
399
|
-
const result = provider.validateManifest(parsed);
|
|
400
|
-
if (!result.ok) {
|
|
401
|
-
for (const e of result.errors) error(`${e.path ? `${e.path}: ` : ""}${e.message}`);
|
|
402
|
-
}
|
|
403
|
-
}
|
|
404
|
-
const description = parsed.description;
|
|
405
|
-
if (kind !== "skill" && typeof description === "string" && description.trim().startsWith(SKILL_DESCRIPTION_PLACEHOLDER_PREFIX)) {
|
|
406
|
-
error(
|
|
407
|
-
`description: description is still the scaffold placeholder (${SKILL_DESCRIPTION_PLACEHOLDER_PREFIX} \u2026) \u2014 say what the ${kind} does and when to use it`
|
|
408
|
-
);
|
|
409
|
-
}
|
|
410
|
-
if (kind === "flow") {
|
|
411
|
-
const flow = parseFlowDefinition(parsed);
|
|
412
|
-
if (!flow.ok) {
|
|
413
|
-
for (const e of flow.errors) {
|
|
414
|
-
error(`invalid flow definition: ${e.path || "<root>"}: ${e.message}`);
|
|
415
|
-
}
|
|
416
|
-
}
|
|
417
|
-
}
|
|
418
|
-
return { errors, advisories: checkAssetManifest(kind, parsed, body, dirName) };
|
|
419
|
-
}
|
|
420
|
-
function findAssetManifestFile(dir, kind, name) {
|
|
421
|
-
const candidates = [];
|
|
422
|
-
if (kind === "skill") candidates.push("SKILL.md");
|
|
423
|
-
else if (kind === "agent") candidates.push("agent.yaml", "AGENT.md");
|
|
424
|
-
else if (kind === "contract") candidates.push("CONTRACT.md");
|
|
425
|
-
else if (kind === "prompt") candidates.push(`${name}.prompt.md`);
|
|
426
|
-
else if (kind === "flow") candidates.push(`${name}.flow.yaml`, `${name}.flow.json`);
|
|
427
|
-
else if (kind === "preset") candidates.push(`${name}.preset.yaml`);
|
|
428
|
-
for (const c of candidates) {
|
|
429
|
-
const file = path.join(dir, c);
|
|
430
|
-
if (fs.existsSync(file)) return file;
|
|
431
|
-
}
|
|
432
|
-
const suffix = kind === "prompt" ? ".prompt.md" : kind === "flow" ? ".flow.yaml" : kind === "preset" ? ".preset.yaml" : null;
|
|
433
|
-
if (suffix && fs.existsSync(dir)) {
|
|
434
|
-
const matches = fs.readdirSync(dir).filter((f) => f.endsWith(suffix));
|
|
435
|
-
if (matches.length === 1) return path.join(dir, matches[0]);
|
|
436
|
-
}
|
|
437
|
-
return null;
|
|
438
|
-
}
|
|
439
|
-
function readAssetBody(file, text) {
|
|
440
|
-
if (file.endsWith(".md")) return parseFrontmatter(text).body;
|
|
441
|
-
if (path.basename(file) !== "agent.yaml") return void 0;
|
|
442
|
-
const soul = path.join(path.dirname(file), "SOUL.md");
|
|
443
|
-
return fs.existsSync(soul) ? fs.readFileSync(soul, "utf8").trim() : void 0;
|
|
444
|
-
}
|
|
445
|
-
function checkAssetFile(file, kind, registry) {
|
|
446
|
-
let text;
|
|
447
|
-
try {
|
|
448
|
-
text = fs.readFileSync(file, "utf8");
|
|
449
|
-
} catch {
|
|
450
|
-
return [];
|
|
451
|
-
}
|
|
452
|
-
const res = parseManifestFile(file, text);
|
|
453
|
-
if (!res.ok) return [];
|
|
454
|
-
return checkAsset(
|
|
455
|
-
kind,
|
|
456
|
-
res.data,
|
|
457
|
-
readAssetBody(file, text),
|
|
458
|
-
path.basename(path.dirname(file)),
|
|
459
|
-
registry
|
|
460
|
-
).errors;
|
|
461
|
-
}
|
|
462
622
|
|
|
463
|
-
export { DOMAIN_REMOVED_HINT, checkAsset, checkAssetFile, declaredVersion, duplicateAssetMessage, exitOnManifestPublisherProblems, findAssetManifestFile, indexLibrary, invalidSemverText, manifestPublisherProblems, manifestRequiresProblems, readAssetBody, registerLibraryAsset, rejectRemovedDomainOption, removedDomainOption, requireValidPublisherOrExit, resolveLibraryPublisherDetailed, unresolvedManifestDependencies, warnIgnoredDomainFiles, warnLegacyBundleFiles, warnLibraryNameFallback };
|
|
464
|
-
//# sourceMappingURL=chunk-
|
|
465
|
-
//# sourceMappingURL=chunk-
|
|
623
|
+
export { DOMAIN_REMOVED_HINT, agentComposeRefAdvisories, checkAgentFiles, checkAsset, checkAssetFile, declaredVersion, duplicateAssetMessage, exitOnManifestPublisherProblems, findAssetManifestFile, indexLibrary, invalidSemverText, manifestPublisherProblems, manifestRequiresProblems, readAssetBody, registerLibraryAsset, rejectRemovedDomainOption, removedDomainOption, requireValidPublisherOrExit, resolveLibraryPublisherDetailed, unresolvedManifestDependencies, warnIgnoredDomainFiles, warnLegacyBundleFiles, warnLibraryNameFallback };
|
|
624
|
+
//# sourceMappingURL=chunk-ID745F3R.js.map
|
|
625
|
+
//# sourceMappingURL=chunk-ID745F3R.js.map
|