@namzu/sandbox 13.0.0 → 15.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 (104) hide show
  1. package/CHANGELOG.md +1147 -0
  2. package/README.md +447 -0
  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.map +1 -1
  7. package/dist/backends/docker/index.js +19 -1
  8. package/dist/backends/docker/index.js.map +1 -1
  9. package/dist/backends/firecracker/index.d.ts.map +1 -1
  10. package/dist/backends/firecracker/index.js +12 -2
  11. package/dist/backends/firecracker/index.js.map +1 -1
  12. package/dist/backends/firecracker/protocol.d.ts +481 -8
  13. package/dist/backends/firecracker/protocol.d.ts.map +1 -1
  14. package/dist/backends/firecracker/protocol.js +136 -0
  15. package/dist/backends/firecracker/protocol.js.map +1 -1
  16. package/dist/backends/firecracker/transport.d.ts +642 -14
  17. package/dist/backends/firecracker/transport.d.ts.map +1 -1
  18. package/dist/backends/firecracker/transport.js +1307 -34
  19. package/dist/backends/firecracker/transport.js.map +1 -1
  20. package/dist/backends/kubernetes/egress-policy.d.ts +1296 -0
  21. package/dist/backends/kubernetes/egress-policy.d.ts.map +1 -0
  22. package/dist/backends/kubernetes/egress-policy.js +2458 -0
  23. package/dist/backends/kubernetes/egress-policy.js.map +1 -0
  24. package/dist/backends/kubernetes/identity.d.ts +193 -0
  25. package/dist/backends/kubernetes/identity.d.ts.map +1 -0
  26. package/dist/backends/kubernetes/identity.js +147 -0
  27. package/dist/backends/kubernetes/identity.js.map +1 -0
  28. package/dist/backends/kubernetes/index.d.ts +1019 -0
  29. package/dist/backends/kubernetes/index.d.ts.map +1 -0
  30. package/dist/backends/kubernetes/index.js +1756 -0
  31. package/dist/backends/kubernetes/index.js.map +1 -0
  32. package/dist/backends/kubernetes/ingress-policy.d.ts +375 -0
  33. package/dist/backends/kubernetes/ingress-policy.d.ts.map +1 -0
  34. package/dist/backends/kubernetes/ingress-policy.js +1050 -0
  35. package/dist/backends/kubernetes/ingress-policy.js.map +1 -0
  36. package/dist/backends/kubernetes/k8s-client.d.ts +334 -0
  37. package/dist/backends/kubernetes/k8s-client.d.ts.map +1 -0
  38. package/dist/backends/kubernetes/k8s-client.js +553 -0
  39. package/dist/backends/kubernetes/k8s-client.js.map +1 -0
  40. package/dist/backends/kubernetes/lease.d.ts +145 -0
  41. package/dist/backends/kubernetes/lease.d.ts.map +1 -0
  42. package/dist/backends/kubernetes/lease.js +201 -0
  43. package/dist/backends/kubernetes/lease.js.map +1 -0
  44. package/dist/backends/kubernetes/objects.d.ts +702 -0
  45. package/dist/backends/kubernetes/objects.d.ts.map +1 -0
  46. package/dist/backends/kubernetes/objects.js +518 -0
  47. package/dist/backends/kubernetes/objects.js.map +1 -0
  48. package/dist/backends/kubernetes/per-sandbox-policy.d.ts +219 -0
  49. package/dist/backends/kubernetes/per-sandbox-policy.d.ts.map +1 -0
  50. package/dist/backends/kubernetes/per-sandbox-policy.js +407 -0
  51. package/dist/backends/kubernetes/per-sandbox-policy.js.map +1 -0
  52. package/dist/backends/kubernetes/privilege-probe.d.ts +136 -0
  53. package/dist/backends/kubernetes/privilege-probe.d.ts.map +1 -0
  54. package/dist/backends/kubernetes/privilege-probe.js +185 -0
  55. package/dist/backends/kubernetes/privilege-probe.js.map +1 -0
  56. package/dist/backends/kubernetes/rbac.d.ts +153 -0
  57. package/dist/backends/kubernetes/rbac.d.ts.map +1 -0
  58. package/dist/backends/kubernetes/rbac.js +177 -0
  59. package/dist/backends/kubernetes/rbac.js.map +1 -0
  60. package/dist/backends/kubernetes/sandbox.d.ts +190 -0
  61. package/dist/backends/kubernetes/sandbox.d.ts.map +1 -0
  62. package/dist/backends/kubernetes/sandbox.js +433 -0
  63. package/dist/backends/kubernetes/sandbox.js.map +1 -0
  64. package/dist/backends/kubernetes/transport.d.ts +1048 -0
  65. package/dist/backends/kubernetes/transport.d.ts.map +1 -0
  66. package/dist/backends/kubernetes/transport.js +2093 -0
  67. package/dist/backends/kubernetes/transport.js.map +1 -0
  68. package/dist/backends/kubernetes/workspace.d.ts +1512 -0
  69. package/dist/backends/kubernetes/workspace.d.ts.map +1 -0
  70. package/dist/backends/kubernetes/workspace.js +3703 -0
  71. package/dist/backends/kubernetes/workspace.js.map +1 -0
  72. package/dist/backends/remote-execution-controller.d.ts +14 -0
  73. package/dist/backends/remote-execution-controller.d.ts.map +1 -1
  74. package/dist/backends/remote-execution-controller.js.map +1 -1
  75. package/dist/index.d.ts +350 -2
  76. package/dist/index.d.ts.map +1 -1
  77. package/dist/index.js +344 -34
  78. package/dist/index.js.map +1 -1
  79. package/dist/testing/sandbox-conformance.d.ts +227 -0
  80. package/dist/testing/sandbox-conformance.d.ts.map +1 -0
  81. package/dist/testing/sandbox-conformance.js +896 -0
  82. package/dist/testing/sandbox-conformance.js.map +1 -0
  83. package/package.json +5 -4
  84. package/src/backends/aci-standby-pool/index.ts +16 -1
  85. package/src/backends/docker/index.ts +22 -1
  86. package/src/backends/firecracker/index.ts +14 -2
  87. package/src/backends/firecracker/protocol.ts +541 -6
  88. package/src/backends/firecracker/transport.ts +1687 -64
  89. package/src/backends/kubernetes/egress-policy.ts +3448 -0
  90. package/src/backends/kubernetes/identity.ts +261 -0
  91. package/src/backends/kubernetes/index.ts +2670 -0
  92. package/src/backends/kubernetes/ingress-policy.ts +1344 -0
  93. package/src/backends/kubernetes/k8s-client.ts +742 -0
  94. package/src/backends/kubernetes/lease.ts +254 -0
  95. package/src/backends/kubernetes/objects.ts +983 -0
  96. package/src/backends/kubernetes/per-sandbox-policy.ts +542 -0
  97. package/src/backends/kubernetes/privilege-probe.ts +261 -0
  98. package/src/backends/kubernetes/rbac.ts +192 -0
  99. package/src/backends/kubernetes/sandbox.ts +593 -0
  100. package/src/backends/kubernetes/transport.ts +2895 -0
  101. package/src/backends/kubernetes/workspace.ts +5640 -0
  102. package/src/backends/remote-execution-controller.ts +14 -0
  103. package/src/index.ts +838 -35
  104. package/src/testing/sandbox-conformance.ts +1202 -0
