@skaile/workspaces 5.10.0 → 5.11.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 +49 -0
- package/README.md +12 -0
- package/dist/{asset-feeds-ELEBTNUS.js → asset-feeds-CXGQIDFR.js} +18 -18
- package/dist/{asset-feeds-ELEBTNUS.js.map → asset-feeds-CXGQIDFR.js.map} +1 -1
- package/dist/asset-manager/catalog-deployer.js +7 -7
- package/dist/asset-manager/index.js +13 -13
- package/dist/asset-manager/installer.js +9 -9
- package/dist/asset-manager/renderers.js +8 -8
- package/dist/asset-manager/src/index.d.ts +103 -2
- package/dist/asset-manager/src/index.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 +23 -3
- package/dist/asset-manager/src/installer.d.ts.map +1 -1
- package/dist/bridge/drivers/claude-sdk.js +10 -10
- package/dist/bridge/drivers/codex.js +9 -9
- package/dist/bridge/drivers/continue.js +9 -9
- package/dist/bridge/drivers/echo.js +1 -1
- package/dist/bridge/drivers/gemini.js +6 -6
- package/dist/bridge/drivers/goose.js +9 -9
- package/dist/bridge/drivers/omp.js +18 -2
- package/dist/bridge/drivers/omp.js.map +1 -1
- package/dist/bridge/drivers/opencode.js +9 -9
- package/dist/bridge/drivers/qwen.js +6 -6
- package/dist/bridge/index.js +11 -11
- package/dist/bridge/src/drivers/omp.d.ts.map +1 -1
- package/dist/{chunk-3BEY4WK3.js → chunk-2F5AWQX5.js} +77 -11
- package/dist/chunk-2F5AWQX5.js.map +1 -0
- package/dist/{chunk-IJHH4DSW.js → chunk-3SM2DL2T.js} +8 -8
- package/dist/{chunk-IJHH4DSW.js.map → chunk-3SM2DL2T.js.map} +1 -1
- package/dist/{chunk-HJ5MCB3L.js → chunk-47U4GZ4M.js} +2 -2
- package/dist/{chunk-HJ5MCB3L.js.map → chunk-47U4GZ4M.js.map} +1 -1
- package/dist/{chunk-7CR6HT2X.js → chunk-4A4OD24G.js} +9 -9
- package/dist/{chunk-7CR6HT2X.js.map → chunk-4A4OD24G.js.map} +1 -1
- package/dist/{chunk-5QI2JYJC.js → chunk-6O2X3GPW.js} +2 -2
- package/dist/{chunk-5QI2JYJC.js.map → chunk-6O2X3GPW.js.map} +1 -1
- package/dist/{chunk-JZCSNEHK.js → chunk-ALEYHUC5.js} +42 -20
- package/dist/chunk-ALEYHUC5.js.map +1 -0
- package/dist/{chunk-4OV5DSBB.js → chunk-BNMZVPYA.js} +5 -5
- package/dist/chunk-BNMZVPYA.js.map +1 -0
- package/dist/{chunk-SBFW3CJH.js → chunk-CAHB6MHA.js} +5 -5
- package/dist/{chunk-SBFW3CJH.js.map → chunk-CAHB6MHA.js.map} +1 -1
- package/dist/{chunk-4P3KTUZH.js → chunk-CJERAGFY.js} +24 -13
- package/dist/chunk-CJERAGFY.js.map +1 -0
- package/dist/{chunk-MVQ3Q2HM.js → chunk-COH6FQAG.js} +4 -4
- package/dist/{chunk-MVQ3Q2HM.js.map → chunk-COH6FQAG.js.map} +1 -1
- package/dist/{chunk-ZGQTS3Y4.js → chunk-CPWLNZGJ.js} +3 -3
- package/dist/{chunk-ZGQTS3Y4.js.map → chunk-CPWLNZGJ.js.map} +1 -1
- package/dist/{chunk-MGGFBZWA.js → chunk-D3B36CYC.js} +4 -3
- package/dist/chunk-D3B36CYC.js.map +1 -0
- package/dist/{chunk-2JMLDZLP.js → chunk-DZMNFCWB.js} +416 -55
- package/dist/chunk-DZMNFCWB.js.map +1 -0
- package/dist/{chunk-GFCXNFTW.js → chunk-EDYHEMJA.js} +4 -4
- package/dist/{chunk-GFCXNFTW.js.map → chunk-EDYHEMJA.js.map} +1 -1
- package/dist/{chunk-PE36IF2D.js → chunk-FH7W6TJ4.js} +65 -31
- package/dist/chunk-FH7W6TJ4.js.map +1 -0
- package/dist/{chunk-G54USEUP.js → chunk-G4FFOV3N.js} +4 -4
- package/dist/{chunk-G54USEUP.js.map → chunk-G4FFOV3N.js.map} +1 -1
- package/dist/{chunk-HOHUEKES.js → chunk-GCHPUTA3.js} +3 -3
- package/dist/{chunk-HOHUEKES.js.map → chunk-GCHPUTA3.js.map} +1 -1
- package/dist/{chunk-TRSQP3JD.js → chunk-GV4DZ6MT.js} +20 -4
- package/dist/chunk-GV4DZ6MT.js.map +1 -0
- package/dist/{chunk-QG3HOJEK.js → chunk-HCEVNYSH.js} +3 -3
- package/dist/{chunk-QG3HOJEK.js.map → chunk-HCEVNYSH.js.map} +1 -1
- package/dist/{chunk-6HHE63CO.js → chunk-HZXUXHIV.js} +4 -4
- package/dist/{chunk-6HHE63CO.js.map → chunk-HZXUXHIV.js.map} +1 -1
- package/dist/{chunk-FRPBSUFH.js → chunk-IER3KIPH.js} +5 -5
- package/dist/{chunk-FRPBSUFH.js.map → chunk-IER3KIPH.js.map} +1 -1
- package/dist/{chunk-GEWAIQZ5.js → chunk-J4RBUFGM.js} +10 -12
- package/dist/chunk-J4RBUFGM.js.map +1 -0
- package/dist/{chunk-OOWHXOK6.js → chunk-M3B6EIJD.js} +4 -4
- package/dist/{chunk-OOWHXOK6.js.map → chunk-M3B6EIJD.js.map} +1 -1
- package/dist/{chunk-VLXDXRRX.js → chunk-MZG34MBZ.js} +3 -3
- package/dist/{chunk-VLXDXRRX.js.map → chunk-MZG34MBZ.js.map} +1 -1
- package/dist/{chunk-2FMEGSBN.js → chunk-PBBPZYVG.js} +31 -9
- package/dist/chunk-PBBPZYVG.js.map +1 -0
- package/dist/{chunk-CLTHEKHR.js → chunk-PQFHMQHQ.js} +4 -4
- package/dist/{chunk-CLTHEKHR.js.map → chunk-PQFHMQHQ.js.map} +1 -1
- package/dist/{chunk-SX5U422E.js → chunk-QVFAS5IO.js} +3 -3
- package/dist/{chunk-SX5U422E.js.map → chunk-QVFAS5IO.js.map} +1 -1
- package/dist/{chunk-JFXQEVLF.js → chunk-QZNJOHN6.js} +3 -3
- package/dist/{chunk-JFXQEVLF.js.map → chunk-QZNJOHN6.js.map} +1 -1
- package/dist/{chunk-V5TZH4GF.js → chunk-R7NHYEJF.js} +4 -4
- package/dist/{chunk-V5TZH4GF.js.map → chunk-R7NHYEJF.js.map} +1 -1
- package/dist/{chunk-V7PQZOBR.js → chunk-RYYLMBA2.js} +5 -5
- package/dist/{chunk-V7PQZOBR.js.map → chunk-RYYLMBA2.js.map} +1 -1
- package/dist/{chunk-WBYDAL6X.js → chunk-S3O3GKB7.js} +4 -4
- package/dist/{chunk-WBYDAL6X.js.map → chunk-S3O3GKB7.js.map} +1 -1
- package/dist/{chunk-Y34MSWEZ.js → chunk-SBSA3IQA.js} +3 -3
- package/dist/{chunk-Y34MSWEZ.js.map → chunk-SBSA3IQA.js.map} +1 -1
- package/dist/{chunk-Y63UQZ7P.js → chunk-T42WRQ4O.js} +3 -3
- package/dist/{chunk-Y63UQZ7P.js.map → chunk-T42WRQ4O.js.map} +1 -1
- package/dist/{chunk-OBVJ7RPW.js → chunk-T7CTHHG7.js} +3 -3
- package/dist/{chunk-OBVJ7RPW.js.map → chunk-T7CTHHG7.js.map} +1 -1
- package/dist/{chunk-7I5VRVDP.js → chunk-TCHRMVTO.js} +4 -4
- package/dist/{chunk-7I5VRVDP.js.map → chunk-TCHRMVTO.js.map} +1 -1
- package/dist/{chunk-NRDSGLCQ.js → chunk-VLTQGE2E.js} +65 -22
- package/dist/chunk-VLTQGE2E.js.map +1 -0
- package/dist/{chunk-Z2K6BGUR.js → chunk-WSBKB4CJ.js} +13 -13
- package/dist/{chunk-Z2K6BGUR.js.map → chunk-WSBKB4CJ.js.map} +1 -1
- package/dist/{chunk-3MKPZZRE.js → chunk-X77SUM4P.js} +3 -3
- package/dist/{chunk-3MKPZZRE.js.map → chunk-X77SUM4P.js.map} +1 -1
- package/dist/{chunk-XCNK4UE5.js → chunk-XDKH7XSA.js} +5 -5
- package/dist/{chunk-XCNK4UE5.js.map → chunk-XDKH7XSA.js.map} +1 -1
- package/dist/{chunk-TH4CTXHX.js → chunk-XUSALIEI.js} +6 -6
- package/dist/{chunk-TH4CTXHX.js.map → chunk-XUSALIEI.js.map} +1 -1
- package/dist/{chunk-3KHYGOEY.js → chunk-Y3HTGHJC.js} +3 -3
- package/dist/{chunk-3KHYGOEY.js.map → chunk-Y3HTGHJC.js.map} +1 -1
- package/dist/{chunk-YBQONMH2.js → chunk-YOH2L76X.js} +90 -50
- package/dist/chunk-YOH2L76X.js.map +1 -0
- package/dist/{chunk-32XKCNCL.js → chunk-ZCAJZ4B2.js} +3 -3
- package/dist/chunk-ZCAJZ4B2.js.map +1 -0
- package/dist/{chunk-IXWODEED.js → chunk-ZPWTOUTK.js} +43 -7
- package/dist/chunk-ZPWTOUTK.js.map +1 -0
- package/dist/cli/index.js +210 -163
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/src/commands/catalog.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/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/outdated.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/run.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/helpers.d.ts +12 -0
- package/dist/cli/src/helpers.d.ts.map +1 -1
- package/dist/cli/src/skill-checks.d.ts +14 -6
- package/dist/cli/src/skill-checks.d.ts.map +1 -1
- package/dist/connectors/config.js +5 -5
- package/dist/connectors/index.js +15 -15
- package/dist/{connectors-OXP2JBGI.js → connectors-4QWAKPHB.js} +18 -18
- package/dist/{connectors-OXP2JBGI.js.map → connectors-4QWAKPHB.js.map} +1 -1
- 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 +2 -2
- package/dist/core/ref.js +1 -1
- package/dist/core/runtime-assets.js +5 -5
- package/dist/core/src/lock.d.ts +4 -3
- package/dist/core/src/lock.d.ts.map +1 -1
- package/dist/core/src/models.d.ts +1 -1
- package/dist/core/src/models.d.ts.map +1 -1
- 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/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 +6 -6
- 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-2RONZKCU.js} +16 -16
- package/dist/{ensure-sources-5ISVIA4T.js.map → ensure-sources-2RONZKCU.js.map} +1 -1
- package/dist/factory-assets/connectors/box.js +15 -15
- package/dist/factory-assets/connectors/deploy.js +15 -15
- package/dist/factory-assets/connectors/devserver.js +15 -15
- package/dist/factory-assets/connectors/flow/adapter.js +15 -15
- 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 +8 -8
- package/dist/factory-assets/connectors/flow/run-flow.js +17 -17
- package/dist/factory-assets/connectors/flow.js +15 -15
- package/dist/factory-assets/connectors/git.js +15 -15
- package/dist/factory-assets/connectors/gmail.js +15 -15
- package/dist/factory-assets/connectors/googledrive.js +15 -15
- package/dist/factory-assets/connectors/local.js +15 -15
- package/dist/factory-assets/connectors/mattermost.js +15 -15
- package/dist/factory-assets/connectors/memory.js +15 -15
- package/dist/factory-assets/connectors/minio.js +15 -15
- package/dist/factory-assets/connectors/postgres.js +15 -15
- package/dist/factory-assets/connectors/s3.js +15 -15
- package/dist/factory-assets/connectors/sharepoint.js +15 -15
- package/dist/factory-assets/connectors/sqlite.js +15 -15
- package/dist/factory-assets/connectors/static-server.js +15 -15
- package/dist/factory-assets/connectors/tunnel.js +15 -15
- package/dist/factory-assets/connectors/webdav.js +15 -15
- package/dist/factory-assets/connectors/xstate-store.js +15 -15
- package/dist/factory-assets/connectors/xstate.js +15 -15
- package/dist/factory-assets/skills/authoring-skaile-manifests/references/dependency-standard.md +4 -2
- package/dist/{flows-HMSE76PO.js → flows-EQF2CH4U.js} +11 -11
- package/dist/{flows-HMSE76PO.js.map → flows-EQF2CH4U.js.map} +1 -1
- package/dist/{helpers-X6URBGSF.js → helpers-CFK6YP6R.js} +16 -16
- package/dist/{helpers-X6URBGSF.js.map → helpers-CFK6YP6R.js.map} +1 -1
- package/dist/library/index.js +10 -10
- package/dist/library/install.js +3 -3
- package/dist/library/src/index.d.ts +1 -1
- package/dist/library/src/index.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.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-53UTB3MB.js} +51 -24
- package/dist/library-publish-53UTB3MB.js.map +1 -0
- package/dist/open-library-BOSPJVID.js +40 -0
- package/dist/{open-library-4QSUORI6.js.map → open-library-BOSPJVID.js.map} +1 -1
- package/dist/open-registry-4FI7HKET.js +32 -0
- package/dist/{open-registry-VCKS3MP5.js.map → open-registry-4FI7HKET.js.map} +1 -1
- package/dist/{paths-BVO56A25.js → paths-SUS4S4YT.js} +9 -9
- package/dist/{paths-BVO56A25.js.map → paths-SUS4S4YT.js.map} +1 -1
- package/dist/{plugin-store-X7GPWGBG.js → plugin-store-AGQDMING.js} +8 -8
- package/dist/{plugin-store-X7GPWGBG.js.map → plugin-store-AGQDMING.js.map} +1 -1
- package/dist/{project-PAXP46RD.js → project-I55A4O2T.js} +20 -20
- package/dist/{project-PAXP46RD.js.map → project-I55A4O2T.js.map} +1 -1
- package/dist/resolver/index.js +7 -7
- package/dist/runner/index.js +28 -28
- 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 +13 -13
- package/dist/sdk/bridge.js +11 -11
- package/dist/sdk/core.js +6 -6
- package/dist/sdk/flow.js +8 -8
- package/dist/sdk/index.js +28 -28
- package/dist/sdk/resolver.js +7 -7
- package/dist/sdk/runner.js +28 -28
- package/dist/{setup-BV55VHWC.js → setup-7DQJKHUI.js} +21 -21
- package/dist/{setup-BV55VHWC.js.map → setup-7DQJKHUI.js.map} +1 -1
- package/dist/{skills-EDFUCJPX.js → skills-NUEN5NDX.js} +12 -12
- package/dist/{skills-EDFUCJPX.js.map → skills-NUEN5NDX.js.map} +1 -1
- package/dist/{source-E4VAT5RZ.js → source-G2LV5LVD.js} +21 -21
- package/dist/{source-E4VAT5RZ.js.map → source-G2LV5LVD.js.map} +1 -1
- package/dist/{source-manifest-publish-CLEE6TNH.js → source-manifest-publish-6RM7SWLZ.js} +23 -23
- package/dist/{source-manifest-publish-CLEE6TNH.js.map → source-manifest-publish-6RM7SWLZ.js.map} +1 -1
- package/dist/tui/index.js +59 -39
- package/dist/tui/index.js.map +1 -1
- package/dist/tui/src/repl.d.ts.map +1 -1
- package/dist/types/manifests.js +1 -1
- package/dist/types/src/manifests/preset.d.ts +1 -1
- package/dist/workspace-plugin/adapters/mcp.js +22 -22
- package/dist/workspace-plugin/adapters/omp.js +14 -14
- package/dist/workspace-plugin/index.js +1 -1
- package/package.json +1 -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-GEWAIQZ5.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-PE36IF2D.js.map +0 -1
- package/dist/chunk-TRSQP3JD.js.map +0 -1
- package/dist/chunk-YBQONMH2.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/cli/index.js
CHANGED
|
@@ -1,24 +1,24 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { makeProvidersCommand, loadRegistryView, addProviderEntry, ProviderRegistryWriteError } from '../chunk-
|
|
3
|
-
import { makeSourceCommand, syncProjectSources, divergedSourceClones } from '../chunk-
|
|
4
|
-
import { makeInstallCommand, makeCheckCommand, makeCleanCommand, reportReplaced, reportRelocked, REF_HINT, reportInstalledSoftDeps } from '../chunk-
|
|
2
|
+
import { makeProvidersCommand, loadRegistryView, addProviderEntry, ProviderRegistryWriteError } from '../chunk-XDKH7XSA.js';
|
|
3
|
+
import { makeSourceCommand, syncProjectSources, divergedSourceClones } from '../chunk-WSBKB4CJ.js';
|
|
4
|
+
import { makeInstallCommand, makeCheckCommand, makeCleanCommand, reportReplaced, reportRelocked, reportMoved, REF_HINT, reportInstalledSoftDeps } from '../chunk-CJERAGFY.js';
|
|
5
5
|
import { createSpinner } from '../chunk-NESV47MF.js';
|
|
6
|
-
import { AI_RESOURCES } from '../chunk-
|
|
7
|
-
import { unresolvedManifestDependencies, warnIgnoredDomainFiles, warnLegacyBundleFiles, removedDomainOption, rejectRemovedDomainOption, resolveLibraryPublisherDetailed, warnLibraryNameFallback, indexLibrary, requireValidPublisherOrExit, exitOnManifestPublisherProblems, registerLibraryAsset, DOMAIN_REMOVED_HINT, manifestPublisherProblems, manifestRequiresProblems, findAssetManifestFile, declaredVersion, checkAssetFile, duplicateAssetMessage, readAssetBody, checkAsset, invalidSemverText } from '../chunk-
|
|
8
|
-
import { getStoreConfig, storeFetch, deviceLogin, loadStoreAuthConfig, logout, hasStoredAuth, isStoreAuthenticated, getStoreToken, getStoreIdentity, assetEntryRef, manifestVersionMismatchMessage } from '../chunk-
|
|
9
|
-
import { openCatalogSource, LocalCatalogDisabledError, openLibraryManager, openLibrary } from '../chunk-
|
|
10
|
-
import { logErr, S, logOk, logInfo, logWarn, TARGET_DEFAULT_HINT, deferredWarnings, warnLegacyClaudeCopies, kindColorPad, kindColor, colorRef, formatSoftDepSection, bareSoftDepName, formatSoftDepHint, formatRelativeTime, formatSoftDepRemovePreview, formatSoftDepAddPreview, fitWidth, KIND_COL_WIDTH } from '../chunk-
|
|
11
|
-
import { getKindRegistry, getKnownKinds } from '../chunk-
|
|
6
|
+
import { AI_RESOURCES } from '../chunk-S3O3GKB7.js';
|
|
7
|
+
import { unresolvedManifestDependencies, warnIgnoredDomainFiles, warnLegacyBundleFiles, removedDomainOption, rejectRemovedDomainOption, resolveLibraryPublisherDetailed, warnLibraryNameFallback, indexLibrary, requireValidPublisherOrExit, exitOnManifestPublisherProblems, registerLibraryAsset, DOMAIN_REMOVED_HINT, manifestPublisherProblems, manifestRequiresProblems, findAssetManifestFile, declaredVersion, checkAssetFile, duplicateAssetMessage, readAssetBody, checkAsset, invalidSemverText } from '../chunk-YOH2L76X.js';
|
|
8
|
+
import { getStoreConfig, storeFetch, deviceLogin, loadStoreAuthConfig, logout, hasStoredAuth, isStoreAuthenticated, getStoreToken, getStoreIdentity, assetEntryRef, manifestVersionMismatchMessage } from '../chunk-RYYLMBA2.js';
|
|
9
|
+
import { openCatalogSource, LocalCatalogDisabledError, openLibraryManager, openLibrary } from '../chunk-PQFHMQHQ.js';
|
|
10
|
+
import { logErr, S, logOk, logInfo, logWarn, TARGET_DEFAULT_HINT, requireProjectConfig, deferredWarnings, warnLegacyClaudeCopies, kindColorPad, kindColor, colorRef, formatSoftDepSection, bareSoftDepName, formatSoftDepHint, formatRelativeTime, formatSoftDepRemovePreview, formatSoftDepAddPreview, fitWidth, KIND_COL_WIDTH } from '../chunk-GV4DZ6MT.js';
|
|
11
|
+
import { getKindRegistry, getKnownKinds } from '../chunk-CAHB6MHA.js';
|
|
12
12
|
import { LocalSecretsProvider } from '../chunk-ILFGVSTJ.js';
|
|
13
|
-
import { runAgentChat, isCompositionError, loadSessionById, loadSession, listSessions, setCurrentSession, deleteSession, clearSession, loadAgentManifest, hashAgentFiles, createCompositionContentSource, compileComposition, instanceForSession, resolveAgentInstance, describeComposition, MarkdownStreamer } from '../chunk-
|
|
14
|
-
import { buildClaudePluginFiles } from '../chunk-
|
|
15
|
-
import '../chunk-
|
|
16
|
-
import '../chunk-
|
|
13
|
+
import { runAgentChat, isCompositionError, loadSessionById, loadSession, listSessions, setCurrentSession, deleteSession, clearSession, loadAgentManifest, hashAgentFiles, createCompositionContentSource, compileComposition, instanceForSession, resolveAgentInstance, describeComposition, MarkdownStreamer } from '../chunk-VLTQGE2E.js';
|
|
14
|
+
import { buildClaudePluginFiles } from '../chunk-6O2X3GPW.js';
|
|
15
|
+
import '../chunk-IER3KIPH.js';
|
|
16
|
+
import '../chunk-QVFAS5IO.js';
|
|
17
17
|
import '../chunk-R6O6YWU7.js';
|
|
18
|
-
import '../chunk-
|
|
19
|
-
import '../chunk-
|
|
18
|
+
import '../chunk-G4FFOV3N.js';
|
|
19
|
+
import '../chunk-T42WRQ4O.js';
|
|
20
20
|
import '../chunk-4ZTPYIBE.js';
|
|
21
|
-
import '../chunk-
|
|
21
|
+
import '../chunk-MZG34MBZ.js';
|
|
22
22
|
import '../chunk-X5YPJV4N.js';
|
|
23
23
|
import '../chunk-O7SG5PC2.js';
|
|
24
24
|
import '../chunk-7QBNJTTQ.js';
|
|
@@ -27,56 +27,56 @@ import '../chunk-5LKOAX7I.js';
|
|
|
27
27
|
import '../chunk-32NA4TVC.js';
|
|
28
28
|
import '../chunk-W3UDISS2.js';
|
|
29
29
|
import '../chunk-NWDSLXOX.js';
|
|
30
|
-
import { runFlow, resumeFlow } from '../chunk-
|
|
30
|
+
import { runFlow, resumeFlow } from '../chunk-3SM2DL2T.js';
|
|
31
31
|
import '../chunk-4R6DROGN.js';
|
|
32
|
-
import { validateFlowVersions } from '../chunk-
|
|
33
|
-
import '../chunk-
|
|
32
|
+
import { validateFlowVersions } from '../chunk-X77SUM4P.js';
|
|
33
|
+
import '../chunk-GCHPUTA3.js';
|
|
34
34
|
import '../chunk-ISHJITXJ.js';
|
|
35
|
-
import '../chunk-
|
|
35
|
+
import '../chunk-4A4OD24G.js';
|
|
36
36
|
import '../chunk-X4BAYGMT.js';
|
|
37
|
-
import '../chunk-
|
|
38
|
-
import '../chunk-
|
|
39
|
-
import '../chunk-
|
|
37
|
+
import '../chunk-R7NHYEJF.js';
|
|
38
|
+
import '../chunk-T7CTHHG7.js';
|
|
39
|
+
import '../chunk-HCEVNYSH.js';
|
|
40
40
|
import '../chunk-LOO5CB5M.js';
|
|
41
41
|
import '../chunk-2H73V6XR.js';
|
|
42
|
-
import '../chunk-
|
|
42
|
+
import '../chunk-M3B6EIJD.js';
|
|
43
43
|
import '../chunk-B4X2N7JQ.js';
|
|
44
44
|
import '../chunk-YROR332M.js';
|
|
45
|
-
import { getProviderPreset, AI_PROVIDER_PRESETS } from '../chunk-
|
|
45
|
+
import { getProviderPreset, AI_PROVIDER_PRESETS } from '../chunk-47U4GZ4M.js';
|
|
46
46
|
import '../chunk-6E6PKKAD.js';
|
|
47
47
|
import '../chunk-IFGTRL2I.js';
|
|
48
|
-
import { projectAiAssetsRoots, loadFlow, loadAllFlowEntries, findFlowFileInRoots } from '../chunk-
|
|
48
|
+
import { projectAiAssetsRoots, loadFlow, loadAllFlowEntries, findFlowFileInRoots } from '../chunk-TCHRMVTO.js';
|
|
49
49
|
import '../chunk-LNFKL23K.js';
|
|
50
|
-
import '../chunk-
|
|
50
|
+
import '../chunk-D3B36CYC.js';
|
|
51
51
|
import '../chunk-M3WPBTGJ.js';
|
|
52
52
|
import { nodeLabel, nodeSkillAsset, nodeIsInert, nodeIsOptional, nodeRunKind, flowSkillVersionPins } from '../chunk-7RGTAEG6.js';
|
|
53
53
|
import '../chunk-NUELZWCF.js';
|
|
54
54
|
import '../chunk-F4NJDSR7.js';
|
|
55
|
-
import { AssetManager, MissingManifestError, parseRefTolerant, normalizeRepoUrl, FACTORY_SOURCE_URL } from '../chunk-
|
|
56
|
-
import { libraryDirMissing, missingLibraryDirMessage, cloneOrInitGitRepo, trackOriginBranch, stampManifestPublisher, ensureGitRepo, conflictingAssetRoot, setManifestPublisher, LIBRARY_OWNERSHIPS, isGitRepo, assertManifestEditable, installLibraryAsset, missingRootAssets, assertValidLibraryName, syncManifestWithDisk, getStoreManifestsDir, getDefaultValue, isSecretPlaceholder } from '../chunk-
|
|
57
|
-
import { parseManifestFile, SEMVER_RE } from '../chunk-
|
|
58
|
-
import '../chunk-
|
|
55
|
+
import { AssetManager, MissingManifestError, parseRefTolerant, normalizeRepoUrl, FACTORY_SOURCE_URL } from '../chunk-DZMNFCWB.js';
|
|
56
|
+
import { libraryDirMissing, missingLibraryDirMessage, cloneOrInitGitRepo, trackOriginBranch, stampManifestPublisher, ensureGitRepo, conflictingAssetRoot, setManifestPublisher, LIBRARY_OWNERSHIPS, isGitRepo, assertManifestEditable, installLibraryAsset, missingRootAssets, assertValidLibraryName, syncManifestWithDisk, getStoreManifestsDir, getDefaultValue, isSecretPlaceholder } from '../chunk-2F5AWQX5.js';
|
|
57
|
+
import { parseManifestFile, SEMVER_RE } from '../chunk-J4RBUFGM.js';
|
|
58
|
+
import '../chunk-COH6FQAG.js';
|
|
59
59
|
import '../chunk-R7FOF242.js';
|
|
60
60
|
import '../chunk-3TXEJN4W.js';
|
|
61
|
-
import { installTargetOf, SCAFFOLD_KINDS } from '../chunk-
|
|
61
|
+
import { installTargetOf, SCAFFOLD_KINDS } from '../chunk-FH7W6TJ4.js';
|
|
62
62
|
import '../chunk-CGYEHQOX.js';
|
|
63
63
|
import '../chunk-KTBKW2FI.js';
|
|
64
64
|
import '../chunk-UQ6LFBPZ.js';
|
|
65
|
-
import '../chunk-
|
|
66
|
-
import { effectiveComposes, validatePreset, composeSlotDiagnostics, agentDeprecationDiagnostics, validateAgent, SLOT_ID_PATTERN } from '../chunk-
|
|
67
|
-
import { resolveSettings, globalSettingsPath, projectSettingsPath, loadSettings, saveSettings, WorkspaceYamlEditor, resolveLibraryDir, checkAgentSkillConformance, globalInstallDir, GLOBAL_INSTALL_DIR_NAME, readLock, aiResourceRoots, workspaceProviderRegistryPath, userProviderRegistryPath, loadProviderRegistryFile } from '../chunk-
|
|
65
|
+
import '../chunk-HZXUXHIV.js';
|
|
66
|
+
import { effectiveComposes, validatePreset, composeSlotDiagnostics, agentDeprecationDiagnostics, validateAgent, SLOT_ID_PATTERN } from '../chunk-ZCAJZ4B2.js';
|
|
67
|
+
import { resolveSettings, globalSettingsPath, projectSettingsPath, loadSettings, saveSettings, WorkspaceYamlEditor, resolveLibraryDir, checkAgentSkillConformance, globalInstallDir, GLOBAL_INSTALL_DIR_NAME, readLock, aiResourceRoots, workspaceProviderRegistryPath, userProviderRegistryPath, loadProviderRegistryFile } from '../chunk-PBBPZYVG.js';
|
|
68
68
|
import '../chunk-4GY63JU6.js';
|
|
69
|
-
import { factoryAssetRoots } from '../chunk-
|
|
69
|
+
import { factoryAssetRoots } from '../chunk-EDYHEMJA.js';
|
|
70
70
|
import '../chunk-PMECEZK3.js';
|
|
71
71
|
import { DEFAULT_DRIVER_ID, DRIVER_DEFAULTS } from '../chunk-5BEFNLOR.js';
|
|
72
72
|
import { findKindDirs } from '../chunk-A2ULN3KX.js';
|
|
73
|
-
import { SourceEntryError,
|
|
73
|
+
import { SourceEntryError, sourceCacheKey, getGlobalCacheDir, resolveAgentDir, AgentRefResolutionError, resolveAgentDefinitionDir, resolveSkWorkspaceConfig, matchPin, coerceVersion, loadSkWorkspaceConfig, normalizeAgentInstances, agentInstanceDiagnostics, storeManifestSlug, isWorkspaceConfigFilename } from '../chunk-ALEYHUC5.js';
|
|
74
74
|
import { globalCacheRoot, globalSkaileDir, userConfigPath } from '../chunk-L5VSIPQD.js';
|
|
75
75
|
import { SUPPORTED_DRIVER_TARGETS, driverTargetForDriver } from '../chunk-CPSIPIX7.js';
|
|
76
|
-
import { SKAILE_MANIFEST_FILENAME, decodeSkaileManifest, loadSkPublishManifest, encodeSkaileManifest } from '../chunk-
|
|
76
|
+
import { SKAILE_MANIFEST_FILENAME, decodeSkaileManifest, loadSkPublishManifest, encodeSkaileManifest } from '../chunk-ZPWTOUTK.js';
|
|
77
77
|
import { pluginTitle } from '../chunk-RVRB27AN.js';
|
|
78
|
-
import { dedupeRequirements, parseFrontmatter, scanDirectory } from '../chunk-
|
|
79
|
-
import { parseAssetRef, isValidPublisher, PUBLISHER_HINT, isValidAssetName, ASSET_NAME_HINT, slugifyAssetName, parseAssetRefLoose, assetRefToStr } from '../chunk-
|
|
78
|
+
import { dedupeRequirements, parseFrontmatter, scanDirectory } from '../chunk-SBSA3IQA.js';
|
|
79
|
+
import { parseAssetRef, isValidPublisher, PUBLISHER_HINT, isValidAssetName, ASSET_NAME_HINT, slugifyAssetName, parseAssetRefLoose, assetRefToStr } from '../chunk-BNMZVPYA.js';
|
|
80
80
|
import { portableSpawn, portableSpawnSync } from '../chunk-ICSCSM5D.js';
|
|
81
81
|
import { openSqlite } from '../chunk-DALV4HHP.js';
|
|
82
82
|
import { parseModelRef, resolveEntryBaseUrl } from '../chunk-MJHSLODD.js';
|
|
@@ -184,7 +184,7 @@ async function runSearch(kind, query, opts) {
|
|
|
184
184
|
}
|
|
185
185
|
}
|
|
186
186
|
async function searchIndex(query, kind) {
|
|
187
|
-
const { openLibrary: openLibrary2 } = await import('../open-library-
|
|
187
|
+
const { openLibrary: openLibrary2 } = await import('../open-library-BOSPJVID.js');
|
|
188
188
|
const library = await openLibrary2();
|
|
189
189
|
try {
|
|
190
190
|
const { libraryDirMissing: libraryDirMissing2 } = await import('../library/index.js');
|
|
@@ -335,7 +335,7 @@ async function searchLocal(query, kind, opts, showStore, airGapped) {
|
|
|
335
335
|
const factory = await searchFactory(projectDir, query, kind);
|
|
336
336
|
let entries = unionEntries(await searchIndex(query, kind), factory);
|
|
337
337
|
if (entries.length === 0 && !query && !kind && !airGapped) {
|
|
338
|
-
const { autoSyncForSearch } = await import('../source-
|
|
338
|
+
const { autoSyncForSearch } = await import('../source-G2LV5LVD.js');
|
|
339
339
|
if (await autoSyncForSearch(projectDir)) {
|
|
340
340
|
entries = unionEntries(await searchIndex(query, kind), factory);
|
|
341
341
|
}
|
|
@@ -455,7 +455,7 @@ async function searchStore(query, kind, opts, airGapped) {
|
|
|
455
455
|
logInfo("air-gapped (cache_ttl: 0) \u2014 local sources only");
|
|
456
456
|
return;
|
|
457
457
|
}
|
|
458
|
-
const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError: LocalCatalogDisabledError2 } = await import('../open-library-
|
|
458
|
+
const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError: LocalCatalogDisabledError2 } = await import('../open-library-BOSPJVID.js');
|
|
459
459
|
try {
|
|
460
460
|
const remote = await openCatalogSource2({ projectDir: path18__default.resolve(opts.projectDir) });
|
|
461
461
|
const assets = await remote.listAssets(kind ? { kind } : {});
|
|
@@ -578,13 +578,7 @@ function makeAddCommand() {
|
|
|
578
578
|
process.exit(1);
|
|
579
579
|
}
|
|
580
580
|
const harnesses = parseHarnessFilter(opts.harness);
|
|
581
|
-
if (!opts.global && harnesses === void 0)
|
|
582
|
-
const projectDir = path18__default.resolve(opts.projectDir);
|
|
583
|
-
if (!existsSync(path18__default.join(projectDir, SKAILE_YAML_DEFAULT))) {
|
|
584
|
-
logErr(`No ${S.cmd("skaile.yaml")} found. Run ${S.cmd("skaile init")} to create one.`);
|
|
585
|
-
process.exit(1);
|
|
586
|
-
}
|
|
587
|
-
}
|
|
581
|
+
if (!opts.global && harnesses === void 0) requireProjectConfig(opts.projectDir);
|
|
588
582
|
const warnings = deferredWarnings();
|
|
589
583
|
const am2 = new AssetManager({
|
|
590
584
|
registry: getKindRegistry(),
|
|
@@ -600,9 +594,11 @@ function makeAddCommand() {
|
|
|
600
594
|
const libraryOf = /* @__PURE__ */ new Map();
|
|
601
595
|
let presets = [];
|
|
602
596
|
const skippedLinks = /* @__PURE__ */ new Set();
|
|
597
|
+
const skippedEnv = /* @__PURE__ */ new Set();
|
|
603
598
|
const added = await am2.add(ref, {
|
|
604
599
|
link: opts.link,
|
|
605
600
|
onLibraryOrigin: (deployedRef, library) => libraryOf.set(deployedRef, library),
|
|
601
|
+
onLibraryMoved: (m) => warnings.push(`${m.ref} moved from ${m.from} to ${m.to}`),
|
|
606
602
|
onPresets: (expanded) => {
|
|
607
603
|
presets = expanded;
|
|
608
604
|
},
|
|
@@ -611,6 +607,14 @@ function makeAddCommand() {
|
|
|
611
607
|
if (skippedLinks.has(linkPath)) return;
|
|
612
608
|
skippedLinks.add(linkPath);
|
|
613
609
|
warnings.push(`skipped symlink ${linkPath}`);
|
|
610
|
+
},
|
|
611
|
+
// A `.env` in an asset root is never deployed or hashed: say so once per file.
|
|
612
|
+
onEnvFile: (_assetRef, envPath) => {
|
|
613
|
+
if (skippedEnv.has(envPath)) return;
|
|
614
|
+
skippedEnv.add(envPath);
|
|
615
|
+
warnings.push(
|
|
616
|
+
`${envPath} is a .env file: it is not deployed or hashed with the asset. Keep secrets out of an asset root`
|
|
617
|
+
);
|
|
614
618
|
}
|
|
615
619
|
});
|
|
616
620
|
spinner.stop("Done");
|
|
@@ -665,6 +669,8 @@ function makeRemoveCommand() {
|
|
|
665
669
|
"Comma-separated global harnesses to undeploy from (default: all resolved); implies --global"
|
|
666
670
|
).option("--target <agent>", `Driver target (${TARGET_DEFAULT_HINT})`).option("--force", "Remove even when another installed asset requires it").option("--no-soft-deps", "skip the orphaned-soft-dep prompt (don't remove, don't report)").action(async (ref, opts) => {
|
|
667
671
|
const harnesses = parseHarnessFilter(opts.harness);
|
|
672
|
+
if (!opts.global && harnesses === void 0)
|
|
673
|
+
requireProjectConfig(opts.projectDir, { allowMissing: true });
|
|
668
674
|
const am2 = new AssetManager({
|
|
669
675
|
registry: getKindRegistry(),
|
|
670
676
|
projectDir: path18__default.resolve(opts.projectDir),
|
|
@@ -850,7 +856,7 @@ async function resolveInfoEntry(am2, ref, opts) {
|
|
|
850
856
|
return { entry: match ?? deployed };
|
|
851
857
|
}
|
|
852
858
|
const lookup = opts.storeLookup ?? (async (filter) => {
|
|
853
|
-
const { resolveCatalogSource } = await import('../open-library-
|
|
859
|
+
const { resolveCatalogSource } = await import('../open-library-BOSPJVID.js');
|
|
854
860
|
const { source, close } = await resolveCatalogSource({ projectDir: opts.projectDir });
|
|
855
861
|
try {
|
|
856
862
|
return await source.listAssets(filter);
|
|
@@ -866,7 +872,7 @@ async function resolveInfoEntry(am2, ref, opts) {
|
|
|
866
872
|
);
|
|
867
873
|
return { entry: hit ? catalogAssetToEntry(hit) : null };
|
|
868
874
|
} catch (err2) {
|
|
869
|
-
const { LocalCatalogDisabledError: LocalCatalogDisabledError2 } = await import('../open-library-
|
|
875
|
+
const { LocalCatalogDisabledError: LocalCatalogDisabledError2 } = await import('../open-library-BOSPJVID.js');
|
|
870
876
|
const storeNote = err2 instanceof Error ? err2.message : String(err2);
|
|
871
877
|
const disabled = err2 instanceof LocalCatalogDisabledError2 || /catalog\.url/i.test(storeNote);
|
|
872
878
|
return { entry: null, storeNote, ...disabled ? { storeDisabled: true } : {} };
|
|
@@ -942,31 +948,31 @@ function makeCreateCommand() {
|
|
|
942
948
|
}
|
|
943
949
|
function makeDoctorCommand() {
|
|
944
950
|
return new Command("doctor").description("Scan for missing dependency chains").argument("[name]", "Check a specific asset (kind:name)").option("--project-dir <path>", "Project directory", process.cwd()).action(async (name, opts) => {
|
|
951
|
+
requireProjectConfig(opts.projectDir);
|
|
945
952
|
const am2 = new AssetManager({
|
|
946
953
|
registry: getKindRegistry(),
|
|
947
954
|
projectDir: path18__default.resolve(opts.projectDir)
|
|
948
955
|
});
|
|
949
|
-
const { gaps
|
|
956
|
+
const { gaps } = await am2.projectState();
|
|
950
957
|
if (gaps.length === 0) {
|
|
951
958
|
logOk("No missing dependencies.");
|
|
952
959
|
return;
|
|
953
960
|
}
|
|
954
961
|
process.exitCode = 1;
|
|
955
962
|
for (const g of gaps) if (g.type !== "requires") logErr(g.message);
|
|
956
|
-
const missing =
|
|
963
|
+
const missing = gaps.filter((g) => g.type === "requires" && g.asset !== void 0);
|
|
957
964
|
if (missing.length === 0) return;
|
|
958
|
-
const assetW = Math.max(5, ...missing.map((
|
|
959
|
-
const depW = Math.max(11, ...missing.map((
|
|
965
|
+
const assetW = Math.max(5, ...missing.map((g) => (g.asset ?? "").length));
|
|
966
|
+
const depW = Math.max(11, ...missing.map((g) => g.ref.length));
|
|
960
967
|
console.log();
|
|
961
968
|
console.log(
|
|
962
969
|
` ${S.dim("ASSET".padEnd(assetW))} ${S.dim("MISSING DEP".padEnd(depW))} ${S.dim("IN REPOS")}`
|
|
963
970
|
);
|
|
964
971
|
console.log(` ${S.rule(assetW + depW + 15)}`);
|
|
965
|
-
for (const
|
|
966
|
-
const asset =
|
|
967
|
-
const
|
|
968
|
-
|
|
969
|
-
console.log(` ${asset.padEnd(assetW)} ${dep.padEnd(depW)} ${status4}`);
|
|
972
|
+
for (const g of missing) {
|
|
973
|
+
const asset = g.asset ?? "";
|
|
974
|
+
const status4 = g.manualFix ? S.err("not found") : S.warn("fixable");
|
|
975
|
+
console.log(` ${asset.padEnd(assetW)} ${g.ref.padEnd(depW)} ${status4}`);
|
|
970
976
|
}
|
|
971
977
|
console.log();
|
|
972
978
|
});
|
|
@@ -1479,7 +1485,7 @@ function makeCatalogCommand() {
|
|
|
1479
1485
|
return catalog;
|
|
1480
1486
|
}
|
|
1481
1487
|
async function runLocalCatalogTest(projectDir) {
|
|
1482
|
-
const { resolveCatalogSource } = await import('../open-library-
|
|
1488
|
+
const { resolveCatalogSource } = await import('../open-library-BOSPJVID.js');
|
|
1483
1489
|
let resolved;
|
|
1484
1490
|
try {
|
|
1485
1491
|
resolved = await resolveCatalogSource({ projectDir });
|
|
@@ -1622,7 +1628,7 @@ async function scanLibraryFlowEntries() {
|
|
|
1622
1628
|
const { LocalIndex, resolveIndexPath, scanAuthoringLibraries } = await import('../library/index.js');
|
|
1623
1629
|
const indexPath = resolveIndexPath();
|
|
1624
1630
|
if (!existsSync(indexPath)) return entries;
|
|
1625
|
-
const { getKindRegistry: getKindRegistry2 } = await import('../open-registry-
|
|
1631
|
+
const { getKindRegistry: getKindRegistry2 } = await import('../open-registry-4FI7HKET.js');
|
|
1626
1632
|
const index = new LocalIndex({ indexPath });
|
|
1627
1633
|
try {
|
|
1628
1634
|
for (const { assets } of await scanAuthoringLibraries(index, getKindRegistry2())) {
|
|
@@ -2575,7 +2581,7 @@ async function ensureTargetsRegistered(projectDir) {
|
|
|
2575
2581
|
const { resolveSkWorkspaceConfig: resolveSkWorkspaceConfig2 } = await import('../core/index.js');
|
|
2576
2582
|
const config = resolveSkWorkspaceConfig2(projectDir);
|
|
2577
2583
|
if (config.plugins && config.plugins.length > 0) {
|
|
2578
|
-
const { ensurePluginsLoaded } = await import('../plugin-store-
|
|
2584
|
+
const { ensurePluginsLoaded } = await import('../plugin-store-AGQDMING.js');
|
|
2579
2585
|
const result = await ensurePluginsLoaded(projectDir, config.plugins, pluginRegistry);
|
|
2580
2586
|
for (const f of result.failed) logWarn(f.error);
|
|
2581
2587
|
}
|
|
@@ -2694,15 +2700,24 @@ function makeDeployCommand() {
|
|
|
2694
2700
|
cmd.action(() => cmd.help());
|
|
2695
2701
|
return cmd;
|
|
2696
2702
|
}
|
|
2703
|
+
var DIFF_SHOWS = { content: true, modified: true, incomplete: true };
|
|
2697
2704
|
function makeDiffCommand() {
|
|
2698
2705
|
return new Command("diff").description("Show changes between deployed and source versions").argument("<ref>", "Asset reference (kind:name)").option("--project-dir <path>", "Project directory", process.cwd()).action(async (ref, opts) => {
|
|
2706
|
+
requireProjectConfig(opts.projectDir);
|
|
2699
2707
|
const am2 = new AssetManager({
|
|
2700
2708
|
registry: getKindRegistry(),
|
|
2701
2709
|
projectDir: path18__default.resolve(opts.projectDir)
|
|
2702
2710
|
});
|
|
2711
|
+
const gaps = await am2.gapsOf(ref);
|
|
2712
|
+
const blocking = gaps.filter((g) => !DIFF_SHOWS[g.type]);
|
|
2713
|
+
if (blocking.length > 0) {
|
|
2714
|
+
for (const g of blocking) logErr(g.message);
|
|
2715
|
+
process.exitCode = 1;
|
|
2716
|
+
return;
|
|
2717
|
+
}
|
|
2703
2718
|
const result = await am2.diff(ref);
|
|
2704
|
-
const problems =
|
|
2705
|
-
(g) => !(g.type === "content"
|
|
2719
|
+
const problems = gaps.filter(
|
|
2720
|
+
(g) => !(result.status === "differs" && (g.type === "content" || g.type === "modified"))
|
|
2706
2721
|
);
|
|
2707
2722
|
switch (result.status) {
|
|
2708
2723
|
case "not-found":
|
|
@@ -2711,8 +2726,12 @@ function makeDiffCommand() {
|
|
|
2711
2726
|
case "not-deployed":
|
|
2712
2727
|
if (problems.length === 0) logWarn(`${ref} is not deployed \u2014 run skaile install`);
|
|
2713
2728
|
break;
|
|
2729
|
+
case "no-files":
|
|
2730
|
+
if (problems.length === 0)
|
|
2731
|
+
logInfo(`${ref}: preset has no files of its own; run skaile diff on its items`);
|
|
2732
|
+
break;
|
|
2714
2733
|
case "identical":
|
|
2715
|
-
logInfo("No differences.");
|
|
2734
|
+
if (problems.length === 0) logInfo("No differences.");
|
|
2716
2735
|
break;
|
|
2717
2736
|
case "differs":
|
|
2718
2737
|
console.log(result.diff);
|
|
@@ -3682,7 +3701,7 @@ function pruneEmptyLibraryParents(libPath) {
|
|
|
3682
3701
|
}
|
|
3683
3702
|
}
|
|
3684
3703
|
async function warnIfNotGithubRemote(name, url) {
|
|
3685
|
-
const { isGithubRemote, notGithubRemoteMessage } = await import('../library-publish-
|
|
3704
|
+
const { isGithubRemote, notGithubRemoteMessage } = await import('../library-publish-53UTB3MB.js');
|
|
3686
3705
|
if (!isGithubRemote(url)) logWarn(notGithubRemoteMessage(name, url));
|
|
3687
3706
|
}
|
|
3688
3707
|
function scaffoldLibraryFiles(dir, name) {
|
|
@@ -3782,7 +3801,10 @@ function makeLibraryCommand() {
|
|
|
3782
3801
|
console.log(` ${S.label("manifestGen")} ${l.manifestGenerated}`);
|
|
3783
3802
|
console.log(` ${S.label("backendConfig")} ${JSON.stringify(l.backendConfig)}`);
|
|
3784
3803
|
console.log();
|
|
3785
|
-
if (libraryDirMissing(l))
|
|
3804
|
+
if (libraryDirMissing(l)) {
|
|
3805
|
+
logErr(missingLibraryDirMessage(l));
|
|
3806
|
+
process.exitCode = 1;
|
|
3807
|
+
}
|
|
3786
3808
|
} finally {
|
|
3787
3809
|
close();
|
|
3788
3810
|
}
|
|
@@ -3984,7 +4006,7 @@ function makeLibraryCommand() {
|
|
|
3984
4006
|
process.exit(1);
|
|
3985
4007
|
}
|
|
3986
4008
|
logOk(`Created ${effectiveKind}: ${pc5.dim(res.path)}`);
|
|
3987
|
-
if (opts.description === void 0
|
|
4009
|
+
if (opts.description === void 0) {
|
|
3988
4010
|
logWarn(
|
|
3989
4011
|
`Description is a TODO placeholder \u2014 edit it (what the ${effectiveKind} does and when to use it) or \`skaile validate\` will fail.`
|
|
3990
4012
|
);
|
|
@@ -4023,6 +4045,10 @@ function makeLibraryCommand() {
|
|
|
4023
4045
|
}
|
|
4024
4046
|
});
|
|
4025
4047
|
async function renameLibrary(manager, lib, newName) {
|
|
4048
|
+
if (libraryDirMissing(lib)) {
|
|
4049
|
+
logErr(missingLibraryDirMessage(lib));
|
|
4050
|
+
process.exit(1);
|
|
4051
|
+
}
|
|
4026
4052
|
requireValidLibraryName(newName);
|
|
4027
4053
|
if (await manager.getLibrary(newName)) {
|
|
4028
4054
|
logErr(`A library named "${newName}" is already registered.`);
|
|
@@ -4326,16 +4352,16 @@ function makeLibraryCommand() {
|
|
|
4326
4352
|
"With --create-repo: create the repo private (the store only accepts public repos)"
|
|
4327
4353
|
).option("--ref <gitref>", "Git ref to ingest (default: the library branch or main)").option("--dry-run", "Print the plan; push nothing and call no store endpoint").action(
|
|
4328
4354
|
async (lib, opts) => {
|
|
4329
|
-
const { runLibraryPublish } = await import('../library-publish-
|
|
4355
|
+
const { runLibraryPublish } = await import('../library-publish-53UTB3MB.js');
|
|
4330
4356
|
await withStoreErrorHandling(() => runLibraryPublish(lib, opts));
|
|
4331
4357
|
}
|
|
4332
4358
|
);
|
|
4333
4359
|
cmd.command("register <lib>").description("Register the library's manifest without pushing (bytes already on github)").option("--asset <ref>", "Publish only the single asset matching this ref/name").option("--ref <gitref>", "Git ref to ingest (default: the library branch or main)").option("--dry-run", "Print the plan; call no store endpoint").action(async (lib, opts) => {
|
|
4334
|
-
const { runLibraryRegister } = await import('../library-publish-
|
|
4360
|
+
const { runLibraryRegister } = await import('../library-publish-53UTB3MB.js');
|
|
4335
4361
|
await withStoreErrorHandling(() => runLibraryRegister(lib, opts));
|
|
4336
4362
|
});
|
|
4337
4363
|
cmd.command("yank <lib>").description("Retract the library's published assets from the store").option("--asset <ref>", "Yank only the single asset matching this ref/name").action(async (lib, opts) => {
|
|
4338
|
-
const { runLibraryYank } = await import('../library-publish-
|
|
4364
|
+
const { runLibraryYank } = await import('../library-publish-53UTB3MB.js');
|
|
4339
4365
|
await withStoreErrorHandling(() => runLibraryYank(lib, opts));
|
|
4340
4366
|
});
|
|
4341
4367
|
return cmd;
|
|
@@ -4995,7 +5021,7 @@ function scheduleSoftDepPreview() {
|
|
|
4995
5021
|
}
|
|
4996
5022
|
async function loadAssets() {
|
|
4997
5023
|
softDepPreviewCache.clear();
|
|
4998
|
-
const { gatherAssetFeeds } = await import('../asset-feeds-
|
|
5024
|
+
const { gatherAssetFeeds } = await import('../asset-feeds-CXGQIDFR.js');
|
|
4999
5025
|
const { entries, notes } = await gatherAssetFeeds(am, am.projectDir);
|
|
5000
5026
|
if (notes.length > 0) {
|
|
5001
5027
|
state.message = notes.map((n) => `[${n.feed}] ${n.message}`).join(" \u2022 ");
|
|
@@ -5199,7 +5225,7 @@ function reconcileCollapsedSets(rows) {
|
|
|
5199
5225
|
async function loadSourcesAndLibraries() {
|
|
5200
5226
|
try {
|
|
5201
5227
|
const [{ openLibraryManager: openLibraryManager2 }, { getGlobalCacheDir: getGlobalCacheDir2, globalSkaileDir: globalSkaileDir2 }] = await Promise.all([
|
|
5202
|
-
import('../open-library-
|
|
5228
|
+
import('../open-library-BOSPJVID.js'),
|
|
5203
5229
|
import('../core/index.js')
|
|
5204
5230
|
]);
|
|
5205
5231
|
const { manager, library, close } = await openLibraryManager2();
|
|
@@ -5331,12 +5357,25 @@ function pendingCountsFor(match) {
|
|
|
5331
5357
|
}
|
|
5332
5358
|
return [add, remove];
|
|
5333
5359
|
}
|
|
5334
|
-
function
|
|
5335
|
-
|
|
5336
|
-
if (
|
|
5337
|
-
|
|
5338
|
-
|
|
5339
|
-
|
|
5360
|
+
function groupSelectionState(rows, pendingAdds, pendingRemoves) {
|
|
5361
|
+
const own = rows.filter((r) => assetRefOf(r) !== null);
|
|
5362
|
+
if (own.length === 0) return "empty";
|
|
5363
|
+
const refs = refsOf(own);
|
|
5364
|
+
if (refs.some((r) => pendingAdds.has(r))) return "add";
|
|
5365
|
+
if (refs.some((r) => pendingRemoves.has(r))) return "remove";
|
|
5366
|
+
return own.every((r) => r.installed) ? "installed" : "none";
|
|
5367
|
+
}
|
|
5368
|
+
function groupStatus(rows) {
|
|
5369
|
+
switch (groupSelectionState(rows, state.pendingAdds, state.pendingRemoves)) {
|
|
5370
|
+
case "add":
|
|
5371
|
+
return pc5.blue("+ ");
|
|
5372
|
+
case "remove":
|
|
5373
|
+
return pc5.red("- ");
|
|
5374
|
+
case "installed":
|
|
5375
|
+
return pc5.green("\u2713 ");
|
|
5376
|
+
default:
|
|
5377
|
+
return pc5.dim("\xB7 ");
|
|
5378
|
+
}
|
|
5340
5379
|
}
|
|
5341
5380
|
function renderHeaderLine(opts) {
|
|
5342
5381
|
const indicator = opts.collapsed ? "\u25B6" : "\u25BC";
|
|
@@ -5348,7 +5387,7 @@ function renderHeaderLine(opts) {
|
|
|
5348
5387
|
if (add > 0) count += pc5.green(`+${add}`);
|
|
5349
5388
|
if (remove > 0) count += pc5.red(`-${remove}`);
|
|
5350
5389
|
count += `/${total}`;
|
|
5351
|
-
const status4 = groupStatus(opts.
|
|
5390
|
+
const status4 = groupStatus(countRows.filter(opts.match));
|
|
5352
5391
|
const line = `${opts.indent}${status4}${indicator} ${opts.label} (${count} assets)`;
|
|
5353
5392
|
return opts.selected ? pc5.bgWhite(pc5.black(`${line} `.padEnd(state.cols))) : line;
|
|
5354
5393
|
}
|
|
@@ -5360,7 +5399,6 @@ function renderAssetRow(row, selected) {
|
|
|
5360
5399
|
indent: " ",
|
|
5361
5400
|
collapsed: state.collapsedOrigins.has(origin),
|
|
5362
5401
|
match: (r) => isAsset(r) && rowOrigin(r) === origin,
|
|
5363
|
-
refs: originAssetRefs(state.assetRows, origin),
|
|
5364
5402
|
label: `${meta.icon} ${pc5.bold(pc5.cyan(meta.label))}`,
|
|
5365
5403
|
selected
|
|
5366
5404
|
});
|
|
@@ -5371,7 +5409,6 @@ function renderAssetRow(row, selected) {
|
|
|
5371
5409
|
indent: " ".repeat(3),
|
|
5372
5410
|
collapsed: state.collapsedSources.has(srcKey(origin, row.source)),
|
|
5373
5411
|
match: (r) => isAsset(r) && inSource(r, origin, row.source),
|
|
5374
|
-
refs: sourceAssetRefs(state.assetRows, origin, row.source),
|
|
5375
5412
|
label: pc5.bold(pc5.cyan(row.source)),
|
|
5376
5413
|
selected
|
|
5377
5414
|
});
|
|
@@ -5383,7 +5420,6 @@ function renderAssetRow(row, selected) {
|
|
|
5383
5420
|
indent: " ".repeat(5),
|
|
5384
5421
|
collapsed: state.collapsedPlugins.has(pluginKey(origin, row.source, plugin)),
|
|
5385
5422
|
match: (r) => isAsset(r) && inPlugin(r, origin, row.source, plugin),
|
|
5386
|
-
refs: pluginAssetRefs(state.assetRows, origin, row.source, plugin),
|
|
5387
5423
|
label: pluginHeaderLabel(plugin),
|
|
5388
5424
|
selected
|
|
5389
5425
|
});
|
|
@@ -5426,7 +5462,6 @@ function renderSourceTreeRow(row, selected) {
|
|
|
5426
5462
|
indent: " ".repeat(3),
|
|
5427
5463
|
collapsed: state.collapsedSourceOrgs.has(org),
|
|
5428
5464
|
match: (r) => isAsset(r) && rowOrigin(r) === "source" && rowOrg(r) === org,
|
|
5429
|
-
refs: sourceOrgRefs(state.sourceTreeRows, org),
|
|
5430
5465
|
label: pc5.bold(pc5.cyan(org)),
|
|
5431
5466
|
selected,
|
|
5432
5467
|
rows: state.sourceTreeRows
|
|
@@ -5439,7 +5474,6 @@ function renderSourceTreeRow(row, selected) {
|
|
|
5439
5474
|
indent: " ".repeat(5),
|
|
5440
5475
|
collapsed: state.collapsedSourceRepos.has(repoKey(org, repo)),
|
|
5441
5476
|
match: (r) => isAsset(r) && rowOrigin(r) === "source" && rowOrg(r) === org && rowGroup(r) === repo,
|
|
5442
|
-
refs: sourceRepoRefs(state.sourceTreeRows, org, repo),
|
|
5443
5477
|
label: pc5.bold(repo),
|
|
5444
5478
|
selected,
|
|
5445
5479
|
rows: state.sourceTreeRows
|
|
@@ -5453,7 +5487,6 @@ function renderSourceTreeRow(row, selected) {
|
|
|
5453
5487
|
indent: " ".repeat(7),
|
|
5454
5488
|
collapsed: state.collapsedSourcePlugins.has(srcPluginKey(org, repo, plugin)),
|
|
5455
5489
|
match: (r) => isAsset(r) && rowOrigin(r) === "source" && rowOrg(r) === org && rowGroup(r) === repo && r.plugin === plugin,
|
|
5456
|
-
refs: sourcePluginRefs(state.sourceTreeRows, org, repo, plugin),
|
|
5457
5490
|
label: pluginHeaderLabel(plugin),
|
|
5458
5491
|
selected,
|
|
5459
5492
|
rows: state.sourceTreeRows
|
|
@@ -5474,7 +5507,6 @@ function renderLibraryTreeRow(row, selected) {
|
|
|
5474
5507
|
indent: " ".repeat(3),
|
|
5475
5508
|
collapsed: state.collapsedLibraryGroups.has(group),
|
|
5476
5509
|
match: (r) => isAsset(r) && rowOrigin(r) === "library" && rowGroup(r) === group,
|
|
5477
|
-
refs: libraryGroupRefs(state.libraryTreeRows, group),
|
|
5478
5510
|
label: pc5.bold(pc5.cyan(group)),
|
|
5479
5511
|
selected,
|
|
5480
5512
|
rows: state.libraryTreeRows
|
|
@@ -5487,7 +5519,6 @@ function renderLibraryTreeRow(row, selected) {
|
|
|
5487
5519
|
indent: " ".repeat(5),
|
|
5488
5520
|
collapsed: state.collapsedLibraryPlugins.has(libPluginKey(group, plugin)),
|
|
5489
5521
|
match: (r) => isAsset(r) && inPlugin(r, "library", group, plugin),
|
|
5490
|
-
refs: pluginAssetRefs(state.libraryTreeRows, "library", group, plugin),
|
|
5491
5522
|
label: pluginHeaderLabel(plugin),
|
|
5492
5523
|
selected,
|
|
5493
5524
|
rows: state.libraryTreeRows
|
|
@@ -6635,25 +6666,6 @@ function findManifestCandidates(rootPath) {
|
|
|
6635
6666
|
walk(rootPath);
|
|
6636
6667
|
return candidates;
|
|
6637
6668
|
}
|
|
6638
|
-
function checkManifestIdentity(kind, parsed) {
|
|
6639
|
-
if (parsed === null || typeof parsed !== "object") return null;
|
|
6640
|
-
const obj = parsed;
|
|
6641
|
-
const identity = kind === "flow" ? obj.id : obj.name;
|
|
6642
|
-
if (typeof identity !== "string" || identity.length === 0) return null;
|
|
6643
|
-
const publisher = typeof obj.publisher === "string" ? obj.publisher : void 0;
|
|
6644
|
-
if (publisher !== void 0) {
|
|
6645
|
-
try {
|
|
6646
|
-
parseAssetRef(`${kind}:@${publisher}/${identity}`);
|
|
6647
|
-
return null;
|
|
6648
|
-
} catch (e) {
|
|
6649
|
-
return e instanceof Error ? e.message : String(e);
|
|
6650
|
-
}
|
|
6651
|
-
}
|
|
6652
|
-
if (!isValidAssetName(identity)) {
|
|
6653
|
-
return `invalid asset ${kind === "flow" ? "id" : "name"} "${identity}" \u2014 ${ASSET_NAME_HINT}`;
|
|
6654
|
-
}
|
|
6655
|
-
return null;
|
|
6656
|
-
}
|
|
6657
6669
|
function parseManifestCandidate(c, absRoot) {
|
|
6658
6670
|
const content = fs8__default.readFileSync(c.filePath, "utf-8");
|
|
6659
6671
|
const res = parseManifestFile(c.filePath, content);
|
|
@@ -6691,11 +6703,6 @@ function validateManifestCandidate(c, parsed, body, absRoot, registry, strictCon
|
|
|
6691
6703
|
const relPath = path18__default.relative(absRoot, c.filePath);
|
|
6692
6704
|
let errors = 0;
|
|
6693
6705
|
let warnings = 0;
|
|
6694
|
-
const identityError = checkManifestIdentity(c.kind, parsed);
|
|
6695
|
-
if (identityError) {
|
|
6696
|
-
logErr(`${relPath} [${c.kind}] \u2014 ${identityError}`);
|
|
6697
|
-
errors++;
|
|
6698
|
-
}
|
|
6699
6706
|
const dirName = path18__default.basename(path18__default.dirname(c.filePath));
|
|
6700
6707
|
const checked = checkAsset(
|
|
6701
6708
|
c.kind,
|
|
@@ -8793,6 +8800,7 @@ function makeOutdatedCommand() {
|
|
|
8793
8800
|
SUPPORTED_DRIVER_TARGETS
|
|
8794
8801
|
)
|
|
8795
8802
|
).action(async (filter, opts) => {
|
|
8803
|
+
requireProjectConfig(opts.projectDir);
|
|
8796
8804
|
const am2 = new AssetManager({
|
|
8797
8805
|
registry: getKindRegistry(),
|
|
8798
8806
|
projectDir: path18__default.resolve(opts.projectDir),
|
|
@@ -8901,7 +8909,7 @@ function action2(fn) {
|
|
|
8901
8909
|
};
|
|
8902
8910
|
}
|
|
8903
8911
|
async function reconcileAndReport(projectDir, plugins) {
|
|
8904
|
-
const { reconcilePlugins } = await import('../plugin-store-
|
|
8912
|
+
const { reconcilePlugins } = await import('../plugin-store-AGQDMING.js');
|
|
8905
8913
|
if (plugins.length === 0) {
|
|
8906
8914
|
logInfo("No plugins declared \u2014 nothing to reconcile.");
|
|
8907
8915
|
return;
|
|
@@ -8917,7 +8925,7 @@ async function reconcileAndReport(projectDir, plugins) {
|
|
|
8917
8925
|
async function runInstall2(spec, opts) {
|
|
8918
8926
|
const projectDir = path18__default.resolve(opts.projectDir);
|
|
8919
8927
|
const { WorkspaceYamlEditor: WorkspaceYamlEditor2 } = await import('../core/index.js');
|
|
8920
|
-
const { specName } = await import('../plugin-store-
|
|
8928
|
+
const { specName } = await import('../plugin-store-AGQDMING.js');
|
|
8921
8929
|
const yamlPath = path18__default.join(projectDir, "skaile.yaml");
|
|
8922
8930
|
const editor = WorkspaceYamlEditor2.load(yamlPath);
|
|
8923
8931
|
const replaced = editor.addPlugin(spec, specName);
|
|
@@ -8929,7 +8937,7 @@ async function runInstall2(spec, opts) {
|
|
|
8929
8937
|
async function runRemove(name, opts) {
|
|
8930
8938
|
const projectDir = path18__default.resolve(opts.projectDir);
|
|
8931
8939
|
const { WorkspaceYamlEditor: WorkspaceYamlEditor2 } = await import('../core/index.js');
|
|
8932
|
-
const { specName } = await import('../plugin-store-
|
|
8940
|
+
const { specName } = await import('../plugin-store-AGQDMING.js');
|
|
8933
8941
|
const yamlPath = path18__default.join(projectDir, "skaile.yaml");
|
|
8934
8942
|
const editor = WorkspaceYamlEditor2.load(yamlPath);
|
|
8935
8943
|
const removed = editor.removePlugin(name, specName);
|
|
@@ -8957,7 +8965,7 @@ async function runList(opts) {
|
|
|
8957
8965
|
const registry = createPluginRegistry();
|
|
8958
8966
|
if (declared.length > 0) {
|
|
8959
8967
|
try {
|
|
8960
|
-
const { loadPlugins } = await import('../plugin-store-
|
|
8968
|
+
const { loadPlugins } = await import('../plugin-store-AGQDMING.js');
|
|
8961
8969
|
const result = await loadPlugins(projectDir, declared, registry);
|
|
8962
8970
|
for (const f of result.failed) logWarn(f.error);
|
|
8963
8971
|
} catch (err2) {
|
|
@@ -10112,14 +10120,19 @@ function makeReplCommand() {
|
|
|
10112
10120
|
}
|
|
10113
10121
|
console.log();
|
|
10114
10122
|
}
|
|
10115
|
-
|
|
10116
|
-
|
|
10117
|
-
|
|
10118
|
-
|
|
10119
|
-
|
|
10120
|
-
|
|
10121
|
-
|
|
10122
|
-
|
|
10123
|
+
try {
|
|
10124
|
+
await startRepl({
|
|
10125
|
+
projectDir,
|
|
10126
|
+
cwd: agentCwd !== projectDir ? agentCwd : void 0,
|
|
10127
|
+
driver: driverOverride,
|
|
10128
|
+
model: opts.model,
|
|
10129
|
+
resume: opts.resume,
|
|
10130
|
+
resumeSessionId: opts.resumeSession
|
|
10131
|
+
});
|
|
10132
|
+
} catch (err2) {
|
|
10133
|
+
logErr(friendlyDriverError(err2) ?? (err2 instanceof Error ? err2.message : String(err2)));
|
|
10134
|
+
process.exit(1);
|
|
10135
|
+
}
|
|
10123
10136
|
});
|
|
10124
10137
|
}
|
|
10125
10138
|
function parseProviderIds(raw) {
|
|
@@ -10174,12 +10187,12 @@ function makeServeCommand() {
|
|
|
10174
10187
|
);
|
|
10175
10188
|
}
|
|
10176
10189
|
async function ensurePluginsLoadedForServe(projectDir) {
|
|
10177
|
-
const { logInfo: logInfo2, logWarn: logWarn2 } = await import('../helpers-
|
|
10190
|
+
const { logInfo: logInfo2, logWarn: logWarn2 } = await import('../helpers-CFK6YP6R.js');
|
|
10178
10191
|
try {
|
|
10179
10192
|
const { resolveSkWorkspaceConfig: resolveSkWorkspaceConfig2 } = await import('../core/index.js');
|
|
10180
10193
|
const config = resolveSkWorkspaceConfig2(projectDir);
|
|
10181
10194
|
if (!config.plugins || config.plugins.length === 0) return;
|
|
10182
|
-
const { ensurePluginsLoaded } = await import('../plugin-store-
|
|
10195
|
+
const { ensurePluginsLoaded } = await import('../plugin-store-AGQDMING.js');
|
|
10183
10196
|
const { pluginRegistry } = await import('../plugin-registry/index.js');
|
|
10184
10197
|
const result = await ensurePluginsLoaded(projectDir, config.plugins, pluginRegistry);
|
|
10185
10198
|
if (result.loaded.length > 0) {
|
|
@@ -10193,14 +10206,14 @@ async function ensurePluginsLoadedForServe(projectDir) {
|
|
|
10193
10206
|
}
|
|
10194
10207
|
}
|
|
10195
10208
|
async function runCompileTest(opts) {
|
|
10196
|
-
const { logOk: logOk2, logErr: logErr2, logInfo: logInfo2, S: S2 } = await import('../helpers-
|
|
10209
|
+
const { logOk: logOk2, logErr: logErr2, logInfo: logInfo2, S: S2 } = await import('../helpers-CFK6YP6R.js');
|
|
10197
10210
|
const { tmpdir } = await import('os');
|
|
10198
10211
|
const { dirname: dirname3, join: join6, resolve: resolve5 } = await import('path');
|
|
10199
10212
|
const { fileURLToPath: fileURLToPath2 } = await import('url');
|
|
10200
|
-
const { unlinkSync, existsSync:
|
|
10213
|
+
const { unlinkSync, existsSync: existsSync17 } = await import('fs');
|
|
10201
10214
|
const { spawn } = await import('child_process');
|
|
10202
10215
|
const { portableSpawnSync: portableSpawnSync2 } = await import('../core/index.js');
|
|
10203
|
-
const { MONOREPO_ROOT } = await import('../paths-
|
|
10216
|
+
const { MONOREPO_ROOT } = await import('../paths-SUS4S4YT.js');
|
|
10204
10217
|
if (MONOREPO_ROOT === null) {
|
|
10205
10218
|
logErr2("--compile-test is only available inside the skaile-dev workspace.");
|
|
10206
10219
|
logInfo2("Run it from a checkout of skaile-ai/skaile-dev (the monorepo shell).");
|
|
@@ -10262,7 +10275,7 @@ async function runCompileTest(opts) {
|
|
|
10262
10275
|
} catch {
|
|
10263
10276
|
}
|
|
10264
10277
|
try {
|
|
10265
|
-
if (
|
|
10278
|
+
if (existsSync17(outfile)) unlinkSync(outfile);
|
|
10266
10279
|
} catch {
|
|
10267
10280
|
}
|
|
10268
10281
|
}
|
|
@@ -11085,7 +11098,7 @@ function makeStoreCommand() {
|
|
|
11085
11098
|
process.exit(2);
|
|
11086
11099
|
});
|
|
11087
11100
|
store.command("search <query>").description("Search the AI Asset Store catalog by name, description, or publisher").option("--kind <kind>", "Filter by asset kind (skill, agent, prompt, flow, \u2026)").option("-C, --project-dir <dir>", "Project directory (catalog config overlay)", process.cwd()).action(async (query, opts) => {
|
|
11088
|
-
const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError: LocalCatalogDisabledError2 } = await import('../open-library-
|
|
11101
|
+
const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError: LocalCatalogDisabledError2 } = await import('../open-library-BOSPJVID.js');
|
|
11089
11102
|
try {
|
|
11090
11103
|
const remote = await openCatalogSource2({ projectDir: path18__default.resolve(opts.projectDir) });
|
|
11091
11104
|
const assets = await remote.listAssets(opts.kind ? { kind: opts.kind } : {});
|
|
@@ -11113,8 +11126,8 @@ function makeStoreCommand() {
|
|
|
11113
11126
|
}
|
|
11114
11127
|
});
|
|
11115
11128
|
store.command("show <ref>").description("Show a store asset's details + provenance (source, files, integrity)").option("-C, --project-dir <dir>", "Project directory (catalog config overlay)", process.cwd()).action(async (ref, opts) => {
|
|
11116
|
-
const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError: LocalCatalogDisabledError2 } = await import('../open-library-
|
|
11117
|
-
const { supportsInstallManifest } = await import('../project-
|
|
11129
|
+
const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError: LocalCatalogDisabledError2 } = await import('../open-library-BOSPJVID.js');
|
|
11130
|
+
const { supportsInstallManifest } = await import('../project-I55A4O2T.js');
|
|
11118
11131
|
try {
|
|
11119
11132
|
const remote = await openCatalogSource2({ projectDir: path18__default.resolve(opts.projectDir) });
|
|
11120
11133
|
const asset = await remote.resolve(ref);
|
|
@@ -11269,6 +11282,7 @@ function makeUpdateCommand() {
|
|
|
11269
11282
|
).option("--project-dir <path>", "Project directory", process.cwd()).option("--no-catalog", "Skip refreshing the catalog cache").option("--catalog-only", "Refresh the catalog cache only; do not re-deploy assets").option("--no-sync", "Skip syncing sources from upstream before re-deploying").option("-y, --yes", "Sync sources without the confirmation prompt").action(
|
|
11270
11283
|
async (name, opts) => {
|
|
11271
11284
|
const projectDir = path18__default.resolve(opts.projectDir);
|
|
11285
|
+
if (!opts.catalogOnly) requireProjectConfig(projectDir);
|
|
11272
11286
|
const am2 = new AssetManager({ registry: getKindRegistry(), projectDir });
|
|
11273
11287
|
const target = name !== void 0 && !opts.catalogOnly ? await resolveUpdateTarget(am2, name) : void 0;
|
|
11274
11288
|
if (opts.catalog !== false) {
|
|
@@ -11295,11 +11309,11 @@ function makeUpdateCommand() {
|
|
|
11295
11309
|
if (await shouldSyncSources(opts)) {
|
|
11296
11310
|
const syncSpinner = createSpinner();
|
|
11297
11311
|
syncSpinner.start("Syncing sources");
|
|
11298
|
-
const { total, synced, failed } = await syncProjectSources(projectDir);
|
|
11312
|
+
const { total, synced, failed: failed2 } = await syncProjectSources(projectDir);
|
|
11299
11313
|
syncSpinner.stop(
|
|
11300
|
-
total === 0 ? "No sources to sync." : `Synced ${S.heading(`${synced}/${total}`)} source(s)` + (
|
|
11314
|
+
total === 0 ? "No sources to sync." : `Synced ${S.heading(`${synced}/${total}`)} source(s)` + (failed2 ? ` (${failed2} failed)` : "")
|
|
11301
11315
|
);
|
|
11302
|
-
if (
|
|
11316
|
+
if (failed2 > 0) process.exitCode = 1;
|
|
11303
11317
|
} else {
|
|
11304
11318
|
for (const slug of divergedSourceClones(projectDir)) {
|
|
11305
11319
|
logErr(`${slug}: git pull failed: Not possible to fast-forward, aborting.`);
|
|
@@ -11314,27 +11328,39 @@ function makeUpdateCommand() {
|
|
|
11314
11328
|
spinner.start("Re-deploying assets");
|
|
11315
11329
|
let result;
|
|
11316
11330
|
try {
|
|
11317
|
-
result = await am2.install();
|
|
11331
|
+
result = await am2.install({ moveLibraries: true });
|
|
11318
11332
|
} catch (err2) {
|
|
11319
11333
|
spinner.stop("Failed");
|
|
11320
11334
|
logErr(String(err2));
|
|
11321
11335
|
process.exit(1);
|
|
11322
11336
|
}
|
|
11323
|
-
|
|
11337
|
+
const failed = result.missing.length > 0 || !!result.agentInstanceErrors?.length || process.exitCode === 1;
|
|
11338
|
+
spinner.stop(failed ? "Failed" : "Done");
|
|
11324
11339
|
if (result.deployed.length > 0) {
|
|
11325
11340
|
for (const d of result.deployed) logOk(`Updated ${d}`);
|
|
11326
11341
|
}
|
|
11342
|
+
for (const r of result.restored ?? []) {
|
|
11343
|
+
for (const f of r.restored) logInfo(`Restored ${f}`);
|
|
11344
|
+
for (const f of r.removed) logInfo(`Removed ${f} (not part of ${r.ref})`);
|
|
11345
|
+
}
|
|
11327
11346
|
for (const r of result.removed) logWarn(`Removed: ${r}`);
|
|
11328
11347
|
reportReplaced(result.replaced);
|
|
11329
11348
|
reportRelocked(result.relocked);
|
|
11330
|
-
|
|
11349
|
+
reportMoved(result.moved);
|
|
11350
|
+
const changed = result.deployed.length > 0 || result.removed.length > 0 || !!result.replaced?.length || !!result.moved?.length || !!result.relocked?.length;
|
|
11331
11351
|
if (result.lockWritten && changed) {
|
|
11332
11352
|
logInfo(`Lock file written: ${S.dim("skaile.lock.yaml")}`);
|
|
11333
11353
|
}
|
|
11354
|
+
if (result.agentInstanceErrors?.length) {
|
|
11355
|
+
logErr(
|
|
11356
|
+
`${result.agentInstanceErrors.length} agent instance(s) could not be rendered (see above)`
|
|
11357
|
+
);
|
|
11358
|
+
process.exitCode = 1;
|
|
11359
|
+
}
|
|
11334
11360
|
if (result.missing.length > 0) {
|
|
11335
11361
|
for (const m of result.missing) logErr(`Missing: ${m}${result.missingHints?.[m] ?? ""}`);
|
|
11336
11362
|
process.exitCode = 1;
|
|
11337
|
-
} else if (!changed) {
|
|
11363
|
+
} else if (!changed && !failed) {
|
|
11338
11364
|
logInfo("Nothing to update.");
|
|
11339
11365
|
}
|
|
11340
11366
|
}
|
|
@@ -11394,14 +11420,14 @@ async function updateOne(am2, projectDir, target) {
|
|
|
11394
11420
|
spinner.start(`Updating ${target.ref}`);
|
|
11395
11421
|
let deployed;
|
|
11396
11422
|
try {
|
|
11397
|
-
deployed = await am2.add(target.ref);
|
|
11423
|
+
deployed = await am2.add(target.ref, { onLibraryMoved: (m) => reportMoved([m]) });
|
|
11398
11424
|
} catch (err2) {
|
|
11399
11425
|
spinner.stop("Failed");
|
|
11400
11426
|
logErr(err2 instanceof Error ? err2.message : String(err2));
|
|
11401
11427
|
process.exitCode = 1;
|
|
11402
11428
|
return;
|
|
11403
11429
|
}
|
|
11404
|
-
spinner.stop("Done");
|
|
11430
|
+
spinner.stop(process.exitCode === 1 ? "Failed" : "Done");
|
|
11405
11431
|
for (const d of deployed) logOk(`Updated ${d}`);
|
|
11406
11432
|
if (deployed.length > 0) return;
|
|
11407
11433
|
if (readText2(lockPath) !== before) logInfo(`Re-locked ${target.ref}`);
|
|
@@ -11495,17 +11521,23 @@ function refKindName(ref) {
|
|
|
11495
11521
|
let rest = colon === -1 ? trimmed : trimmed.slice(colon + 1);
|
|
11496
11522
|
const hash = rest.indexOf("#");
|
|
11497
11523
|
if (hash !== -1) rest = rest.slice(0, hash);
|
|
11524
|
+
let publisher;
|
|
11498
11525
|
if (rest.startsWith("@")) {
|
|
11499
11526
|
const slash = rest.indexOf("/");
|
|
11500
|
-
if (slash !== -1)
|
|
11527
|
+
if (slash !== -1) {
|
|
11528
|
+
publisher = rest.slice(1, slash);
|
|
11529
|
+
rest = rest.slice(slash + 1);
|
|
11530
|
+
}
|
|
11501
11531
|
}
|
|
11502
|
-
return { kind, name: rest };
|
|
11532
|
+
return { kind, name: rest, publisher };
|
|
11503
11533
|
}
|
|
11504
11534
|
function whyEmptyMessage(ref, declared) {
|
|
11505
|
-
const { kind, name } = refKindName(ref);
|
|
11506
|
-
const isDeclared = declared.some(
|
|
11507
|
-
(d
|
|
11508
|
-
|
|
11535
|
+
const { kind, name, publisher } = refKindName(ref);
|
|
11536
|
+
const isDeclared = declared.some((d) => {
|
|
11537
|
+
if (d.name !== name || kind !== void 0 && d.kind !== kind) return false;
|
|
11538
|
+
const declaredPublisher = d.ref ? refKindName(d.ref).publisher : void 0;
|
|
11539
|
+
return !publisher || !declaredPublisher || publisher === declaredPublisher;
|
|
11540
|
+
});
|
|
11509
11541
|
if (isDeclared) {
|
|
11510
11542
|
return `${ref} not found in lock file. Run \`skaile install\` first.`;
|
|
11511
11543
|
}
|
|
@@ -11519,11 +11551,19 @@ function makeWhyCommand() {
|
|
|
11519
11551
|
});
|
|
11520
11552
|
const chain = await am2.why(ref);
|
|
11521
11553
|
if (chain.length === 0) {
|
|
11554
|
+
const declaredGap = (await am2.gapsOf(ref)).find((g) => g.type === "declared");
|
|
11555
|
+
if (declaredGap) {
|
|
11556
|
+
logErr(declaredGap.message);
|
|
11557
|
+
process.exitCode = 1;
|
|
11558
|
+
return;
|
|
11559
|
+
}
|
|
11522
11560
|
let declared;
|
|
11523
11561
|
try {
|
|
11524
11562
|
declared = await am2.listDeclared();
|
|
11525
|
-
} catch {
|
|
11526
|
-
logErr(
|
|
11563
|
+
} catch (err2) {
|
|
11564
|
+
logErr(
|
|
11565
|
+
`${ref} is not in the lock file, and skaile.yaml cannot be read: ${err2 instanceof Error ? err2.message : String(err2)}`
|
|
11566
|
+
);
|
|
11527
11567
|
process.exitCode = 1;
|
|
11528
11568
|
return;
|
|
11529
11569
|
}
|
|
@@ -11695,29 +11735,29 @@ async function runInit(projectDir, opts) {
|
|
|
11695
11735
|
const resolved = path18__default.resolve(projectDir ?? ".");
|
|
11696
11736
|
const projectName = path18__default.basename(resolved);
|
|
11697
11737
|
const created = [];
|
|
11698
|
-
const { existsSync:
|
|
11699
|
-
if (!
|
|
11738
|
+
const { existsSync: existsSync17 } = await import('fs');
|
|
11739
|
+
if (!existsSync17(resolved)) {
|
|
11700
11740
|
mkdirSync5(resolved, { recursive: true });
|
|
11701
11741
|
created.push(".");
|
|
11702
11742
|
}
|
|
11703
11743
|
const skaileDir = path18__default.join(resolved, ".skaile");
|
|
11704
|
-
if (!
|
|
11744
|
+
if (!existsSync17(skaileDir)) {
|
|
11705
11745
|
mkdirSync5(path18__default.join(skaileDir, "sessions"), { recursive: true });
|
|
11706
11746
|
created.push(".skaile/");
|
|
11707
11747
|
}
|
|
11708
11748
|
const settingsPath = path18__default.join(skaileDir, "settings.json");
|
|
11709
|
-
if (!
|
|
11749
|
+
if (!existsSync17(settingsPath)) {
|
|
11710
11750
|
writeFileSync6(settingsPath, "{}\n");
|
|
11711
11751
|
created.push(".skaile/settings.json");
|
|
11712
11752
|
}
|
|
11713
11753
|
const wsConfigPath = path18__default.join(resolved, "skaile.yaml");
|
|
11714
|
-
if (!
|
|
11754
|
+
if (!existsSync17(wsConfigPath)) {
|
|
11715
11755
|
writeFileSync6(wsConfigPath, stringify2(buildInitWorkspaceConfig(projectName, harness)));
|
|
11716
11756
|
created.push("skaile.yaml");
|
|
11717
11757
|
}
|
|
11718
11758
|
for (const dir of new Set(Object.values(DRIVER_TARGETS[harness].local))) {
|
|
11719
11759
|
const full = path18__default.join(resolved, dir);
|
|
11720
|
-
if (!
|
|
11760
|
+
if (!existsSync17(full)) {
|
|
11721
11761
|
mkdirSync5(full, { recursive: true });
|
|
11722
11762
|
created.push(`${dir}/`);
|
|
11723
11763
|
}
|
|
@@ -11747,7 +11787,7 @@ function buildInitWorkspaceConfig(projectName, harness) {
|
|
|
11747
11787
|
}
|
|
11748
11788
|
async function initGitScaffold(resolved, created) {
|
|
11749
11789
|
const { execSync: execSync2 } = await import('child_process');
|
|
11750
|
-
const { existsSync:
|
|
11790
|
+
const { existsSync: existsSync17, readFileSync: readFileSync10, writeFileSync: writeFileSync6 } = await import('fs');
|
|
11751
11791
|
const gitignorePath = path18__default.join(resolved, ".gitignore");
|
|
11752
11792
|
const entries = [
|
|
11753
11793
|
"node_modules/",
|
|
@@ -11765,7 +11805,7 @@ async function initGitScaffold(resolved, created) {
|
|
|
11765
11805
|
".env",
|
|
11766
11806
|
".env.local"
|
|
11767
11807
|
];
|
|
11768
|
-
const existing =
|
|
11808
|
+
const existing = existsSync17(gitignorePath) ? readFileSync10(gitignorePath, "utf-8") : "";
|
|
11769
11809
|
const have = new Set(existing.split("\n").map((l) => l.trim()));
|
|
11770
11810
|
const append = entries.filter((e) => !have.has(e));
|
|
11771
11811
|
if (append.length > 0) {
|
|
@@ -11774,7 +11814,7 @@ async function initGitScaffold(resolved, created) {
|
|
|
11774
11814
|
`);
|
|
11775
11815
|
if (!existing) created.push(".gitignore");
|
|
11776
11816
|
}
|
|
11777
|
-
if (!
|
|
11817
|
+
if (!existsSync17(path18__default.join(resolved, ".git"))) {
|
|
11778
11818
|
try {
|
|
11779
11819
|
execSync2("git init", { cwd: resolved, stdio: "pipe" });
|
|
11780
11820
|
created.push(".git/");
|
|
@@ -11804,7 +11844,7 @@ async function bootstrapUserConfig() {
|
|
|
11804
11844
|
}
|
|
11805
11845
|
async function hydrateInitSources(resolved, created) {
|
|
11806
11846
|
try {
|
|
11807
|
-
const { ensureSourcesCloned } = await import('../ensure-sources-
|
|
11847
|
+
const { ensureSourcesCloned } = await import('../ensure-sources-2RONZKCU.js');
|
|
11808
11848
|
const hydrate = ensureSourcesCloned(resolved, { quiet: true });
|
|
11809
11849
|
for (const n of hydrate.cloned) created.push(`~/.skaile/cache/sources/${n}/`);
|
|
11810
11850
|
if (hydrate.failed.length > 0) {
|
|
@@ -11844,7 +11884,7 @@ function printInitSummary(resolved, projectDir, created) {
|
|
|
11844
11884
|
console.log();
|
|
11845
11885
|
}
|
|
11846
11886
|
program.command("setup").description("Interactive provider setup wizard").action(async () => {
|
|
11847
|
-
const { cmdSetup } = await import('../setup-
|
|
11887
|
+
const { cmdSetup } = await import('../setup-7DQJKHUI.js');
|
|
11848
11888
|
await cmdSetup([], { projectDir: process.cwd() });
|
|
11849
11889
|
});
|
|
11850
11890
|
program.addCommand(makeInstallCommand());
|
|
@@ -11922,8 +11962,15 @@ process.stdout.on("error", (err2) => {
|
|
|
11922
11962
|
if (err2.code === "EPIPE") process.exit(0);
|
|
11923
11963
|
throw err2;
|
|
11924
11964
|
});
|
|
11965
|
+
var commandSettled = false;
|
|
11966
|
+
process.once("beforeExit", () => {
|
|
11967
|
+
if (commandSettled) return;
|
|
11968
|
+
logErr("The command ended before it finished (nothing left to wait for).");
|
|
11969
|
+
process.exit(1);
|
|
11970
|
+
});
|
|
11925
11971
|
try {
|
|
11926
11972
|
await program.parseAsync();
|
|
11973
|
+
commandSettled = true;
|
|
11927
11974
|
} catch (err2) {
|
|
11928
11975
|
const { LibrarySyncError } = await import('../library/index.js');
|
|
11929
11976
|
if (!(err2 instanceof LibrarySyncError || err2 instanceof SourceEntryError)) throw err2;
|