@skaile/workspaces 0.40.2 → 0.41.1

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 (128) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/dist/{asset-feeds-NOHUJ4XZ.js → asset-feeds-5AL623RN.js} +11 -11
  3. package/dist/{asset-feeds-NOHUJ4XZ.js.map → asset-feeds-5AL623RN.js.map} +1 -1
  4. package/dist/asset-manager/index.js +9 -9
  5. package/dist/asset-manager/installer.js +8 -8
  6. package/dist/{chunk-HL66R2P2.js → chunk-2PXSZYKV.js} +17 -8
  7. package/dist/chunk-2PXSZYKV.js.map +1 -0
  8. package/dist/{chunk-O66LT7UI.js → chunk-5PGFAYN3.js} +5 -5
  9. package/dist/{chunk-O66LT7UI.js.map → chunk-5PGFAYN3.js.map} +1 -1
  10. package/dist/{chunk-MAPRKFBD.js → chunk-B5PEERRZ.js} +18 -3
  11. package/dist/chunk-B5PEERRZ.js.map +1 -0
  12. package/dist/{chunk-CFCSDZYF.js → chunk-DUAB2AFV.js} +4 -4
  13. package/dist/{chunk-CFCSDZYF.js.map → chunk-DUAB2AFV.js.map} +1 -1
  14. package/dist/{chunk-SAXDHVJZ.js → chunk-DZCK7GRW.js} +3 -3
  15. package/dist/{chunk-SAXDHVJZ.js.map → chunk-DZCK7GRW.js.map} +1 -1
  16. package/dist/{chunk-4A2LAEX6.js → chunk-FIMEPG6J.js} +4 -4
  17. package/dist/{chunk-4A2LAEX6.js.map → chunk-FIMEPG6J.js.map} +1 -1
  18. package/dist/{chunk-BM7XANVN.js → chunk-GEEW6SY2.js} +10 -3
  19. package/dist/chunk-GEEW6SY2.js.map +1 -0
  20. package/dist/{chunk-XNMABEHH.js → chunk-IGNSNZPG.js} +5 -5
  21. package/dist/{chunk-XNMABEHH.js.map → chunk-IGNSNZPG.js.map} +1 -1
  22. package/dist/{chunk-USEFGACS.js → chunk-KZPMBTQL.js} +7 -7
  23. package/dist/{chunk-USEFGACS.js.map → chunk-KZPMBTQL.js.map} +1 -1
  24. package/dist/{chunk-FBIQ4QPF.js → chunk-MWEB2TZ7.js} +15 -15
  25. package/dist/chunk-MWEB2TZ7.js.map +1 -0
  26. package/dist/{chunk-XZNPKJXU.js → chunk-OL2BXZZV.js} +4 -4
  27. package/dist/{chunk-XZNPKJXU.js.map → chunk-OL2BXZZV.js.map} +1 -1
  28. package/dist/{chunk-23WP47VA.js → chunk-OZVZA64O.js} +2 -2
  29. package/dist/{chunk-23WP47VA.js.map → chunk-OZVZA64O.js.map} +1 -1
  30. package/dist/{chunk-J5DB4KHE.js → chunk-PIAWSWLQ.js} +5 -5
  31. package/dist/{chunk-J5DB4KHE.js.map → chunk-PIAWSWLQ.js.map} +1 -1
  32. package/dist/{chunk-WLWHOA3S.js → chunk-QGDCLTK2.js} +4 -4
  33. package/dist/{chunk-WLWHOA3S.js.map → chunk-QGDCLTK2.js.map} +1 -1
  34. package/dist/{chunk-CBXZB3G5.js → chunk-RVXP5KN5.js} +3 -3
  35. package/dist/{chunk-CBXZB3G5.js.map → chunk-RVXP5KN5.js.map} +1 -1
  36. package/dist/{chunk-KYC6JH75.js → chunk-UKJMQZV6.js} +3 -3
  37. package/dist/{chunk-KYC6JH75.js.map → chunk-UKJMQZV6.js.map} +1 -1
  38. package/dist/{chunk-2DYJ7BJG.js → chunk-WCFB2EPJ.js} +42 -11
  39. package/dist/chunk-WCFB2EPJ.js.map +1 -0
  40. package/dist/{chunk-HAXQAC6D.js → chunk-XPHQSIFZ.js} +3 -3
  41. package/dist/{chunk-HAXQAC6D.js.map → chunk-XPHQSIFZ.js.map} +1 -1
  42. package/dist/{chunk-C54IAYEU.js → chunk-Y2OCHNEH.js} +3 -3
  43. package/dist/{chunk-C54IAYEU.js.map → chunk-Y2OCHNEH.js.map} +1 -1
  44. package/dist/{chunk-EAWENE2K.js → chunk-ZFZ2BFQQ.js} +4 -4
  45. package/dist/{chunk-EAWENE2K.js.map → chunk-ZFZ2BFQQ.js.map} +1 -1
  46. package/dist/cli/index.js +95 -74
  47. package/dist/cli/index.js.map +1 -1
  48. package/dist/cli/src/commands/source.d.ts.map +1 -1
  49. package/dist/connectors/config.js +8 -8
  50. package/dist/connectors/index.js +9 -9
  51. package/dist/core/index.js +7 -7
  52. package/dist/core/manifest.js +2 -2
  53. package/dist/core/models.js +1 -1
  54. package/dist/core/publish-manifest.js +2 -2
  55. package/dist/core/ref.d.ts +2 -0
  56. package/dist/core/ref.js +29 -0
  57. package/dist/core/ref.js.map +1 -0
  58. package/dist/core/runtime-assets.js +5 -5
  59. package/dist/core/src/index.d.ts +1 -1
  60. package/dist/core/src/index.d.ts.map +1 -1
  61. package/dist/core/src/manifest.d.ts +0 -14
  62. package/dist/core/src/manifest.d.ts.map +1 -1
  63. package/dist/core/src/models.d.ts +20 -0
  64. package/dist/core/src/models.d.ts.map +1 -1
  65. package/dist/core/src/ref.d.ts +25 -0
  66. package/dist/core/src/ref.d.ts.map +1 -0
  67. package/dist/core/src/walker.d.ts.map +1 -1
  68. package/dist/core/workspace-config.js +4 -4
  69. package/dist/deploy/index.js +7 -7
  70. package/dist/discovery/index.js +4 -4
  71. package/dist/{ensure-sources-XITKRBLU.js → ensure-sources-P2O7ATDO.js} +13 -13
  72. package/dist/{ensure-sources-XITKRBLU.js.map → ensure-sources-P2O7ATDO.js.map} +1 -1
  73. package/dist/factory-assets/connectors/deploy.js +9 -9
  74. package/dist/factory-assets/connectors/devserver.js +9 -9
  75. package/dist/factory-assets/connectors/flow/adapter.js +9 -9
  76. package/dist/factory-assets/connectors/flow/engine.js +7 -7
  77. package/dist/factory-assets/connectors/flow/run-flow.js +10 -10
  78. package/dist/factory-assets/connectors/flow.js +9 -9
  79. package/dist/factory-assets/connectors/git.js +9 -9
  80. package/dist/factory-assets/connectors/gmail.js +9 -9
  81. package/dist/factory-assets/connectors/googledrive.js +9 -9
  82. package/dist/factory-assets/connectors/local.js +9 -9
  83. package/dist/factory-assets/connectors/mattermost.js +9 -9
  84. package/dist/factory-assets/connectors/memory.js +9 -9
  85. package/dist/factory-assets/connectors/minio.js +9 -9
  86. package/dist/factory-assets/connectors/postgres.js +9 -9
  87. package/dist/factory-assets/connectors/s3.js +9 -9
  88. package/dist/factory-assets/connectors/sharepoint.js +9 -9
  89. package/dist/factory-assets/connectors/sqlite.js +9 -9
  90. package/dist/factory-assets/connectors/static-server.js +9 -9
  91. package/dist/factory-assets/connectors/tunnel.js +9 -9
  92. package/dist/factory-assets/connectors/webdav.js +9 -9
  93. package/dist/factory-assets/connectors/xstate-store.js +9 -9
  94. package/dist/factory-assets/connectors/xstate.js +9 -9
  95. package/dist/{flows-BOJMGLRI.js → flows-2HE7KTMA.js} +4 -4
  96. package/dist/{flows-BOJMGLRI.js.map → flows-2HE7KTMA.js.map} +1 -1
  97. package/dist/library/index.js +11 -11
  98. package/dist/library/install.js +8 -8
  99. package/dist/open-library-XBZTS6OM.js +23 -0
  100. package/dist/{open-library-5KJOZHG7.js.map → open-library-XBZTS6OM.js.map} +1 -1
  101. package/dist/paths-FUTWU7TP.js +15 -0
  102. package/dist/{paths-66ZDGXK3.js.map → paths-FUTWU7TP.js.map} +1 -1
  103. package/dist/{plugin-store-BOQXW3XV.js → plugin-store-ULRBL4YO.js} +9 -9
  104. package/dist/{plugin-store-BOQXW3XV.js.map → plugin-store-ULRBL4YO.js.map} +1 -1
  105. package/dist/runner/index.js +11 -11
  106. package/dist/runner/src/serve.d.ts.map +1 -1
  107. package/dist/sdk/asset-manager.js +9 -9
  108. package/dist/sdk/core.js +7 -7
  109. package/dist/sdk/flow.js +7 -7
  110. package/dist/sdk/index.js +11 -11
  111. package/dist/sdk/runner.js +11 -11
  112. package/dist/{setup-JIGNL3O4.js → setup-VIECJRD7.js} +9 -9
  113. package/dist/{setup-JIGNL3O4.js.map → setup-VIECJRD7.js.map} +1 -1
  114. package/dist/store-client-UG2GRPXB.js +15 -0
  115. package/dist/{store-client-ODJJK5XS.js.map → store-client-UG2GRPXB.js.map} +1 -1
  116. package/dist/tui/index.js +11 -11
  117. package/dist/workspace-plugin/adapters/mcp.js +2 -2
  118. package/dist/workspace-plugin/adapters/omp.js +3 -3
  119. package/dist/workspace-plugin/index.js +1 -1
  120. package/package.json +7 -1
  121. package/dist/chunk-2DYJ7BJG.js.map +0 -1
  122. package/dist/chunk-BM7XANVN.js.map +0 -1
  123. package/dist/chunk-FBIQ4QPF.js.map +0 -1
  124. package/dist/chunk-HL66R2P2.js.map +0 -1
  125. package/dist/chunk-MAPRKFBD.js.map +0 -1
  126. package/dist/open-library-5KJOZHG7.js +0 -23
  127. package/dist/paths-66ZDGXK3.js +0 -15
  128. package/dist/store-client-ODJJK5XS.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-XZNPKJXU.js';
