@skaile/workspaces 0.33.0 → 0.35.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.
Files changed (139) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/dist/{asset-feeds-DX5JPM76.js → asset-feeds-PCLTE2W5.js} +20 -12
  3. package/dist/asset-feeds-PCLTE2W5.js.map +1 -0
  4. package/dist/asset-manager/index.js +8 -8
  5. package/dist/asset-manager/installer.js +7 -7
  6. package/dist/{chunk-PKPUVQJP.js → chunk-2Q6OY3SU.js} +3 -3
  7. package/dist/{chunk-PKPUVQJP.js.map → chunk-2Q6OY3SU.js.map} +1 -1
  8. package/dist/{chunk-LRFZNLB2.js → chunk-52HINMW4.js} +3 -3
  9. package/dist/{chunk-LRFZNLB2.js.map → chunk-52HINMW4.js.map} +1 -1
  10. package/dist/{chunk-AZODLVKH.js → chunk-56YT6CWS.js} +5 -5
  11. package/dist/{chunk-AZODLVKH.js.map → chunk-56YT6CWS.js.map} +1 -1
  12. package/dist/{chunk-RQG5TXIR.js → chunk-5DPQ766L.js} +4 -4
  13. package/dist/{chunk-RQG5TXIR.js.map → chunk-5DPQ766L.js.map} +1 -1
  14. package/dist/{chunk-BUMDC3R2.js → chunk-6422UOMQ.js} +5 -5
  15. package/dist/{chunk-BUMDC3R2.js.map → chunk-6422UOMQ.js.map} +1 -1
  16. package/dist/{chunk-XQRAXAL5.js → chunk-7B3CL5JT.js} +7 -7
  17. package/dist/{chunk-XQRAXAL5.js.map → chunk-7B3CL5JT.js.map} +1 -1
  18. package/dist/{chunk-LFDZYCEO.js → chunk-BM7XANVN.js} +2 -2
  19. package/dist/chunk-BM7XANVN.js.map +1 -0
  20. package/dist/{chunk-QUWXW2N3.js → chunk-EOCKR5TN.js} +3 -3
  21. package/dist/{chunk-QUWXW2N3.js.map → chunk-EOCKR5TN.js.map} +1 -1
  22. package/dist/{chunk-EJZFQCQG.js → chunk-I3TERDTR.js} +2 -2
  23. package/dist/{chunk-EJZFQCQG.js.map → chunk-I3TERDTR.js.map} +1 -1
  24. package/dist/{chunk-N74UQJPN.js → chunk-KYC6JH75.js} +3 -3
  25. package/dist/{chunk-N74UQJPN.js.map → chunk-KYC6JH75.js.map} +1 -1
  26. package/dist/{chunk-4AGIEU7V.js → chunk-MAPRKFBD.js} +3 -3
  27. package/dist/{chunk-4AGIEU7V.js.map → chunk-MAPRKFBD.js.map} +1 -1
  28. package/dist/{chunk-362QBS57.js → chunk-NAMD4AIK.js} +235 -13
  29. package/dist/chunk-NAMD4AIK.js.map +1 -0
  30. package/dist/{chunk-KKERAIPQ.js → chunk-O2OHGE4S.js} +4 -4
  31. package/dist/{chunk-KKERAIPQ.js.map → chunk-O2OHGE4S.js.map} +1 -1
  32. package/dist/{chunk-7MANNJ3U.js → chunk-O4PANZI2.js} +5 -5
  33. package/dist/{chunk-7MANNJ3U.js.map → chunk-O4PANZI2.js.map} +1 -1
  34. package/dist/{chunk-H5YXL4KI.js → chunk-SAXDHVJZ.js} +3 -3
  35. package/dist/{chunk-H5YXL4KI.js.map → chunk-SAXDHVJZ.js.map} +1 -1
  36. package/dist/{chunk-R2I7RHT7.js → chunk-SKVUDDHE.js} +191 -23
  37. package/dist/chunk-SKVUDDHE.js.map +1 -0
  38. package/dist/{chunk-PWXN2KHV.js → chunk-UAYAK7N4.js} +5 -5
  39. package/dist/{chunk-PWXN2KHV.js.map → chunk-UAYAK7N4.js.map} +1 -1
  40. package/dist/{chunk-PTDVTMQL.js → chunk-WEQN6EWW.js} +4 -4
  41. package/dist/{chunk-PTDVTMQL.js.map → chunk-WEQN6EWW.js.map} +1 -1
  42. package/dist/{chunk-VXW2K4YH.js → chunk-XOBPOVFT.js} +3 -3
  43. package/dist/{chunk-VXW2K4YH.js.map → chunk-XOBPOVFT.js.map} +1 -1
  44. package/dist/{chunk-4ZVS6KV4.js → chunk-ZGJE4ZDP.js} +2 -2
  45. package/dist/{chunk-4ZVS6KV4.js.map → chunk-ZGJE4ZDP.js.map} +1 -1
  46. package/dist/cli/index.js +196 -101
  47. package/dist/cli/index.js.map +1 -1
  48. package/dist/cli/src/asset-feeds.d.ts +8 -1
  49. package/dist/cli/src/asset-feeds.d.ts.map +1 -1
  50. package/dist/cli/src/commands/manage.d.ts +33 -22
  51. package/dist/cli/src/commands/manage.d.ts.map +1 -1
  52. package/dist/connectors/config.js +7 -7
  53. package/dist/connectors/index.js +8 -8
  54. package/dist/connectors/src/connector-manager.d.ts +56 -3
  55. package/dist/connectors/src/connector-manager.d.ts.map +1 -1
  56. package/dist/connectors/src/fleet-health-gate.d.ts +86 -0
  57. package/dist/connectors/src/fleet-health-gate.d.ts.map +1 -0
  58. package/dist/connectors/src/fleet-utils.d.ts +16 -0
  59. package/dist/connectors/src/fleet-utils.d.ts.map +1 -1
  60. package/dist/connectors/src/index.d.ts +4 -1
  61. package/dist/connectors/src/index.d.ts.map +1 -1
  62. package/dist/connectors/src/mount-placeholder.d.ts +8 -0
  63. package/dist/connectors/src/mount-placeholder.d.ts.map +1 -1
  64. package/dist/core/index.js +6 -6
  65. package/dist/core/manifest.js +2 -2
  66. package/dist/core/models.js +1 -1
  67. package/dist/core/publish-manifest.js +2 -2
  68. package/dist/core/runtime-assets.js +5 -5
  69. package/dist/core/src/index.d.ts +1 -1
  70. package/dist/core/src/index.d.ts.map +1 -1
  71. package/dist/core/src/models.d.ts +28 -0
  72. package/dist/core/src/models.d.ts.map +1 -1
  73. package/dist/core/src/workspace-config.d.ts +13 -0
  74. package/dist/core/src/workspace-config.d.ts.map +1 -1
  75. package/dist/core/workspace-config.js +4 -4
  76. package/dist/deploy/index.js +6 -6
  77. package/dist/discovery/index.js +4 -4
  78. package/dist/{ensure-sources-O6RMWP6C.js → ensure-sources-HMMEQEZC.js} +11 -11
  79. package/dist/{ensure-sources-O6RMWP6C.js.map → ensure-sources-HMMEQEZC.js.map} +1 -1
  80. package/dist/factory-assets/connectors/deploy.js +8 -8
  81. package/dist/factory-assets/connectors/devserver.js +8 -8
  82. package/dist/factory-assets/connectors/flow/adapter.js +8 -8
  83. package/dist/factory-assets/connectors/flow/engine.js +6 -6
  84. package/dist/factory-assets/connectors/flow/run-flow.js +9 -9
  85. package/dist/factory-assets/connectors/flow.js +8 -8
  86. package/dist/factory-assets/connectors/git.js +8 -8
  87. package/dist/factory-assets/connectors/gmail.js +8 -8
  88. package/dist/factory-assets/connectors/googledrive.js +8 -8
  89. package/dist/factory-assets/connectors/local.js +8 -8
  90. package/dist/factory-assets/connectors/mattermost.js +8 -8
  91. package/dist/factory-assets/connectors/memory.js +8 -8
  92. package/dist/factory-assets/connectors/minio.js +8 -8
  93. package/dist/factory-assets/connectors/postgres.js +8 -8
  94. package/dist/factory-assets/connectors/s3.js +8 -8
  95. package/dist/factory-assets/connectors/sharepoint.js +8 -8
  96. package/dist/factory-assets/connectors/sqlite.js +8 -8
  97. package/dist/factory-assets/connectors/static-server.js +8 -8
  98. package/dist/factory-assets/connectors/tunnel.js +8 -8
  99. package/dist/factory-assets/connectors/webdav.js +8 -8
  100. package/dist/factory-assets/connectors/xstate-store.js +8 -8
  101. package/dist/factory-assets/connectors/xstate.js +8 -8
  102. package/dist/{flows-QWYIUDA2.js → flows-O7OXGFIY.js} +3 -3
  103. package/dist/{flows-QWYIUDA2.js.map → flows-O7OXGFIY.js.map} +1 -1
  104. package/dist/library/index.js +9 -9
  105. package/dist/library/install.js +7 -7
  106. package/dist/open-library-5WWTBHQD.js +23 -0
  107. package/dist/{open-library-B7BLYXYK.js.map → open-library-5WWTBHQD.js.map} +1 -1
  108. package/dist/paths-UC3ZHLKC.js +15 -0
  109. package/dist/{paths-5IUR235S.js.map → paths-UC3ZHLKC.js.map} +1 -1
  110. package/dist/{plugin-store-WWOJXWG7.js → plugin-store-R2WLXRT3.js} +8 -8
  111. package/dist/{plugin-store-WWOJXWG7.js.map → plugin-store-R2WLXRT3.js.map} +1 -1
  112. package/dist/runner/index.js +10 -10
  113. package/dist/runner/src/external-mcp.d.ts +45 -4
  114. package/dist/runner/src/external-mcp.d.ts.map +1 -1
  115. package/dist/runner/src/fleet-health-flag-dispatcher.d.ts +40 -0
  116. package/dist/runner/src/fleet-health-flag-dispatcher.d.ts.map +1 -0
  117. package/dist/runner/src/resources.d.ts.map +1 -1
  118. package/dist/runner/src/serve.d.ts.map +1 -1
  119. package/dist/sdk/asset-manager.js +8 -8
  120. package/dist/sdk/core.js +6 -6
  121. package/dist/sdk/flow.js +6 -6
  122. package/dist/sdk/index.js +10 -10
  123. package/dist/sdk/runner.js +10 -10
  124. package/dist/{setup-2RD6EDBZ.js → setup-BSDHVMR6.js} +8 -8
  125. package/dist/{setup-2RD6EDBZ.js.map → setup-BSDHVMR6.js.map} +1 -1
  126. package/dist/store-client-4GKV4LOD.js +15 -0
  127. package/dist/{store-client-XQQRHYDW.js.map → store-client-4GKV4LOD.js.map} +1 -1
  128. package/dist/tui/index.js +10 -10
  129. package/dist/workspace-plugin/adapters/mcp.js +1 -1
  130. package/dist/workspace-plugin/adapters/omp.js +3 -3
  131. package/dist/workspace-plugin/index.js +1 -1
  132. package/package.json +1 -1
  133. package/dist/asset-feeds-DX5JPM76.js.map +0 -1
  134. package/dist/chunk-362QBS57.js.map +0 -1
  135. package/dist/chunk-LFDZYCEO.js.map +0 -1
  136. package/dist/chunk-R2I7RHT7.js.map +0 -1
  137. package/dist/open-library-B7BLYXYK.js +0 -23
  138. package/dist/paths-5IUR235S.js +0 -15
  139. package/dist/store-client-XQQRHYDW.js +0 -15
