@skaile/workspaces 0.41.3 → 0.41.4

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 (48) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/dist/asset-manager/index.js +1 -1
  3. package/dist/{chunk-Z6DAVEDZ.js → chunk-3JTWGXL6.js} +55 -3
  4. package/dist/chunk-3JTWGXL6.js.map +1 -0
  5. package/dist/{chunk-BNBHHVZ5.js → chunk-CQ7OEJQT.js} +2 -2
  6. package/dist/{chunk-BNBHHVZ5.js.map → chunk-CQ7OEJQT.js.map} +1 -1
  7. package/dist/{chunk-S4XVD4T3.js → chunk-NYDNHVMU.js} +15 -7
  8. package/dist/chunk-NYDNHVMU.js.map +1 -0
  9. package/dist/{chunk-YG3CG6QR.js → chunk-OZ7YQAD5.js} +2 -2
  10. package/dist/{chunk-YG3CG6QR.js.map → chunk-OZ7YQAD5.js.map} +1 -1
  11. package/dist/{chunk-BKJLWPRR.js → chunk-UWAFZNUU.js} +3 -3
  12. package/dist/{chunk-BKJLWPRR.js.map → chunk-UWAFZNUU.js.map} +1 -1
  13. package/dist/cli/index.js +5 -5
  14. package/dist/connectors/index.js +1 -1
  15. package/dist/factory-assets/connectors/deploy.js +1 -1
  16. package/dist/factory-assets/connectors/devserver.js +1 -1
  17. package/dist/factory-assets/connectors/flow/adapter.js +1 -1
  18. package/dist/factory-assets/connectors/flow/run-flow.js +2 -2
  19. package/dist/factory-assets/connectors/flow.js +1 -1
  20. package/dist/factory-assets/connectors/git.js +1 -1
  21. package/dist/factory-assets/connectors/gmail.js +1 -1
  22. package/dist/factory-assets/connectors/googledrive.js +1 -1
  23. package/dist/factory-assets/connectors/local.js +1 -1
  24. package/dist/factory-assets/connectors/mattermost.js +1 -1
  25. package/dist/factory-assets/connectors/memory.js +1 -1
  26. package/dist/factory-assets/connectors/minio.js +1 -1
  27. package/dist/factory-assets/connectors/postgres.js +1 -1
  28. package/dist/factory-assets/connectors/s3.js +1 -1
  29. package/dist/factory-assets/connectors/sharepoint/driver.d.ts +23 -0
  30. package/dist/factory-assets/connectors/sharepoint/driver.d.ts.map +1 -1
  31. package/dist/factory-assets/connectors/sharepoint.js +1 -1
  32. package/dist/factory-assets/connectors/sqlite.js +1 -1
  33. package/dist/factory-assets/connectors/static-server.js +1 -1
  34. package/dist/factory-assets/connectors/tunnel.js +1 -1
  35. package/dist/factory-assets/connectors/webdav.js +1 -1
  36. package/dist/factory-assets/connectors/xstate-store.js +1 -1
  37. package/dist/factory-assets/connectors/xstate.js +1 -1
  38. package/dist/runner/index.js +3 -3
  39. package/dist/runner/src/resource-handler.d.ts +1 -1
  40. package/dist/runner/src/resource-handler.d.ts.map +1 -1
  41. package/dist/sdk/asset-manager.js +1 -1
  42. package/dist/sdk/index.js +3 -3
  43. package/dist/sdk/runner.js +3 -3
  44. package/dist/tui/index.js +3 -3
  45. package/dist/workspace-plugin/index.js +1 -1
  46. package/package.json +1 -1
  47. package/dist/chunk-S4XVD4T3.js.map +0 -1
  48. package/dist/chunk-Z6DAVEDZ.js.map +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.41.4