2
+ import { openCatalogSource, openLibraryManager, createFullRegistry, openLibrary } from '../chunk-OL2BXZZV.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-C54IAYEU.js';
5
- import { AI_RESOURCES, aiResourceRoots } from '../chunk-CBXZB3G5.js';
4
+ import { getStoreConfig, storeFetch, saveStoreTokens, clearStoreTokens, isStoreAuthenticated } from '../chunk-Y2OCHNEH.js';
5
+ import { AI_RESOURCES, aiResourceRoots } from '../chunk-RVXP5KN5.js';
6
6
  import { LocalSecretsProvider } from '../chunk-6BEGKO2Q.js';
7
- import { resolveLibraryDir, LocalCatalogSource, skaileHomeDir } from '../chunk-O66LT7UI.js';
8
- import '../chunk-XNMABEHH.js';
9
- import '../chunk-KYC6JH75.js';
10
- import '../chunk-R7FOF242.js';
7
+ import { resolveLibraryDir, LocalCatalogSource, skaileHomeDir } from '../chunk-5PGFAYN3.js';
8
+ import '../chunk-IGNSNZPG.js';
11
9
  import '../chunk-JXT46QFC.js';
12
- import { runFlow, resumeFlow } from '../chunk-J5DB4KHE.js';
10
+ import '../chunk-UKJMQZV6.js';
11
+ import '../chunk-R7FOF242.js';
12
+ import { runFlow, resumeFlow } from '../chunk-PIAWSWLQ.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-2DYJ7BJG.js';
16
- import { buildClaudePluginFiles } from '../chunk-23WP47VA.js';
15
+ import { runAgentChat, loadSessionById, loadSession, listSessions, setCurrentSession, deleteSession, clearSession, loadAgentManifest, compileComposition, MarkdownStreamer, resolveMixin } from '../chunk-WCFB2EPJ.js';
16
+ import { buildClaudePluginFiles } from '../chunk-OZVZA64O.js';
17
17
  import '../chunk-X5YPJV4N.js';
