@namzu/sandbox 14.0.0 → 16.0.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 (100) hide show
  1. package/CHANGELOG.md +924 -0
  2. package/README.md +369 -14
  3. package/dist/backends/aci-standby-pool/index.d.ts.map +1 -1
  4. package/dist/backends/aci-standby-pool/index.js +13 -1
  5. package/dist/backends/aci-standby-pool/index.js.map +1 -1
  6. package/dist/backends/docker/index.d.ts +169 -6
  7. package/dist/backends/docker/index.d.ts.map +1 -1
  8. package/dist/backends/docker/index.js +499 -85
  9. package/dist/backends/docker/index.js.map +1 -1
  10. package/dist/backends/firecracker/index.d.ts.map +1 -1
  11. package/dist/backends/firecracker/index.js +12 -2
  12. package/dist/backends/firecracker/index.js.map +1 -1
  13. package/dist/backends/firecracker/protocol.d.ts +459 -8
  14. package/dist/backends/firecracker/protocol.d.ts.map +1 -1
  15. package/dist/backends/firecracker/protocol.js +136 -0
  16. package/dist/backends/firecracker/protocol.js.map +1 -1
  17. package/dist/backends/firecracker/transport.d.ts +539 -6
  18. package/dist/backends/firecracker/transport.d.ts.map +1 -1
  19. package/dist/backends/firecracker/transport.js +1171 -24
  20. package/dist/backends/firecracker/transport.js.map +1 -1
  21. package/dist/backends/kubernetes/egress-policy.d.ts +1181 -13
  22. package/dist/backends/kubernetes/egress-policy.d.ts.map +1 -1
  23. package/dist/backends/kubernetes/egress-policy.js +2350 -31
  24. package/dist/backends/kubernetes/egress-policy.js.map +1 -1
  25. package/dist/backends/kubernetes/identity.d.ts +193 -0
  26. package/dist/backends/kubernetes/identity.d.ts.map +1 -0
  27. package/dist/backends/kubernetes/identity.js +147 -0
  28. package/dist/backends/kubernetes/identity.js.map +1 -0
  29. package/dist/backends/kubernetes/index.d.ts +678 -33
  30. package/dist/backends/kubernetes/index.d.ts.map +1 -1
  31. package/dist/backends/kubernetes/index.js +1180 -95
  32. package/dist/backends/kubernetes/index.js.map +1 -1
  33. package/dist/backends/kubernetes/ingress-policy.d.ts +375 -0
  34. package/dist/backends/kubernetes/ingress-policy.d.ts.map +1 -0
  35. package/dist/backends/kubernetes/ingress-policy.js +1050 -0
  36. package/dist/backends/kubernetes/ingress-policy.js.map +1 -0
  37. package/dist/backends/kubernetes/k8s-client.d.ts +213 -4
  38. package/dist/backends/kubernetes/k8s-client.d.ts.map +1 -1
  39. package/dist/backends/kubernetes/k8s-client.js +359 -52
  40. package/dist/backends/kubernetes/k8s-client.js.map +1 -1
  41. package/dist/backends/kubernetes/lease.d.ts +40 -14
  42. package/dist/backends/kubernetes/lease.d.ts.map +1 -1
  43. package/dist/backends/kubernetes/lease.js +68 -18
  44. package/dist/backends/kubernetes/lease.js.map +1 -1
  45. package/dist/backends/kubernetes/objects.d.ts +423 -3
  46. package/dist/backends/kubernetes/objects.d.ts.map +1 -1
  47. package/dist/backends/kubernetes/objects.js +364 -2
  48. package/dist/backends/kubernetes/objects.js.map +1 -1
  49. package/dist/backends/kubernetes/per-sandbox-policy.d.ts +219 -0
  50. package/dist/backends/kubernetes/per-sandbox-policy.d.ts.map +1 -0
  51. package/dist/backends/kubernetes/per-sandbox-policy.js +375 -0
  52. package/dist/backends/kubernetes/per-sandbox-policy.js.map +1 -0
  53. package/dist/backends/kubernetes/rbac.d.ts +153 -0
  54. package/dist/backends/kubernetes/rbac.d.ts.map +1 -0
  55. package/dist/backends/kubernetes/rbac.js +177 -0
  56. package/dist/backends/kubernetes/rbac.js.map +1 -0
  57. package/dist/backends/kubernetes/sandbox.d.ts +81 -14
  58. package/dist/backends/kubernetes/sandbox.d.ts.map +1 -1
  59. package/dist/backends/kubernetes/sandbox.js +149 -15
  60. package/dist/backends/kubernetes/sandbox.js.map +1 -1
  61. package/dist/backends/kubernetes/transport.d.ts +935 -9
  62. package/dist/backends/kubernetes/transport.d.ts.map +1 -1
  63. package/dist/backends/kubernetes/transport.js +1958 -62
  64. package/dist/backends/kubernetes/transport.js.map +1 -1
  65. package/dist/backends/kubernetes/workspace.d.ts +1149 -18
  66. package/dist/backends/kubernetes/workspace.d.ts.map +1 -1
  67. package/dist/backends/kubernetes/workspace.js +2825 -186
  68. package/dist/backends/kubernetes/workspace.js.map +1 -1
  69. package/dist/backends/remote-execution-controller.d.ts +14 -0
  70. package/dist/backends/remote-execution-controller.d.ts.map +1 -1
  71. package/dist/backends/remote-execution-controller.js.map +1 -1
  72. package/dist/index.d.ts +294 -18
  73. package/dist/index.d.ts.map +1 -1
  74. package/dist/index.js +280 -10
  75. package/dist/index.js.map +1 -1
  76. package/dist/testing/sandbox-conformance.d.ts +39 -5
  77. package/dist/testing/sandbox-conformance.d.ts.map +1 -1
  78. package/dist/testing/sandbox-conformance.js +436 -5
  79. package/dist/testing/sandbox-conformance.js.map +1 -1
  80. package/package.json +3 -3
  81. package/src/backends/aci-standby-pool/index.ts +16 -1
  82. package/src/backends/docker/index.ts +617 -100
  83. package/src/backends/firecracker/index.ts +14 -2
  84. package/src/backends/firecracker/protocol.ts +514 -6
  85. package/src/backends/firecracker/transport.ts +1492 -40
  86. package/src/backends/kubernetes/egress-policy.ts +3334 -55
  87. package/src/backends/kubernetes/identity.ts +261 -0
  88. package/src/backends/kubernetes/index.ts +1785 -127
  89. package/src/backends/kubernetes/ingress-policy.ts +1344 -0
  90. package/src/backends/kubernetes/k8s-client.ts +444 -54
  91. package/src/backends/kubernetes/lease.ts +75 -19
  92. package/src/backends/kubernetes/objects.ts +626 -6
  93. package/src/backends/kubernetes/per-sandbox-policy.ts +497 -0
  94. package/src/backends/kubernetes/rbac.ts +192 -0
  95. package/src/backends/kubernetes/sandbox.ts +218 -20
  96. package/src/backends/kubernetes/transport.ts +2733 -124
  97. package/src/backends/kubernetes/workspace.ts +4476 -222
  98. package/src/backends/remote-execution-controller.ts +14 -0
  99. package/src/index.ts +668 -19
  100. package/src/testing/sandbox-conformance.ts +540 -5