4
+
5
+ ### Patch Changes
6
+
7
+ - [#177](https://github.com/skaile-ai/workspaces/pull/177) [`2aff69b`](https://github.com/skaile-ai/workspaces/commit/2aff69b1e155795da3a28ed4a16197eb33125cd5) Thanks [@peteralbert](https://github.com/peteralbert)! - fix(sharepoint): implement `resolveWebUrl` so "Open in SharePoint" works for Office files
8
+
9
+ The SharePoint connector now answers the `resolveWebUrl` custom op (Microsoft Graph `webUrl` lookup) that the platform's `resolveViewerUrl` path already calls. Previously no connector implemented it and the mount resource handler had no `_customOp` branch, so Office files (xlsx/docx/pptx) on a SharePoint mount only offered a download instead of opening in SharePoint. Fleet-managed mounts return null (no in-container token) and keep the download fallback.
10
+
3
11
  ## 0.41.3
4
12
 
5
13
  ### Patch Changes
@@ -1,4 +1,4 @@
1
- export { AssetManager, parseCanonicalLockKey } from '../chunk-BNBHHVZ5.js';
1
+ export { AssetManager, parseCanonicalLockKey } from '../chunk-CQ7OEJQT.js';
2
2
  export { createScaffold, deployAll, installAgent, removeAsset } from '../chunk-TB342H55.js';
3
3
  import '../chunk-MVXXAXDW.js';
4
4
  import '../chunk-ZAP2BDHG.js';
@@ -3464,6 +3464,12 @@ function cacheBase2() {
3464
3464
  var SharePointConnector = class extends AbstractConnector {
3465
3465
  name = "sharepoint";
3466
3466
  rclone = new RcloneProcessManager();
3467
+ /**
3468
+ * Captured on a successful non-fleet `connect()` so `resolveWebUrl` can mint a
3469
+ * fresh Graph token later. Null until connected, and stays null for
3470
+ * fleet-managed mounts (the host owns the token; no in-container resolution).
3471
+ */
3472
+ webUrlCtx = null;
3467
3473
  filesystem = {
3468
3474
  deferMount: true,
3469
3475
  sync: (handle, options) => {
@@ -3578,6 +3584,7 @@ var SharePointConnector = class extends AbstractConnector {
3578
3584
  this.log.info("mount ready", { pid: rcloneHandle.pid });
3579
3585
  handleRef.current = rcloneHandle;
3580
3586
  refresh?.schedule(cred.expiresAt);
3587
+ this.webUrlCtx = { declaration, secrets, tokenMediator, driveId, folderPath, basePath };
3581
3588
  const state = { handleRef, refresh };
3582
3589
  return this.makeHandle(declaration, state, targetDir);
3583
3590
  }
@@ -3621,6 +3628,42 @@ var SharePointConnector = class extends AbstractConnector {
3621
3628
  await this._sync(handle);
3622
3629
  return "flushed";
3623
3630
  }
3631
+ /**
3632
+ * Resolve the SharePoint/OneDrive browser URL (Microsoft Graph `webUrl`) for
3633
+ * the file at `relPath` (relative to the mount root). The platform's
3634
+ * `resolveViewerUrl` path calls this so Office files that can't render inline
3635
+ * (xlsx/docx/pptx) offer "Open in SharePoint" instead of only a download.
3636
+ *
3637
+ * Best-effort: returns null for fleet-managed mounts (no in-container token)
3638
+ * or on any Graph failure, so the caller falls back to download.
3639
+ */
3640
+ async resolveWebUrl(relPath) {
3641
+ const ctx = this.webUrlCtx;
3642
+ if (!ctx) return null;
3643
+ try {
3644
+ const cred = await resolveMountCredential(
3645
+ ctx.declaration,
3646
+ ctx.secrets,
3647
+ ctx.tokenMediator,
3648
+ "refresh"
3649
+ );
3650
+ const token = parseAuthBlob2(cred.token, this.log).accessToken;
3651
+ if (!token) return null;
3652
+ const endpoint = buildGraphWebUrlEndpoint(ctx.driveId, ctx.folderPath, ctx.basePath, relPath);
3653
+ const res = await fetch(endpoint, { headers: { Authorization: `Bearer ${token}` } });
3654
+ if (!res.ok) {
3655
+ this.log.warn("resolveWebUrl: Graph request failed", { status: res.status });
3656
+ return null;
3657
+ }
3658
+ const body = await res.json();
3659
+ return body.webUrl ?? null;
3660
+ } catch (err) {
3661
+ this.log.warn("resolveWebUrl failed", {
3662
+ error: err instanceof Error ? err.message : String(err)
3663
+ });
3664
+ return null;
3665
+ }
3666
+ }
3624
3667
  };
3625
3668
  function createConnector13() {
3626
3669
  return new SharePointConnector();
@@ -3655,6 +3698,15 @@ function parseAuthBlob2(raw, log) {
3655
3698
  return { ...empty, accessToken: raw };
3656
3699
  }
3657
3700
  }
3701
+ function buildGraphWebUrlEndpoint(driveId, folderPath, basePath, relPath) {
3702
+ const drive = encodeURIComponent(driveId);
3703
+ const itemPath = [folderPath, basePath, relPath].map((p) => p.replace(/^\/+|\/+$/g, "")).filter((p) => p.length > 0).join("/");
3704
+ if (!itemPath) {
3705
+ return `https://graph.microsoft.com/v1.0/drives/${drive}/root?$select=webUrl`;
3706
+ }
3707
+ const encoded = itemPath.split("/").map((seg) => encodeURIComponent(seg)).join("/");
3708
+ return `https://graph.microsoft.com/v1.0/drives/${drive}/root:/${encoded}:?$select=webUrl`;
3709
+ }
3658
3710
  function buildRemotePath(folderPath, basePath) {
3659
3711
  const folder = folderPath.replace(/^\/+|\/+$/g, "");
3660
3712
  const base = basePath.replace(/^\/+|\/+$/g, "");
@@ -8457,6 +8509,6 @@ function createConnector() {
8457
8509
  return new FlowAdapter();
8458
8510
  }
8459
8511
 
8460
- export { AbstractConnector, BUILTIN_CONNECTOR_CATALOG, ConnectorFieldMissingError, ConnectorManager, ConnectorStartupError, DEFAULT_REACTIVE_COOLDOWN_MS, DeployConnector, DevServerConnector, FleetHealthGate, FlowAdapter, GitConnector, GmailConnector, GoogleDriveConnector, LocalConnector, LogBuffer, ManagedGitconfigCollisionError, MattermostConnector, MemoryConnector, MinIOConnector, NOT_READY_SENTINEL, PROACTIVE_RCLONE_REFRESH_MARGIN_MS, PostgresConnector, RoMountPlaceholderBarrier, S3Connector, SQLiteConnector, SharePointConnector, StaticServerConnector, TunnelConnector, WebDAVConnector, XStateConnector, XStateStoreConnector, __test, atomicReplaceCredential, buildConnectorPromptSection, buildSdkConnectorTools, createConnector, createConnector10, createConnector11, createConnector12, createConnector13, createConnector14, createConnector15, createConnector16, createConnector17, createConnector18, createConnector19, createConnector2, createConnector3, createConnector4, createConnector5, createConnector6, createConnector7, createConnector8, createConnector9, createRcloneTokenRefresh, createWorktree, defaultMountPlaceholderBarrier, defaultSpawn, ensureFleetMounted, findGitRoot, findMissingPackages, getConnector, installNpmPackages, isFleetManaged, isPackageResolvable, listConnectors, listWorktrees, probeFleetHealth, registerBuiltinConnectors, removeMountBlock, renderCredentialHelperScript, tryGetConnector, worktreeRegistry, writeHelperScript, writeMountBlock };
8461
- //# sourceMappingURL=chunk-Z6DAVEDZ.js.map
8462
- //# sourceMappingURL=chunk-Z6DAVEDZ.js.map
8512
+ export { AbstractConnector, BUILTIN_CONNECTOR_CATALOG, ConnectorFieldMissingError, ConnectorManager, ConnectorStartupError, DEFAULT_REACTIVE_COOLDOWN_MS, DeployConnector, DevServerConnector, FleetHealthGate, FlowAdapter, GitConnector, GmailConnector, GoogleDriveConnector, LocalConnector, LogBuffer, ManagedGitconfigCollisionError, MattermostConnector, MemoryConnector, MinIOConnector, NOT_READY_SENTINEL, PROACTIVE_RCLONE_REFRESH_MARGIN_MS, PostgresConnector, RoMountPlaceholderBarrier, S3Connector, SQLiteConnector, SharePointConnector, StaticServerConnector, TunnelConnector, WebDAVConnector, XStateConnector, XStateStoreConnector, __test, atomicReplaceCredential, buildConnectorPromptSection, buildGraphWebUrlEndpoint, buildSdkConnectorTools, createConnector, createConnector10, createConnector11, createConnector12, createConnector13, createConnector14, createConnector15, createConnector16, createConnector17, createConnector18, createConnector19, createConnector2, createConnector3, createConnector4, createConnector5, createConnector6, createConnector7, createConnector8, createConnector9, createRcloneTokenRefresh, createWorktree, defaultMountPlaceholderBarrier, defaultSpawn, ensureFleetMounted, findGitRoot, findMissingPackages, getConnector, installNpmPackages, isFleetManaged, isPackageResolvable, listConnectors, listWorktrees, probeFleetHealth, registerBuiltinConnectors, removeMountBlock, renderCredentialHelperScript, tryGetConnector, worktreeRegistry, writeHelperScript, writeMountBlock };
8513
+ //# sourceMappingURL=chunk-3JTWGXL6.js.map
8514
+ //# sourceMappingURL=chunk-3JTWGXL6.js.map