@skaile/workspaces 5.3.0 → 5.4.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 +36 -0
- package/README.md +8 -1
- package/dist/{asset-feeds-VIZXYDAO.js → asset-feeds-3MVRNS5U.js} +7 -7
- package/dist/{asset-feeds-VIZXYDAO.js.map → asset-feeds-3MVRNS5U.js.map} +1 -1
- package/dist/asset-manager/catalog-deployer.js +3 -3
- package/dist/asset-manager/index.js +6 -6
- package/dist/asset-manager/installer.js +4 -4
- package/dist/asset-manager/src/index.d.ts +10 -0
- package/dist/asset-manager/src/index.d.ts.map +1 -1
- package/dist/asset-manager/src/installer.d.ts +7 -0
- package/dist/asset-manager/src/installer.d.ts.map +1 -1
- package/dist/bridge/drivers/claude-sdk.js +5 -5
- package/dist/bridge/drivers/codex.js +5 -5
- package/dist/bridge/drivers/continue.js +6 -6
- package/dist/bridge/drivers/echo.js +1 -1
- package/dist/bridge/drivers/gemini.js +5 -5
- package/dist/bridge/drivers/goose.js +6 -6
- package/dist/bridge/drivers/omp.js +2 -2
- package/dist/bridge/drivers/opencode.js +6 -6
- package/dist/bridge/drivers/qwen.js +5 -5
- package/dist/bridge/index.js +6 -6
- package/dist/{chunk-OMD4TAJX.js → chunk-2XXAVTTO.js} +3 -3
- package/dist/{chunk-OMD4TAJX.js.map → chunk-2XXAVTTO.js.map} +1 -1
- package/dist/{chunk-K2JVODQD.js → chunk-37DN45RR.js} +5 -5
- package/dist/{chunk-K2JVODQD.js.map → chunk-37DN45RR.js.map} +1 -1
- package/dist/{chunk-ZCSFGGLG.js → chunk-5NH3U6N5.js} +4 -4
- package/dist/{chunk-ZCSFGGLG.js.map → chunk-5NH3U6N5.js.map} +1 -1
- package/dist/{chunk-KBAE7PU7.js → chunk-6IGFSUTE.js} +7 -5
- package/dist/chunk-6IGFSUTE.js.map +1 -0
- package/dist/{chunk-ZDMGMWK6.js → chunk-7KITVWXK.js} +20 -19
- package/dist/chunk-7KITVWXK.js.map +1 -0
- package/dist/{chunk-YXNYBUQY.js → chunk-A67BHJCH.js} +4 -4
- package/dist/{chunk-YXNYBUQY.js.map → chunk-A67BHJCH.js.map} +1 -1
- package/dist/{chunk-FTYM4VRZ.js → chunk-AE42DHSH.js} +2 -2
- package/dist/{chunk-FTYM4VRZ.js.map → chunk-AE42DHSH.js.map} +1 -1
- package/dist/{chunk-WGNFDLHT.js → chunk-BATL2CWI.js} +63 -19
- package/dist/chunk-BATL2CWI.js.map +1 -0
- package/dist/{chunk-QHIMMBJO.js → chunk-BHUHGLNS.js} +4 -4
- package/dist/{chunk-QHIMMBJO.js.map → chunk-BHUHGLNS.js.map} +1 -1
- package/dist/{chunk-FZGL7Z52.js → chunk-DTV7HL5R.js} +2 -2
- package/dist/{chunk-FZGL7Z52.js.map → chunk-DTV7HL5R.js.map} +1 -1
- package/dist/{chunk-7L4WFH3Y.js → chunk-IDUGP4V7.js} +3 -3
- package/dist/{chunk-7L4WFH3Y.js.map → chunk-IDUGP4V7.js.map} +1 -1
- package/dist/{chunk-4SSKKFDF.js → chunk-JCATNLY3.js} +3 -3
- package/dist/{chunk-4SSKKFDF.js.map → chunk-JCATNLY3.js.map} +1 -1
- package/dist/{chunk-WGN7Z36G.js → chunk-JEA32KB6.js} +3 -3
- package/dist/{chunk-WGN7Z36G.js.map → chunk-JEA32KB6.js.map} +1 -1
- package/dist/{chunk-TR7KFBIO.js → chunk-JF26V3BC.js} +5 -5
- package/dist/{chunk-TR7KFBIO.js.map → chunk-JF26V3BC.js.map} +1 -1
- package/dist/{chunk-ERCSHLTF.js → chunk-LUBS5DXY.js} +3 -3
- package/dist/{chunk-ERCSHLTF.js.map → chunk-LUBS5DXY.js.map} +1 -1
- package/dist/chunk-NESV47MF.js +20 -0
- package/dist/chunk-NESV47MF.js.map +1 -0
- package/dist/{chunk-DECPI7DN.js → chunk-OANSNVCP.js} +5 -5
- package/dist/{chunk-DECPI7DN.js.map → chunk-OANSNVCP.js.map} +1 -1
- package/dist/{chunk-OOKFZW6H.js → chunk-ONWTPXVU.js} +7 -7
- package/dist/{chunk-OOKFZW6H.js.map → chunk-ONWTPXVU.js.map} +1 -1
- package/dist/{chunk-YTJZQ4HY.js → chunk-OXE5A6H6.js} +3 -3
- package/dist/{chunk-YTJZQ4HY.js.map → chunk-OXE5A6H6.js.map} +1 -1
- package/dist/{chunk-6GBQND2F.js → chunk-QEXEHXX5.js} +4 -4
- package/dist/{chunk-6GBQND2F.js.map → chunk-QEXEHXX5.js.map} +1 -1
- package/dist/{chunk-VLEWVR44.js → chunk-QK756IRJ.js} +10 -10
- package/dist/{chunk-VLEWVR44.js.map → chunk-QK756IRJ.js.map} +1 -1
- package/dist/{chunk-CZ35I4RK.js → chunk-RD6GE4HU.js} +3 -3
- package/dist/{chunk-CZ35I4RK.js.map → chunk-RD6GE4HU.js.map} +1 -1
- package/dist/{chunk-4257Q2LH.js → chunk-SQBPE66C.js} +6 -6
- package/dist/{chunk-4257Q2LH.js.map → chunk-SQBPE66C.js.map} +1 -1
- package/dist/{chunk-AWGQVAC5.js → chunk-U6ORGQHZ.js} +3 -3
- package/dist/{chunk-AWGQVAC5.js.map → chunk-U6ORGQHZ.js.map} +1 -1
- package/dist/{chunk-LM5XEFNS.js → chunk-UAAAERXI.js} +3 -3
- package/dist/{chunk-LM5XEFNS.js.map → chunk-UAAAERXI.js.map} +1 -1
- package/dist/chunk-UKDFOOEG.js +22 -0
- package/dist/chunk-UKDFOOEG.js.map +1 -0
- package/dist/{chunk-A223FDDC.js → chunk-UNRZCQD4.js} +6 -6
- package/dist/{chunk-A223FDDC.js.map → chunk-UNRZCQD4.js.map} +1 -1
- package/dist/{chunk-D63AJVBW.js → chunk-VETH6MDG.js} +13 -13
- package/dist/{chunk-D63AJVBW.js.map → chunk-VETH6MDG.js.map} +1 -1
- package/dist/{chunk-BUZ3K2PT.js → chunk-XMQAV6T3.js} +2 -2
- package/dist/{chunk-BUZ3K2PT.js.map → chunk-XMQAV6T3.js.map} +1 -1
- package/dist/{chunk-3ZVSINEV.js → chunk-Y5OCUOXF.js} +10 -7
- package/dist/chunk-Y5OCUOXF.js.map +1 -0
- package/dist/{chunk-FXN4PLRO.js → chunk-ZIYYMR6Y.js} +3 -3
- package/dist/{chunk-FXN4PLRO.js.map → chunk-ZIYYMR6Y.js.map} +1 -1
- package/dist/{chunk-TVFSA5IQ.js → chunk-ZUZ5LLZ2.js} +4 -4
- package/dist/{chunk-TVFSA5IQ.js.map → chunk-ZUZ5LLZ2.js.map} +1 -1
- package/dist/cli/index.js +307 -166
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/src/commands/asset-cmd.d.ts.map +1 -1
- package/dist/cli/src/commands/catalog.d.ts +33 -3
- 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 +14 -0
- 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/npx.d.ts.map +1 -1
- package/dist/cli/src/commands/project.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/setup.d.ts.map +1 -1
- package/dist/cli/src/skill-checks.d.ts +21 -0
- package/dist/cli/src/skill-checks.d.ts.map +1 -0
- package/dist/cli/src/spinner.d.ts +24 -0
- package/dist/cli/src/spinner.d.ts.map +1 -0
- package/dist/connectors/config.js +2 -2
- package/dist/connectors/index.js +9 -9
- package/dist/{connectors-Z2FUGAJU.js → connectors-OB3OAZTK.js} +12 -12
- package/dist/{connectors-Z2FUGAJU.js.map → connectors-OB3OAZTK.js.map} +1 -1
- package/dist/core/index.js +3 -3
- package/dist/core/runtime-assets.js +2 -2
- package/dist/core/src/repo-manager.d.ts.map +1 -1
- package/dist/core/workspace-config.js +1 -1
- package/dist/deploy/index.js +3 -3
- package/dist/{ensure-sources-3IH5XHAP.js → ensure-sources-Z3KKLEM6.js} +9 -9
- package/dist/{ensure-sources-3IH5XHAP.js.map → ensure-sources-Z3KKLEM6.js.map} +1 -1
- package/dist/factory-assets/README.md +2 -2
- package/dist/factory-assets/connectors/box.js +9 -9
- package/dist/factory-assets/connectors/deploy.js +9 -9
- package/dist/factory-assets/connectors/devserver.js +9 -9
- package/dist/factory-assets/connectors/flow/adapter.js +9 -9
- package/dist/factory-assets/connectors/flow/engine.js +4 -4
- package/dist/factory-assets/connectors/flow/run-flow.js +10 -10
- package/dist/factory-assets/connectors/flow.js +9 -9
- package/dist/factory-assets/connectors/git.js +9 -9
- package/dist/factory-assets/connectors/gmail.js +9 -9
- package/dist/factory-assets/connectors/googledrive.js +9 -9
- package/dist/factory-assets/connectors/local.js +9 -9
- package/dist/factory-assets/connectors/mattermost.js +9 -9
- package/dist/factory-assets/connectors/memory.js +9 -9
- package/dist/factory-assets/connectors/minio.js +9 -9
- package/dist/factory-assets/connectors/postgres.js +9 -9
- package/dist/factory-assets/connectors/s3.js +9 -9
- package/dist/factory-assets/connectors/sharepoint.js +9 -9
- package/dist/factory-assets/connectors/sqlite.js +9 -9
- package/dist/factory-assets/connectors/static-server.js +9 -9
- package/dist/factory-assets/connectors/tunnel.js +9 -9
- package/dist/factory-assets/connectors/webdav.js +9 -9
- package/dist/factory-assets/connectors/xstate-store.js +9 -9
- package/dist/factory-assets/connectors/xstate.js +9 -9
- package/dist/factory-assets/skills/authoring-skaile-assets/SKILL.md +17 -15
- package/dist/factory-assets/skills/authoring-skaile-manifests/SKILL.md +20 -17
- package/dist/factory-assets/skills/skaile-author-asset/SKILL.md +82 -71
- package/dist/factory-assets/skills/skaile-manage-workspace/SKILL.md +17 -11
- package/dist/factory-assets/skills/skailify/SKILL.md +8 -4
- package/dist/{flows-64OAOYLP.js → flows-DTADYIXH.js} +6 -6
- package/dist/{flows-64OAOYLP.js.map → flows-DTADYIXH.js.map} +1 -1
- package/dist/{helpers-HV5Y57CY.js → helpers-F2RFRT5D.js} +9 -9
- package/dist/{helpers-HV5Y57CY.js.map → helpers-F2RFRT5D.js.map} +1 -1
- package/dist/library/index.js +4 -4
- package/dist/library/src/local/install-library-asset.d.ts +3 -2
- package/dist/library/src/local/install-library-asset.d.ts.map +1 -1
- package/dist/{library-publish-TVS3WQ4C.js → library-publish-62RFU74A.js} +36 -18
- package/dist/library-publish-62RFU74A.js.map +1 -0
- package/dist/{open-library-AT6RYQ5M.js → open-library-NVG3CZUO.js} +12 -12
- package/dist/{open-library-AT6RYQ5M.js.map → open-library-NVG3CZUO.js.map} +1 -1
- package/dist/{open-registry-F2Z4OLXJ.js → open-registry-IYH6W6CN.js} +8 -8
- package/dist/{open-registry-F2Z4OLXJ.js.map → open-registry-IYH6W6CN.js.map} +1 -1
- package/dist/{paths-P7ZXMDCX.js → paths-STQO4FYF.js} +6 -6
- package/dist/{paths-P7ZXMDCX.js.map → paths-STQO4FYF.js.map} +1 -1
- package/dist/{plugin-store-27KGLW4S.js → plugin-store-2DTEIJTG.js} +5 -5
- package/dist/{plugin-store-27KGLW4S.js.map → plugin-store-2DTEIJTG.js.map} +1 -1
- package/dist/{project-J2EROMBW.js → project-44LM6SRV.js} +11 -10
- package/dist/{project-J2EROMBW.js.map → project-44LM6SRV.js.map} +1 -1
- package/dist/resolver/index.js +3 -3
- package/dist/runner/index.js +15 -15
- package/dist/sdk/asset-manager.js +6 -6
- package/dist/sdk/bridge.js +6 -6
- package/dist/sdk/core.js +3 -3
- package/dist/sdk/flow.js +4 -4
- package/dist/sdk/index.js +15 -15
- package/dist/sdk/resolver.js +3 -3
- package/dist/sdk/runner.js +15 -15
- package/dist/{setup-IFGA4NQA.js → setup-4BV5ZWOZ.js} +16 -15
- package/dist/setup-4BV5ZWOZ.js.map +1 -0
- package/dist/{skills-3T55L4YT.js → skills-M7OU3WMP.js} +5 -5
- package/dist/{skills-3T55L4YT.js.map → skills-M7OU3WMP.js.map} +1 -1
- package/dist/{source-HEAE43IL.js → source-HTT6CXUP.js} +13 -13
- package/dist/{source-HEAE43IL.js.map → source-HTT6CXUP.js.map} +1 -1
- package/dist/{source-manifest-publish-SCAHAYSQ.js → source-manifest-publish-CPXUX3CL.js} +15 -15
- package/dist/{source-manifest-publish-SCAHAYSQ.js.map → source-manifest-publish-CPXUX3CL.js.map} +1 -1
- package/dist/tui/index.js +15 -15
- package/dist/workspace-plugin/adapters/mcp.js +12 -12
- 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-3ZVSINEV.js.map +0 -1
- package/dist/chunk-KBAE7PU7.js.map +0 -1
- package/dist/chunk-WGNFDLHT.js.map +0 -1
- package/dist/chunk-ZDMGMWK6.js.map +0 -1
- package/dist/library-publish-TVS3WQ4C.js.map +0 -1
- package/dist/setup-IFGA4NQA.js.map +0 -1
package/dist/cli/index.js
CHANGED
|
@@ -1,22 +1,24 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { makeProvidersCommand, loadRegistryView, addProviderEntry, ProviderRegistryWriteError } from '../chunk-
|
|
3
|
-
import { makeSourceCommand, syncProjectSources } from '../chunk-
|
|
4
|
-
import { AI_RESOURCES } from '../chunk-
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
2
|
+
import { makeProvidersCommand, loadRegistryView, addProviderEntry, ProviderRegistryWriteError } from '../chunk-OANSNVCP.js';
|
|
3
|
+
import { makeSourceCommand, syncProjectSources } from '../chunk-QK756IRJ.js';
|
|
4
|
+
import { AI_RESOURCES } from '../chunk-ZUZ5LLZ2.js';
|
|
5
|
+
import { checkSkillManifest } from '../chunk-UKDFOOEG.js';
|
|
6
|
+
import { getStoreConfig, storeFetch, deviceLogin, loadStoreAuthConfig, logout, hasStoredAuth, isStoreAuthenticated, getStoreToken, getStoreIdentity, assetEntryRef, refFor } from '../chunk-A67BHJCH.js';
|
|
7
|
+
import { makeInstallCommand, makeCheckCommand, makeCleanCommand, reportInstalledSoftDeps } from '../chunk-7KITVWXK.js';
|
|
8
|
+
import { createSpinner } from '../chunk-NESV47MF.js';
|
|
9
|
+
import { openCatalogSource, openLibraryManager, openLibrary } from '../chunk-JF26V3BC.js';
|
|
10
|
+
import { logErr, S, logOk, logInfo, logWarn, TARGET_DEFAULT_HINT, warnLegacyClaudeCopies, kindColorPad, kindColor, colorRef, formatSoftDepSection, bareSoftDepName, formatSoftDepHint, formatRelativeTime, formatSoftDepRemovePreview, formatSoftDepAddPreview, fitWidth, KIND_COL_WIDTH } from '../chunk-JEA32KB6.js';
|
|
11
|
+
import { createFullRegistry } from '../chunk-5NH3U6N5.js';
|
|
10
12
|
import { LocalSecretsProvider } from '../chunk-HTKZ4AOW.js';
|
|
11
|
-
import { runAgentChat, loadSessionById, loadSession, listSessions, setCurrentSession, deleteSession, clearSession, loadAgentManifest, compileComposition, MarkdownStreamer, resolveMixin } from '../chunk-
|
|
12
|
-
import { buildClaudePluginFiles } from '../chunk-
|
|
13
|
-
import '../chunk-
|
|
14
|
-
import '../chunk-
|
|
13
|
+
import { runAgentChat, loadSessionById, loadSession, listSessions, setCurrentSession, deleteSession, clearSession, loadAgentManifest, compileComposition, MarkdownStreamer, resolveMixin } from '../chunk-VETH6MDG.js';
|
|
14
|
+
import { buildClaudePluginFiles } from '../chunk-DTV7HL5R.js';
|
|
15
|
+
import '../chunk-BHUHGLNS.js';
|
|
16
|
+
import '../chunk-XMQAV6T3.js';
|
|
15
17
|
import '../chunk-R6O6YWU7.js';
|
|
16
18
|
import '../chunk-GCYD4EGY.js';
|
|
17
19
|
import '../chunk-JELTQ4H7.js';
|
|
18
20
|
import '../chunk-4ZTPYIBE.js';
|
|
19
|
-
import '../chunk-
|
|
21
|
+
import '../chunk-OXE5A6H6.js';
|
|
20
22
|
import '../chunk-X5YPJV4N.js';
|
|
21
23
|
import '../chunk-O7SG5PC2.js';
|
|
22
24
|
import '../chunk-7QBNJTTQ.js';
|
|
@@ -25,47 +27,47 @@ import '../chunk-5LKOAX7I.js';
|
|
|
25
27
|
import '../chunk-32NA4TVC.js';
|
|
26
28
|
import '../chunk-W3UDISS2.js';
|
|
27
29
|
import '../chunk-HCYS7GFP.js';
|
|
28
|
-
import { runFlow, resumeFlow } from '../chunk-
|
|
30
|
+
import { runFlow, resumeFlow } from '../chunk-SQBPE66C.js';
|
|
29
31
|
import '../chunk-4R6DROGN.js';
|
|
30
32
|
import { validateFlowVersions, parseSkillFrontmatter } from '../chunk-JAJG4G5E.js';
|
|
31
33
|
import '../chunk-JKWU6ULI.js';
|
|
32
34
|
import '../chunk-CT6NQSA4.js';
|
|
33
|
-
import '../chunk-
|
|
35
|
+
import '../chunk-ONWTPXVU.js';
|
|
34
36
|
import '../chunk-QMWMSZQ4.js';
|
|
35
|
-
import '../chunk-
|
|
36
|
-
import '../chunk-
|
|
37
|
+
import '../chunk-RD6GE4HU.js';
|
|
38
|
+
import '../chunk-IDUGP4V7.js';
|
|
37
39
|
import '../chunk-LAI7X6I2.js';
|
|
38
40
|
import '../chunk-EINLFFP6.js';
|
|
39
41
|
import '../chunk-LOO5CB5M.js';
|
|
40
42
|
import '../chunk-BNUZEYC3.js';
|
|
41
|
-
import '../chunk-
|
|
43
|
+
import '../chunk-LUBS5DXY.js';
|
|
42
44
|
import '../chunk-XBSQ4KMC.js';
|
|
43
45
|
import '../chunk-YROR332M.js';
|
|
44
|
-
import { getProviderPreset, AI_PROVIDER_PRESETS } from '../chunk-
|
|
46
|
+
import { getProviderPreset, AI_PROVIDER_PRESETS } from '../chunk-AE42DHSH.js';
|
|
45
47
|
import '../chunk-6E6PKKAD.js';
|
|
46
48
|
import '../chunk-IFGTRL2I.js';
|
|
47
|
-
import { projectAiAssetsRoots, loadFlow, loadAllFlowEntries, findFlowFileInRoots } from '../chunk-
|
|
49
|
+
import { projectAiAssetsRoots, loadFlow, loadAllFlowEntries, findFlowFileInRoots } from '../chunk-UAAAERXI.js';
|
|
48
50
|
import '../chunk-37FTLYFP.js';
|
|
49
51
|
import '../chunk-QZLWJETK.js';
|
|
50
52
|
import '../chunk-XUUYAS3Z.js';
|
|
51
53
|
import { nodeLabel, nodeSkillAsset, nodeIsInert, nodeIsOptional, nodeRunKind, flowSkillVersionPins } from '../chunk-NFGRW3L7.js';
|
|
52
54
|
import '../chunk-QCI6D7E4.js';
|
|
53
55
|
import '../chunk-K2K7OF4P.js';
|
|
54
|
-
import { AssetManager, NON_DEPLOYABLE_KINDS, MissingManifestError, parseRefTolerant, normalizeRepoUrl, FACTORY_SOURCE_URL } from '../chunk-
|
|
55
|
-
import { cloneOrInitGitRepo, ensureGitRepo, setManifestPublisher, syncManifestWithDisk, isGitRepo, assertManifestEditable, installLibraryAsset, missingRootAssets, stampManifestPublisher, upsertManifestAsset, getStoreManifestsDir, getDefaultValue, isSecretPlaceholder } from '../chunk-
|
|
56
|
+
import { AssetManager, NON_DEPLOYABLE_KINDS, MissingManifestError, parseRefTolerant, normalizeRepoUrl, FACTORY_SOURCE_URL } from '../chunk-BATL2CWI.js';
|
|
57
|
+
import { cloneOrInitGitRepo, ensureGitRepo, setManifestPublisher, syncManifestWithDisk, isGitRepo, assertManifestEditable, installLibraryAsset, missingRootAssets, stampManifestPublisher, upsertManifestAsset, getStoreManifestsDir, getDefaultValue, isSecretPlaceholder } from '../chunk-Y5OCUOXF.js';
|
|
56
58
|
import { parseManifestFile } from '../chunk-Y7UBRRKG.js';
|
|
57
59
|
import '../chunk-VKSA2CDJ.js';
|
|
58
60
|
import '../chunk-R7FOF242.js';
|
|
59
61
|
import '../chunk-ZDKJHQY2.js';
|
|
60
|
-
import '../chunk-
|
|
62
|
+
import '../chunk-37DN45RR.js';
|
|
61
63
|
import '../chunk-CGYEHQOX.js';
|
|
62
|
-
import { resolveSettings, globalSettingsPath, projectSettingsPath, loadSettings, saveSettings, WorkspaceYamlEditor, resolveLibraryDir, checkAgentSkillConformance, globalInstallDir, GLOBAL_INSTALL_DIR_NAME, readLock, workspaceProviderRegistryPath, userProviderRegistryPath, loadProviderRegistryFile, aiResourceRoots } from '../chunk-
|
|
64
|
+
import { resolveSettings, globalSettingsPath, projectSettingsPath, loadSettings, saveSettings, WorkspaceYamlEditor, resolveLibraryDir, checkAgentSkillConformance, globalInstallDir, GLOBAL_INSTALL_DIR_NAME, readLock, workspaceProviderRegistryPath, userProviderRegistryPath, loadProviderRegistryFile, aiResourceRoots } from '../chunk-QEXEHXX5.js';
|
|
63
65
|
import '../chunk-4GY63JU6.js';
|
|
64
|
-
import { factoryAssetRoots } from '../chunk-
|
|
66
|
+
import { factoryAssetRoots } from '../chunk-JCATNLY3.js';
|
|
65
67
|
import '../chunk-XGIS325V.js';
|
|
66
68
|
import { DEFAULT_DRIVER_ID, DRIVER_DEFAULTS } from '../chunk-5BEFNLOR.js';
|
|
67
69
|
import { findKindDirs } from '../chunk-A2ULN3KX.js';
|
|
68
|
-
import { sourceCacheKey, getGlobalCacheDir, resolveAgentDir, AgentRefResolutionError, matchPin, coerceVersion, loadSkWorkspaceConfig, resolveSkWorkspaceConfig, storeManifestSlug, isWorkspaceConfigFilename } from '../chunk-
|
|
70
|
+
import { sourceCacheKey, getGlobalCacheDir, resolveAgentDir, AgentRefResolutionError, matchPin, coerceVersion, loadSkWorkspaceConfig, resolveSkWorkspaceConfig, storeManifestSlug, isWorkspaceConfigFilename } from '../chunk-6IGFSUTE.js';
|
|
69
71
|
import { globalCacheRoot, globalSkaileDir, userConfigPath } from '../chunk-MFHKHXDE.js';
|
|
70
72
|
import { SUPPORTED_DRIVER_TARGETS } from '../chunk-TOSHZX4C.js';
|
|
71
73
|
import { loadSkPublishManifest, SKAILE_MANIFEST_FILENAME, decodeSkaileManifest } from '../chunk-SR4RFKHM.js';
|
|
@@ -80,7 +82,7 @@ import '../chunk-BOFL7GIF.js';
|
|
|
80
82
|
import '../chunk-KTBKW2FI.js';
|
|
81
83
|
import '../chunk-UQ6LFBPZ.js';
|
|
82
84
|
import '../chunk-TNWXGHLD.js';
|
|
83
|
-
import { validatePreset
|
|
85
|
+
import { validatePreset } from '../chunk-5CYEWBPB.js';
|
|
84
86
|
import '../chunk-NSBPE2FW.js';
|
|
85
87
|
import * as fs12 from 'fs';
|
|
86
88
|
import fs12__default, { readFileSync, existsSync, mkdirSync, writeFileSync, lstatSync, rmSync, readdirSync, statSync } from 'fs';
|
|
@@ -89,7 +91,7 @@ import path36__default, { resolve, join } from 'path';
|
|
|
89
91
|
import { fileURLToPath } from 'url';
|
|
90
92
|
import { Help, Command, Option } from 'commander';
|
|
91
93
|
import { rcompare } from 'semver';
|
|
92
|
-
import * as
|
|
94
|
+
import * as p4 from '@clack/prompts';
|
|
93
95
|
import pc5 from 'picocolors';
|
|
94
96
|
import { parse, stringify, parseDocument } from 'yaml';
|
|
95
97
|
import * as os from 'os';
|
|
@@ -132,6 +134,10 @@ async function runSearch(kind, query, opts) {
|
|
|
132
134
|
query = kind;
|
|
133
135
|
kind = void 0;
|
|
134
136
|
}
|
|
137
|
+
if (kind && query === void 0 && !ASSET_KINDS.includes(kind)) {
|
|
138
|
+
query = kind;
|
|
139
|
+
kind = void 0;
|
|
140
|
+
}
|
|
135
141
|
const showLocal = !opts.store;
|
|
136
142
|
const showStore = !opts.local;
|
|
137
143
|
const { resolveConfig } = await import('../library/index.js');
|
|
@@ -144,7 +150,7 @@ async function runSearch(kind, query, opts) {
|
|
|
144
150
|
}
|
|
145
151
|
}
|
|
146
152
|
async function searchIndex(query, kind) {
|
|
147
|
-
const { openLibrary: openLibrary2 } = await import('../open-library-
|
|
153
|
+
const { openLibrary: openLibrary2 } = await import('../open-library-NVG3CZUO.js');
|
|
148
154
|
const library = await openLibrary2();
|
|
149
155
|
try {
|
|
150
156
|
const defs = await library.listAssetDefs(kind ? { kind } : {});
|
|
@@ -177,7 +183,7 @@ async function searchIndex(query, kind) {
|
|
|
177
183
|
}
|
|
178
184
|
async function searchFactory(projectDir, query, kind) {
|
|
179
185
|
const prefixes = factoryAssetRoots().map((r) => r.endsWith(path36__default.sep) ? r : r + path36__default.sep);
|
|
180
|
-
const isFactoryPath = (
|
|
186
|
+
const isFactoryPath = (p6) => prefixes.some((fp) => p6 === fp.slice(0, -1) || p6.startsWith(fp));
|
|
181
187
|
try {
|
|
182
188
|
const entries = await new AssetManager({ projectDir }).search(query, kind);
|
|
183
189
|
return entries.filter((e) => isFactoryPath(e.source));
|
|
@@ -197,7 +203,7 @@ async function searchLocal(query, kind, opts, showStore, airGapped) {
|
|
|
197
203
|
const factory = await searchFactory(projectDir, query, kind);
|
|
198
204
|
let entries = unionEntries(await searchIndex(query, kind), factory);
|
|
199
205
|
if (entries.length === 0 && !query && !kind && !airGapped) {
|
|
200
|
-
const { autoSyncForSearch } = await import('../source-
|
|
206
|
+
const { autoSyncForSearch } = await import('../source-HTT6CXUP.js');
|
|
201
207
|
if (await autoSyncForSearch(projectDir)) {
|
|
202
208
|
entries = unionEntries(await searchIndex(query, kind), factory);
|
|
203
209
|
}
|
|
@@ -216,31 +222,70 @@ async function searchLocal(query, kind, opts, showStore, airGapped) {
|
|
|
216
222
|
}
|
|
217
223
|
printLocalEntries(entries);
|
|
218
224
|
}
|
|
225
|
+
var MIN_LOCAL_DESCRIPTION_WIDTH = 10;
|
|
226
|
+
function layoutLocalTable(rows, width, style = {}) {
|
|
227
|
+
const styleRef = style.ref ?? ((s) => s);
|
|
228
|
+
const styleVer = style.version ?? ((s) => s);
|
|
229
|
+
const gap = COLUMN_GAP.length;
|
|
230
|
+
const indent = 2;
|
|
231
|
+
const pad = " ".repeat(indent);
|
|
232
|
+
const nameW = Math.max(4, ...rows.map((r) => r.ref.length));
|
|
233
|
+
const verW = Math.max(0, ...rows.map((r) => r.version.length));
|
|
234
|
+
const verSpan = verW > 0 ? gap + verW : 0;
|
|
235
|
+
const refCell = (ref) => styleRef(ref) + " ".repeat(nameW - ref.length);
|
|
236
|
+
const lines = [];
|
|
237
|
+
const descW = width - (indent + nameW + gap + verSpan);
|
|
238
|
+
if (descW >= MIN_LOCAL_DESCRIPTION_WIDTH) {
|
|
239
|
+
for (const r of rows) {
|
|
240
|
+
const desc = truncateText(r.description, descW);
|
|
241
|
+
const descCell = verW > 0 ? desc.padEnd(descW) : desc;
|
|
242
|
+
lines.push(
|
|
243
|
+
`${pad}${refCell(r.ref)}${COLUMN_GAP}${descCell}${r.version ? `${COLUMN_GAP}${styleVer(r.version)}` : ""}`
|
|
244
|
+
);
|
|
245
|
+
}
|
|
246
|
+
return { ruleWidth: nameW + gap + descW + verSpan, lines };
|
|
247
|
+
}
|
|
248
|
+
if (indent + nameW + verSpan <= width) {
|
|
249
|
+
for (const r of rows) {
|
|
250
|
+
lines.push(
|
|
251
|
+
verW > 0 ? `${pad}${refCell(r.ref)}${r.version ? `${COLUMN_GAP}${styleVer(r.version)}` : ""}` : `${pad}${styleRef(r.ref)}`
|
|
252
|
+
);
|
|
253
|
+
}
|
|
254
|
+
return { ruleWidth: nameW + verSpan, lines };
|
|
255
|
+
}
|
|
256
|
+
const subPad = " ".repeat(indent + 2);
|
|
257
|
+
const subDescW = width - (indent + 2) - verSpan;
|
|
258
|
+
for (const r of rows) {
|
|
259
|
+
lines.push(`${pad}${styleRef(r.ref)}`);
|
|
260
|
+
const desc = subDescW >= MIN_LOCAL_DESCRIPTION_WIDTH ? truncateText(r.description, subDescW) : "";
|
|
261
|
+
const descCell = r.version && desc ? desc.padEnd(subDescW) : desc;
|
|
262
|
+
const parts = [descCell, r.version ? styleVer(r.version) : ""].filter((s) => s !== "");
|
|
263
|
+
if (parts.length > 0) lines.push(`${subPad}${parts.join(COLUMN_GAP)}`);
|
|
264
|
+
}
|
|
265
|
+
return { ruleWidth: Math.max(1, Math.min(nameW, width - indent)), lines };
|
|
266
|
+
}
|
|
219
267
|
function printLocalEntries(entries, width = terminalWidth()) {
|
|
220
268
|
const byKind = /* @__PURE__ */ new Map();
|
|
221
269
|
for (const e of entries) {
|
|
222
270
|
if (!byKind.has(e.kind)) byKind.set(e.kind, []);
|
|
223
271
|
byKind.get(e.kind).push(e);
|
|
224
272
|
}
|
|
225
|
-
const verOf = (e) => e.version ? `v${e.version}` : "";
|
|
226
273
|
for (const [k, items] of byKind) {
|
|
227
|
-
const
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
274
|
+
const { ruleWidth, lines } = layoutLocalTable(
|
|
275
|
+
items.map((e) => ({
|
|
276
|
+
ref: localEntryRef(e),
|
|
277
|
+
description: e.description,
|
|
278
|
+
version: e.version ? `v${e.version}` : ""
|
|
279
|
+
})),
|
|
280
|
+
width,
|
|
281
|
+
{ ref: S.cmd, version: S.dim }
|
|
282
|
+
);
|
|
231
283
|
console.log();
|
|
232
284
|
console.log(
|
|
233
285
|
` ${kindColor(k)} ${S.heading(`${k.toUpperCase()}S`)} ${S.dim(`(${items.length})`)}`
|
|
234
286
|
);
|
|
235
|
-
console.log(` ${S.rule(
|
|
236
|
-
for (const
|
|
237
|
-
const desc = truncateText(e.description, descW);
|
|
238
|
-
const ver = verOf(e);
|
|
239
|
-
const descCell = ver ? desc.padEnd(descW) : desc;
|
|
240
|
-
console.log(
|
|
241
|
-
` ${S.cmd(localEntryRef(e).padEnd(nameW))}${COLUMN_GAP}${descCell}${ver ? `${COLUMN_GAP}${S.dim(ver)}` : ""}`
|
|
242
|
-
);
|
|
243
|
-
}
|
|
287
|
+
console.log(` ${S.rule(Math.max(1, Math.min(ruleWidth, width - 2)))}`);
|
|
288
|
+
for (const line of lines) console.log(line);
|
|
244
289
|
}
|
|
245
290
|
console.log(`
|
|
246
291
|
${S.dim(`${entries.length} total`)}
|
|
@@ -267,7 +312,7 @@ async function searchStore(query, kind, opts, airGapped) {
|
|
|
267
312
|
logInfo("air-gapped (cache_ttl: 0) \u2014 local sources only");
|
|
268
313
|
return;
|
|
269
314
|
}
|
|
270
|
-
const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError } = await import('../open-library-
|
|
315
|
+
const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError } = await import('../open-library-NVG3CZUO.js');
|
|
271
316
|
try {
|
|
272
317
|
const remote = await openCatalogSource2({ projectDir: path36__default.resolve(opts.projectDir) });
|
|
273
318
|
const assets = await remote.listAssets(kind ? { kind } : {});
|
|
@@ -293,7 +338,7 @@ async function searchStore(query, kind, opts, airGapped) {
|
|
|
293
338
|
}
|
|
294
339
|
}
|
|
295
340
|
function makeSearchCommand() {
|
|
296
|
-
return new Command("search").description("Search across all repos").argument("[kind]", "Filter by asset kind").argument("[query]", "Search query").option("--project-dir <path>", "Project directory", process.cwd()).option("--store", "Search only the store").option("--local", "Search only local repos").action(async (kind, query, opts) => {
|
|
341
|
+
return new Command("search").description("Search across all repos").argument("[kind]", "Filter by asset kind (a single non-kind argument is the query)").argument("[query]", "Search query").option("--project-dir <path>", "Project directory", process.cwd()).option("--store", "Search only the store").option("--local", "Search only local repos").action(async (kind, query, opts) => {
|
|
297
342
|
await runSearch(kind, query, opts);
|
|
298
343
|
});
|
|
299
344
|
}
|
|
@@ -390,18 +435,22 @@ function makeAddCommand() {
|
|
|
390
435
|
harnesses,
|
|
391
436
|
driverTarget: opts.target
|
|
392
437
|
});
|
|
393
|
-
const
|
|
394
|
-
|
|
438
|
+
const spinner = createSpinner();
|
|
439
|
+
spinner.start(`Adding ${ref}`);
|
|
395
440
|
try {
|
|
396
|
-
const
|
|
397
|
-
|
|
441
|
+
const libraryOf = /* @__PURE__ */ new Map();
|
|
442
|
+
const added = await am2.add(ref, {
|
|
443
|
+
link: opts.link,
|
|
444
|
+
onLibraryOrigin: (deployedRef, library) => libraryOf.set(deployedRef, library)
|
|
445
|
+
});
|
|
446
|
+
spinner.stop("Done");
|
|
398
447
|
await promptSoftDepAdds(am2, ref, {
|
|
399
448
|
isTTY: !!process.stdin.isTTY,
|
|
400
449
|
link: opts.link,
|
|
401
450
|
withSoftDeps: opts.withSoftDeps,
|
|
402
451
|
noSoftDeps: opts.softDeps === false,
|
|
403
|
-
confirm: (message) =>
|
|
404
|
-
isCancel:
|
|
452
|
+
confirm: (message) => p4.confirm({ message, initialValue: false }),
|
|
453
|
+
isCancel: p4.isCancel,
|
|
405
454
|
onAdded: logOk,
|
|
406
455
|
onError: logErr,
|
|
407
456
|
onHint: (line) => logInfo(S.dim(line))
|
|
@@ -413,10 +462,15 @@ function makeAddCommand() {
|
|
|
413
462
|
`Recorded in skaile.yaml${kind === "mcp-server" ? " (bytes fetched + verified into .skaile/cache/store)" : ""}. ${kind} assets are not deployed into the driver target \u2014 they are wired when skaile runs the agent.`
|
|
414
463
|
);
|
|
415
464
|
else logInfo("Nothing to deploy (already up to date).");
|
|
416
|
-
} else
|
|
465
|
+
} else {
|
|
466
|
+
for (const a of added) {
|
|
467
|
+
const library = libraryOf.get(a);
|
|
468
|
+
logOk(library ? `${a} (library ${library})` : a);
|
|
469
|
+
}
|
|
470
|
+
}
|
|
417
471
|
await reportBundleMembership(am2, ref, (line) => logInfo(S.dim(line)));
|
|
418
472
|
} catch (err) {
|
|
419
|
-
|
|
473
|
+
spinner.stop("Failed");
|
|
420
474
|
logErr(String(err));
|
|
421
475
|
process.exit(1);
|
|
422
476
|
}
|
|
@@ -443,8 +497,8 @@ function makeRemoveCommand() {
|
|
|
443
497
|
await promptSoftDepRemovals(am2, ref, {
|
|
444
498
|
isTTY: !!process.stdin.isTTY,
|
|
445
499
|
noSoftDeps: opts.softDeps === false,
|
|
446
|
-
confirm: (message) =>
|
|
447
|
-
isCancel:
|
|
500
|
+
confirm: (message) => p4.confirm({ message, initialValue: false }),
|
|
501
|
+
isCancel: p4.isCancel,
|
|
448
502
|
onRemoved: logOk,
|
|
449
503
|
onHint: (line) => logInfo(S.dim(line))
|
|
450
504
|
});
|
|
@@ -589,7 +643,7 @@ async function resolveInfoEntry(am2, ref, opts) {
|
|
|
589
643
|
return { entry: match ?? deployed };
|
|
590
644
|
}
|
|
591
645
|
const lookup = opts.storeLookup ?? (async (filter) => {
|
|
592
|
-
const { resolveCatalogSource } = await import('../open-library-
|
|
646
|
+
const { resolveCatalogSource } = await import('../open-library-NVG3CZUO.js');
|
|
593
647
|
const { source, close } = await resolveCatalogSource({ projectDir: opts.projectDir });
|
|
594
648
|
try {
|
|
595
649
|
return await source.listAssets(filter);
|
|
@@ -605,7 +659,7 @@ async function resolveInfoEntry(am2, ref, opts) {
|
|
|
605
659
|
);
|
|
606
660
|
return { entry: hit ? catalogAssetToEntry(hit) : null };
|
|
607
661
|
} catch (err) {
|
|
608
|
-
const { LocalCatalogDisabledError } = await import('../open-library-
|
|
662
|
+
const { LocalCatalogDisabledError } = await import('../open-library-NVG3CZUO.js');
|
|
609
663
|
const storeNote = err instanceof Error ? err.message : String(err);
|
|
610
664
|
const disabled = err instanceof LocalCatalogDisabledError || /catalog\.url/i.test(storeNote);
|
|
611
665
|
return { entry: null, storeNote, ...disabled ? { storeDisabled: true } : {} };
|
|
@@ -706,7 +760,7 @@ async function indexLibrary(lib, index) {
|
|
|
706
760
|
}
|
|
707
761
|
}
|
|
708
762
|
function resolveLibraryPublisherDetailed(lib, opts, storeIdentity) {
|
|
709
|
-
const bare = (
|
|
763
|
+
const bare = (p6) => p6.startsWith("@") ? p6.slice(1) : p6;
|
|
710
764
|
if (opts.publisher?.trim()) return { publisher: bare(opts.publisher.trim()), source: "flag" };
|
|
711
765
|
const declared = loadSkPublishManifest(lib.path)?.publisher?.trim();
|
|
712
766
|
if (declared) return { publisher: bare(declared), source: "manifest" };
|
|
@@ -775,6 +829,39 @@ async function registerLibraryAsset(lib, index, input) {
|
|
|
775
829
|
for (const e of idx.errors) logWarn(e);
|
|
776
830
|
return { publisher, ref: refFor(input.kind, publisher, input.name, input.version) };
|
|
777
831
|
}
|
|
832
|
+
var LIBRARY_UPGRADE_DOCS = "https://github.com/skaile-ai/workspaces/blob/main/docs/sections/cli/commands/library.md#upgrading-a-4x-library";
|
|
833
|
+
var DOMAIN_REMOVED_HINT = `Domains were removed in 5.0 \u2014 delete DOMAIN.md files; group assets with .claude-plugin/marketplace.json. See ${LIBRARY_UPGRADE_DOCS}`;
|
|
834
|
+
function countDomainFiles(root) {
|
|
835
|
+
let count = 0;
|
|
836
|
+
const walk = (dir) => {
|
|
837
|
+
let entries;
|
|
838
|
+
try {
|
|
839
|
+
entries = fs12.readdirSync(dir, { withFileTypes: true });
|
|
840
|
+
} catch {
|
|
841
|
+
return;
|
|
842
|
+
}
|
|
843
|
+
for (const entry of entries) {
|
|
844
|
+
if (entry.isDirectory()) {
|
|
845
|
+
if (!entry.name.startsWith(".") && entry.name !== "node_modules") {
|
|
846
|
+
walk(path36.join(dir, entry.name));
|
|
847
|
+
}
|
|
848
|
+
} else if (entry.name === "DOMAIN.md") {
|
|
849
|
+
count++;
|
|
850
|
+
}
|
|
851
|
+
}
|
|
852
|
+
};
|
|
853
|
+
walk(root);
|
|
854
|
+
return count;
|
|
855
|
+
}
|
|
856
|
+
function warnIgnoredDomainFiles(root) {
|
|
857
|
+
const count = countDomainFiles(root);
|
|
858
|
+
if (count > 0) {
|
|
859
|
+
logWarn(
|
|
860
|
+
`${count} DOMAIN.md file(s) are ignored since 5.0 (domains were removed) \u2014 delete them; group assets with .claude-plugin/marketplace.json. See ${LIBRARY_UPGRADE_DOCS}`
|
|
861
|
+
);
|
|
862
|
+
}
|
|
863
|
+
return count;
|
|
864
|
+
}
|
|
778
865
|
var DEFAULT_IMPORT_VERSION = "0.1.0";
|
|
779
866
|
var DEFAULT_IMPORT_STAGE = "alpha";
|
|
780
867
|
function claudeSkillRoots() {
|
|
@@ -872,9 +959,18 @@ async function resolveDefByRef(library, ref, opts) {
|
|
|
872
959
|
function withCanonicalRef(def) {
|
|
873
960
|
return { ref: catalogAssetRef(def), ...def };
|
|
874
961
|
}
|
|
962
|
+
function resolveLibraryOption(opts) {
|
|
963
|
+
if (opts.library && opts.to && opts.library !== opts.to) {
|
|
964
|
+
logErr(
|
|
965
|
+
`Conflicting options: --library "${opts.library}" and --to "${opts.to}". Use --library.`
|
|
966
|
+
);
|
|
967
|
+
process.exit(1);
|
|
968
|
+
}
|
|
969
|
+
return opts.library ?? opts.to;
|
|
970
|
+
}
|
|
875
971
|
function makeAssetCommand() {
|
|
876
972
|
const cmd = new Command("asset").description("Author and install AI assets");
|
|
877
|
-
cmd.command("import <name-or-path>").description("Import + skailify an existing coding-agent skill into a library").option("--
|
|
973
|
+
cmd.command("import <name-or-path>").description("Import + skailify an existing coding-agent skill into a library").option("--library <library>", "Target library (default: auto / personal)").addOption(new Option("--to <library>", "Alias for --library").hideHelp()).option("--version <semver>", "Version to stamp when the skill ships none").option("--stage <stage>", "Lifecycle stage to stamp (default: alpha)").option("--no-normalize", "Copy verbatim \u2014 skip frontmatter normalization").option(
|
|
878
974
|
"--publisher <name>",
|
|
879
975
|
"Publisher for the imported skill (default: the library's, else your store login)"
|
|
880
976
|
).option("--commit", "Auto-commit in git-backed libraries", false).action(
|
|
@@ -887,18 +983,19 @@ function makeAssetCommand() {
|
|
|
887
983
|
process.exit(1);
|
|
888
984
|
}
|
|
889
985
|
logInfo(`Source: ${S.dim(src.dir)} (${src.via})`);
|
|
986
|
+
const libraryName = resolveLibraryOption(opts);
|
|
890
987
|
const { manager, library, close } = await openLibraryManager();
|
|
891
988
|
try {
|
|
892
989
|
let target;
|
|
893
|
-
if (
|
|
894
|
-
target = await manager.requireLibrary(
|
|
990
|
+
if (libraryName) {
|
|
991
|
+
target = await manager.requireLibrary(libraryName);
|
|
895
992
|
} else {
|
|
896
993
|
const found = await manager.findDefaultLibrary();
|
|
897
994
|
const def = found && found.ownership !== "reader" ? found : void 0;
|
|
898
995
|
target = def ?? (await manager.ensurePersonalLibrary(resolveLibraryDir())).library;
|
|
899
996
|
}
|
|
900
997
|
if (target.ownership === "reader") {
|
|
901
|
-
logErr(`Library "${target.name}" is read-only (ownership=reader). Choose --
|
|
998
|
+
logErr(`Library "${target.name}" is read-only (ownership=reader). Choose --library.`);
|
|
902
999
|
process.exit(1);
|
|
903
1000
|
}
|
|
904
1001
|
try {
|
|
@@ -957,7 +1054,7 @@ function makeAssetCommand() {
|
|
|
957
1054
|
}
|
|
958
1055
|
}
|
|
959
1056
|
);
|
|
960
|
-
cmd.command("migrate <path>").description("Move/copy/link a workspace asset into a library").option("--
|
|
1057
|
+
cmd.command("migrate <path>").description("Move/copy/link a workspace asset into a library").option("--library <library>", "Target library (default: auto)").addOption(new Option("--to <library>", "Alias for --library").hideHelp()).option("--mode <mode>", "copy | move | link", "copy").option("--commit", "Auto-commit in git-backed libraries", false).action(
|
|
961
1058
|
async (srcPath, opts) => {
|
|
962
1059
|
if (!["copy", "move", "link"].includes(opts.mode)) {
|
|
963
1060
|
logErr(`Invalid --mode "${opts.mode}". Expected: copy | move | link.`);
|
|
@@ -967,11 +1064,12 @@ function makeAssetCommand() {
|
|
|
967
1064
|
logErr(`Source path does not exist: ${srcPath}`);
|
|
968
1065
|
process.exit(1);
|
|
969
1066
|
}
|
|
1067
|
+
const libraryName = resolveLibraryOption(opts);
|
|
970
1068
|
const { manager, close } = await openLibraryManager();
|
|
971
1069
|
try {
|
|
972
1070
|
let target;
|
|
973
|
-
if (
|
|
974
|
-
target = await manager.requireLibrary(
|
|
1071
|
+
if (libraryName) {
|
|
1072
|
+
target = await manager.requireLibrary(libraryName);
|
|
975
1073
|
} else {
|
|
976
1074
|
const found = await manager.findDefaultLibrary();
|
|
977
1075
|
const def = found && found.ownership !== "reader" ? found : void 0;
|
|
@@ -984,7 +1082,7 @@ function makeAssetCommand() {
|
|
|
984
1082
|
}
|
|
985
1083
|
if (target.ownership === "reader") {
|
|
986
1084
|
logErr(
|
|
987
|
-
`Library "${target.name}" is read-only (ownership=reader). Choose another with --
|
|
1085
|
+
`Library "${target.name}" is read-only (ownership=reader). Choose another with --library.`
|
|
988
1086
|
);
|
|
989
1087
|
process.exit(1);
|
|
990
1088
|
}
|
|
@@ -1078,7 +1176,7 @@ function makeAssetCommand() {
|
|
|
1078
1176
|
}
|
|
1079
1177
|
);
|
|
1080
1178
|
cmd.addCommand(makeListCommand());
|
|
1081
|
-
cmd.command("show <ref>").description("Show details for an asset by canonical ref").action(async (ref) => {
|
|
1179
|
+
cmd.command("show <ref>").description("Show details for an asset by canonical ref (prints JSON)").option("--json", "Print JSON (the default and only output format)").action(async (ref, _opts) => {
|
|
1082
1180
|
const { library, close } = await openLibraryManager();
|
|
1083
1181
|
try {
|
|
1084
1182
|
const def = await resolveDefByRef(library, ref);
|
|
@@ -1198,10 +1296,10 @@ function makeCacheCommand() {
|
|
|
1198
1296
|
return;
|
|
1199
1297
|
}
|
|
1200
1298
|
if (!opts.yes) {
|
|
1201
|
-
const ok = await
|
|
1299
|
+
const ok = await p4.confirm({
|
|
1202
1300
|
message: opts.global ? "Clear project AND global cache?" : "Clear project cache?"
|
|
1203
1301
|
});
|
|
1204
|
-
if (
|
|
1302
|
+
if (p4.isCancel(ok) || !ok) {
|
|
1205
1303
|
logInfo("Cancelled.");
|
|
1206
1304
|
return;
|
|
1207
1305
|
}
|
|
@@ -1259,7 +1357,7 @@ function makeCatalogCommand() {
|
|
|
1259
1357
|
return catalog;
|
|
1260
1358
|
}
|
|
1261
1359
|
async function runLocalCatalogTest(projectDir) {
|
|
1262
|
-
const { resolveCatalogSource } = await import('../open-library-
|
|
1360
|
+
const { resolveCatalogSource } = await import('../open-library-NVG3CZUO.js');
|
|
1263
1361
|
let resolved;
|
|
1264
1362
|
try {
|
|
1265
1363
|
resolved = await resolveCatalogSource({ projectDir });
|
|
@@ -1403,8 +1501,8 @@ async function scanLibraryFlowEntries() {
|
|
|
1403
1501
|
const indexPath = resolveIndexPath();
|
|
1404
1502
|
if (!existsSync(indexPath)) return entries;
|
|
1405
1503
|
const [{ authoringLibraries }, { createFullRegistry: createFullRegistry2 }] = await Promise.all([
|
|
1406
|
-
import('../open-library-
|
|
1407
|
-
import('../open-registry-
|
|
1504
|
+
import('../open-library-NVG3CZUO.js'),
|
|
1505
|
+
import('../open-registry-IYH6W6CN.js')
|
|
1408
1506
|
]);
|
|
1409
1507
|
const index = new LocalIndex({ indexPath });
|
|
1410
1508
|
try {
|
|
@@ -1546,12 +1644,12 @@ var API_KEY_PREFIX = "apiKey.";
|
|
|
1546
1644
|
function collectWorkspaceDefaults(projectDir) {
|
|
1547
1645
|
const wsDefaults = {};
|
|
1548
1646
|
const ws = resolveSkWorkspaceConfig(projectDir);
|
|
1549
|
-
const
|
|
1550
|
-
if (
|
|
1551
|
-
if (
|
|
1552
|
-
if (
|
|
1553
|
-
if (
|
|
1554
|
-
if (
|
|
1647
|
+
const p6 = ws.agent_config?.default ?? {};
|
|
1648
|
+
if (p6.driver) wsDefaults.driver = p6.driver;
|
|
1649
|
+
if (p6.model) wsDefaults.model = p6.model;
|
|
1650
|
+
if (p6.skills_dir) wsDefaults.skills_dir = p6.skills_dir;
|
|
1651
|
+
if (p6.agents_dir) wsDefaults.agents_dir = p6.agents_dir;
|
|
1652
|
+
if (p6.prompts_dir) wsDefaults.prompts_dir = p6.prompts_dir;
|
|
1555
1653
|
for (const [role, target] of Object.entries(ws.roles ?? {})) {
|
|
1556
1654
|
wsDefaults[`@${role}`] = target;
|
|
1557
1655
|
}
|
|
@@ -2364,7 +2462,7 @@ async function ensureTargetsRegistered(projectDir) {
|
|
|
2364
2462
|
const { resolveSkWorkspaceConfig: resolveSkWorkspaceConfig2 } = await import('../core/index.js');
|
|
2365
2463
|
const config = resolveSkWorkspaceConfig2(projectDir);
|
|
2366
2464
|
if (config.plugins && config.plugins.length > 0) {
|
|
2367
|
-
const { ensurePluginsLoaded } = await import('../plugin-store-
|
|
2465
|
+
const { ensurePluginsLoaded } = await import('../plugin-store-2DTEIJTG.js');
|
|
2368
2466
|
const result = await ensurePluginsLoaded(projectDir, config.plugins, pluginRegistry);
|
|
2369
2467
|
for (const f of result.failed) logWarn(f.error);
|
|
2370
2468
|
}
|
|
@@ -2589,10 +2687,10 @@ var MCP_SERVER_ENTRY = {
|
|
|
2589
2687
|
function pluginDir(projectDir) {
|
|
2590
2688
|
return path36__default.join(projectDir, ".claude", "plugins", "skaile");
|
|
2591
2689
|
}
|
|
2592
|
-
async function readJsonStrict(
|
|
2690
|
+
async function readJsonStrict(p6) {
|
|
2593
2691
|
let raw;
|
|
2594
2692
|
try {
|
|
2595
|
-
raw = await fs6.readFile(
|
|
2693
|
+
raw = await fs6.readFile(p6, "utf-8");
|
|
2596
2694
|
} catch {
|
|
2597
2695
|
return null;
|
|
2598
2696
|
}
|
|
@@ -2600,13 +2698,13 @@ async function readJsonStrict(p7) {
|
|
|
2600
2698
|
return JSON.parse(raw);
|
|
2601
2699
|
} catch (e) {
|
|
2602
2700
|
throw new Error(
|
|
2603
|
-
`cannot parse ${
|
|
2701
|
+
`cannot parse ${p6}: ${e instanceof Error ? e.message : String(e)}; please fix or remove`
|
|
2604
2702
|
);
|
|
2605
2703
|
}
|
|
2606
2704
|
}
|
|
2607
|
-
async function writeJson(
|
|
2608
|
-
await fs6.mkdir(path36__default.dirname(
|
|
2609
|
-
await fs6.writeFile(
|
|
2705
|
+
async function writeJson(p6, value) {
|
|
2706
|
+
await fs6.mkdir(path36__default.dirname(p6), { recursive: true });
|
|
2707
|
+
await fs6.writeFile(p6, `${JSON.stringify(value, null, 2)}
|
|
2610
2708
|
`);
|
|
2611
2709
|
}
|
|
2612
2710
|
async function copyDir(src, dest) {
|
|
@@ -2661,7 +2759,7 @@ async function uninstall(projectDir) {
|
|
|
2661
2759
|
let changed = false;
|
|
2662
2760
|
const settings = await readJsonStrict(settingsPath);
|
|
2663
2761
|
if (settings && Array.isArray(settings.plugins)) {
|
|
2664
|
-
const next = settings.plugins.filter((
|
|
2762
|
+
const next = settings.plugins.filter((p6) => p6 !== dir);
|
|
2665
2763
|
if (next.length !== settings.plugins.length) {
|
|
2666
2764
|
changed = true;
|
|
2667
2765
|
const updated = { ...settings, plugins: next };
|
|
@@ -2708,7 +2806,7 @@ async function enable(projectDir) {
|
|
|
2708
2806
|
const settings = await readJsonStrict(settingsPath) ?? {};
|
|
2709
2807
|
if (detected.method === "plugin") {
|
|
2710
2808
|
const disabled2 = settings.disabledPlugins ?? [];
|
|
2711
|
-
const next2 = disabled2.filter((
|
|
2809
|
+
const next2 = disabled2.filter((p6) => p6 !== detected.pluginPath);
|
|
2712
2810
|
if (next2.length === disabled2.length) return { changed: false };
|
|
2713
2811
|
const updated2 = { ...settings, disabledPlugins: next2 };
|
|
2714
2812
|
if (next2.length === 0) delete updated2.disabledPlugins;
|
|
@@ -2789,10 +2887,10 @@ function buildEntry(projectDir) {
|
|
|
2789
2887
|
env: { SKAILE_PROJECT_DIR: projectDir }
|
|
2790
2888
|
};
|
|
2791
2889
|
}
|
|
2792
|
-
async function readConfig(
|
|
2890
|
+
async function readConfig(p6) {
|
|
2793
2891
|
let raw;
|
|
2794
2892
|
try {
|
|
2795
|
-
raw = await fs6.readFile(
|
|
2893
|
+
raw = await fs6.readFile(p6, "utf-8");
|
|
2796
2894
|
} catch {
|
|
2797
2895
|
return null;
|
|
2798
2896
|
}
|
|
@@ -2800,41 +2898,41 @@ async function readConfig(p7) {
|
|
|
2800
2898
|
return parse$1(raw);
|
|
2801
2899
|
} catch (e) {
|
|
2802
2900
|
throw new Error(
|
|
2803
|
-
`cannot parse ${
|
|
2901
|
+
`cannot parse ${p6}: ${e instanceof Error ? e.message : String(e)}; please fix or remove`
|
|
2804
2902
|
);
|
|
2805
2903
|
}
|
|
2806
2904
|
}
|
|
2807
|
-
async function writeConfig(
|
|
2808
|
-
await fs6.mkdir(path36__default.dirname(
|
|
2905
|
+
async function writeConfig(p6, value) {
|
|
2906
|
+
await fs6.mkdir(path36__default.dirname(p6), { recursive: true });
|
|
2809
2907
|
const cleaned = {};
|
|
2810
2908
|
for (const [k, v] of Object.entries(value)) {
|
|
2811
2909
|
if (v === void 0) continue;
|
|
2812
2910
|
cleaned[k] = v;
|
|
2813
2911
|
}
|
|
2814
|
-
await fs6.writeFile(
|
|
2912
|
+
await fs6.writeFile(p6, stringify$1(cleaned));
|
|
2815
2913
|
}
|
|
2816
2914
|
function configPath(projectDir) {
|
|
2817
2915
|
return path36__default.join(projectDir, ".codex", "config.toml");
|
|
2818
2916
|
}
|
|
2819
2917
|
async function install2(projectDir) {
|
|
2820
|
-
const
|
|
2821
|
-
const cfg = await readConfig(
|
|
2918
|
+
const p6 = configPath(projectDir);
|
|
2919
|
+
const cfg = await readConfig(p6) ?? {};
|
|
2822
2920
|
const next = buildEntry(projectDir);
|
|
2823
2921
|
const servers = { ...cfg.mcp_servers ?? {} };
|
|
2824
2922
|
const previous = servers[SKAILE_MCP_NAME2];
|
|
2825
2923
|
const matches = previous && JSON.stringify(previous) === JSON.stringify(next);
|
|
2826
2924
|
let warning;
|
|
2827
2925
|
if (previous && !matches) {
|
|
2828
|
-
warning = `overwrote existing ${SKAILE_MCP_NAME2} entry in ${path36__default.relative(projectDir,
|
|
2926
|
+
warning = `overwrote existing ${SKAILE_MCP_NAME2} entry in ${path36__default.relative(projectDir, p6)}`;
|
|
2829
2927
|
}
|
|
2830
2928
|
if (matches) return { changed: false, method: "toml" };
|
|
2831
2929
|
servers[SKAILE_MCP_NAME2] = next;
|
|
2832
|
-
await writeConfig(
|
|
2930
|
+
await writeConfig(p6, { ...cfg, mcp_servers: servers });
|
|
2833
2931
|
return { changed: true, method: "toml", warning };
|
|
2834
2932
|
}
|
|
2835
2933
|
async function uninstall2(projectDir) {
|
|
2836
|
-
const
|
|
2837
|
-
const cfg = await readConfig(
|
|
2934
|
+
const p6 = configPath(projectDir);
|
|
2935
|
+
const cfg = await readConfig(p6);
|
|
2838
2936
|
if (!cfg?.mcp_servers || !(SKAILE_MCP_NAME2 in cfg.mcp_servers)) {
|
|
2839
2937
|
return { changed: false };
|
|
2840
2938
|
}
|
|
@@ -2842,15 +2940,15 @@ async function uninstall2(projectDir) {
|
|
|
2842
2940
|
const updated = { ...cfg, mcp_servers: rest };
|
|
2843
2941
|
if (Object.keys(rest).length === 0) delete updated.mcp_servers;
|
|
2844
2942
|
if (Object.keys(updated).length === 0) {
|
|
2845
|
-
await fs6.unlink(
|
|
2943
|
+
await fs6.unlink(p6);
|
|
2846
2944
|
} else {
|
|
2847
|
-
await writeConfig(
|
|
2945
|
+
await writeConfig(p6, updated);
|
|
2848
2946
|
}
|
|
2849
2947
|
return { changed: true };
|
|
2850
2948
|
}
|
|
2851
2949
|
async function status2(projectDir) {
|
|
2852
|
-
const
|
|
2853
|
-
const cfg = await readConfig(
|
|
2950
|
+
const p6 = configPath(projectDir);
|
|
2951
|
+
const cfg = await readConfig(p6);
|
|
2854
2952
|
const installed = !!(cfg?.mcp_servers && SKAILE_MCP_NAME2 in cfg.mcp_servers);
|
|
2855
2953
|
if (!installed) {
|
|
2856
2954
|
return {
|
|
@@ -2866,7 +2964,7 @@ async function status2(projectDir) {
|
|
|
2866
2964
|
installed: "yes",
|
|
2867
2965
|
enabled: "n/a",
|
|
2868
2966
|
method: "mcp",
|
|
2869
|
-
location: path36__default.relative(projectDir,
|
|
2967
|
+
location: path36__default.relative(projectDir, p6)
|
|
2870
2968
|
};
|
|
2871
2969
|
}
|
|
2872
2970
|
async function install3(projectDir) {
|
|
@@ -3083,7 +3181,7 @@ function printStatusTable(rows) {
|
|
|
3083
3181
|
const widths = cols.map(
|
|
3084
3182
|
(c) => Math.max(c.header.length, ...rows.map((r) => String(r[c.key] ?? "").length))
|
|
3085
3183
|
);
|
|
3086
|
-
const fmtRow = (parts) => parts.map((
|
|
3184
|
+
const fmtRow = (parts) => parts.map((p6, i) => p6.padEnd(widths[i] ?? p6.length)).join(" ");
|
|
3087
3185
|
console.log();
|
|
3088
3186
|
console.log(` ${S.heading(fmtRow(cols.map((c) => c.header)))}`);
|
|
3089
3187
|
for (const r of rows) {
|
|
@@ -3217,6 +3315,23 @@ function refuseGlobalInstallFolder(name, dir) {
|
|
|
3217
3315
|
process.exit(1);
|
|
3218
3316
|
}
|
|
3219
3317
|
}
|
|
3318
|
+
function readOriginTracking(dir) {
|
|
3319
|
+
if (!isGitRepo(dir)) return null;
|
|
3320
|
+
const origin = spawnSync("git", ["remote", "get-url", "origin"], { cwd: dir, encoding: "utf-8" });
|
|
3321
|
+
const url = origin.status === 0 ? origin.stdout.trim() : "";
|
|
3322
|
+
if (!url) return null;
|
|
3323
|
+
const head = spawnSync("git", ["symbolic-ref", "--short", "HEAD"], {
|
|
3324
|
+
cwd: dir,
|
|
3325
|
+
encoding: "utf-8"
|
|
3326
|
+
});
|
|
3327
|
+
return { url, branch: head.status === 0 && head.stdout.trim() || "main" };
|
|
3328
|
+
}
|
|
3329
|
+
function requireGitBackend(lib, verb) {
|
|
3330
|
+
if (lib.backend !== "git") {
|
|
3331
|
+
logErr(`\`library ${verb}\` only applies to git-backed libraries.`);
|
|
3332
|
+
process.exit(1);
|
|
3333
|
+
}
|
|
3334
|
+
}
|
|
3220
3335
|
function scaffoldLibraryFiles(dir, name) {
|
|
3221
3336
|
const readme = `# ${name}
|
|
3222
3337
|
|
|
@@ -3329,7 +3444,7 @@ function makeLibraryCommand() {
|
|
|
3329
3444
|
logErr(`${libPath} exists and is not a directory.`);
|
|
3330
3445
|
process.exit(1);
|
|
3331
3446
|
}
|
|
3332
|
-
const { manager, close } = await openLibraryManager();
|
|
3447
|
+
const { manager, library, close } = await openLibraryManager();
|
|
3333
3448
|
try {
|
|
3334
3449
|
if (await manager.getLibrary(name)) {
|
|
3335
3450
|
logErr(`A library named "${name}" is already registered.`);
|
|
@@ -3339,6 +3454,7 @@ function makeLibraryCommand() {
|
|
|
3339
3454
|
const hasDefault = (await manager.listLibraries()).some((l) => l.isDefault);
|
|
3340
3455
|
let backend = "local";
|
|
3341
3456
|
let backendConfig;
|
|
3457
|
+
let adoptedOrigin = false;
|
|
3342
3458
|
if (opts.git) {
|
|
3343
3459
|
const { branch, reason } = cloneOrInitGitRepo(libPath, opts.git, "main");
|
|
3344
3460
|
if (reason) {
|
|
@@ -3349,7 +3465,14 @@ function makeLibraryCommand() {
|
|
|
3349
3465
|
backend = "git";
|
|
3350
3466
|
backendConfig = { url: opts.git, branch, authHint: "ssh" };
|
|
3351
3467
|
} else {
|
|
3352
|
-
|
|
3468
|
+
const origin = readOriginTracking(libPath);
|
|
3469
|
+
if (origin) {
|
|
3470
|
+
backend = "git";
|
|
3471
|
+
backendConfig = { url: origin.url, branch: origin.branch, authHint: "ssh" };
|
|
3472
|
+
adoptedOrigin = true;
|
|
3473
|
+
} else {
|
|
3474
|
+
fs12.mkdirSync(libPath, { recursive: true });
|
|
3475
|
+
}
|
|
3353
3476
|
}
|
|
3354
3477
|
const blank = fs12.readdirSync(libPath).every((entry) => entry === ".git");
|
|
3355
3478
|
const isDefault = !hasDefault && ownership !== "reader";
|
|
@@ -3366,6 +3489,16 @@ function makeLibraryCommand() {
|
|
|
3366
3489
|
`Library "${name}" ${blank ? "created" : "registered"} at ${libPath}${isDefault ? " (default)" : ""}`
|
|
3367
3490
|
);
|
|
3368
3491
|
if (scaffolded.length > 0) logInfo(`Scaffolded ${scaffolded.join(", ")}.`);
|
|
3492
|
+
if (adoptedOrigin && backendConfig) {
|
|
3493
|
+
logInfo(`Adopted existing git clone as a git library tracking ${backendConfig.url}.`);
|
|
3494
|
+
}
|
|
3495
|
+
if (!blank) {
|
|
3496
|
+
const lib = await manager.requireLibrary(name);
|
|
3497
|
+
const res = await indexLibrary(lib, library);
|
|
3498
|
+
for (const e of res.errors) logWarn(e);
|
|
3499
|
+
logOk(`Indexed ${res.assetsUpdated} asset(s) from ${name}.`);
|
|
3500
|
+
warnIgnoredDomainFiles(libPath);
|
|
3501
|
+
}
|
|
3369
3502
|
} catch (err) {
|
|
3370
3503
|
exitOnSyncError(err);
|
|
3371
3504
|
} finally {
|
|
@@ -3547,11 +3680,11 @@ function makeLibraryCommand() {
|
|
|
3547
3680
|
const { manager, close } = await openLibraryManager();
|
|
3548
3681
|
try {
|
|
3549
3682
|
if (!opts.yes) {
|
|
3550
|
-
const confirmed = await
|
|
3683
|
+
const confirmed = await p4.confirm({
|
|
3551
3684
|
message: `Remove library "${name}"${opts.purge ? " AND delete its directory" : ""}?`,
|
|
3552
3685
|
initialValue: false
|
|
3553
3686
|
});
|
|
3554
|
-
if (!confirmed ||
|
|
3687
|
+
if (!confirmed || p4.isCancel(confirmed)) {
|
|
3555
3688
|
logInfo("Cancelled.");
|
|
3556
3689
|
return;
|
|
3557
3690
|
}
|
|
@@ -3566,10 +3699,11 @@ function makeLibraryCommand() {
|
|
|
3566
3699
|
const { manager, close } = await openLibraryManager();
|
|
3567
3700
|
try {
|
|
3568
3701
|
const lib = await manager.requireLibrary(name);
|
|
3702
|
+
requireGitBackend(lib, "sync");
|
|
3569
3703
|
const drv = manager.driverFor(lib.backend);
|
|
3570
3704
|
const pull = await drv.pull(lib);
|
|
3571
3705
|
logInfo(`Pulled: applied=${pull.applied}, conflicts=${pull.conflicts.length}`);
|
|
3572
|
-
if (lib.ownership === "owner"
|
|
3706
|
+
if (lib.ownership === "owner") {
|
|
3573
3707
|
const push = await drv.push(lib);
|
|
3574
3708
|
logInfo(`Pushed: ${push.pushed}`);
|
|
3575
3709
|
}
|
|
@@ -3599,6 +3733,7 @@ function makeLibraryCommand() {
|
|
|
3599
3733
|
const unparsable = res.errors.filter((e) => e.includes("ManifestSchemaError:"));
|
|
3600
3734
|
for (const e of res.errors) (unparsable.includes(e) ? logErr : logWarn)(e);
|
|
3601
3735
|
logOk(`Indexed ${res.assetsUpdated} asset(s) from ${name}.`);
|
|
3736
|
+
warnIgnoredDomainFiles(lib.path);
|
|
3602
3737
|
if (unparsable.length > 0) {
|
|
3603
3738
|
logErr(`${unparsable.length} asset(s) skipped: manifest could not be parsed.`);
|
|
3604
3739
|
process.exitCode = 1;
|
|
@@ -3611,6 +3746,7 @@ function makeLibraryCommand() {
|
|
|
3611
3746
|
const { manager, close } = await openLibraryManager();
|
|
3612
3747
|
try {
|
|
3613
3748
|
const lib = await manager.requireLibrary(name);
|
|
3749
|
+
requireGitBackend(lib, "pull");
|
|
3614
3750
|
const res = await manager.driverFor(lib.backend).pull(lib);
|
|
3615
3751
|
if (res.conflicts.length > 0) {
|
|
3616
3752
|
logWarn(`Conflicts: ${res.conflicts.map((c) => c.path).join(", ")}`);
|
|
@@ -3627,6 +3763,7 @@ function makeLibraryCommand() {
|
|
|
3627
3763
|
const { manager, close } = await openLibraryManager();
|
|
3628
3764
|
try {
|
|
3629
3765
|
const lib = await manager.requireLibrary(name);
|
|
3766
|
+
requireGitBackend(lib, "push");
|
|
3630
3767
|
const res = await manager.driverFor(lib.backend).push(lib, { force: opts.force });
|
|
3631
3768
|
logOk(`Pushed (${res.pushed}).`);
|
|
3632
3769
|
} catch (err) {
|
|
@@ -3651,10 +3788,7 @@ function makeLibraryCommand() {
|
|
|
3651
3788
|
const { manager, close } = await openLibraryManager();
|
|
3652
3789
|
try {
|
|
3653
3790
|
const lib = await manager.requireLibrary(name);
|
|
3654
|
-
|
|
3655
|
-
logErr("`library commit` only applies to git-backed libraries.");
|
|
3656
|
-
process.exit(1);
|
|
3657
|
-
}
|
|
3791
|
+
requireGitBackend(lib, "commit");
|
|
3658
3792
|
if (!isGitRepo(lib.path)) {
|
|
3659
3793
|
logErr(
|
|
3660
3794
|
`${lib.path} is not a git repository. Run \`skaile library link ${name} <url>\` to initialise it.`
|
|
@@ -3691,6 +3825,10 @@ function makeLibraryCommand() {
|
|
|
3691
3825
|
close();
|
|
3692
3826
|
}
|
|
3693
3827
|
});
|
|
3828
|
+
cmd.command("domain", { hidden: true }).description("Removed in 5.0 (domains were removed)").allowUnknownOption().allowExcessArguments().argument("[args...]").action(() => {
|
|
3829
|
+
logErr(DOMAIN_REMOVED_HINT);
|
|
3830
|
+
process.exit(1);
|
|
3831
|
+
});
|
|
3694
3832
|
cmd.command("git <name> [args...]").description("Pass-through: run arbitrary git commands inside the library").allowUnknownOption().passThroughOptions().action(async (name, rawArgs) => {
|
|
3695
3833
|
const args = rawArgs[0] === "--" ? rawArgs.slice(1) : rawArgs;
|
|
3696
3834
|
const { manager, close } = await openLibraryManager();
|
|
@@ -3711,16 +3849,16 @@ function makeLibraryCommand() {
|
|
|
3711
3849
|
"With --create-repo: create the repo private (the store only accepts public repos)"
|
|
3712
3850
|
).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(
|
|
3713
3851
|
async (lib, opts) => {
|
|
3714
|
-
const { runLibraryPublish } = await import('../library-publish-
|
|
3852
|
+
const { runLibraryPublish } = await import('../library-publish-62RFU74A.js');
|
|
3715
3853
|
await withStoreErrorHandling(() => runLibraryPublish(lib, opts));
|
|
3716
3854
|
}
|
|
3717
3855
|
);
|
|
3718
3856
|
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) => {
|
|
3719
|
-
const { runLibraryRegister } = await import('../library-publish-
|
|
3857
|
+
const { runLibraryRegister } = await import('../library-publish-62RFU74A.js');
|
|
3720
3858
|
await withStoreErrorHandling(() => runLibraryRegister(lib, opts));
|
|
3721
3859
|
});
|
|
3722
3860
|
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) => {
|
|
3723
|
-
const { runLibraryYank } = await import('../library-publish-
|
|
3861
|
+
const { runLibraryYank } = await import('../library-publish-62RFU74A.js');
|
|
3724
3862
|
await withStoreErrorHandling(() => runLibraryYank(lib, opts));
|
|
3725
3863
|
});
|
|
3726
3864
|
return cmd;
|
|
@@ -4380,7 +4518,7 @@ function scheduleSoftDepPreview() {
|
|
|
4380
4518
|
}
|
|
4381
4519
|
async function loadAssets() {
|
|
4382
4520
|
softDepPreviewCache.clear();
|
|
4383
|
-
const { gatherAssetFeeds } = await import('../asset-feeds-
|
|
4521
|
+
const { gatherAssetFeeds } = await import('../asset-feeds-3MVRNS5U.js');
|
|
4384
4522
|
const { entries, notes } = await gatherAssetFeeds(am, am.projectDir);
|
|
4385
4523
|
if (notes.length > 0) {
|
|
4386
4524
|
state.message = notes.map((n) => `[${n.feed}] ${n.message}`).join(" \u2022 ");
|
|
@@ -4547,7 +4685,7 @@ function reconcileCollapsedSets(rows) {
|
|
|
4547
4685
|
async function loadSourcesAndLibraries() {
|
|
4548
4686
|
try {
|
|
4549
4687
|
const [{ openLibraryManager: openLibraryManager2 }, { getGlobalCacheDir: getGlobalCacheDir2, globalSkaileDir: globalSkaileDir2 }] = await Promise.all([
|
|
4550
|
-
import('../open-library-
|
|
4688
|
+
import('../open-library-NVG3CZUO.js'),
|
|
4551
4689
|
import('../core/index.js')
|
|
4552
4690
|
]);
|
|
4553
4691
|
const { manager, library, close } = await openLibraryManager2();
|
|
@@ -5897,18 +6035,18 @@ function makeNpxCommand() {
|
|
|
5897
6035
|
);
|
|
5898
6036
|
process.exit(1);
|
|
5899
6037
|
}
|
|
5900
|
-
const
|
|
6038
|
+
const spinner = createSpinner();
|
|
5901
6039
|
const key = sourceCacheKey(url);
|
|
5902
6040
|
const clonePath = path36__default.join(getGlobalCacheDir(), key);
|
|
5903
|
-
|
|
6041
|
+
spinner.start(`Cloning ${url}`);
|
|
5904
6042
|
try {
|
|
5905
6043
|
if (!existsSync(clonePath)) {
|
|
5906
6044
|
mkdirSync(path36__default.dirname(clonePath), { recursive: true });
|
|
5907
6045
|
execSync(`git clone ${url} ${clonePath}`, { stdio: "ignore" });
|
|
5908
6046
|
}
|
|
5909
|
-
|
|
6047
|
+
spinner.stop(`Cloned to ${key}`);
|
|
5910
6048
|
} catch (err) {
|
|
5911
|
-
|
|
6049
|
+
spinner.stop("Clone failed");
|
|
5912
6050
|
logErr(err instanceof Error ? err.message : String(err));
|
|
5913
6051
|
process.exit(1);
|
|
5914
6052
|
}
|
|
@@ -5928,10 +6066,10 @@ function makeNpxCommand() {
|
|
|
5928
6066
|
}
|
|
5929
6067
|
const skillRef = `skill:@${publisher}/${skillName}`;
|
|
5930
6068
|
const am2 = new AssetManager({ projectDir, global: opts.global, driverTarget: opts.target });
|
|
5931
|
-
|
|
6069
|
+
spinner.start(`Installing ${skillRef}`);
|
|
5932
6070
|
try {
|
|
5933
6071
|
const added = await am2.add(skillRef);
|
|
5934
|
-
|
|
6072
|
+
spinner.stop("Done");
|
|
5935
6073
|
if (added.length === 0) {
|
|
5936
6074
|
logInfo(`${opts.skill} already deployed or not found in source.`);
|
|
5937
6075
|
} else {
|
|
@@ -5939,7 +6077,7 @@ function makeNpxCommand() {
|
|
|
5939
6077
|
}
|
|
5940
6078
|
logInfo(`Source registered in skaile.yaml \u2014 manage via ${S.cmd("skaile source")}.`);
|
|
5941
6079
|
} catch (err) {
|
|
5942
|
-
|
|
6080
|
+
spinner.stop("Failed");
|
|
5943
6081
|
logErr(err.message);
|
|
5944
6082
|
process.exit(1);
|
|
5945
6083
|
}
|
|
@@ -6085,7 +6223,7 @@ function action2(fn) {
|
|
|
6085
6223
|
};
|
|
6086
6224
|
}
|
|
6087
6225
|
async function reconcileAndReport(projectDir, plugins) {
|
|
6088
|
-
const { reconcilePlugins } = await import('../plugin-store-
|
|
6226
|
+
const { reconcilePlugins } = await import('../plugin-store-2DTEIJTG.js');
|
|
6089
6227
|
if (plugins.length === 0) {
|
|
6090
6228
|
logInfo("No plugins declared \u2014 nothing to reconcile.");
|
|
6091
6229
|
return;
|
|
@@ -6101,7 +6239,7 @@ async function reconcileAndReport(projectDir, plugins) {
|
|
|
6101
6239
|
async function runInstall2(spec, opts) {
|
|
6102
6240
|
const projectDir = path36__default.resolve(opts.projectDir);
|
|
6103
6241
|
const { WorkspaceYamlEditor: WorkspaceYamlEditor2 } = await import('../core/index.js');
|
|
6104
|
-
const { specName } = await import('../plugin-store-
|
|
6242
|
+
const { specName } = await import('../plugin-store-2DTEIJTG.js');
|
|
6105
6243
|
const yamlPath = path36__default.join(projectDir, "skaile.yaml");
|
|
6106
6244
|
const editor = WorkspaceYamlEditor2.load(yamlPath);
|
|
6107
6245
|
const replaced = editor.addPlugin(spec, specName);
|
|
@@ -6113,7 +6251,7 @@ async function runInstall2(spec, opts) {
|
|
|
6113
6251
|
async function runRemove(name, opts) {
|
|
6114
6252
|
const projectDir = path36__default.resolve(opts.projectDir);
|
|
6115
6253
|
const { WorkspaceYamlEditor: WorkspaceYamlEditor2 } = await import('../core/index.js');
|
|
6116
|
-
const { specName } = await import('../plugin-store-
|
|
6254
|
+
const { specName } = await import('../plugin-store-2DTEIJTG.js');
|
|
6117
6255
|
const yamlPath = path36__default.join(projectDir, "skaile.yaml");
|
|
6118
6256
|
const editor = WorkspaceYamlEditor2.load(yamlPath);
|
|
6119
6257
|
const removed = editor.removePlugin(name, specName);
|
|
@@ -6141,7 +6279,7 @@ async function runList(opts) {
|
|
|
6141
6279
|
const registry = createPluginRegistry();
|
|
6142
6280
|
if (declared.length > 0) {
|
|
6143
6281
|
try {
|
|
6144
|
-
const { loadPlugins } = await import('../plugin-store-
|
|
6282
|
+
const { loadPlugins } = await import('../plugin-store-2DTEIJTG.js');
|
|
6145
6283
|
const result = await loadPlugins(projectDir, declared, registry);
|
|
6146
6284
|
for (const f of result.failed) logWarn(f.error);
|
|
6147
6285
|
} catch (err) {
|
|
@@ -7017,7 +7155,7 @@ function makeRunCommand() {
|
|
|
7017
7155
|
logErr("No flows available.");
|
|
7018
7156
|
process.exit(1);
|
|
7019
7157
|
}
|
|
7020
|
-
const selected = await
|
|
7158
|
+
const selected = await p4.select({
|
|
7021
7159
|
message: "Select a flow to run",
|
|
7022
7160
|
options: flows.map((f) => ({
|
|
7023
7161
|
value: f.id,
|
|
@@ -7025,8 +7163,8 @@ function makeRunCommand() {
|
|
|
7025
7163
|
hint: f.description
|
|
7026
7164
|
}))
|
|
7027
7165
|
});
|
|
7028
|
-
if (
|
|
7029
|
-
|
|
7166
|
+
if (p4.isCancel(selected)) {
|
|
7167
|
+
p4.cancel("Cancelled.");
|
|
7030
7168
|
process.exit(0);
|
|
7031
7169
|
}
|
|
7032
7170
|
flowId = selected;
|
|
@@ -7185,11 +7323,11 @@ function makeReplCommand() {
|
|
|
7185
7323
|
console.log();
|
|
7186
7324
|
logWarn(`No skaile.yaml found in ${S.cmd(userCwd)} or any parent directory.`);
|
|
7187
7325
|
console.log();
|
|
7188
|
-
const shouldCreate = await
|
|
7326
|
+
const shouldCreate = await p4.confirm({
|
|
7189
7327
|
message: "Create a temporary workspace? (session state in /tmp/)"
|
|
7190
7328
|
});
|
|
7191
|
-
if (
|
|
7192
|
-
|
|
7329
|
+
if (p4.isCancel(shouldCreate) || !shouldCreate) {
|
|
7330
|
+
p4.cancel("Cancelled.");
|
|
7193
7331
|
process.exit(0);
|
|
7194
7332
|
}
|
|
7195
7333
|
const tmpDir = fs12__default.mkdtempSync(path36__default.join(os2.tmpdir(), "skaile-repl-"));
|
|
@@ -7270,12 +7408,12 @@ function makeServeCommand() {
|
|
|
7270
7408
|
);
|
|
7271
7409
|
}
|
|
7272
7410
|
async function ensurePluginsLoadedForServe(projectDir) {
|
|
7273
|
-
const { logInfo: logInfo2, logWarn: logWarn2 } = await import('../helpers-
|
|
7411
|
+
const { logInfo: logInfo2, logWarn: logWarn2 } = await import('../helpers-F2RFRT5D.js');
|
|
7274
7412
|
try {
|
|
7275
7413
|
const { resolveSkWorkspaceConfig: resolveSkWorkspaceConfig2 } = await import('../core/index.js');
|
|
7276
7414
|
const config = resolveSkWorkspaceConfig2(projectDir);
|
|
7277
7415
|
if (!config.plugins || config.plugins.length === 0) return;
|
|
7278
|
-
const { ensurePluginsLoaded } = await import('../plugin-store-
|
|
7416
|
+
const { ensurePluginsLoaded } = await import('../plugin-store-2DTEIJTG.js');
|
|
7279
7417
|
const { pluginRegistry } = await import('../plugin-registry/index.js');
|
|
7280
7418
|
const result = await ensurePluginsLoaded(projectDir, config.plugins, pluginRegistry);
|
|
7281
7419
|
if (result.loaded.length > 0) {
|
|
@@ -7289,14 +7427,14 @@ async function ensurePluginsLoadedForServe(projectDir) {
|
|
|
7289
7427
|
}
|
|
7290
7428
|
}
|
|
7291
7429
|
async function runCompileTest(opts) {
|
|
7292
|
-
const { logOk: logOk2, logErr: logErr2, logInfo: logInfo2, S: S2 } = await import('../helpers-
|
|
7430
|
+
const { logOk: logOk2, logErr: logErr2, logInfo: logInfo2, S: S2 } = await import('../helpers-F2RFRT5D.js');
|
|
7293
7431
|
const { tmpdir } = await import('os');
|
|
7294
7432
|
const { dirname: dirname3, join: join7, resolve: resolve5 } = await import('path');
|
|
7295
7433
|
const { fileURLToPath: fileURLToPath2 } = await import('url');
|
|
7296
7434
|
const { unlinkSync, existsSync: existsSync16 } = await import('fs');
|
|
7297
7435
|
const { spawn } = await import('child_process');
|
|
7298
7436
|
const { portableSpawnSync: portableSpawnSync2 } = await import('../core/index.js');
|
|
7299
|
-
const { MONOREPO_ROOT } = await import('../paths-
|
|
7437
|
+
const { MONOREPO_ROOT } = await import('../paths-STQO4FYF.js');
|
|
7300
7438
|
if (MONOREPO_ROOT === null) {
|
|
7301
7439
|
logErr2("--compile-test is only available inside the skaile-dev workspace.");
|
|
7302
7440
|
logInfo2("Run it from a checkout of skaile-ai/skaile-dev (the monorepo shell).");
|
|
@@ -8172,7 +8310,7 @@ function makeStoreCommand() {
|
|
|
8172
8310
|
process.exit(2);
|
|
8173
8311
|
});
|
|
8174
8312
|
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) => {
|
|
8175
|
-
const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError } = await import('../open-library-
|
|
8313
|
+
const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError } = await import('../open-library-NVG3CZUO.js');
|
|
8176
8314
|
try {
|
|
8177
8315
|
const remote = await openCatalogSource2({ projectDir: path36__default.resolve(opts.projectDir) });
|
|
8178
8316
|
const assets = await remote.listAssets(opts.kind ? { kind: opts.kind } : {});
|
|
@@ -8200,8 +8338,8 @@ function makeStoreCommand() {
|
|
|
8200
8338
|
}
|
|
8201
8339
|
});
|
|
8202
8340
|
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) => {
|
|
8203
|
-
const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError } = await import('../open-library-
|
|
8204
|
-
const { supportsInstallManifest } = await import('../project-
|
|
8341
|
+
const { openCatalogSource: openCatalogSource2, LocalCatalogDisabledError } = await import('../open-library-NVG3CZUO.js');
|
|
8342
|
+
const { supportsInstallManifest } = await import('../project-44LM6SRV.js');
|
|
8205
8343
|
try {
|
|
8206
8344
|
const remote = await openCatalogSource2({ projectDir: path36__default.resolve(opts.projectDir) });
|
|
8207
8345
|
const asset = await remote.resolve(ref);
|
|
@@ -8348,7 +8486,7 @@ function makeUpdateCommand() {
|
|
|
8348
8486
|
return new Command("update").description("Refresh the Catalog cache and re-deploy outdated assets in the current project").argument("[name]", "Update a specific asset (kind:name)").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(
|
|
8349
8487
|
async (_name, opts) => {
|
|
8350
8488
|
if (opts.catalog !== false) {
|
|
8351
|
-
const catalogSpinner =
|
|
8489
|
+
const catalogSpinner = createSpinner();
|
|
8352
8490
|
catalogSpinner.start("Refreshing catalog cache");
|
|
8353
8491
|
try {
|
|
8354
8492
|
const remote = await openCatalogSource({ projectDir: path36__default.resolve(opts.projectDir) });
|
|
@@ -8366,7 +8504,7 @@ function makeUpdateCommand() {
|
|
|
8366
8504
|
if (opts.catalogOnly) return;
|
|
8367
8505
|
const projectDir = path36__default.resolve(opts.projectDir);
|
|
8368
8506
|
if (await shouldSyncSources(opts)) {
|
|
8369
|
-
const syncSpinner =
|
|
8507
|
+
const syncSpinner = createSpinner();
|
|
8370
8508
|
syncSpinner.start("Syncing sources");
|
|
8371
8509
|
const { total, synced, failed } = await syncProjectSources(projectDir);
|
|
8372
8510
|
syncSpinner.stop(
|
|
@@ -8374,10 +8512,10 @@ function makeUpdateCommand() {
|
|
|
8374
8512
|
);
|
|
8375
8513
|
}
|
|
8376
8514
|
const am2 = new AssetManager({ projectDir });
|
|
8377
|
-
const
|
|
8378
|
-
|
|
8515
|
+
const spinner = createSpinner();
|
|
8516
|
+
spinner.start("Re-deploying assets");
|
|
8379
8517
|
const result = await am2.install();
|
|
8380
|
-
|
|
8518
|
+
spinner.stop("Done");
|
|
8381
8519
|
if (result.deployed.length > 0) {
|
|
8382
8520
|
for (const d of result.deployed) logOk(`Updated ${d}`);
|
|
8383
8521
|
} else {
|
|
@@ -8389,12 +8527,12 @@ function makeUpdateCommand() {
|
|
|
8389
8527
|
async function shouldSyncSources(opts) {
|
|
8390
8528
|
if (opts.sync === false) return false;
|
|
8391
8529
|
if (opts.yes || !process.stdin.isTTY) return true;
|
|
8392
|
-
const answer = await
|
|
8530
|
+
const answer = await p4.confirm({
|
|
8393
8531
|
message: "Sync sources from upstream before re-deploying?",
|
|
8394
8532
|
initialValue: true
|
|
8395
8533
|
});
|
|
8396
|
-
if (
|
|
8397
|
-
|
|
8534
|
+
if (p4.isCancel(answer)) {
|
|
8535
|
+
p4.cancel("Cancelled.");
|
|
8398
8536
|
process.exit(130);
|
|
8399
8537
|
}
|
|
8400
8538
|
return answer;
|
|
@@ -8484,10 +8622,9 @@ function validateManifestCandidate(c, parsed, body, absRoot, registry, strictCon
|
|
|
8484
8622
|
}
|
|
8485
8623
|
if (c.kind === "skill" && parsed && typeof parsed === "object") {
|
|
8486
8624
|
const dirName = path36__default.basename(path36__default.dirname(c.filePath));
|
|
8487
|
-
const
|
|
8488
|
-
|
|
8489
|
-
|
|
8490
|
-
if (strictConformance) {
|
|
8625
|
+
for (const f of checkSkillManifest(parsed, body, dirName)) {
|
|
8626
|
+
const line = `${relPath} [${f.tag}] \u2014 ${f.text}`;
|
|
8627
|
+
if (f.conformance && strictConformance) {
|
|
8491
8628
|
logErr(line);
|
|
8492
8629
|
errors++;
|
|
8493
8630
|
} else {
|
|
@@ -8496,10 +8633,6 @@ function validateManifestCandidate(c, parsed, body, absRoot, registry, strictCon
|
|
|
8496
8633
|
}
|
|
8497
8634
|
}
|
|
8498
8635
|
}
|
|
8499
|
-
if (c.kind === "skill" && body?.replace(/^#[^\n]*\n+/, "") === SKILL_BODY_PLACEHOLDER) {
|
|
8500
|
-
logWarn(`${relPath} [skill] \u2014 body is still the scaffold placeholder; write the skill prompt`);
|
|
8501
|
-
warnings++;
|
|
8502
|
-
}
|
|
8503
8636
|
const provider = registry.getProvider(c.kind);
|
|
8504
8637
|
if (!provider) {
|
|
8505
8638
|
logWarn(`${relPath} [${c.kind}] \u2014 kind "${c.kind}" is not registered, skipping validation`);
|
|
@@ -8647,8 +8780,8 @@ function validatePublishManifestRoots(rootPath) {
|
|
|
8647
8780
|
return missing.length;
|
|
8648
8781
|
}
|
|
8649
8782
|
var EXCLUDED_PATHS = ["skaileup-shared/", "external/", "docs/"];
|
|
8650
|
-
function toPosix(
|
|
8651
|
-
return
|
|
8783
|
+
function toPosix(p6) {
|
|
8784
|
+
return p6.split(path36__default.sep).join("/");
|
|
8652
8785
|
}
|
|
8653
8786
|
function isExcludedPath(relPath) {
|
|
8654
8787
|
const rel = toPosix(relPath);
|
|
@@ -8896,6 +9029,7 @@ function makeValidateCommand() {
|
|
|
8896
9029
|
const rootErrors = validatePublishManifestRoots(absPath);
|
|
8897
9030
|
const totalErrors = errors + ws.errors + rootErrors;
|
|
8898
9031
|
console.log();
|
|
9032
|
+
warnIgnoredDomainFiles(absPath);
|
|
8899
9033
|
logInfo(`Scanned ${total} asset manifest(s) and ${ws.total} skaile.yaml file(s)`);
|
|
8900
9034
|
if (warnings > 0) logWarn(`${warnings} warning(s)`);
|
|
8901
9035
|
if (totalErrors === 0) {
|
|
@@ -9305,7 +9439,7 @@ async function bootstrapUserConfig() {
|
|
|
9305
9439
|
}
|
|
9306
9440
|
async function hydrateInitSources(resolved, created) {
|
|
9307
9441
|
try {
|
|
9308
|
-
const { ensureSourcesCloned } = await import('../ensure-sources-
|
|
9442
|
+
const { ensureSourcesCloned } = await import('../ensure-sources-Z3KKLEM6.js');
|
|
9309
9443
|
const hydrate = ensureSourcesCloned(resolved, { quiet: true });
|
|
9310
9444
|
for (const n of hydrate.cloned) created.push(`~/.skaile/cache/sources/${n}/`);
|
|
9311
9445
|
if (hydrate.failed.length > 0) {
|
|
@@ -9345,7 +9479,7 @@ function printInitSummary(resolved, projectDir, created) {
|
|
|
9345
9479
|
console.log();
|
|
9346
9480
|
}
|
|
9347
9481
|
program.command("setup").description("Interactive provider setup wizard").action(async () => {
|
|
9348
|
-
const { cmdSetup } = await import('../setup-
|
|
9482
|
+
const { cmdSetup } = await import('../setup-4BV5ZWOZ.js');
|
|
9349
9483
|
await cmdSetup([], { projectDir: process.cwd() });
|
|
9350
9484
|
});
|
|
9351
9485
|
program.addCommand(makeInstallCommand());
|
|
@@ -9419,6 +9553,13 @@ program.command("path").description("Show resolved paths (honours SKAILE_HOME an
|
|
|
9419
9553
|
console.log();
|
|
9420
9554
|
});
|
|
9421
9555
|
program.addCommand(makeCompleteCommand(program));
|
|
9422
|
-
|
|
9556
|
+
try {
|
|
9557
|
+
await program.parseAsync();
|
|
9558
|
+
} catch (err) {
|
|
9559
|
+
const { LibrarySyncError } = await import('../library/index.js');
|
|
9560
|
+
if (!(err instanceof LibrarySyncError)) throw err;
|
|
9561
|
+
logErr(err.message);
|
|
9562
|
+
process.exit(1);
|
|
9563
|
+
}
|
|
9423
9564
|
//# sourceMappingURL=index.js.map
|
|
9424
9565
|
//# sourceMappingURL=index.js.map
|