@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.
- package/CHANGELOG.md +8 -0
- package/dist/asset-manager/index.js +1 -1
- package/dist/{chunk-Z6DAVEDZ.js → chunk-3JTWGXL6.js} +55 -3
- package/dist/chunk-3JTWGXL6.js.map +1 -0
- package/dist/{chunk-BNBHHVZ5.js → chunk-CQ7OEJQT.js} +2 -2
- package/dist/{chunk-BNBHHVZ5.js.map → chunk-CQ7OEJQT.js.map} +1 -1
- package/dist/{chunk-S4XVD4T3.js → chunk-NYDNHVMU.js} +15 -7
- package/dist/chunk-NYDNHVMU.js.map +1 -0
- package/dist/{chunk-YG3CG6QR.js → chunk-OZ7YQAD5.js} +2 -2
- package/dist/{chunk-YG3CG6QR.js.map → chunk-OZ7YQAD5.js.map} +1 -1
- package/dist/{chunk-BKJLWPRR.js → chunk-UWAFZNUU.js} +3 -3
- package/dist/{chunk-BKJLWPRR.js.map → chunk-UWAFZNUU.js.map} +1 -1
- package/dist/cli/index.js +5 -5
- package/dist/connectors/index.js +1 -1
- package/dist/factory-assets/connectors/deploy.js +1 -1
- package/dist/factory-assets/connectors/devserver.js +1 -1
- package/dist/factory-assets/connectors/flow/adapter.js +1 -1
- package/dist/factory-assets/connectors/flow/run-flow.js +2 -2
- package/dist/factory-assets/connectors/flow.js +1 -1
- package/dist/factory-assets/connectors/git.js +1 -1
- package/dist/factory-assets/connectors/gmail.js +1 -1
- package/dist/factory-assets/connectors/googledrive.js +1 -1
- package/dist/factory-assets/connectors/local.js +1 -1
- package/dist/factory-assets/connectors/mattermost.js +1 -1
- package/dist/factory-assets/connectors/memory.js +1 -1
- package/dist/factory-assets/connectors/minio.js +1 -1
- package/dist/factory-assets/connectors/postgres.js +1 -1
- package/dist/factory-assets/connectors/s3.js +1 -1
- package/dist/factory-assets/connectors/sharepoint/driver.d.ts +23 -0
- package/dist/factory-assets/connectors/sharepoint/driver.d.ts.map +1 -1
- package/dist/factory-assets/connectors/sharepoint.js +1 -1
- package/dist/factory-assets/connectors/sqlite.js +1 -1
- package/dist/factory-assets/connectors/static-server.js +1 -1
- package/dist/factory-assets/connectors/tunnel.js +1 -1
- package/dist/factory-assets/connectors/webdav.js +1 -1
- package/dist/factory-assets/connectors/xstate-store.js +1 -1
- package/dist/factory-assets/connectors/xstate.js +1 -1
- package/dist/runner/index.js +3 -3
- package/dist/runner/src/resource-handler.d.ts +1 -1
- package/dist/runner/src/resource-handler.d.ts.map +1 -1
- package/dist/sdk/asset-manager.js +1 -1
- package/dist/sdk/index.js +3 -3
- package/dist/sdk/runner.js +3 -3
- package/dist/tui/index.js +3 -3
- package/dist/workspace-plugin/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-S4XVD4T3.js.map +0 -1
- 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-
|
|
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-
|
|
8462
|
-
//# sourceMappingURL=chunk-
|
|
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
|