@skaile/workspaces 0.17.0 → 0.18.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 (94) hide show
  1. package/CHANGELOG.md +35 -0
  2. package/dist/{asset-feeds-L4ROBIAZ.js → asset-feeds-CQU46DYQ.js} +8 -8
  3. package/dist/{asset-feeds-L4ROBIAZ.js.map → asset-feeds-CQU46DYQ.js.map} +1 -1
  4. package/dist/asset-manager/index.js +6 -6
  5. package/dist/asset-manager/installer.js +5 -5
  6. package/dist/base-assets/connectors/deploy.js +6 -6
  7. package/dist/base-assets/connectors/devserver.js +6 -6
  8. package/dist/base-assets/connectors/flow/adapter.js +6 -6
  9. package/dist/base-assets/connectors/flow/run-flow.js +7 -7
  10. package/dist/base-assets/connectors/flow.js +6 -6
  11. package/dist/base-assets/connectors/git/driver.d.ts +6 -2
  12. package/dist/base-assets/connectors/git/driver.d.ts.map +1 -1
  13. package/dist/base-assets/connectors/git.js +6 -6
  14. package/dist/base-assets/connectors/gmail.js +6 -6
  15. package/dist/base-assets/connectors/googledrive.js +6 -6
  16. package/dist/base-assets/connectors/local.js +6 -6
  17. package/dist/base-assets/connectors/mattermost.js +6 -6
  18. package/dist/base-assets/connectors/memory.js +6 -6
  19. package/dist/base-assets/connectors/minio.js +6 -6
  20. package/dist/base-assets/connectors/postgres.js +6 -6
  21. package/dist/base-assets/connectors/redis.js +6 -6
  22. package/dist/base-assets/connectors/s3.js +6 -6
  23. package/dist/base-assets/connectors/sharepoint.js +6 -6
  24. package/dist/base-assets/connectors/sqlite.js +6 -6
  25. package/dist/base-assets/connectors/static-server.js +6 -6
  26. package/dist/base-assets/connectors/tunnel.js +6 -6
  27. package/dist/base-assets/connectors/webdav.js +6 -6
  28. package/dist/base-assets/connectors/xstate-store.js +6 -6
  29. package/dist/base-assets/connectors/xstate.js +6 -6
  30. package/dist/base-assets/connectors/yjs.js +6 -6
  31. package/dist/{chunk-GKIA2PU5.js → chunk-2GX7BE7Q.js} +3 -3
  32. package/dist/{chunk-GKIA2PU5.js.map → chunk-2GX7BE7Q.js.map} +1 -1
  33. package/dist/{chunk-76CUXLXI.js → chunk-63Y7YN33.js} +2 -2
  34. package/dist/{chunk-76CUXLXI.js.map → chunk-63Y7YN33.js.map} +1 -1
  35. package/dist/{chunk-4BRSVK7Q.js → chunk-ATTIX7H2.js} +3 -3
  36. package/dist/{chunk-4BRSVK7Q.js.map → chunk-ATTIX7H2.js.map} +1 -1
  37. package/dist/{chunk-FNCYNUGS.js → chunk-B3XHLXGD.js} +3 -3
  38. package/dist/{chunk-FNCYNUGS.js.map → chunk-B3XHLXGD.js.map} +1 -1
  39. package/dist/{chunk-J6T5YXLN.js → chunk-BCZRPFVQ.js} +8 -8
  40. package/dist/{chunk-J6T5YXLN.js.map → chunk-BCZRPFVQ.js.map} +1 -1
  41. package/dist/{chunk-ZHLRRT5D.js → chunk-FRPKLIEZ.js} +36 -3
  42. package/dist/chunk-FRPKLIEZ.js.map +1 -0
  43. package/dist/{chunk-SMFZFFIZ.js → chunk-FVWBLAXL.js} +3 -3
  44. package/dist/{chunk-SMFZFFIZ.js.map → chunk-FVWBLAXL.js.map} +1 -1
  45. package/dist/{chunk-6SCFOXJ5.js → chunk-I7HGX4ZE.js} +73 -6
  46. package/dist/chunk-I7HGX4ZE.js.map +1 -0
  47. package/dist/{chunk-42YLNYFK.js → chunk-KIGZYGCM.js} +4 -4
  48. package/dist/{chunk-42YLNYFK.js.map → chunk-KIGZYGCM.js.map} +1 -1
  49. package/dist/{chunk-SOQMVRQL.js → chunk-N2C3A5PS.js} +3 -3
  50. package/dist/{chunk-SOQMVRQL.js.map → chunk-N2C3A5PS.js.map} +1 -1
  51. package/dist/{chunk-PXABRXBP.js → chunk-OIIGCFYM.js} +5 -5
  52. package/dist/{chunk-PXABRXBP.js.map → chunk-OIIGCFYM.js.map} +1 -1
  53. package/dist/{chunk-IY4X7PZN.js → chunk-PBBGKI3L.js} +4 -4
  54. package/dist/{chunk-IY4X7PZN.js.map → chunk-PBBGKI3L.js.map} +1 -1
  55. package/dist/{chunk-KJ2LLWRF.js → chunk-VMUQAISH.js} +3 -3
  56. package/dist/{chunk-KJ2LLWRF.js.map → chunk-VMUQAISH.js.map} +1 -1
  57. package/dist/{chunk-3DS5VIQP.js → chunk-WGPT6FV6.js} +4 -4
  58. package/dist/{chunk-3DS5VIQP.js.map → chunk-WGPT6FV6.js.map} +1 -1
  59. package/dist/{chunk-DG7WFRUM.js → chunk-YVX66WNQ.js} +6 -6
  60. package/dist/{chunk-DG7WFRUM.js.map → chunk-YVX66WNQ.js.map} +1 -1
  61. package/dist/cli/index.js +73 -36
  62. package/dist/cli/index.js.map +1 -1
  63. package/dist/cli/src/commands/manage.d.ts +22 -2
  64. package/dist/cli/src/commands/manage.d.ts.map +1 -1
  65. package/dist/connectors/config.js +5 -5
  66. package/dist/connectors/index.js +6 -6
  67. package/dist/connectors/src/fleet-utils.d.ts +6 -9
  68. package/dist/connectors/src/fleet-utils.d.ts.map +1 -1
  69. package/dist/core/index.js +4 -4
  70. package/dist/core/manifest.js +1 -1
  71. package/dist/core/runtime-assets.js +3 -3
  72. package/dist/core/src/manifest.d.ts.map +1 -1
  73. package/dist/core/workspace-config.js +2 -2
  74. package/dist/discovery/index.js +2 -2
  75. package/dist/{ensure-sources-V26CZNJF.js → ensure-sources-HA6L3FBS.js} +8 -8
  76. package/dist/{ensure-sources-V26CZNJF.js.map → ensure-sources-HA6L3FBS.js.map} +1 -1
  77. package/dist/library/index.js +3 -3
  78. package/dist/{open-library-T6RXQJTQ.js → open-library-ICKZYC5K.js} +6 -6
  79. package/dist/{open-library-T6RXQJTQ.js.map → open-library-ICKZYC5K.js.map} +1 -1
  80. package/dist/runner/index.js +8 -8
  81. package/dist/sdk/asset-manager.js +6 -6
  82. package/dist/sdk/core.js +4 -4
  83. package/dist/sdk/index.js +8 -8
  84. package/dist/sdk/runner.js +8 -8
  85. package/dist/{setup-R6VWIPLL.js → setup-DT4VSWSM.js} +6 -6
  86. package/dist/{setup-R6VWIPLL.js.map → setup-DT4VSWSM.js.map} +1 -1
  87. package/dist/store-client-TZ4L73TH.js +14 -0
  88. package/dist/{store-client-FLD3XUY7.js.map → store-client-TZ4L73TH.js.map} +1 -1
  89. package/dist/tui/index.js +8 -8
  90. package/dist/workspace-plugin/index.js +1 -1
  91. package/package.json +1 -1
  92. package/dist/chunk-6SCFOXJ5.js.map +0 -1
  93. package/dist/chunk-ZHLRRT5D.js.map +0 -1
  94. package/dist/store-client-FLD3XUY7.js +0 -14