18
18
  import '../chunk-O7SG5PC2.js';
19
19
  import '../chunk-7QBNJTTQ.js';
@@ -28,26 +28,26 @@ import '../chunk-BMQKMOQY.js';
28
28
  import '../chunk-GAH4YRCI.js';
29
29
  import '../chunk-KM6DCR7A.js';
30
30
  import '../chunk-LV2HPH3C.js';
31
- import '../chunk-EAWENE2K.js';
31
+ import '../chunk-ZFZ2BFQQ.js';
32
32
  import '../chunk-OVRSNIKJ.js';
33
- import '../chunk-WLWHOA3S.js';
33
+ import '../chunk-QGDCLTK2.js';
34
34
  import '../chunk-C5UK3JK7.js';
35
35
  import '../chunk-6E6PKKAD.js';
36
36
  import { loadFlow, loadAllFlows } from '../chunk-X46FY45B.js';
37
37
  import '../chunk-DEYYRFQU.js';
38
38
  import '../chunk-IFGTRL2I.js';
39
- import { AssetManager } from '../chunk-USEFGACS.js';
40
- import '../chunk-4A2LAEX6.js';
41
- import { readLock, resolveSettings, globalSettingsPath, projectSettingsPath, loadSettings, saveSettings, portableSpawn, portableSpawnSync, WorkspaceYamlEditor } from '../chunk-FBIQ4QPF.js';
42
- import '../chunk-CFCSDZYF.js';
43
- import { resolveAgentDir, findWorkspaceRoot, workspaceConfigFilename, resolveSkWorkspaceConfig } from '../chunk-HL66R2P2.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';
39
+ import { AssetManager } from '../chunk-KZPMBTQL.js';
40
+ import '../chunk-FIMEPG6J.js';
41
+ import { readLock, resolveSettings, globalSettingsPath, projectSettingsPath, loadSettings, saveSettings, portableSpawn, portableSpawnSync, WorkspaceYamlEditor } from '../chunk-MWEB2TZ7.js';
42
+ import { assetSearchDirs, detectDomains } from '../chunk-ZAP2BDHG.js';
43
+ import '../chunk-DUAB2AFV.js';
44
+ import { resolveAgentDir, findWorkspaceRoot, workspaceConfigFilename, resolveSkWorkspaceConfig } from '../chunk-2PXSZYKV.js';
45
+ import { SKAILE_MANIFEST_FILENAME, decodeSkaileManifest } from '../chunk-DZCK7GRW.js';
46
+ import { parseFrontmatter } from '../chunk-B5PEERRZ.js';
47
+ import { ASSET_KINDS, parseAssetRef, isValidAssetName, ASSET_NAME_HINT, assetRefToStr } from '../chunk-GEEW6SY2.js';
47
48
  import '../chunk-XGCXFX7X.js';
