@skaile/workspaces 0.27.0 → 0.29.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 (92) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/dist/{asset-feeds-DGZO27M7.js → asset-feeds-2V7LZIG7.js} +4 -4
  3. package/dist/{asset-feeds-DGZO27M7.js.map → asset-feeds-2V7LZIG7.js.map} +1 -1
  4. package/dist/asset-manager/index.js +1 -1
  5. package/dist/{chunk-BUL5H6J7.js → chunk-3OKP6F2J.js} +3 -3
  6. package/dist/{chunk-BUL5H6J7.js.map → chunk-3OKP6F2J.js.map} +1 -1
  7. package/dist/{chunk-3ZER5DST.js → chunk-BZ2JU7IP.js} +3 -3
  8. package/dist/{chunk-3ZER5DST.js.map → chunk-BZ2JU7IP.js.map} +1 -1
  9. package/dist/{chunk-A4ASAIKK.js → chunk-CBNMIKUO.js} +2 -2
  10. package/dist/{chunk-A4ASAIKK.js.map → chunk-CBNMIKUO.js.map} +1 -1
  11. package/dist/{chunk-DGM74UP4.js → chunk-CMG3GJ6B.js} +35 -3
  12. package/dist/chunk-CMG3GJ6B.js.map +1 -0
  13. package/dist/{chunk-XHBPQ7QP.js → chunk-FENG6OO6.js} +46 -20
  14. package/dist/chunk-FENG6OO6.js.map +1 -0
  15. package/dist/{chunk-WRRYESHC.js → chunk-MIH45XPY.js} +99 -65
  16. package/dist/chunk-MIH45XPY.js.map +1 -0
  17. package/dist/{chunk-MZDXEFXF.js → chunk-TDZGENVP.js} +130 -17
  18. package/dist/chunk-TDZGENVP.js.map +1 -0
  19. package/dist/{chunk-UAW7VRAL.js → chunk-XFQ2OXYR.js} +2 -2
  20. package/dist/{chunk-UAW7VRAL.js.map → chunk-XFQ2OXYR.js.map} +1 -1
  21. package/dist/cli/index.js +21 -27
  22. package/dist/cli/index.js.map +1 -1
  23. package/dist/cli/src/commands/library-cmd.d.ts.map +1 -1
  24. package/dist/connectors/config.js +1 -1
  25. package/dist/connectors/index.js +2 -2
  26. package/dist/connectors/src/config.d.ts +46 -1
  27. package/dist/connectors/src/config.d.ts.map +1 -1
  28. package/dist/connectors/src/index.d.ts +1 -1
  29. package/dist/connectors/src/index.d.ts.map +1 -1
  30. package/dist/{ensure-sources-KQQEUDKM.js → ensure-sources-BNSRO5G7.js} +3 -3
  31. package/dist/{ensure-sources-KQQEUDKM.js.map → ensure-sources-BNSRO5G7.js.map} +1 -1
  32. package/dist/factory-assets/connectors/deploy.js +2 -2
  33. package/dist/factory-assets/connectors/devserver.js +2 -2
  34. package/dist/factory-assets/connectors/flow/adapter.js +2 -2
  35. package/dist/factory-assets/connectors/flow/run-flow.js +3 -3
  36. package/dist/factory-assets/connectors/flow.js +2 -2
  37. package/dist/factory-assets/connectors/git.js +2 -2
  38. package/dist/factory-assets/connectors/gmail.js +2 -2
  39. package/dist/factory-assets/connectors/googledrive/driver.d.ts +0 -12
  40. package/dist/factory-assets/connectors/googledrive/driver.d.ts.map +1 -1
  41. package/dist/factory-assets/connectors/googledrive.js +2 -2
  42. package/dist/factory-assets/connectors/local.js +2 -2
  43. package/dist/factory-assets/connectors/mattermost.js +2 -2
  44. package/dist/factory-assets/connectors/memory.js +2 -2
  45. package/dist/factory-assets/connectors/minio.js +2 -2
  46. package/dist/factory-assets/connectors/postgres.js +2 -2
  47. package/dist/factory-assets/connectors/s3.js +2 -2
  48. package/dist/factory-assets/connectors/sharepoint/driver.d.ts.map +1 -1
  49. package/dist/factory-assets/connectors/sharepoint.js +2 -2
  50. package/dist/factory-assets/connectors/sqlite.js +2 -2
  51. package/dist/factory-assets/connectors/static-server.js +2 -2
  52. package/dist/factory-assets/connectors/tunnel.js +2 -2
  53. package/dist/factory-assets/connectors/webdav/driver.d.ts +2 -0
  54. package/dist/factory-assets/connectors/webdav/driver.d.ts.map +1 -1
  55. package/dist/factory-assets/connectors/webdav.js +2 -2
  56. package/dist/factory-assets/connectors/xstate-store.js +2 -2
  57. package/dist/factory-assets/connectors/xstate.js +2 -2
  58. package/dist/library/index.js +1 -1
  59. package/dist/library/src/index.d.ts +2 -2
  60. package/dist/library/src/index.d.ts.map +1 -1
  61. package/dist/library/src/library.d.ts +20 -20
  62. package/dist/library/src/library.d.ts.map +1 -1
  63. package/dist/library/src/local/db.d.ts.map +1 -1
  64. package/dist/library/src/local/library.d.ts +6 -6
  65. package/dist/library/src/local/library.d.ts.map +1 -1
  66. package/dist/library/src/local/local-catalog-source.d.ts +1 -1
  67. package/dist/library/src/local/schema.d.ts +9 -9
  68. package/dist/library/src/local/schema.d.ts.map +1 -1
  69. package/dist/library/src/preset/apply.d.ts +9 -9
  70. package/dist/library/src/preset/apply.d.ts.map +1 -1
  71. package/dist/library/src/preset/resolve-item.d.ts +1 -1
  72. package/dist/library/src/workspace-config.d.ts +11 -8
  73. package/dist/library/src/workspace-config.d.ts.map +1 -1
  74. package/dist/{open-library-I7YTADMD.js → open-library-3VJY74LQ.js} +4 -4
  75. package/dist/{open-library-I7YTADMD.js.map → open-library-3VJY74LQ.js.map} +1 -1
  76. package/dist/runner/index.js +4 -4
  77. package/dist/runner/src/capability-roundtrip.d.ts +23 -0
  78. package/dist/runner/src/capability-roundtrip.d.ts.map +1 -1
  79. package/dist/runner/src/runner-capabilities.d.ts.map +1 -1
  80. package/dist/runner/src/serve.d.ts.map +1 -1
  81. package/dist/runner/src/session-resource-handlers.d.ts +23 -0
  82. package/dist/runner/src/session-resource-handlers.d.ts.map +1 -0
  83. package/dist/sdk/asset-manager.js +1 -1
  84. package/dist/sdk/index.js +4 -4
  85. package/dist/sdk/runner.js +4 -4
  86. package/dist/tui/index.js +4 -4
  87. package/dist/workspace-plugin/index.js +1 -1
  88. package/package.json +1 -1
  89. package/dist/chunk-DGM74UP4.js.map +0 -1
  90. package/dist/chunk-MZDXEFXF.js.map +0 -1
  91. package/dist/chunk-WRRYESHC.js.map +0 -1
  92. package/dist/chunk-XHBPQ7QP.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  import { renderWebDAVConfig, renderOneDriveConfig, renderGoogleDriveConfig } from './chunk-OVRSNIKJ.js';