package/dist/cli/index.js CHANGED
@@ -1,18 +1,18 @@
1
1
  #!/usr/bin/env node
2
- import { openCatalogSource, openLibrary, createFullRegistry, openLibraryManager } from '../chunk-IY4X7PZN.js';
2
+ import { openCatalogSource, openLibrary, createFullRegistry, openLibraryManager } from '../chunk-PBBGKI3L.js';
3
3
  import { logErr, S, logOk, colorRef, logInfo, logWarn, kindColorPad, kindColor, formatRelativeTime } from '../chunk-4NDWKA64.js';
4
- import { getStoreConfig, storeFetch, saveStoreTokens, clearStoreTokens, isStoreAuthenticated } from '../chunk-SMFZFFIZ.js';
4
+ import { getStoreConfig, storeFetch, saveStoreTokens, clearStoreTokens, isStoreAuthenticated } from '../chunk-FVWBLAXL.js';
5
5
  import { AI_RESOURCES } from '../chunk-2M3XTMOL.js';
6
6
  import { LocalSecretsProvider } from '../chunk-JDX54X4Y.js';
7
- import { resolveLibraryDir, LocalCatalogSource, skaileHomeDir } from '../chunk-FNCYNUGS.js';
7
+ import { resolveLibraryDir, LocalCatalogSource, skaileHomeDir } from '../chunk-B3XHLXGD.js';
8
8
  import '../chunk-R7FOF242.js';