package/dist/cli/index.js CHANGED
@@ -1,19 +1,19 @@
1
1
  #!/usr/bin/env node
2
- import { openCatalogSource, openLibraryManager, createFullRegistry, openLibrary } from '../chunk-KKERAIPQ.js';
2
+ import { openCatalogSource, openLibraryManager, createFullRegistry, openLibrary } from '../chunk-O2OHGE4S.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-VXW2K4YH.js';
5
- import { AI_RESOURCES, aiResourceRoots } from '../chunk-QUWXW2N3.js';
4
+ import { getStoreConfig, storeFetch, saveStoreTokens, clearStoreTokens, isStoreAuthenticated } from '../chunk-XOBPOVFT.js';
5
+ import { AI_RESOURCES, aiResourceRoots } from '../chunk-EOCKR5TN.js';
6
6
  import { LocalSecretsProvider } from '../chunk-6LW7Q53Z.js';
7
- import { resolveLibraryDir, LocalCatalogSource, skaileHomeDir } from '../chunk-PWXN2KHV.js';
8
- import '../chunk-7MANNJ3U.js';
9
- import '../chunk-N74UQJPN.js';
7
+ import { resolveLibraryDir, LocalCatalogSource, skaileHomeDir } from '../chunk-UAYAK7N4.js';
8
+ import '../chunk-O4PANZI2.js';
9
+ import '../chunk-KYC6JH75.js';
10
10
  import '../chunk-R7FOF242.js';
