@skaile/workspaces 0.41.0 → 0.41.2
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 +52 -0
- package/dist/{asset-feeds-B3YOVIX6.js → asset-feeds-43JRFICZ.js} +7 -7
- package/dist/{asset-feeds-B3YOVIX6.js.map → asset-feeds-43JRFICZ.js.map} +1 -1
- package/dist/asset-manager/index.js +7 -7
- package/dist/asset-manager/installer.js +6 -6
- package/dist/asset-manager/renderers.js +2 -2
- package/dist/{chunk-54PBADZO.js → chunk-2JCUYKUN.js} +2 -2
- package/dist/{chunk-54PBADZO.js.map → chunk-2JCUYKUN.js.map} +1 -1
- package/dist/{chunk-HRKB2ATT.js → chunk-3CVX7ENC.js} +6 -3
- package/dist/chunk-3CVX7ENC.js.map +1 -0
- package/dist/{chunk-67MFR5LS.js → chunk-3SQYLWSD.js} +3 -3
- package/dist/{chunk-67MFR5LS.js.map → chunk-3SQYLWSD.js.map} +1 -1
- package/dist/{chunk-LCJNBABB.js → chunk-776SWGPA.js} +41 -10
- package/dist/chunk-776SWGPA.js.map +1 -0
- package/dist/{chunk-4ZDA6Q5A.js → chunk-7G6BP2QI.js} +4 -4
- package/dist/{chunk-4ZDA6Q5A.js.map → chunk-7G6BP2QI.js.map} +1 -1
- package/dist/{chunk-V2OSYOWR.js → chunk-HA4Z2CLU.js} +5 -5
- package/dist/{chunk-V2OSYOWR.js.map → chunk-HA4Z2CLU.js.map} +1 -1
- package/dist/{chunk-TRVTY5AF.js → chunk-J4RF5ABK.js} +3 -3
- package/dist/{chunk-TRVTY5AF.js.map → chunk-J4RF5ABK.js.map} +1 -1
- package/dist/{chunk-DUAB2AFV.js → chunk-JAOXG3LL.js} +3 -3
- package/dist/{chunk-DUAB2AFV.js.map → chunk-JAOXG3LL.js.map} +1 -1
- package/dist/{chunk-VIA64TYP.js → chunk-MVXXAXDW.js} +15 -15
- package/dist/chunk-MVXXAXDW.js.map +1 -0
- package/dist/{chunk-2PXSZYKV.js → chunk-NQDJQ7WB.js} +14 -3
- package/dist/chunk-NQDJQ7WB.js.map +1 -0
- package/dist/{chunk-5PGFAYN3.js → chunk-OJQPEAM6.js} +4 -4
- package/dist/{chunk-5PGFAYN3.js.map → chunk-OJQPEAM6.js.map} +1 -1
- package/dist/{chunk-IGNSNZPG.js → chunk-ON55QCTL.js} +3 -3
- package/dist/{chunk-IGNSNZPG.js.map → chunk-ON55QCTL.js.map} +1 -1
- package/dist/{chunk-HUSXT2BN.js → chunk-SSFS66YX.js} +6 -6
- package/dist/{chunk-HUSXT2BN.js.map → chunk-SSFS66YX.js.map} +1 -1
- package/dist/{chunk-VMX4DA65.js → chunk-TB342H55.js} +5 -5
- package/dist/{chunk-VMX4DA65.js.map → chunk-TB342H55.js.map} +1 -1
- package/dist/{chunk-QGDCLTK2.js → chunk-X4FCLBI7.js} +3 -3
- package/dist/{chunk-QGDCLTK2.js.map → chunk-X4FCLBI7.js.map} +1 -1
- package/dist/{chunk-NXNBX56J.js → chunk-YG3CG6QR.js} +2 -2
- package/dist/{chunk-NXNBX56J.js.map → chunk-YG3CG6QR.js.map} +1 -1
- package/dist/{chunk-SC3YNS4W.js → chunk-Z6DAVEDZ.js} +7 -7
- package/dist/chunk-Z6DAVEDZ.js.map +1 -0
- package/dist/{chunk-RVXP5KN5.js → chunk-ZJ27BHIH.js} +3 -3
- package/dist/{chunk-RVXP5KN5.js.map → chunk-ZJ27BHIH.js.map} +1 -1
- package/dist/cli/index.js +91 -70
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/src/commands/source.d.ts.map +1 -1
- package/dist/connectors/config.js +4 -4
- package/dist/connectors/index.js +5 -5
- package/dist/core/index.js +3 -3
- package/dist/core/runtime-assets.js +2 -2
- package/dist/core/src/workspace-config.d.ts.map +1 -1
- package/dist/core/workspace-config.js +1 -1
- package/dist/deploy/index.js +3 -3
- package/dist/discovery/index.js +2 -2
- package/dist/{ensure-sources-EEH3DWH5.js → ensure-sources-SIF2LFEL.js} +8 -8
- package/dist/{ensure-sources-EEH3DWH5.js.map → ensure-sources-SIF2LFEL.js.map} +1 -1
- package/dist/factory-assets/connectors/deploy.js +5 -5
- package/dist/factory-assets/connectors/devserver.js +5 -5
- package/dist/factory-assets/connectors/flow/adapter.js +5 -5
- package/dist/factory-assets/connectors/flow/engine.js +3 -3
- package/dist/factory-assets/connectors/flow/run-flow.js +6 -6
- package/dist/factory-assets/connectors/flow.js +5 -5
- package/dist/factory-assets/connectors/git.js +5 -5
- package/dist/factory-assets/connectors/gmail.js +5 -5
- package/dist/factory-assets/connectors/googledrive.js +5 -5
- package/dist/factory-assets/connectors/local.js +5 -5
- package/dist/factory-assets/connectors/mattermost.js +5 -5
- package/dist/factory-assets/connectors/memory.js +5 -5
- package/dist/factory-assets/connectors/minio.js +5 -5
- package/dist/factory-assets/connectors/postgres.js +5 -5
- package/dist/factory-assets/connectors/s3.js +5 -5
- package/dist/factory-assets/connectors/sharepoint.js +5 -5
- package/dist/factory-assets/connectors/sqlite.js +5 -5
- package/dist/factory-assets/connectors/static-server/CONNECTOR.md +2 -2
- package/dist/factory-assets/connectors/static-server/adapter.d.ts +1 -1
- package/dist/factory-assets/connectors/static-server/adapter.d.ts.map +1 -1
- package/dist/factory-assets/connectors/static-server.js +5 -5
- package/dist/factory-assets/connectors/tunnel.js +5 -5
- package/dist/factory-assets/connectors/webdav.js +5 -5
- package/dist/factory-assets/connectors/xstate-store.js +5 -5
- package/dist/factory-assets/connectors/xstate.js +5 -5
- package/dist/factory-assets/skaile.manifest.yaml +58 -0
- package/dist/{flows-ZYWYM5HR.js → flows-3MBK2PDN.js} +3 -3
- package/dist/{flows-ZYWYM5HR.js.map → flows-3MBK2PDN.js.map} +1 -1
- package/dist/library/index.js +6 -6
- package/dist/library/install.js +3 -3
- package/dist/{open-library-5M67A7BN.js → open-library-Y7QYI2UK.js} +9 -9
- package/dist/{open-library-5M67A7BN.js.map → open-library-Y7QYI2UK.js.map} +1 -1
- package/dist/{paths-RTD4IMYN.js → paths-KNLBYALO.js} +6 -6
- package/dist/{paths-RTD4IMYN.js.map → paths-KNLBYALO.js.map} +1 -1
- package/dist/{plugin-store-YEHJFGJS.js → plugin-store-CL6CTREE.js} +5 -5
- package/dist/{plugin-store-YEHJFGJS.js.map → plugin-store-CL6CTREE.js.map} +1 -1
- package/dist/runner/index.js +7 -7
- package/dist/runner/src/serve.d.ts.map +1 -1
- package/dist/sdk/asset-manager.js +7 -7
- package/dist/sdk/core.js +3 -3
- package/dist/sdk/flow.js +3 -3
- package/dist/sdk/index.js +7 -7
- package/dist/sdk/runner.js +7 -7
- package/dist/{setup-VNS4I3OF.js → setup-345XOCH3.js} +5 -5
- package/dist/{setup-VNS4I3OF.js.map → setup-345XOCH3.js.map} +1 -1
- package/dist/{store-client-GBWSRUZR.js → store-client-W3HKRE46.js} +6 -6
- package/dist/{store-client-GBWSRUZR.js.map → store-client-W3HKRE46.js.map} +1 -1
- package/dist/tui/index.js +7 -7
- package/dist/types/manifests.js +1 -1
- package/dist/types/src/manifests/mcp-server.d.ts +1 -0
- package/dist/types/src/manifests/mcp-server.d.ts.map +1 -1
- package/dist/workspace-plugin/adapters/mcp.js +1 -1
- package/dist/workspace-plugin/adapters/omp.js +3 -3
- package/dist/workspace-plugin/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-2PXSZYKV.js.map +0 -1
- package/dist/chunk-HRKB2ATT.js.map +0 -1
- package/dist/chunk-LCJNBABB.js.map +0 -1
- package/dist/chunk-SC3YNS4W.js.map +0 -1
- package/dist/chunk-VIA64TYP.js.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { factoryAssetRoots } from './chunk-
|
|
1
|
+
import { factoryAssetRoots } from './chunk-JAOXG3LL.js';
|
|
2
2
|
import fs from 'fs';
|
|
3
3
|
import os from 'os';
|
|
4
4
|
import path from 'path';
|
|
@@ -24,5 +24,5 @@ function aiResourceRoots() {
|
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
export { AI_RESOURCES, MONOREPO_ROOT, aiResourceRoots };
|
|
27
|
-
//# sourceMappingURL=chunk-
|
|
28
|
-
//# sourceMappingURL=chunk-
|
|
27
|
+
//# sourceMappingURL=chunk-ZJ27BHIH.js.map
|
|
28
|
+
//# sourceMappingURL=chunk-ZJ27BHIH.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../cli/src/paths.ts"],"names":[],"mappings":";;;;;;AAMA,IAAM,WAAW,IAAA,CAAK,OAAA,CAAQ,aAAA,CAAc,MAAA,CAAA,IAAA,CAAY,GAAG,CAAC,CAAA;AAW5D,SAAS,iBAAiB,IAAA,EAA6B;AACrD,EAAA,IAAI,GAAA,GAAM,IAAA;AACV,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,CAAA,EAAG,CAAA,EAAA,EAAK;AAC1B,IAAA,IAAI,EAAA,CAAG,WAAW,IAAA,CAAK,IAAA,CAAK,KAAK,YAAY,CAAC,GAAG,OAAO,GAAA;AACxD,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAC/B,IAAA,IAAI,WAAW,GAAA,EAAK;AACpB,IAAA,GAAA,GAAM,MAAA;AAAA,EACR;AACA,EAAA,OAAO,IAAA;AACT;AAYO,IAAM,aAAA,GAA+B,iBAAiB,QAAQ;AAc9D,IAAM,YAAA,GACX,iBAAA,EAAkB,CAAE,CAAC,CAAA,IAAK,IAAA,CAAK,IAAA,CAAK,EAAA,CAAG,OAAA,EAAQ,EAAG,SAAA,EAAW,WAAW;AAoBnE,SAAS,eAAA,GAA4B;AAC1C,EAAA,MAAM,KAAA,GAAkB,CAAC,GAAG,iBAAA,EAAmB,CAAA;AAC/C,EAAA,KAAA,CAAM,IAAA,CAAK,KAAK,IAAA,CAAK,EAAA,CAAG,SAAQ,EAAG,SAAA,EAAW,WAAW,CAAC,CAAA;AAC1D,EAAA,OAAO,CAAC,GAAG,IAAI,GAAA,CAAI,KAAK,CAAC,CAAA,CAAE,MAAA,CAAO,CAAC,CAAA,KAAM,EAAA,CAAG,UAAA,CAAW,CAAC,CAAC,CAAA;AAC3D","file":"chunk-
|
|
1
|
+
{"version":3,"sources":["../cli/src/paths.ts"],"names":[],"mappings":";;;;;;AAMA,IAAM,WAAW,IAAA,CAAK,OAAA,CAAQ,aAAA,CAAc,MAAA,CAAA,IAAA,CAAY,GAAG,CAAC,CAAA;AAW5D,SAAS,iBAAiB,IAAA,EAA6B;AACrD,EAAA,IAAI,GAAA,GAAM,IAAA;AACV,EAAA,KAAA,IAAS,CAAA,GAAI,CAAA,EAAG,CAAA,GAAI,CAAA,EAAG,CAAA,EAAA,EAAK;AAC1B,IAAA,IAAI,EAAA,CAAG,WAAW,IAAA,CAAK,IAAA,CAAK,KAAK,YAAY,CAAC,GAAG,OAAO,GAAA;AACxD,IAAA,MAAM,MAAA,GAAS,IAAA,CAAK,OAAA,CAAQ,GAAG,CAAA;AAC/B,IAAA,IAAI,WAAW,GAAA,EAAK;AACpB,IAAA,GAAA,GAAM,MAAA;AAAA,EACR;AACA,EAAA,OAAO,IAAA;AACT;AAYO,IAAM,aAAA,GAA+B,iBAAiB,QAAQ;AAc9D,IAAM,YAAA,GACX,iBAAA,EAAkB,CAAE,CAAC,CAAA,IAAK,IAAA,CAAK,IAAA,CAAK,EAAA,CAAG,OAAA,EAAQ,EAAG,SAAA,EAAW,WAAW;AAoBnE,SAAS,eAAA,GAA4B;AAC1C,EAAA,MAAM,KAAA,GAAkB,CAAC,GAAG,iBAAA,EAAmB,CAAA;AAC/C,EAAA,KAAA,CAAM,IAAA,CAAK,KAAK,IAAA,CAAK,EAAA,CAAG,SAAQ,EAAG,SAAA,EAAW,WAAW,CAAC,CAAA;AAC1D,EAAA,OAAO,CAAC,GAAG,IAAI,GAAA,CAAI,KAAK,CAAC,CAAA,CAAE,MAAA,CAAO,CAAC,CAAA,KAAM,EAAA,CAAG,UAAA,CAAW,CAAC,CAAC,CAAA;AAC3D","file":"chunk-ZJ27BHIH.js","sourcesContent":["import fs from \"node:fs\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport { fileURLToPath } from \"node:url\";\nimport { factoryAssetRoots } from \"@skaile/workspaces/core\";\n\nconst __ownDir = path.dirname(fileURLToPath(import.meta.url));\n\n/**\n * Walk up from `from` looking for the monorepo marker (`biome.json`, the\n * repo-root shared tooling config). Returns the matching directory or `null`\n * when none is found within eight levels — the latter is the typical case when\n * `@skaile/workspaces` has been installed via `npm i` without a skaile-dev\n * workspace context. Used only to gate dev-only commands (e.g.\n * `serve --compile-test`); first-party content is located via\n * {@link aiResourceRoots}, not this.\n */\nfunction findMonorepoRoot(from: string): string | null {\n let dir = from;\n for (let i = 0; i < 8; i++) {\n if (fs.existsSync(path.join(dir, \"biome.json\"))) return dir;\n const parent = path.dirname(dir);\n if (parent === dir) break;\n dir = parent;\n }\n return null;\n}\n\n/**\n * Absolute path to the monorepo root, or `null` when the CLI is running\n * outside the skaile-dev workspace (typical for `npm i -g` installs).\n *\n * Consumers that only make sense inside the workspace (e.g.\n * `skaile serve --compile-test`) MUST check for `null` and report a\n * \"monorepo-only feature\" error before proceeding.\n *\n * @docLink cli/dev-guide#paths\n */\nexport const MONOREPO_ROOT: string | null = findMonorepoRoot(__ownDir);\n\n/**\n * Default content root used by path display and the `validate` command.\n *\n * The primary first-party `factory-assets/` root resolved through the shared\n * `factoryAssetRoots()` helper — the `SKAILE_FACTORY_ASSETS_DIR` override when\n * set, else the in-repo source during dev / bundled `dist/factory-assets/` after\n * `npm i`. Falls back to `~/.skaile/libraries/` — the user-library directory\n * managed by `skaile library add` — when the package cannot be located.\n * Consumers `fs.existsSync` first and degrade to \"no skills / flows discovered\".\n *\n * @docLink cli/dev-guide#paths\n */\nexport const AI_RESOURCES: string =\n factoryAssetRoots()[0] ?? path.join(os.homedir(), \".skaile\", \"libraries\");\n\n/**\n * All content roots that skill / flow discovery should walk, in priority order,\n * filtered to those that exist on disk and de-duplicated.\n *\n * - The first-party `factory-assets/` roots from the shared `factoryAssetRoots()`\n * helper — the `SKAILE_FACTORY_ASSETS_DIR` override layer (when set) ahead of\n * the bundled tree (in-repo source in dev, `dist/factory-assets/` after\n * install). No monorepo special-case.\n * - The user-library dir `~/.skaile/libraries/`.\n *\n * Order is significant: `findSkills` / flow discovery dedupe first-root-wins, so\n * the env override shadows the bundled tree on a name clash.\n *\n * This is the discovery surface used by `findSkills`, flow discovery, and the\n * completion resolvers.\n *\n * @docLink cli/dev-guide#paths\n */\nexport function aiResourceRoots(): string[] {\n const roots: string[] = [...factoryAssetRoots()];\n roots.push(path.join(os.homedir(), \".skaile\", \"libraries\"));\n return [...new Set(roots)].filter((r) => fs.existsSync(r));\n}\n"]}
|
package/dist/cli/index.js
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { openCatalogSource, openLibraryManager, createFullRegistry, openLibrary } from '../chunk-
|
|
2
|
+
import { openCatalogSource, openLibraryManager, createFullRegistry, openLibrary } from '../chunk-7G6BP2QI.js';
|
|
3
3
|
import { logErr, S, logOk, logInfo, colorRef, logWarn, kindColorPad, kindColor, formatRelativeTime, fitWidth } from '../chunk-GYPA2Q7F.js';
|
|
4
|
-
import { getStoreConfig, storeFetch, saveStoreTokens, clearStoreTokens, isStoreAuthenticated } from '../chunk-
|
|
5
|
-
import { AI_RESOURCES, aiResourceRoots } from '../chunk-
|
|
4
|
+
import { getStoreConfig, storeFetch, saveStoreTokens, clearStoreTokens, isStoreAuthenticated } from '../chunk-J4RF5ABK.js';
|
|
5
|
+
import { AI_RESOURCES, aiResourceRoots } from '../chunk-ZJ27BHIH.js';
|
|
6
6
|
import { LocalSecretsProvider } from '../chunk-6BEGKO2Q.js';
|
|
7
|
-
import { resolveLibraryDir, LocalCatalogSource, skaileHomeDir } from '../chunk-
|
|
8
|
-
import '../chunk-
|
|
7
|
+
import { resolveLibraryDir, LocalCatalogSource, skaileHomeDir } from '../chunk-OJQPEAM6.js';
|
|
8
|
+
import '../chunk-ON55QCTL.js';
|
|
9
9
|
import '../chunk-JXT46QFC.js';
|
|
10
10
|
import '../chunk-UKJMQZV6.js';
|
|
11
11
|
import '../chunk-R7FOF242.js';
|
|
12
|
-
import { runFlow, resumeFlow } from '../chunk-
|
|
12
|
+
import { runFlow, resumeFlow } from '../chunk-HA4Z2CLU.js';
|
|
13
13
|
import '../chunk-4R6DROGN.js';
|
|
14
14
|
import { validateFlowVersions, parseSkillFrontmatter } from '../chunk-GXC3TYMQ.js';
|
|
15
|
-
import { runAgentChat, loadSessionById, loadSession, listSessions, setCurrentSession, deleteSession, clearSession, loadAgentManifest, compileComposition, MarkdownStreamer, resolveMixin } from '../chunk-
|
|
16
|
-
import { buildClaudePluginFiles } from '../chunk-
|
|
15
|
+
import { runAgentChat, loadSessionById, loadSession, listSessions, setCurrentSession, deleteSession, clearSession, loadAgentManifest, compileComposition, MarkdownStreamer, resolveMixin } from '../chunk-776SWGPA.js';
|
|
16
|
+
import { buildClaudePluginFiles } from '../chunk-YG3CG6QR.js';
|
|
17
17
|
import '../chunk-X5YPJV4N.js';
|
|
18
18
|
import '../chunk-O7SG5PC2.js';
|
|
19
19
|
import '../chunk-7QBNJTTQ.js';
|
|
@@ -28,20 +28,20 @@ import '../chunk-BMQKMOQY.js';
|
|
|
28
28
|
import '../chunk-GAH4YRCI.js';
|
|
29
29
|
import '../chunk-KM6DCR7A.js';
|
|
30
30
|
import '../chunk-LV2HPH3C.js';
|
|
31
|
-
import '../chunk-
|
|
31
|
+
import '../chunk-Z6DAVEDZ.js';
|
|
32
32
|
import '../chunk-OVRSNIKJ.js';
|
|
33
|
-
import '../chunk-
|
|
33
|
+
import '../chunk-X4FCLBI7.js';
|
|
34
34
|
import '../chunk-C5UK3JK7.js';
|
|
35
35
|
import '../chunk-6E6PKKAD.js';
|
|
36
36
|
import { loadFlow, loadAllFlows } from '../chunk-X46FY45B.js';
|
|
37
37
|
import '../chunk-DEYYRFQU.js';
|
|
38
38
|
import '../chunk-IFGTRL2I.js';
|
|
39
|
-
import { AssetManager } from '../chunk-
|
|
40
|
-
import '../chunk-
|
|
41
|
-
import { readLock, resolveSettings, globalSettingsPath, projectSettingsPath, loadSettings, saveSettings, portableSpawn, portableSpawnSync, WorkspaceYamlEditor } from '../chunk-
|
|
39
|
+
import { AssetManager } from '../chunk-SSFS66YX.js';
|
|
40
|
+
import '../chunk-TB342H55.js';
|
|
41
|
+
import { readLock, resolveSettings, globalSettingsPath, projectSettingsPath, loadSettings, saveSettings, portableSpawn, portableSpawnSync, WorkspaceYamlEditor } from '../chunk-MVXXAXDW.js';
|
|
42
42
|
import { assetSearchDirs, detectDomains } from '../chunk-ZAP2BDHG.js';
|
|
43
|
-
import '../chunk-
|
|
44
|
-
import { resolveAgentDir, findWorkspaceRoot, workspaceConfigFilename, resolveSkWorkspaceConfig } from '../chunk-
|
|
43
|
+
import '../chunk-JAOXG3LL.js';
|
|
44
|
+
import { resolveAgentDir, findWorkspaceRoot, workspaceConfigFilename, resolveSkWorkspaceConfig } from '../chunk-NQDJQ7WB.js';
|
|
45
45
|
import { SKAILE_MANIFEST_FILENAME, decodeSkaileManifest } from '../chunk-DZCK7GRW.js';
|
|
46
46
|
import { parseFrontmatter } from '../chunk-B5PEERRZ.js';
|
|
47
47
|
import { ASSET_KINDS, parseAssetRef, isValidAssetName, ASSET_NAME_HINT, assetRefToStr } from '../chunk-GEEW6SY2.js';
|
|
@@ -51,8 +51,8 @@ import { DRIVER_DEFAULTS } from '../chunk-K5GBV4SA.js';
|
|
|
51
51
|
import { openSqlite } from '../chunk-JB35MVBN.js';
|
|
52
52
|
import '../chunk-KTBKW2FI.js';
|
|
53
53
|
import '../chunk-UQ6LFBPZ.js';
|
|
54
|
-
import '../chunk-
|
|
55
|
-
import '../chunk-
|
|
54
|
+
import '../chunk-3SQYLWSD.js';
|
|
55
|
+
import '../chunk-3CVX7ENC.js';
|
|
56
56
|
import '../chunk-CGYEHQOX.js';
|
|
57
57
|
import '../chunk-NSBPE2FW.js';
|
|
58
58
|
import * as fs11 from 'fs';
|
|
@@ -321,7 +321,7 @@ function printLocalEntries(entries) {
|
|
|
321
321
|
}
|
|
322
322
|
async function searchStore(query, kind, opts) {
|
|
323
323
|
try {
|
|
324
|
-
const { getStoreConfig: getStoreConfig2, storeFetch: storeFetch2 } = await import('../store-client-
|
|
324
|
+
const { getStoreConfig: getStoreConfig2, storeFetch: storeFetch2 } = await import('../store-client-W3HKRE46.js');
|
|
325
325
|
const config = getStoreConfig2();
|
|
326
326
|
const params = {};
|
|
327
327
|
if (query) params.q = query;
|
|
@@ -509,7 +509,7 @@ function makeCatalogCommand() {
|
|
|
509
509
|
return catalog;
|
|
510
510
|
}
|
|
511
511
|
async function runLocalCatalogTest(projectDir) {
|
|
512
|
-
const { resolveCatalogSource } = await import('../open-library-
|
|
512
|
+
const { resolveCatalogSource } = await import('../open-library-Y7QYI2UK.js');
|
|
513
513
|
let resolved;
|
|
514
514
|
try {
|
|
515
515
|
resolved = await resolveCatalogSource({ projectDir });
|
|
@@ -760,13 +760,13 @@ function collectWorkspaceDefaults(projectDir) {
|
|
|
760
760
|
const wsDefaults = {};
|
|
761
761
|
try {
|
|
762
762
|
const ws = resolveSkWorkspaceConfig(projectDir);
|
|
763
|
-
const
|
|
764
|
-
if (
|
|
765
|
-
if (
|
|
766
|
-
if (
|
|
767
|
-
if (
|
|
768
|
-
if (
|
|
769
|
-
if (
|
|
763
|
+
const p8 = ws.agent_config?.default ?? {};
|
|
764
|
+
if (p8.driver) wsDefaults.driver = p8.driver;
|
|
765
|
+
if (p8.provider) wsDefaults.provider = p8.provider;
|
|
766
|
+
if (p8.model) wsDefaults.model = p8.model;
|
|
767
|
+
if (p8.skills_dir) wsDefaults.skills_dir = p8.skills_dir;
|
|
768
|
+
if (p8.agents_dir) wsDefaults.agents_dir = p8.agents_dir;
|
|
769
|
+
if (p8.prompts_dir) wsDefaults.prompts_dir = p8.prompts_dir;
|
|
770
770
|
} catch {
|
|
771
771
|
}
|
|
772
772
|
return wsDefaults;
|
|
@@ -1499,7 +1499,7 @@ async function ensureTargetsRegistered(projectDir) {
|
|
|
1499
1499
|
const { resolveSkWorkspaceConfig: resolveSkWorkspaceConfig2 } = await import('../core/index.js');
|
|
1500
1500
|
const config = resolveSkWorkspaceConfig2(projectDir);
|
|
1501
1501
|
if (config.plugins && config.plugins.length > 0) {
|
|
1502
|
-
const { ensurePluginsLoaded } = await import('../plugin-store-
|
|
1502
|
+
const { ensurePluginsLoaded } = await import('../plugin-store-CL6CTREE.js');
|
|
1503
1503
|
const result = await ensurePluginsLoaded(projectDir, config.plugins, pluginRegistry);
|
|
1504
1504
|
for (const f of result.failed) logWarn(f.error);
|
|
1505
1505
|
}
|
|
@@ -1708,10 +1708,10 @@ var MCP_SERVER_ENTRY = {
|
|
|
1708
1708
|
function pluginDir(projectDir) {
|
|
1709
1709
|
return path12__default.join(projectDir, ".claude", "plugins", "skaile");
|
|
1710
1710
|
}
|
|
1711
|
-
async function readJsonStrict(
|
|
1711
|
+
async function readJsonStrict(p8) {
|
|
1712
1712
|
let raw;
|
|
1713
1713
|
try {
|
|
1714
|
-
raw = await fs5.readFile(
|
|
1714
|
+
raw = await fs5.readFile(p8, "utf-8");
|
|
1715
1715
|
} catch {
|
|
1716
1716
|
return null;
|
|
1717
1717
|
}
|
|
@@ -1719,13 +1719,13 @@ async function readJsonStrict(p7) {
|
|
|
1719
1719
|
return JSON.parse(raw);
|
|
1720
1720
|
} catch (e) {
|
|
1721
1721
|
throw new Error(
|
|
1722
|
-
`cannot parse ${
|
|
1722
|
+
`cannot parse ${p8}: ${e instanceof Error ? e.message : String(e)}; please fix or remove`
|
|
1723
1723
|
);
|
|
1724
1724
|
}
|
|
1725
1725
|
}
|
|
1726
|
-
async function writeJson(
|
|
1727
|
-
await fs5.mkdir(path12__default.dirname(
|
|
1728
|
-
await fs5.writeFile(
|
|
1726
|
+
async function writeJson(p8, value) {
|
|
1727
|
+
await fs5.mkdir(path12__default.dirname(p8), { recursive: true });
|
|
1728
|
+
await fs5.writeFile(p8, `${JSON.stringify(value, null, 2)}
|
|
1729
1729
|
`);
|
|
1730
1730
|
}
|
|
1731
1731
|
async function copyDir(src, dest) {
|
|
@@ -1780,7 +1780,7 @@ async function uninstall(projectDir) {
|
|
|
1780
1780
|
let changed = false;
|
|
1781
1781
|
const settings = await readJsonStrict(settingsPath);
|
|
1782
1782
|
if (settings && Array.isArray(settings.plugins)) {
|
|
1783
|
-
const next = settings.plugins.filter((
|
|
1783
|
+
const next = settings.plugins.filter((p8) => p8 !== dir);
|
|
1784
1784
|
if (next.length !== settings.plugins.length) {
|
|
1785
1785
|
changed = true;
|
|
1786
1786
|
const updated = { ...settings, plugins: next };
|
|
@@ -1827,7 +1827,7 @@ async function enable(projectDir) {
|
|
|
1827
1827
|
const settings = await readJsonStrict(settingsPath) ?? {};
|
|
1828
1828
|
if (detected.method === "plugin") {
|
|
1829
1829
|
const disabled2 = settings.disabledPlugins ?? [];
|
|
1830
|
-
const next2 = disabled2.filter((
|
|
1830
|
+
const next2 = disabled2.filter((p8) => p8 !== detected.pluginPath);
|
|
1831
1831
|
if (next2.length === disabled2.length) return { changed: false };
|
|
1832
1832
|
const updated2 = { ...settings, disabledPlugins: next2 };
|
|
1833
1833
|
if (next2.length === 0) delete updated2.disabledPlugins;
|
|
@@ -1908,10 +1908,10 @@ function buildEntry(projectDir) {
|
|
|
1908
1908
|
env: { SKAILE_PROJECT_DIR: projectDir }
|
|
1909
1909
|
};
|
|
1910
1910
|
}
|
|
1911
|
-
async function readConfig(
|
|
1911
|
+
async function readConfig(p8) {
|
|
1912
1912
|
let raw;
|
|
1913
1913
|
try {
|
|
1914
|
-
raw = await fs5.readFile(
|
|
1914
|
+
raw = await fs5.readFile(p8, "utf-8");
|
|
1915
1915
|
} catch {
|
|
1916
1916
|
return null;
|
|
1917
1917
|
}
|
|
@@ -1919,41 +1919,41 @@ async function readConfig(p7) {
|
|
|
1919
1919
|
return parse$1(raw);
|
|
1920
1920
|
} catch (e) {
|
|
1921
1921
|
throw new Error(
|
|
1922
|
-
`cannot parse ${
|
|
1922
|
+
`cannot parse ${p8}: ${e instanceof Error ? e.message : String(e)}; please fix or remove`
|
|
1923
1923
|
);
|
|
1924
1924
|
}
|
|
1925
1925
|
}
|
|
1926
|
-
async function writeConfig(
|
|
1927
|
-
await fs5.mkdir(path12__default.dirname(
|
|
1926
|
+
async function writeConfig(p8, value) {
|
|
1927
|
+
await fs5.mkdir(path12__default.dirname(p8), { recursive: true });
|
|
1928
1928
|
const cleaned = {};
|
|
1929
1929
|
for (const [k, v] of Object.entries(value)) {
|
|
1930
1930
|
if (v === void 0) continue;
|
|
1931
1931
|
cleaned[k] = v;
|
|
1932
1932
|
}
|
|
1933
|
-
await fs5.writeFile(
|
|
1933
|
+
await fs5.writeFile(p8, stringify(cleaned));
|
|
1934
1934
|
}
|
|
1935
1935
|
function configPath(projectDir) {
|
|
1936
1936
|
return path12__default.join(projectDir, ".codex", "config.toml");
|
|
1937
1937
|
}
|
|
1938
1938
|
async function install2(projectDir) {
|
|
1939
|
-
const
|
|
1940
|
-
const cfg = await readConfig(
|
|
1939
|
+
const p8 = configPath(projectDir);
|
|
1940
|
+
const cfg = await readConfig(p8) ?? {};
|
|
1941
1941
|
const next = buildEntry(projectDir);
|
|
1942
1942
|
const servers = { ...cfg.mcp_servers ?? {} };
|
|
1943
1943
|
const previous = servers[SKAILE_MCP_NAME2];
|
|
1944
1944
|
const matches = previous && JSON.stringify(previous) === JSON.stringify(next);
|
|
1945
1945
|
let warning;
|
|
1946
1946
|
if (previous && !matches) {
|
|
1947
|
-
warning = `overwrote existing ${SKAILE_MCP_NAME2} entry in ${path12__default.relative(projectDir,
|
|
1947
|
+
warning = `overwrote existing ${SKAILE_MCP_NAME2} entry in ${path12__default.relative(projectDir, p8)}`;
|
|
1948
1948
|
}
|
|
1949
1949
|
if (matches) return { changed: false, method: "toml" };
|
|
1950
1950
|
servers[SKAILE_MCP_NAME2] = next;
|
|
1951
|
-
await writeConfig(
|
|
1951
|
+
await writeConfig(p8, { ...cfg, mcp_servers: servers });
|
|
1952
1952
|
return { changed: true, method: "toml", warning };
|
|
1953
1953
|
}
|
|
1954
1954
|
async function uninstall2(projectDir) {
|
|
1955
|
-
const
|
|
1956
|
-
const cfg = await readConfig(
|
|
1955
|
+
const p8 = configPath(projectDir);
|
|
1956
|
+
const cfg = await readConfig(p8);
|
|
1957
1957
|
if (!cfg?.mcp_servers || !(SKAILE_MCP_NAME2 in cfg.mcp_servers)) {
|
|
1958
1958
|
return { changed: false };
|
|
1959
1959
|
}
|
|
@@ -1961,15 +1961,15 @@ async function uninstall2(projectDir) {
|
|
|
1961
1961
|
const updated = { ...cfg, mcp_servers: rest };
|
|
1962
1962
|
if (Object.keys(rest).length === 0) delete updated.mcp_servers;
|
|
1963
1963
|
if (Object.keys(updated).length === 0) {
|
|
1964
|
-
await fs5.unlink(
|
|
1964
|
+
await fs5.unlink(p8);
|
|
1965
1965
|
} else {
|
|
1966
|
-
await writeConfig(
|
|
1966
|
+
await writeConfig(p8, updated);
|
|
1967
1967
|
}
|
|
1968
1968
|
return { changed: true };
|
|
1969
1969
|
}
|
|
1970
1970
|
async function status2(projectDir) {
|
|
1971
|
-
const
|
|
1972
|
-
const cfg = await readConfig(
|
|
1971
|
+
const p8 = configPath(projectDir);
|
|
1972
|
+
const cfg = await readConfig(p8);
|
|
1973
1973
|
const installed = !!(cfg?.mcp_servers && SKAILE_MCP_NAME2 in cfg.mcp_servers);
|
|
1974
1974
|
if (!installed) {
|
|
1975
1975
|
return {
|
|
@@ -1985,7 +1985,7 @@ async function status2(projectDir) {
|
|
|
1985
1985
|
installed: "yes",
|
|
1986
1986
|
enabled: "n/a",
|
|
1987
1987
|
method: "mcp",
|
|
1988
|
-
location: path12__default.relative(projectDir,
|
|
1988
|
+
location: path12__default.relative(projectDir, p8)
|
|
1989
1989
|
};
|
|
1990
1990
|
}
|
|
1991
1991
|
async function install3(projectDir) {
|
|
@@ -2202,7 +2202,7 @@ function printStatusTable(rows) {
|
|
|
2202
2202
|
const widths = cols.map(
|
|
2203
2203
|
(c) => Math.max(c.header.length, ...rows.map((r) => String(r[c.key] ?? "").length))
|
|
2204
2204
|
);
|
|
2205
|
-
const fmtRow = (parts) => parts.map((
|
|
2205
|
+
const fmtRow = (parts) => parts.map((p8, i) => p8.padEnd(widths[i] ?? p8.length)).join(" ");
|
|
2206
2206
|
console.log();
|
|
2207
2207
|
console.log(` ${S.heading(fmtRow(cols.map((c) => c.header)))}`);
|
|
2208
2208
|
for (const r of rows) {
|
|
@@ -3011,7 +3011,7 @@ function actOnHeader(row, action3) {
|
|
|
3011
3011
|
return row.type === "domain-header" || row.type === "domain-info";
|
|
3012
3012
|
}
|
|
3013
3013
|
async function loadAssets() {
|
|
3014
|
-
const { gatherAssetFeeds } = await import('../asset-feeds-
|
|
3014
|
+
const { gatherAssetFeeds } = await import('../asset-feeds-43JRFICZ.js');
|
|
3015
3015
|
const { entries, domains, notes } = await gatherAssetFeeds(am, am.projectDir);
|
|
3016
3016
|
if (notes.length > 0) {
|
|
3017
3017
|
state.message = notes.map((n) => `[${n.feed}] ${n.message}`).join(" \u2022 ");
|
|
@@ -3109,7 +3109,7 @@ function reconcileCollapsedSets(rows) {
|
|
|
3109
3109
|
async function loadSourcesAndLibraries() {
|
|
3110
3110
|
try {
|
|
3111
3111
|
const [{ openLibraryManager: openLibraryManager2 }, { skaileHomeDir: skaileHomeDir2 }] = await Promise.all([
|
|
3112
|
-
import('../open-library-
|
|
3112
|
+
import('../open-library-Y7QYI2UK.js'),
|
|
3113
3113
|
import('../library/index.js')
|
|
3114
3114
|
]);
|
|
3115
3115
|
const { manager, library, close } = await openLibraryManager2();
|
|
@@ -3974,7 +3974,7 @@ function action2(fn) {
|
|
|
3974
3974
|
};
|
|
3975
3975
|
}
|
|
3976
3976
|
async function reconcileAndReport(projectDir, plugins) {
|
|
3977
|
-
const { reconcilePlugins } = await import('../plugin-store-
|
|
3977
|
+
const { reconcilePlugins } = await import('../plugin-store-CL6CTREE.js');
|
|
3978
3978
|
if (plugins.length === 0) {
|
|
3979
3979
|
logInfo("No plugins declared \u2014 nothing to reconcile.");
|
|
3980
3980
|
return;
|
|
@@ -3990,7 +3990,7 @@ async function reconcileAndReport(projectDir, plugins) {
|
|
|
3990
3990
|
async function runInstall2(spec, opts) {
|
|
3991
3991
|
const projectDir = path12__default.resolve(opts.projectDir);
|
|
3992
3992
|
const { WorkspaceYamlEditor: WorkspaceYamlEditor2 } = await import('../core/index.js');
|
|
3993
|
-
const { specName } = await import('../plugin-store-
|
|
3993
|
+
const { specName } = await import('../plugin-store-CL6CTREE.js');
|
|
3994
3994
|
const yamlPath = path12__default.join(projectDir, "skaile.yaml");
|
|
3995
3995
|
const editor = WorkspaceYamlEditor2.load(yamlPath);
|
|
3996
3996
|
const replaced = editor.addPlugin(spec, specName);
|
|
@@ -4002,7 +4002,7 @@ async function runInstall2(spec, opts) {
|
|
|
4002
4002
|
async function runRemove(name, opts) {
|
|
4003
4003
|
const projectDir = path12__default.resolve(opts.projectDir);
|
|
4004
4004
|
const { WorkspaceYamlEditor: WorkspaceYamlEditor2 } = await import('../core/index.js');
|
|
4005
|
-
const { specName } = await import('../plugin-store-
|
|
4005
|
+
const { specName } = await import('../plugin-store-CL6CTREE.js');
|
|
4006
4006
|
const yamlPath = path12__default.join(projectDir, "skaile.yaml");
|
|
4007
4007
|
const editor = WorkspaceYamlEditor2.load(yamlPath);
|
|
4008
4008
|
const removed = editor.removePlugin(name, specName);
|
|
@@ -4030,7 +4030,7 @@ async function runList(opts) {
|
|
|
4030
4030
|
const registry = createPluginRegistry();
|
|
4031
4031
|
if (declared.length > 0) {
|
|
4032
4032
|
try {
|
|
4033
|
-
const { loadPlugins } = await import('../plugin-store-
|
|
4033
|
+
const { loadPlugins } = await import('../plugin-store-CL6CTREE.js');
|
|
4034
4034
|
const result = await loadPlugins(projectDir, declared, registry);
|
|
4035
4035
|
for (const f of result.failed) logWarn(f.error);
|
|
4036
4036
|
} catch (err) {
|
|
@@ -4262,7 +4262,7 @@ async function runRefInstall(ref, opts) {
|
|
|
4262
4262
|
const spinner5 = p5.spinner();
|
|
4263
4263
|
spinner5.start(`Installing ${ref}`);
|
|
4264
4264
|
try {
|
|
4265
|
-
const { openCatalogSource: openCatalogSource2, openLibrary: openLibrary2 } = await import('../open-library-
|
|
4265
|
+
const { openCatalogSource: openCatalogSource2, openLibrary: openLibrary2 } = await import('../open-library-Y7QYI2UK.js');
|
|
4266
4266
|
const catalog = await openCatalogSource2({ projectDir: path12__default.resolve(opts.projectDir) });
|
|
4267
4267
|
if (!supportsInstallManifest(catalog)) {
|
|
4268
4268
|
throw new Error(
|
|
@@ -4294,7 +4294,7 @@ async function runRefInstall(ref, opts) {
|
|
|
4294
4294
|
async function runYamlInstall(opts) {
|
|
4295
4295
|
const projectDir = path12__default.resolve(opts.projectDir);
|
|
4296
4296
|
try {
|
|
4297
|
-
const { ensureSourcesCloned } = await import('../ensure-sources-
|
|
4297
|
+
const { ensureSourcesCloned } = await import('../ensure-sources-SIF2LFEL.js');
|
|
4298
4298
|
const hydrate = ensureSourcesCloned(projectDir, { quiet: true });
|
|
4299
4299
|
if (hydrate.cloned.length > 0) {
|
|
4300
4300
|
logOk(`Cloned source(s): ${hydrate.cloned.join(", ")}`);
|
|
@@ -4731,7 +4731,7 @@ async function ensurePluginsLoadedForServe(projectDir) {
|
|
|
4731
4731
|
const { resolveSkWorkspaceConfig: resolveSkWorkspaceConfig2 } = await import('../core/index.js');
|
|
4732
4732
|
const config = resolveSkWorkspaceConfig2(projectDir);
|
|
4733
4733
|
if (!config.plugins || config.plugins.length === 0) return;
|
|
4734
|
-
const { ensurePluginsLoaded } = await import('../plugin-store-
|
|
4734
|
+
const { ensurePluginsLoaded } = await import('../plugin-store-CL6CTREE.js');
|
|
4735
4735
|
const { pluginRegistry } = await import('../plugin-registry/index.js');
|
|
4736
4736
|
const result = await ensurePluginsLoaded(projectDir, config.plugins, pluginRegistry);
|
|
4737
4737
|
if (result.loaded.length > 0) {
|
|
@@ -4752,7 +4752,7 @@ async function runCompileTest(opts) {
|
|
|
4752
4752
|
const { unlinkSync, existsSync: existsSync12 } = await import('fs');
|
|
4753
4753
|
const { spawn } = await import('child_process');
|
|
4754
4754
|
const { portableSpawnSync: portableSpawnSync2 } = await import('../core/index.js');
|
|
4755
|
-
const { MONOREPO_ROOT } = await import('../paths-
|
|
4755
|
+
const { MONOREPO_ROOT } = await import('../paths-KNLBYALO.js');
|
|
4756
4756
|
if (MONOREPO_ROOT === null) {
|
|
4757
4757
|
logErr2("--compile-test is only available inside the skaile-dev workspace.");
|
|
4758
4758
|
logInfo2("Run it from a checkout of skaile-ai/skaile-dev (the monorepo shell).");
|
|
@@ -5770,14 +5770,35 @@ function makeSourceCommand() {
|
|
|
5770
5770
|
opts.purge ? `Removed source "${slug}" and purged its clone.` : `Removed source "${slug}" from skaile.yaml (clone left in ~/.skaile/sources/).`
|
|
5771
5771
|
);
|
|
5772
5772
|
});
|
|
5773
|
-
cmd.command("sync [name]").description("Pull upstream changes and refresh the manifest cache").option("--dev", "Also index dev-only assets under each source's dev_paths", false).action(async (key, opts) => {
|
|
5773
|
+
cmd.command("sync [name]").description("Pull upstream changes and refresh the manifest cache").option("--dev", "Also index dev-only assets under each source's dev_paths", false).option("--all", "Sync every source without prompting", false).action(async (key, opts) => {
|
|
5774
5774
|
const yamlPath = requireProjectYamlPath();
|
|
5775
|
-
const
|
|
5776
|
-
|
|
5777
|
-
|
|
5778
|
-
logInfo(key ? `No source matching "${key}".` : "No sources in skaile.yaml.");
|
|
5775
|
+
const sources = readProjectSources(yamlPath);
|
|
5776
|
+
if (sources.length === 0) {
|
|
5777
|
+
logInfo("No sources in skaile.yaml.");
|
|
5779
5778
|
return;
|
|
5780
5779
|
}
|
|
5780
|
+
let targets;
|
|
5781
|
+
if (key) {
|
|
5782
|
+
targets = sources.filter((s) => sourceMatchesKey(s, key));
|
|
5783
|
+
if (targets.length === 0) {
|
|
5784
|
+
logInfo(`No source matching "${key}".`);
|
|
5785
|
+
return;
|
|
5786
|
+
}
|
|
5787
|
+
} else if (opts.all || sources.length === 1 || !process.stdin.isTTY) {
|
|
5788
|
+
targets = sources;
|
|
5789
|
+
} else {
|
|
5790
|
+
const selected = await p5.multiselect({
|
|
5791
|
+
message: "Select sources to sync",
|
|
5792
|
+
options: sources.map((s) => ({ value: s.url, label: deriveSlug(s.url), hint: s.url })),
|
|
5793
|
+
required: true
|
|
5794
|
+
});
|
|
5795
|
+
if (p5.isCancel(selected)) {
|
|
5796
|
+
p5.cancel("Cancelled.");
|
|
5797
|
+
return;
|
|
5798
|
+
}
|
|
5799
|
+
const picked = new Set(selected);
|
|
5800
|
+
targets = sources.filter((s) => picked.has(s.url));
|
|
5801
|
+
}
|
|
5781
5802
|
for (const entry of targets) {
|
|
5782
5803
|
const slug = deriveSlug(entry.url);
|
|
5783
5804
|
const dest = sourceClonePath(slug);
|
|
@@ -6827,7 +6848,7 @@ async function bootstrapUserConfig() {
|
|
|
6827
6848
|
}
|
|
6828
6849
|
async function hydrateInitSources(resolved, created) {
|
|
6829
6850
|
try {
|
|
6830
|
-
const { ensureSourcesCloned } = await import('../ensure-sources-
|
|
6851
|
+
const { ensureSourcesCloned } = await import('../ensure-sources-SIF2LFEL.js');
|
|
6831
6852
|
const hydrate = ensureSourcesCloned(resolved, { quiet: true });
|
|
6832
6853
|
for (const n of hydrate.cloned) created.push(`~/.skaile/sources/${n}/`);
|
|
6833
6854
|
if (hydrate.failed.length > 0) {
|
|
@@ -6855,7 +6876,7 @@ function printInitSummary(resolved, projectDir, created) {
|
|
|
6855
6876
|
console.log();
|
|
6856
6877
|
}
|
|
6857
6878
|
program.command("setup").description("Interactive provider setup wizard").action(async () => {
|
|
6858
|
-
const { cmdSetup } = await import('../setup-
|
|
6879
|
+
const { cmdSetup } = await import('../setup-345XOCH3.js');
|
|
6859
6880
|
await cmdSetup([], { projectDir: process.cwd() });
|
|
6860
6881
|
});
|
|
6861
6882
|
program.addCommand(makeInstallCommand());
|