package/dist/index.js CHANGED
@@ -9,11 +9,29 @@
9
9
  *
10
10
  * Two tiers, each a trust boundary:
11
11
  *
12
- * • `container` — one OCI container per task, seccomp on, tmpfs
13
- * workdir, no network unless asked. The same path on a laptop and
14
- * on a Linux replica anywhere. The tier for trusted prompts and
15
- * contained workloads. Boundary: kernel namespaces, or a
16
- * userspace-kernel runtime where one is installed.
12
+ * • `container` — one OCI container per task, with the container itself
13
+ * as the boundary: kernel namespaces, or a userspace-kernel runtime
14
+ * where one is installed. The same path on a laptop and on a Linux
15
+ * replica anywhere. The tier for trusted prompts and contained
16
+ * workloads. What confines the workload INSIDE the container is
17
+ * applied by each backend and documented where it is applied, not
18
+ * promised here: `container:docker` drops every capability, sets
19
+ * no-new-privileges, gives the container an IPC namespace nothing else can
20
+ * join and mounts its root filesystem read-only over a named writable set
21
+ * (see `backends/docker/index.ts`), while the ACI standby pool takes
22
+ * its controls from the container-group profile its pool was built
23
+ * from. This line used to claim "seccomp on, tmpfs workdir, no
24
+ * network unless asked" on both their behalf, and none of the three
25
+ * is a property this package establishes: nothing here passes a
26
+ * seccomp flag, so what filters a container's syscalls is the daemon's
27
+ * own profile rather than a default this package sets; the directory
28
+ * the agent works in is the layout's `outputs` bind mount — a host
29
+ * directory the run is collected from — rather than a tmpfs that would
30
+ * lose it when the container exits; and the network a container is
31
+ * attached to is a fact about
32
+ * the backend's own configuration — a daemon network whose internals
33
+ * the egress policy is checked against, or the container group's
34
+ * subnet or public address.
17
35
  *
18
36
  * • `microvm` — one hardware-virtualized guest per task. The boundary
19
37
  * to reach for when the prompt itself is adversarial, at the cost
@@ -36,23 +54,170 @@
36
54
  import { buildAciStandbyPoolBackend } from './backends/aci-standby-pool/index.js';
37
55
  import { buildDockerBackend, resolveLayout } from './backends/docker/index.js';
38
56
  import { buildFirecrackerBackend } from './backends/firecracker/index.js';
39
- import { buildKubernetesBackend, } from './backends/kubernetes/index.js';
40
- import { createKubernetesWorkspace as buildKubernetesWorkspace, } from './backends/kubernetes/workspace.js';
57
+ import { buildKubernetesBackend, readKubernetesTaskCapacity as readTaskCapacityOnCluster, releaseKubernetesTaskSandboxes as releaseTaskSandboxesOnCluster, } from './backends/kubernetes/index.js';
58
+ import { createKubernetesWorkspace as buildKubernetesWorkspace, deleteKubernetesWorkspace as deleteWorkspaceOnCluster, listKubernetesWorkspaces as listWorkspacesOnCluster, suspendKubernetesWorkspace as suspendWorkspaceOnCluster, } from './backends/kubernetes/workspace.js';
41
59
  // Re-export the default container-path constants the prompt-template
42
60
  // generator side wants to import without also depending on
43
61
  // `@namzu/sdk` directly. Single source of truth: a Vandal prompt
44
62
  // saying "write outputs to `/mnt/user-data/outputs`" imports
45
63
  // `SANDBOX_DEFAULT_OUTPUTS_PATH` instead of hard-coding the string.
46
64
  export { SANDBOX_DEFAULT_OUTPUTS_PATH, SANDBOX_DEFAULT_SKILLS_PARENT, SANDBOX_DEFAULT_TOOL_RESULTS_PATH, SANDBOX_DEFAULT_TRANSCRIPTS_PATH, SANDBOX_DEFAULT_UPLOADS_PATH, } from '@namzu/sdk';