11
11
  import '../chunk-ZDKJHQY2.js';
12
- import { runFlow, resumeFlow } from '../chunk-BUMDC3R2.js';
12
+ import { runFlow, resumeFlow } from '../chunk-6422UOMQ.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-R2I7RHT7.js';
16
- import { buildClaudePluginFiles } from '../chunk-4ZVS6KV4.js';
15
+ import { runAgentChat, loadSessionById, loadSession, listSessions, setCurrentSession, deleteSession, clearSession, loadAgentManifest, compileComposition, MarkdownStreamer, resolveMixin } from '../chunk-SKVUDDHE.js';
16
+ import { buildClaudePluginFiles } from '../chunk-ZGJE4ZDP.js';
17
17
  import '../chunk-X5YPJV4N.js';
18
18
  import '../chunk-O7SG5PC2.js';
19
19
  import '../chunk-7QBNJTTQ.js';
@@ -28,22 +28,22 @@ import '../chunk-BMQKMOQY.js';
28
28
  import '../chunk-NGJ6E344.js';
29
29
  import '../chunk-CIFTUSBV.js';
30
30
  import '../chunk-LV2HPH3C.js';
31
- import '../chunk-362QBS57.js';
31
+ import '../chunk-NAMD4AIK.js';
32
32
  import '../chunk-OVRSNIKJ.js';
33
- import '../chunk-LRFZNLB2.js';
33
+ import '../chunk-52HINMW4.js';
34
34
  import '../chunk-XT6AZWK3.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-XQRAXAL5.js';
40
- import '../chunk-PTDVTMQL.js';
41
- import { readLock, resolveSettings, globalSettingsPath, projectSettingsPath, loadSettings, saveSettings, portableSpawn, portableSpawnSync, WorkspaceYamlEditor } from '../chunk-PKPUVQJP.js';
42
- import '../chunk-RQG5TXIR.js';
43
- import { resolveAgentDir, findWorkspaceRoot, workspaceConfigFilename, resolveSkWorkspaceConfig } from '../chunk-AZODLVKH.js';
44
- import { SKAILE_MANIFEST_FILENAME, decodeSkaileManifest } from '../chunk-H5YXL4KI.js';
45
- import { parseFrontmatter } from '../chunk-4AGIEU7V.js';
46
- import { ASSET_KINDS, parseAssetRef, isValidAssetName, ASSET_NAME_HINT, assetRefToStr } from '../chunk-LFDZYCEO.js';
39
+ import { AssetManager } from '../chunk-7B3CL5JT.js';
40
+ import '../chunk-WEQN6EWW.js';
41
+ import { readLock, resolveSettings, globalSettingsPath, projectSettingsPath, loadSettings, saveSettings, portableSpawn, portableSpawnSync, WorkspaceYamlEditor } from '../chunk-2Q6OY3SU.js';
42
+ import '../chunk-5DPQ766L.js';
43
+ import { resolveAgentDir, findWorkspaceRoot, workspaceConfigFilename, resolveSkWorkspaceConfig } from '../chunk-56YT6CWS.js';
44
+ import { SKAILE_MANIFEST_FILENAME, decodeSkaileManifest } from '../chunk-SAXDHVJZ.js';
45
+ import { parseFrontmatter } from '../chunk-MAPRKFBD.js';
46
+ import { ASSET_KINDS, parseAssetRef, isValidAssetName, ASSET_NAME_HINT, assetRefToStr } from '../chunk-BM7XANVN.js';
47
47
  import '../chunk-XGCXFX7X.js';
48
48
  import { SUPPORTED_DRIVER_TARGETS } from '../chunk-O4JH3KUE.js';
49
49
  import { DRIVER_DEFAULTS } from '../chunk-K5GBV4SA.js';
@@ -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-XQQRHYDW.js');
324
+ const { getStoreConfig: getStoreConfig2, storeFetch: storeFetch2 } = await import('../store-client-4GKV4LOD.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-B7BLYXYK.js');
512
+ const { resolveCatalogSource } = await import('../open-library-5WWTBHQD.js');
513
513
  let resolved;
514
514
  try {
515
515
  resolved = await resolveCatalogSource({ projectDir });
@@ -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-WWOJXWG7.js');
1502
+ const { ensurePluginsLoaded } = await import('../plugin-store-R2WLXRT3.js');
1503
1503
  const result = await ensurePluginsLoaded(projectDir, config.plugins, pluginRegistry);
1504
1504
  for (const f of result.failed) logWarn(f.error);
1505
1505
  }
@@ -2865,7 +2865,27 @@ var ORIGIN_META = {
2865
2865
  };
2866
2866
  var ORIGIN_ORDER = ["library", "source", "store"];
2867
2867
  var srcKey = (origin, publisher) => `${origin}:${publisher}`;
2868
- var repoKey = (origin, publisher, repo) => `${origin}:${publisher}:${repo}`;
2868
+ var domainKey = (origin, publisher, slug) => `${origin}:${publisher}:dom:${slug}`;
2869
+ var NO_DOMAIN = "";
2870
+ var domainRegistry = /* @__PURE__ */ new Map();
2871
+ function relationBadge(relation) {
2872
+ if (relation === "additions") return pc5.dim("[") + pc5.green("add") + pc5.dim("]");
2873
+ if (relation === "alternatives") return pc5.dim("[") + pc5.yellow("alt") + pc5.dim("]");
2874
+ if (relation === "sequence") return pc5.dim("[") + pc5.blue("seq") + pc5.dim("]");
2875
+ return "";
2876
+ }
2877
+ function relationGlyph(relation, seq) {
2878
+ if (relation === "additions") return pc5.green("[add]");
2879
+ if (relation === "alternatives") return pc5.yellow("\u25B7alt");
2880
+ if (relation === "sequence") return pc5.blue(`\u21E3${seq ?? "?"}`);
2881
+ return "";
2882
+ }
2883
+ function relationGlyphText(relation, seq) {
2884
+ if (relation === "additions") return "[add]";
2885
+ if (relation === "alternatives") return "\u25B7alt";
2886
+ if (relation === "sequence") return `\u21E3${seq ?? "?"}`;
2887
+ return "";
2888
+ }
2869
2889
  var am;
