@sealant/sdk 0.26.1 → 0.28.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/README.md CHANGED
@@ -122,7 +122,11 @@ const workspace = await sealant.workspaces.create({
122
122
 
123
123
  `services.docker` installs the Docker client in the image and starts a disposable, workspace-scoped
124
124
  rootless daemon at launch. The workspace receives `DOCKER_HOST`; Sealant never mounts the host
125
- Docker socket. GitHub credentials provide both `GH_TOKEN` and `GITHUB_TOKEN` to the workspace.
125
+ Docker socket. On Kubernetes the daemon is a sidecar of a user-namespaced workspace Pod and the
126
+ operator has to enable it (`workspaces.docker.enabled`); an install that cannot serve it refuses
127
+ `create` with the stable code `workspace-docker-unsupported` (HTTP 422) — map that code to explain
128
+ the gap beside your Docker switch instead of surfacing a launch failure later. GitHub credentials
129
+ provide both `GH_TOKEN` and `GITHUB_TOKEN` to the workspace.
126
130
 
127
131
  ## Workspace environment variables
128
132
 
@@ -1138,7 +1138,7 @@ declare const buildControlPlaneClient: (config: SealantInternalConfig) => Effect
1138
1138
  readonly registryId: string;
1139
1139
  readonly repository: string;
1140
1140
  readonly tag: string;
1141
- }, Mode>, import("effect/unstable/http/HttpClientError").HttpClientError | ([Mode] extends ["response-only"] ? never : import("effect/Schema").SchemaError | import("@sealant/api-contracts").WorkspaceBadGatewayError | import("@sealant/api-contracts").WorkspaceBadRequestError | import("@sealant/api-contracts").WorkspaceConflictError | import("@sealant/api-contracts").WorkspaceForbiddenError | import("@sealant/api-contracts").WorkspaceInternalServerError | import("@sealant/api-contracts").WorkspaceNotFoundError | import("@sealant/api-contracts").WorkspaceRuntimeEnvReferencesUnsupportedError | import("@sealant/api-contracts").WorkspaceServiceUnavailableError), [Mode] extends ["response-only"] ? never : never>;
1141
+ }, Mode>, import("effect/unstable/http/HttpClientError").HttpClientError | ([Mode] extends ["response-only"] ? never : import("effect/Schema").SchemaError | import("@sealant/api-contracts").WorkspaceBadGatewayError | import("@sealant/api-contracts").WorkspaceBadRequestError | import("@sealant/api-contracts").WorkspaceConflictError | import("@sealant/api-contracts").WorkspaceDockerServiceUnsupportedError | import("@sealant/api-contracts").WorkspaceForbiddenError | import("@sealant/api-contracts").WorkspaceInternalServerError | import("@sealant/api-contracts").WorkspaceNotFoundError | import("@sealant/api-contracts").WorkspaceRuntimeEnvReferencesUnsupportedError | import("@sealant/api-contracts").WorkspaceServiceUnavailableError), [Mode] extends ["response-only"] ? never : never>;
1142
1142
  readonly execWorkspace: <Mode extends import("effect/unstable/httpapi/HttpApiEndpoint").ClientResponseMode = import("effect/unstable/httpapi/HttpApiEndpoint").ClientResponseMode>(request: {
1143
1143
  readonly params: {
1144
1144
  readonly workspaceId: string;
@@ -2524,7 +2524,7 @@ declare const SealantApiClient_base: Context.ServiceClass<SealantApiClient, "@se
2524
2524
  readonly registryId: string;
2525
2525
  readonly repository: string;
2526
2526
  readonly tag: string;
2527
- }, Mode>, import("effect/unstable/http/HttpClientError").HttpClientError | ([Mode] extends ["response-only"] ? never : import("effect/Schema").SchemaError | import("@sealant/api-contracts").WorkspaceBadGatewayError | import("@sealant/api-contracts").WorkspaceBadRequestError | import("@sealant/api-contracts").WorkspaceConflictError | import("@sealant/api-contracts").WorkspaceForbiddenError | import("@sealant/api-contracts").WorkspaceInternalServerError | import("@sealant/api-contracts").WorkspaceNotFoundError | import("@sealant/api-contracts").WorkspaceRuntimeEnvReferencesUnsupportedError | import("@sealant/api-contracts").WorkspaceServiceUnavailableError), [Mode] extends ["response-only"] ? never : never>;
2527
+ }, Mode>, import("effect/unstable/http/HttpClientError").HttpClientError | ([Mode] extends ["response-only"] ? never : import("effect/Schema").SchemaError | import("@sealant/api-contracts").WorkspaceBadGatewayError | import("@sealant/api-contracts").WorkspaceBadRequestError | import("@sealant/api-contracts").WorkspaceConflictError | import("@sealant/api-contracts").WorkspaceDockerServiceUnsupportedError | import("@sealant/api-contracts").WorkspaceForbiddenError | import("@sealant/api-contracts").WorkspaceInternalServerError | import("@sealant/api-contracts").WorkspaceNotFoundError | import("@sealant/api-contracts").WorkspaceRuntimeEnvReferencesUnsupportedError | import("@sealant/api-contracts").WorkspaceServiceUnavailableError), [Mode] extends ["response-only"] ? never : never>;
2528
2528
  readonly execWorkspace: <Mode extends import("effect/unstable/httpapi/HttpApiEndpoint").ClientResponseMode = import("effect/unstable/httpapi/HttpApiEndpoint").ClientResponseMode>(request: {
2529
2529
  readonly params: {
2530
2530
  readonly workspaceId: string;
@@ -36,7 +36,7 @@ export declare const createWorkspaceOp: (payload: {
36
36
  readonly registryId: string;
37
37
  readonly repository: string;
38
38
  readonly tag: string;
39
- }, import("effect/unstable/http/HttpClientError").HttpClientError | import("effect/Schema").SchemaError | import("@sealant/api-contracts").WorkspaceBadGatewayError | import("@sealant/api-contracts").WorkspaceBadRequestError | import("@sealant/api-contracts").WorkspaceConflictError | import("@sealant/api-contracts").WorkspaceForbiddenError | import("@sealant/api-contracts").WorkspaceInternalServerError | import("@sealant/api-contracts").WorkspaceNotFoundError | import("@sealant/api-contracts").WorkspaceRuntimeEnvReferencesUnsupportedError | import("@sealant/api-contracts").WorkspaceServiceUnavailableError, SealantApiClient>;
39
+ }, import("effect/unstable/http/HttpClientError").HttpClientError | import("effect/Schema").SchemaError | import("@sealant/api-contracts").WorkspaceBadGatewayError | import("@sealant/api-contracts").WorkspaceBadRequestError | import("@sealant/api-contracts").WorkspaceConflictError | import("@sealant/api-contracts").WorkspaceDockerServiceUnsupportedError | import("@sealant/api-contracts").WorkspaceForbiddenError | import("@sealant/api-contracts").WorkspaceInternalServerError | import("@sealant/api-contracts").WorkspaceNotFoundError | import("@sealant/api-contracts").WorkspaceRuntimeEnvReferencesUnsupportedError | import("@sealant/api-contracts").WorkspaceServiceUnavailableError, SealantApiClient>;
40
40
  export declare const getWorkspaceOp: (workspaceId: string, ownerUserId?: string | undefined) => Effect.Effect<{
41
41
  readonly workspaceId: string;
42
42
  readonly name: string;
package/dist/types.d.ts CHANGED
@@ -103,18 +103,19 @@ export interface WorkspaceCredentialsOptions {
103
103
  }
104
104
  /**
105
105
  * A workspace sourced from a CALLER-OWNED host directory instead of a fresh clone. The platform
106
- * bind-mounts `path` as the workspace working directory and treats it as caller-owned: writes
107
- * persist across workspace stop/restart/expiry, and the path is never reprovisioned or deleted.
108
- * When `path` is a linked Git worktree, the SDK also binds its shared Git metadata at the absolute
109
- * path named by the worktree's `.git` pointer. The metadata remains caller-owned and host-backed;
110
- * no repository data is copied into container-owned storage.
106
+ * mounts `path` as the workspace working directory and treats it as caller-owned: writes persist
107
+ * across workspace stop/restart/expiry, and the path is never reprovisioned or deleted. In strict
108
+ * Docker volume mode this is the canonical absolute path visible inside the application and worker
109
+ * containers, not Docker's private host volume directory. When `path` is a linked Git worktree, the
110
+ * SDK also mounts its shared Git metadata at the absolute path named by the worktree's `.git`
111
+ * pointer. No repository data is copied into workspace-container-owned storage.
111
112
  * The install must allowlist the path's root (`SEALANT_MOUNT_ALLOWED_STORE_ROOTS`); paths
112
113
  * outside the allowlist are rejected at create. Credentials and dotfiles options compose
113
114
  * unchanged. Clone-based workspaces remain the right shape for independent verification.
114
115
  */
115
116
  export interface WorkspaceMountSource {
116
117
  readonly kind: "mount";
117
- /** Absolute, normalized host path (no `..` segments). */
118
+ /** Absolute, normalized deployment path (no `..` segments); container-visible in volume mode. */
118
119
  readonly path: string;
119
120
  }
120
121
  /**
@@ -127,7 +128,7 @@ export interface WorkspaceMountSource {
127
128
  */
128
129
  export interface WorkspaceStandbySource {
129
130
  readonly kind: "standby";
130
- /** Absolute, normalized host path of the root (no `..` segments). */
131
+ /** Absolute, normalized deployment root (no `..` segments); container-visible in volume mode. */
131
132
  readonly rootPath: string;
132
133
  }
133
134
  /**
@@ -139,7 +140,7 @@ export interface WorkspaceStandbySource {
139
140
  * never reprovisioned, never cleaned.
140
141
  */
141
142
  export interface WorkspaceExtraMount {
142
- /** Absolute, normalized host path (no `..` segments). */
143
+ /** Absolute, normalized deployment path (no `..` segments); container-visible in volume mode. */
143
144
  readonly hostPath: string;
144
145
  /** Absolute container path to mount at, outside the working directory (e.g. `/workspace/ref/x`). */
145
146
  readonly mountPath: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sealant/sdk",
3
- "version": "0.26.1",
3
+ "version": "0.28.0",
4
4
  "description": "The fluent public SDK for Sealant — create a workspace, run a harness, replay the record.",
5
5
  "license": "Apache-2.0",
6
6
  "repository": {
@@ -26,7 +26,7 @@
26
26
  "access": "public"
27
27
  },
28
28
  "dependencies": {
29
- "@sealant/api-contracts": "^0.26.1"
29
+ "@sealant/api-contracts": "^0.28.0"
30
30
  },
31
31
  "devDependencies": {
32
32
  "@effect/vitest": "4.0.0-beta.85",