@skaile/workspaces 5.13.0 → 5.15.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 +108 -0
- package/README.md +1 -1
- package/dist/app-sdk/index.js +1 -1
- package/dist/{asset-feeds-ALMTHLPV.js → asset-feeds-LIDC7547.js} +19 -19
- package/dist/{asset-feeds-ALMTHLPV.js.map → asset-feeds-LIDC7547.js.map} +1 -1
- package/dist/asset-manager/catalog-deployer.js +7 -7
- package/dist/asset-manager/index.js +14 -14
- package/dist/asset-manager/installer.js +9 -9
- package/dist/asset-manager/renderers.js +8 -8
- package/dist/asset-manager/src/index.d.ts +128 -6
- package/dist/asset-manager/src/index.d.ts.map +1 -1
- package/dist/asset-manager/src/install-instances.d.ts +19 -0
- package/dist/asset-manager/src/install-instances.d.ts.map +1 -1
- package/dist/asset-manager/src/installer.d.ts.map +1 -1
- package/dist/asset-manager/src/mcp-config.d.ts +5 -0
- package/dist/asset-manager/src/mcp-config.d.ts.map +1 -1
- package/dist/bridge/drivers/claude-sdk.js +162 -27
- package/dist/bridge/drivers/claude-sdk.js.map +1 -1
- package/dist/bridge/drivers/codex.js +80 -15
- package/dist/bridge/drivers/codex.js.map +1 -1
- package/dist/bridge/drivers/continue.js +10 -9
- package/dist/bridge/drivers/continue.js.map +1 -1
- package/dist/bridge/drivers/echo.js +4 -3
- package/dist/bridge/drivers/echo.js.map +1 -1
- package/dist/bridge/drivers/gemini.js +7 -6
- package/dist/bridge/drivers/goose.js +10 -9
- package/dist/bridge/drivers/goose.js.map +1 -1
- package/dist/bridge/drivers/omp.js +113 -40
- package/dist/bridge/drivers/omp.js.map +1 -1
- package/dist/bridge/drivers/opencode.js +10 -9
- package/dist/bridge/drivers/opencode.js.map +1 -1
- package/dist/bridge/drivers/qwen.js +7 -6
- package/dist/bridge/drivers/qwen.js.map +1 -1
- package/dist/bridge/index.js +14 -13
- package/dist/bridge/src/codex/friendly-error.d.ts +19 -0
- package/dist/bridge/src/codex/friendly-error.d.ts.map +1 -0
- package/dist/bridge/src/drivers/claude-sdk.d.ts +2 -0
- package/dist/bridge/src/drivers/claude-sdk.d.ts.map +1 -1
- package/dist/bridge/src/drivers/claude-self-turns.d.ts +72 -0
- package/dist/bridge/src/drivers/claude-self-turns.d.ts.map +1 -0
- package/dist/bridge/src/drivers/codex.d.ts.map +1 -1
- package/dist/bridge/src/drivers/omp-models-yml.d.ts +17 -7
- package/dist/bridge/src/drivers/omp-models-yml.d.ts.map +1 -1
- package/dist/bridge/src/drivers/omp.d.ts +7 -0
- package/dist/bridge/src/drivers/omp.d.ts.map +1 -1
- package/dist/bridge/src/normalizer.d.ts.map +1 -1
- package/dist/bridge/src/types.d.ts +12 -0
- package/dist/bridge/src/types.d.ts.map +1 -1
- package/dist/{chunk-VLBIME5L.js → chunk-2LTF2ZHH.js} +4 -4
- package/dist/{chunk-VLBIME5L.js.map → chunk-2LTF2ZHH.js.map} +1 -1
- package/dist/chunk-4AKR4XPQ.js +273 -0
- package/dist/chunk-4AKR4XPQ.js.map +1 -0
- package/dist/{chunk-BF422IDP.js → chunk-4QINFQ27.js} +159 -20
- package/dist/chunk-4QINFQ27.js.map +1 -0
- package/dist/{chunk-V5JHD4I2.js → chunk-54TVXZP3.js} +3 -3
- package/dist/{chunk-V5JHD4I2.js.map → chunk-54TVXZP3.js.map} +1 -1
- package/dist/{chunk-XJYBCDY2.js → chunk-74THIMZV.js} +3 -3
- package/dist/{chunk-XJYBCDY2.js.map → chunk-74THIMZV.js.map} +1 -1
- package/dist/{chunk-IY5E7Y5W.js → chunk-ANSZULXH.js} +32 -9
- package/dist/chunk-ANSZULXH.js.map +1 -0
- package/dist/{chunk-J4DB5G36.js → chunk-AVUJBSFA.js} +2 -2
- package/dist/{chunk-J4DB5G36.js.map → chunk-AVUJBSFA.js.map} +1 -1
- package/dist/{chunk-FB3NREF7.js → chunk-AXNX2SKZ.js} +483 -32
- package/dist/chunk-AXNX2SKZ.js.map +1 -0
- package/dist/{chunk-H5U7LNTJ.js → chunk-BFMYYNDT.js} +25 -3
- package/dist/chunk-BFMYYNDT.js.map +1 -0
- package/dist/{chunk-4L4R5LV3.js → chunk-BV7NLPI6.js} +4 -4
- package/dist/{chunk-4L4R5LV3.js.map → chunk-BV7NLPI6.js.map} +1 -1
- package/dist/{chunk-FHDK3BFD.js → chunk-D2MZZ2KB.js} +3 -3
- package/dist/{chunk-FHDK3BFD.js.map → chunk-D2MZZ2KB.js.map} +1 -1
- package/dist/{chunk-F4NJDSR7.js → chunk-D5WTOVLG.js} +7 -4
- package/dist/chunk-D5WTOVLG.js.map +1 -0
- package/dist/{chunk-Y4Z7LGSH.js → chunk-DP6YRAPZ.js} +67 -23
- package/dist/chunk-DP6YRAPZ.js.map +1 -0
- package/dist/{chunk-AHCI4V5L.js → chunk-DPCEQOIZ.js} +3 -3
- package/dist/{chunk-AHCI4V5L.js.map → chunk-DPCEQOIZ.js.map} +1 -1
- package/dist/{chunk-U27JRO5L.js → chunk-ESXZJP4M.js} +3 -3
- package/dist/{chunk-U27JRO5L.js.map → chunk-ESXZJP4M.js.map} +1 -1
- package/dist/{chunk-B7CZYFB2.js → chunk-GLMKS6V6.js} +4 -4
- package/dist/{chunk-B7CZYFB2.js.map → chunk-GLMKS6V6.js.map} +1 -1
- package/dist/{chunk-BVJU2GKE.js → chunk-GQ5OYFVD.js} +4 -271
- package/dist/chunk-GQ5OYFVD.js.map +1 -0
- package/dist/{chunk-PZOO7L26.js → chunk-I3JO3NIZ.js} +4 -4
- package/dist/{chunk-PZOO7L26.js.map → chunk-I3JO3NIZ.js.map} +1 -1
- package/dist/{chunk-L3ZGYSWY.js → chunk-J76LDUDS.js} +91 -18
- package/dist/chunk-J76LDUDS.js.map +1 -0
- package/dist/{chunk-6GICC4RJ.js → chunk-JHP6MIW2.js} +56 -19
- package/dist/chunk-JHP6MIW2.js.map +1 -0
- package/dist/{chunk-PXDWTJ3P.js → chunk-KRRHADE7.js} +5 -5
- package/dist/{chunk-PXDWTJ3P.js.map → chunk-KRRHADE7.js.map} +1 -1
- package/dist/{chunk-NDUYFYJB.js → chunk-KUB4HFGK.js} +12 -7
- package/dist/chunk-KUB4HFGK.js.map +1 -0
- package/dist/{chunk-ZU24LWBI.js → chunk-LEOXPIC6.js} +3 -3
- package/dist/{chunk-ZU24LWBI.js.map → chunk-LEOXPIC6.js.map} +1 -1
- package/dist/{chunk-57SF6W6E.js → chunk-MGM5EJQQ.js} +3 -3
- package/dist/chunk-MGM5EJQQ.js.map +1 -0
- package/dist/{chunk-5SKVCMRC.js → chunk-MKTJZLQM.js} +6 -11
- package/dist/chunk-MKTJZLQM.js.map +1 -0
- package/dist/{chunk-XBYSURMK.js → chunk-N36S36OZ.js} +3 -3
- package/dist/{chunk-XBYSURMK.js.map → chunk-N36S36OZ.js.map} +1 -1
- package/dist/{chunk-NVO6WECE.js → chunk-NKDSU4Q7.js} +6 -6
- package/dist/{chunk-NVO6WECE.js.map → chunk-NKDSU4Q7.js.map} +1 -1
- package/dist/{chunk-OQ5MKDS3.js → chunk-NOF73BUH.js} +27 -6
- package/dist/chunk-NOF73BUH.js.map +1 -0
- package/dist/{chunk-4DLQESIY.js → chunk-O673TBWJ.js} +3 -3
- package/dist/{chunk-4DLQESIY.js.map → chunk-O673TBWJ.js.map} +1 -1
- package/dist/{chunk-DKGEV6SQ.js → chunk-OOQ5Q75W.js} +111 -20
- package/dist/chunk-OOQ5Q75W.js.map +1 -0
- package/dist/{chunk-PYTTF754.js → chunk-PIDMOE7R.js} +4 -4
- package/dist/{chunk-PYTTF754.js.map → chunk-PIDMOE7R.js.map} +1 -1
- package/dist/{chunk-6JKIOPT3.js → chunk-PK5XQBOC.js} +4 -4
- package/dist/{chunk-6JKIOPT3.js.map → chunk-PK5XQBOC.js.map} +1 -1
- package/dist/{chunk-6NQDDCIL.js → chunk-PQF5QHVS.js} +15 -7
- package/dist/chunk-PQF5QHVS.js.map +1 -0
- package/dist/{chunk-HWGYJMME.js → chunk-PV47EEHD.js} +4 -4
- package/dist/{chunk-HWGYJMME.js.map → chunk-PV47EEHD.js.map} +1 -1
- package/dist/{chunk-2H73V6XR.js → chunk-PW3TYWOI.js} +3 -3
- package/dist/{chunk-2H73V6XR.js.map → chunk-PW3TYWOI.js.map} +1 -1
- package/dist/{chunk-ZSMMX3JD.js → chunk-QR7W5JV4.js} +66 -16
- package/dist/chunk-QR7W5JV4.js.map +1 -0
- package/dist/chunk-RTYDYSUV.js +1336 -0
- package/dist/chunk-RTYDYSUV.js.map +1 -0
- package/dist/{chunk-7SMP4GNW.js → chunk-SAKVAG23.js} +7 -6
- package/dist/chunk-SAKVAG23.js.map +1 -0
- package/dist/{chunk-GMDSRSGI.js → chunk-SCUEPCSJ.js} +12 -9
- package/dist/chunk-SCUEPCSJ.js.map +1 -0
- package/dist/{chunk-M3P4BYRK.js → chunk-SP5NGNBV.js} +6 -3
- package/dist/chunk-SP5NGNBV.js.map +1 -0
- package/dist/{chunk-HBZD3MIW.js → chunk-SRKU7QUG.js} +233 -51
- package/dist/chunk-SRKU7QUG.js.map +1 -0
- package/dist/{chunk-2BIESC6S.js → chunk-SZPE55SB.js} +3 -3
- package/dist/{chunk-2BIESC6S.js.map → chunk-SZPE55SB.js.map} +1 -1
- package/dist/{chunk-YTZFSKWL.js → chunk-TCWECSEB.js} +3 -3
- package/dist/{chunk-YTZFSKWL.js.map → chunk-TCWECSEB.js.map} +1 -1
- package/dist/{chunk-J4OYIYFQ.js → chunk-VY6NTFE7.js} +2 -2
- package/dist/{chunk-J4OYIYFQ.js.map → chunk-VY6NTFE7.js.map} +1 -1
- package/dist/{chunk-5FYOM4RF.js → chunk-WWUWMOX2.js} +15 -11
- package/dist/chunk-WWUWMOX2.js.map +1 -0
- package/dist/{chunk-USHB5KEY.js → chunk-WXKNM2JJ.js} +3 -3
- package/dist/{chunk-USHB5KEY.js.map → chunk-WXKNM2JJ.js.map} +1 -1
- package/dist/{chunk-QO7CR3KB.js → chunk-X7DIT65W.js} +4 -4
- package/dist/{chunk-QO7CR3KB.js.map → chunk-X7DIT65W.js.map} +1 -1
- package/dist/{chunk-Y7WKXPWS.js → chunk-XX4C72CC.js} +544 -68
- package/dist/chunk-XX4C72CC.js.map +1 -0
- package/dist/{chunk-VMKMFS2Q.js → chunk-YIDZJHY6.js} +3 -3
- package/dist/{chunk-VMKMFS2Q.js.map → chunk-YIDZJHY6.js.map} +1 -1
- package/dist/{chunk-R6QHJEHE.js → chunk-YL23KWBX.js} +5 -5
- package/dist/{chunk-R6QHJEHE.js.map → chunk-YL23KWBX.js.map} +1 -1
- package/dist/{chunk-4NJ3QQHZ.js → chunk-YUURCZWY.js} +5 -5
- package/dist/{chunk-4NJ3QQHZ.js.map → chunk-YUURCZWY.js.map} +1 -1
- package/dist/{chunk-X4BAYGMT.js → chunk-ZIW34FGO.js} +3 -3
- package/dist/{chunk-X4BAYGMT.js.map → chunk-ZIW34FGO.js.map} +1 -1
- package/dist/cli/index.js +4324 -4078
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/src/agent-checks.d.ts +21 -0
- package/dist/cli/src/agent-checks.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.map +1 -1
- package/dist/cli/src/commands/library-cmd.d.ts.map +1 -1
- package/dist/cli/src/commands/library-index.d.ts +25 -5
- package/dist/cli/src/commands/library-index.d.ts.map +1 -1
- package/dist/cli/src/commands/library-publish.d.ts.map +1 -1
- package/dist/cli/src/commands/outdated.d.ts.map +1 -1
- package/dist/cli/src/commands/plugin-registry-cmd.d.ts.map +1 -1
- package/dist/cli/src/commands/preset-cmd.d.ts.map +1 -1
- package/dist/cli/src/commands/project.d.ts +16 -1
- package/dist/cli/src/commands/project.d.ts.map +1 -1
- package/dist/cli/src/commands/rebuild.d.ts.map +1 -1
- package/dist/cli/src/commands/run.d.ts.map +1 -1
- package/dist/cli/src/commands/serve-preflight.d.ts +5 -6
- package/dist/cli/src/commands/serve-preflight.d.ts.map +1 -1
- package/dist/cli/src/commands/serve.d.ts +19 -0
- package/dist/cli/src/commands/serve.d.ts.map +1 -1
- package/dist/cli/src/commands/session.d.ts.map +1 -1
- package/dist/cli/src/commands/source.d.ts +7 -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.d.ts +0 -9
- package/dist/cli/src/commands/validate.d.ts.map +1 -1
- package/dist/cli/src/skill-checks.d.ts +8 -1
- package/dist/cli/src/skill-checks.d.ts.map +1 -1
- package/dist/connectors/config.js +5 -5
- package/dist/connectors/index.js +18 -17
- package/dist/connectors/src/config.d.ts.map +1 -1
- package/dist/connectors/src/connector-manager.d.ts +8 -1
- package/dist/connectors/src/connector-manager.d.ts.map +1 -1
- package/dist/connectors/src/connector-prompt.d.ts +9 -0
- package/dist/connectors/src/connector-prompt.d.ts.map +1 -1
- package/dist/{connectors-GFKMKAXV.js → connectors-JQR5RAMC.js} +21 -20
- package/dist/{connectors-GFKMKAXV.js.map → connectors-JQR5RAMC.js.map} +1 -1
- package/dist/connectors-shared/index.js +2 -2
- package/dist/core/index.js +6 -6
- package/dist/core/manifest.js +2 -2
- package/dist/core/models.js +1 -1
- package/dist/core/publish-manifest.js +3 -3
- package/dist/core/ref.js +1 -1
- package/dist/core/runtime-assets.js +5 -5
- package/dist/core/src/driver-sdk.d.ts +31 -0
- package/dist/core/src/driver-sdk.d.ts.map +1 -0
- package/dist/core/src/index.d.ts +3 -2
- package/dist/core/src/index.d.ts.map +1 -1
- package/dist/core/src/lock.d.ts.map +1 -1
- package/dist/core/src/manifest-yaml-editor.d.ts +5 -0
- 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 +8 -0
- package/dist/core/src/models.d.ts.map +1 -1
- package/dist/core/src/publish-manifest.d.ts +28 -7
- package/dist/core/src/publish-manifest.d.ts.map +1 -1
- package/dist/core/src/repo-manager.d.ts.map +1 -1
- package/dist/core/src/walker.d.ts +4 -0
- package/dist/core/src/walker.d.ts.map +1 -1
- package/dist/core/src/workspace-config.d.ts +44 -0
- package/dist/core/src/workspace-config.d.ts.map +1 -1
- package/dist/core/workspace-config.js +4 -4
- package/dist/deploy/index.js +6 -6
- package/dist/discovery/index.js +5 -5
- package/dist/{ensure-sources-VUKHL65L.js → ensure-sources-NAGBSMJE.js} +17 -17
- package/dist/{ensure-sources-VUKHL65L.js.map → ensure-sources-NAGBSMJE.js.map} +1 -1
- package/dist/factory-assets/connectors/box.js +18 -17
- package/dist/factory-assets/connectors/deploy.js +18 -17
- package/dist/factory-assets/connectors/devserver.js +18 -17
- package/dist/factory-assets/connectors/flow/adapter.js +18 -17
- package/dist/factory-assets/connectors/flow/engine.js +7 -7
- package/dist/factory-assets/connectors/flow/run-flow.d.ts +5 -0
- package/dist/factory-assets/connectors/flow/run-flow.d.ts.map +1 -1
- package/dist/factory-assets/connectors/flow/run-flow.js +20 -19
- package/dist/factory-assets/connectors/flow.js +18 -17
- package/dist/factory-assets/connectors/git.js +18 -17
- package/dist/factory-assets/connectors/gmail.js +18 -17
- package/dist/factory-assets/connectors/googledrive.js +18 -17
- package/dist/factory-assets/connectors/local.js +18 -17
- package/dist/factory-assets/connectors/mattermost.js +18 -17
- package/dist/factory-assets/connectors/memory.js +18 -17
- package/dist/factory-assets/connectors/minio.js +18 -17
- package/dist/factory-assets/connectors/postgres.js +18 -17
- package/dist/factory-assets/connectors/s3.js +18 -17
- package/dist/factory-assets/connectors/sharepoint.js +18 -17
- package/dist/factory-assets/connectors/sqlite.js +18 -17
- package/dist/factory-assets/connectors/static-server.js +18 -17
- package/dist/factory-assets/connectors/tunnel.js +18 -17
- package/dist/factory-assets/connectors/webdav.js +18 -17
- package/dist/factory-assets/connectors/xstate-store.js +18 -17
- package/dist/factory-assets/connectors/xstate.js +18 -17
- package/dist/{flows-A4YALSZY.js → flows-CYJI3URW.js} +11 -11
- package/dist/{flows-A4YALSZY.js.map → flows-CYJI3URW.js.map} +1 -1
- package/dist/{helpers-53XZW7KF.js → helpers-XFHJDJOA.js} +17 -17
- package/dist/{helpers-53XZW7KF.js.map → helpers-XFHJDJOA.js.map} +1 -1
- package/dist/library/index.js +11 -11
- package/dist/library/install.js +5 -5
- package/dist/library/src/index.d.ts +1 -1
- 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/manifest-writer.d.ts +15 -0
- package/dist/library/src/manifest-writer.d.ts.map +1 -1
- package/dist/library/src/remote/remote-catalog-source.d.ts +6 -1
- package/dist/library/src/remote/remote-catalog-source.d.ts.map +1 -1
- package/dist/library/src/remote/rest-catalog-source.d.ts +6 -1
- package/dist/library/src/remote/rest-catalog-source.d.ts.map +1 -1
- package/dist/{library-publish-FFIPWIRM.js → library-publish-FC3ZABR2.js} +91 -29
- package/dist/library-publish-FC3ZABR2.js.map +1 -0
- package/dist/model-endpoint/index.d.ts +2 -0
- package/dist/model-endpoint/index.js +9 -0
- package/dist/model-endpoint/index.js.map +1 -0
- package/dist/model-endpoint/src/index.d.ts +4 -0
- package/dist/model-endpoint/src/index.d.ts.map +1 -0
- package/dist/model-endpoint/src/openai-chat.d.ts +105 -0
- package/dist/model-endpoint/src/openai-chat.d.ts.map +1 -0
- package/dist/model-endpoint/src/openai-responses.d.ts +106 -0
- package/dist/model-endpoint/src/openai-responses.d.ts.map +1 -0
- package/dist/model-endpoint/src/openai-shared.d.ts +77 -0
- package/dist/model-endpoint/src/openai-shared.d.ts.map +1 -0
- package/dist/model-endpoint/src/resolve.d.ts +36 -0
- package/dist/model-endpoint/src/resolve.d.ts.map +1 -0
- package/dist/model-endpoint/src/server.d.ts +16 -0
- package/dist/model-endpoint/src/server.d.ts.map +1 -0
- package/dist/model-endpoint/src/types.d.ts +78 -0
- package/dist/model-endpoint/src/types.d.ts.map +1 -0
- package/dist/open-library-5ET7SAJC.js +40 -0
- package/dist/{open-library-PZAT3TJA.js.map → open-library-5ET7SAJC.js.map} +1 -1
- package/dist/open-registry-X6YQVP7V.js +32 -0
- package/dist/{open-registry-W46UXZ3I.js.map → open-registry-X6YQVP7V.js.map} +1 -1
- package/dist/{paths-KKY3NSBZ.js → paths-NXWIBZCX.js} +9 -9
- package/dist/{paths-KKY3NSBZ.js.map → paths-NXWIBZCX.js.map} +1 -1
- package/dist/{plugin-store-CK7YWRIC.js → plugin-store-BIITCNOZ.js} +8 -8
- package/dist/{plugin-store-CK7YWRIC.js.map → plugin-store-BIITCNOZ.js.map} +1 -1
- package/dist/project-2UXHSVVA.js +82 -0
- package/dist/{project-EZUH7PUJ.js.map → project-2UXHSVVA.js.map} +1 -1
- package/dist/resolver/index.js +7 -7
- package/dist/runner/index.js +35 -32
- package/dist/runner/src/event-gap-buffer.d.ts.map +1 -1
- package/dist/runner/src/model-endpoint-discovery.d.ts +64 -0
- package/dist/runner/src/model-endpoint-discovery.d.ts.map +1 -0
- package/dist/runner/src/resources.d.ts.map +1 -1
- package/dist/runner/src/serve.d.ts +14 -0
- package/dist/runner/src/serve.d.ts.map +1 -1
- package/dist/runner/src/session-builder.d.ts +8 -0
- package/dist/runner/src/session-builder.d.ts.map +1 -1
- package/dist/runner/src/session.d.ts +15 -0
- package/dist/runner/src/session.d.ts.map +1 -1
- package/dist/sdk/asset-manager.js +14 -14
- package/dist/sdk/bridge.js +14 -13
- package/dist/sdk/core.js +6 -6
- package/dist/sdk/flow.js +7 -7
- package/dist/sdk/index.js +35 -32
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/resolver.js +7 -7
- package/dist/sdk/runner.js +35 -32
- package/dist/sdk/session.js +2 -2
- package/dist/sdk/transport/ws/server.js +1 -1
- package/dist/sdk/transport/ws.js +1 -1
- package/dist/sdk/transport.js +1 -1
- package/dist/sdk/types.js +1 -1
- package/dist/serve-preflight-GD7IQFA3.js +54 -0
- package/dist/serve-preflight-GD7IQFA3.js.map +1 -0
- package/dist/session/index.js +2 -2
- package/dist/{setup-L632QIHV.js → setup-IKH4R7UN.js} +25 -24
- package/dist/setup-IKH4R7UN.js.map +1 -0
- package/dist/{skills-OY3Y5GKA.js → skills-XVHOXOOH.js} +12 -12
- package/dist/{skills-OY3Y5GKA.js.map → skills-XVHOXOOH.js.map} +1 -1
- package/dist/source-M6IARYNO.js +83 -0
- package/dist/{source-36FHMN5V.js.map → source-M6IARYNO.js.map} +1 -1
- package/dist/source-fetch-github-ST4MFL3D.js +4 -0
- package/dist/{source-fetch-github-PIO6EMMF.js.map → source-fetch-github-ST4MFL3D.js.map} +1 -1
- package/dist/{source-manifest-publish-NIXJSJ22.js → source-manifest-publish-UP2IS2QW.js} +65 -24
- package/dist/source-manifest-publish-UP2IS2QW.js.map +1 -0
- package/dist/transport/index.js +1 -1
- package/dist/transport/src/ws/server.d.ts +16 -0
- package/dist/transport/src/ws/server.d.ts.map +1 -1
- package/dist/transport/ws/server.js +1 -1
- package/dist/transport/ws.js +1 -1
- package/dist/tui/index.js +35 -32
- 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/delivery.d.ts.map +1 -1
- package/dist/types/src/events.d.ts +55 -1
- package/dist/types/src/events.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +1 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/manifests/mcp-server.d.ts.map +1 -1
- package/dist/types/src/version.d.ts +11 -1
- package/dist/types/src/version.d.ts.map +1 -1
- package/dist/workspace-plugin/adapters/mcp.js +25 -24
- package/dist/workspace-plugin/adapters/omp.js +14 -14
- package/dist/workspace-plugin/index.js +1 -1
- package/dist/workspace-plugin/src/adapters/mcp.d.ts.map +1 -1
- package/package.json +14 -3
- package/dist/chunk-57SF6W6E.js.map +0 -1
- package/dist/chunk-5FYOM4RF.js.map +0 -1
- package/dist/chunk-5SKVCMRC.js.map +0 -1
- package/dist/chunk-6GICC4RJ.js.map +0 -1
- package/dist/chunk-6NQDDCIL.js.map +0 -1
- package/dist/chunk-7SMP4GNW.js.map +0 -1
- package/dist/chunk-BF422IDP.js.map +0 -1
- package/dist/chunk-BVJU2GKE.js.map +0 -1
- package/dist/chunk-DKGEV6SQ.js.map +0 -1
- package/dist/chunk-F4NJDSR7.js.map +0 -1
- package/dist/chunk-FB3NREF7.js.map +0 -1
- package/dist/chunk-GMDSRSGI.js.map +0 -1
- package/dist/chunk-H5U7LNTJ.js.map +0 -1
- package/dist/chunk-HBZD3MIW.js.map +0 -1
- package/dist/chunk-IY5E7Y5W.js.map +0 -1
- package/dist/chunk-L3ZGYSWY.js.map +0 -1
- package/dist/chunk-M3P4BYRK.js.map +0 -1
- package/dist/chunk-NDUYFYJB.js.map +0 -1
- package/dist/chunk-OQ5MKDS3.js.map +0 -1
- package/dist/chunk-PN44DOGP.js +0 -345
- package/dist/chunk-PN44DOGP.js.map +0 -1
- package/dist/chunk-Y4Z7LGSH.js.map +0 -1
- package/dist/chunk-Y7WKXPWS.js.map +0 -1
- package/dist/chunk-ZSMMX3JD.js.map +0 -1
- package/dist/library-publish-FFIPWIRM.js.map +0 -1
- package/dist/open-library-PZAT3TJA.js +0 -40
- package/dist/open-registry-W46UXZ3I.js +0 -32
- package/dist/project-EZUH7PUJ.js +0 -79
- package/dist/serve-preflight-F7MYF747.js +0 -64
- package/dist/serve-preflight-F7MYF747.js.map +0 -1
- package/dist/setup-L632QIHV.js.map +0 -1
- package/dist/source-36FHMN5V.js +0 -42
- package/dist/source-fetch-github-PIO6EMMF.js +0 -4
- package/dist/source-manifest-publish-NIXJSJ22.js.map +0 -1
|
@@ -1,21 +1,417 @@
|
|
|
1
|
-
import { openLibrary } from './chunk-
|
|
2
|
-
import { S, logErr, logWarn, logOk, logInfo } from './chunk-
|
|
3
|
-
import { getKindRegistry } from './chunk-
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
1
|
+
import { openLibrary } from './chunk-2LTF2ZHH.js';
|
|
2
|
+
import { S, logErr, logWarn, logOk, logInfo } from './chunk-PIDMOE7R.js';
|
|
3
|
+
import { getKindRegistry } from './chunk-YUURCZWY.js';
|
|
4
|
+
import { resolveBinding, UnknownCompositionKindError } from './chunk-SRKU7QUG.js';
|
|
5
|
+
import { parseFlowDefinition } from './chunk-X3RMRJNR.js';
|
|
6
|
+
import { assetRootProblem, stampManifestPublisher, upsertManifestAsset, resolveIndexPath, LocalIndex } from './chunk-OOQ5Q75W.js';
|
|
7
|
+
import { SEMVER_RE, parseManifestFile, requiresSyntaxErrors } from './chunk-NKDSU4Q7.js';
|
|
8
|
+
import { composeRefTarget, SKILL_DESCRIPTION_PLACEHOLDER_PREFIX, PRESET_DESCRIPTION_PLACEHOLDER, PRESET_ITEM_PLACEHOLDER_REF, composeSlotDiagnostics, agentDeprecationDiagnostics, SKILL_BODY_PLACEHOLDER, CONTRACT_BODY_PLACEHOLDER, PROMPT_BODY_PLACEHOLDER, AGENT_BODY_PLACEHOLDER } from './chunk-MGM5EJQQ.js';
|
|
9
|
+
import { checkAgentSkillConformance } from './chunk-4QINFQ27.js';
|
|
10
|
+
import { matchPin } from './chunk-J76LDUDS.js';
|
|
7
11
|
import { globalSkaileDir } from './chunk-L5VSIPQD.js';
|
|
8
|
-
import { SKAILE_MANIFEST_FILENAME, listLibrarySymlinks, librarySymlinkMessage
|
|
9
|
-
import { parseFrontmatter } from './chunk-
|
|
10
|
-
import { parseDep, isValidPublisher, slugifyAssetName, PUBLISHER_HINT } from './chunk-
|
|
11
|
-
import * as
|
|
12
|
+
import { SKAILE_MANIFEST_FILENAME, loadSkPublishManifest, listLibrarySymlinks, librarySymlinkMessage } from './chunk-ANSZULXH.js';
|
|
13
|
+
import { parseFrontmatter } from './chunk-SP5NGNBV.js';
|
|
14
|
+
import { parseDep, isValidPublisher, slugifyAssetName, parseAssetRef, isValidAssetName, ASSET_NAME_HINT, PUBLISHER_HINT } from './chunk-VY6NTFE7.js';
|
|
15
|
+
import * as fs3 from 'fs';
|
|
12
16
|
import { rmSync, readFileSync, mkdirSync, writeFileSync, chmodSync } from 'fs';
|
|
13
|
-
import * as
|
|
17
|
+
import * as path3 from 'path';
|
|
14
18
|
import { join, dirname } from 'path';
|
|
15
19
|
import { Option } from 'commander';
|
|
16
20
|
import { parse, stringify } from 'yaml';
|
|
17
21
|
import { randomBytes, createHash } from 'crypto';
|
|
18
22
|
|
|
23
|
+
var error = (text) => ({ tag: "agent", text, conformance: false });
|
|
24
|
+
var PSEUDO_COMPOSE_KINDS = /* @__PURE__ */ new Set(["soul"]);
|
|
25
|
+
function checkComposeKinds(parsed, registry) {
|
|
26
|
+
if (parsed === null || typeof parsed !== "object") return [];
|
|
27
|
+
const composes = parsed.composes;
|
|
28
|
+
if (!Array.isArray(composes)) return [];
|
|
29
|
+
const diagnostics = [];
|
|
30
|
+
composes.forEach((item, i) => {
|
|
31
|
+
if (item === null || typeof item !== "object") return;
|
|
32
|
+
const fields = item;
|
|
33
|
+
const kind = fields.kind;
|
|
34
|
+
if (typeof kind !== "string") return;
|
|
35
|
+
if (!PSEUDO_COMPOSE_KINDS.has(kind) && !registry.getProvider(kind)) {
|
|
36
|
+
diagnostics.push({
|
|
37
|
+
code: "unknown_asset_kind",
|
|
38
|
+
severity: "error",
|
|
39
|
+
message: `composes item kind "${kind}" is not a registered asset kind (registered: ${registry.getAllKinds().join(", ")})`,
|
|
40
|
+
path: `composes[${i}].kind`
|
|
41
|
+
});
|
|
42
|
+
return;
|
|
43
|
+
}
|
|
44
|
+
if (fields.binding !== void 0 || typeof fields.ref !== "string") return;
|
|
45
|
+
try {
|
|
46
|
+
resolveBinding({ kind, ref: fields.ref });
|
|
47
|
+
} catch (err) {
|
|
48
|
+
if (!(err instanceof UnknownCompositionKindError)) throw err;
|
|
49
|
+
diagnostics.push({
|
|
50
|
+
code: "unknown_asset_kind",
|
|
51
|
+
severity: "error",
|
|
52
|
+
message: `composes item "${fields.ref}" of kind "${kind}" has no default binding; set \`binding:\` (the session build fails without it)`,
|
|
53
|
+
path: `composes[${i}].binding`
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
return diagnostics;
|
|
58
|
+
}
|
|
59
|
+
function checkAgentDefinition(parsed, registry) {
|
|
60
|
+
const errors = [];
|
|
61
|
+
const advisories = [];
|
|
62
|
+
for (const d of [
|
|
63
|
+
...checkComposeKinds(parsed, registry),
|
|
64
|
+
...composeSlotDiagnostics(parsed),
|
|
65
|
+
...agentDeprecationDiagnostics(parsed)
|
|
66
|
+
]) {
|
|
67
|
+
(d.severity === "error" ? errors : advisories).push({
|
|
68
|
+
tag: "agent",
|
|
69
|
+
text: `${d.code}: ${d.path}: ${d.message}`,
|
|
70
|
+
conformance: false
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
return { errors, advisories };
|
|
74
|
+
}
|
|
75
|
+
function isInside(parent, child) {
|
|
76
|
+
const rel = path3.relative(parent, child);
|
|
77
|
+
return rel === "" || !rel.startsWith("..") && !path3.isAbsolute(rel);
|
|
78
|
+
}
|
|
79
|
+
function records(value) {
|
|
80
|
+
return Array.isArray(value) ? value.filter((v) => v !== null && typeof v === "object") : [];
|
|
81
|
+
}
|
|
82
|
+
function checkAgentFiles(parsed, agentDir, libraryRoot) {
|
|
83
|
+
const out = [];
|
|
84
|
+
records(parsed.composes).forEach((item, i) => {
|
|
85
|
+
if (typeof item.kind !== "string" || typeof item.ref !== "string") return;
|
|
86
|
+
const target = composeRefTarget({ kind: item.kind, ref: item.ref });
|
|
87
|
+
if (target?.type !== "local") return;
|
|
88
|
+
const where = `composes[${i}].ref`;
|
|
89
|
+
const resolved = path3.resolve(agentDir, target.path);
|
|
90
|
+
if (!fs3.existsSync(resolved)) {
|
|
91
|
+
out.push(
|
|
92
|
+
error(`${where}: local path "${item.ref}" does not exist (resolved from ${agentDir})`)
|
|
93
|
+
);
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
if (!isInside(libraryRoot, resolved)) {
|
|
97
|
+
out.push(
|
|
98
|
+
error(`${where}: local path "${item.ref}" leaves the library and cannot be published`)
|
|
99
|
+
);
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
const ownManifests = [
|
|
103
|
+
agentDir,
|
|
104
|
+
path3.join(agentDir, "agent.yaml"),
|
|
105
|
+
path3.join(agentDir, "AGENT.md")
|
|
106
|
+
];
|
|
107
|
+
if (item.kind === "agent" && ownManifests.includes(resolved)) {
|
|
108
|
+
out.push(
|
|
109
|
+
error(
|
|
110
|
+
`${where}: agent composes itself (${item.ref}); an agent cannot be its own sub-agent`
|
|
111
|
+
)
|
|
112
|
+
);
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
const blocks = records(
|
|
116
|
+
parsed.memory !== null && typeof parsed.memory === "object" ? parsed.memory.blocks : void 0
|
|
117
|
+
);
|
|
118
|
+
blocks.forEach((block, i) => {
|
|
119
|
+
if (typeof block.source !== "string" || block.source === "") return;
|
|
120
|
+
const where = `memory.blocks[${i}].source`;
|
|
121
|
+
const resolved = path3.resolve(agentDir, block.source);
|
|
122
|
+
if (!isInside(agentDir, resolved)) {
|
|
123
|
+
out.push(error(`${where}: "${block.source}" leaves the agent directory`));
|
|
124
|
+
return;
|
|
125
|
+
}
|
|
126
|
+
let stat;
|
|
127
|
+
try {
|
|
128
|
+
stat = fs3.statSync(resolved);
|
|
129
|
+
} catch {
|
|
130
|
+
out.push(error(`${where}: file "${block.source}" does not exist in ${agentDir}`));
|
|
131
|
+
return;
|
|
132
|
+
}
|
|
133
|
+
if (!stat.isFile()) {
|
|
134
|
+
out.push(error(`${where}: "${block.source}" is not a file`));
|
|
135
|
+
return;
|
|
136
|
+
}
|
|
137
|
+
const max = block.max_chars;
|
|
138
|
+
if (typeof max !== "number") return;
|
|
139
|
+
const length = [...fs3.readFileSync(resolved, "utf-8").trim()].length;
|
|
140
|
+
if (length > max) {
|
|
141
|
+
out.push(
|
|
142
|
+
error(
|
|
143
|
+
`${where}: "${block.source}" holds ${length} characters, more than memory block "${String(block.name)}" max_chars ${max}`
|
|
144
|
+
)
|
|
145
|
+
);
|
|
146
|
+
}
|
|
147
|
+
});
|
|
148
|
+
return out;
|
|
149
|
+
}
|
|
150
|
+
function agentComposeRefAdvisories(parsed, hasAsset, libraryPublisher) {
|
|
151
|
+
const out = [];
|
|
152
|
+
records(parsed.composes).forEach((item, i) => {
|
|
153
|
+
if (typeof item.kind !== "string" || typeof item.ref !== "string") return;
|
|
154
|
+
const target = composeRefTarget({ kind: item.kind, ref: item.ref });
|
|
155
|
+
if (target?.type !== "asset" || target.kind === "soul") return;
|
|
156
|
+
if (target.publisher !== void 0 && libraryPublisher !== void 0 && target.publisher !== libraryPublisher) {
|
|
157
|
+
return;
|
|
158
|
+
}
|
|
159
|
+
if (target.publisher !== void 0 && libraryPublisher === void 0) return;
|
|
160
|
+
if (hasAsset(target.kind, target.name)) return;
|
|
161
|
+
out.push({
|
|
162
|
+
tag: "agent",
|
|
163
|
+
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`,
|
|
164
|
+
conformance: false
|
|
165
|
+
});
|
|
166
|
+
});
|
|
167
|
+
return out;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
// cli/src/skill-checks.ts
|
|
171
|
+
var BODY_PLACEHOLDER_BY_KIND = {
|
|
172
|
+
skill: SKILL_BODY_PLACEHOLDER,
|
|
173
|
+
agent: AGENT_BODY_PLACEHOLDER,
|
|
174
|
+
prompt: PROMPT_BODY_PLACEHOLDER,
|
|
175
|
+
contract: CONTRACT_BODY_PLACEHOLDER
|
|
176
|
+
};
|
|
177
|
+
var MARKDOWN_SCAFFOLD_KINDS = {
|
|
178
|
+
skill: true,
|
|
179
|
+
agent: true,
|
|
180
|
+
prompt: true,
|
|
181
|
+
contract: true
|
|
182
|
+
};
|
|
183
|
+
var FLOW_DESCRIPTION_PLACEHOLDER = "Flow description";
|
|
184
|
+
function checkAssetManifest(kind, parsed, body, dirName) {
|
|
185
|
+
const out = [];
|
|
186
|
+
if (kind === "skill") {
|
|
187
|
+
for (const f of checkAgentSkillConformance(parsed, { dirName })) {
|
|
188
|
+
out.push({ tag: "skill conformance", text: `${f.field}: ${f.message}`, conformance: true });
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
if (MARKDOWN_SCAFFOLD_KINDS[kind]) {
|
|
192
|
+
const bodyText = body?.replace(/^#[^\n]*\n+/, "");
|
|
193
|
+
const isPlaceholder = bodyText === SKILL_BODY_PLACEHOLDER || bodyText === BODY_PLACEHOLDER_BY_KIND[kind];
|
|
194
|
+
if (isPlaceholder) {
|
|
195
|
+
const noun = kind === "skill" ? "skill prompt" : kind;
|
|
196
|
+
out.push({
|
|
197
|
+
tag: kind,
|
|
198
|
+
text: `body is still the scaffold placeholder; write the ${noun}`,
|
|
199
|
+
conformance: false,
|
|
200
|
+
scaffoldBody: true
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
return out;
|
|
205
|
+
}
|
|
206
|
+
function declaredVersion(parsed) {
|
|
207
|
+
const scalar = (v) => typeof v === "string" ? v : typeof v === "number" ? String(v) : void 0;
|
|
208
|
+
const meta = parsed.metadata;
|
|
209
|
+
const nested = meta !== null && typeof meta === "object" ? scalar(meta.version) : void 0;
|
|
210
|
+
return scalar(parsed.version) ?? nested;
|
|
211
|
+
}
|
|
212
|
+
function invalidSemverText(version) {
|
|
213
|
+
return SEMVER_RE.test(version) ? void 0 : `version "${version}" is not valid semver`;
|
|
214
|
+
}
|
|
215
|
+
function rawVersionScalar(text) {
|
|
216
|
+
const front = text.startsWith("---") ? text.split(/\n---/, 1)[0] ?? text : text;
|
|
217
|
+
const m = /^[ \t]*version:[ \t]*([^\s#][^#\n]*?)[ \t]*(?:#.*)?$/m.exec(front);
|
|
218
|
+
return m?.[1];
|
|
219
|
+
}
|
|
220
|
+
function versionProblemText(parsed, rawText) {
|
|
221
|
+
const version = declaredVersion(parsed);
|
|
222
|
+
const text = version === void 0 ? void 0 : invalidSemverText(version);
|
|
223
|
+
if (text === void 0) return void 0;
|
|
224
|
+
const meta = parsed.metadata;
|
|
225
|
+
const nested = meta !== null && typeof meta === "object" ? meta.version : void 0;
|
|
226
|
+
const key = parsed.version === void 0 || parsed.version === null ? "metadata.version" : "version";
|
|
227
|
+
const written = key === "version" ? parsed.version : nested;
|
|
228
|
+
if (typeof written !== "number") return text;
|
|
229
|
+
const raw = (rawText === void 0 ? void 0 : rawVersionScalar(rawText)) ?? String(written);
|
|
230
|
+
const fix = /^\d+(\.\d+)?$/.test(raw) ? `${raw}${raw.includes(".") ? "" : ".0"}.0` : DEFAULT_VERSION;
|
|
231
|
+
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}"`;
|
|
232
|
+
}
|
|
233
|
+
function duplicateAssetMessage(kind, name, dir, detail, library) {
|
|
234
|
+
return `${kind}:${name} found in ${dir} but ${detail}. Rename or delete one of the two directories, then re-run \`skaile library index ${library}\`.`;
|
|
235
|
+
}
|
|
236
|
+
var DEFAULT_VERSION = "0.1.0";
|
|
237
|
+
var SCAFFOLD_KINDS = {
|
|
238
|
+
skill: true,
|
|
239
|
+
agent: true,
|
|
240
|
+
prompt: true,
|
|
241
|
+
contract: true,
|
|
242
|
+
flow: true,
|
|
243
|
+
preset: true
|
|
244
|
+
};
|
|
245
|
+
function withManifestDefaults(kind, parsed) {
|
|
246
|
+
if (!SCAFFOLD_KINDS[kind]) return parsed;
|
|
247
|
+
const out = { ...parsed };
|
|
248
|
+
if (out.metadata === null) delete out.metadata;
|
|
249
|
+
const meta = out.metadata;
|
|
250
|
+
const nested = typeof meta === "object" && meta !== null && "version" in meta ? meta.version : void 0;
|
|
251
|
+
if (out.version == null && nested == null) out.version = DEFAULT_VERSION;
|
|
252
|
+
return out;
|
|
253
|
+
}
|
|
254
|
+
function flowFileNameError(parsed, fileName) {
|
|
255
|
+
const id = parsed.id;
|
|
256
|
+
if (fileName === void 0 || typeof id !== "string" || id.length === 0) return void 0;
|
|
257
|
+
const stem = fileName.replace(/\.flow\.(yaml|yml|json)$/, "");
|
|
258
|
+
if (stem === fileName || stem === id) return void 0;
|
|
259
|
+
return `flow id "${id}" does not match the file name "${fileName}"; a flow asset is named by its id and the flow engine loads it only from "${id}.flow.yaml". Rename the file to "${id}.flow.yaml" or set id: ${stem}`;
|
|
260
|
+
}
|
|
261
|
+
function manifestIdentityError(kind, parsed) {
|
|
262
|
+
const identity = kind === "flow" ? parsed.id : parsed.name;
|
|
263
|
+
if (typeof identity !== "string" || identity.length === 0) return void 0;
|
|
264
|
+
const publisher = typeof parsed.publisher === "string" ? parsed.publisher : void 0;
|
|
265
|
+
if (publisher !== void 0) {
|
|
266
|
+
try {
|
|
267
|
+
parseAssetRef(`${kind}:@${publisher}/${identity}`);
|
|
268
|
+
return void 0;
|
|
269
|
+
} catch (e) {
|
|
270
|
+
return e instanceof Error ? e.message : String(e);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
if (!isValidAssetName(identity)) {
|
|
274
|
+
return `invalid asset ${kind === "flow" ? "id" : "name"} "${identity}" \u2014 ${ASSET_NAME_HINT}`;
|
|
275
|
+
}
|
|
276
|
+
return void 0;
|
|
277
|
+
}
|
|
278
|
+
function scaffoldDefinitionErrors(kind, parsed) {
|
|
279
|
+
const out = [];
|
|
280
|
+
if (kind === "flow") {
|
|
281
|
+
if (parsed.description === FLOW_DESCRIPTION_PLACEHOLDER) {
|
|
282
|
+
out.push("description is still the scaffold placeholder; say what the flow does");
|
|
283
|
+
}
|
|
284
|
+
if (parsed.nodes === void 0) {
|
|
285
|
+
out.push("nodes is missing; a flow needs at least one node");
|
|
286
|
+
} else if (Array.isArray(parsed.nodes) && parsed.nodes.length === 0) {
|
|
287
|
+
out.push("nodes is still the scaffold placeholder (nodes: []); add the flow's nodes");
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
if (kind === "preset") {
|
|
291
|
+
if (parsed.description === PRESET_DESCRIPTION_PLACEHOLDER) {
|
|
292
|
+
out.push(
|
|
293
|
+
`description is still the scaffold placeholder ("${PRESET_DESCRIPTION_PLACEHOLDER}"); say what the preset does`
|
|
294
|
+
);
|
|
295
|
+
}
|
|
296
|
+
const items = Array.isArray(parsed.items) ? parsed.items : [];
|
|
297
|
+
const placeholderItem = items.some((item) => {
|
|
298
|
+
const ref = typeof item === "string" ? item : item?.ref;
|
|
299
|
+
return typeof ref === "string" && ref.trim() === PRESET_ITEM_PLACEHOLDER_REF;
|
|
300
|
+
});
|
|
301
|
+
if (placeholderItem) {
|
|
302
|
+
out.push(
|
|
303
|
+
`item ${PRESET_ITEM_PLACEHOLDER_REF} is still the scaffold placeholder; replace it with the preset's real items`
|
|
304
|
+
);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
return out;
|
|
308
|
+
}
|
|
309
|
+
function checkAsset(kind, parsed, body, dirName, registry, rawText, fileName, agentFiles) {
|
|
310
|
+
const errors = [];
|
|
311
|
+
const error2 = (text) => {
|
|
312
|
+
errors.push({ tag: kind, text, conformance: false });
|
|
313
|
+
};
|
|
314
|
+
const identity = manifestIdentityError(kind, parsed);
|
|
315
|
+
if (identity) error2(identity);
|
|
316
|
+
const flowFileError = kind === "flow" ? flowFileNameError(parsed, fileName) : void 0;
|
|
317
|
+
if (flowFileError) error2(flowFileError);
|
|
318
|
+
const semver = versionProblemText(parsed, rawText);
|
|
319
|
+
if (semver) error2(semver);
|
|
320
|
+
const effective = withManifestDefaults(kind, parsed);
|
|
321
|
+
const versionKey = ["skill", "prompt", "contract"].includes(kind) ? "metadata.version" : "version";
|
|
322
|
+
const provider = registry.getProvider(kind);
|
|
323
|
+
if (!provider) {
|
|
324
|
+
error2(`unknown_asset_kind: kind "${kind}" is not registered`);
|
|
325
|
+
} else {
|
|
326
|
+
const result = provider.validateManifest(effective);
|
|
327
|
+
if (!result.ok) {
|
|
328
|
+
for (const e of result.errors) {
|
|
329
|
+
if (e.path === "version" || e.path === "metadata.version") {
|
|
330
|
+
if (!semver) {
|
|
331
|
+
error2(`${e.path}: must be a semver string \u2014 set ${versionKey}: ${DEFAULT_VERSION}`);
|
|
332
|
+
}
|
|
333
|
+
continue;
|
|
334
|
+
}
|
|
335
|
+
error2(`${e.path ? `${e.path}: ` : ""}${e.message}`);
|
|
336
|
+
}
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
const description = parsed.description;
|
|
340
|
+
if (kind !== "skill" && typeof description === "string" && description.trim().startsWith(SKILL_DESCRIPTION_PLACEHOLDER_PREFIX)) {
|
|
341
|
+
error2(
|
|
342
|
+
`description: description is still the scaffold placeholder (${SKILL_DESCRIPTION_PLACEHOLDER_PREFIX} \u2026) \u2014 say what the ${kind} does and when to use it`
|
|
343
|
+
);
|
|
344
|
+
}
|
|
345
|
+
for (const text of scaffoldDefinitionErrors(kind, parsed)) error2(text);
|
|
346
|
+
if (kind === "flow") {
|
|
347
|
+
const flow = parseFlowDefinition(effective);
|
|
348
|
+
if (!flow.ok) {
|
|
349
|
+
for (const e of flow.errors) {
|
|
350
|
+
error2(`invalid flow definition: ${e.path || "<root>"}: ${e.message}`);
|
|
351
|
+
}
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
const advisories = checkAssetManifest(kind, parsed, body, dirName);
|
|
355
|
+
if (kind === "agent") {
|
|
356
|
+
if (fileName === "agent.yaml") {
|
|
357
|
+
const definition = checkAgentDefinition(parsed, registry);
|
|
358
|
+
errors.push(...definition.errors);
|
|
359
|
+
advisories.push(...definition.advisories);
|
|
360
|
+
}
|
|
361
|
+
if (agentFiles) errors.push(...checkAgentFiles(parsed, agentFiles.dir, agentFiles.libraryRoot));
|
|
362
|
+
}
|
|
363
|
+
return { errors, advisories };
|
|
364
|
+
}
|
|
365
|
+
function findAssetManifestFile(dir, kind, name) {
|
|
366
|
+
const candidates = [];
|
|
367
|
+
if (kind === "skill") candidates.push("SKILL.md");
|
|
368
|
+
else if (kind === "agent") candidates.push("agent.yaml", "AGENT.md");
|
|
369
|
+
else if (kind === "contract") candidates.push("CONTRACT.md");
|
|
370
|
+
else if (kind === "prompt") candidates.push(`${name}.prompt.md`);
|
|
371
|
+
else if (kind === "flow") candidates.push(`${name}.flow.yaml`, `${name}.flow.json`);
|
|
372
|
+
else if (kind === "preset") candidates.push(`${name}.preset.yaml`);
|
|
373
|
+
for (const c of candidates) {
|
|
374
|
+
const file = path3.join(dir, c);
|
|
375
|
+
if (fs3.existsSync(file)) return file;
|
|
376
|
+
}
|
|
377
|
+
const suffix = kind === "prompt" ? ".prompt.md" : kind === "flow" ? ".flow.yaml" : kind === "preset" ? ".preset.yaml" : null;
|
|
378
|
+
if (suffix && fs3.existsSync(dir)) {
|
|
379
|
+
const matches = fs3.readdirSync(dir).filter((f) => f.endsWith(suffix));
|
|
380
|
+
if (matches.length === 1) return path3.join(dir, matches[0]);
|
|
381
|
+
}
|
|
382
|
+
return null;
|
|
383
|
+
}
|
|
384
|
+
function readAssetBody(file, text) {
|
|
385
|
+
if (file.endsWith(".md")) return parseFrontmatter(text).body;
|
|
386
|
+
if (path3.basename(file) !== "agent.yaml") return void 0;
|
|
387
|
+
const soul = path3.join(path3.dirname(file), "SOUL.md");
|
|
388
|
+
return fs3.existsSync(soul) ? fs3.readFileSync(soul, "utf8").trim() : void 0;
|
|
389
|
+
}
|
|
390
|
+
function checkAssetFile(file, kind, registry, libraryRoot, onScaffoldBody) {
|
|
391
|
+
let text;
|
|
392
|
+
try {
|
|
393
|
+
text = fs3.readFileSync(file, "utf8");
|
|
394
|
+
} catch {
|
|
395
|
+
return [];
|
|
396
|
+
}
|
|
397
|
+
const res = parseManifestFile(file, text);
|
|
398
|
+
if (!res.ok) return [];
|
|
399
|
+
const checked = checkAsset(
|
|
400
|
+
kind,
|
|
401
|
+
res.data,
|
|
402
|
+
readAssetBody(file, text),
|
|
403
|
+
path3.basename(path3.dirname(file)),
|
|
404
|
+
registry,
|
|
405
|
+
text,
|
|
406
|
+
path3.basename(file),
|
|
407
|
+
libraryRoot === void 0 ? void 0 : { dir: path3.dirname(file), libraryRoot }
|
|
408
|
+
);
|
|
409
|
+
if (onScaffoldBody) {
|
|
410
|
+
for (const f of checked.advisories) if (f.scaffoldBody) onScaffoldBody(f);
|
|
411
|
+
}
|
|
412
|
+
return checked.errors;
|
|
413
|
+
}
|
|
414
|
+
|
|
19
415
|
// cli/src/commands/publish-core.ts
|
|
20
416
|
function formatNamespaceAvailability(a) {
|
|
21
417
|
switch (a.status) {
|
|
@@ -348,10 +744,10 @@ async function getAccessToken(config, deps = {}) {
|
|
|
348
744
|
|
|
349
745
|
// cli/src/commands/library-index.ts
|
|
350
746
|
function manifestRequiresProblems(dir) {
|
|
351
|
-
const file =
|
|
747
|
+
const file = path3.join(dir, "skaile.manifest.yaml");
|
|
352
748
|
let doc;
|
|
353
749
|
try {
|
|
354
|
-
doc = parse(
|
|
750
|
+
doc = parse(fs3.readFileSync(file, "utf-8"));
|
|
355
751
|
} catch {
|
|
356
752
|
return [];
|
|
357
753
|
}
|
|
@@ -389,13 +785,13 @@ async function knownAssetVersions(dir) {
|
|
|
389
785
|
};
|
|
390
786
|
addManifest(dir);
|
|
391
787
|
const indexPath = resolveIndexPath();
|
|
392
|
-
if (!
|
|
788
|
+
if (!fs3.existsSync(indexPath)) return known;
|
|
393
789
|
const index = new LocalIndex({ indexPath, kindRegistry: getKindRegistry() });
|
|
394
790
|
try {
|
|
395
791
|
for (const def of await index.listAssetDefs())
|
|
396
792
|
add(def.publisher, def.kind, def.name, def.version);
|
|
397
793
|
for (const lib of await index.listSources()) {
|
|
398
|
-
if (
|
|
794
|
+
if (path3.resolve(lib.path) !== path3.resolve(dir) && fs3.existsSync(lib.path)) {
|
|
399
795
|
addManifest(lib.path);
|
|
400
796
|
}
|
|
401
797
|
}
|
|
@@ -408,7 +804,7 @@ async function knownAssetVersions(dir) {
|
|
|
408
804
|
async function unresolvedManifestDependencies(dir) {
|
|
409
805
|
let doc;
|
|
410
806
|
try {
|
|
411
|
-
doc = parse(
|
|
807
|
+
doc = parse(fs3.readFileSync(path3.join(dir, SKAILE_MANIFEST_FILENAME), "utf-8"));
|
|
412
808
|
} catch {
|
|
413
809
|
return [];
|
|
414
810
|
}
|
|
@@ -460,7 +856,7 @@ function requireValidPublisherOrExit(raw) {
|
|
|
460
856
|
function manifestPublisherProblems(dir) {
|
|
461
857
|
let doc;
|
|
462
858
|
try {
|
|
463
|
-
doc = parse(
|
|
859
|
+
doc = parse(fs3.readFileSync(path3.join(dir, SKAILE_MANIFEST_FILENAME), "utf-8"));
|
|
464
860
|
} catch {
|
|
465
861
|
return [];
|
|
466
862
|
}
|
|
@@ -492,13 +888,68 @@ function exitOnManifestPublisherProblems(dir, libName) {
|
|
|
492
888
|
);
|
|
493
889
|
process.exit(1);
|
|
494
890
|
}
|
|
891
|
+
function manifestEntryNameProblems(dir) {
|
|
892
|
+
const manifest = loadSkPublishManifest(dir);
|
|
893
|
+
if (!manifest || manifest.source) return [];
|
|
894
|
+
const problems = [];
|
|
895
|
+
for (const entry of manifest.assets ?? []) {
|
|
896
|
+
if (!entry.root || entry.source) continue;
|
|
897
|
+
if (assetRootProblem(dir, entry.root)) continue;
|
|
898
|
+
const file = findAssetManifestFile(path3.join(dir, entry.root), entry.kind, entry.name);
|
|
899
|
+
if (!file) continue;
|
|
900
|
+
let parsedName;
|
|
901
|
+
try {
|
|
902
|
+
const res = parseManifestFile(file, fs3.readFileSync(file, "utf-8"));
|
|
903
|
+
if (!res.ok) continue;
|
|
904
|
+
parsedName = entry.kind === "flow" ? res.data.id : res.data.name;
|
|
905
|
+
} catch {
|
|
906
|
+
continue;
|
|
907
|
+
}
|
|
908
|
+
if (typeof parsedName !== "string" || parsedName === "" || parsedName === entry.name) continue;
|
|
909
|
+
problems.push(
|
|
910
|
+
`${SKAILE_MANIFEST_FILENAME} [assets] ${entry.kind}:${entry.name} \u2014 ${path3.relative(dir, file)} now names "${parsedName}": the entry is a ref \`add\` cannot resolve. Run \`skaile library index <library>\` to rename it, or restore the name.`
|
|
911
|
+
);
|
|
912
|
+
}
|
|
913
|
+
return problems;
|
|
914
|
+
}
|
|
915
|
+
function manifestRootProblems(dir) {
|
|
916
|
+
let doc;
|
|
917
|
+
try {
|
|
918
|
+
doc = parse(fs3.readFileSync(path3.join(dir, SKAILE_MANIFEST_FILENAME), "utf-8"));
|
|
919
|
+
} catch {
|
|
920
|
+
return [];
|
|
921
|
+
}
|
|
922
|
+
if (!doc || typeof doc !== "object") return [];
|
|
923
|
+
const { assets } = doc;
|
|
924
|
+
if (!Array.isArray(assets)) return [];
|
|
925
|
+
const problems = [];
|
|
926
|
+
for (const a of assets) {
|
|
927
|
+
if (!a || typeof a !== "object") continue;
|
|
928
|
+
const { kind, name, root, source } = a;
|
|
929
|
+
if (typeof root !== "string" || source !== void 0) continue;
|
|
930
|
+
const problem = assetRootProblem(dir, root);
|
|
931
|
+
if (problem) {
|
|
932
|
+
problems.push(
|
|
933
|
+
`${SKAILE_MANIFEST_FILENAME} [assets] ${String(kind)}:${String(name)} \u2014 ${problem}`
|
|
934
|
+
);
|
|
935
|
+
}
|
|
936
|
+
}
|
|
937
|
+
return problems;
|
|
938
|
+
}
|
|
939
|
+
function exitOnManifestRootProblems(dir, verb) {
|
|
940
|
+
const problems = manifestRootProblems(dir);
|
|
941
|
+
if (problems.length === 0) return;
|
|
942
|
+
for (const message of problems) logErr(message);
|
|
943
|
+
logErr(`Fix or remove the entry in ${SKAILE_MANIFEST_FILENAME}, then re-run \`${verb}\`.`);
|
|
944
|
+
process.exit(1);
|
|
945
|
+
}
|
|
495
946
|
function reportLibrarySymlinks(dir, opts) {
|
|
496
947
|
const links = listLibrarySymlinks(dir, opts);
|
|
497
948
|
for (const link of links) logErr(librarySymlinkMessage(link));
|
|
498
949
|
return links.length;
|
|
499
950
|
}
|
|
500
951
|
function exitOnLibrarySymlinks(dir, verb) {
|
|
501
|
-
const count = reportLibrarySymlinks(dir);
|
|
952
|
+
const count = reportLibrarySymlinks(dir, { wholeTree: true });
|
|
502
953
|
if (count === 0) return;
|
|
503
954
|
logErr(`${count} symlink(s) in ${dir}: remove them, then re-run \`${verb}\`.`);
|
|
504
955
|
process.exit(1);
|
|
@@ -513,7 +964,7 @@ async function indexLibrary(lib, index, opts = {}) {
|
|
|
513
964
|
const lost = new Set(res.pruned);
|
|
514
965
|
for (const other of await own.listSources()) {
|
|
515
966
|
if (other.id === lib.id || other.backend !== "local" || !other.path) continue;
|
|
516
|
-
if (!
|
|
967
|
+
if (!fs3.existsSync(other.path)) continue;
|
|
517
968
|
await new LocalCatalogSource(own, other.id, other.path, getKindRegistry()).sync({
|
|
518
969
|
only: lost
|
|
519
970
|
});
|
|
@@ -550,16 +1001,16 @@ function warnLibraryNameFallback(libName, resolved, hasPublisherFlag = false) {
|
|
|
550
1001
|
);
|
|
551
1002
|
}
|
|
552
1003
|
function normalizeAssetFrontmatter(assetDir) {
|
|
553
|
-
let markerFile = ["SKILL.md", "AGENT.md", "CONTRACT.md"].map((m) =>
|
|
1004
|
+
let markerFile = ["SKILL.md", "AGENT.md", "CONTRACT.md"].map((m) => path3.join(assetDir, m)).find((f) => fs3.existsSync(f));
|
|
554
1005
|
if (!markerFile) {
|
|
555
|
-
const promptMd =
|
|
556
|
-
if (promptMd) markerFile =
|
|
1006
|
+
const promptMd = fs3.readdirSync(assetDir).find((f) => f.endsWith(".prompt.md"));
|
|
1007
|
+
if (promptMd) markerFile = path3.join(assetDir, promptMd);
|
|
557
1008
|
}
|
|
558
1009
|
if (!markerFile) return;
|
|
559
1010
|
try {
|
|
560
|
-
const { data, body } = parseFrontmatter(
|
|
1011
|
+
const { data, body } = parseFrontmatter(fs3.readFileSync(markerFile, "utf8"));
|
|
561
1012
|
const fm = stringify(data).trimEnd();
|
|
562
|
-
|
|
1013
|
+
fs3.writeFileSync(markerFile, `---
|
|
563
1014
|
${fm}
|
|
564
1015
|
---
|
|
565
1016
|
|
|
@@ -580,7 +1031,7 @@ async function registerLibraryAsset(lib, index, input) {
|
|
|
580
1031
|
upsertManifestAsset(lib.path, {
|
|
581
1032
|
kind: input.kind,
|
|
582
1033
|
name: input.name,
|
|
583
|
-
root:
|
|
1034
|
+
root: path3.relative(lib.path, input.assetDir) || input.name,
|
|
584
1035
|
version: input.version,
|
|
585
1036
|
publisher
|
|
586
1037
|
});
|
|
@@ -603,17 +1054,17 @@ function findFiles(root, match) {
|
|
|
603
1054
|
const walk = (dir) => {
|
|
604
1055
|
let entries;
|
|
605
1056
|
try {
|
|
606
|
-
entries =
|
|
1057
|
+
entries = fs3.readdirSync(dir, { withFileTypes: true });
|
|
607
1058
|
} catch {
|
|
608
1059
|
return;
|
|
609
1060
|
}
|
|
610
1061
|
for (const entry of entries) {
|
|
611
1062
|
if (entry.isDirectory()) {
|
|
612
1063
|
if (!entry.name.startsWith(".") && entry.name !== "node_modules") {
|
|
613
|
-
walk(
|
|
1064
|
+
walk(path3.join(dir, entry.name));
|
|
614
1065
|
}
|
|
615
1066
|
} else if (match(entry.name)) {
|
|
616
|
-
found.push(
|
|
1067
|
+
found.push(path3.join(dir, entry.name));
|
|
617
1068
|
}
|
|
618
1069
|
}
|
|
619
1070
|
};
|
|
@@ -635,7 +1086,7 @@ function warnIgnoredDomainFiles(root) {
|
|
|
635
1086
|
function warnLegacyBundleFiles(root) {
|
|
636
1087
|
const files = findFiles(root, (name) => name.endsWith(".bundle.yaml"));
|
|
637
1088
|
if (files.length > 0) {
|
|
638
|
-
const shown = files.slice(0, 5).map((f) =>
|
|
1089
|
+
const shown = files.slice(0, 5).map((f) => path3.relative(root, f) || f);
|
|
639
1090
|
const more = files.length > shown.length ? `, +${files.length - shown.length} more` : "";
|
|
640
1091
|
logWarn(
|
|
641
1092
|
`${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}`
|
|
@@ -644,6 +1095,6 @@ function warnLegacyBundleFiles(root) {
|
|
|
644
1095
|
return files.length;
|
|
645
1096
|
}
|
|
646
1097
|
|
|
647
|
-
export { DOMAIN_REMOVED_HINT, assetEntryRef, assetNamespace, bareName, deviceLogin, exitOnEmptyAsset, exitOnLibrarySymlinks, exitOnManifestPublisherProblems, formatNamespaceAvailability, getAccessToken, getStoreIdentity, hasStoredAuth, indexLibrary, loadStoreAuthConfig, logout, manifestNamespaces, manifestPublisherProblems, manifestRequiresProblems, manifestVersionMismatchMessage, plannedRefs, preflightNamespace, publishToStore, refFor, registerLibraryAsset, rejectRemovedDomainOption, removedDomainOption, reportLibrarySymlinks, requireValidPublisherOrExit, resolveLibraryPublisherDetailed, unresolvedManifestDependencies, warnIgnoredDomainFiles, warnLegacyBundleFiles, warnLibraryNameFallback };
|
|
648
|
-
//# sourceMappingURL=chunk-
|
|
649
|
-
//# sourceMappingURL=chunk-
|
|
1098
|
+
export { DOMAIN_REMOVED_HINT, agentComposeRefAdvisories, assetEntryRef, assetNamespace, bareName, checkAsset, checkAssetFile, checkComposeKinds, declaredVersion, deviceLogin, duplicateAssetMessage, exitOnEmptyAsset, exitOnLibrarySymlinks, exitOnManifestPublisherProblems, exitOnManifestRootProblems, findAssetManifestFile, formatNamespaceAvailability, getAccessToken, getStoreIdentity, hasStoredAuth, indexLibrary, invalidSemverText, loadStoreAuthConfig, logout, manifestEntryNameProblems, manifestNamespaces, manifestPublisherProblems, manifestRequiresProblems, manifestRootProblems, manifestVersionMismatchMessage, plannedRefs, preflightNamespace, publishToStore, readAssetBody, refFor, registerLibraryAsset, rejectRemovedDomainOption, removedDomainOption, reportLibrarySymlinks, requireValidPublisherOrExit, resolveLibraryPublisherDetailed, unresolvedManifestDependencies, warnIgnoredDomainFiles, warnLegacyBundleFiles, warnLibraryNameFallback };
|
|
1099
|
+
//# sourceMappingURL=chunk-AXNX2SKZ.js.map
|
|
1100
|
+
//# sourceMappingURL=chunk-AXNX2SKZ.js.map
|