48
49
  import { SUPPORTED_DRIVER_TARGETS } from '../chunk-O4JH3KUE.js';
49
50
  import { DRIVER_DEFAULTS } from '../chunk-K5GBV4SA.js';
50
- import { assetSearchDirs, detectDomains } from '../chunk-ZAP2BDHG.js';
51
51
  import { openSqlite } from '../chunk-JB35MVBN.js';
52
52
  import '../chunk-KTBKW2FI.js';
53
53
  import '../chunk-UQ6LFBPZ.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-ODJJK5XS.js');
324
+ const { getStoreConfig: getStoreConfig2, storeFetch: storeFetch2 } = await import('../store-client-UG2GRPXB.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-5KJOZHG7.js');
512
+ const { resolveCatalogSource } = await import('../open-library-XBZTS6OM.js');
513
513
  let resolved;
514
514
  try {
515
515
  resolved = await resolveCatalogSource({ projectDir });
@@ -760,13 +760,13 @@ function collectWorkspaceDefaults(projectDir) {
760
760
  const wsDefaults = {};
761
761
  try {
762
762
  const ws = resolveSkWorkspaceConfig(projectDir);
763
- const p7 = ws.agent_config?.default ?? {};
764
- if (p7.driver) wsDefaults.driver = p7.driver;
765
- if (p7.provider) wsDefaults.provider = p7.provider;
766
- if (p7.model) wsDefaults.model = p7.model;
767
- if (p7.skills_dir) wsDefaults.skills_dir = p7.skills_dir;
768
- if (p7.agents_dir) wsDefaults.agents_dir = p7.agents_dir;
769
- if (p7.prompts_dir) wsDefaults.prompts_dir = p7.prompts_dir;
763
+ const p8 = ws.agent_config?.default ?? {};
764
+ if (p8.driver) wsDefaults.driver = p8.driver;
765
+ if (p8.provider) wsDefaults.provider = p8.provider;
766
+ if (p8.model) wsDefaults.model = p8.model;
767
+ if (p8.skills_dir) wsDefaults.skills_dir = p8.skills_dir;
768
+ if (p8.agents_dir) wsDefaults.agents_dir = p8.agents_dir;
769
+ if (p8.prompts_dir) wsDefaults.prompts_dir = p8.prompts_dir;
770
770
  } catch {
771
771
  }
772
772
  return wsDefaults;
@@ -1499,7 +1499,7 @@ async function ensureTargetsRegistered(projectDir) {
1499
1499
  const { resolveSkWorkspaceConfig: resolveSkWorkspaceConfig2 } = await import('../core/index.js');
1500
1500
  const config = resolveSkWorkspaceConfig2(projectDir);
1501
1501
  if (config.plugins && config.plugins.length > 0) {
1502
- const { ensurePluginsLoaded } = await import('../plugin-store-BOQXW3XV.js');
1502
+ const { ensurePluginsLoaded } = await import('../plugin-store-ULRBL4YO.js');
1503
1503
  const result = await ensurePluginsLoaded(projectDir, config.plugins, pluginRegistry);
1504
1504
  for (const f of result.failed) logWarn(f.error);
1505
1505
  }
@@ -1708,10 +1708,10 @@ var MCP_SERVER_ENTRY = {
1708
1708
  function pluginDir(projectDir) {
1709
1709
  return path12__default.join(projectDir, ".claude", "plugins", "skaile");
1710
1710
  }
1711
- async function readJsonStrict(p7) {
1711
+ async function readJsonStrict(p8) {
1712
1712
  let raw;
1713
1713
  try {
1714
- raw = await fs5.readFile(p7, "utf-8");
1714
+ raw = await fs5.readFile(p8, "utf-8");
1715
1715
  } catch {
1716
1716
  return null;
1717
1717
  }
@@ -1719,13 +1719,13 @@ async function readJsonStrict(p7) {
1719
1719
  return JSON.parse(raw);
1720
1720
  } catch (e) {
1721
1721
  throw new Error(
1722
- `cannot parse ${p7}: ${e instanceof Error ? e.message : String(e)}; please fix or remove`
1722
+ `cannot parse ${p8}: ${e instanceof Error ? e.message : String(e)}; please fix or remove`
1723
1723
  );
1724
1724
  }
1725
1725
  }
1726
- async function writeJson(p7, value) {
1727
- await fs5.mkdir(path12__default.dirname(p7), { recursive: true });
1728
- await fs5.writeFile(p7, `${JSON.stringify(value, null, 2)}
1726
+ async function writeJson(p8, value) {
1727
+ await fs5.mkdir(path12__default.dirname(p8), { recursive: true });
1728
+ await fs5.writeFile(p8, `${JSON.stringify(value, null, 2)}
1729
1729
  `);
1730
1730
  }
1731
1731
  async function copyDir(src, dest) {
@@ -1780,7 +1780,7 @@ async function uninstall(projectDir) {
1780
1780
  let changed = false;
1781
1781
  const settings = await readJsonStrict(settingsPath);
1782
1782
  if (settings && Array.isArray(settings.plugins)) {
1783
- const next = settings.plugins.filter((p7) => p7 !== dir);
1783
+ const next = settings.plugins.filter((p8) => p8 !== dir);
1784
1784
  if (next.length !== settings.plugins.length) {
1785
1785
  changed = true;
1786
1786
  const updated = { ...settings, plugins: next };
@@ -1827,7 +1827,7 @@ async function enable(projectDir) {
1827
1827
  const settings = await readJsonStrict(settingsPath) ?? {};
1828
1828
  if (detected.method === "plugin") {
1829
1829
  const disabled2 = settings.disabledPlugins ?? [];
1830
- const next2 = disabled2.filter((p7) => p7 !== detected.pluginPath);
1830
+ const next2 = disabled2.filter((p8) => p8 !== detected.pluginPath);
1831
1831
  if (next2.length === disabled2.length) return { changed: false };
1832
1832
  const updated2 = { ...settings, disabledPlugins: next2 };
1833
1833
  if (next2.length === 0) delete updated2.disabledPlugins;
@@ -1908,10 +1908,10 @@ function buildEntry(projectDir) {
1908
1908
  env: { SKAILE_PROJECT_DIR: projectDir }
1909
1909
  };
1910
1910
  }
1911
- async function readConfig(p7) {
1911
+ async function readConfig(p8) {
1912
1912
  let raw;
1913
1913
  try {
1914
- raw = await fs5.readFile(p7, "utf-8");
1914
+ raw = await fs5.readFile(p8, "utf-8");
1915
1915
  } catch {
1916
1916
  return null;
1917
1917
  }
@@ -1919,41 +1919,41 @@ async function readConfig(p7) {
1919
1919
  return parse$1(raw);
1920
1920
  } catch (e) {
1921
1921
  throw new Error(
1922
- `cannot parse ${p7}: ${e instanceof Error ? e.message : String(e)}; please fix or remove`
1922
+ `cannot parse ${p8}: ${e instanceof Error ? e.message : String(e)}; please fix or remove`
1923
1923
  );
1924
1924
  }
1925
1925
  }
1926
- async function writeConfig(p7, value) {
1927
- await fs5.mkdir(path12__default.dirname(p7), { recursive: true });
1926
+ async function writeConfig(p8, value) {
1927
+ await fs5.mkdir(path12__default.dirname(p8), { recursive: true });
1928
1928
  const cleaned = {};
1929
1929
  for (const [k, v] of Object.entries(value)) {
1930
1930
  if (v === void 0) continue;
1931
1931
  cleaned[k] = v;
1932
1932
  }
1933
- await fs5.writeFile(p7, stringify(cleaned));
1933
+ await fs5.writeFile(p8, stringify(cleaned));
1934
1934
  }
1935
1935
  function configPath(projectDir) {
1936
1936
  return path12__default.join(projectDir, ".codex", "config.toml");
1937
1937
  }
1938
1938
  async function install2(projectDir) {
1939
- const p7 = configPath(projectDir);
1940
- const cfg = await readConfig(p7) ?? {};
1939
+ const p8 = configPath(projectDir);
1940
+ const cfg = await readConfig(p8) ?? {};
1941
1941
  const next = buildEntry(projectDir);
1942
1942
  const servers = { ...cfg.mcp_servers ?? {} };
1943
1943
  const previous = servers[SKAILE_MCP_NAME2];
1944
1944
  const matches = previous && JSON.stringify(previous) === JSON.stringify(next);
1945
1945
  let warning;
1946
1946
  if (previous && !matches) {
1947
- warning = `overwrote existing ${SKAILE_MCP_NAME2} entry in ${path12__default.relative(projectDir, p7)}`;
1947
+ warning = `overwrote existing ${SKAILE_MCP_NAME2} entry in ${path12__default.relative(projectDir, p8)}`;
1948
1948
  }
1949
1949
  if (matches) return { changed: false, method: "toml" };
1950
1950
  servers[SKAILE_MCP_NAME2] = next;
1951
- await writeConfig(p7, { ...cfg, mcp_servers: servers });
1951
+ await writeConfig(p8, { ...cfg, mcp_servers: servers });
1952
1952
  return { changed: true, method: "toml", warning };
1953
1953
  }
1954
1954
  async function uninstall2(projectDir) {
1955
- const p7 = configPath(projectDir);
1956
- const cfg = await readConfig(p7);
1955
+ const p8 = configPath(projectDir);
1956
+ const cfg = await readConfig(p8);
1957
1957
  if (!cfg?.mcp_servers || !(SKAILE_MCP_NAME2 in cfg.mcp_servers)) {
1958
1958
  return { changed: false };
1959
1959
  }
@@ -1961,15 +1961,15 @@ async function uninstall2(projectDir) {
1961
1961
  const updated = { ...cfg, mcp_servers: rest };
1962
1962
  if (Object.keys(rest).length === 0) delete updated.mcp_servers;
1963
1963
  if (Object.keys(updated).length === 0) {
1964
- await fs5.unlink(p7);
1964
+ await fs5.unlink(p8);
1965
1965
  } else {
1966
- await writeConfig(p7, updated);
1966
+ await writeConfig(p8, updated);
1967
1967
  }
1968
1968
  return { changed: true };
1969
1969
  }
1970
1970
  async function status2(projectDir) {
1971
- const p7 = configPath(projectDir);
1972
- const cfg = await readConfig(p7);
1971
+ const p8 = configPath(projectDir);
1972
+ const cfg = await readConfig(p8);
1973
1973
  const installed = !!(cfg?.mcp_servers && SKAILE_MCP_NAME2 in cfg.mcp_servers);
1974
1974
  if (!installed) {
1975
1975
  return {
@@ -1985,7 +1985,7 @@ async function status2(projectDir) {
1985
1985
  installed: "yes",
1986
1986
  enabled: "n/a",
1987
1987
  method: "mcp",
1988
- location: path12__default.relative(projectDir, p7)
1988
+ location: path12__default.relative(projectDir, p8)
1989
1989
  };
1990
1990
  }
1991
1991
  async function install3(projectDir) {
@@ -2202,7 +2202,7 @@ function printStatusTable(rows) {
2202
2202
  const widths = cols.map(
2203
2203
  (c) => Math.max(c.header.length, ...rows.map((r) => String(r[c.key] ?? "").length))
2204
2204
  );
2205
- const fmtRow = (parts) => parts.map((p7, i) => p7.padEnd(widths[i] ?? p7.length)).join(" ");
2205
+ const fmtRow = (parts) => parts.map((p8, i) => p8.padEnd(widths[i] ?? p8.length)).join(" ");
2206
2206
  console.log();
2207
2207
  console.log(` ${S.heading(fmtRow(cols.map((c) => c.header)))}`);
2208
2208
  for (const r of rows) {
@@ -3011,7 +3011,7 @@ function actOnHeader(row, action3) {
3011
3011
  return row.type === "domain-header" || row.type === "domain-info";
3012
3012
  }
3013
3013
  async function loadAssets() {
3014
- const { gatherAssetFeeds } = await import('../asset-feeds-NOHUJ4XZ.js');
3014
+ const { gatherAssetFeeds } = await import('../asset-feeds-5AL623RN.js');
3015
3015
  const { entries, domains, notes } = await gatherAssetFeeds(am, am.projectDir);
3016
3016
  if (notes.length > 0) {
3017
3017
  state.message = notes.map((n) => `[${n.feed}] ${n.message}`).join(" \u2022 ");
@@ -3109,7 +3109,7 @@ function reconcileCollapsedSets(rows) {
3109
3109
  async function loadSourcesAndLibraries() {
3110
3110
  try {
3111
3111
  const [{ openLibraryManager: openLibraryManager2 }, { skaileHomeDir: skaileHomeDir2 }] = await Promise.all([
3112
- import('../open-library-5KJOZHG7.js'),
3112
+ import('../open-library-XBZTS6OM.js'),
3113
3113
  import('../library/index.js')
3114
3114
  ]);
3115
3115
  const { manager, library, close } = await openLibraryManager2();
@@ -3974,7 +3974,7 @@ function action2(fn) {
3974
3974
  };
3975
3975
  }
3976
3976
  async function reconcileAndReport(projectDir, plugins) {
3977
- const { reconcilePlugins } = await import('../plugin-store-BOQXW3XV.js');
3977
+ const { reconcilePlugins } = await import('../plugin-store-ULRBL4YO.js');
3978
3978
  if (plugins.length === 0) {
3979
3979
  logInfo("No plugins declared \u2014 nothing to reconcile.");
3980
3980
  return;
@@ -3990,7 +3990,7 @@ async function reconcileAndReport(projectDir, plugins) {
3990
3990
  async function runInstall2(spec, opts) {
3991
3991
  const projectDir = path12__default.resolve(opts.projectDir);
3992
3992
  const { WorkspaceYamlEditor: WorkspaceYamlEditor2 } = await import('../core/index.js');
3993
- const { specName } = await import('../plugin-store-BOQXW3XV.js');
3993
+ const { specName } = await import('../plugin-store-ULRBL4YO.js');
3994
3994
  const yamlPath = path12__default.join(projectDir, "skaile.yaml");
3995
3995
  const editor = WorkspaceYamlEditor2.load(yamlPath);
3996
3996
  const replaced = editor.addPlugin(spec, specName);
@@ -4002,7 +4002,7 @@ async function runInstall2(spec, opts) {
4002
4002
  async function runRemove(name, opts) {
4003
4003
  const projectDir = path12__default.resolve(opts.projectDir);
4004
4004
  const { WorkspaceYamlEditor: WorkspaceYamlEditor2 } = await import('../core/index.js');
4005
- const { specName } = await import('../plugin-store-BOQXW3XV.js');
4005
+ const { specName } = await import('../plugin-store-ULRBL4YO.js');
4006
4006
  const yamlPath = path12__default.join(projectDir, "skaile.yaml");
4007
4007
  const editor = WorkspaceYamlEditor2.load(yamlPath);
4008
4008
  const removed = editor.removePlugin(name, specName);
@@ -4030,7 +4030,7 @@ async function runList(opts) {
4030
4030
  const registry = createPluginRegistry();
4031
4031
  if (declared.length > 0) {
4032
4032
  try {
4033
- const { loadPlugins } = await import('../plugin-store-BOQXW3XV.js');
4033
+ const { loadPlugins } = await import('../plugin-store-ULRBL4YO.js');
4034
4034
  const result = await loadPlugins(projectDir, declared, registry);
4035
4035
  for (const f of result.failed) logWarn(f.error);
4036
4036
  } catch (err) {
@@ -4262,7 +4262,7 @@ async function runRefInstall(ref, opts) {
4262
4262
  const spinner5 = p5.spinner();
4263
4263
  spinner5.start(`Installing ${ref}`);
4264
4264
  try {
4265
- const { openCatalogSource: openCatalogSource2, openLibrary: openLibrary2 } = await import('../open-library-5KJOZHG7.js');
4265
+ const { openCatalogSource: openCatalogSource2, openLibrary: openLibrary2 } = await import('../open-library-XBZTS6OM.js');
4266
4266
  const catalog = await openCatalogSource2({ projectDir: path12__default.resolve(opts.projectDir) });
4267
4267
  if (!supportsInstallManifest(catalog)) {
4268
4268
  throw new Error(
@@ -4294,7 +4294,7 @@ async function runRefInstall(ref, opts) {
4294
4294
  async function runYamlInstall(opts) {
4295
4295
  const projectDir = path12__default.resolve(opts.projectDir);
4296
4296
  try {
4297
- const { ensureSourcesCloned } = await import('../ensure-sources-XITKRBLU.js');
4297
+ const { ensureSourcesCloned } = await import('../ensure-sources-P2O7ATDO.js');
4298
4298
  const hydrate = ensureSourcesCloned(projectDir, { quiet: true });
4299
4299
  if (hydrate.cloned.length > 0) {
4300
4300
  logOk(`Cloned source(s): ${hydrate.cloned.join(", ")}`);
@@ -4731,7 +4731,7 @@ async function ensurePluginsLoadedForServe(projectDir) {
4731
4731
  const { resolveSkWorkspaceConfig: resolveSkWorkspaceConfig2 } = await import('../core/index.js');
4732
4732
  const config = resolveSkWorkspaceConfig2(projectDir);
4733
4733
  if (!config.plugins || config.plugins.length === 0) return;
4734
- const { ensurePluginsLoaded } = await import('../plugin-store-BOQXW3XV.js');
4734
+ const { ensurePluginsLoaded } = await import('../plugin-store-ULRBL4YO.js');
4735
4735
  const { pluginRegistry } = await import('../plugin-registry/index.js');
4736
4736
  const result = await ensurePluginsLoaded(projectDir, config.plugins, pluginRegistry);
4737
4737
  if (result.loaded.length > 0) {
@@ -4752,7 +4752,7 @@ async function runCompileTest(opts) {
4752
4752
  const { unlinkSync, existsSync: existsSync12 } = await import('fs');
4753
4753
  const { spawn } = await import('child_process');
4754
4754
  const { portableSpawnSync: portableSpawnSync2 } = await import('../core/index.js');
4755
- const { MONOREPO_ROOT } = await import('../paths-66ZDGXK3.js');
4755
+ const { MONOREPO_ROOT } = await import('../paths-FUTWU7TP.js');
4756
4756
  if (MONOREPO_ROOT === null) {
4757
4757
  logErr2("--compile-test is only available inside the skaile-dev workspace.");
4758
4758
  logInfo2("Run it from a checkout of skaile-ai/skaile-dev (the monorepo shell).");
@@ -5770,14 +5770,35 @@ function makeSourceCommand() {
5770
5770
  opts.purge ? `Removed source "${slug}" and purged its clone.` : `Removed source "${slug}" from skaile.yaml (clone left in ~/.skaile/sources/).`
5771
5771
  );
5772
5772
  });
5773
- cmd.command("sync [name]").description("Pull upstream changes and refresh the manifest cache").option("--dev", "Also index dev-only assets under each source's dev_paths", false).action(async (key, opts) => {
5773
+ cmd.command("sync [name]").description("Pull upstream changes and refresh the manifest cache").option("--dev", "Also index dev-only assets under each source's dev_paths", false).option("--all", "Sync every source without prompting", false).action(async (key, opts) => {
5774
5774
  const yamlPath = requireProjectYamlPath();
5775
- const all = readProjectSources(yamlPath);
5776
- const targets = key ? all.filter((s) => sourceMatchesKey(s, key)) : all;
5777
- if (targets.length === 0) {
5778
- logInfo(key ? `No source matching "${key}".` : "No sources in skaile.yaml.");
5775
+ const sources = readProjectSources(yamlPath);
5776
+ if (sources.length === 0) {
5777
+ logInfo("No sources in skaile.yaml.");
5779
5778
  return;
5780
5779
  }
5780
+ let targets;
5781
+ if (key) {
5782
+ targets = sources.filter((s) => sourceMatchesKey(s, key));
5783
+ if (targets.length === 0) {
5784
+ logInfo(`No source matching "${key}".`);
5785
+ return;
5786
+ }
5787
+ } else if (opts.all || sources.length === 1 || !process.stdin.isTTY) {
5788
+ targets = sources;
5789
+ } else {
5790
+ const selected = await p5.multiselect({
5791
+ message: "Select sources to sync",
5792
+ options: sources.map((s) => ({ value: s.url, label: deriveSlug(s.url), hint: s.url })),
5793
+ required: true
5794
+ });
5795
+ if (p5.isCancel(selected)) {
5796
+ p5.cancel("Cancelled.");
5797
+ return;
5798
+ }
5799
+ const picked = new Set(selected);
5800
+ targets = sources.filter((s) => picked.has(s.url));
5801
+ }
5781
5802
  for (const entry of targets) {
5782
5803
  const slug = deriveSlug(entry.url);
5783
5804
  const dest = sourceClonePath(slug);
@@ -6827,7 +6848,7 @@ async function bootstrapUserConfig() {
6827
6848
  }
6828
6849
  async function hydrateInitSources(resolved, created) {
6829
6850
  try {
6830
- const { ensureSourcesCloned } = await import('../ensure-sources-XITKRBLU.js');
6851
+ const { ensureSourcesCloned } = await import('../ensure-sources-P2O7ATDO.js');
6831
6852
  const hydrate = ensureSourcesCloned(resolved, { quiet: true });
6832
6853
  for (const n of hydrate.cloned) created.push(`~/.skaile/sources/${n}/`);
6833
6854
  if (hydrate.failed.length > 0) {
@@ -6855,7 +6876,7 @@ function printInitSummary(resolved, projectDir, created) {
6855
6876
  console.log();
6856
6877
  }
6857
6878
  program.command("setup").description("Interactive provider setup wizard").action(async () => {
6858
- const { cmdSetup } = await import('../setup-JIGNL3O4.js');
6879
+ const { cmdSetup } = await import('../setup-VIECJRD7.js');
6859
6880
  await cmdSetup([], { projectDir: process.cwd() });
6860
6881
  });
6861
6882
  program.addCommand(makeInstallCommand());