package/dist/index.js CHANGED
@@ -36,13 +36,170 @@
36
36
  import { buildAciStandbyPoolBackend } from './backends/aci-standby-pool/index.js';
37
37
  import { buildDockerBackend, resolveLayout } from './backends/docker/index.js';
38
38
  import { buildFirecrackerBackend } from './backends/firecracker/index.js';
39
+ import { buildKubernetesBackend, readKubernetesTaskCapacity as readTaskCapacityOnCluster, releaseKubernetesTaskSandboxes as releaseTaskSandboxesOnCluster, } from './backends/kubernetes/index.js';
40
+ import { createKubernetesWorkspace as buildKubernetesWorkspace, deleteKubernetesWorkspace as deleteWorkspaceOnCluster, listKubernetesWorkspaces as listWorkspacesOnCluster, suspendKubernetesWorkspace as suspendWorkspaceOnCluster, } from './backends/kubernetes/workspace.js';
39
41
  // Re-export the default container-path constants the prompt-template
40
42
  // generator side wants to import without also depending on
41
43
  // `@namzu/sdk` directly. Single source of truth: a Vandal prompt
42
44
  // saying "write outputs to `/mnt/user-data/outputs`" imports
43
45
  // `SANDBOX_DEFAULT_OUTPUTS_PATH` instead of hard-coding the string.
44
46
  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';