9
- import '../chunk-GKIA2PU5.js';
9
+ import '../chunk-2GX7BE7Q.js';
10
10
  import '../chunk-OKRUTSG7.js';
11
- import { runFlow, resumeFlow } from '../chunk-PXABRXBP.js';
11
+ import { runFlow, resumeFlow } from '../chunk-OIIGCFYM.js';
12
12
  import '../chunk-GCJXPUHG.js';
13
13
  import { validateFlowVersions, parseSkillFrontmatter } from '../chunk-IPUYL6TD.js';
14
- import { runAgentChat, loadSessionById, loadSession, listSessions, setCurrentSession, deleteSession, clearSession, loadAgentManifest, compileComposition, MarkdownStreamer, resolveMixin } from '../chunk-J6T5YXLN.js';
15
- import { buildClaudePluginFiles } from '../chunk-76CUXLXI.js';
14
+ import { runAgentChat, loadSessionById, loadSession, listSessions, setCurrentSession, deleteSession, clearSession, loadAgentManifest, compileComposition, MarkdownStreamer, resolveMixin } from '../chunk-BCZRPFVQ.js';
15
+ import { buildClaudePluginFiles } from '../chunk-63Y7YN33.js';
16
16
  import '../chunk-X5YPJV4N.js';
17
17
  import '../chunk-O7SG5PC2.js';
18
18
  import '../chunk-W2O5LWYU.js';
@@ -25,23 +25,23 @@ import '../chunk-DQWREFRQ.js';
25
25
  import '../chunk-KOVLSBXK.js';
26
26
  import '../chunk-RRVQAE5D.js';
27
27
  import '../chunk-4ACWI5YT.js';
28
- import '../chunk-6SCFOXJ5.js';
29
- import '../chunk-KJ2LLWRF.js';
28
+ import '../chunk-I7HGX4ZE.js';
29
+ import '../chunk-VMUQAISH.js';
30
30
  import '../chunk-6MB7CRME.js';
31
31
  import '../chunk-QAVZOJCV.js';
32
32
  import { loadAllFlows } from '../chunk-ICS76R4T.js';
33
33
  import '../chunk-GZWJGNNN.js';
34
34
  import '../chunk-FVTV7M76.js';
35
- import { AssetManager } from '../chunk-DG7WFRUM.js';
36
- import '../chunk-42YLNYFK.js';
37
- import { readLock, resolveSettings, globalSettingsPath, projectSettingsPath, loadSettings, saveSettings, portableSpawn, portableSpawnSync, WorkspaceYamlEditor } from '../chunk-4BRSVK7Q.js';
35
+ import { AssetManager } from '../chunk-YVX66WNQ.js';
36
+ import '../chunk-KIGZYGCM.js';
37
+ import { readLock, resolveSettings, globalSettingsPath, projectSettingsPath, loadSettings, saveSettings, portableSpawn, portableSpawnSync, WorkspaceYamlEditor } from '../chunk-ATTIX7H2.js';
38
38
  import '../chunk-JKNWJ64A.js';