47
- export { AgentPreauthFrameTooLargeError, FIRECRACKER_AGENT_PROTOCOL_VERSION, TCP_PREAUTH_FRAME_LIMIT_BYTES, VsockAgentTransport, } from './backends/firecracker/transport.js';
65
+ export { AgentDialFailedError, AgentPreauthFrameTooLargeError, AgentReadFileStreamUnsupportedError, AgentWriteFileTooLargeError, DEFAULT_MAX_WRITE_FILE_BYTES, FIRECRACKER_AGENT_PROTOCOL_VERSION, GUEST_FRAME_LIMIT_BYTES, TCP_PREAUTH_FRAME_LIMIT_BYTES, VsockAgentTransport, } from './backends/firecracker/transport.js';
66
+ // The `write-file` part protocol: the healthz feature string a guest
67
+ // advertises when it can take a body larger than one frame, and the shape
68
+ // of one part. Exported so a host writing its own guest, or asserting what
69
+ // this one advertises, names them rather than repeating the literal.
70
+ export { WRITE_FILE_PARTS_FEATURE, } from './backends/firecracker/protocol.js';
71
+ // The per-stream liveness heartbeat: the feature string a guest advertises
72
+ // when it understands one, the frame both sides send, and how many missed
73
+ // intervals end a stream. Same reason as above — a host asserting what this
74
+ // guest advertises should name the string rather than repeat the literal.
75
+ export { MIN_STREAM_HEARTBEAT_MS, STREAM_HEARTBEAT_FEATURE, STREAM_HEARTBEAT_MAX_ECHO_FACTOR, STREAM_HEARTBEAT_MISS_LIMIT, } from './backends/firecracker/protocol.js';
76
+ // The read side of the same arrangement: one healthz feature string for
77
+ // both the ranged `read-file` and the `read-file-stream` op, and the
78
+ // request/event shapes they speak. Exported for the same reason — a host
79
+ // writing its own guest, or asserting what this one advertises, names them
80
+ // rather than repeating the literal.
81
+ export { READ_FILE_STREAM_FEATURE, } from './backends/firecracker/protocol.js';
82
+ // Per-sandbox egress — `config.egress.perSandbox`, which makes
83
+ // `Sandbox.setNetworkPolicy` PRESENT on a kubernetes TASK handle instead of
84
+ // omitted. Everything a host needs to configure it and to catch its two
85
+ // refusals by class: a capability declared in a way this backend cannot
86
+ // honour (wiring time), and a write refused because the operator-applied
87
+ // admission fence that bounds it is not there — or cannot be read, which is
88
+ // a different file to fix (call time, nothing written in either case).
89
+ // `KubernetesNetworkPolicyHostError` is the third: an `allowedHosts` entry
90
+ // that is not a hostname, or one the configured narrowing cannot express.
91
+ // `KubernetesOwnerUidMissingError` is the fourth, and the only one raised
92
+ // from an ACQUIRE — the object this backend created reported no uid, so a
93
+ // policy written for it would be an orphan.
94
+ // `KubernetesWorkspacePerSandboxEgressConfigError` is the fifth: the same
95
+ // option reaching `createKubernetesWorkspace`, whose handle never carries
96
+ // `setNetworkPolicy` — refused there rather than accepted and ignored.
97
+ // See `backends/kubernetes/per-sandbox-policy.ts` — and, for
98
+ // `KubernetesNetworkPolicyHostError`, which the config-level translation
99
+ // refuses the same entries with, `backends/kubernetes/egress-policy.ts`.
100
+ export { KubernetesPerSandboxEgressConfigError } from './backends/kubernetes/egress-policy.js';
101
+ export { KubernetesWorkspacePerSandboxEgressConfigError } from './backends/kubernetes/egress-policy.js';
102
+ export { DEFAULT_PER_SANDBOX_EGRESS_LABEL_KEY } from './backends/kubernetes/egress-policy.js';
103
+ export { KubernetesAdmissionFenceMissingError, KubernetesAdmissionFenceUnreadableError, KubernetesNetworkPolicyHostError, KubernetesOwnerUidMissingError, PER_SANDBOX_POLICY_NAME_PREFIX, } from './backends/kubernetes/per-sandbox-policy.js';
104
+ // The default label key `KubernetesEgressConfig.profile` is written under.
105
+ // Exported because an operator has to name that key's DOMAIN in the
106
+ // controller's `allowed-label-domains` allowlist before a profiled claim is
107
+ // accepted, and reading it off the package beats copying a string out of a
108
+ // document.
109
+ export { DEFAULT_EGRESS_PROFILE_LABEL_KEY } from './backends/kubernetes/egress-policy.js';
110
+ export { KubernetesEgressNarrowingUnsupportedError, KubernetesEgressPolicyConfigError, KubernetesEgressPolicyUnionError, } from './backends/kubernetes/egress-policy.js';
111
+ // What an egress PROFILE adds to the refusals above. Two are thrown: a
112
+ // profile this backend will not emit (while the host is still being wired),
113
+ // and a bound pod that never carried the label this backend asked the
114
+ // controller for — refused rather than admitted, because admitting it would
115
+ // run the sandbox under whatever policy DOES select it. The third is never
116
+ // thrown on its own: a claim the controller refused because a label key's
117
+ // domain is not on its allowlist still comes out as
118
+ // `KubernetesAcquireError { reason: 'claim-rejected' }`, and
119
+ // `KubernetesPodLabelsRejectedError` is that error's `cause`, naming the map
120
+ // that was sent and the config key that moves it.
121
+ export { KubernetesEgressProfileConfigError, KubernetesPodLabelNotObservedError, KubernetesPodLabelsRejectedError, } from './backends/kubernetes/egress-policy.js';
122
+ export { KubernetesIngressPolicyError } from './backends/kubernetes/ingress-policy.js';
48
123
  // The errors a caller of a kubernetes sandbox has to be able to catch BY
49
124
  // CLASS rather than by matching a message: an acquire refused because the
50
125
  // guest is not deprivileged, a call after the handle ended (this host
51
126
  // destroyed it, or the cluster deleted it), and a rejected agent token.
52
127
  export { KubernetesPrivilegeProbeError, } from './backends/kubernetes/privilege-probe.js';
53
128
  export { KubernetesSandboxDestroyedError, KubernetesSandboxGoneError, } from './backends/kubernetes/sandbox.js';