45
- export { FIRECRACKER_AGENT_PROTOCOL_VERSION, VsockAgentTransport, } from './backends/firecracker/transport.js';
47
+ 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';
48
+ // The `write-file` part protocol: the healthz feature string a guest
49
+ // advertises when it can take a body larger than one frame, and the shape
50
+ // of one part. Exported so a host writing its own guest, or asserting what
51
+ // this one advertises, names them rather than repeating the literal.
52
+ export { WRITE_FILE_PARTS_FEATURE, } from './backends/firecracker/protocol.js';
53
+ // The per-stream liveness heartbeat: the feature string a guest advertises
54
+ // when it understands one, the frame both sides send, and how many missed
55
+ // intervals end a stream. Same reason as above — a host asserting what this
56
+ // guest advertises should name the string rather than repeat the literal.
57
+ export { MIN_STREAM_HEARTBEAT_MS, STREAM_HEARTBEAT_FEATURE, STREAM_HEARTBEAT_MAX_ECHO_FACTOR, STREAM_HEARTBEAT_MISS_LIMIT, } from './backends/firecracker/protocol.js';
58
+ // The read side of the same arrangement: one healthz feature string for
59
+ // both the ranged `read-file` and the `read-file-stream` op, and the
60
+ // request/event shapes they speak. Exported for the same reason — a host
61
+ // writing its own guest, or asserting what this one advertises, names them
62
+ // rather than repeating the literal.
63
+ export { READ_FILE_STREAM_FEATURE, } from './backends/firecracker/protocol.js';
64
+ // Per-sandbox egress — `config.egress.perSandbox`, which makes
65
+ // `Sandbox.setNetworkPolicy` PRESENT on a kubernetes TASK handle instead of
66
+ // omitted. Everything a host needs to configure it and to catch its two
67
+ // refusals by class: a capability declared in a way this backend cannot
68
+ // honour (wiring time), and a write refused because the operator-applied
69
+ // admission fence that bounds it is not there — or cannot be read, which is
70
+ // a different file to fix (call time, nothing written in either case).
71
+ // `KubernetesNetworkPolicyHostError` is the third: an `allowedHosts` entry
72
+ // that is not a hostname, or one the configured narrowing cannot express.
73
+ // `KubernetesOwnerUidMissingError` is the fourth, and the only one raised
74
+ // from an ACQUIRE — the object this backend created reported no uid, so a
75
+ // policy written for it would be an orphan.
76
+ // `KubernetesWorkspacePerSandboxEgressConfigError` is the fifth: the same
77
+ // option reaching `createKubernetesWorkspace`, whose handle never carries
78
+ // `setNetworkPolicy` — refused there rather than accepted and ignored.
79
+ // See `backends/kubernetes/per-sandbox-policy.ts` — and, for
80
+ // `KubernetesNetworkPolicyHostError`, which the config-level translation
81
+ // refuses the same entries with, `backends/kubernetes/egress-policy.ts`.
82
+ export { KubernetesPerSandboxEgressConfigError } from './backends/kubernetes/egress-policy.js';
83
+ export { KubernetesWorkspacePerSandboxEgressConfigError } from './backends/kubernetes/egress-policy.js';
84
+ export { DEFAULT_PER_SANDBOX_EGRESS_LABEL_KEY } from './backends/kubernetes/egress-policy.js';
85
+ export { KubernetesAdmissionFenceMissingError, KubernetesAdmissionFenceUnreadableError, KubernetesNetworkPolicyHostError, KubernetesOwnerUidMissingError, PER_SANDBOX_POLICY_NAME_PREFIX, } from './backends/kubernetes/per-sandbox-policy.js';
86
+ // The default label key `KubernetesEgressConfig.profile` is written under.
87
+ // Exported because an operator has to name that key's DOMAIN in the
88
+ // controller's `allowed-label-domains` allowlist before a profiled claim is
89
+ // accepted, and reading it off the package beats copying a string out of a
90
+ // document.
91
+ export { DEFAULT_EGRESS_PROFILE_LABEL_KEY } from './backends/kubernetes/egress-policy.js';
92
+ export { KubernetesEgressNarrowingUnsupportedError, KubernetesEgressPolicyConfigError, KubernetesEgressPolicyUnionError, } from './backends/kubernetes/egress-policy.js';
93
+ // What an egress PROFILE adds to the refusals above. Two are thrown: a
94
+ // profile this backend will not emit (while the host is still being wired),
95
+ // and a bound pod that never carried the label this backend asked the
96
+ // controller for — refused rather than admitted, because admitting it would
97
+ // run the sandbox under whatever policy DOES select it. The third is never
98
+ // thrown on its own: a claim the controller refused because a label key's
99
+ // domain is not on its allowlist still comes out as
100
+ // `KubernetesAcquireError { reason: 'claim-rejected' }`, and
101
+ // `KubernetesPodLabelsRejectedError` is that error's `cause`, naming the map
102
+ // that was sent and the config key that moves it.
103
+ export { KubernetesEgressProfileConfigError, KubernetesPodLabelNotObservedError, KubernetesPodLabelsRejectedError, } from './backends/kubernetes/egress-policy.js';
104
+ export { KubernetesIngressPolicyError } from './backends/kubernetes/ingress-policy.js';
105
+ // The errors a caller of a kubernetes sandbox has to be able to catch BY
106
+ // CLASS rather than by matching a message: an acquire refused because the
107
+ // guest is not deprivileged, a call after the handle ended (this host
108
+ // destroyed it, or the cluster deleted it), and a rejected agent token.
109
+ export { KubernetesPrivilegeProbeError, } from './backends/kubernetes/privilege-probe.js';
110
+ export { KubernetesSandboxDestroyedError, KubernetesSandboxGoneError, } from './backends/kubernetes/sandbox.js';
111
+ export { KubernetesAgentAddressUnresolvableError,
112
+ // A guest that has fenced itself refuses one CALL here, not the
113
+ // workspace: the Firecracker tier's mapping of the same refusal retires
114
+ // the sandbox, which on a workspace would take the pod away from every
115
+ // other holder. See `backends/kubernetes/transport.ts`.
116
+ KubernetesAgentRetiringError, KubernetesAgentUnauthorizedError, } from './backends/kubernetes/transport.js';
117
+ export { KubernetesExecutionAttachUnsupportedError, KubernetesExecutionDetachedError, KubernetesExecutionNotAttachableError, } from './backends/kubernetes/transport.js';
118
+ export { KubernetesSessionRefusedError, KubernetesSessionsUnsupportedError, } from './backends/kubernetes/transport.js';
119
+ export { AgentSessionDetachedError } from './backends/firecracker/transport.js';
120
+ // The `sessions` healthz feature string, and the session vocabulary its
121
+ // frames use. Same reason as the two feature strings above: a host asserting
122
+ // what an image can do should name the string rather than repeat the literal.
123
+ export { SESSIONS_FEATURE, } from './backends/firecracker/protocol.js';
124
+ export { KubernetesQuiesceUnconfirmedError, KubernetesQuiesceUnsupportedError, } from './backends/kubernetes/transport.js';
125
+ export { QUIESCE_FEATURE, } from './backends/firecracker/protocol.js';
126
+ export { KubernetesFlushUnconfirmedError, KubernetesFlushUnreachableError, KubernetesFlushUnsupportedError, } from './backends/kubernetes/transport.js';
127
+ export { FLUSH_FEATURE } from './backends/firecracker/protocol.js';
128
+ // The API-request bound and the error it raises. Exported because
129
+ // "distinguishable from a caller abort and from every other failure, by
130
+ // type" is only true for a host that can name the class — and because a
131
+ // host that sets `apiRequestTimeoutMs` wants the default and the floor it is
132
+ // choosing against.
133
+ // `KubernetesHttpMethod` rides along because `KubernetesApiTimeoutError.verb`
134
+ // is one: a caller that can catch the class but cannot name the type of the
135
+ // field it is reading is back to inlining the union or reaching for `any`.
136
+ export { DEFAULT_API_REQUEST_TIMEOUT_MS,
137
+ // Every API failure the four classes below do not name: a connect
138
+ // failure, and every non-2xx status outside 401/403/404/409/410. It
139
+ // carries the status and the `Retry-After` the server sent, because a
140
+ // burst past node capacity (429) and an API server that is down (a
141
+ // connect failure) were otherwise the same plain `Error`, separable only
142
+ // by matching a message any release is free to reword. It carries no
143
+ // retry policy — see `backends/kubernetes/index.ts` for who decides that.
144
+ KubernetesApiError, KubernetesApiTimeoutError,
145
+ // A conditional write the API server would not apply. A host that fences
146
+ // its workspaces with a holder epoch normally catches
147
+ // `KubernetesWorkspacePreconditionError` instead — this one survives only
148
+ // when the object kept changing under the write or the patch body was
149
+ // wrong, and a caller that cannot name the class cannot tell it from a
150
+ // cluster failure.
151
+ KubernetesPatchNotAppliedError, MIN_API_REQUEST_TIMEOUT_MS, } from './backends/kubernetes/k8s-client.js';
152
+ // The three statuses the client maps to a class of their own, so a caller can
153
+ // treat "already gone" as the state a teardown was asking for, re-read after a
154
+ // 409, and tell a rejected credential from a cluster failure — by class, which
155
+ // is the only way that survives a reworded message. They have been thrown
156
+ // since the backend existed and were reachable only by importing a deep path.
157
+ export { KubernetesAlreadyGoneError, KubernetesConflictError, KubernetesCredentialError, } from './backends/kubernetes/k8s-client.js';
158
+ // Why an acquire was refused, as a field rather than as prose: the seven
159
+ // reasons, the class that carries one, and the measured list of controller
160
+ // `Ready=False` reasons that mean "decided" rather than "not yet". A host
161
+ // deciding whether to retry, to fail the run or to page an operator reads
162
+ // `reason` and `retryable`; `cause` is the original failure, so a host that
163
+ // already catches `ReadinessPollTimeout` or `KubernetesApiTimeoutError` finds
164
+ // it there. See `backends/kubernetes/index.ts`.
165
+ export { KubernetesAcquireError,
166
+ // The poll's own give-up, by type. It is the `cause` of a `'not-ready'`
167
+ // acquire refusal and is raised directly by the workspace lifecycle, which
168
+ // does not go through acquire.
169
+ ReadinessPollTimeout, TERMINAL_CLAIM_REASONS, } from './backends/kubernetes/index.js';
170
+ // The three ways egress verification refuses: a policy this engine cannot
171
+ // express, no applied object at all, and an applied object that does not
172
+ // match what this configuration translates to. Catchable by class for the
173
+ // same reason the ingress refusal above is — an operator debugging two
174
+ // default-on refusals in one release should not have to read messages to
175
+ // tell them apart.
176
+ export { KubernetesEgressPolicyMismatchError, KubernetesEgressPolicyNotAppliedError, KubernetesUnenforceableEgressPolicyError, } from './backends/kubernetes/egress-policy.js';
177
+ /** Default `KubernetesBackendConfig.streamHeartbeatMs` — see there. */
178
+ export { DEFAULT_STREAM_HEARTBEAT_MS } from './backends/kubernetes/index.js';
179
+ // What a CLAIM-ONLY host is allowed to do, as data: the verbs the pool-only
180
+ // path issues, each pinned to its call site in `backends/kubernetes/rbac.ts`.
181
+ // `k8s/manifests/rbac-claimant.yaml` grants exactly this and a test parses
182
+ // that file and compares it here, so an operator who has to prove a live
183
+ // `Role` carries no more than this backend needs compares against the same
184
+ // constant rather than against a list copied out of a page.
185
+ export { KUBERNETES_CLAIMANT_RBAC_RULES, } from './backends/kubernetes/rbac.js';
186
+ export {
187
+ // The command's outcome is unknown AND the guest it ran in is gone. A
188
+ // subclass of `RemoteCancellationUnknownError`, so a host catching the
189
+ // base class keeps catching it; what it adds is which guest the command
190
+ // started on and which one is there now.
191
+ KubernetesWorkspaceGuestGoneError,
192
+ // A different Sandbox now stands under the workspace's deterministic
193
+ // name, or none does. The handle refuses rather than following it — the
194
+ // disk behind the name is not the disk it was opened on.
195
+ KubernetesWorkspaceReplacedError, } from './backends/kubernetes/identity.js';
196
+ export { KubernetesWorkspaceDiskError, KubernetesWorkspaceMismatchError,
197
+ // A lifecycle write refused because this caller's holder epoch has been
198
+ // overtaken: the workspace belongs to another process now, nothing on the
199
+ // cluster changed and nothing about the handle changed. A host that fences
200
+ // its workspaces has to be able to tell this from a cluster failure, which
201
+ // is the whole reason the write is conditional.
202
+ KubernetesWorkspacePreconditionError, KubernetesWorkspaceSuspendTimeoutError, KubernetesWorkspaceSuspendedError, } from './backends/kubernetes/workspace.js';
46
203
  /**
47
204
  * Egress allowlist resolution. Host-supplied policy decides whether
48
205
  * an outbound request is allowed before the proxy opens a socket.
@@ -127,6 +284,40 @@ export function createSandboxProvider(config) {
127
284
  }
128
285
  function pickBackend(config) {
129
286
  const backend = config.backend;
287
+ // Checked ahead of the `docker` default below: `ACIStandbyPoolBackendConfig`
288
+ // is a real arm of `SandboxProviderConfig` (see the discriminated union
289
+ // above), discriminated from `ContainerBackendConfig` by `runtime`. A
290
+ // plain equality check here narrows `backend` to the ACI shape with no
291
+ // cast, and — because this branch always returns — narrows it AWAY for
292
+ // every check below, so the `docker` branch's `backend.runtime ?? 'docker'`
293
+ // still sees only `ContainerBackendConfig`.
294
+ if (backend.tier === 'container' && backend.runtime === 'aci-standby-pool') {
295
+ const layout = config
296
+ .layout;
297
+ const resolved = resolveLayout(layout);
298
+ return buildAciStandbyPoolBackend({
299
+ subscriptionId: backend.subscriptionId,
300
+ resourceGroup: backend.resourceGroup,
301
+ location: backend.location,
302
+ standbyPoolResourceId: backend.standbyPoolResourceId,
303
+ containerGroupProfileResourceId: backend.containerGroupProfileResourceId,
304
+ ...(backend.containerGroupProfileRevision !== undefined
305
+ ? { containerGroupProfileRevision: backend.containerGroupProfileRevision }
306
+ : {}),
307
+ layout: resolved,
308
+ getArmToken: backend.getArmToken,
309
+ ...(backend.subnetId !== undefined ? { subnetId: backend.subnetId } : {}),
310
+ ...(backend.readyPollIntervalMs !== undefined
311
+ ? { readyPollIntervalMs: backend.readyPollIntervalMs }
312
+ : {}),
313
+ ...(backend.readyTimeoutMs !== undefined ? { readyTimeoutMs: backend.readyTimeoutMs } : {}),
314
+ ...(backend.workerPort !== undefined ? { workerPort: backend.workerPort } : {}),
315
+ ...(backend.armApiVersion !== undefined ? { armApiVersion: backend.armApiVersion } : {}),
316
+ ...(backend.containerNamePrefix !== undefined
317
+ ? { containerNamePrefix: backend.containerNamePrefix }
318
+ : {}),
319
+ });
320
+ }
130
321
  if (backend.tier === 'container' && (backend.runtime ?? 'docker') === 'docker') {
131
322
  // `layout` is required for container-tier backends by the
132
323
  // discriminated union — narrow safely without a non-null
@@ -152,39 +343,6 @@ function pickBackend(config) {
152
343
  ...(backend.labels !== undefined ? { labels: backend.labels } : {}),
153
344
  });
154
345
  }
155
- if (backend.tier === 'container' &&
156
- backend.runtime === 'aci-standby-pool') {
157
- const aciBackend = backend;
158
- const layout = config
159
- .layout;
160
- const resolved = resolveLayout(layout);
161
- return buildAciStandbyPoolBackend({
162
- subscriptionId: aciBackend.subscriptionId,
163
- resourceGroup: aciBackend.resourceGroup,
164
- location: aciBackend.location,
165
- standbyPoolResourceId: aciBackend.standbyPoolResourceId,
166
- containerGroupProfileResourceId: aciBackend.containerGroupProfileResourceId,
167
- ...(aciBackend.containerGroupProfileRevision !== undefined
168
- ? { containerGroupProfileRevision: aciBackend.containerGroupProfileRevision }
169
- : {}),
170
- layout: resolved,
171
- getArmToken: aciBackend.getArmToken,
172
- ...(aciBackend.subnetId !== undefined ? { subnetId: aciBackend.subnetId } : {}),
173
- ...(aciBackend.readyPollIntervalMs !== undefined
174
- ? { readyPollIntervalMs: aciBackend.readyPollIntervalMs }
175
- : {}),
176
- ...(aciBackend.readyTimeoutMs !== undefined
177
- ? { readyTimeoutMs: aciBackend.readyTimeoutMs }
178
- : {}),
179
- ...(aciBackend.workerPort !== undefined ? { workerPort: aciBackend.workerPort } : {}),
180
- ...(aciBackend.armApiVersion !== undefined
181
- ? { armApiVersion: aciBackend.armApiVersion }
182
- : {}),
183
- ...(aciBackend.containerNamePrefix !== undefined
184
- ? { containerNamePrefix: aciBackend.containerNamePrefix }
185
- : {}),
186
- });
187
- }
188
346
  if (backend.tier === 'container' && backend.runtime === 'runsc') {
189
347
  const layout = config
190
348
  .layout;
@@ -231,8 +389,160 @@ function pickBackend(config) {
231
389
  : {}),
232
390
  });
233
391
  }
392
+ // `microvm:kubernetes` — agent-sandbox on any cluster. Reached through a
393
+ // real arm of `SandboxProviderConfig`, so `backend` narrows here and every
394
+ // field below is read off the narrowed type, same as the ACI and docker
395
+ // branches above.
396
+ if (backend.tier === 'microvm' && backend.service === 'kubernetes') {
397
+ return buildKubernetesBackend(kubernetesInternalConfig(backend));
398
+ }
234
399
  throw new SandboxBackendNotImplementedError(describeBackend(backend));
235
400
  }
401
+ /**
402
+ * Public config → the kubernetes backend's own. One function so the two
403
+ * entry points that build against a cluster — {@link createSandboxProvider}
404
+ * for task sandboxes and {@link createKubernetesWorkspace} for persistent
405
+ * ones — cannot drift apart on which fields they forward.
406
+ */
407
+ function kubernetesInternalConfig(backend) {
408
+ return {
409
+ access: backend.access,
410
+ namespace: backend.namespace,
411
+ sandboxTemplateName: backend.sandboxTemplateName,
412
+ ...(backend.warmPoolName !== undefined ? { warmPoolName: backend.warmPoolName } : {}),
413
+ ...(backend.agentPort !== undefined ? { agentPort: backend.agentPort } : {}),
414
+ ...(backend.agentAddress !== undefined ? { agentAddress: backend.agentAddress } : {}),
415
+ ...(backend.readyPollIntervalMs !== undefined
416
+ ? { readyPollIntervalMs: backend.readyPollIntervalMs }
417
+ : {}),
418
+ ...(backend.readyTimeoutMs !== undefined ? { readyTimeoutMs: backend.readyTimeoutMs } : {}),
419
+ ...(backend.claimTtlSeconds !== undefined ? { claimTtlSeconds: backend.claimTtlSeconds } : {}),
420
+ ...(backend.onLeaseRenewalError !== undefined
421
+ ? { onLeaseRenewalError: backend.onLeaseRenewalError }
422
+ : {}),
423
+ ...(backend.runtimeClassName !== undefined
424
+ ? { runtimeClassName: backend.runtimeClassName }
425
+ : {}),
426
+ ...(backend.egress !== undefined ? { egress: backend.egress } : {}),
427
+ ...(backend.ingress !== undefined ? { ingress: backend.ingress } : {}),
428
+ ...(backend.apiRequestTimeoutMs !== undefined
429
+ ? { apiRequestTimeoutMs: backend.apiRequestTimeoutMs }
430
+ : {}),
431
+ ...(backend.streamHeartbeatMs !== undefined
432
+ ? { streamHeartbeatMs: backend.streamHeartbeatMs }
433
+ : {}),
434
+ ...(backend.claimLabels !== undefined ? { claimLabels: backend.claimLabels } : {}),
435
+ };
436
+ }
437
+ /**
438
+ * Create — or reattach to — a persistent workspace on a cluster running the
439
+ * agent-sandbox controller.
440
+ *
441
+ * A workspace is the other half of this backend, and deliberately not
442
+ * something {@link createSandboxProvider} can hand out: a `SandboxProvider`
443
+ * promises an EPHEMERAL sandbox per run (`workspaceModes: ['ephemeral']`),
444
+ * while this returns one object with a name the caller chose, a disk that
445
+ * survives a suspend, and a lifetime nothing reaps on a timer. It is its own
446
+ * verb so that the difference is visible at the call site.
447
+ *
448
+ * `config.warmPoolName` is ignored here: a workspace is always a `Sandbox`
449
+ * POSTed directly, because a claim cannot carry the immutable disk spec.
450
+ * `config.sandboxTemplateName` is the default template, and
451
+ * `options.sandboxTemplateName` overrides it — a deployment normally has a
452
+ * task template with no disk and a workspace template with a block one.
453
+ *
454
+ * Resolves once the workspace is Ready, addressed and has proved it is
455
+ * deprivileged, exactly as `provider.create()` does for a task sandbox.
456
+ */
457
+ export async function createKubernetesWorkspace(config, options) {
458
+ return await buildKubernetesWorkspace(kubernetesInternalConfig(config), options);
459
+ }
460
+ /**
461
+ * Every workspace this backend owns in the namespace, read off the objects
462
+ * and waking none of them.
463
+ *
464
+ * The inventory {@link createKubernetesWorkspace} cannot give you: it adopts
465
+ * AND resumes, so taking stock through it would start a pod for every
466
+ * suspended workspace it looked at. This issues one GET of the sandboxes
467
+ * collection and sends no PATCH and no DELETE — a suspended workspace is
468
+ * still suspended afterwards.
469
+ *
470
+ * Needs `list` on `sandboxes` in the namespace, which is the one RBAC verb
471
+ * the task path did not already require.
472
+ */
473
+ export async function listKubernetesWorkspaces(config, options) {
474
+ return await listWorkspacesOnCluster(kubernetesInternalConfig(config), options);
475
+ }
476
+ /**
477
+ * Delete a workspace by id — the Sandbox, and with it the Pod, the Service
478
+ * and the PVC — without adopting or resuming it first.
479
+ *
480
+ * Exactly what `destroy({ deleteDisk: true })` does to the cluster, with the
481
+ * same guarantees: an object already gone counts as deleted, and a DELETE
482
+ * that fails rejects and stays retryable. The files are gone and nothing
483
+ * brings them back.
484
+ *
485
+ * It is the retention verb. Removing a month-old suspended workspace through
486
+ * a handle meant starting its pod and probing it purely to tell it to go
487
+ * away; the name is deterministic, so the object never needed opening.
488
+ */
489
+ export async function deleteKubernetesWorkspace(config, workspaceId, options) {
490
+ await deleteWorkspaceOnCluster(kubernetesInternalConfig(config), workspaceId, options);
491
+ }
492
+ /**
493
+ * Suspend a workspace by id: send the `operatingMode: Suspended` patch and
494
+ * wait for the pod to actually stop, without adopting the workspace.
495
+ *
496
+ * Resolves only once the pod is gone or in a terminal phase — a suspend is a
497
+ * promise that the disk is quiesced, and the patch being accepted says only
498
+ * that the controller has been asked. A pod that outlives `readyTimeoutMs`
499
+ * rejects with `KubernetesWorkspaceSuspendTimeoutError`, leaving the object
500
+ * as the patch left it.
501
+ *
502
+ * A handle another process is holding is not told. It finds out on its next
503
+ * call — which fails at the transport and is re-read into a
504
+ * `KubernetesWorkspaceSuspendedError` — or when that process calls
505
+ * `refresh()`.
506
+ *
507
+ * It takes the suspend options shape and REFUSES `quiesce` rather than
508
+ * accepting the flag and dropping it: this verb never dials the agent, so
509
+ * there is no connection here on which anything could be stopped. Quiescing
510
+ * needs a handle — `createKubernetesWorkspace()`, then
511
+ * `suspend({ quiesce: true })`.
512
+ */
513
+ export async function suspendKubernetesWorkspace(config, workspaceId, options) {
514
+ await suspendWorkspaceOnCluster(kubernetesInternalConfig(config), workspaceId, options);
515
+ }
516
+ /**
517
+ * Recover a crashed host's task-path claims: LIST every `SandboxClaim`
518
+ * carrying `options.labelSelector`, `DELETE` each, and report what was
519
+ * removed.
520
+ *
521
+ * Deletes claims only — the controller's own ownerReferences take the bound
522
+ * Sandbox, its Pod and its Service down behind each one; nothing here reads
523
+ * or touches those objects directly. `labelSelector` is REQUIRED and refused
524
+ * before any request goes out if it is empty: falling back to matching every
525
+ * claim would delete a live fleet's work.
526
+ *
527
+ * Pairs with `config.claimLabels`: a host stamps its own identity onto every
528
+ * claim it creates, and a restarted instance passes that same selector here
529
+ * to reclaim its predecessor's warm-pool capacity well before
530
+ * `claimTtlSeconds` would reap it on its own.
531
+ */
532
+ export async function releaseKubernetesTaskSandboxes(config, options) {
533
+ return await releaseTaskSandboxesOnCluster(kubernetesInternalConfig(config), options);
534
+ }
535
+ /**
536
+ * Read task-pool headroom before admitting more work: three GETs
537
+ * (`SandboxWarmPool`, the claims collection, the pods collection), no
538
+ * writes.
539
+ *
540
+ * Requires `config.warmPoolName` — a pool-less backend (every create is a
541
+ * direct Sandbox) has no `SandboxWarmPool` to report on.
542
+ */
543
+ export async function readKubernetesTaskCapacity(config, options) {
544
+ return await readTaskCapacityOnCluster(kubernetesInternalConfig(config), options);
545
+ }
236
546
  /**
237
547
  * Human-readable backend label for error messages. Returns the
238
548
  * 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":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}