2
- import { resolveAuthRef, resolveAuth } from './chunk-DGM74UP4.js';
2
+ import { resolveAuthRef, resolveAuth, resolveMountCredentialString } from './chunk-CMG3GJ6B.js';
3
3
  import { createFsWatcher, RcloneProcessManager, ensureDirMode, PortPool } from './chunk-QMONOHXT.js';
4
4
  import { pluginRegistry } from './chunk-6E6PKKAD.js';
5
5
  import { computeFlowStateFromSnapshots } from './chunk-W7W66MDZ.js';
@@ -1192,7 +1192,10 @@ var S3Connector = class extends AbstractConnector {
1192
1192
  function createConnector4(sdkOverride) {
1193
1193
  return new S3Connector(sdkOverride);
1194
1194
  }
1195
- var CACHE_BASE = "/var/cache/skaile";
1195
+ var DEFAULT_CACHE_BASE = "/var/cache/skaile";
1196
+ function cacheBase() {
1197
+ return process.env.SKAILE_RCLONE_CACHE_BASE ?? DEFAULT_CACHE_BASE;
1198
+ }
1196
1199
  var ALLOWED_VENDORS = /* @__PURE__ */ new Set([
1197
1200
  "nextcloud",
1198
1201
  "owncloud",
@@ -1202,6 +1205,13 @@ var ALLOWED_VENDORS = /* @__PURE__ */ new Set([
1202
1205
  ]);
1203
1206
  var execFileP = promisify(execFile);
1204
1207
  var WebDAVConnector = class extends AbstractConnector {
1208
+ // Injectable so tests can stub the `rclone obscure` shell-out; production
1209
+ // wires the real binary via createConnector().
1210
+ constructor(obscure = obscurePassword) {
1211
+ super();
1212
+ this.obscure = obscure;
1213
+ }
1214
+ obscure;
1205
1215
  name = "webdav";
1206
1216
  rclone = new RcloneProcessManager();
1207
1217
  filesystem = {
@@ -1216,6 +1226,7 @@ var WebDAVConnector = class extends AbstractConnector {
1216
1226
  throw new Error("WebDAVConnector requires ctx.mountTarget to be set by the manager");
1217
1227
  }
1218
1228
  const secrets = ctx.secrets;
1229
+ const tokenMediator = ctx.tokenMediator;
1219
1230
  const opts = declaration.options;
1220
1231
  this.log.info("mount called", {
1221
1232
  optionKeys: opts ? Object.keys(opts) : [],
@@ -1246,11 +1257,12 @@ var WebDAVConnector = class extends AbstractConnector {
1246
1257
  const vendor = vendorRaw;
1247
1258
  const basePath = String(opts?.basePath ?? "").replace(/^\/+|\/+$/g, "");
1248
1259
  const remotePath = basePath.length > 0 ? `/${basePath}` : "/";
1249
- const auth = parseAuth(resolveAuth(declaration.auth, secrets));
1250
- const obscuredPassword = auth.password ? await obscurePassword(auth.password) : null;
1260
+ const auth = parseAuth(await resolveMountCredentialString(declaration, secrets, tokenMediator));
1261
+ const obscuredPassword = auth.password ? await this.obscure(auth.password) : null;
1251
1262
  const remoteName = `skaile-${declaration.id}`;
1252
1263
  const remote = `${remoteName}:${remotePath}`;
1253
- const cacheDir = `${CACHE_BASE}/${declaration.id}`;
1264
+ const base = cacheBase();
1265
+ const cacheDir = `${base}/${declaration.id}`;
1254
1266
  const vfsCacheMode = declaration.access === "read-only" ? "minimal" : "full";
1255
1267
  this.log.info("mount params resolved", {
1256
1268
  url,
@@ -1268,7 +1280,7 @@ var WebDAVConnector = class extends AbstractConnector {
1268
1280
  obscuredPassword,
1269
1281
  bearerToken: auth.bearerToken
1270
1282
  });
1271
- await ensureDirMode(CACHE_BASE, this.log);
1283
+ await ensureDirMode(base, this.log);
1272
1284
  await ensureDirMode(cacheDir, this.log);
1273
1285
  await ensureDirMode(targetDir, this.log);
1274
1286
  const cacheMaxSize = opts?.cacheMaxSize !== void 0 ? String(opts.cacheMaxSize) : void 0;
@@ -1367,9 +1379,9 @@ async function obscurePassword(plain) {
1367
1379
  }
1368
1380
 
1369
1381
  // factory-assets/connectors/sharepoint/driver.ts
1370
- var DEFAULT_CACHE_BASE = "/var/cache/skaile";
1371
- function cacheBase() {
1372
- return process.env.SKAILE_RCLONE_CACHE_BASE ?? DEFAULT_CACHE_BASE;
1382
+ var DEFAULT_CACHE_BASE2 = "/var/cache/skaile";
1383
+ function cacheBase2() {
1384
+ return process.env.SKAILE_RCLONE_CACHE_BASE ?? DEFAULT_CACHE_BASE2;
1373
1385
  }
1374
1386
  var SharePointConnector = class extends AbstractConnector {
1375
1387
  name = "sharepoint";
@@ -1386,6 +1398,7 @@ var SharePointConnector = class extends AbstractConnector {
1386
1398
  throw new Error("SharePointConnector requires ctx.mountTarget to be set by the manager");
1387
1399
  }
1388
1400
  const secrets = ctx.secrets;
1401
+ const tokenMediator = ctx.tokenMediator;
1389
1402
  const opts = declaration.options;
1390
1403
  this.log.info("mount called", {
1391
1404
  optionKeys: opts ? Object.keys(opts) : []
@@ -1413,14 +1426,19 @@ var SharePointConnector = class extends AbstractConnector {
1413
1426
  );
1414
1427
  }
1415
1428
  const basePath = String(opts?.basePath ?? "").replace(/^\/+|\/+$/g, "");
1416
- const auth = parseAuthBlob(resolveAuth(declaration.auth, secrets), this.log);
1429
+ const auth = parseAuthBlob(
1430
+ await resolveMountCredentialString(declaration, secrets, tokenMediator),
1431
+ this.log
1432
+ );
1417
1433
  if (!auth.accessToken) {
1418
- throw new Error("SharePoint connector requires auth token (e.g. auth: env:SHAREPOINT_TOKEN)");
1434
+ throw new Error(
1435
+ "SharePoint connector: no access token resolved. Use 'auth: backend' (platform) or 'auth: env:SHAREPOINT_TOKEN' (standalone)."
1436
+ );
1419
1437
  }
1420
1438
  const remoteName = `skaile-${declaration.id}`;
1421
1439
  const remotePath = buildRemotePath(folderPath, basePath);
1422
1440
  const remote = `${remoteName}:${remotePath}`;
1423
- const base = cacheBase();
1441
+ const base = cacheBase2();
1424
1442
  const cacheDir = `${base}/${declaration.id}`;
1425
1443
  const vfsCacheMode = declaration.access === "read-only" ? "minimal" : "full";
1426
1444
  this.log.info("mount params resolved", {
@@ -1552,7 +1570,10 @@ function buildRemotePath(folderPath, basePath) {
1552
1570
  }
1553
1571
 
1554
1572
  // factory-assets/connectors/googledrive/driver.ts
1555
- var CACHE_BASE2 = "/var/cache/skaile";
1573
+ var DEFAULT_CACHE_BASE3 = "/var/cache/skaile";
1574
+ function cacheBase3() {
1575
+ return process.env.SKAILE_RCLONE_CACHE_BASE ?? DEFAULT_CACHE_BASE3;
1576
+ }
1556
1577
  var ALLOWED_SCOPES = /* @__PURE__ */ new Set([
1557
1578
  "drive",
1558
1579
  "drive.readonly",
@@ -1575,6 +1596,7 @@ var GoogleDriveConnector = class extends AbstractConnector {
1575
1596
  throw new Error("GoogleDriveConnector requires ctx.mountTarget to be set by the manager");
1576
1597
  }
1577
1598
  const secrets = ctx.secrets;
1599
+ const tokenMediator = ctx.tokenMediator;
1578
1600
  const opts = declaration.options;
1579
1601
  this.log.info("mount called", {
1580
1602
  optionKeys: opts ? Object.keys(opts) : []
@@ -1598,10 +1620,13 @@ var GoogleDriveConnector = class extends AbstractConnector {
1598
1620
  );
1599
1621
  }
1600
1622
  const scope = scopeRaw;
1601
- const auth = parseAuthBlob2(resolveAuth(declaration.auth, secrets), this.log);
1623
+ const auth = parseAuthBlob2(
1624
+ await resolveMountCredentialString(declaration, secrets, tokenMediator),
1625
+ this.log
1626
+ );
1602
1627
  if (!auth.accessToken && !auth.serviceAccountFile) {
1603
1628
  throw new Error(
1604
- "Google Drive connector requires auth token or serviceAccountFile (e.g. auth: env:GDRIVE_TOKEN)"
1629
+ "Google Drive connector: no access token or serviceAccountFile resolved. Use 'auth: backend' (platform) or 'auth: env:GDRIVE_TOKEN' (standalone)."
1605
1630
  );
1606
1631
  }
1607
1632
  const rootFolderId = opts?.rootFolderId !== void 0 ? String(opts.rootFolderId) : null;
@@ -1610,7 +1635,8 @@ var GoogleDriveConnector = class extends AbstractConnector {
1610
1635
  const remoteName = `skaile-${declaration.id}`;
1611
1636
  const remotePath = basePath.length > 0 ? `/${basePath}` : "/";
1612
1637
  const remote = `${remoteName}:${remotePath}`;
1613
- const cacheDir = `${CACHE_BASE2}/${declaration.id}`;
1638
+ const base = cacheBase3();
1639
+ const cacheDir = `${base}/${declaration.id}`;
1614
1640
  const vfsCacheMode = declaration.access === "read-only" ? "minimal" : "full";
1615
1641
  this.log.info("mount params resolved", {
1616
1642
  scope,
@@ -1633,7 +1659,7 @@ var GoogleDriveConnector = class extends AbstractConnector {
1633
1659
  teamDrive,
1634
1660
  serviceAccountFile: auth.serviceAccountFile
1635
1661
  });
1636
- await ensureDirMode(CACHE_BASE2, this.log);
1662
+ await ensureDirMode(base, this.log);
1637
1663
  await ensureDirMode(cacheDir, this.log);
1638
1664
  await ensureDirMode(targetDir, this.log);
1639
1665
  const cacheMaxSize = opts?.cacheMaxSize !== void 0 ? String(opts.cacheMaxSize) : void 0;
@@ -7795,6 +7821,6 @@ function createConnector() {
7795
7821
  return new FlowAdapter();
7796
7822
  }
7797
7823
 
7798
- export { AbstractConnector, BUILTIN_CONNECTOR_CATALOG, ConnectorFieldMissingError, ConnectorManager, ConnectorStartupError, DeployConnector, DevServerConnector, FlowAdapter, GitConnector, GmailConnector, GoogleDriveConnector, LocalConnector, LogBuffer, ManagedGitconfigCollisionError, MattermostConnector, MemoryConnector, MinIOConnector, NOT_READY_SENTINEL, PostgresConnector, RoMountPlaceholderBarrier, S3Connector, SQLiteConnector, SharePointConnector, StaticServerConnector, TunnelConnector, WebDAVConnector, XStateConnector, XStateStoreConnector, atomicReplaceCredential, buildConnectorPromptSection, buildSdkConnectorTools, createConnector, createConnector10, createConnector11, createConnector12, createConnector13, createConnector14, createConnector15, createConnector16, createConnector17, createConnector18, createConnector19, createConnector2, createConnector3, createConnector4, createConnector5, createConnector6, createConnector7, createConnector8, createConnector9, createWorktree, defaultMountPlaceholderBarrier, defaultSpawn, ensureFleetMounted, findGitRoot, findMissingPackages, getConnector, installNpmPackages, isFleetManaged, isPackageResolvable, listConnectors, listWorktrees, parseAuthBlob2 as parseAuthBlob, registerBuiltinConnectors, removeMountBlock, renderCredentialHelperScript, tryGetConnector, worktreeRegistry, writeHelperScript, writeMountBlock };
7799
- //# sourceMappingURL=chunk-XHBPQ7QP.js.map
7800
- //# sourceMappingURL=chunk-XHBPQ7QP.js.map
7824
+ export { AbstractConnector, BUILTIN_CONNECTOR_CATALOG, ConnectorFieldMissingError, ConnectorManager, ConnectorStartupError, DeployConnector, DevServerConnector, FlowAdapter, GitConnector, GmailConnector, GoogleDriveConnector, LocalConnector, LogBuffer, ManagedGitconfigCollisionError, MattermostConnector, MemoryConnector, MinIOConnector, NOT_READY_SENTINEL, PostgresConnector, RoMountPlaceholderBarrier, S3Connector, SQLiteConnector, SharePointConnector, StaticServerConnector, TunnelConnector, WebDAVConnector, XStateConnector, XStateStoreConnector, atomicReplaceCredential, buildConnectorPromptSection, buildSdkConnectorTools, createConnector, createConnector10, createConnector11, createConnector12, createConnector13, createConnector14, createConnector15, createConnector16, createConnector17, createConnector18, createConnector19, createConnector2, createConnector3, createConnector4, createConnector5, createConnector6, createConnector7, createConnector8, createConnector9, createWorktree, defaultMountPlaceholderBarrier, defaultSpawn, ensureFleetMounted, findGitRoot, findMissingPackages, getConnector, installNpmPackages, isFleetManaged, isPackageResolvable, listConnectors, listWorktrees, registerBuiltinConnectors, removeMountBlock, renderCredentialHelperScript, tryGetConnector, worktreeRegistry, writeHelperScript, writeMountBlock };
7825
+ //# sourceMappingURL=chunk-FENG6OO6.js.map
7826
+ //# sourceMappingURL=chunk-FENG6OO6.js.map