54
- export { KubernetesAgentUnauthorizedError } from './backends/kubernetes/transport.js';
55
- export { KubernetesWorkspaceDiskError, KubernetesWorkspaceMismatchError, KubernetesWorkspaceSuspendTimeoutError, KubernetesWorkspaceSuspendedError, } from './backends/kubernetes/workspace.js';
129
+ export { KubernetesAgentAddressUnresolvableError,
130
+ // A guest that has fenced itself refuses one CALL here, not the
131
+ // workspace: the Firecracker tier's mapping of the same refusal retires
132
+ // the sandbox, which on a workspace would take the pod away from every
133
+ // other holder. See `backends/kubernetes/transport.ts`.
134
+ KubernetesAgentRetiringError, KubernetesAgentUnauthorizedError, } from './backends/kubernetes/transport.js';
135
+ export { KubernetesExecutionAttachUnsupportedError, KubernetesExecutionDetachedError, KubernetesExecutionNotAttachableError, } from './backends/kubernetes/transport.js';
136
+ export { KubernetesSessionRefusedError, KubernetesSessionsUnsupportedError, } from './backends/kubernetes/transport.js';
137
+ export { AgentSessionDetachedError } from './backends/firecracker/transport.js';
138
+ // The `sessions` healthz feature string, and the session vocabulary its
139
+ // frames use. Same reason as the two feature strings above: a host asserting
140
+ // what an image can do should name the string rather than repeat the literal.
141
+ export { SESSIONS_FEATURE, } from './backends/firecracker/protocol.js';
142
+ export { KubernetesQuiesceUnconfirmedError, KubernetesQuiesceUnsupportedError, } from './backends/kubernetes/transport.js';
143
+ export { QUIESCE_FEATURE, } from './backends/firecracker/protocol.js';
144
+ export { KubernetesFlushUnconfirmedError, KubernetesFlushUnreachableError, KubernetesFlushUnsupportedError, } from './backends/kubernetes/transport.js';
145
+ export { FLUSH_FEATURE } from './backends/firecracker/protocol.js';
146
+ // The API-request bound and the error it raises. Exported because
147
+ // "distinguishable from a caller abort and from every other failure, by
148
+ // type" is only true for a host that can name the class — and because a
149
+ // host that sets `apiRequestTimeoutMs` wants the default and the floor it is
150
+ // choosing against.
151
+ // `KubernetesHttpMethod` rides along because `KubernetesApiTimeoutError.verb`
152
+ // is one: a caller that can catch the class but cannot name the type of the
153
+ // field it is reading is back to inlining the union or reaching for `any`.
154
+ export { DEFAULT_API_REQUEST_TIMEOUT_MS,
155
+ // Every API failure the four classes below do not name: a connect
156
+ // failure, and every non-2xx status outside 401/403/404/409/410. It
157
+ // carries the status and the `Retry-After` the server sent, because a
158
+ // burst past node capacity (429) and an API server that is down (a
159
+ // connect failure) were otherwise the same plain `Error`, separable only
160
+ // by matching a message any release is free to reword. It carries no
161
+ // retry policy — see `backends/kubernetes/index.ts` for who decides that.
162
+ KubernetesApiError, KubernetesApiTimeoutError,
163
+ // A conditional write the API server would not apply. A host that fences
164
+ // its workspaces with a holder epoch normally catches
165
+ // `KubernetesWorkspacePreconditionError` instead — this one survives only
166
+ // when the object kept changing under the write or the patch body was
167
+ // wrong, and a caller that cannot name the class cannot tell it from a
168
+ // cluster failure.
169
+ KubernetesPatchNotAppliedError, MIN_API_REQUEST_TIMEOUT_MS, } from './backends/kubernetes/k8s-client.js';
170
+ // The three statuses the client maps to a class of their own, so a caller can
171
+ // treat "already gone" as the state a teardown was asking for, re-read after a
172
+ // 409, and tell a rejected credential from a cluster failure — by class, which
173
+ // is the only way that survives a reworded message. They have been thrown
174
+ // since the backend existed and were reachable only by importing a deep path.
175
+ export { KubernetesAlreadyGoneError, KubernetesConflictError, KubernetesCredentialError, } from './backends/kubernetes/k8s-client.js';
176
+ // Why an acquire was refused, as a field rather than as prose: the seven
177
+ // reasons, the class that carries one, and the measured list of controller
178
+ // `Ready=False` reasons that mean "decided" rather than "not yet". A host
179
+ // deciding whether to retry, to fail the run or to page an operator reads
180
+ // `reason` and `retryable`; `cause` is the original failure, so a host that
181
+ // already catches `ReadinessPollTimeout` or `KubernetesApiTimeoutError` finds
182
+ // it there. See `backends/kubernetes/index.ts`.
183
+ export { KubernetesAcquireError,
184
+ // The poll's own give-up, by type. It is the `cause` of a `'not-ready'`
185
+ // acquire refusal and is raised directly by the workspace lifecycle, which
186
+ // does not go through acquire.
187
+ ReadinessPollTimeout, TERMINAL_CLAIM_REASONS, } from './backends/kubernetes/index.js';
188
+ // The three ways egress verification refuses: a policy this engine cannot
189
+ // express, no applied object at all, and an applied object that does not
190
+ // match what this configuration translates to. Catchable by class for the
191
+ // same reason the ingress refusal above is — an operator debugging two
192
+ // default-on refusals in one release should not have to read messages to
193
+ // tell them apart.
194
+ export { KubernetesEgressPolicyMismatchError, KubernetesEgressPolicyNotAppliedError, KubernetesUnenforceableEgressPolicyError, } from './backends/kubernetes/egress-policy.js';
195
+ /** Default `KubernetesBackendConfig.streamHeartbeatMs` — see there. */
196
+ export { DEFAULT_STREAM_HEARTBEAT_MS } from './backends/kubernetes/index.js';
197
+ // What a CLAIM-ONLY host is allowed to do, as data: the verbs the pool-only
198
+ // path issues, each pinned to its call site in `backends/kubernetes/rbac.ts`.
199
+ // `k8s/manifests/rbac-claimant.yaml` grants exactly this and a test parses
200
+ // that file and compares it here, so an operator who has to prove a live
201
+ // `Role` carries no more than this backend needs compares against the same
202
+ // constant rather than against a list copied out of a page.
203
+ export { KUBERNETES_CLAIMANT_RBAC_RULES, } from './backends/kubernetes/rbac.js';
204
+ export {
205
+ // The command's outcome is unknown AND the guest it ran in is gone. A
206
+ // subclass of `RemoteCancellationUnknownError`, so a host catching the
207
+ // base class keeps catching it; what it adds is which guest the command
208
+ // started on and which one is there now.
209
+ KubernetesWorkspaceGuestGoneError,
210
+ // A different Sandbox now stands under the workspace's deterministic
211
+ // name, or none does. The handle refuses rather than following it — the
212
+ // disk behind the name is not the disk it was opened on.
213
+ KubernetesWorkspaceReplacedError, } from './backends/kubernetes/identity.js';
214
+ export { KubernetesWorkspaceDiskError, KubernetesWorkspaceMismatchError,
215
+ // A lifecycle write refused because this caller's holder epoch has been
216
+ // overtaken: the workspace belongs to another process now, nothing on the
217
+ // cluster changed and nothing about the handle changed. A host that fences
218
+ // its workspaces has to be able to tell this from a cluster failure, which
219
+ // is the whole reason the write is conditional.
220
+ KubernetesWorkspacePreconditionError, KubernetesWorkspaceSuspendTimeoutError, KubernetesWorkspaceSuspendedError, } from './backends/kubernetes/workspace.js';
56
221
  /**
57
222
  * Egress allowlist resolution. Host-supplied policy decides whether
58
223
  * an outbound request is allowed before the proxy opens a socket.
@@ -194,6 +359,11 @@ function pickBackend(config) {
194
359
  ...(backend.network !== undefined ? { network: backend.network } : {}),
195
360
  ...(backend.allowInwardFor !== undefined ? { allowInwardFor: backend.allowInwardFor } : {}),
196
361
  ...(backend.labels !== undefined ? { labels: backend.labels } : {}),
362
+ ...(backend.cpuLimit !== undefined ? { cpuLimit: backend.cpuLimit } : {}),
363
+ ...(backend.readOnlyRootfs !== undefined ? { readOnlyRootfs: backend.readOnlyRootfs } : {}),
364
+ ...(backend.writableRootfsPaths !== undefined
365
+ ? { writableRootfsPaths: backend.writableRootfsPaths }
366
+ : {}),
197
367
  });
198
368
  }
199
369
  if (backend.tier === 'container' && backend.runtime === 'runsc') {
@@ -214,6 +384,11 @@ function pickBackend(config) {
214
384
  ...(backend.network !== undefined ? { network: backend.network } : {}),
215
385
  ...(backend.allowInwardFor !== undefined ? { allowInwardFor: backend.allowInwardFor } : {}),
216
386
  ...(backend.labels !== undefined ? { labels: backend.labels } : {}),
387
+ ...(backend.cpuLimit !== undefined ? { cpuLimit: backend.cpuLimit } : {}),
388
+ ...(backend.readOnlyRootfs !== undefined ? { readOnlyRootfs: backend.readOnlyRootfs } : {}),
389
+ ...(backend.writableRootfsPaths !== undefined
390
+ ? { writableRootfsPaths: backend.writableRootfsPaths }
391
+ : {}),
217
392
  });
218
393
  }
219
394
  // `microvm:self-hosted` targeting the OWNED Azure Firecracker
@@ -264,6 +439,7 @@ function kubernetesInternalConfig(backend) {
264
439
  sandboxTemplateName: backend.sandboxTemplateName,
265
440
  ...(backend.warmPoolName !== undefined ? { warmPoolName: backend.warmPoolName } : {}),
266
441
  ...(backend.agentPort !== undefined ? { agentPort: backend.agentPort } : {}),
442
+ ...(backend.agentAddress !== undefined ? { agentAddress: backend.agentAddress } : {}),
267
443
  ...(backend.readyPollIntervalMs !== undefined
268
444
  ? { readyPollIntervalMs: backend.readyPollIntervalMs }
269
445
  : {}),
@@ -276,6 +452,14 @@ function kubernetesInternalConfig(backend) {
276
452
  ? { runtimeClassName: backend.runtimeClassName }
277
453
  : {}),
278
454
  ...(backend.egress !== undefined ? { egress: backend.egress } : {}),
455
+ ...(backend.ingress !== undefined ? { ingress: backend.ingress } : {}),
456
+ ...(backend.apiRequestTimeoutMs !== undefined
457
+ ? { apiRequestTimeoutMs: backend.apiRequestTimeoutMs }
458
+ : {}),
459
+ ...(backend.streamHeartbeatMs !== undefined
460
+ ? { streamHeartbeatMs: backend.streamHeartbeatMs }
461
+ : {}),
462
+ ...(backend.claimLabels !== undefined ? { claimLabels: backend.claimLabels } : {}),
279
463
  };
280
464
  }
281
465
  /**
@@ -301,6 +485,92 @@ function kubernetesInternalConfig(backend) {
301
485
  export async function createKubernetesWorkspace(config, options) {
302
486
  return await buildKubernetesWorkspace(kubernetesInternalConfig(config), options);
303
487
  }
488
+ /**
489
+ * Every workspace this backend owns in the namespace, read off the objects
490
+ * and waking none of them.
491
+ *
492
+ * The inventory {@link createKubernetesWorkspace} cannot give you: it adopts
493
+ * AND resumes, so taking stock through it would start a pod for every
494
+ * suspended workspace it looked at. This issues one GET of the sandboxes
495
+ * collection and sends no PATCH and no DELETE — a suspended workspace is
496
+ * still suspended afterwards.
497
+ *
498
+ * Needs `list` on `sandboxes` in the namespace, which is the one RBAC verb
499
+ * the task path did not already require.
500
+ */
501
+ export async function listKubernetesWorkspaces(config, options) {
502
+ return await listWorkspacesOnCluster(kubernetesInternalConfig(config), options);
503
+ }
504
+ /**
505
+ * Delete a workspace by id — the Sandbox, and with it the Pod, the Service
506
+ * and the PVC — without adopting or resuming it first.
507
+ *
508
+ * Exactly what `destroy({ deleteDisk: true })` does to the cluster, with the
509
+ * same guarantees: an object already gone counts as deleted, and a DELETE
510
+ * that fails rejects and stays retryable. The files are gone and nothing
511
+ * brings them back.
512
+ *
513
+ * It is the retention verb. Removing a month-old suspended workspace through
514
+ * a handle meant starting its pod and probing it purely to tell it to go
515
+ * away; the name is deterministic, so the object never needed opening.
516
+ */
517
+ export async function deleteKubernetesWorkspace(config, workspaceId, options) {
518
+ await deleteWorkspaceOnCluster(kubernetesInternalConfig(config), workspaceId, options);
519
+ }
520
+ /**
521
+ * Suspend a workspace by id: send the `operatingMode: Suspended` patch and
522
+ * wait for the pod to actually stop, without adopting the workspace.
523
+ *
524
+ * Resolves only once the pod is gone or in a terminal phase — a suspend is a
525
+ * promise that the disk is quiesced, and the patch being accepted says only
526
+ * that the controller has been asked. A pod that outlives `readyTimeoutMs`
527
+ * rejects with `KubernetesWorkspaceSuspendTimeoutError`, leaving the object
528
+ * as the patch left it.
529
+ *
530
+ * A handle another process is holding is not told. It finds out on its next
531
+ * call — which fails at the transport and is re-read into a
532
+ * `KubernetesWorkspaceSuspendedError` — or when that process calls
533
+ * `refresh()`.
534
+ *
535
+ * It takes the suspend options shape and REFUSES `quiesce` rather than
536
+ * accepting the flag and dropping it: this verb never dials the agent, so
537
+ * there is no connection here on which anything could be stopped. Quiescing
538
+ * needs a handle — `createKubernetesWorkspace()`, then
539
+ * `suspend({ quiesce: true })`.
540
+ */
541
+ export async function suspendKubernetesWorkspace(config, workspaceId, options) {
542
+ await suspendWorkspaceOnCluster(kubernetesInternalConfig(config), workspaceId, options);
543
+ }
544
+ /**
545
+ * Recover a crashed host's task-path claims: LIST every `SandboxClaim`
546
+ * carrying `options.labelSelector`, `DELETE` each, and report what was
547
+ * removed.
548
+ *
549
+ * Deletes claims only — the controller's own ownerReferences take the bound
550
+ * Sandbox, its Pod and its Service down behind each one; nothing here reads
551
+ * or touches those objects directly. `labelSelector` is REQUIRED and refused
552
+ * before any request goes out if it is empty: falling back to matching every
553
+ * claim would delete a live fleet's work.
554
+ *
555
+ * Pairs with `config.claimLabels`: a host stamps its own identity onto every
556
+ * claim it creates, and a restarted instance passes that same selector here
557
+ * to reclaim its predecessor's warm-pool capacity well before
558
+ * `claimTtlSeconds` would reap it on its own.
559
+ */
560
+ export async function releaseKubernetesTaskSandboxes(config, options) {
561
+ return await releaseTaskSandboxesOnCluster(kubernetesInternalConfig(config), options);
562
+ }
563
+ /**
564
+ * Read task-pool headroom before admitting more work: three GETs
565
+ * (`SandboxWarmPool`, the claims collection, the pods collection), no
566
+ * writes.
567
+ *
568
+ * Requires `config.warmPoolName` — a pool-less backend (every create is a
569
+ * direct Sandbox) has no `SandboxWarmPool` to report on.
570
+ */
571
+ export async function readKubernetesTaskCapacity(config, options) {
572
+ return await readTaskCapacityOnCluster(kubernetesInternalConfig(config), options);
573
+ }
304
574
  /**
305
575
  * Human-readable backend label for error messages. Returns the
306
576
  * tier plus the concrete service / runtime when present, e.g.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AASH,OAAO,EAAE,0BAA0B,EAAE,MAAM,sCAAsC,CAAA;AACjF,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAA;AAEzE,OAAO,EAGN,sBAAsB,GACtB,MAAM,gCAAgC,CAAA;AACvC,OAAO,EAGN,yBAAyB,IAAI,wBAAwB,GACrD,MAAM,oCAAoC,CAAA;AAa3C,qEAAqE;AACrE,2DAA2D;AAC3D,iEAAiE;AACjE,6DAA6D;AAC7D,oEAAoE;AACpE,OAAO,EACN,4BAA4B,EAC5B,6BAA6B,EAC7B,iCAAiC,EACjC,gCAAgC,EAChC,4BAA4B,GAC5B,MAAM,YAAY,CAAA;AAUnB,OAAO,EACN,8BAA8B,EAC9B,kCAAkC,EAElC,6BAA6B,EAE7B,mBAAmB,GACnB,MAAM,qCAAqC,CAAA;AAY5C,yEAAyE;AACzE,0EAA0E;AAC1E,sEAAsE;AACtE,wEAAwE;AACxE,OAAO,EACN,6BAA6B,GAG7B,MAAM,0CAA0C,CAAA;AACjD,OAAO,EACN,+BAA+B,EAC/B,0BAA0B,GAC1B,MAAM,kCAAkC,CAAA;AACzC,OAAO,EAAE,gCAAgC,EAAE,MAAM,oCAAoC,CAAA;AAarF,OAAO,EACN,4BAA4B,EAC5B,gCAAgC,EAChC,sCAAsC,EACtC,iCAAiC,GACjC,MAAM,oCAAoC,CAAA;AAqY3C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EACN,WAAW,EACX,aAAa,EACb,cAAc,GACd,MAAM,mBAAmB,CAAA;AA4H1B;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAA6B;IAClE,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,CAAA;IACnC,MAAM,EAAE,GAAG,SAAS,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE,CAAA;IAClD,MAAM,IAAI,GAAG,mBAAmB,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAA;IACjE,OAAO;QACN,EAAE;QACF,IAAI;QACJ,WAAW,EAAE,OAAO;QACpB,uEAAuE;QACvE,0EAA0E;QAC1E,2BAA2B;QAC3B,cAAc,EAAE,CAAC,WAAW,CAAC;QAC7B,KAAK,CAAC,MAAM,CAAC,OAA6B;YACzC,OAAO,MAAM,OAAO,CAAC,MAAM,CAAC;gBAC3B,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACpE,gBAAgB,EAAE,OAAO,EAAE,gBAAgB,IAAI,YAAY;gBAC3D,GAAG,CAAC,MAAM,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/E,GAAG,CAAC,OAAO,EAAE,SAAS,KAAK,SAAS;oBACnC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE;oBAClC,CAAC,CAAC,MAAM,CAAC,gBAAgB,KAAK,SAAS;wBACtC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,gBAAgB,EAAE;wBACxC,CAAC,CAAC,EAAE,CAAC;gBACP,GAAG,CAAC,OAAO,EAAE,aAAa,KAAK,SAAS;oBACvC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE;oBAC1C,CAAC,CAAC,MAAM,CAAC,oBAAoB,KAAK,SAAS;wBAC1C,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,oBAAoB,EAAE;wBAChD,CAAC,CAAC,EAAE,CAAC;gBACP,GAAG,CAAC,OAAO,EAAE,YAAY,KAAK,SAAS;oBACtC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE;oBACxC,CAAC,CAAC,MAAM,CAAC,mBAAmB,KAAK,SAAS;wBACzC,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,mBAAmB,EAAE;wBAC9C,CAAC,CAAC,EAAE,CAAC;gBACP,GAAG,CAAC,OAAO,EAAE,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aAC3D,CAAC,CAAA;QACH,CAAC;KACD,CAAA;AACF,CAAC;AAED,SAAS,WAAW,CAAC,MAA6B;IACjD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAA;IAC9B,6EAA6E;IAC7E,wEAAwE;IACxE,sEAAsE;IACtE,uEAAuE;IACvE,uEAAuE;IACvE,4EAA4E;IAC5E,4CAA4C;IAC5C,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,IAAI,OAAO,CAAC,OAAO,KAAK,kBAAkB,EAAE,CAAC;QAC5E,MAAM,MAAM,GAAI,MAA6E;aAC3F,MAAM,CAAA;QACR,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;QACtC,OAAO,0BAA0B,CAAC;YACjC,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;YACpD,+BAA+B,EAAE,OAAO,CAAC,+BAA+B;YACxE,GAAG,CAAC,OAAO,CAAC,6BAA6B,KAAK,SAAS;gBACtD,CAAC,CAAC,EAAE,6BAA6B,EAAE,OAAO,CAAC,6BAA6B,EAAE;gBAC1E,CAAC,CAAC,EAAE,CAAC;YACN,MAAM,EAAE,QAAQ;YAChB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzE,GAAG,CAAC,OAAO,CAAC,mBAAmB,KAAK,SAAS;gBAC5C,CAAC,CAAC,EAAE,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,EAAE;gBACtD,CAAC,CAAC,EAAE,CAAC;YACN,GAAG,CAAC,OAAO,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3F,GAAG,CAAC,OAAO,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/E,GAAG,CAAC,OAAO,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxF,GAAG,CAAC,OAAO,CAAC,mBAAmB,KAAK,SAAS;gBAC5C,CAAC,CAAC,EAAE,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,EAAE;gBACtD,CAAC,CAAC,EAAE,CAAC;SACN,CAAC,CAAA;IACH,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,QAAQ,CAAC,KAAK,QAAQ,EAAE,CAAC;QAChF,0DAA0D;QAC1D,yDAAyD;QACzD,aAAa;QACb,MAAM,MAAM,GAAI,MAA6E;aAC3F,MAAM,CAAA;QACR,gEAAgE;QAChE,6DAA6D;QAC7D,mDAAmD;QACnD,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;QACtC,OAAO,kBAAkB,CAAC;YACzB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,QAAQ;YAChB,GAAG,CAAC,OAAO,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3F,GAAG,CAAC,OAAO,CAAC,mBAAmB,KAAK,SAAS;gBAC5C,CAAC,CAAC,EAAE,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,EAAE;gBACtD,CAAC,CAAC,EAAE,CAAC;YACN,GAAG,CAAC,OAAO,CAAC,gBAAgB,KAAK,SAAS;gBACzC,CAAC,CAAC,EAAE,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE;gBAChD,CAAC,CAAC,EAAE,CAAC;YACN,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtE,GAAG,CAAC,OAAO,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3F,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACnE,CAAC,CAAA;IACH,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,IAAI,OAAO,CAAC,OAAO,KAAK,OAAO,EAAE,CAAC;QACjE,MAAM,MAAM,GAAI,MAA6E;aAC3F,MAAM,CAAA;QACR,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;QACtC,OAAO,kBAAkB,CAAC;YACzB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,OAAO;YAChB,GAAG,CAAC,OAAO,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3F,GAAG,CAAC,OAAO,CAAC,mBAAmB,KAAK,SAAS;gBAC5C,CAAC,CAAC,EAAE,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,EAAE;gBACtD,CAAC,CAAC,EAAE,CAAC;YACN,GAAG,CAAC,OAAO,CAAC,gBAAgB,KAAK,SAAS;gBACzC,CAAC,CAAC,EAAE,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE;gBAChD,CAAC,CAAC,EAAE,CAAC;YACN,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtE,GAAG,CAAC,OAAO,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3F,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACnE,CAAC,CAAA;IACH,CAAC;IACD,8DAA8D;IAC9D,mEAAmE;IACnE,oEAAoE;IACpE,qEAAqE;IACrE,oEAAoE;IACpE,6DAA6D;IAC7D,IACC,OAAO,CAAC,IAAI,KAAK,SAAS;QAC1B,OAAO,CAAC,OAAO,KAAK,aAAa;QACjC,OAAO,CAAC,oBAAoB,KAAK,SAAS;QAC1C,OAAO,CAAC,QAAQ,KAAK,SAAS,EAC7B,CAAC;QACF,OAAO,uBAAuB,CAAC;YAC9B,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;YAClD,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzE,GAAG,CAAC,OAAO,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxF,GAAG,CAAC,OAAO,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3F,GAAG,CAAC,OAAO,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3F,GAAG,CAAC,OAAO,CAAC,mBAAmB,KAAK,SAAS;gBAC5C,CAAC,CAAC,EAAE,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,EAAE;gBACtD,CAAC,CAAC,EAAE,CAAC;YACN,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7D,GAAG,CAAC,OAAO,CAAC,gBAAgB,KAAK,SAAS;gBACzC,CAAC,CAAC,EAAE,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE;gBAChD,CAAC,CAAC,EAAE,CAAC;SACN,CAAC,CAAA;IACH,CAAC;IACD,yEAAyE;IACzE,2EAA2E;IAC3E,wEAAwE;IACxE,kBAAkB;IAClB,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,IAAI,OAAO,CAAC,OAAO,KAAK,YAAY,EAAE,CAAC;QACpE,OAAO,sBAAsB,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAA;IACjE,CAAC;IACD,MAAM,IAAI,iCAAiC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAA;AACtE,CAAC;AAED;;;;;GAKG;AACH,SAAS,wBAAwB,CAChC,OAAgC;IAEhC,OAAO;QACN,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;QAChD,GAAG,CAAC,OAAO,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrF,GAAG,CAAC,OAAO,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,GAAG,CAAC,OAAO,CAAC,mBAAmB,KAAK,SAAS;YAC5C,CAAC,CAAC,EAAE,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,EAAE;YACtD,CAAC,CAAC,EAAE,CAAC;QACN,GAAG,CAAC,OAAO,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3F,GAAG,CAAC,OAAO,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9F,GAAG,CAAC,OAAO,CAAC,mBAAmB,KAAK,SAAS;YAC5C,CAAC,CAAC,EAAE,mBAAmB,EAAE,OAAO,CAAC,mBAAmB,EAAE;YACtD,CAAC,CAAC,EAAE,CAAC;QACN,GAAG,CAAC,OAAO,CAAC,gBAAgB,KAAK,SAAS;YACzC,CAAC,CAAC,EAAE,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE;YAChD,CAAC,CAAC,EAAE,CAAC;QACN,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACnE,CAAA;AACF,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC9C,MAA+B,EAC/B,OAAmC;IAEnC,OAAO,MAAM,wBAAwB,CAAC,wBAAwB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAA;AACjF,CAAC;AAED;;;;GAIG;AACH,SAAS,eAAe,CAAC,MAA4B;IACpD,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,WAAW,MAAM,CAAC,OAAO,EAAE,CAAA;IACjE,OAAO,aAAa,MAAM,CAAC,OAAO,IAAI,QAAQ,EAAE,CAAA;AACjD,CAAC;AAED,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E;;;;;;;;GAQG;AACH,MAAM,OAAO,iCAAkC,SAAQ,KAAK;IAG/B;IAFV,IAAI,GAAG,mCAAmC,CAAA;IAE5D,YAA4B,OAAe;QAC1C,KAAK,CACJ,oBAAoB,OAAO,2FAA2F,CACtH,CAAA;QAH0B,YAAO,GAAP,OAAO,CAAQ;IAI3C,CAAC;CACD;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,OAAO,qCAAsC,SAAQ,KAAK;IAI9C;IAHC,IAAI,GAAG,uCAAuC,CAAA;IAEhE,YACiB,OAA0B,EAC1C,OAA6B;QAE7B,KAAK,CACJ,mCAAmC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EACvD,OAAO,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CACnE,CAAA;QANe,YAAO,GAAP,OAAO,CAAmB;IAO3C,CAAC;IAED,MAAM;QAML,OAAO;YACN,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC1D,CAAA;IACF,CAAC;CACD;AAsDD;;;;;;GAMG;AACH,SAAS,sBAAsB,CAAC,KAAc;IAC7C,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,CAAA;IAChE,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,EAAE,CAAA;IAC1E,IAAI,OAAO,KAAK,KAAK,UAAU;QAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,YAAY,EAAE,CAAA;IACnF,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAA;IACnF,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAA;IACnF,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1D,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAA;IAC3D,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;IAC1E,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7D,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAA;IACpD,CAAC;IACD,6DAA6D;IAC7D,gEAAgE;IAChE,gDAAgD;IAChD,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,EAAE,CAAA;AAC3D,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,GAAY;IACjD,OAAO,kBAAkB,CAAC,GAAG,EAAE,IAAI,OAAO,EAAE,CAAC,CAAA;AAC9C,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAY,EAAE,IAAqB;IAC9D,iEAAiE;IACjE,gEAAgE;IAChE,8DAA8D;IAC9D,iDAAiD;IACjD,IAAI,CAAC,CAAC,GAAG,YAAY,KAAK,CAAC,EAAE,CAAC;QAC7B,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YAC7C,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,YAAY,EAAE,CAAA;YAC9E,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACd,CAAC;QACD,OAAO,sBAAsB,CAAC,GAAG,CAAC,CAAA;IACnC,CAAC;IAED,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACnB,OAAO,EAAE,IAAI,EAAE,mBAAmB,EAAE,OAAO,EAAE,YAAY,EAAE,CAAA;IAC5D,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAEb,MAAM,GAAG,GAML;QACH,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,OAAO,EAAE,GAAG,CAAC,OAAO;KACpB,CAAA;IACD,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS;QAAE,GAAG,CAAC,KAAK,GAAG,GAAG,CAAC,KAAK,CAAA;IAClD,IAAI,GAAG,YAAY,qCAAqC,EAAE,CAAC;QAC1D,GAAG,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAA;IAC1B,CAAC;IACD,gEAAgE;IAChE,8DAA8D;IAC9D,kEAAkE;IAClE,IAAI,OAAO,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC/C,GAAG,CAAC,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IAChD,CAAC;IACD,OAAO,GAAG,CAAA;AACX,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACpC,IAAI,CAAC;QACJ,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IAC7B,CAAC;IAAC,MAAM,CAAC;QACR,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;IACrB,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -28,10 +28,10 @@
28
28
  * Contract behaviour only — never a backend-specific object, field or
29
29
  * error string. A case never inspects `sandbox.constructor.name`, never
30
30
  * matches an error message, and never assumes a particular
31
- * {@link SandboxEnvironment}. `openTerminal` and `openTcpConnection` are
32
- * OPTIONAL on {@link Sandbox} by the SDK's own contract — a backend that
33
- * cannot honour one must omit it rather than accept and ignore it — so a
34
- * factory whose sandbox omits either capability skips that section rather
31
+ * {@link SandboxEnvironment}. `openTerminal`, `openTcpConnection` and
32
+ * `walkFiles` are OPTIONAL on {@link Sandbox} by the SDK's own contract — a
33
+ * backend that cannot honour one must omit it rather than accept and ignore
34
+ * it — so a factory whose sandbox omits any of them skips that section rather
35
35
  * than failing it. Every other section runs against every sandbox.
36
36
  *
37
37
  * ## Where it runs today
@@ -67,8 +67,24 @@ import type { ConformanceAssertion, ConformanceDescribe, ConformanceExpect, Conf
67
67
  * label so a failure is legible on sight as "the sandbox contract", the
68
68
  * same convention `PROVIDER_DRIVER_CONTRACT_VERSION` uses — raised only
69
69
  * when a case is ADDED or TIGHTENED, never on a rewording.
70
+ *
71
+ * 3 is the `walkFiles`, concurrent-`exec` and `exec`-timeout sections, none
72
+ * of which needs a guest feature that did not already exist.
73
+ *
74
+ * **The ranged and streamed read cases deliberately did NOT raise it
75
+ * further.** Raising it for them would assert that every backend this suite
76
+ * runs against implements them, and one does not: the Firecracker tier's
77
+ * guest lives in a golden rootfs image that is NOT built from this
78
+ * repository — nothing here builds one, `packages/sandbox/package.json#files`
79
+ * does not even ship `agent/`, and `README.md` documents the image as
80
+ * something the operator builds and canaries on their own schedule. A
81
+ * deployment therefore runs whatever agent its last image build baked in,
82
+ * and a contract version that claimed otherwise would be a claim about
83
+ * images this repository cannot see. Those two cases are gated on
84
+ * {@link SandboxConformanceOptions.supportsRangedAndStreamedReads}
85
+ * instead, and skip by name when a backend does not declare them.
70
86
  */
