@skaile/workspaces 0.24.0 → 0.25.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 +53 -0
- package/dist/{asset-feeds-WKIKSZ6Z.js → asset-feeds-77KLWCBP.js} +9 -9
- package/dist/{asset-feeds-WKIKSZ6Z.js.map → asset-feeds-77KLWCBP.js.map} +1 -1
- package/dist/asset-manager/index.js +7 -7
- package/dist/asset-manager/installer.js +6 -6
- package/dist/base-assets/connectors/deploy.js +7 -7
- package/dist/base-assets/connectors/devserver.js +7 -7
- package/dist/base-assets/connectors/flow/adapter.js +7 -7
- package/dist/base-assets/connectors/flow/run-flow.js +8 -8
- package/dist/base-assets/connectors/flow.js +7 -7
- package/dist/base-assets/connectors/git.js +7 -7
- package/dist/base-assets/connectors/gmail.js +7 -7
- package/dist/base-assets/connectors/googledrive.js +7 -7
- package/dist/base-assets/connectors/local.js +7 -7
- package/dist/base-assets/connectors/mattermost.js +7 -7
- package/dist/base-assets/connectors/memory.js +7 -7
- package/dist/base-assets/connectors/minio.js +7 -7
- package/dist/base-assets/connectors/postgres.js +7 -7
- package/dist/base-assets/connectors/s3.js +7 -7
- package/dist/base-assets/connectors/sharepoint.js +7 -7
- package/dist/base-assets/connectors/sqlite.js +7 -7
- package/dist/base-assets/connectors/static-server.js +7 -7
- package/dist/base-assets/connectors/tunnel.js +7 -7
- package/dist/base-assets/connectors/webdav.js +7 -7
- package/dist/base-assets/connectors/xstate-store.js +7 -7
- package/dist/base-assets/connectors/xstate.js +7 -7
- package/dist/{chunk-542K7SR6.js → chunk-3QTZWPGH.js} +36 -7
- package/dist/chunk-3QTZWPGH.js.map +1 -0
- package/dist/{chunk-46COM7M5.js → chunk-4FADEVBN.js} +4 -4
- package/dist/{chunk-46COM7M5.js.map → chunk-4FADEVBN.js.map} +1 -1
- package/dist/{chunk-AFLH7B64.js → chunk-4FJE6BI6.js} +3 -3
- package/dist/{chunk-AFLH7B64.js.map → chunk-4FJE6BI6.js.map} +1 -1
- package/dist/{chunk-J2TITSXF.js → chunk-4QVFQEY2.js} +2 -2
- package/dist/{chunk-J2TITSXF.js.map → chunk-4QVFQEY2.js.map} +1 -1
- package/dist/{chunk-N6TA6RSH.js → chunk-B4ZXBH57.js} +7 -7
- package/dist/{chunk-N6TA6RSH.js.map → chunk-B4ZXBH57.js.map} +1 -1
- package/dist/{chunk-JQBHCJ6N.js → chunk-BJWUSHC4.js} +317 -110
- package/dist/chunk-BJWUSHC4.js.map +1 -0
- package/dist/{chunk-2F3RUZXC.js → chunk-DCAWIRD6.js} +15 -6
- package/dist/chunk-DCAWIRD6.js.map +1 -0
- package/dist/{chunk-OYRW5RCM.js → chunk-FJFHJBGS.js} +5 -5
- package/dist/{chunk-OYRW5RCM.js.map → chunk-FJFHJBGS.js.map} +1 -1
- package/dist/{chunk-DH4N5AW4.js → chunk-GL45UNVS.js} +3 -3
- package/dist/{chunk-DH4N5AW4.js.map → chunk-GL45UNVS.js.map} +1 -1
- package/dist/{chunk-LJ52ZKIU.js → chunk-KT3CK26V.js} +3 -3
- package/dist/{chunk-LJ52ZKIU.js.map → chunk-KT3CK26V.js.map} +1 -1
- package/dist/{chunk-2RFOFHSM.js → chunk-QXC62DOF.js} +4 -4
- package/dist/{chunk-2RFOFHSM.js.map → chunk-QXC62DOF.js.map} +1 -1
- package/dist/{chunk-ODPII24X.js → chunk-SETTLPBD.js} +3 -3
- package/dist/{chunk-ODPII24X.js.map → chunk-SETTLPBD.js.map} +1 -1
- package/dist/{chunk-5ESCS2OS.js → chunk-UD4ZLXGS.js} +4 -4
- package/dist/{chunk-5ESCS2OS.js.map → chunk-UD4ZLXGS.js.map} +1 -1
- package/dist/{chunk-YX3UWPJ5.js → chunk-WIAHJOMG.js} +19 -49
- package/dist/chunk-WIAHJOMG.js.map +1 -0
- package/dist/{chunk-HIIARTRZ.js → chunk-XMP6XTMF.js} +4 -4
- package/dist/{chunk-HIIARTRZ.js.map → chunk-XMP6XTMF.js.map} +1 -1
- package/dist/{chunk-Z3M5K67G.js → chunk-XVL22AWE.js} +3 -3
- package/dist/{chunk-Z3M5K67G.js.map → chunk-XVL22AWE.js.map} +1 -1
- package/dist/cli/index.js +160 -46
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/src/commands/project.d.ts.map +1 -1
- package/dist/cli/src/commands/validate.d.ts.map +1 -1
- package/dist/connectors/config.js +6 -6
- package/dist/connectors/index.js +7 -7
- package/dist/core/index.js +5 -5
- package/dist/core/manifest.js +2 -2
- package/dist/core/models.js +1 -1
- package/dist/core/runtime-assets.js +4 -4
- package/dist/core/src/index.d.ts +2 -2
- package/dist/core/src/index.d.ts.map +1 -1
- package/dist/core/src/models.d.ts +10 -3
- package/dist/core/src/models.d.ts.map +1 -1
- package/dist/core/src/workspace-config.d.ts +21 -0
- package/dist/core/src/workspace-config.d.ts.map +1 -1
- package/dist/core/workspace-config.js +3 -3
- package/dist/deploy/index.js +5 -5
- package/dist/discovery/index.js +3 -3
- package/dist/{ensure-sources-OJUBGX6Z.js → ensure-sources-7MOOKY3K.js} +9 -9
- package/dist/{ensure-sources-OJUBGX6Z.js.map → ensure-sources-7MOOKY3K.js.map} +1 -1
- package/dist/library/index.js +12 -4
- package/dist/library/src/install/install-from-manifest.d.ts.map +1 -1
- package/dist/open-library-GW7DWWNZ.js +21 -0
- package/dist/{open-library-67FSSQWE.js.map → open-library-GW7DWWNZ.js.map} +1 -1
- package/dist/{plugin-store-IZ5SCRAV.js → plugin-store-R32NH7JE.js} +7 -7
- package/dist/{plugin-store-IZ5SCRAV.js.map → plugin-store-R32NH7JE.js.map} +1 -1
- package/dist/runner/index.js +9 -9
- package/dist/runner/src/external-mcp.d.ts +112 -0
- package/dist/runner/src/external-mcp.d.ts.map +1 -0
- package/dist/runner/src/resources.d.ts +9 -1
- package/dist/runner/src/resources.d.ts.map +1 -1
- package/dist/runner/src/serve.d.ts.map +1 -1
- package/dist/runner/src/session-builder.d.ts +12 -0
- package/dist/runner/src/session-builder.d.ts.map +1 -1
- package/dist/sdk/asset-manager.js +7 -7
- package/dist/sdk/core.js +5 -5
- package/dist/sdk/index.js +9 -9
- package/dist/sdk/runner.js +9 -9
- package/dist/{setup-J7CYEQOF.js → setup-SRPBQOHY.js} +7 -7
- package/dist/{setup-J7CYEQOF.js.map → setup-SRPBQOHY.js.map} +1 -1
- package/dist/store-client-INZD2RYD.js +14 -0
- package/dist/{store-client-AEI6Y3KD.js.map → store-client-INZD2RYD.js.map} +1 -1
- package/dist/tui/index.js +9 -9
- package/dist/types/src/install-manifest.d.ts +1 -1
- package/dist/types/src/install-manifest.d.ts.map +1 -1
- package/dist/workspace-plugin/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-2F3RUZXC.js.map +0 -1
- package/dist/chunk-542K7SR6.js.map +0 -1
- package/dist/chunk-JQBHCJ6N.js.map +0 -1
- package/dist/chunk-YX3UWPJ5.js.map +0 -1
- package/dist/open-library-67FSSQWE.js +0 -13
- package/dist/store-client-AEI6Y3KD.js +0 -14
package/dist/cli/index.js
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { openCatalogSource, openLibraryManager, createFullRegistry, openLibrary } from '../chunk-
|
|
2
|
+
import { openCatalogSource, openLibraryManager, createFullRegistry, openLibrary } from '../chunk-4FADEVBN.js';
|
|
3
3
|
import { logErr, S, logOk, colorRef, logInfo, logWarn, kindColorPad, kindColor, formatRelativeTime, fitWidth } from '../chunk-WSZAFRQL.js';
|
|
4
|
-
import { getStoreConfig, storeFetch, saveStoreTokens, clearStoreTokens, isStoreAuthenticated } from '../chunk-
|
|
4
|
+
import { getStoreConfig, storeFetch, saveStoreTokens, clearStoreTokens, isStoreAuthenticated } from '../chunk-4FJE6BI6.js';
|
|
5
5
|
import { AI_RESOURCES } from '../chunk-2M3XTMOL.js';
|
|
6
6
|
import { LocalSecretsProvider } from '../chunk-JDX54X4Y.js';
|
|
7
|
-
import { resolveLibraryDir, LocalCatalogSource, skaileHomeDir } from '../chunk-
|
|
7
|
+
import { resolveLibraryDir, LocalCatalogSource, skaileHomeDir } from '../chunk-DCAWIRD6.js';
|
|
8
8
|
import '../chunk-R7FOF242.js';
|
|
9
|
-
import '../chunk-
|
|
9
|
+
import '../chunk-KT3CK26V.js';
|
|
10
10
|
import '../chunk-OKRUTSG7.js';
|
|
11
|
-
import { runFlow, resumeFlow } from '../chunk-
|
|
11
|
+
import { runFlow, resumeFlow } from '../chunk-FJFHJBGS.js';
|
|
12
12
|
import '../chunk-GCJXPUHG.js';
|
|
13
13
|
import { validateFlowVersions, parseSkillFrontmatter } from '../chunk-IPUYL6TD.js';
|
|
14
|
-
import { runAgentChat, loadSessionById, loadSession, listSessions, setCurrentSession, deleteSession, clearSession, loadAgentManifest, compileComposition, MarkdownStreamer, resolveMixin } from '../chunk-
|
|
15
|
-
import { buildClaudePluginFiles } from '../chunk-
|
|
14
|
+
import { runAgentChat, loadSessionById, loadSession, listSessions, setCurrentSession, deleteSession, clearSession, loadAgentManifest, compileComposition, MarkdownStreamer, resolveMixin } from '../chunk-BJWUSHC4.js';
|
|
15
|
+
import { buildClaudePluginFiles } from '../chunk-4QVFQEY2.js';
|
|
16
16
|
import '../chunk-X5YPJV4N.js';
|
|
17
17
|
import '../chunk-O7SG5PC2.js';
|
|
18
18
|
import '../chunk-7QBNJTTQ.js';
|
|
@@ -27,23 +27,23 @@ import '../chunk-KOVLSBXK.js';
|
|
|
27
27
|
import '../chunk-RRVQAE5D.js';
|
|
28
28
|
import '../chunk-6VTG73UY.js';
|
|
29
29
|
import '../chunk-LV2HPH3C.js';
|
|
30
|
-
import '../chunk-
|
|
31
|
-
import '../chunk-
|
|
30
|
+
import '../chunk-XMP6XTMF.js';
|
|
31
|
+
import '../chunk-SETTLPBD.js';
|
|
32
32
|
import '../chunk-QMONOHXT.js';
|
|
33
33
|
import '../chunk-QAVZOJCV.js';
|
|
34
34
|
import '../chunk-6E6PKKAD.js';
|
|
35
35
|
import { loadAllFlows } from '../chunk-ICS76R4T.js';
|
|
36
36
|
import '../chunk-GZWJGNNN.js';
|
|
37
37
|
import '../chunk-FVTV7M76.js';
|
|
38
|
-
import { AssetManager } from '../chunk-
|
|
39
|
-
import '../chunk-
|
|
40
|
-
import { readLock, resolveSettings, globalSettingsPath, projectSettingsPath, loadSettings, saveSettings, portableSpawn, portableSpawnSync, WorkspaceYamlEditor } from '../chunk-
|
|
38
|
+
import { AssetManager } from '../chunk-B4ZXBH57.js';
|
|
39
|
+
import '../chunk-QXC62DOF.js';
|
|
40
|
+
import { readLock, resolveSettings, globalSettingsPath, projectSettingsPath, loadSettings, saveSettings, portableSpawn, portableSpawnSync, WorkspaceYamlEditor } from '../chunk-XVL22AWE.js';
|
|
41
41
|
import { DRIVER_DEFAULTS } from '../chunk-K5GBV4SA.js';
|
|
42
42
|
import '../chunk-KLNL7QHN.js';
|
|
43
|
-
import '../chunk-
|
|
44
|
-
import { resolveSkWorkspaceConfig, resolveAgentDir, decodeSkaileYaml, findWorkspaceRoot, workspaceConfigFilename } from '../chunk-
|
|
45
|
-
import { parseFrontmatter } from '../chunk-
|
|
46
|
-
import { ASSET_KINDS, assetRefToStr } from '../chunk-
|
|
43
|
+
import '../chunk-UD4ZLXGS.js';
|
|
44
|
+
import { resolveSkWorkspaceConfig, resolveAgentDir, decodeSkaileYaml, findWorkspaceRoot, workspaceConfigFilename } from '../chunk-3QTZWPGH.js';
|
|
45
|
+
import { parseFrontmatter } from '../chunk-GL45UNVS.js';
|
|
46
|
+
import { ASSET_KINDS, parseAssetRef, isValidAssetName, ASSET_NAME_HINT, assetRefToStr } from '../chunk-WIAHJOMG.js';
|
|
47
47
|
import '../chunk-JKNWJ64A.js';
|
|
48
48
|
import { SUPPORTED_DRIVER_TARGETS } from '../chunk-O4JH3KUE.js';
|
|
49
49
|
import { openSqlite } from '../chunk-24UIWON4.js';
|
|
@@ -310,7 +310,7 @@ function makeSearchCommand() {
|
|
|
310
310
|
}
|
|
311
311
|
if (showStore) {
|
|
312
312
|
try {
|
|
313
|
-
const { getStoreConfig: getStoreConfig2, storeFetch: storeFetch2 } = await import('../store-client-
|
|
313
|
+
const { getStoreConfig: getStoreConfig2, storeFetch: storeFetch2 } = await import('../store-client-INZD2RYD.js');
|
|
314
314
|
const config = getStoreConfig2();
|
|
315
315
|
const params = {};
|
|
316
316
|
if (query) params.q = query;
|
|
@@ -472,7 +472,7 @@ function makeCatalogCommand() {
|
|
|
472
472
|
const cfg = resolveConfig({ projectDir });
|
|
473
473
|
const baseUrl = opts.url ?? cfg.catalog.url;
|
|
474
474
|
if (isLocalCatalogUrl(baseUrl)) {
|
|
475
|
-
const { resolveCatalogSource } = await import('../open-library-
|
|
475
|
+
const { resolveCatalogSource } = await import('../open-library-GW7DWWNZ.js');
|
|
476
476
|
let resolved;
|
|
477
477
|
try {
|
|
478
478
|
resolved = await resolveCatalogSource({ projectDir: opts.projectDir });
|
|
@@ -1433,7 +1433,7 @@ async function ensureTargetsRegistered(projectDir) {
|
|
|
1433
1433
|
const { resolveSkWorkspaceConfig: resolveSkWorkspaceConfig2 } = await import('../core/index.js');
|
|
1434
1434
|
const config = resolveSkWorkspaceConfig2(projectDir);
|
|
1435
1435
|
if (config.plugins && config.plugins.length > 0) {
|
|
1436
|
-
const { ensurePluginsLoaded } = await import('../plugin-store-
|
|
1436
|
+
const { ensurePluginsLoaded } = await import('../plugin-store-R32NH7JE.js');
|
|
1437
1437
|
const result = await ensurePluginsLoaded(projectDir, config.plugins, pluginRegistry);
|
|
1438
1438
|
for (const f of result.failed) logWarn(f.error);
|
|
1439
1439
|
}
|
|
@@ -2292,7 +2292,7 @@ function actOnHeader(row, action3) {
|
|
|
2292
2292
|
return false;
|
|
2293
2293
|
}
|
|
2294
2294
|
async function loadAssets() {
|
|
2295
|
-
const { gatherAssetFeeds } = await import('../asset-feeds-
|
|
2295
|
+
const { gatherAssetFeeds } = await import('../asset-feeds-77KLWCBP.js');
|
|
2296
2296
|
const { entries, notes } = await gatherAssetFeeds(am, am.projectDir);
|
|
2297
2297
|
if (notes.length > 0) {
|
|
2298
2298
|
state.message = notes.map((n) => `[${n.feed}] ${n.message}`).join(" \u2022 ");
|
|
@@ -2347,7 +2347,7 @@ async function loadAssets() {
|
|
|
2347
2347
|
async function loadSourcesAndLibraries() {
|
|
2348
2348
|
try {
|
|
2349
2349
|
const [{ openLibraryManager: openLibraryManager2 }, { skaileHomeDir: skaileHomeDir2 }] = await Promise.all([
|
|
2350
|
-
import('../open-library-
|
|
2350
|
+
import('../open-library-GW7DWWNZ.js'),
|
|
2351
2351
|
import('../library/index.js')
|
|
2352
2352
|
]);
|
|
2353
2353
|
const { manager, library, close } = await openLibraryManager2();
|
|
@@ -3679,7 +3679,7 @@ function action2(fn) {
|
|
|
3679
3679
|
};
|
|
3680
3680
|
}
|
|
3681
3681
|
async function reconcileAndReport(projectDir, plugins) {
|
|
3682
|
-
const { reconcilePlugins } = await import('../plugin-store-
|
|
3682
|
+
const { reconcilePlugins } = await import('../plugin-store-R32NH7JE.js');
|
|
3683
3683
|
if (plugins.length === 0) {
|
|
3684
3684
|
logInfo("No plugins declared \u2014 nothing to reconcile.");
|
|
3685
3685
|
return;
|
|
@@ -3695,7 +3695,7 @@ async function reconcileAndReport(projectDir, plugins) {
|
|
|
3695
3695
|
async function runInstall2(spec, opts) {
|
|
3696
3696
|
const projectDir = path14__default.resolve(opts.projectDir);
|
|
3697
3697
|
const { WorkspaceYamlEditor: WorkspaceYamlEditor2 } = await import('../core/index.js');
|
|
3698
|
-
const { specName } = await import('../plugin-store-
|
|
3698
|
+
const { specName } = await import('../plugin-store-R32NH7JE.js');
|
|
3699
3699
|
const yamlPath = path14__default.join(projectDir, "skaile.yaml");
|
|
3700
3700
|
const editor = WorkspaceYamlEditor2.load(yamlPath);
|
|
3701
3701
|
const replaced = editor.addPlugin(spec, specName);
|
|
@@ -3707,7 +3707,7 @@ async function runInstall2(spec, opts) {
|
|
|
3707
3707
|
async function runRemove(name, opts) {
|
|
3708
3708
|
const projectDir = path14__default.resolve(opts.projectDir);
|
|
3709
3709
|
const { WorkspaceYamlEditor: WorkspaceYamlEditor2 } = await import('../core/index.js');
|
|
3710
|
-
const { specName } = await import('../plugin-store-
|
|
3710
|
+
const { specName } = await import('../plugin-store-R32NH7JE.js');
|
|
3711
3711
|
const yamlPath = path14__default.join(projectDir, "skaile.yaml");
|
|
3712
3712
|
const editor = WorkspaceYamlEditor2.load(yamlPath);
|
|
3713
3713
|
const removed = editor.removePlugin(name, specName);
|
|
@@ -3735,7 +3735,7 @@ async function runList(opts) {
|
|
|
3735
3735
|
const registry = createPluginRegistry();
|
|
3736
3736
|
if (declared.length > 0) {
|
|
3737
3737
|
try {
|
|
3738
|
-
const { loadPlugins } = await import('../plugin-store-
|
|
3738
|
+
const { loadPlugins } = await import('../plugin-store-R32NH7JE.js');
|
|
3739
3739
|
const result = await loadPlugins(projectDir, declared, registry);
|
|
3740
3740
|
for (const f of result.failed) logWarn(f.error);
|
|
3741
3741
|
} catch (err) {
|
|
@@ -3899,20 +3899,30 @@ items:
|
|
|
3899
3899
|
# credential_ref: "\${SECRET:EXAMPLE_KEY}" # for secret placeholders
|
|
3900
3900
|
`;
|
|
3901
3901
|
}
|
|
3902
|
-
var
|
|
3902
|
+
var REF_HINT = "kind:@<publisher>/<name>#<version> (e.g. skill:@skaile/use-exa#1.0.0)";
|
|
3903
|
+
function isValidAssetRef(ref) {
|
|
3904
|
+
try {
|
|
3905
|
+
parseAssetRef(ref);
|
|
3906
|
+
return true;
|
|
3907
|
+
} catch {
|
|
3908
|
+
return false;
|
|
3909
|
+
}
|
|
3910
|
+
}
|
|
3903
3911
|
function supportsInstallManifest(source) {
|
|
3904
3912
|
return typeof source?.getInstallManifest === "function";
|
|
3905
3913
|
}
|
|
3906
3914
|
async function runPointerOnlyInstall(ref, deps) {
|
|
3907
|
-
|
|
3908
|
-
|
|
3915
|
+
let requested;
|
|
3916
|
+
try {
|
|
3917
|
+
requested = parseAssetRef(ref);
|
|
3918
|
+
} catch (e) {
|
|
3909
3919
|
throw new Error(
|
|
3910
|
-
`malformed asset ref '${ref}' \u2014 expected
|
|
3920
|
+
`malformed asset ref '${ref}' \u2014 expected ${REF_HINT}: ${e instanceof Error ? e.message : String(e)}`
|
|
3911
3921
|
);
|
|
3912
3922
|
}
|
|
3913
3923
|
const manifest = await deps.catalog.getInstallManifest(ref);
|
|
3914
|
-
const
|
|
3915
|
-
if (
|
|
3924
|
+
const got = parseAssetRef(manifest.ref);
|
|
3925
|
+
if (got.kind !== requested.kind || got.publisher !== requested.publisher || got.name !== requested.name || got.pin !== requested.pin) {
|
|
3916
3926
|
throw new Error(
|
|
3917
3927
|
`catalog identity mismatch: requested '${ref}' but the catalog returned a manifest for '${manifest.ref}'`
|
|
3918
3928
|
);
|
|
@@ -3926,19 +3936,17 @@ async function runPointerOnlyInstall(ref, deps) {
|
|
|
3926
3936
|
}
|
|
3927
3937
|
function makeInstallCommand() {
|
|
3928
3938
|
return new Command("install").description(
|
|
3929
|
-
|
|
3930
|
-
).argument("[ref]",
|
|
3939
|
+
`Install dependencies from skaile.yaml, or a single asset by ref (${REF_HINT})`
|
|
3940
|
+
).argument("[ref]", `Asset ref to install from the Catalog (${REF_HINT})`).option("--locked", "Install from lock file (CI mode \u2014 fails on drift)").option("--project-dir <path>", "Project directory", process.cwd()).option("--target <agent>", "Agent framework", "claude-code").action(async (ref, opts) => {
|
|
3931
3941
|
if (ref !== void 0) {
|
|
3932
|
-
if (!
|
|
3933
|
-
logErr(
|
|
3934
|
-
`malformed asset ref '${ref}' \u2014 expected <publisher>/<name>@<version> (e.g. skaile/use-exa@1.0.0)`
|
|
3935
|
-
);
|
|
3942
|
+
if (!isValidAssetRef(ref)) {
|
|
3943
|
+
logErr(`malformed asset ref '${ref}' \u2014 expected ${REF_HINT}`);
|
|
3936
3944
|
process.exit(1);
|
|
3937
3945
|
}
|
|
3938
3946
|
const spinner6 = p5.spinner();
|
|
3939
3947
|
spinner6.start(`Installing ${ref}`);
|
|
3940
3948
|
try {
|
|
3941
|
-
const { openCatalogSource: openCatalogSource2, openLibrary: openLibrary2 } = await import('../open-library-
|
|
3949
|
+
const { openCatalogSource: openCatalogSource2, openLibrary: openLibrary2 } = await import('../open-library-GW7DWWNZ.js');
|
|
3942
3950
|
const catalog = await openCatalogSource2({ projectDir: path14__default.resolve(opts.projectDir) });
|
|
3943
3951
|
if (!supportsInstallManifest(catalog)) {
|
|
3944
3952
|
throw new Error(
|
|
@@ -3970,7 +3978,7 @@ function makeInstallCommand() {
|
|
|
3970
3978
|
}
|
|
3971
3979
|
const projectDir = path14__default.resolve(opts.projectDir);
|
|
3972
3980
|
try {
|
|
3973
|
-
const { ensureSourcesCloned } = await import('../ensure-sources-
|
|
3981
|
+
const { ensureSourcesCloned } = await import('../ensure-sources-7MOOKY3K.js');
|
|
3974
3982
|
const hydrate = ensureSourcesCloned(projectDir, { quiet: true });
|
|
3975
3983
|
if (hydrate.cloned.length > 0) {
|
|
3976
3984
|
logOk(`Cloned source(s): ${hydrate.cloned.join(", ")}`);
|
|
@@ -4428,7 +4436,7 @@ async function ensurePluginsLoadedForServe(projectDir) {
|
|
|
4428
4436
|
const { resolveSkWorkspaceConfig: resolveSkWorkspaceConfig2 } = await import('../core/index.js');
|
|
4429
4437
|
const config = resolveSkWorkspaceConfig2(projectDir);
|
|
4430
4438
|
if (!config.plugins || config.plugins.length === 0) return;
|
|
4431
|
-
const { ensurePluginsLoaded } = await import('../plugin-store-
|
|
4439
|
+
const { ensurePluginsLoaded } = await import('../plugin-store-R32NH7JE.js');
|
|
4432
4440
|
const { pluginRegistry } = await import('../plugin-registry/index.js');
|
|
4433
4441
|
const result = await ensurePluginsLoaded(projectDir, config.plugins, pluginRegistry);
|
|
4434
4442
|
if (result.loaded.length > 0) {
|
|
@@ -5755,6 +5763,25 @@ function parseMdFrontmatter(content) {
|
|
|
5755
5763
|
if (!fmMatch) return null;
|
|
5756
5764
|
return parse(fmMatch[1]);
|
|
5757
5765
|
}
|
|
5766
|
+
function checkManifestIdentity(kind, parsed) {
|
|
5767
|
+
if (parsed === null || typeof parsed !== "object") return null;
|
|
5768
|
+
const obj = parsed;
|
|
5769
|
+
const identity = kind === "flow" ? obj.id : obj.name;
|
|
5770
|
+
if (typeof identity !== "string" || identity.length === 0) return null;
|
|
5771
|
+
const publisher = typeof obj.publisher === "string" ? obj.publisher : void 0;
|
|
5772
|
+
if (publisher !== void 0) {
|
|
5773
|
+
try {
|
|
5774
|
+
parseAssetRef(`${kind}:@${publisher}/${identity}`);
|
|
5775
|
+
return null;
|
|
5776
|
+
} catch (e) {
|
|
5777
|
+
return e instanceof Error ? e.message : String(e);
|
|
5778
|
+
}
|
|
5779
|
+
}
|
|
5780
|
+
if (!isValidAssetName(identity)) {
|
|
5781
|
+
return `invalid asset ${kind === "flow" ? "id" : "name"} "${identity}" \u2014 ${ASSET_NAME_HINT}`;
|
|
5782
|
+
}
|
|
5783
|
+
return null;
|
|
5784
|
+
}
|
|
5758
5785
|
function validateManifests(rootPath) {
|
|
5759
5786
|
const absRoot = path14__default.resolve(rootPath);
|
|
5760
5787
|
if (!fs10__default.existsSync(absRoot)) {
|
|
@@ -5783,8 +5810,13 @@ function validateManifests(rootPath) {
|
|
|
5783
5810
|
continue;
|
|
5784
5811
|
}
|
|
5785
5812
|
}
|
|
5786
|
-
const provider = registry.getProvider(c.kind);
|
|
5787
5813
|
const relPath = path14__default.relative(absRoot, c.filePath);
|
|
5814
|
+
const identityError = checkManifestIdentity(c.kind, parsed);
|
|
5815
|
+
if (identityError) {
|
|
5816
|
+
logErr(`${relPath} [${c.kind}] \u2014 ${identityError}`);
|
|
5817
|
+
errors++;
|
|
5818
|
+
}
|
|
5819
|
+
const provider = registry.getProvider(c.kind);
|
|
5788
5820
|
if (!provider) {
|
|
5789
5821
|
logWarn(`${relPath} [${c.kind}] \u2014 kind "${c.kind}" is not registered, skipping validation`);
|
|
5790
5822
|
warnings++;
|
|
@@ -5800,6 +5832,85 @@ function validateManifests(rootPath) {
|
|
|
5800
5832
|
}
|
|
5801
5833
|
return { total: candidates.length, errors, warnings };
|
|
5802
5834
|
}
|
|
5835
|
+
function findWorkspaceManifests(rootPath) {
|
|
5836
|
+
const out = [];
|
|
5837
|
+
function walk(dir) {
|
|
5838
|
+
let entries;
|
|
5839
|
+
try {
|
|
5840
|
+
entries = fs10__default.readdirSync(dir, { withFileTypes: true });
|
|
5841
|
+
} catch {
|
|
5842
|
+
return;
|
|
5843
|
+
}
|
|
5844
|
+
for (const entry of entries) {
|
|
5845
|
+
const full = path14__default.join(dir, entry.name);
|
|
5846
|
+
if (entry.isDirectory()) {
|
|
5847
|
+
if (!SKIP_DIRS.has(entry.name)) walk(full);
|
|
5848
|
+
} else if (entry.isFile() && /(^|\.)skaile\.yaml$/.test(entry.name)) {
|
|
5849
|
+
out.push(full);
|
|
5850
|
+
}
|
|
5851
|
+
}
|
|
5852
|
+
}
|
|
5853
|
+
walk(rootPath);
|
|
5854
|
+
return out;
|
|
5855
|
+
}
|
|
5856
|
+
function validateWorkspaceManifests(rootPath) {
|
|
5857
|
+
const absRoot = path14__default.resolve(rootPath);
|
|
5858
|
+
const files = findWorkspaceManifests(absRoot);
|
|
5859
|
+
let errors = 0;
|
|
5860
|
+
for (const file of files) {
|
|
5861
|
+
const relPath = path14__default.relative(absRoot, file);
|
|
5862
|
+
let parsed;
|
|
5863
|
+
try {
|
|
5864
|
+
parsed = parse(fs10__default.readFileSync(file, "utf-8")) ?? {};
|
|
5865
|
+
} catch (e) {
|
|
5866
|
+
logErr(`${relPath} \u2014 parse error: ${e instanceof Error ? e.message : String(e)}`);
|
|
5867
|
+
errors++;
|
|
5868
|
+
continue;
|
|
5869
|
+
}
|
|
5870
|
+
const refFields = [];
|
|
5871
|
+
if (Array.isArray(parsed.dependencies)) {
|
|
5872
|
+
for (const d of parsed.dependencies) {
|
|
5873
|
+
if (typeof d === "string") refFields.push(["dependencies", d]);
|
|
5874
|
+
}
|
|
5875
|
+
}
|
|
5876
|
+
if (Array.isArray(parsed.overrides)) {
|
|
5877
|
+
for (const o of parsed.overrides) {
|
|
5878
|
+
const ref = o?.ref;
|
|
5879
|
+
if (typeof ref === "string") refFields.push(["overrides.ref", ref]);
|
|
5880
|
+
}
|
|
5881
|
+
}
|
|
5882
|
+
for (const [field, ref] of refFields) {
|
|
5883
|
+
try {
|
|
5884
|
+
parseAssetRef(ref);
|
|
5885
|
+
} catch (e) {
|
|
5886
|
+
logErr(`${relPath} [${field}] \u2014 ${e instanceof Error ? e.message : String(e)}`);
|
|
5887
|
+
errors++;
|
|
5888
|
+
}
|
|
5889
|
+
}
|
|
5890
|
+
if (Array.isArray(parsed.assets)) {
|
|
5891
|
+
const topPublisher = typeof parsed.publisher === "string" ? parsed.publisher : void 0;
|
|
5892
|
+
for (const a of parsed.assets) {
|
|
5893
|
+
const asset = a;
|
|
5894
|
+
const name = asset?.name;
|
|
5895
|
+
const kind = typeof asset?.kind === "string" ? asset.kind : "skill";
|
|
5896
|
+
if (typeof name !== "string" || name.length === 0) continue;
|
|
5897
|
+
const publisher = typeof asset?.publisher === "string" ? asset.publisher : topPublisher;
|
|
5898
|
+
if (publisher !== void 0) {
|
|
5899
|
+
try {
|
|
5900
|
+
parseAssetRef(`${kind}:@${publisher}/${name}`);
|
|
5901
|
+
} catch (e) {
|
|
5902
|
+
logErr(`${relPath} [assets] \u2014 ${e instanceof Error ? e.message : String(e)}`);
|
|
5903
|
+
errors++;
|
|
5904
|
+
}
|
|
5905
|
+
} else if (!isValidAssetName(name)) {
|
|
5906
|
+
logErr(`${relPath} [assets] \u2014 invalid asset name "${name}" \u2014 ${ASSET_NAME_HINT}`);
|
|
5907
|
+
errors++;
|
|
5908
|
+
}
|
|
5909
|
+
}
|
|
5910
|
+
}
|
|
5911
|
+
}
|
|
5912
|
+
return { total: files.length, errors };
|
|
5913
|
+
}
|
|
5803
5914
|
var EXCLUDED_DOMAINS = /* @__PURE__ */ new Set(["skaileup-shared", "external", "docs"]);
|
|
5804
5915
|
function collectAssetVersions() {
|
|
5805
5916
|
const assets = [];
|
|
@@ -5907,12 +6018,14 @@ function makeValidateCommand() {
|
|
|
5907
6018
|
const absPath = path14__default.resolve(targetPath);
|
|
5908
6019
|
logInfo(`Validating manifests in ${absPath}`);
|
|
5909
6020
|
const { total, errors } = validateManifests(absPath);
|
|
6021
|
+
const ws = validateWorkspaceManifests(absPath);
|
|
6022
|
+
const totalErrors = errors + ws.errors;
|
|
5910
6023
|
console.log();
|
|
5911
|
-
logInfo(`Scanned ${total} manifest
|
|
5912
|
-
if (
|
|
6024
|
+
logInfo(`Scanned ${total} asset manifest(s) and ${ws.total} skaile.yaml file(s)`);
|
|
6025
|
+
if (totalErrors === 0) {
|
|
5913
6026
|
logOk("All manifests valid");
|
|
5914
6027
|
} else {
|
|
5915
|
-
logErr(`${
|
|
6028
|
+
logErr(`${totalErrors} validation error(s)`);
|
|
5916
6029
|
process.exit(1);
|
|
5917
6030
|
}
|
|
5918
6031
|
});
|
|
@@ -6198,6 +6311,7 @@ Execution:
|
|
|
6198
6311
|
clear Unset current session
|
|
6199
6312
|
|
|
6200
6313
|
Validation:
|
|
6314
|
+
validate [path] Check manifest schemas + canonical asset names/refs
|
|
6201
6315
|
validate versions Check asset version fields and flow pins
|
|
6202
6316
|
validate changelog Check changelogs for modified domains
|
|
6203
6317
|
|
|
@@ -6337,7 +6451,7 @@ program.command("init [project-dir]").description("Initialize a project director
|
|
|
6337
6451
|
);
|
|
6338
6452
|
}
|
|
6339
6453
|
try {
|
|
6340
|
-
const { ensureSourcesCloned } = await import('../ensure-sources-
|
|
6454
|
+
const { ensureSourcesCloned } = await import('../ensure-sources-7MOOKY3K.js');
|
|
6341
6455
|
const hydrate = ensureSourcesCloned(resolved, { quiet: true });
|
|
6342
6456
|
for (const n of hydrate.cloned) created.push(`~/.skaile/sources/${n}/`);
|
|
6343
6457
|
if (hydrate.failed.length > 0) {
|
|
@@ -6363,7 +6477,7 @@ program.command("init [project-dir]").description("Initialize a project director
|
|
|
6363
6477
|
console.log();
|
|
6364
6478
|
});
|
|
6365
6479
|
program.command("setup").description("Interactive provider setup wizard").action(async () => {
|
|
6366
|
-
const { cmdSetup } = await import('../setup-
|
|
6480
|
+
const { cmdSetup } = await import('../setup-SRPBQOHY.js');
|
|
6367
6481
|
await cmdSetup([], { projectDir: process.cwd() });
|
|
6368
6482
|
});
|
|
6369
6483
|
program.addCommand(makeInstallCommand());
|