39
39
  import { SUPPORTED_DRIVER_TARGETS } from '../chunk-O4JH3KUE.js';
40
40
  import { DRIVER_DEFAULTS } from '../chunk-K5GBV4SA.js';
41
41
  import '../chunk-KLNL7QHN.js';
42
- import '../chunk-3DS5VIQP.js';
43
- import { resolveSkWorkspaceConfig, resolveAgentDir, findWorkspaceRoot, workspaceConfigFilename } from '../chunk-SOQMVRQL.js';
44
- import '../chunk-ZHLRRT5D.js';
42
+ import '../chunk-WGPT6FV6.js';
43
+ import { resolveSkWorkspaceConfig, resolveAgentDir, findWorkspaceRoot, workspaceConfigFilename } from '../chunk-N2C3A5PS.js';
44
+ import '../chunk-FRPKLIEZ.js';
45
45
  import { ASSET_KINDS } from '../chunk-37JKX6D7.js';
46
46
  import { openSqlite } from '../chunk-24UIWON4.js';
47
47
  import '../chunk-KTBKW2FI.js';
@@ -308,7 +308,7 @@ function makeSearchCommand() {
308
308
  }
309
309
  if (showStore) {
310
310
  try {
311
- const { getStoreConfig: getStoreConfig2, storeFetch: storeFetch2 } = await import('../store-client-FLD3XUY7.js');
311
+ const { getStoreConfig: getStoreConfig2, storeFetch: storeFetch2 } = await import('../store-client-TZ4L73TH.js');
312
312
  const config = getStoreConfig2();
313
313
  const params = {};
314
314
  if (query) params.q = query;
@@ -470,7 +470,7 @@ function makeCatalogCommand() {
470
470
  const cfg = resolveConfig({ projectDir });
471
471
  const baseUrl = opts.url ?? cfg.catalog.url;
472
472
  if (isLocalCatalogUrl(baseUrl)) {
473
- const { resolveCatalogSource } = await import('../open-library-T6RXQJTQ.js');
473
+ const { resolveCatalogSource } = await import('../open-library-ICKZYC5K.js');
474
474
  let resolved;
475
475
  try {
476
476
  resolved = await resolveCatalogSource({ projectDir: opts.projectDir });
@@ -2039,12 +2039,35 @@ var state = {
2039
2039
  function buildVisibleRows(rows, collapsedSources, collapsedDomains) {
2040
2040
  return rows.filter((row) => {
2041
2041
  if (row.type === "source-header") return true;
2042
- if (row.type === "header") return !collapsedSources.has(row.source);
2043
- const source = row.entry?.repository ?? "other";
2044
- const domain = row.entry?.domain ?? "other";
2045
- return !collapsedSources.has(source) && !collapsedDomains.has(`${source}:${domain}`);
2042
+ if (row.type === "header") {
2043
+ if (collapsedSources.has(row.source)) return false;
2044
+ return !hasCollapsedAncestor(row.source, row.domain, collapsedDomains, true);
2045
+ }
2046
+ const source = row.entry?.repository || "other";
2047
+ const domain = row.entry?.domain || "other";
2048
+ if (collapsedSources.has(source)) return false;
2049
+ return !hasCollapsedAncestor(source, domain, collapsedDomains, false);
2046
2050
  });
2047
2051
  }
2052
+ function compareDomainPaths(a, b) {
2053
+ const A = a.split("/");
2054
+ const B = b.split("/");
2055
+ const len = Math.min(A.length, B.length);
2056
+ for (let i = 0; i < len; i++) {
2057
+ const c = A[i].localeCompare(B[i]);
2058
+ if (c !== 0) return c;
2059
+ }
2060
+ return A.length - B.length;
2061
+ }
2062
+ function hasCollapsedAncestor(source, domain, collapsedDomains, strict) {
2063
+ const segs = domain.split("/");
2064
+ const upper = strict ? segs.length : segs.length + 1;
2065
+ for (let i = 1; i < upper; i++) {
2066
+ const prefix = segs.slice(0, i).join("/");
2067
+ if (collapsedDomains.has(`${source}:${prefix}`)) return true;
2068
+ }
2069
+ return false;
2070
+ }
2048
2071
  function domainAssetRefs(rows, source, domain) {
2049
2072
  return rows.filter((r) => isAsset(r) && inDomain(r, source, domain)).map((r) => assetRefOf(r));
2050
2073
  }
@@ -2055,10 +2078,12 @@ function isAsset(r) {
2055
2078
  return r.type === "asset";
2056
2079
  }
2057
2080
  function inSource(r, source) {
2058
- return (r.entry?.repository ?? "other") === source;
2081
+ return (r.entry?.repository || "other") === source;
2059
2082
  }
2060
2083
  function inDomain(r, source, domain) {
2061
- return inSource(r, source) && (r.entry?.domain ?? "other") === domain;
2084
+ if (!inSource(r, source)) return false;
2085
+ const d = r.entry?.domain || "other";
2086
+ return d === domain || d.startsWith(`${domain}/`);
2062
2087
  }
2063
2088
  function assetRefOf(r) {
2064
2089
  if (!isAsset(r) || !r.entry) return null;
@@ -2111,7 +2136,7 @@ function actOnHeader(row, action) {
2111
2136
  return false;
2112
2137
  }
2113
2138
  async function loadAssets() {
2114
- const { gatherAssetFeeds } = await import('../asset-feeds-L4ROBIAZ.js');
2139
+ const { gatherAssetFeeds } = await import('../asset-feeds-CQU46DYQ.js');
2115
2140
  const { entries, notes } = await gatherAssetFeeds(am, am.projectDir);
2116
2141
  if (notes.length > 0) {
2117
2142
  state.message = notes.map((n) => `[${n.feed}] ${n.message}`).join(" \u2022 ");
@@ -2119,8 +2144,8 @@ async function loadAssets() {
2119
2144
  const installed = new Set(am.listDeployed().map((e) => `${e.kind}:${e.name}`));
2120
2145
  const bySource = /* @__PURE__ */ new Map();
2121
2146
  for (const e of entries) {
2122
- const source = e.repository ?? "other";
2123
- const domain = e.domain ?? "other";
2147
+ const source = e.repository || "other";
2148
+ const domain = e.domain || "other";
2124
2149
  if (!bySource.has(source)) bySource.set(source, /* @__PURE__ */ new Map());
2125
2150
  const domainMap = bySource.get(source);
2126
2151
  if (!domainMap.has(domain)) domainMap.set(domain, []);
@@ -2131,10 +2156,17 @@ async function loadAssets() {
2131
2156
  (a, b) => a[0].localeCompare(b[0])
2132
2157
  )) {
2133
2158
  rows.push({ type: "source-header", source });
2159
+ const emittedHeaders = /* @__PURE__ */ new Set();
2134
2160
  for (const [domain, items] of [...domainMap.entries()].sort(
2135
- (a, b) => a[0].localeCompare(b[0])
2161
+ (a, b) => compareDomainPaths(a[0], b[0])
2136
2162
  )) {
2137
- rows.push({ type: "header", source, domain });
2163
+ const segs = domain.split("/");
2164
+ for (let i = 1; i <= segs.length; i++) {
2165
+ const prefix = segs.slice(0, i).join("/");
2166
+ if (emittedHeaders.has(prefix)) continue;
2167
+ rows.push({ type: "header", source, domain: prefix, depth: i });
2168
+ emittedHeaders.add(prefix);
2169
+ }
2138
2170
  items.sort(
2139
2171
  (a, b) => a.kind !== b.kind ? a.kind.localeCompare(b.kind) : a.name.localeCompare(b.name)
2140
2172
  );
@@ -2161,7 +2193,7 @@ async function loadAssets() {
2161
2193
  async function loadSourcesAndLibraries() {
2162
2194
  try {
2163
2195
  const [{ openLibraryManager: openLibraryManager2 }, { skaileHomeDir: skaileHomeDir2 }] = await Promise.all([
2164
- import('../open-library-T6RXQJTQ.js'),
2196
+ import('../open-library-ICKZYC5K.js'),
2165
2197
  import('../library/index.js')
2166
2198
  ]);
2167
2199
  const { manager, library, close } = await openLibraryManager2();
@@ -2319,12 +2351,15 @@ function renderAssetRow(row, selected) {
2319
2351
  });
2320
2352
  }
2321
2353
  if (row.type === "header") {
2354
+ const depth2 = row.depth ?? 1;
2355
+ const segs = row.domain.split("/");
2356
+ const segment = segs[segs.length - 1];
2322
2357
  return renderHeaderLine({
2323
- indent: " ",
2358
+ indent: " ".repeat(1 + depth2 * 2),
2324
2359
  collapsed: state.collapsedDomains.has(`${row.source}:${row.domain}`),
2325
2360
  match: (r) => isAsset(r) && inDomain(r, row.source, row.domain),
2326
2361
  refs: domainAssetRefs(state.assetRows, row.source, row.domain),
2327
- label: pc5.bold(row.domain),
2362
+ label: pc5.bold(segment),
2328
2363
  selected
2329
2364
  });
2330
2365
  }
@@ -2338,7 +2373,9 @@ function renderAssetRow(row, selected) {
2338
2373
  const kind = kindColorPad(e.kind, 8);
2339
2374
  const name = e.name.padEnd(30);
2340
2375
  const desc = e.description?.slice(0, state.cols - 52) ?? "";
2341
- const line = ` ${status4} ${kind} ${name} ${pc5.dim(desc)}`;
2376
+ const depth = (e.domain || "other").split("/").length;
2377
+ const indent = " ".repeat(1 + (depth + 1) * 2);
2378
+ const line = `${indent}${status4} ${kind} ${name} ${pc5.dim(desc)}`;
2342
2379
  return selected ? pc5.inverse(line.padEnd(state.cols)) : line;
2343
2380
  }
2344
2381
  function renderSourceRow(row, selected) {
@@ -3640,7 +3677,7 @@ function makeInstallCommand() {
3640
3677
  const spinner6 = p5.spinner();
3641
3678
  spinner6.start(`Installing ${ref}`);
3642
3679
  try {
3643
- const { openCatalogSource: openCatalogSource2, openLibrary: openLibrary2 } = await import('../open-library-T6RXQJTQ.js');
3680
+ const { openCatalogSource: openCatalogSource2, openLibrary: openLibrary2 } = await import('../open-library-ICKZYC5K.js');
3644
3681
  const catalog = await openCatalogSource2({ projectDir: path15__default.resolve(opts.projectDir) });
3645
3682
  if (!supportsInstallManifest(catalog)) {
3646
3683
  throw new Error(
@@ -3672,7 +3709,7 @@ function makeInstallCommand() {
3672
3709
  }
3673
3710
  const projectDir = path15__default.resolve(opts.projectDir);
3674
3711
  try {
3675
- const { ensureSourcesCloned } = await import('../ensure-sources-V26CZNJF.js');
3712
+ const { ensureSourcesCloned } = await import('../ensure-sources-HA6L3FBS.js');
3676
3713
  const hydrate = ensureSourcesCloned(projectDir, { quiet: true });
3677
3714
  if (hydrate.cloned.length > 0) {
3678
3715
  logOk(`Cloned source(s): ${hydrate.cloned.join(", ")}`);
@@ -6014,7 +6051,7 @@ program.command("init [project-dir]").description("Initialize a project director
6014
6051
  );
6015
6052
  }
6016
6053
  try {
6017
- const { ensureSourcesCloned } = await import('../ensure-sources-V26CZNJF.js');
6054
+ const { ensureSourcesCloned } = await import('../ensure-sources-HA6L3FBS.js');
6018
6055
  const hydrate = ensureSourcesCloned(resolved, { quiet: true });
6019
6056
  for (const n of hydrate.cloned) created.push(`~/.skaile/sources/${n}/`);
6020
6057
  if (hydrate.failed.length > 0) {
@@ -6041,7 +6078,7 @@ program.command("init [project-dir]").description("Initialize a project director
6041
6078
  }
6042
6079
  );
6043
6080
  program.command("setup").description("Interactive provider setup wizard").action(async () => {
6044
- const { cmdSetup } = await import('../setup-R6VWIPLL.js');
6081
+ const { cmdSetup } = await import('../setup-DT4VSWSM.js');
6045
6082
  await cmdSetup([], { projectDir: process.cwd() });
6046
6083
  });
6047
6084
  program.addCommand(makeInstallCommand());