71
- export declare const SANDBOX_CONTRACT_VERSION = 1;
87
+ export declare const SANDBOX_CONTRACT_VERSION = 3;
72
88
  /** A sandbox to test, plus whatever teardown building it required. */
73
89
  export interface SandboxConformanceHandle {
74
90
  readonly sandbox: Sandbox;
@@ -119,6 +135,24 @@ export interface SandboxConformanceOptions {
119
135
  * {@link GuestListenerCommand.parsePort} expects.
120
136
  */
121
137
  readonly guestListenerCommand?: () => GuestListenerCommand;
138
+ /**
139
+ * Whether this backend's guest honours `readFile`'s `offset`/`length`
140
+ * and implements {@link Sandbox.readFileStream}.
141
+ *
142
+ * **Defaults to `false`, and the default is the honest one.** These
143
+ * cases are not in {@link SANDBOX_CONTRACT_VERSION} — see the comment
144
+ * on that constant for why — so the suite cannot assume a backend has
145
+ * them. A backend whose guest is built from this repository sets it
146
+ * `true`; every other backend gets the cases as named skips, counted in
147
+ * the runner's own totals and titled with the reason, rather than as
148
+ * failures for a contract it never agreed to.
149
+ *
150
+ * A backend that sets this `true` while its guest ignores
151
+ * `offset`/`length` FAILS, and that is the point: returning the whole
152
+ * file where a slice was asked for is a wrong answer, not a missing
153
+ * capability.
154
+ */
155
+ readonly supportsRangedAndStreamedReads?: boolean;
122
156
  }
123
157
  /**
124
158
  * A program the `openTcpConnection` positive case can start INSIDE a guest
@@ -1 +1 @@
1
- {"version":3,"file":"sandbox-conformance.d.ts","sourceRoot":"","sources":["../../src/testing/sandbox-conformance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AAEH,OAAO,KAAK,EACX,mBAAmB,EACnB,OAAO,EAEP,eAAe,EACf,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EACX,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,EACb,MAAM,oBAAoB,CAAA;AAE3B;;;;;GAKG;AACH,eAAO,MAAM,wBAAwB,IAAI,CAAA;AAEzC,sEAAsE;AACtE,MAAM,WAAW,wBAAwB;IACxC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB;;;;;;OAMG;IACH,OAAO,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAChC;AAED;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,wBAAwB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAA;AAE5F,MAAM,WAAW,yBAAyB;IACzC,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAA;IACtC,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAA;IAClC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC,+DAA+D;IAC/D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAA;IAClC;;;;;;OAMG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,oBAAoB,CAAA;CAC1D;AAkCD;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,oBAAoB;IACpC,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;IAChC;;;;;;OAMG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;CAC7C;AAKD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,IAAI,oBAAoB,CAsBxD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,kBAAkB,CACvC,YAAY,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,OAAO,CAAC,eAAe,CAAC,EACxE,QAAQ,EAAE,oBAAoB,GAC5B,OAAO,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC,CA0C3D;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,yBAAyB,GAAG,IAAI,CAiWjF;AAKD,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,aAAa,EAAE,CAAA"}
1
+ {"version":3,"file":"sandbox-conformance.d.ts","sourceRoot":"","sources":["../../src/testing/sandbox-conformance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AAGH,OAAO,KAAK,EACX,mBAAmB,EACnB,OAAO,EAIP,eAAe,EACf,MAAM,YAAY,CAAA;AAEnB,OAAO,KAAK,EACX,oBAAoB,EACpB,mBAAmB,EACnB,iBAAiB,EACjB,aAAa,EACb,MAAM,oBAAoB,CAAA;AAE3B;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,wBAAwB,IAAI,CAAA;AAEzC,sEAAsE;AACtE,MAAM,WAAW,wBAAwB;IACxC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAA;IACzB;;;;;;OAMG;IACH,OAAO,CAAC,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAChC;AAED;;;;GAIG;AACH,MAAM,MAAM,WAAW,GAAG,MAAM,wBAAwB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAAA;AAE5F,MAAM,WAAW,yBAAyB;IACzC,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,CAAA;IACtC,QAAQ,CAAC,EAAE,EAAE,aAAa,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAA;IAClC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC,+DAA+D;IAC/D,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;IACvB;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAA;IAClC;;;;;;OAMG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,oBAAoB,CAAA;IAC1D;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,CAAC,8BAA8B,CAAC,EAAE,OAAO,CAAA;CACjD;AAgED;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,oBAAoB;IACpC,0EAA0E;IAC1E,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;IAChC;;;;;;OAMG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAA;CAC7C;AAKD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,iBAAiB,IAAI,oBAAoB,CAsBxD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,kBAAkB,CACvC,YAAY,EAAE,CAAC,OAAO,EAAE,mBAAmB,KAAK,OAAO,CAAC,eAAe,CAAC,EACxE,QAAQ,EAAE,oBAAoB,GAC5B,OAAO,CAAC;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CAAE,CAAC,CA0C3D;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,yBAAyB,GAAG,IAAI,CAozBjF;AAKD,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,aAAa,EAAE,CAAA"}