2870
2890
  var state = {
2871
2891
  tab: "assets",
@@ -2878,34 +2898,37 @@ var state = {
2878
2898
  pendingRemoves: /* @__PURE__ */ new Set(),
2879
2899
  collapsedOrigins: /* @__PURE__ */ new Set(),
2880
2900
  collapsedSources: /* @__PURE__ */ new Set(),
2881
- collapsedRepos: /* @__PURE__ */ new Set(),
2901
+ collapsedDomains: /* @__PURE__ */ new Set(),
2902
+ expandedDomainInfo: /* @__PURE__ */ new Set(),
2882
2903
  seenOrigins: /* @__PURE__ */ new Set(),
2883
2904
  originFilter: null,
2884
2905
  message: "",
2885
2906
  cols: 80,
2886
2907
  awaitingExitConfirm: false
2887
2908
  };
2888
- function buildVisibleRows(rows, collapsedOrigins, collapsedSources, collapsedRepos, originFilter = null) {
2909
+ function buildVisibleRows(rows, collapsedOrigins, collapsedSources, collapsedDomains, originFilter = null) {
2889
2910
  return rows.filter((row) => {
2890
2911
  const origin = rowOrigin(row);
2891
2912
  if (originFilter && origin !== originFilter) return false;
2892
2913
  if (row.type === "origin-header") return true;
2893
2914
  if (collapsedOrigins.has(origin)) return false;
2894
2915
  if (row.type === "publisher-header") return true;
2895
- if (row.type === "repo-header") {
2896
- return !collapsedSources.has(srcKey(origin, row.source));
2916
+ if (collapsedSources.has(srcKey(origin, row.source ?? rowPublisher(row)))) return false;
2917
+ if (row.type === "domain-header") return true;
2918
+ if (row.type === "domain-info") {
2919
+ return !collapsedDomains.has(domainKey(origin, row.source, row.domainSlug ?? NO_DOMAIN));
2920
+ }
2921
+ if (row.underDomain) {
2922
+ return !collapsedDomains.has(domainKey(origin, rowPublisher(row), rowDomain(row)));
2897
2923
  }
2898
- const publisher = rowPublisher(row);
2899
- if (collapsedSources.has(srcKey(origin, publisher))) return false;
2900
- const repo = rowRepo(row);
2901
- return repo === "" || !collapsedRepos.has(repoKey(origin, publisher, repo));
2924
+ return true;
2902
2925
  });
2903
2926
  }
2904
2927
  function originAssetRefs(rows, origin) {
2905
2928
  return refsOf(rows.filter((r) => isAsset(r) && rowOrigin(r) === origin));
2906
2929
  }
2907
- function repoAssetRefs(rows, origin, publisher, repo) {
2908
- return refsOf(rows.filter((r) => isAsset(r) && inRepo(r, origin, publisher, repo)));
2930
+ function domainAssetRefs(rows, origin, publisher, slug) {
2931
+ return refsOf(rows.filter((r) => isAsset(r) && inDomain(r, origin, publisher, slug)));
2909
2932
  }
2910
2933
  function sourceAssetRefs(rows, origin, source) {
2911
2934
  return refsOf(rows.filter((r) => isAsset(r) && inSource(r, origin, source)));
@@ -2919,8 +2942,8 @@ function rowOrigin(r) {
2919
2942
  function rowPublisher(r) {
2920
2943
  return r.entry?.publisher || "other";
2921
2944
  }
2922
- function rowRepo(r) {
2923
- return r.entry?.repo || "";
2945
+ function rowDomain(r) {
2946
+ return r.entry?.domainSlug || NO_DOMAIN;
2924
2947
  }
2925
2948
  function refsOf(rows) {
2926
2949
  return rows.map((r) => assetRefOf(r)).filter((ref) => ref !== null);
@@ -2928,9 +2951,9 @@ function refsOf(rows) {
2928
2951
  function inSource(r, origin, source) {
2929
2952
  return rowOrigin(r) === origin && rowPublisher(r) === source;
2930
2953
  }
2931
- function inRepo(r, origin, publisher, repo) {
2954
+ function inDomain(r, origin, publisher, slug) {
2932
2955
  if (!inSource(r, origin, publisher)) return false;
2933
- return rowRepo(r) === repo;
2956
+ return rowDomain(r) === slug;
2934
2957
  }
2935
2958
  function assetRefOf(r) {
2936
2959
  if (!isAsset(r) || !r.entry?.publisher) return null;
@@ -2984,63 +3007,71 @@ function actOnHeader(row, action3) {
2984
3007
  bulkSelection(sourceAssetRefs(state.assetRows, rowOrigin(row), row.source), action3);
2985
3008
  return true;
2986
3009
  }
2987
- if (row.type === "repo-header") {
2988
- bulkSelection(repoAssetRefs(state.assetRows, rowOrigin(row), row.source, row.repo), action3);
2989
- return true;
2990
- }
2991
- return false;
3010
+ return row.type === "domain-header" || row.type === "domain-info";
2992
3011
  }
2993
3012
  async function loadAssets() {
2994
- const { gatherAssetFeeds } = await import('../asset-feeds-DX5JPM76.js');
2995
- const { entries, notes } = await gatherAssetFeeds(am, am.projectDir);
3013
+ const { gatherAssetFeeds } = await import('../asset-feeds-PCLTE2W5.js');
3014
+ const { entries, domains, notes } = await gatherAssetFeeds(am, am.projectDir);
2996
3015
  if (notes.length > 0) {
2997
3016
  state.message = notes.map((n) => `[${n.feed}] ${n.message}`).join(" \u2022 ");
2998
3017
  }
3018
+ domainRegistry = new Map(domains.map((d) => [d.slug, d]));
2999
3019
  const installed = new Set(am.listDeployed().map((e) => `${e.kind}:${e.name}`));
3000
- const byOrigin = groupEntriesByOriginPublisherRepo(entries);
3020
+ const byOrigin = groupEntriesByOriginPublisherDomain(entries);
3001
3021
  const rows = buildAssetRowsFromGroups(byOrigin, installed);
3002
3022
  state.assetRows = rows;
3003
3023
  reconcileCollapsedSets(rows);
3004
3024
  rebuildVisible();
3005
3025
  }
3006
- function groupEntriesByOriginPublisherRepo(entries) {
3026
+ function groupEntriesByOriginPublisherDomain(entries) {
3007
3027
  const byOrigin = /* @__PURE__ */ new Map();
3008
3028
  for (const { origin, entry } of entries) {
3009
3029
  const publisher = entry.publisher || "other";
3010
- const repo = entry.repo || "";
3030
+ const slug = entry.domainSlug || NO_DOMAIN;
3011
3031
  if (!byOrigin.has(origin)) byOrigin.set(origin, /* @__PURE__ */ new Map());
3012
3032
  const byPublisher = byOrigin.get(origin);
3013
3033
  if (!byPublisher.has(publisher)) byPublisher.set(publisher, /* @__PURE__ */ new Map());
3014
- const byRepo = byPublisher.get(publisher);
3015
- if (!byRepo.has(repo)) byRepo.set(repo, []);
3016
- byRepo.get(repo).push(entry);
3034
+ const byDomain = byPublisher.get(publisher);
3035
+ if (!byDomain.has(slug)) byDomain.set(slug, []);
3036
+ byDomain.get(slug).push(entry);
3017
3037
  }
3018
3038
  return byOrigin;
3019
3039
  }
3040
+ function sortedDomainSlugs(slugs) {
3041
+ return slugs.filter((s) => s !== NO_DOMAIN).sort((a, b) => {
3042
+ const oa = domainRegistry.get(a)?.order ?? Number.MAX_SAFE_INTEGER;
3043
+ const ob = domainRegistry.get(b)?.order ?? Number.MAX_SAFE_INTEGER;
3044
+ return oa !== ob ? oa - ob : a.localeCompare(b);
3045
+ });
3046
+ }
3020
3047
  function buildAssetRowsFromGroups(byOrigin, installed) {
3021
3048
  const rows = [];
3049
+ const sortItems = (items) => items.sort(
3050
+ (a, b) => a.kind !== b.kind ? a.kind.localeCompare(b.kind) : a.name.localeCompare(b.name)
3051
+ );
3052
+ const pushAsset = (origin, entry, underDomain, seq) => {
3053
+ const ref = `${entry.kind}:${entry.name}`;
3054
+ rows.push({ type: "asset", origin, entry, installed: installed.has(ref), underDomain, seq });
3055
+ };
3022
3056
  for (const origin of ORIGIN_ORDER) {
3023
3057
  const byPublisher = byOrigin.get(origin);
3024
3058
  if (!byPublisher || byPublisher.size === 0) continue;
3025
3059
  rows.push({ type: "origin-header", origin });
3026
- for (const [publisher, byRepo] of [...byPublisher.entries()].sort(
3060
+ for (const [publisher, byDomain] of [...byPublisher.entries()].sort(
3027
3061
  (a, b) => a[0].localeCompare(b[0])
3028
3062
  )) {
3029
3063
  rows.push({ type: "publisher-header", origin, source: publisher });
3030
- const pushAssets = (items) => {
3031
- items.sort(
3032
- (a, b) => a.kind !== b.kind ? a.kind.localeCompare(b.kind) : a.name.localeCompare(b.name)
3033
- );
3034
- for (const entry of items) {
3035
- const ref = `${entry.kind}:${entry.name}`;
3036
- rows.push({ type: "asset", origin, entry, installed: installed.has(ref) });
3064
+ const loose = byDomain.get(NO_DOMAIN);
3065
+ if (loose) for (const entry of sortItems(loose)) pushAsset(origin, entry, false);
3066
+ for (const slug of sortedDomainSlugs([...byDomain.keys()])) {
3067
+ const meta = domainRegistry.get(slug);
3068
+ rows.push({ type: "domain-header", origin, source: publisher, domainSlug: slug });
3069
+ if (meta?.description) {
3070
+ rows.push({ type: "domain-info", origin, source: publisher, domainSlug: slug });
3037
3071
  }
3038
- };
3039
- const noRepo = byRepo.get("");
3040
- if (noRepo) pushAssets(noRepo);
3041
- for (const [repo, items] of [...byRepo.entries()].filter(([r]) => r !== "").sort((a, b) => a[0].localeCompare(b[0]))) {
3042
- rows.push({ type: "repo-header", origin, source: publisher, repo });
3043
- pushAssets(items);
3072
+ const items = sortItems(byDomain.get(slug));
3073
+ const sequenced = meta?.relation === "sequence";
3074
+ items.forEach((entry, i) => pushAsset(origin, entry, true, sequenced ? i + 1 : void 0));
3044
3075
  }
3045
3076
  }
3046
3077
  }
@@ -3064,18 +3095,20 @@ function reconcileCollapsedSets(rows) {
3064
3095
  for (const s of state.collapsedSources) {
3065
3096
  if (!newSources.has(s)) state.collapsedSources.delete(s);
3066
3097
  }
3067
- const newRepoKeys = new Set(
3068
- rows.filter((r) => r.type === "repo-header").map((r) => repoKey(rowOrigin(r), r.source, r.repo))
3098
+ const newDomainKeys = new Set(
3099
+ rows.filter((r) => r.type === "domain-header").map((r) => domainKey(rowOrigin(r), r.source, r.domainSlug ?? NO_DOMAIN))
3069
3100
  );
3070
- for (const d of state.collapsedRepos) {
3071
- if (!newRepoKeys.has(d)) state.collapsedRepos.delete(d);
3101
+ for (const d of state.collapsedDomains) {
3102
+ if (!newDomainKeys.has(d)) state.collapsedDomains.delete(d);
3103
+ }
3104
+ for (const d of state.expandedDomainInfo) {
3105
+ if (!newDomainKeys.has(d)) state.expandedDomainInfo.delete(d);
3072
3106
  }
3073
- for (const d of newRepoKeys) state.collapsedRepos.add(d);
3074
3107
  }
3075
3108
  async function loadSourcesAndLibraries() {
3076
3109
  try {
3077
3110
  const [{ openLibraryManager: openLibraryManager2 }, { skaileHomeDir: skaileHomeDir2 }] = await Promise.all([
3078
- import('../open-library-B7BLYXYK.js'),
3111
+ import('../open-library-5WWTBHQD.js'),
3079
3112
  import('../library/index.js')
3080
3113
  ]);
3081
3114
  const { manager, library, close } = await openLibraryManager2();
@@ -3115,7 +3148,7 @@ function rebuildVisible() {
3115
3148
  state.assetRows,
3116
3149
  state.collapsedOrigins,
3117
3150
  state.collapsedSources,
3118
- state.collapsedRepos,
3151
+ state.collapsedDomains,
3119
3152
  state.originFilter
3120
3153
  );
3121
3154
  clampCursor();
@@ -3140,7 +3173,7 @@ var TABS = {
3140
3173
  rowCount: () => state.visibleRows.length,
3141
3174
  selectableCount: () => state.assetRows.filter(isAsset).length,
3142
3175
  renderRow: (i, sel) => renderAssetRow(state.visibleRows[i], sel),
3143
- footer: " \u2191\u2193/jk nav \u2190/\u2192 collapse/expand [space/+/-] select [a/\u21B5] apply [i] info [1]lib [2]src [3]store [0]all Tab switch [q] quit"
3176
+ footer: " \u2191\u2193/jk nav \u2190/\u2192 collapse/expand [space/+/-] select [a/\u21B5] apply [d] domain info [i] info [1]lib [2]src [3]store [0]all Tab [q] quit"
3144
3177
  },
3145
3178
  sources: {
3146
3179
  label: "Sources",
@@ -3247,19 +3280,35 @@ function renderAssetRow(row, selected) {
3247
3280
  selected
3248
3281
  });
3249
3282
  }
3250
- if (row.type === "repo-header") {
3283
+ if (row.type === "domain-header") {
3251
3284
  const origin = rowOrigin(row);
3252
- const slug = row.repo;
3253
- const bare = slug.includes("/") ? slug.slice(slug.indexOf("/") + 1) : slug;
3285
+ const slug = row.domainSlug ?? NO_DOMAIN;
3286
+ const meta = domainRegistry.get(slug);
3287
+ const title = meta?.title || slug || "(no domain)";
3288
+ const badge2 = relationBadge(meta?.relation);
3289
+ const label = `${pc5.magenta("\u25C8")} ${pc5.bold(title)}${badge2 ? ` ${badge2}` : ""}`;
3254
3290
  return renderHeaderLine({
3255
3291
  indent: " ".repeat(5),
3256
- collapsed: state.collapsedRepos.has(repoKey(origin, row.source, slug)),
3257
- match: (r) => isAsset(r) && inRepo(r, origin, row.source, slug),
3258
- refs: repoAssetRefs(state.assetRows, origin, row.source, slug),
3259
- label: pc5.bold(bare),
3292
+ collapsed: state.collapsedDomains.has(domainKey(origin, row.source, slug)),
3293
+ match: (r) => isAsset(r) && inDomain(r, origin, row.source, slug),
3294
+ refs: domainAssetRefs(state.assetRows, origin, row.source, slug),
3295
+ label,
3260
3296
  selected
3261
3297
  });
3262
3298
  }
3299
+ if (row.type === "domain-info") {
3300
+ const origin = rowOrigin(row);
3301
+ const slug = row.domainSlug ?? NO_DOMAIN;
3302
+ const key = domainKey(origin, row.source, slug);
3303
+ const line2 = renderDomainInfoLine(
3304
+ domainRegistry.get(slug),
3305
+ origin,
3306
+ row.source,
3307
+ slug,
3308
+ state.expandedDomainInfo.has(key)
3309
+ );
3310
+ return selected ? pc5.inverse(line2.padEnd(state.cols)) : line2;
3311
+ }
3263
3312
  const e = row.entry;
3264
3313
  const ref = assetRefOf(row) ?? "";
3265
3314
  let status4;
@@ -3267,15 +3316,41 @@ function renderAssetRow(row, selected) {
3267
3316
  else if (state.pendingRemoves.has(ref)) status4 = pc5.red("- ");
3268
3317
  else if (row.installed) status4 = pc5.green("\u2713 ");
3269
3318
  else status4 = pc5.dim("\xB7 ");
3319
+ const dm = row.underDomain ? domainRegistry.get(rowDomain(row)) : void 0;
3320
+ const recommended = !!dm?.recommendedRef && dm.recommendedRef === ref;
3321
+ const hintStr = [relationGlyph(dm?.relation, row.seq), recommended ? pc5.yellow("\u2605") : ""].filter(Boolean).join(" ");
3322
+ const hintWidthText = [relationGlyphText(dm?.relation, row.seq), recommended ? "\u2605" : ""].filter(Boolean).join(" ");
3323
+ const hint = hintStr ? `${hintStr} ` : "";
3324
+ const hintWidth = hintWidthText ? hintWidthText.length + 1 : 0;
3270
3325
  const kind = kindColorPad(e.kind);
3271
3326
  const name = fitWidth(e.name, 30);
3272
3327
  const badge = e.category ? `${pc5.dim("[")}${pc5.cyan(e.category)}${pc5.dim("]")} ` : "";
3273
3328
  const badgeWidth = e.category ? e.category.length + 3 : 0;
3274
- const desc = e.description?.slice(0, Math.max(0, state.cols - 56 - badgeWidth)) ?? "";
3275
- const indent = " ".repeat(e.repo ? 7 : 5);
3276
- const line = `${indent}${status4} ${kind} ${name} ${badge}${pc5.dim(desc)}`;
3329
+ const repoBare = e.repo ? e.repo.includes("/") ? e.repo.slice(e.repo.indexOf("/") + 1) : e.repo : "";
3330
+ const repoBadge = repoBare ? pc5.dim(` \xB7${repoBare}`) : "";
3331
+ const repoWidth = repoBare ? repoBare.length + 2 : 0;
3332
+ const desc = e.description?.slice(0, Math.max(0, state.cols - 56 - badgeWidth - hintWidth - repoWidth)) ?? "";
3333
+ const indent = " ".repeat(row.underDomain ? 7 : 5);
3334
+ const line = `${indent}${status4} ${hint}${kind} ${name} ${badge}${pc5.dim(desc)}${repoBadge}`;
3277
3335
  return selected ? pc5.inverse(line.padEnd(state.cols)) : line;
3278
3336
  }
3337
+ function renderDomainInfoLine(meta, origin, publisher, slug, expanded) {
3338
+ const indent = " ".repeat(7);
3339
+ const desc = meta?.description ?? "";
3340
+ if (!expanded) {
3341
+ const budget2 = Math.max(0, state.cols - indent.length - 12);
3342
+ const shown2 = desc.length > budget2 ? `${desc.slice(0, Math.max(0, budget2 - 1))}\u2026` : desc;
3343
+ return pc5.dim(`${indent}\u24D8 ${shown2} [d]`);
3344
+ }
3345
+ const members = domainAssetRefs(state.assetRows, origin, publisher, slug).length;
3346
+ const parts = [desc, `${members} members`];
3347
+ if (meta?.recommendedRef) parts.push(`\u2605 ${meta.recommendedRef}`);
3348
+ if (meta?.sidecarSource) parts.push(`sidecar ${meta.sidecarSource}`);
3349
+ const full = parts.join(" \xB7 ");
3350
+ const budget = Math.max(0, state.cols - indent.length - 3);
3351
+ const shown = full.length > budget ? `${full.slice(0, Math.max(0, budget - 1))}\u2026` : full;
3352
+ return pc5.dim(`${indent}\u24D8 ${shown}`);
3353
+ }
3279
3354
  function renderSourceRow(row, selected) {
3280
3355
  const line = ` ${S.cmd(fitWidth(row.name, 20))} ${pc5.dim(row.ownership.padEnd(12))} ${pc5.dim(`${row.assetCount} assets`)} ${pc5.dim(row.path)}`;
3281
3356
  return selected ? pc5.inverse(line.padEnd(state.cols)) : line;
@@ -3449,10 +3524,10 @@ function expandUnderCursor() {
3449
3524
  } else if (row.type === "publisher-header" && state.collapsedSources.has(srcKey(origin, row.source))) {
3450
3525
  state.collapsedSources.delete(srcKey(origin, row.source));
3451
3526
  rebuildVisible();
3452
- } else if (row.type === "repo-header") {
3453
- const dk = repoKey(origin, row.source, row.repo);
3454
- if (state.collapsedRepos.has(dk)) {
3455
- state.collapsedRepos.delete(dk);
3527
+ } else if (row.type === "domain-header") {
3528
+ const dk = domainKey(origin, row.source, row.domainSlug ?? NO_DOMAIN);
3529
+ if (state.collapsedDomains.has(dk)) {
3530
+ state.collapsedDomains.delete(dk);
3456
3531
  rebuildVisible();
3457
3532
  }
3458
3533
  }
@@ -3483,10 +3558,10 @@ function collapseOrJumpUnderCursor() {
3483
3558
  }
3484
3559
  return;
3485
3560
  }
3486
- if (row.type === "repo-header") {
3487
- const dk = repoKey(origin, row.source, row.repo);
3488
- if (!state.collapsedRepos.has(dk)) {
3489
- state.collapsedRepos.add(dk);
3561
+ if (row.type === "domain-header") {
3562
+ const dk = domainKey(origin, row.source, row.domainSlug ?? NO_DOMAIN);
3563
+ if (!state.collapsedDomains.has(dk)) {
3564
+ state.collapsedDomains.add(dk);
3490
3565
  rebuildVisible();
3491
3566
  } else {
3492
3567
  const idx2 = findLastIndex(
@@ -3501,10 +3576,28 @@ function collapseOrJumpUnderCursor() {
3501
3576
  const idx = findLastIndex(
3502
3577
  state.visibleRows,
3503
3578
  state.cursor,
3504
- (r) => r.type === "repo-header" || r.type === "publisher-header" || r.type === "origin-header"
3579
+ (r) => r.type === "domain-header" || r.type === "publisher-header" || r.type === "origin-header"
3505
3580
  );
3506
3581
  if (idx >= 0) state.cursor = idx;
3507
3582
  }
3583
+ function toggleDomainInfoUnderCursor() {
3584
+ const row = state.visibleRows[state.cursor];
3585
+ if (!row) return;
3586
+ const origin = rowOrigin(row);
3587
+ let key = null;
3588
+ if (row.type === "domain-header" || row.type === "domain-info") {
3589
+ key = domainKey(origin, row.source, row.domainSlug ?? NO_DOMAIN);
3590
+ } else if (row.type === "asset" && row.underDomain) {
3591
+ key = domainKey(origin, rowPublisher(row), rowDomain(row));
3592
+ }
3593
+ if (!key) {
3594
+ state.message = pc5.dim("No domain here \u2014 [d] opens a domain's info region.");
3595
+ return;
3596
+ }
3597
+ if (state.expandedDomainInfo.has(key)) state.expandedDomainInfo.delete(key);
3598
+ else state.expandedDomainInfo.add(key);
3599
+ rebuildVisible();
3600
+ }
3508
3601
  function findLastIndex(arr, endExclusive, pred) {
3509
3602
  for (let i = Math.min(endExclusive, arr.length) - 1; i >= 0; i--) {
3510
3603
  if (pred(arr[i])) return i;
@@ -3603,6 +3696,8 @@ var KEYMAP = [
3603
3696
  { keys: ["\r", "\n"], when: TAB_ASSETS, run: applyChanges },
3604
3697
  // Info — assets only
3605
3698
  { keys: ["i"], when: TAB_ASSETS, run: showInfo },
3699
+ // Domain info region — assets only. Toggles the ⓘ line truncated ↔ full.
3700
+ { keys: ["d"], when: TAB_ASSETS, run: toggleDomainInfoUnderCursor },
3606
3701
  // Origin filter — assets only. 1/2/3 isolate one origin, 0 clears.
3607
3702
  { keys: ["1"], when: TAB_ASSETS, run: () => setOriginFilter("library") },
3608
3703
  { keys: ["2"], when: TAB_ASSETS, run: () => setOriginFilter("source") },
@@ -3877,7 +3972,7 @@ function action2(fn) {
3877
3972
  };
3878
3973
  }
3879
3974
  async function reconcileAndReport(projectDir, plugins) {
3880
- const { reconcilePlugins } = await import('../plugin-store-WWOJXWG7.js');
3975
+ const { reconcilePlugins } = await import('../plugin-store-R2WLXRT3.js');
3881
3976
  if (plugins.length === 0) {
3882
3977
  logInfo("No plugins declared \u2014 nothing to reconcile.");
3883
3978
  return;
@@ -3893,7 +3988,7 @@ async function reconcileAndReport(projectDir, plugins) {
3893
3988
  async function runInstall2(spec, opts) {
3894
3989
  const projectDir = path12__default.resolve(opts.projectDir);
3895
3990
  const { WorkspaceYamlEditor: WorkspaceYamlEditor2 } = await import('../core/index.js');
3896
- const { specName } = await import('../plugin-store-WWOJXWG7.js');
3991
+ const { specName } = await import('../plugin-store-R2WLXRT3.js');
3897
3992
  const yamlPath = path12__default.join(projectDir, "skaile.yaml");
3898
3993
  const editor = WorkspaceYamlEditor2.load(yamlPath);
3899
3994
  const replaced = editor.addPlugin(spec, specName);
@@ -3905,7 +4000,7 @@ async function runInstall2(spec, opts) {
3905
4000
  async function runRemove(name, opts) {
3906
4001
  const projectDir = path12__default.resolve(opts.projectDir);
3907
4002
  const { WorkspaceYamlEditor: WorkspaceYamlEditor2 } = await import('../core/index.js');
3908
- const { specName } = await import('../plugin-store-WWOJXWG7.js');
4003
+ const { specName } = await import('../plugin-store-R2WLXRT3.js');
3909
4004
  const yamlPath = path12__default.join(projectDir, "skaile.yaml");
3910
4005
  const editor = WorkspaceYamlEditor2.load(yamlPath);
3911
4006
  const removed = editor.removePlugin(name, specName);
@@ -3933,7 +4028,7 @@ async function runList(opts) {
3933
4028
  const registry = createPluginRegistry();
3934
4029
  if (declared.length > 0) {
3935
4030
  try {
3936
- const { loadPlugins } = await import('../plugin-store-WWOJXWG7.js');
4031
+ const { loadPlugins } = await import('../plugin-store-R2WLXRT3.js');
3937
4032
  const result = await loadPlugins(projectDir, declared, registry);
3938
4033
  for (const f of result.failed) logWarn(f.error);
3939
4034
  } catch (err) {
@@ -4165,7 +4260,7 @@ async function runRefInstall(ref, opts) {
4165
4260
  const spinner5 = p5.spinner();
4166
4261
  spinner5.start(`Installing ${ref}`);
4167
4262
  try {
4168
- const { openCatalogSource: openCatalogSource2, openLibrary: openLibrary2 } = await import('../open-library-B7BLYXYK.js');
4263
+ const { openCatalogSource: openCatalogSource2, openLibrary: openLibrary2 } = await import('../open-library-5WWTBHQD.js');
4169
4264
  const catalog = await openCatalogSource2({ projectDir: path12__default.resolve(opts.projectDir) });
4170
4265
  if (!supportsInstallManifest(catalog)) {
4171
4266
  throw new Error(
@@ -4197,7 +4292,7 @@ async function runRefInstall(ref, opts) {
4197
4292
  async function runYamlInstall(opts) {
4198
4293
  const projectDir = path12__default.resolve(opts.projectDir);
4199
4294
  try {
4200
- const { ensureSourcesCloned } = await import('../ensure-sources-O6RMWP6C.js');
4295
+ const { ensureSourcesCloned } = await import('../ensure-sources-HMMEQEZC.js');
4201
4296
  const hydrate = ensureSourcesCloned(projectDir, { quiet: true });
4202
4297
  if (hydrate.cloned.length > 0) {
4203
4298
  logOk(`Cloned source(s): ${hydrate.cloned.join(", ")}`);
@@ -4634,7 +4729,7 @@ async function ensurePluginsLoadedForServe(projectDir) {
4634
4729
  const { resolveSkWorkspaceConfig: resolveSkWorkspaceConfig2 } = await import('../core/index.js');
4635
4730
  const config = resolveSkWorkspaceConfig2(projectDir);
4636
4731
  if (!config.plugins || config.plugins.length === 0) return;
4637
- const { ensurePluginsLoaded } = await import('../plugin-store-WWOJXWG7.js');
4732
+ const { ensurePluginsLoaded } = await import('../plugin-store-R2WLXRT3.js');
4638
4733
  const { pluginRegistry } = await import('../plugin-registry/index.js');
4639
4734
  const result = await ensurePluginsLoaded(projectDir, config.plugins, pluginRegistry);
4640
4735
  if (result.loaded.length > 0) {
@@ -4655,7 +4750,7 @@ async function runCompileTest(opts) {
4655
4750
  const { unlinkSync, existsSync: existsSync12 } = await import('fs');
4656
4751
  const { spawn } = await import('child_process');
4657
4752
  const { portableSpawnSync: portableSpawnSync2 } = await import('../core/index.js');
4658
- const { MONOREPO_ROOT } = await import('../paths-5IUR235S.js');
4753
+ const { MONOREPO_ROOT } = await import('../paths-UC3ZHLKC.js');
4659
4754
  if (MONOREPO_ROOT === null) {
4660
4755
  logErr2("--compile-test is only available inside the skaile-dev workspace.");
4661
4756
  logInfo2("Run it from a checkout of skaile-ai/skaile-dev (the monorepo shell).");
@@ -6728,7 +6823,7 @@ async function bootstrapUserConfig() {
6728
6823
  }
6729
6824
  async function hydrateInitSources(resolved, created) {
6730
6825
  try {
6731
- const { ensureSourcesCloned } = await import('../ensure-sources-O6RMWP6C.js');
6826
+ const { ensureSourcesCloned } = await import('../ensure-sources-HMMEQEZC.js');
6732
6827
  const hydrate = ensureSourcesCloned(resolved, { quiet: true });
6733
6828
  for (const n of hydrate.cloned) created.push(`~/.skaile/sources/${n}/`);
6734
6829
  if (hydrate.failed.length > 0) {
@@ -6756,7 +6851,7 @@ function printInitSummary(resolved, projectDir, created) {
6756
6851
  console.log();
6757
6852
  }
6758
6853
  program.command("setup").description("Interactive provider setup wizard").action(async () => {
6759
- const { cmdSetup } = await import('../setup-2RD6EDBZ.js');
6854
+ const { cmdSetup } = await import('../setup-BSDHVMR6.js');
6760
6855
  await cmdSetup([], { projectDir: process.cwd() });
6761
6856
  });
6762
6857
  program.addCommand(makeInstallCommand());