@skaile/workspaces 0.37.0 → 0.39.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.
- package/CHANGELOG.md +44 -0
- package/dist/asset-manager/index.js +1 -1
- package/dist/{chunk-3HR6IN5B.js → chunk-CMZWYMGD.js} +44 -15
- package/dist/chunk-CMZWYMGD.js.map +1 -0
- package/dist/{chunk-ZSFWJAFD.js → chunk-FZL6QOM7.js} +3 -3
- package/dist/{chunk-ZSFWJAFD.js.map → chunk-FZL6QOM7.js.map} +1 -1
- package/dist/{chunk-CCQ3EMJT.js → chunk-LJIE3PGF.js} +2 -2
- package/dist/{chunk-CCQ3EMJT.js.map → chunk-LJIE3PGF.js.map} +1 -1
- package/dist/{chunk-XT6AZWK3.js → chunk-P7CIT445.js} +18 -2
- package/dist/chunk-P7CIT445.js.map +1 -0
- package/dist/{chunk-DAEYSPOC.js → chunk-W23HDR6W.js} +117 -37
- package/dist/chunk-W23HDR6W.js.map +1 -0
- package/dist/{chunk-CC5ZHSHJ.js → chunk-WLWHOA3S.js} +81 -5
- package/dist/chunk-WLWHOA3S.js.map +1 -0
- package/dist/{chunk-RNFNWOKZ.js → chunk-WVWX76IB.js} +2 -2
- package/dist/{chunk-RNFNWOKZ.js.map → chunk-WVWX76IB.js.map} +1 -1
- package/dist/cli/index.js +7 -7
- package/dist/connectors/config.js +1 -1
- package/dist/connectors/index.js +3 -3
- package/dist/connectors/rclone.js +1 -1
- package/dist/connectors/src/config.d.ts +3 -1
- package/dist/connectors/src/config.d.ts.map +1 -1
- package/dist/connectors/src/connector-manager.d.ts +1 -1
- package/dist/connectors/src/connector-manager.d.ts.map +1 -1
- package/dist/connectors/src/connector-types.d.ts +5 -1
- package/dist/connectors/src/connector-types.d.ts.map +1 -1
- package/dist/connectors/src/index.d.ts +1 -0
- package/dist/connectors/src/index.d.ts.map +1 -1
- package/dist/connectors/src/materialized-connectors.d.ts +8 -0
- package/dist/connectors/src/materialized-connectors.d.ts.map +1 -0
- package/dist/connectors/src/rclone-process-manager.d.ts.map +1 -1
- package/dist/factory-assets/connectors/deploy.js +3 -3
- package/dist/factory-assets/connectors/devserver.js +3 -3
- package/dist/factory-assets/connectors/flow/adapter.js +3 -3
- package/dist/factory-assets/connectors/flow/run-flow.js +4 -4
- package/dist/factory-assets/connectors/flow.js +3 -3
- package/dist/factory-assets/connectors/git/driver.d.ts +3 -0
- package/dist/factory-assets/connectors/git/driver.d.ts.map +1 -1
- package/dist/factory-assets/connectors/git.js +3 -3
- package/dist/factory-assets/connectors/gmail.js +3 -3
- package/dist/factory-assets/connectors/googledrive.js +3 -3
- package/dist/factory-assets/connectors/local.js +3 -3
- package/dist/factory-assets/connectors/mattermost.js +3 -3
- package/dist/factory-assets/connectors/memory.js +3 -3
- package/dist/factory-assets/connectors/minio.js +3 -3
- package/dist/factory-assets/connectors/postgres/adapter.d.ts.map +1 -1
- package/dist/factory-assets/connectors/postgres.js +3 -3
- package/dist/factory-assets/connectors/s3.js +3 -3
- package/dist/factory-assets/connectors/sharepoint.js +3 -3
- package/dist/factory-assets/connectors/sqlite.js +3 -3
- package/dist/factory-assets/connectors/static-server.js +3 -3
- package/dist/factory-assets/connectors/tunnel.js +3 -3
- package/dist/factory-assets/connectors/webdav.js +3 -3
- package/dist/factory-assets/connectors/xstate-store.js +3 -3
- package/dist/factory-assets/connectors/xstate.js +3 -3
- package/dist/runner/index.js +5 -5
- package/dist/runner/src/resource-handler.d.ts +6 -0
- package/dist/runner/src/resource-handler.d.ts.map +1 -1
- package/dist/runner/src/runner-capabilities.d.ts +8 -0
- package/dist/runner/src/runner-capabilities.d.ts.map +1 -1
- package/dist/runner/src/serve.d.ts.map +1 -1
- package/dist/runner/src/session-resource-handlers.d.ts +25 -12
- package/dist/runner/src/session-resource-handlers.d.ts.map +1 -1
- package/dist/sdk/asset-manager.js +1 -1
- package/dist/sdk/index.js +5 -5
- package/dist/sdk/runner.js +5 -5
- package/dist/tui/index.js +5 -5
- package/dist/workspace-plugin/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-3HR6IN5B.js.map +0 -1
- package/dist/chunk-CC5ZHSHJ.js.map +0 -1
- package/dist/chunk-DAEYSPOC.js.map +0 -1
- package/dist/chunk-XT6AZWK3.js.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,49 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.39.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#152](https://github.com/skaile-ai/workspaces/pull/152) [`630af66`](https://github.com/skaile-ai/workspaces/commit/630af66a84918830e86ca643b9a2320e259bea33) Thanks [@peteralbert](https://github.com/peteralbert)! - Backend-auth materialized connectors now authenticate end-to-end, off-disk. The credential is delivered through the in-memory `session_init` channel — `cmd.credentials.connectors[<id>]` at boot/wake and a new optional `runner.attach_instance.preMintedToken` on live-attach — and staged into `PreMintedSecretProvider` under `connector:<id>`. Tool-face connectors now receive the wrapped token mediator (previously filesystem-face only), so a tool-face connector (e.g. postgres) resolves its `auth: backend` credential via `ctx.tokenMediator`. The connector secret is no longer read from `.instance.json` (`readResolvedConnectorSecret` removed) — credentials never touch disk.
|
|
8
|
+
|
|
9
|
+
### Patch Changes
|
|
10
|
+
|
|
11
|
+
- [#150](https://github.com/skaile-ai/workspaces/pull/150) [`e0cc721`](https://github.com/skaile-ai/workspaces/commit/e0cc7211c01dd96893d00c163ad799e2c744a098) Thanks [@Frozen666](https://github.com/Frozen666)! - fix(git-connector): publish session branch to origin on create (B-142)
|
|
12
|
+
|
|
13
|
+
A non-main git session created its session branch locally but never pushed it,
|
|
14
|
+
so peers and other sessions couldn't see the branch until a clean
|
|
15
|
+
hibernate/close (and never with the default `pushAfterCommit=false`). Add a
|
|
16
|
+
`lifecycle.publishOnCreate` flag (default `true`) that best-effort
|
|
17
|
+
`push -u origin <branch>` on the branch-creation paths only (not reuse-local or
|
|
18
|
+
checkout-from-origin), swallowing failures so `connect` never fails; the
|
|
19
|
+
lifecycle push hooks remain the backstop.
|
|
20
|
+
|
|
21
|
+
- [#149](https://github.com/skaile-ai/workspaces/pull/149) [`3c604d0`](https://github.com/skaile-ai/workspaces/commit/3c604d0725299f257ad0753760bea14d2ca4c87d) Thanks [@Frozen666](https://github.com/Frozen666)! - fix(runner): strip stale tail after `</html>` in mount HTML reads
|
|
22
|
+
|
|
23
|
+
A writable rclone mount can serve a non-truncated VFS cache item — a clean
|
|
24
|
+
document followed by the leftover tail of an older, longer version of the same
|
|
25
|
+
file (which carries its own duplicate closing tags). The mount read now truncates
|
|
26
|
+
`text/html` content at the first `</html>`, so neither the workspace HTML preview
|
|
27
|
+
nor the agent sees the garbled trailing fragment. Mitigation for the SharePoint
|
|
28
|
+
preview corruption; the underlying rclone VFS cause is tracked separately.
|
|
29
|
+
|
|
30
|
+
## 0.38.0
|
|
31
|
+
|
|
32
|
+
### Minor Changes
|
|
33
|
+
|
|
34
|
+
- [#147](https://github.com/skaile-ai/workspaces/pull/147) [`9a77b0c`](https://github.com/skaile-ai/workspaces/commit/9a77b0c3f6c6d3ff24245e778efbf75e432b7976) Thanks [@peteralbert](https://github.com/peteralbert)! - feat(connectors): wire library-assigned connectors to the runtime (Phase 2.5).
|
|
35
|
+
|
|
36
|
+
Materialized `.skaile/assets/connector/<name>/CONNECTOR.md` projections are now
|
|
37
|
+
derived into ConnectorDeclarations at boot (`loadConnectorDeclarations` merges
|
|
38
|
+
them alongside `skaile.yaml` connectors), and `runner.attach_instance` supports
|
|
39
|
+
`kind: "connector"` (materialize-then-attach-by-ref → `ConnectorManager.connect`).
|
|
40
|
+
Symmetric with the MCP live-attach path. Connectors stay first-party (driver
|
|
41
|
+
resolved by name).
|
|
42
|
+
|
|
43
|
+
### Patch Changes
|
|
44
|
+
|
|
45
|
+
- [#146](https://github.com/skaile-ai/workspaces/pull/146) [`0b8edfd`](https://github.com/skaile-ai/workspaces/commit/0b8edfd530a27b7f08cea7899b384f97edbc4dde) Thanks [@peteralbert](https://github.com/peteralbert)! - rclone fleet hardening: spawn the rclone rc server with `--rc-no-auth` (loopback-only) so the flush-before-stop `POST /vfs/refresh` no longer 403s — graceful stop drains the write-back cache instead of leaving it poisoned. Surface non-retryable `itemNotFound` upload failures immediately via the existing stuck-upload signal (the remote target is gone; retrying can never land). Create `.skaile/fleet-health/` group-writable + setgid (`0o2770`) so the platform backend can write the verdict flag the runner reads.
|
|
46
|
+
|
|
3
47
|
## 0.37.0
|
|
4
48
|
|
|
5
49
|
### Minor Changes
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { AssetManager, parseCanonicalLockKey } from '../chunk-
|
|
1
|
+
export { AssetManager, parseCanonicalLockKey } from '../chunk-WVWX76IB.js';
|
|
2
2
|
export { createScaffold, deployAll, installAgent, removeAsset } from '../chunk-4A2LAEX6.js';
|
|
3
3
|
import '../chunk-FBIQ4QPF.js';
|
|
4
4
|
import '../chunk-CFCSDZYF.js';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { renderGoogleDriveConfig, renderOneDriveConfig, renderWebDAVConfig } from './chunk-OVRSNIKJ.js';
|
|
2
|
-
import { resolveAuthRef, resolveAuth, resolveMountCredentialString, resolveMountCredential } from './chunk-
|
|
3
|
-
import { PortPool, createFsWatcher, RcloneProcessManager, ensureDirMode } from './chunk-
|
|
2
|
+
import { resolveAuthRef, resolveAuth, resolveMountCredentialString, resolveMountCredential } from './chunk-WLWHOA3S.js';
|
|
3
|
+
import { PortPool, createFsWatcher, RcloneProcessManager, ensureDirMode } from './chunk-P7CIT445.js';
|
|
4
4
|
import { pluginRegistry } from './chunk-6E6PKKAD.js';
|
|
5
5
|
import { computeFlowStateFromSnapshots } from './chunk-X46FY45B.js';
|
|
6
6
|
import { renderStimulusPrompt } from './chunk-DEYYRFQU.js';
|
|
@@ -722,7 +722,8 @@ var LEGACY_DEFAULTS = {
|
|
|
722
722
|
mergeOnClose: true,
|
|
723
723
|
pushOnClose: true,
|
|
724
724
|
autoCommitIdleMs: 3e4,
|
|
725
|
-
pushAfterCommit: false
|
|
725
|
+
pushAfterCommit: false,
|
|
726
|
+
publishOnCreate: true
|
|
726
727
|
}
|
|
727
728
|
};
|
|
728
729
|
var MODE_DEFAULTS = {
|
|
@@ -773,7 +774,8 @@ function parseLifecycleConfig(opts, defaults) {
|
|
|
773
774
|
mergeOnClose: Boolean(raw.mergeOnClose ?? defaults.mergeOnClose),
|
|
774
775
|
pushOnClose: Boolean(raw.pushOnClose ?? defaults.pushOnClose),
|
|
775
776
|
autoCommitIdleMs: Number(raw.autoCommitIdleMs ?? defaults.autoCommitIdleMs),
|
|
776
|
-
pushAfterCommit: Boolean(raw.pushAfterCommit ?? defaults.pushAfterCommit)
|
|
777
|
+
pushAfterCommit: Boolean(raw.pushAfterCommit ?? defaults.pushAfterCommit),
|
|
778
|
+
publishOnCreate: Boolean(raw.publishOnCreate ?? defaults.publishOnCreate)
|
|
777
779
|
};
|
|
778
780
|
}
|
|
779
781
|
function resolveGitConfig(args) {
|
|
@@ -969,22 +971,40 @@ var GitConnector = class extends AbstractConnector {
|
|
|
969
971
|
if (!isValidGitRefOrSha(sessionBranch)) {
|
|
970
972
|
throw new Error(`Git connector: invalid session branch name "${sessionBranch}"`);
|
|
971
973
|
}
|
|
974
|
+
let created = false;
|
|
972
975
|
if (localBranchExists(sessionBranch, targetDir)) {
|
|
973
976
|
git(`checkout ${sessionBranch}`, targetDir);
|
|
974
977
|
this.log.info("reusing existing local session branch", { sessionBranch });
|
|
975
978
|
} else {
|
|
979
|
+
let originHasBranch = false;
|
|
976
980
|
try {
|
|
977
981
|
git(`rev-parse --verify origin/${sessionBranch}`, targetDir);
|
|
978
|
-
|
|
982
|
+
originHasBranch = true;
|
|
979
983
|
} catch {
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
}
|
|
984
|
+
}
|
|
985
|
+
if (originHasBranch) {
|
|
986
|
+
git(`checkout -B ${sessionBranch} origin/${sessionBranch}`, targetDir);
|
|
987
|
+
} else if (!this.branchFromRef(session, sessionBranch, targetDir)) {
|
|
988
|
+
git(`checkout -b ${sessionBranch}`, targetDir);
|
|
989
|
+
created = true;
|
|
990
|
+
} else {
|
|
991
|
+
created = true;
|
|
983
992
|
}
|
|
984
993
|
}
|
|
985
994
|
syncSubmodules(targetDir);
|
|
986
995
|
state.activeBranch = sessionBranch;
|
|
987
996
|
this.log.info("session branch checked out", { sessionBranch });
|
|
997
|
+
if (created && state.lifecycle.publishOnCreate) {
|
|
998
|
+
try {
|
|
999
|
+
git(`push -u origin ${sessionBranch}`, targetDir, 6e4);
|
|
1000
|
+
this.log.info("published new session branch", { sessionBranch });
|
|
1001
|
+
} catch (err) {
|
|
1002
|
+
this.log.warn("publish-on-create push failed; deferring to lifecycle push", {
|
|
1003
|
+
sessionBranch,
|
|
1004
|
+
error: err instanceof Error ? err.message : String(err)
|
|
1005
|
+
});
|
|
1006
|
+
}
|
|
1007
|
+
}
|
|
988
1008
|
}
|
|
989
1009
|
/**
|
|
990
1010
|
* Attempt to create `sessionBranch` anchored on `session.fromRef`. Returns
|
|
@@ -3069,7 +3089,16 @@ var PostgresConnector = class extends AbstractConnector {
|
|
|
3069
3089
|
}
|
|
3070
3090
|
async connect(declaration, ctx) {
|
|
3071
3091
|
const started = Date.now();
|
|
3072
|
-
|
|
3092
|
+
let dsn = ctx.resolvedFields?.dsn ?? String(declaration.options?.dsn ?? "");
|
|
3093
|
+
if (!dsn && declaration.auth === "backend" && ctx.tokenMediator) {
|
|
3094
|
+
const mint = await ctx.tokenMediator({ connectorId: declaration.id, reason: "initial" });
|
|
3095
|
+
if (mint.ok) dsn = mint.token;
|
|
3096
|
+
else
|
|
3097
|
+
throw new Error(
|
|
3098
|
+
`PostgresAdapter '${declaration.id}': backend credential ${mint.code} \u2014 ${mint.message}`
|
|
3099
|
+
);
|
|
3100
|
+
}
|
|
3101
|
+
if (!dsn) dsn = resolveAuth(declaration.auth, ctx.secrets) ?? "";
|
|
3073
3102
|
if (!dsn) {
|
|
3074
3103
|
this.log.error("connect failed: missing dsn", void 0);
|
|
3075
3104
|
throw new Error("PostgresAdapter requires auth (connection string) or options.dsn");
|
|
@@ -5811,10 +5840,11 @@ var ConnectorManager = class {
|
|
|
5811
5840
|
async buildConnectContext(declaration, connector) {
|
|
5812
5841
|
const ctx = {
|
|
5813
5842
|
secrets: this.chain ?? this.secrets,
|
|
5814
|
-
|
|
5843
|
+
// Both filesystem and tool faces use this for the auth: backend initial-mint path.
|
|
5844
|
+
tokenMediator: this.buildWrappedMediator(),
|
|
5815
5845
|
abortSignal: this.disposeController.signal
|
|
5816
5846
|
};
|
|
5817
|
-
if (this.chain && connector.describeFields) {
|
|
5847
|
+
if (this.chain && connector.describeFields && declaration.auth !== "backend") {
|
|
5818
5848
|
const fields = connector.describeFields();
|
|
5819
5849
|
ctx.resolvedFields = await resolveFields(declaration, fields, this.chain);
|
|
5820
5850
|
}
|
|
@@ -5822,7 +5852,6 @@ var ConnectorManager = class {
|
|
|
5822
5852
|
const absPath = this.resolveMountTarget(declaration);
|
|
5823
5853
|
if (!existsSync(absPath)) mkdirSync(absPath, { recursive: true });
|
|
5824
5854
|
ctx.mountTarget = absPath;
|
|
5825
|
-
ctx.tokenMediator = this.buildWrappedMediator();
|
|
5826
5855
|
}
|
|
5827
5856
|
return ctx;
|
|
5828
5857
|
}
|
|
@@ -5856,7 +5885,7 @@ var ConnectorManager = class {
|
|
|
5856
5885
|
* 1. Resolves the `Connector` from the registry (or catalog).
|
|
5857
5886
|
* 2. Calls `setLogger` when available.
|
|
5858
5887
|
* 3. Resolves fields via `describeFields()` + secret chain.
|
|
5859
|
-
* 4. For filesystem-face connectors: allocates mount-target dir
|
|
5888
|
+
* 4. For filesystem-face connectors: allocates mount-target dir.
|
|
5860
5889
|
* 5. Calls `connector.connect(decl, ctx)`.
|
|
5861
5890
|
* 6. Tracks in the active map; emits `onStatusChange`.
|
|
5862
5891
|
*
|
|
@@ -8387,5 +8416,5 @@ function createConnector() {
|
|
|
8387
8416
|
}
|
|
8388
8417
|
|
|
8389
8418
|
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 };
|
|
8390
|
-
//# sourceMappingURL=chunk-
|
|
8391
|
-
//# sourceMappingURL=chunk-
|
|
8419
|
+
//# sourceMappingURL=chunk-CMZWYMGD.js.map
|
|
8420
|
+
//# sourceMappingURL=chunk-CMZWYMGD.js.map
|