@skaile/workspaces 0.20.0 → 0.22.0-beta.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 +58 -0
- package/dist/{asset-feeds-JSHWTTJC.js → asset-feeds-PJDJ3QYI.js} +11 -11
- package/dist/{asset-feeds-JSHWTTJC.js.map → asset-feeds-PJDJ3QYI.js.map} +1 -1
- package/dist/asset-manager/index.js +9 -9
- package/dist/asset-manager/installer.js +8 -8
- package/dist/base-assets/connectors/deploy.js +10 -9
- package/dist/base-assets/connectors/devserver.js +10 -9
- package/dist/base-assets/connectors/flow/adapter.js +10 -9
- package/dist/base-assets/connectors/flow/run-flow.js +11 -10
- package/dist/base-assets/connectors/flow.js +10 -9
- package/dist/base-assets/connectors/git.js +10 -9
- package/dist/base-assets/connectors/gmail.js +10 -9
- package/dist/base-assets/connectors/googledrive.js +10 -9
- package/dist/base-assets/connectors/local.js +10 -9
- package/dist/base-assets/connectors/mattermost.js +10 -9
- package/dist/base-assets/connectors/memory.js +10 -9
- package/dist/base-assets/connectors/minio.js +10 -9
- package/dist/base-assets/connectors/postgres.js +10 -9
- package/dist/base-assets/connectors/s3.js +10 -9
- package/dist/base-assets/connectors/sharepoint.js +10 -9
- package/dist/base-assets/connectors/sqlite.js +10 -9
- package/dist/base-assets/connectors/static-server.js +10 -9
- package/dist/base-assets/connectors/tunnel.js +10 -9
- package/dist/base-assets/connectors/webdav.js +10 -9
- package/dist/base-assets/connectors/xstate-store.js +10 -9
- package/dist/base-assets/connectors/xstate.js +10 -9
- package/dist/bridge/drivers/claude-sdk.js +13 -3
- package/dist/bridge/drivers/claude-sdk.js.map +1 -1
- package/dist/bridge/drivers/codex.js +13 -3
- package/dist/bridge/drivers/codex.js.map +1 -1
- package/dist/bridge/drivers/echo.js +13 -4
- package/dist/bridge/drivers/echo.js.map +1 -1
- package/dist/bridge/drivers/omp.js +13 -3
- package/dist/bridge/drivers/omp.js.map +1 -1
- package/dist/bridge/index.js +3 -2
- package/dist/bridge/src/drivers/claude-sdk.d.ts +7 -0
- package/dist/bridge/src/drivers/claude-sdk.d.ts.map +1 -1
- package/dist/bridge/src/drivers/codex.d.ts +7 -0
- package/dist/bridge/src/drivers/codex.d.ts.map +1 -1
- package/dist/bridge/src/drivers/echo.d.ts +6 -0
- package/dist/bridge/src/drivers/echo.d.ts.map +1 -1
- package/dist/bridge/src/drivers/omp.d.ts +6 -0
- package/dist/bridge/src/drivers/omp.d.ts.map +1 -1
- package/dist/bridge/src/registry.d.ts +32 -34
- package/dist/bridge/src/registry.d.ts.map +1 -1
- package/dist/{chunk-4YG2AAFV.js → chunk-2DNSSQ22.js} +7 -7
- package/dist/{chunk-4YG2AAFV.js.map → chunk-2DNSSQ22.js.map} +1 -1
- package/dist/{chunk-ZWIG55ZX.js → chunk-2XY6732A.js} +3 -3
- package/dist/{chunk-ZWIG55ZX.js.map → chunk-2XY6732A.js.map} +1 -1
- package/dist/{chunk-2DKWQLFS.js → chunk-CSDQBWE6.js} +5 -5
- package/dist/{chunk-2DKWQLFS.js.map → chunk-CSDQBWE6.js.map} +1 -1
- package/dist/{chunk-KYYMP5PT.js → chunk-F3MGZ5E6.js} +3 -3
- package/dist/{chunk-KYYMP5PT.js.map → chunk-F3MGZ5E6.js.map} +1 -1
- package/dist/{chunk-IQYWI5OG.js → chunk-G6GKWGOW.js} +114 -619
- package/dist/chunk-G6GKWGOW.js.map +1 -0
- package/dist/{chunk-LMDRMZ4F.js → chunk-GKM6MDUC.js} +3 -3
- package/dist/{chunk-LMDRMZ4F.js.map → chunk-GKM6MDUC.js.map} +1 -1
- package/dist/{chunk-4ACWI5YT.js → chunk-IGQEXBBG.js} +44 -36
- package/dist/chunk-IGQEXBBG.js.map +1 -0
- package/dist/{chunk-BZGDESAG.js → chunk-J2FCO6TM.js} +2 -2
- package/dist/{chunk-BZGDESAG.js.map → chunk-J2FCO6TM.js.map} +1 -1
- package/dist/{chunk-BSY56QS7.js → chunk-KA46DUM4.js} +3 -3
- package/dist/{chunk-BSY56QS7.js.map → chunk-KA46DUM4.js.map} +1 -1
- package/dist/{chunk-RCPFXP3Y.js → chunk-MO4JPTRD.js} +4 -4
- package/dist/{chunk-RCPFXP3Y.js.map → chunk-MO4JPTRD.js.map} +1 -1
- package/dist/{chunk-FNP4OGGY.js → chunk-NGC7ZQI4.js} +10 -10
- package/dist/{chunk-FNP4OGGY.js.map → chunk-NGC7ZQI4.js.map} +1 -1
- package/dist/{chunk-2ACJB6JF.js → chunk-RENHNO4J.js} +81 -4
- package/dist/chunk-RENHNO4J.js.map +1 -0
- package/dist/{chunk-4S4TZDCD.js → chunk-SL6JVGRD.js} +3 -3
- package/dist/{chunk-4S4TZDCD.js.map → chunk-SL6JVGRD.js.map} +1 -1
- package/dist/{chunk-VVS7MACX.js → chunk-TKOLD2O7.js} +213 -20
- package/dist/chunk-TKOLD2O7.js.map +1 -0
- package/dist/{chunk-R4FRSB47.js → chunk-TTY56FQQ.js} +4 -4
- package/dist/{chunk-R4FRSB47.js.map → chunk-TTY56FQQ.js.map} +1 -1
- package/dist/chunk-UZRY5UI2.js +96 -0
- package/dist/chunk-UZRY5UI2.js.map +1 -0
- package/dist/{chunk-NCUTHLRV.js → chunk-UZVHJ7LX.js} +4 -4
- package/dist/{chunk-NCUTHLRV.js.map → chunk-UZVHJ7LX.js.map} +1 -1
- package/dist/{chunk-FRPKLIEZ.js → chunk-WIR34WMU.js} +3 -3
- package/dist/{chunk-FRPKLIEZ.js.map → chunk-WIR34WMU.js.map} +1 -1
- package/dist/{chunk-37JKX6D7.js → chunk-X5Y4EGZB.js} +2 -2
- package/dist/{chunk-37JKX6D7.js.map → chunk-X5Y4EGZB.js.map} +1 -1
- package/dist/{chunk-S2OVTCAL.js → chunk-XHFMUGDD.js} +3 -3
- package/dist/{chunk-S2OVTCAL.js.map → chunk-XHFMUGDD.js.map} +1 -1
- package/dist/cli/index.js +701 -413
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/src/commands/deploy.d.ts +24 -0
- package/dist/cli/src/commands/deploy.d.ts.map +1 -0
- package/dist/cli/src/commands/integration.d.ts +19 -0
- package/dist/cli/src/commands/integration.d.ts.map +1 -0
- package/dist/cli/src/commands/plugin-registry-cmd.d.ts +22 -0
- package/dist/cli/src/commands/plugin-registry-cmd.d.ts.map +1 -0
- package/dist/cli/src/commands/serve.d.ts.map +1 -1
- package/dist/cli/src/plugin-store/index.d.ts +37 -0
- package/dist/cli/src/plugin-store/index.d.ts.map +1 -0
- package/dist/cli/src/plugin-store/load.d.ts +35 -0
- package/dist/cli/src/plugin-store/load.d.ts.map +1 -0
- package/dist/cli/src/plugin-store/paths.d.ts +23 -0
- package/dist/cli/src/plugin-store/paths.d.ts.map +1 -0
- package/dist/cli/src/plugin-store/reconcile.d.ts +50 -0
- package/dist/cli/src/plugin-store/reconcile.d.ts.map +1 -0
- package/dist/cli/src/plugin-store/spec.d.ts +25 -0
- package/dist/cli/src/plugin-store/spec.d.ts.map +1 -0
- package/dist/connectors/config.js +8 -8
- package/dist/connectors/index.js +10 -9
- package/dist/connectors/src/connector-manager.d.ts.map +1 -1
- package/dist/connectors/src/connector-registry.d.ts +42 -22
- package/dist/connectors/src/connector-registry.d.ts.map +1 -1
- package/dist/connectors/src/index.d.ts +2 -3
- package/dist/connectors/src/index.d.ts.map +1 -1
- package/dist/connectors-shared/index.js +8 -0
- package/dist/connectors-shared/index.js.map +1 -0
- package/dist/connectors-shared/src/index.d.ts +11 -0
- package/dist/connectors-shared/src/index.d.ts.map +1 -0
- package/dist/connectors-shared/src/schemas.d.ts +10 -0
- package/dist/connectors-shared/src/schemas.d.ts.map +1 -0
- package/dist/connectors-shared/src/types.d.ts +11 -0
- package/dist/connectors-shared/src/types.d.ts.map +1 -0
- package/dist/core/index.js +7 -7
- 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 +4 -4
- package/dist/core/src/index.d.ts.map +1 -1
- package/dist/core/src/lock.d.ts +20 -1
- package/dist/core/src/lock.d.ts.map +1 -1
- package/dist/core/src/models.d.ts +13 -0
- package/dist/core/src/models.d.ts.map +1 -1
- package/dist/core/src/workspace-config.d.ts +68 -3
- package/dist/core/src/workspace-config.d.ts.map +1 -1
- package/dist/core/src/workspace-yaml-editor.d.ts +20 -0
- package/dist/core/src/workspace-yaml-editor.d.ts.map +1 -1
- package/dist/core/workspace-config.js +3 -3
- package/dist/deploy/index.js +454 -0
- package/dist/deploy/index.js.map +1 -0
- package/dist/deploy/src/handle-store.d.ts +22 -0
- package/dist/deploy/src/handle-store.d.ts.map +1 -0
- package/dist/deploy/src/index.d.ts +21 -0
- package/dist/deploy/src/index.d.ts.map +1 -0
- package/dist/deploy/src/targets/container-runtime.d.ts +38 -0
- package/dist/deploy/src/targets/container-runtime.d.ts.map +1 -0
- package/dist/deploy/src/targets/docker.d.ts +18 -0
- package/dist/deploy/src/targets/docker.d.ts.map +1 -0
- package/dist/deploy/src/targets/local.d.ts +30 -0
- package/dist/deploy/src/targets/local.d.ts.map +1 -0
- package/dist/deploy/src/targets/podman.d.ts +18 -0
- package/dist/deploy/src/targets/podman.d.ts.map +1 -0
- package/dist/deploy/src/targets/port.d.ts +10 -0
- package/dist/deploy/src/targets/port.d.ts.map +1 -0
- package/dist/deploy/src/targets/stream-lines.d.ts +44 -0
- package/dist/deploy/src/targets/stream-lines.d.ts.map +1 -0
- package/dist/discovery/index.js +3 -3
- package/dist/{ensure-sources-LRT3TIWI.js → ensure-sources-COGVKY44.js} +11 -11
- package/dist/{ensure-sources-LRT3TIWI.js.map → ensure-sources-COGVKY44.js.map} +1 -1
- package/dist/{flows-6BNO4GKK.js → flows-DYFTPCPM.js} +4 -4
- package/dist/{flows-6BNO4GKK.js.map → flows-DYFTPCPM.js.map} +1 -1
- package/dist/library/index.js +4 -4
- package/dist/open-library-DWAQFUSQ.js +13 -0
- package/dist/{open-library-IOYWFK7M.js.map → open-library-DWAQFUSQ.js.map} +1 -1
- package/dist/plugin-registry/index.js +4 -0
- package/dist/plugin-registry/index.js.map +1 -0
- package/dist/plugin-registry/src/context.d.ts +29 -0
- package/dist/plugin-registry/src/context.d.ts.map +1 -0
- package/dist/plugin-registry/src/deploy-handle.d.ts +60 -0
- package/dist/plugin-registry/src/deploy-handle.d.ts.map +1 -0
- package/dist/plugin-registry/src/errors.d.ts +23 -0
- package/dist/plugin-registry/src/errors.d.ts.map +1 -0
- package/dist/plugin-registry/src/index.d.ts +16 -0
- package/dist/plugin-registry/src/index.d.ts.map +1 -0
- package/dist/plugin-registry/src/internal.d.ts +13 -0
- package/dist/plugin-registry/src/internal.d.ts.map +1 -0
- package/dist/plugin-registry/src/registry.d.ts +25 -0
- package/dist/plugin-registry/src/registry.d.ts.map +1 -0
- package/dist/plugin-registry/src/targets.d.ts +42 -0
- package/dist/plugin-registry/src/targets.d.ts.map +1 -0
- package/dist/plugin-store-6OENKNFW.js +144 -0
- package/dist/plugin-store-6OENKNFW.js.map +1 -0
- package/dist/runner/index.js +14 -13
- package/dist/sdk/asset-manager.js +9 -9
- package/dist/sdk/bridge.js +3 -2
- package/dist/sdk/core.js +7 -7
- package/dist/sdk/index.js +15 -14
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/runner.js +14 -13
- package/dist/{setup-CJWJWYEO.js → setup-ACMP3QZC.js} +12 -11
- package/dist/setup-ACMP3QZC.js.map +1 -0
- package/dist/store-client-ZSLNOOQG.js +14 -0
- package/dist/{store-client-H6BTDCA4.js.map → store-client-ZSLNOOQG.js.map} +1 -1
- package/dist/tui/index.js +14 -13
- package/dist/tui/index.js.map +1 -1
- package/dist/workspace-plugin/adapters/mcp.js +2 -2
- package/dist/workspace-plugin/adapters/omp.js +3 -3
- package/dist/workspace-plugin/index.js +1 -1
- package/package.json +20 -23
- package/dist/base-assets/connectors/redis/adapter.d.ts +0 -39
- package/dist/base-assets/connectors/redis/adapter.d.ts.map +0 -1
- package/dist/base-assets/connectors/redis.js +0 -20
- package/dist/base-assets/connectors/redis.js.map +0 -1
- package/dist/base-assets/connectors/yjs/adapter.d.ts +0 -50
- package/dist/base-assets/connectors/yjs/adapter.d.ts.map +0 -1
- package/dist/base-assets/connectors/yjs.js +0 -20
- package/dist/base-assets/connectors/yjs.js.map +0 -1
- package/dist/chunk-2ACJB6JF.js.map +0 -1
- package/dist/chunk-4ACWI5YT.js.map +0 -1
- package/dist/chunk-IQYWI5OG.js.map +0 -1
- package/dist/chunk-VVS7MACX.js.map +0 -1
- package/dist/cli/src/commands/plugin.d.ts +0 -14
- package/dist/cli/src/commands/plugin.d.ts.map +0 -1
- package/dist/open-library-IOYWFK7M.js +0 -13
- package/dist/setup-CJWJWYEO.js.map +0 -1
- package/dist/store-client-H6BTDCA4.js +0 -14
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { scanDirectory, fromMcpServerMd } from './chunk-
|
|
2
|
-
import { parseAssetRef } from './chunk-
|
|
1
|
+
import { scanDirectory, fromMcpServerMd } from './chunk-WIR34WMU.js';
|
|
2
|
+
import { parseAssetRef } from './chunk-X5Y4EGZB.js';
|
|
3
3
|
import { mkdirSync, existsSync, readFileSync, writeFileSync, lstatSync, symlinkSync, rmSync, readdirSync } from 'fs';
|
|
4
4
|
import { homedir } from 'os';
|
|
5
5
|
import { join, resolve, parse as parse$1, dirname } from 'path';
|
|
@@ -379,7 +379,7 @@ function saveSkWorkspaceConfig(dir, config, name) {
|
|
|
379
379
|
if (!existsSync(resolvedDir)) {
|
|
380
380
|
mkdirSync(resolvedDir, { recursive: true });
|
|
381
381
|
}
|
|
382
|
-
writeFileSync(filePath,
|
|
382
|
+
writeFileSync(filePath, encodeSkaileYaml(config));
|
|
383
383
|
return filePath;
|
|
384
384
|
}
|
|
385
385
|
function listSkWorkspaceConfigs(dir) {
|
|
@@ -518,9 +518,29 @@ function mergeSkWorkspaceConfigs(base, overlay) {
|
|
|
518
518
|
// dependencies: concatenate and dedupe
|
|
519
519
|
dependencies: dedupe([...base.dependencies ?? [], ...overlay.dependencies ?? []]),
|
|
520
520
|
// sources: dedupe by name — overlay entry wins for the same name
|
|
521
|
-
sources: dedupeByKey([...base.sources ?? [], ...overlay.sources ?? []], "name")
|
|
521
|
+
sources: dedupeByKey([...base.sources ?? [], ...overlay.sources ?? []], "name"),
|
|
522
|
+
// plugins: concatenate + dedupe (like dependencies)
|
|
523
|
+
plugins: dedupe([...base.plugins ?? [], ...overlay.plugins ?? []]),
|
|
524
|
+
// deploy: overlay wins entirely (scalar-like selection)
|
|
525
|
+
deploy: overlay.deploy ?? base.deploy
|
|
522
526
|
};
|
|
523
527
|
}
|
|
528
|
+
var KNOWN_DRIVERS = ["omp", "claude-sdk", "codex"];
|
|
529
|
+
var KNOWN_PROVIDERS = [
|
|
530
|
+
"anthropic",
|
|
531
|
+
"openai",
|
|
532
|
+
"google",
|
|
533
|
+
"mistral",
|
|
534
|
+
"groq",
|
|
535
|
+
"openrouter",
|
|
536
|
+
"deepseek",
|
|
537
|
+
"xai",
|
|
538
|
+
"together",
|
|
539
|
+
"fireworks",
|
|
540
|
+
"deepgram",
|
|
541
|
+
"elevenlabs"
|
|
542
|
+
];
|
|
543
|
+
var KNOWN_ACCESS = ["read-only", "read-write"];
|
|
524
544
|
var AGENT_PROFILE_FIELDS = [
|
|
525
545
|
"driver",
|
|
526
546
|
"provider",
|
|
@@ -533,23 +553,79 @@ var AGENT_PROFILE_FIELDS = [
|
|
|
533
553
|
];
|
|
534
554
|
function normalizeAgentConfig(raw) {
|
|
535
555
|
const looksFlat = AGENT_PROFILE_FIELDS.some((f) => typeof raw[f] === "string");
|
|
536
|
-
return looksFlat ? { default: raw } : raw;
|
|
556
|
+
return looksFlat ? { profiles: { default: raw }, wrappedFlat: true } : { profiles: raw, wrappedFlat: false };
|
|
537
557
|
}
|
|
538
558
|
function normalizeConfig(raw) {
|
|
559
|
+
return normalizeConfigInternal(raw).config;
|
|
560
|
+
}
|
|
561
|
+
function normalizeConfigInternal(raw) {
|
|
539
562
|
const config = {};
|
|
563
|
+
const diagnostics = [];
|
|
540
564
|
if (raw.name) config.name = String(raw.name);
|
|
541
565
|
if (raw.description) config.description = String(raw.description);
|
|
542
|
-
|
|
566
|
+
let agentConfigRaw;
|
|
567
|
+
let agentConfigKey;
|
|
568
|
+
if (raw["agent-config"] !== void 0) {
|
|
569
|
+
agentConfigRaw = raw["agent-config"];
|
|
570
|
+
agentConfigKey = "agent-config";
|
|
571
|
+
} else if (raw.agent_config !== void 0) {
|
|
572
|
+
agentConfigRaw = raw.agent_config;
|
|
573
|
+
agentConfigKey = "agent_config";
|
|
574
|
+
} else if (raw.agentConfig !== void 0) {
|
|
575
|
+
agentConfigRaw = raw.agentConfig;
|
|
576
|
+
agentConfigKey = "agentConfig";
|
|
577
|
+
}
|
|
543
578
|
if (agentConfigRaw && typeof agentConfigRaw === "object" && !Array.isArray(agentConfigRaw)) {
|
|
544
|
-
|
|
579
|
+
if (agentConfigKey === "agentConfig") {
|
|
580
|
+
diagnostics.push({
|
|
581
|
+
code: "legacy_key_camelcase",
|
|
582
|
+
severity: "warning",
|
|
583
|
+
message: 'Non-canonical key "agentConfig" \u2014 use "agent-config".',
|
|
584
|
+
path: "agentConfig"
|
|
585
|
+
});
|
|
586
|
+
}
|
|
587
|
+
const { profiles, wrappedFlat } = normalizeAgentConfig(
|
|
588
|
+
agentConfigRaw
|
|
589
|
+
);
|
|
590
|
+
if (wrappedFlat) {
|
|
591
|
+
diagnostics.push({
|
|
592
|
+
code: "legacy_agent_config_flat",
|
|
593
|
+
severity: "warning",
|
|
594
|
+
message: 'Flat agent-config block wrapped as the "default" profile \u2014 nest fields under "default:".',
|
|
595
|
+
path: agentConfigKey
|
|
596
|
+
});
|
|
597
|
+
}
|
|
598
|
+
config.agent_config = profiles;
|
|
545
599
|
}
|
|
546
600
|
if (Array.isArray(raw.startup)) {
|
|
547
601
|
config.startup = raw.startup;
|
|
548
602
|
}
|
|
549
|
-
|
|
603
|
+
let aiResRaw;
|
|
604
|
+
let aiResKey;
|
|
605
|
+
if (raw.ai_resources !== void 0) {
|
|
606
|
+
aiResRaw = raw.ai_resources;
|
|
607
|
+
aiResKey = "ai_resources";
|
|
608
|
+
} else if (raw.aiResources !== void 0) {
|
|
609
|
+
aiResRaw = raw.aiResources;
|
|
610
|
+
aiResKey = "aiResources";
|
|
611
|
+
}
|
|
612
|
+
if (aiResKey === "aiResources") {
|
|
613
|
+
diagnostics.push({
|
|
614
|
+
code: "legacy_key_camelcase",
|
|
615
|
+
severity: "warning",
|
|
616
|
+
message: 'Non-canonical key "aiResources" \u2014 use "ai_resources".',
|
|
617
|
+
path: "aiResources"
|
|
618
|
+
});
|
|
619
|
+
}
|
|
550
620
|
if (Array.isArray(aiResRaw)) {
|
|
551
621
|
config.ai_resources = aiResRaw;
|
|
552
622
|
} else if (aiResRaw && typeof aiResRaw === "object") {
|
|
623
|
+
diagnostics.push({
|
|
624
|
+
code: "legacy_ai_resources_object",
|
|
625
|
+
severity: "warning",
|
|
626
|
+
message: "Legacy ai_resources object form ({sources, requires}) \u2014 use an array of {name, path, dependencies}.",
|
|
627
|
+
path: aiResKey
|
|
628
|
+
});
|
|
553
629
|
const old = aiResRaw;
|
|
554
630
|
const sources = Array.isArray(old.sources) ? old.sources : [];
|
|
555
631
|
const requires = Array.isArray(old.requires) ? old.requires.filter(Boolean) : [];
|
|
@@ -574,11 +650,28 @@ function normalizeConfig(raw) {
|
|
|
574
650
|
if (Array.isArray(raw.mcp_servers)) {
|
|
575
651
|
config.mcp_servers = raw.mcp_servers;
|
|
576
652
|
}
|
|
653
|
+
if (Array.isArray(raw.plugins)) {
|
|
654
|
+
const specs = raw.plugins.filter((p) => typeof p === "string" && p.length > 0);
|
|
655
|
+
if (specs.length > 0) config.plugins = specs;
|
|
656
|
+
}
|
|
657
|
+
if (raw.deploy && typeof raw.deploy === "object" && !Array.isArray(raw.deploy)) {
|
|
658
|
+
const d = raw.deploy;
|
|
659
|
+
if (typeof d.target === "string" && d.target.length > 0) {
|
|
660
|
+
config.deploy = { target: d.target };
|
|
661
|
+
if (d.config !== void 0) config.deploy.config = d.config;
|
|
662
|
+
}
|
|
663
|
+
}
|
|
577
664
|
if (raw.agent) config.agent = raw.agent;
|
|
578
665
|
if (raw.workspace) config.workspace = raw.workspace;
|
|
579
666
|
if (raw.secrets && typeof raw.secrets === "object") {
|
|
580
667
|
config.secrets = raw.secrets;
|
|
581
668
|
}
|
|
669
|
+
if (raw.compaction && typeof raw.compaction === "object" && !Array.isArray(raw.compaction)) {
|
|
670
|
+
config.compaction = raw.compaction;
|
|
671
|
+
}
|
|
672
|
+
if (raw.patches && typeof raw.patches === "object" && !Array.isArray(raw.patches)) {
|
|
673
|
+
config.patches = raw.patches;
|
|
674
|
+
}
|
|
582
675
|
if (Array.isArray(raw.dependencies)) {
|
|
583
676
|
config.dependencies = raw.dependencies.filter((d) => typeof d === "string");
|
|
584
677
|
}
|
|
@@ -599,7 +692,112 @@ function normalizeConfig(raw) {
|
|
|
599
692
|
if (raw.telemetry && typeof raw.telemetry === "object" && !Array.isArray(raw.telemetry)) {
|
|
600
693
|
config.telemetry = raw.telemetry;
|
|
601
694
|
}
|
|
602
|
-
return config;
|
|
695
|
+
return { config, diagnostics };
|
|
696
|
+
}
|
|
697
|
+
function decodeSkaileYaml(text) {
|
|
698
|
+
let parsed;
|
|
699
|
+
try {
|
|
700
|
+
parsed = parse(text) ?? {};
|
|
701
|
+
} catch (err) {
|
|
702
|
+
return {
|
|
703
|
+
config: {},
|
|
704
|
+
diagnostics: [
|
|
705
|
+
{
|
|
706
|
+
code: "yaml_syntax",
|
|
707
|
+
severity: "error",
|
|
708
|
+
message: `Invalid YAML: ${err instanceof Error ? err.message : String(err)}`
|
|
709
|
+
}
|
|
710
|
+
]
|
|
711
|
+
};
|
|
712
|
+
}
|
|
713
|
+
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
|
|
714
|
+
return {
|
|
715
|
+
config: {},
|
|
716
|
+
diagnostics: [
|
|
717
|
+
{
|
|
718
|
+
code: "non_object_root",
|
|
719
|
+
severity: "error",
|
|
720
|
+
message: "skaile.yaml must be a mapping at the top level."
|
|
721
|
+
}
|
|
722
|
+
]
|
|
723
|
+
};
|
|
724
|
+
}
|
|
725
|
+
const result = normalizeConfigInternal(parsed);
|
|
726
|
+
validateConfigValues(result.config, result.diagnostics);
|
|
727
|
+
return result;
|
|
728
|
+
}
|
|
729
|
+
function encodeSkaileYaml(config) {
|
|
730
|
+
return stringify(toCanonicalObject(config), { lineWidth: 120 });
|
|
731
|
+
}
|
|
732
|
+
function validateConfigValues(config, diagnostics) {
|
|
733
|
+
for (const [profile, p] of Object.entries(config.agent_config ?? {})) {
|
|
734
|
+
if (p?.driver && !KNOWN_DRIVERS.includes(p.driver)) {
|
|
735
|
+
diagnostics.push({
|
|
736
|
+
code: "unknown_driver",
|
|
737
|
+
severity: "warning",
|
|
738
|
+
message: `Unknown driver "${p.driver}" \u2014 expected one of: ${KNOWN_DRIVERS.join(", ")}.`,
|
|
739
|
+
path: `agent-config.${profile}.driver`
|
|
740
|
+
});
|
|
741
|
+
}
|
|
742
|
+
if (p?.provider && !KNOWN_PROVIDERS.includes(p.provider)) {
|
|
743
|
+
diagnostics.push({
|
|
744
|
+
code: "unknown_provider",
|
|
745
|
+
severity: "warning",
|
|
746
|
+
message: `Unknown provider "${p.provider}" \u2014 expected one of: ${KNOWN_PROVIDERS.join(", ")}.`,
|
|
747
|
+
path: `agent-config.${profile}.provider`
|
|
748
|
+
});
|
|
749
|
+
}
|
|
750
|
+
}
|
|
751
|
+
const checkAccess = (access, path) => {
|
|
752
|
+
if (access && !KNOWN_ACCESS.includes(access)) {
|
|
753
|
+
diagnostics.push({
|
|
754
|
+
code: "unknown_access",
|
|
755
|
+
severity: "warning",
|
|
756
|
+
message: `Unknown access "${access}" \u2014 expected "read-only" or "read-write".`,
|
|
757
|
+
path
|
|
758
|
+
});
|
|
759
|
+
}
|
|
760
|
+
};
|
|
761
|
+
for (const c of config.connectors ?? []) checkAccess(c.access, `connectors.${c.id}.access`);
|
|
762
|
+
for (const m of config.mounts ?? []) checkAccess(m.access, `mounts.${m.id}.access`);
|
|
763
|
+
}
|
|
764
|
+
var CANONICAL_KEY_ORDER = [
|
|
765
|
+
"name",
|
|
766
|
+
"description",
|
|
767
|
+
"agent_config",
|
|
768
|
+
"dependencies",
|
|
769
|
+
"plugins",
|
|
770
|
+
"sources",
|
|
771
|
+
"startup",
|
|
772
|
+
"ai_resources",
|
|
773
|
+
"connectors",
|
|
774
|
+
"mcp_servers",
|
|
775
|
+
"deploy",
|
|
776
|
+
"mounts",
|
|
777
|
+
"agent",
|
|
778
|
+
"workspace",
|
|
779
|
+
"secrets",
|
|
780
|
+
"telemetry",
|
|
781
|
+
"compaction",
|
|
782
|
+
"patches",
|
|
783
|
+
"repositories"
|
|
784
|
+
];
|
|
785
|
+
var CONFIG_KEY_TO_YAML = {
|
|
786
|
+
agent_config: "agent-config"
|
|
787
|
+
};
|
|
788
|
+
function toCanonicalObject(config) {
|
|
789
|
+
const out = {};
|
|
790
|
+
const emit = (key) => {
|
|
791
|
+
const value = config[key];
|
|
792
|
+
if (value === void 0) return;
|
|
793
|
+
out[CONFIG_KEY_TO_YAML[key] ?? key] = value;
|
|
794
|
+
};
|
|
795
|
+
for (const key of CANONICAL_KEY_ORDER) emit(key);
|
|
796
|
+
for (const key of Object.keys(config)) {
|
|
797
|
+
if (CANONICAL_KEY_ORDER.includes(key)) continue;
|
|
798
|
+
emit(key);
|
|
799
|
+
}
|
|
800
|
+
return out;
|
|
603
801
|
}
|
|
604
802
|
function parseConfigFile(filePath, name) {
|
|
605
803
|
let raw;
|
|
@@ -608,14 +806,9 @@ function parseConfigFile(filePath, name) {
|
|
|
608
806
|
} catch {
|
|
609
807
|
return null;
|
|
610
808
|
}
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
} catch {
|
|
615
|
-
return null;
|
|
616
|
-
}
|
|
617
|
-
const config = normalizeConfig(parsed);
|
|
618
|
-
return { path: filePath, name, config };
|
|
809
|
+
const { config, diagnostics } = decodeSkaileYaml(raw);
|
|
810
|
+
if (diagnostics.some((d) => d.code === "yaml_syntax")) return null;
|
|
811
|
+
return { path: filePath, name, config, diagnostics };
|
|
619
812
|
}
|
|
620
813
|
function dedupe(arr) {
|
|
621
814
|
return [...new Set(arr)];
|
|
@@ -828,6 +1021,6 @@ function resolveAgentDir(projectDir) {
|
|
|
828
1021
|
return resolve(projectDir, definition);
|
|
829
1022
|
}
|
|
830
1023
|
|
|
831
|
-
export { COMPACTION_DEFAULTS, SKAILE_YAML_DEFAULT, SKAILE_YAML_SUFFIX, SK_WORKSPACE_DEFAULT_NAME, SK_WORKSPACE_SUFFIX, checkRepoStatus, checkoutPin, cloneRepo, ensureRepo, findWorkspaceRoot, getGlobalCacheDir, getRepoCommit, isWorkspaceConfigFilename, linkRepo, listSkWorkspaceConfigs, loadMcpServerDeclarations, loadSkWorkspaceConfig, mergeSkWorkspaceConfigs, normalizeConfig, pullRepo, readLinks, resolveAgentDir, resolveAll, resolveAsset, resolveSkWorkspaceConfig, saveSkWorkspaceConfig, scanRepo, unlinkRepo, validateAssetRecipeAttr, workspaceConfigFilename, workspaceNameFromFilename, writeLinks };
|
|
832
|
-
//# sourceMappingURL=chunk-
|
|
833
|
-
//# sourceMappingURL=chunk-
|
|
1024
|
+
export { COMPACTION_DEFAULTS, SKAILE_YAML_DEFAULT, SKAILE_YAML_SUFFIX, SK_WORKSPACE_DEFAULT_NAME, SK_WORKSPACE_SUFFIX, checkRepoStatus, checkoutPin, cloneRepo, decodeSkaileYaml, encodeSkaileYaml, ensureRepo, findWorkspaceRoot, getGlobalCacheDir, getRepoCommit, isWorkspaceConfigFilename, linkRepo, listSkWorkspaceConfigs, loadMcpServerDeclarations, loadSkWorkspaceConfig, mergeSkWorkspaceConfigs, normalizeConfig, pullRepo, readLinks, resolveAgentDir, resolveAll, resolveAsset, resolveSkWorkspaceConfig, saveSkWorkspaceConfig, scanRepo, unlinkRepo, validateAssetRecipeAttr, workspaceConfigFilename, workspaceNameFromFilename, writeLinks };
|
|
1025
|
+
//# sourceMappingURL=chunk-TKOLD2O7.js.map
|
|
1026
|
+
//# sourceMappingURL=chunk-TKOLD2O7.js.map
|