@namzu/sandbox 26.0.0 → 28.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 (83) hide show
  1. package/CHANGELOG.md +62 -7
  2. package/README.md +20 -7
  3. package/dist/backends/firecracker/protocol.d.ts +46 -0
  4. package/dist/backends/firecracker/protocol.d.ts.map +1 -1
  5. package/dist/backends/firecracker/protocol.js +31 -0
  6. package/dist/backends/firecracker/protocol.js.map +1 -1
  7. package/dist/backends/firecracker/transport.d.ts +15 -1
  8. package/dist/backends/firecracker/transport.d.ts.map +1 -1
  9. package/dist/backends/firecracker/transport.js +16 -0
  10. package/dist/backends/firecracker/transport.js.map +1 -1
  11. package/dist/backends/kubernetes/allocation.d.ts +115 -0
  12. package/dist/backends/kubernetes/allocation.d.ts.map +1 -0
  13. package/dist/backends/kubernetes/allocation.js +130 -0
  14. package/dist/backends/kubernetes/allocation.js.map +1 -0
  15. package/dist/backends/kubernetes/egress-policy.d.ts +111 -35
  16. package/dist/backends/kubernetes/egress-policy.d.ts.map +1 -1
  17. package/dist/backends/kubernetes/egress-policy.js +81 -41
  18. package/dist/backends/kubernetes/egress-policy.js.map +1 -1
  19. package/dist/backends/kubernetes/identity.d.ts +129 -0
  20. package/dist/backends/kubernetes/identity.d.ts.map +1 -1
  21. package/dist/backends/kubernetes/identity.js +150 -0
  22. package/dist/backends/kubernetes/identity.js.map +1 -1
  23. package/dist/backends/kubernetes/index.d.ts +23 -1
  24. package/dist/backends/kubernetes/index.d.ts.map +1 -1
  25. package/dist/backends/kubernetes/index.js +22 -3
  26. package/dist/backends/kubernetes/index.js.map +1 -1
  27. package/dist/backends/kubernetes/objects.d.ts +76 -0
  28. package/dist/backends/kubernetes/objects.d.ts.map +1 -1
  29. package/dist/backends/kubernetes/objects.js +61 -0
  30. package/dist/backends/kubernetes/objects.js.map +1 -1
  31. package/dist/backends/kubernetes/per-sandbox-fence.d.ts +194 -0
  32. package/dist/backends/kubernetes/per-sandbox-fence.d.ts.map +1 -0
  33. package/dist/backends/kubernetes/per-sandbox-fence.js +522 -0
  34. package/dist/backends/kubernetes/per-sandbox-fence.js.map +1 -0
  35. package/dist/backends/kubernetes/per-sandbox-policy.d.ts +45 -3
  36. package/dist/backends/kubernetes/per-sandbox-policy.d.ts.map +1 -1
  37. package/dist/backends/kubernetes/per-sandbox-policy.js +98 -8
  38. package/dist/backends/kubernetes/per-sandbox-policy.js.map +1 -1
  39. package/dist/backends/kubernetes/sandbox.d.ts +4 -9
  40. package/dist/backends/kubernetes/sandbox.d.ts.map +1 -1
  41. package/dist/backends/kubernetes/sandbox.js +4 -9
  42. package/dist/backends/kubernetes/sandbox.js.map +1 -1
  43. package/dist/backends/kubernetes/transport.d.ts +108 -1
  44. package/dist/backends/kubernetes/transport.d.ts.map +1 -1
  45. package/dist/backends/kubernetes/transport.js +150 -6
  46. package/dist/backends/kubernetes/transport.js.map +1 -1
  47. package/dist/backends/kubernetes/workspace-allocate.d.ts +206 -0
  48. package/dist/backends/kubernetes/workspace-allocate.d.ts.map +1 -0
  49. package/dist/backends/kubernetes/workspace-allocate.js +332 -0
  50. package/dist/backends/kubernetes/workspace-allocate.js.map +1 -0
  51. package/dist/backends/kubernetes/workspace-observe.d.ts +187 -0
  52. package/dist/backends/kubernetes/workspace-observe.d.ts.map +1 -0
  53. package/dist/backends/kubernetes/workspace-observe.js +343 -0
  54. package/dist/backends/kubernetes/workspace-observe.js.map +1 -0
  55. package/dist/backends/kubernetes/workspace-per-sandbox.d.ts +94 -0
  56. package/dist/backends/kubernetes/workspace-per-sandbox.d.ts.map +1 -0
  57. package/dist/backends/kubernetes/workspace-per-sandbox.js +119 -0
  58. package/dist/backends/kubernetes/workspace-per-sandbox.js.map +1 -0
  59. package/dist/backends/kubernetes/workspace.d.ts +139 -5
  60. package/dist/backends/kubernetes/workspace.d.ts.map +1 -1
  61. package/dist/backends/kubernetes/workspace.js +434 -36
  62. package/dist/backends/kubernetes/workspace.js.map +1 -1
  63. package/dist/index.d.ts +83 -7
  64. package/dist/index.d.ts.map +1 -1
  65. package/dist/index.js +100 -6
  66. package/dist/index.js.map +1 -1
  67. package/package.json +3 -3
  68. package/src/backends/firecracker/protocol.ts +47 -0
  69. package/src/backends/firecracker/transport.ts +31 -0
  70. package/src/backends/kubernetes/allocation.ts +199 -0
  71. package/src/backends/kubernetes/egress-policy.ts +165 -42
  72. package/src/backends/kubernetes/identity.ts +210 -0
  73. package/src/backends/kubernetes/index.ts +61 -2
  74. package/src/backends/kubernetes/objects.ts +98 -0
  75. package/src/backends/kubernetes/per-sandbox-fence.ts +800 -0
  76. package/src/backends/kubernetes/per-sandbox-policy.ts +152 -17
  77. package/src/backends/kubernetes/sandbox.ts +4 -9
  78. package/src/backends/kubernetes/transport.ts +203 -4
  79. package/src/backends/kubernetes/workspace-allocate.ts +607 -0
  80. package/src/backends/kubernetes/workspace-observe.ts +590 -0
  81. package/src/backends/kubernetes/workspace-per-sandbox.ts +179 -0
  82. package/src/backends/kubernetes/workspace.ts +655 -34
  83. package/src/index.ts +193 -3
package/dist/index.js CHANGED
@@ -56,6 +56,8 @@ import { buildAciStandbyPoolBackend } from './backends/aci-standby-pool/index.js
56
56
  import { buildDockerBackend, resolveLayout } from './backends/docker/index.js';
57
57
  import { buildFirecrackerBackend } from './backends/firecracker/index.js';
58
58
  import { buildKubernetesBackend, readKubernetesTaskCapacity as readTaskCapacityOnCluster, releaseKubernetesTaskSandboxes as releaseTaskSandboxesOnCluster, } from './backends/kubernetes/index.js';
59
+ import { allocateKubernetesWorkspace as allocateWorkspaceOnCluster, recoverKubernetesWorkspaceAllocation as recoverAllocationOnCluster, resolveKubernetesExecutionProfile as resolveProfileOnCluster, } from './backends/kubernetes/workspace-allocate.js';
60
+ import { inspectKubernetesWorkspace as inspectWorkspaceOnCluster, openKubernetesWorkspace as openWorkspaceOnCluster, reconcileKubernetesWorkspace as reconcileWorkspaceOnCluster, } from './backends/kubernetes/workspace-observe.js';
59
61
  import { createKubernetesWorkspace as buildKubernetesWorkspace, deleteKubernetesWorkspace as deleteWorkspaceOnCluster, listKubernetesWorkspaces as listWorkspacesOnCluster, suspendKubernetesWorkspace as suspendWorkspaceOnCluster, } from './backends/kubernetes/workspace.js';
60
62
  import { resolveProviderEgress } from './egress/profile-wiring.js';
61
63
  // Re-export the default container-path constants the prompt-template
@@ -93,16 +95,17 @@ export { READ_FILE_STREAM_FEATURE, } from './backends/firecracker/protocol.js';
93
95
  // `KubernetesOwnerUidMissingError` is the fourth, and the only one raised
94
96
  // from an ACQUIRE — the object this backend created reported no uid, so a
95
97
  // policy written for it would be an orphan.
96
- // `KubernetesWorkspacePerSandboxEgressConfigError` is the fifth: the same
97
- // option reaching `createKubernetesWorkspace`, whose handle never carries
98
- // `setNetworkPolicy` — refused there rather than accepted and ignored.
98
+ // `KubernetesWorkspacePerSandboxEgressConfigError` is deprecated: it used to
99
+ // refuse the same option on `createKubernetesWorkspace`, whose handle now
100
+ // carries `setNetworkPolicy`, so nothing throws it any more.
99
101
  // See `backends/kubernetes/per-sandbox-policy.ts` — and, for
100
102
  // `KubernetesNetworkPolicyHostError`, which the config-level translation
101
103
  // refuses the same entries with, `backends/kubernetes/egress-policy.ts`.
102
104
  export { KubernetesPerSandboxEgressConfigError } from './backends/kubernetes/egress-policy.js';
103
105
  export { KubernetesWorkspacePerSandboxEgressConfigError } from './backends/kubernetes/egress-policy.js';
104
106
  export { DEFAULT_PER_SANDBOX_EGRESS_LABEL_KEY } from './backends/kubernetes/egress-policy.js';
105
- export { KubernetesAdmissionFenceMissingError, KubernetesAdmissionFenceUnreadableError, KubernetesNetworkPolicyHostError, KubernetesOwnerUidMissingError, PER_SANDBOX_POLICY_NAME_PREFIX, } from './backends/kubernetes/per-sandbox-policy.js';
107
+ export { KUBERNETES_PER_SANDBOX_PROFILE_VARIANT } from './backends/kubernetes/workspace-per-sandbox.js';
108
+ export { KubernetesAdmissionFenceInertError, KubernetesAdmissionFenceMissingError, KubernetesAdmissionFenceUnreadableError, KubernetesNetworkPolicyHostError, KubernetesOwnerUidMissingError, KubernetesPerSandboxPolicyNotRemovedError, KubernetesPermittedHostsError, KubernetesPermittedHostsParamError, PER_SANDBOX_POLICY_NAME_PREFIX, } from './backends/kubernetes/per-sandbox-policy.js';
106
109
  // The default label key `KubernetesEgressConfig.profile` is written under.
107
110
  // Exported because an operator has to name that key's DOMAIN in the
108
111
  // controller's `allowed-label-domains` allowlist before a profiled claim is
@@ -129,6 +132,10 @@ export { KubernetesIngressPolicyError } from './backends/kubernetes/ingress-poli
129
132
  export { KubernetesPrivilegeProbeError, } from './backends/kubernetes/privilege-probe.js';
130
133
  export { KubernetesSandboxDestroyedError, KubernetesSandboxGoneError, } from './backends/kubernetes/sandbox.js';
131
134
  export { KubernetesAgentAddressUnresolvableError,
135
+ // The guest agent compared its boot id with a pinned request's and refused
136
+ // before dispatching anything. Reaches a caller as
137
+ // `KubernetesGuestPinRefusedError` through a pinned view.
138
+ KubernetesAgentGuestMismatchError,
132
139
  // A guest that has fenced itself refuses one CALL here, not the
133
140
  // workspace: the Firecracker tier's mapping of the same refusal retires
134
141
  // the sandbox, which on a workspace would take the pod away from every
@@ -141,8 +148,8 @@ export { AgentSessionDetachedError } from './backends/firecracker/transport.js';
141
148
  // frames use. Same reason as the two feature strings above: a host asserting
142
149
  // what an image can do should name the string rather than repeat the literal.
143
150
  export { SESSIONS_FEATURE, } from './backends/firecracker/protocol.js';
144
- export { KubernetesQuiesceUnconfirmedError, KubernetesQuiesceUnsupportedError, } from './backends/kubernetes/transport.js';
145
- export { QUIESCE_FEATURE, } from './backends/firecracker/protocol.js';
151
+ export { KubernetesQuiesceBusyError, KubernetesQuiesceUnconfirmedError, KubernetesQuiesceUnsupportedError, } from './backends/kubernetes/transport.js';
152
+ export { QUIESCE_FEATURE, PINNED_GUEST_FEATURE, QUIESCE_IDLE_FEATURE, } from './backends/firecracker/protocol.js';
146
153
  export { KubernetesFlushUnconfirmedError, KubernetesFlushUnreachableError, KubernetesFlushUnsupportedError, } from './backends/kubernetes/transport.js';
147
154
  export { FLUSH_FEATURE } from './backends/firecracker/protocol.js';
148
155
  // The API-request bound and the error it raises. Exported because
@@ -203,12 +210,23 @@ export { DEFAULT_STREAM_HEARTBEAT_MS } from './backends/kubernetes/index.js';
203
210
  // `Role` carries no more than this backend needs compares against the same
204
211
  // constant rather than against a list copied out of a page.
205
212
  export { KUBERNETES_CLAIMANT_RBAC_RULES, } from './backends/kubernetes/rbac.js';
213
+ export { KubernetesExecutionProfileDriftError, KubernetesWorkspaceAllocationConflictError, KubernetesWorkspaceAllocationMismatchError, } from './backends/kubernetes/allocation.js';
214
+ export { ALLOCATION_ID_ANNOTATION_KEY, ALLOCATION_SCOPE_ANNOTATION_KEY, EXECUTION_PROFILE_ANNOTATION_KEY, } from './backends/kubernetes/objects.js';
215
+ export { KubernetesWorkspaceReadyTimeoutError } from './backends/kubernetes/workspace-observe.js';
216
+ // Pinning one guest: `workspace.pinGuest(identity)` and the two errors a host
217
+ // catches by class — an identity that cannot pin (nothing was created) and a
218
+ // pinned call that was refused (nothing ran).
219
+ export { KubernetesGuestPinRefusedError, KubernetesPinIncompleteError, } from './backends/kubernetes/identity.js';
206
220
  export {
207
221
  // The command's outcome is unknown AND the guest it ran in is gone. A
208
222
  // subclass of `RemoteCancellationUnknownError`, so a host catching the
209
223
  // base class keeps catching it; what it adds is which guest the command
210
224
  // started on and which one is there now.
211
225
  KubernetesWorkspaceGuestGoneError,
226
+ // The workspace a host retained is not what stands under its name:
227
+ // another Sandbox uid, no Sandbox, another claim uid or owner. Raised by
228
+ // `openKubernetesWorkspace` before anything is created, woken or written.
229
+ KubernetesWorkspaceIdentityMismatchError,
212
230
  // A different Sandbox now stands under the workspace's deterministic
213
231
  // name, or none does. The handle refuses rather than following it — the
214
232
  // disk behind the name is not the disk it was opened on.
@@ -578,6 +596,82 @@ export async function deleteKubernetesWorkspace(config, workspaceId, options) {
578
596
  export async function suspendKubernetesWorkspace(config, workspaceId, options) {
579
597
  await suspendWorkspaceOnCluster(kubernetesInternalConfig(config), workspaceId, options);
580
598
  }
599
+ /**
600
+ * Resolve and fingerprint what a workspace created from `config` would run —
601
+ * the pod template with this backend's overlays, the template's disks, the
602
+ * egress policy translated from `config.egress` and the ingress settings —
603
+ * without creating anything. One GET: the SandboxTemplate — plus, when
604
+ * `config.egress.perSandbox` is configured, the reads that prove its admission
605
+ * fence (a configuration whose fence does not enforce is refused and yields no
606
+ * fingerprint), and the result then carries `variant:
607
+ * 'core/no-network+per-sandbox'`.
608
+ *
609
+ * Persist the result, then pass its `fingerprint` as
610
+ * `allocation.executionProfile` to {@link allocateKubernetesWorkspace}.
611
+ */
612
+ export async function resolveKubernetesExecutionProfile(config, options) {
613
+ return await resolveProfileOnCluster(kubernetesInternalConfig(config), options);
614
+ }
615
+ /**
616
+ * Create a workspace exactly once, bound to the allocation the host recorded
617
+ * first. Unlike `createKubernetesWorkspace` it never adopts a same-name
618
+ * object (typed `KubernetesWorkspaceAllocationConflictError`, nothing
619
+ * touched), never resumes compute, and never retries the create.
620
+ *
621
+ * `{ outcome: 'created' }` carries a receipt with the new Sandbox's uid — an
622
+ * acknowledgement, not readiness. `{ outcome: 'unknown' }` means the request
623
+ * was sent and no usable reply came back; settle it with
624
+ * `recoverKubernetesWorkspaceAllocation`.
625
+ */
626
+ export async function allocateKubernetesWorkspace(config, options) {
627
+ return await allocateWorkspaceOnCluster(kubernetesInternalConfig(config), options);
628
+ }
629
+ /**
630
+ * After an `unknown` allocation: one read-only GET, answered as `created`
631
+ * (with the receipt), `absent` or `different`. See
632
+ * `KubernetesWorkspaceAllocationRecovery` for what `absent` does and does not
633
+ * promise.
634
+ */
635
+ export async function recoverKubernetesWorkspaceAllocation(config, options) {
636
+ return await recoverAllocationOnCluster(kubernetesInternalConfig(config), options);
637
+ }
638
+ /**
639
+ * Look at a workspace by id: its Sandbox uid, volume-claim uids, live pod,
640
+ * operating mode and holder epoch. GET requests only — it never creates,
641
+ * wakes, patches or deletes — and it resolves `undefined` when no Sandbox
642
+ * stands under the id.
643
+ *
644
+ * `epoch` is required: a workspace held at a higher epoch belongs to another
645
+ * process, and a superseded host is refused with
646
+ * `KubernetesWorkspacePreconditionError` rather than shown it.
647
+ */
648
+ export async function inspectKubernetesWorkspace(config, workspaceId, options) {
649
+ return await inspectWorkspaceOnCluster(kubernetesInternalConfig(config), workspaceId, options);
650
+ }
651
+ /**
652
+ * Authenticate the identity a host retained against what stands under the
653
+ * workspace id, and with `waitForReady` wait — under one `readyTimeoutMs`
654
+ * deadline — for its volume claims and its guest. Never creates, wakes or
655
+ * writes; a suspended workspace is returned as suspended.
656
+ *
657
+ * A different Sandbox or claim is `KubernetesWorkspaceIdentityMismatchError`;
658
+ * a `resourceVersion` or `Ready` condition that moves while waiting is
659
+ * ordinary progress and never is. Running out of time is
660
+ * `KubernetesWorkspaceReadyTimeoutError`, and cancelling rejects with the
661
+ * signal's reason.
662
+ */
663
+ export async function openKubernetesWorkspace(config, options) {
664
+ return await openWorkspaceOnCluster(kubernetesInternalConfig(config), options);
665
+ }
666
+ /**
667
+ * After a restart, what became of the workspace a host retained: `live`,
668
+ * `suspended`, `absent` or `replaced`. One GET-only pass; a different Sandbox
669
+ * or claim is the answer `replaced`, not an error, and a read that did not
670
+ * answer rejects rather than reading as `absent`.
671
+ */
672
+ export async function reconcileKubernetesWorkspace(config, options) {
673
+ return await reconcileWorkspaceOnCluster(kubernetesInternalConfig(config), options);
674
+ }
581
675
  /**
582
676
  * Recover a crashed host's task-path claims: LIST every `SandboxClaim`
583
677
  * carrying `options.labelSelector`, `DELETE` each, and report what was
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDG;AASH,OAAO,EACN,oBAAoB,EACpB,6BAA6B,EAC7B,uBAAuB,EACvB,kCAAkC,GAClC,MAAM,mCAAmC,CAAA;AAQ1C,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;AAGzE,OAAO,EAON,sBAAsB,EACtB,0BAA0B,IAAI,yBAAyB,EACvD,8BAA8B,IAAI,6BAA6B,GAC/D,MAAM,gCAAgC,CAAA;AAEvC,OAAO,EAMN,yBAAyB,IAAI,wBAAwB,EACrD,yBAAyB,IAAI,wBAAwB,EACrD,wBAAwB,IAAI,uBAAuB,EACnD,0BAA0B,IAAI,yBAAyB,GACvD,MAAM,oCAAoC,CAAA;AAM3C,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAclE,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,oBAAoB,EACpB,8BAA8B,EAC9B,mCAAmC,EACnC,2BAA2B,EAC3B,4BAA4B,EAC5B,kCAAkC,EAElC,uBAAuB,EAEvB,6BAA6B,EAE7B,mBAAmB,GACnB,MAAM,qCAAqC,CAAA;AAC5C,qEAAqE;AACrE,0EAA0E;AAC1E,2EAA2E;AAC3E,qEAAqE;AACrE,OAAO,EACN,wBAAwB,GAExB,MAAM,oCAAoC,CAAA;AAC3C,2EAA2E;AAC3E,0EAA0E;AAC1E,4EAA4E;AAC5E,0EAA0E;AAC1E,OAAO,EACN,uBAAuB,EACvB,wBAAwB,EACxB,gCAAgC,EAChC,2BAA2B,GAE3B,MAAM,oCAAoC,CAAA;AAC3C,wEAAwE;AACxE,qEAAqE;AACrE,yEAAyE;AACzE,2EAA2E;AAC3E,qCAAqC;AACrC,OAAO,EACN,wBAAwB,GAGxB,MAAM,oCAAoC,CAAA;AA2B3C,+DAA+D;AAC/D,4EAA4E;AAC5E,wEAAwE;AACxE,wEAAwE;AACxE,yEAAyE;AACzE,4EAA4E;AAC5E,uEAAuE;AACvE,2EAA2E;AAC3E,0EAA0E;AAC1E,0EAA0E;AAC1E,0EAA0E;AAC1E,4CAA4C;AAC5C,0EAA0E;AAC1E,0EAA0E;AAC1E,uEAAuE;AACvE,6DAA6D;AAC7D,yEAAyE;AACzE,yEAAyE;AACzE,OAAO,EAAE,qCAAqC,EAAE,MAAM,wCAAwC,CAAA;AAC9F,OAAO,EAAE,8CAA8C,EAAE,MAAM,wCAAwC,CAAA;AACvG,OAAO,EAAE,oCAAoC,EAAE,MAAM,wCAAwC,CAAA;AAC7F,OAAO,EACN,oCAAoC,EACpC,uCAAuC,EACvC,gCAAgC,EAChC,8BAA8B,EAC9B,8BAA8B,GAC9B,MAAM,6CAA6C,CAAA;AACpD,2EAA2E;AAC3E,oEAAoE;AACpE,4EAA4E;AAC5E,2EAA2E;AAC3E,YAAY;AACZ,OAAO,EAAE,gCAAgC,EAAE,MAAM,wCAAwC,CAAA;AAWzF,OAAO,EACN,yCAAyC,EACzC,iCAAiC,EACjC,gCAAgC,GAChC,MAAM,wCAAwC,CAAA;AAC/C,uEAAuE;AACvE,4EAA4E;AAC5E,sEAAsE;AACtE,4EAA4E;AAC5E,2EAA2E;AAC3E,0EAA0E;AAC1E,oDAAoD;AACpD,6DAA6D;AAC7D,6EAA6E;AAC7E,kDAAkD;AAClD,OAAO,EACN,kCAAkC,EAClC,kCAAkC,EAClC,gCAAgC,GAChC,MAAM,wCAAwC,CAAA;AAe/C,OAAO,EAAE,4BAA4B,EAAE,MAAM,yCAAyC,CAAA;AACtF,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,EACN,uCAAuC;AACvC,gEAAgE;AAChE,wEAAwE;AACxE,uEAAuE;AACvE,wDAAwD;AACxD,4BAA4B,EAC5B,gCAAgC,GAChC,MAAM,oCAAoC,CAAA;AAY3C,OAAO,EACN,yCAAyC,EACzC,gCAAgC,EAChC,qCAAqC,GACrC,MAAM,oCAAoC,CAAA;AAmB3C,OAAO,EACN,6BAA6B,EAC7B,kCAAkC,GAClC,MAAM,oCAAoC,CAAA;AAC3C,OAAO,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAA;AAC/E,wEAAwE;AACxE,6EAA6E;AAC7E,8EAA8E;AAC9E,OAAO,EACN,gBAAgB,GAIhB,MAAM,oCAAoC,CAAA;AAW3C,OAAO,EACN,iCAAiC,EACjC,iCAAiC,GACjC,MAAM,oCAAoC,CAAA;AAC3C,OAAO,EACN,eAAe,GAGf,MAAM,oCAAoC,CAAA;AAiB3C,OAAO,EACN,+BAA+B,EAC/B,+BAA+B,EAC/B,+BAA+B,GAC/B,MAAM,oCAAoC,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,oCAAoC,CAAA;AAClE,kEAAkE;AAClE,wEAAwE;AACxE,wEAAwE;AACxE,6EAA6E;AAC7E,oBAAoB;AACpB,8EAA8E;AAC9E,4EAA4E;AAC5E,2EAA2E;AAC3E,OAAO,EACN,8BAA8B;AAC9B,kEAAkE;AAClE,oEAAoE;AACpE,sEAAsE;AACtE,mEAAmE;AACnE,yEAAyE;AACzE,qEAAqE;AACrE,0EAA0E;AAC1E,kBAAkB,EAElB,yBAAyB;AAEzB,yEAAyE;AACzE,sDAAsD;AACtD,0EAA0E;AAC1E,sEAAsE;AACtE,uEAAuE;AACvE,mBAAmB;AACnB,8BAA8B,EAC9B,0BAA0B,GAC1B,MAAM,qCAAqC,CAAA;AAC5C,8EAA8E;AAC9E,+EAA+E;AAC/E,+EAA+E;AAC/E,0EAA0E;AAC1E,8EAA8E;AAC9E,OAAO,EACN,0BAA0B,EAC1B,uBAAuB,EACvB,yBAAyB,GACzB,MAAM,qCAAqC,CAAA;AAC5C,yEAAyE;AACzE,2EAA2E;AAC3E,0EAA0E;AAC1E,0EAA0E;AAC1E,4EAA4E;AAC5E,8EAA8E;AAC9E,gDAAgD;AAChD,OAAO,EACN,sBAAsB;AAEtB,wEAAwE;AACxE,2EAA2E;AAC3E,+BAA+B;AAC/B,oBAAoB,EACpB,sBAAsB,GACtB,MAAM,gCAAgC,CAAA;AACvC,0EAA0E;AAC1E,yEAAyE;AACzE,0EAA0E;AAC1E,uEAAuE;AACvE,yEAAyE;AACzE,mBAAmB;AACnB,OAAO,EACN,mCAAmC,EACnC,qCAAqC,EACrC,wCAAwC,GACxC,MAAM,wCAAwC,CAAA;AAC/C,uEAAuE;AACvE,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAA;AAW5E,4EAA4E;AAC5E,8EAA8E;AAC9E,2EAA2E;AAC3E,yEAAyE;AACzE,2EAA2E;AAC3E,4DAA4D;AAC5D,OAAO,EACN,8BAA8B,GAG9B,MAAM,+BAA+B,CAAA;AAiCtC,OAAO;AACN,sEAAsE;AACtE,uEAAuE;AACvE,wEAAwE;AACxE,yCAAyC;AACzC,iCAAiC;AACjC,qEAAqE;AACrE,wEAAwE;AACxE,yDAAyD;AACzD,gCAAgC,GAChC,MAAM,mCAAmC,CAAA;AAC1C,OAAO,EACN,4BAA4B,EAC5B,gCAAgC;AAChC,wEAAwE;AACxE,0EAA0E;AAC1E,2EAA2E;AAC3E,2EAA2E;AAC3E,gDAAgD;AAChD,oCAAoC,EACpC,sCAAsC,EACtC,iCAAiC,GACjC,MAAM,oCAAoC,CAAA;AA+mB3C;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,EACN,WAAW,EACX,aAAa,EACb,cAAc,GACd,MAAM,mBAAmB,CAAA;AAM1B,OAAO,EACN,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,EACvB,2BAA2B,EAC3B,yBAAyB,GACzB,MAAM,qBAAqB,CAAA;AAO5B,OAAO,EACN,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,gBAAgB,GAChB,MAAM,iBAAiB,CAAA;AA2IxB;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAA6B;IAClE,yEAAyE;IACzE,oCAAoC;IACpC,MAAM,cAAc,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAA;IACpD,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,EAAE,cAAc,CAAC,OAAO,CAAC,CAAA;IAC3D,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,cAAc,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjF,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,CACnB,MAA6B,EAC7B,aAA+C;IAE/C,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,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,gBAAgB,KAAK,SAAS;gBACzC,CAAC,CAAC,EAAE,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE;gBAChD,CAAC,CAAC,EAAE,CAAC;YACN,GAAG,CAAC,OAAO,CAAC,0BAA0B,KAAK,SAAS;gBACnD,CAAC,CAAC,EAAE,0BAA0B,EAAE,OAAO,CAAC,0BAA0B,EAAE;gBACpE,CAAC,CAAC,EAAE,CAAC;YACN,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnE,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,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,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzD,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,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,gBAAgB,KAAK,SAAS;gBACzC,CAAC,CAAC,EAAE,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,EAAE;gBAChD,CAAC,CAAC,EAAE,CAAC;YACN,GAAG,CAAC,OAAO,CAAC,0BAA0B,KAAK,SAAS;gBACnD,CAAC,CAAC,EAAE,0BAA0B,EAAE,OAAO,CAAC,0BAA0B,EAAE;gBACpE,CAAC,CAAC,EAAE,CAAC;YACN,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnE,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,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,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACzD,CAAC,CAAA;IACH,CAAC;IACD,4DAA4D;IAC5D,yDAAyD;IACzD,kEAAkE;IAClE,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,kEAAkE;YAClE,kEAAkE;YAClE,8CAA8C;YAC9C,mEAAmE;YACnE,gEAAgE;YAChE,iEAAiE;YACjE,wCAAwC;YACxC,GAAG,CAAC,OAAO,CAAC,YAAY,KAAK,SAAS;gBACrC,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,EAAE;gBACvD,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,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrF,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;QACnE,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtE,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,iBAAiB,KAAK,SAAS;YAC1C,CAAC,CAAC,EAAE,iBAAiB,EAAE,OAAO,CAAC,iBAAiB,EAAE;YAClD,CAAC,CAAC,EAAE,CAAC;QACN,GAAG,CAAC,OAAO,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAClF,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;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC7C,MAA+B,EAC/B,OAA8C;IAE9C,OAAO,MAAM,uBAAuB,CAAC,wBAAwB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAA;AAChF,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC9C,MAA+B,EAC/B,WAAmB,EACnB,OAA8C;IAE9C,MAAM,wBAAwB,CAAC,wBAAwB,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,CAAA;AACvF,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC/C,MAA+B,EAC/B,WAAmB,EACnB,OAA2C;IAE3C,MAAM,yBAAyB,CAAC,wBAAwB,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,CAAA;AACxF,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,8BAA8B,CACnD,MAA+B,EAC/B,OAA8C;IAE9C,OAAO,MAAM,6BAA6B,CAAC,wBAAwB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAA;AACtF,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC/C,MAA+B,EAC/B,OAA2C;IAE3C,OAAO,MAAM,yBAAyB,CAAC,wBAAwB,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC,CAAA;AAClF,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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@namzu/sandbox",
3
- "version": "26.0.0",
3
+ "version": "28.0.0",
4
4
  "description": "Pluggable sandbox provider for @namzu/sdk. Process-level isolation (bubblewrap on Linux, Seatbelt on macOS, via @anthropic-ai/sandbox-runtime) for developer dev loops; container-level isolation (HTTP worker + a loopback-bound egress proxy that allows by resolved address and brokers outbound credentials so they never enter the sandbox) for multi-tenant production. Backend selected at construction time; the SDK consumes both through the same SandboxProvider interface.",
5
5
  "license": "FSL-1.1-MIT",
6
6
  "engines": {
@@ -52,7 +52,7 @@
52
52
  "provenance": true
53
53
  },
54
54
  "peerDependencies": {
55
- "@namzu/sdk": "^51.0.0"
55
+ "@namzu/sdk": "^53.0.0"
56
56
  },
57
57
  "dependencies": {
58
58
  "ws": "8.21.3"
@@ -63,7 +63,7 @@
63
63
  "typescript": "^5.5.0",
64
64
  "vitest": "^4.1.11",
65
65
  "yaml": "^2.9.0",
66
- "@namzu/sdk": "^51.0.0"
66
+ "@namzu/sdk": "^53.0.0"
67
67
  },
68
68
  "scripts": {
69
69
  "build": "tsc --build",
@@ -459,6 +459,48 @@ export interface KillSessionRequest {
459
459
  */
460
460
  export const QUIESCE_FEATURE = 'quiesce'
461
461
 
462
+ /**
463
+ * The `healthz` feature string an agent advertises when its `quiesce` op
464
+ * accepts `{ idleOnly: true }`: look at the guest, signal and mark nothing,
465
+ * and refuse with `quiesce_busy` unless the whole PID namespace is idle.
466
+ *
467
+ * It is its own string, not implied by {@link QUIESCE_FEATURE}, because an
468
+ * agent that predates it IGNORES unknown body fields: sent `idleOnly` it
469
+ * would run the stopping quiesce and kill the work the caller asked not to
470
+ * touch. A host therefore sends the field only to a guest that advertised
471
+ * this, and an older guest (which advertises `quiesce` alone) keeps working
472
+ * for the stopping mode unchanged.
473
+ */
474
+ export const QUIESCE_IDLE_FEATURE = 'quiesce-idle'
475
+
476
+ /**
477
+ * The `healthz` feature string an agent advertises when it serves the
478
+ * `pinned` op: one ordinary request wrapped with the guest boot id the
479
+ * caller expects, dispatched only if the agent's own id equals it.
480
+ *
481
+ * A distinct op rather than an extra field on every request, because an
482
+ * agent that predates it IGNORES unknown fields and would serve a pinned
483
+ * request on whatever guest it happens to be, which is precisely what a
484
+ * pin exists to prevent. An older agent answers `unknown_op: pinned`
485
+ * instead, and a host that checked this feature first never sends it.
486
+ */
487
+ export const PINNED_GUEST_FEATURE = 'pinned-guest'
488
+
489
+ /** What the `pinned` op carries: the expected guest and the request to run on it. */
490
+ export interface PinnedRequest {
491
+ /** The agent process the caller authenticated. Refused when the agent's own id differs. */
492
+ readonly expectedGuestBootId: string
493
+ /** One ordinary request. Never `pinned` or `healthz`. */
494
+ readonly request: { readonly op: string; readonly body?: unknown }
495
+ }
496
+
497
+ /**
498
+ * The refusal an agent answers a pinned request with when its own boot id
499
+ * is not the one expected. The `error` text is `guest_mismatch:<its id>` and
500
+ * the same id is on the frame's `guestBootId`; nothing was dispatched.
501
+ */
502
+ export const GUEST_MISMATCH_REFUSAL = 'guest_mismatch'
503
+
462
504
  /** Stop everything. `graceMs` bounds ONE round's SIGTERM window. */
463
505
  export interface QuiesceRequest {
464
506
  /**
@@ -468,6 +510,11 @@ export interface QuiesceRequest {
468
510
  * 1000ms. It is NOT the pod's `terminationGracePeriodSeconds`.
469
511
  */
470
512
  readonly graceMs?: number
513
+ /**
514
+ * Only look: signal nothing, mark nothing, wait for nothing. Requires
515
+ * {@link QUIESCE_IDLE_FEATURE}, and cannot be combined with `graceMs`.
516
+ */
517
+ readonly idleOnly?: boolean
471
518
  }
472
519
 
473
520
  /**
@@ -83,6 +83,7 @@ import {
83
83
  type GuestReplyIdentity,
84
84
  type KillSessionRequest,
85
85
  MIN_STREAM_HEARTBEAT_MS,
86
+ type PinnedRequest,
86
87
  type QuiesceRequest,
87
88
  READ_FILE_STREAM_FEATURE,
88
89
  type ReadFileRequest,
@@ -243,6 +244,10 @@ export type AgentRequest = (
243
244
  // whose `healthz` named {@link FLUSH_FEATURE}.
244
245
  | { readonly op: 'flush'; readonly body: FlushRequest }
245
246
  | { readonly op: 'healthz' }
247
+ // The pin envelope. Never built by a caller: {@link
248
+ // VsockTransportOptions.pinnedGuestBootId} wraps every other request in
249
+ // it at the one point a credential is folded in.
250
+ | { readonly op: 'pinned'; readonly body: PinnedRequest }
246
251
  ) &
247
252
  // Intersected, not repeated per arm: the credential is orthogonal to
248
253
  // the op, and every arm may carry it. Optional and additive, so a host
@@ -441,6 +446,16 @@ export interface VsockTransportOptions {
441
446
  * bind token — cannot change when the container is restarted in place.
442
447
  */
443
448
  readonly onGuestReply?: (reply: GuestReplyIdentity) => void
449
+ /**
450
+ * Pin every request this transport sends (every op but `healthz`) to the
451
+ * guest agent process with this boot id: each is wrapped in the `pinned`
452
+ * op, which the agent refuses before dispatch when its own id differs.
453
+ *
454
+ * The caller must have checked {@link PINNED_GUEST_FEATURE} first: an
455
+ * older agent answers `unknown_op: pinned` and runs nothing, which is the
456
+ * safe failure, but it is not a message anyone should have to decode.
457
+ */
458
+ readonly pinnedGuestBootId?: string
444
459
  /**
445
460
  * The largest `writeFile` body this transport will accept, in raw
446
461
  * bytes. Default {@link DEFAULT_MAX_WRITE_FILE_BYTES} (1 GiB).
@@ -915,6 +930,7 @@ export class VsockAgentTransport {
915
930
  private guestFeatureList?: readonly string[]
916
931
  private readonly permanentDialFailure?: (error: unknown) => boolean
917
932
  private readonly onExecTiming?: (timing: FirecrackerTransportTiming) => void
933
+ private readonly pinnedGuestBootId?: string
918
934
 
919
935
  constructor(handle: SandboxAgentHandle, options: VsockTransportOptions = {}) {
920
936
  this.handle = handle
@@ -935,6 +951,9 @@ export class VsockAgentTransport {
935
951
  }
936
952
  this.permanentDialFailure = options.permanentDialFailure
937
953
  this.onExecTiming = options.onExecTiming
954
+ if (options.pinnedGuestBootId !== undefined) {
955
+ this.pinnedGuestBootId = options.pinnedGuestBootId
956
+ }
938
957
  }
939
958
 
940
959
  /**
@@ -1271,6 +1290,18 @@ export class VsockAgentTransport {
1271
1290
  * a request built for those arms passes through unchanged.
1272
1291
  */
1273
1292
  private withCredential(req: AgentRequest): AgentRequest {
1293
+ const pinned = this.pinnedGuestBootId
1294
+ if (pinned !== undefined && req.op !== 'healthz' && req.op !== 'pinned') {
1295
+ const { token: _token, op, ...rest } = req as AgentRequest & { token?: string }
1296
+ const inner = { op, ...('body' in rest ? { body: (rest as { body?: unknown }).body } : {}) }
1297
+ const wrapped: AgentRequest = {
1298
+ op: 'pinned',
1299
+ body: { expectedGuestBootId: pinned, request: inner },
1300
+ }
1301
+ return this.handle.kind === 'tcp' && this.handle.token !== undefined
1302
+ ? { ...wrapped, token: this.handle.token }
1303
+ : wrapped
1304
+ }
1274
1305
  if (this.handle.kind === 'tcp' && this.handle.token !== undefined) {
1275
1306
  return { ...req, token: this.handle.token }
1276
1307
  }
@@ -0,0 +1,199 @@
1
+ /**
2
+ * What an allocated workspace carries, and what it takes to refuse one that
3
+ * is not the allocation a host expects.
4
+ *
5
+ * `allocateKubernetesWorkspace` records three facts on the Sandbox in the one
6
+ * create request — see {@link ALLOCATION_ID_ANNOTATION_KEY},
7
+ * {@link ALLOCATION_SCOPE_ANNOTATION_KEY} and
8
+ * {@link EXECUTION_PROFILE_ANNOTATION_KEY}. A host that persisted the same
9
+ * three before the create can later hand them back as `expectedAllocation`
10
+ * to `inspectKubernetesWorkspace`, `openKubernetesWorkspace` and
11
+ * `reconcileKubernetesWorkspace`, and a Sandbox standing under the name that
12
+ * does not carry them is refused with
13
+ * {@link KubernetesWorkspaceAllocationMismatchError}, whoever made it.
14
+ *
15
+ * This file imports nothing from the workspace modules: both the read side
16
+ * (`workspace-observe.ts`) and the create side (`workspace-allocate.ts`) need
17
+ * it, and neither may import the other.
18
+ */
19
+
20
+ import {
21
+ POD_TEMPLATE_HASH_ANNOTATION_KEY,
22
+ type SandboxResource,
23
+ canonicalFingerprint,
24
+ readAllocation,
25
+ } from './objects.js'
26
+
27
+ /** The longest allocation id or scope fingerprint accepted, in UTF-16 units. */
28
+ export const MAX_ALLOCATION_FIELD_LENGTH = 1024
29
+
30
+ /**
31
+ * The allocation a host expects a workspace to belong to.
32
+ *
33
+ * - `id` — the host's immutable allocation id.
34
+ * - `scopeFingerprint` — the host's opaque scope string. Compared for
35
+ * equality only.
36
+ * - `executionProfile` — optional. The fingerprint
37
+ * `resolveKubernetesExecutionProfile` returned. On `allocate` it is what
38
+ * the profile resolved NOW must still equal (a profile that moved since
39
+ * the host persisted it refuses the create); on `inspect`, `open` and
40
+ * `reconcile` it is compared with the annotation stored at creation.
41
+ * Omitted on the read side, the profile annotation is not compared.
42
+ */
43
+ export interface KubernetesWorkspaceAllocation {
44
+ readonly id: string
45
+ readonly scopeFingerprint: string
46
+ readonly executionProfile?: string
47
+ }
48
+
49
+ /** The allocation a workspace reports; fields are `undefined` where the annotation is absent. */
50
+ export interface KubernetesObservedAllocation {
51
+ readonly id: string | undefined
52
+ readonly scopeFingerprint: string | undefined
53
+ readonly executionProfile: string | undefined
54
+ }
55
+
56
+ /**
57
+ * Which part of the expected allocation did not hold.
58
+ *
59
+ * - `allocation-id`, `scope-fingerprint`, `execution-profile` — the
60
+ * annotation is absent or differs.
61
+ * - `template-content` — the pod template the Sandbox carries now does not
62
+ * hash to the revision annotation written with it (the copy was edited
63
+ * after creation), or that annotation is gone.
64
+ */
65
+ export type KubernetesWorkspaceAllocationMismatch =
66
+ | 'allocation-id'
67
+ | 'scope-fingerprint'
68
+ | 'execution-profile'
69
+ | 'template-content'
70
+
71
+ /**
72
+ * A Sandbox stands under the workspace's name and is not the allocation the
73
+ * host expected: its annotations differ, or its copied pod template is not
74
+ * the content that was recorded. Nothing was created, woken or written to
75
+ * reach this. Terminal: retrying finds the same object.
76
+ */
77
+ export class KubernetesWorkspaceAllocationMismatchError extends Error {
78
+ override readonly name = 'KubernetesWorkspaceAllocationMismatchError'
79
+
80
+ constructor(
81
+ readonly workspaceId: string,
82
+ readonly sandboxName: string,
83
+ readonly mismatch: KubernetesWorkspaceAllocationMismatch,
84
+ /** What the host expected for the thing that differs. */
85
+ readonly expected: string | undefined,
86
+ /** What the object carries; `undefined` when the annotation is absent. */
87
+ readonly actual: string | undefined,
88
+ ) {
89
+ super(
90
+ `kubernetes: workspace ${workspaceId} (Sandbox ${sandboxName}) is not the allocation this host expected — ${mismatch}: expected ${JSON.stringify(
91
+ expected,
92
+ )}, found ${JSON.stringify(
93
+ actual,
94
+ )}. Nothing was created, woken or written. Whatever stands under the name was not allocated for this request, or was altered after it was.`,
95
+ )
96
+ }
97
+ }
98
+
99
+ /** A Sandbox already stands under the workspace's name; `allocate` never adopts it. */
100
+ export class KubernetesWorkspaceAllocationConflictError extends Error {
101
+ override readonly name = 'KubernetesWorkspaceAllocationConflictError'
102
+
103
+ constructor(
104
+ readonly workspaceId: string,
105
+ readonly sandboxName: string,
106
+ ) {
107
+ super(
108
+ `kubernetes: cannot allocate workspace ${workspaceId}: a Sandbox named ${sandboxName} already exists. allocateKubernetesWorkspace never adopts, wakes or modifies an existing object, so nothing was changed. If an earlier allocate of this same allocation got no reply, find out with recoverKubernetesWorkspaceAllocation (read-only); otherwise the name belongs to something else.`,
109
+ )
110
+ }
111
+ }
112
+
113
+ /**
114
+ * The execution profile resolved now is not the one the host captured, so
115
+ * nothing was created. The host's persisted record is stale (a template, an
116
+ * overlay or a policy changed) and has to be captured again on purpose.
117
+ */
118
+ export class KubernetesExecutionProfileDriftError extends Error {
119
+ override readonly name = 'KubernetesExecutionProfileDriftError'
120
+
121
+ constructor(
122
+ readonly workspaceId: string,
123
+ readonly expected: string,
124
+ readonly actual: string,
125
+ ) {
126
+ super(
127
+ `kubernetes: cannot allocate workspace ${workspaceId}: the execution profile resolves to ${actual} now, but the allocation captured ${expected}. Nothing was created. Resolve the profile again, persist it, and allocate against the new one.`,
128
+ )
129
+ }
130
+ }
131
+
132
+ /** Refuse an allocation that cannot be stored or compared as given. */
133
+ export function assertAllocation(allocation: KubernetesWorkspaceAllocation, where: string): void {
134
+ const check = (label: string, value: unknown): void => {
135
+ if (typeof value !== 'string' || value === '' || value.length > MAX_ALLOCATION_FIELD_LENGTH) {
136
+ throw new TypeError(
137
+ `kubernetes: ${where} needs ${label} to be a non-empty string of at most ${MAX_ALLOCATION_FIELD_LENGTH} characters, got ${
138
+ typeof value === 'string' ? `${value.length} characters` : typeof value
139
+ }.`,
140
+ )
141
+ }
142
+ }
143
+ if (typeof allocation !== 'object' || allocation === null) {
144
+ throw new TypeError(`kubernetes: ${where} needs an allocation: { id, scopeFingerprint }.`)
145
+ }
146
+ check('allocation.id', allocation.id)
147
+ check('allocation.scopeFingerprint', allocation.scopeFingerprint)
148
+ if (allocation.executionProfile !== undefined) {
149
+ check('allocation.executionProfile', allocation.executionProfile)
150
+ }
151
+ }
152
+
153
+ /** What the Sandbox's annotations say its allocation is. */
154
+ export function observedAllocation(sandbox: SandboxResource): KubernetesObservedAllocation {
155
+ return readAllocation(sandbox.metadata)
156
+ }
157
+
158
+ /**
159
+ * The first way `sandbox` is not the expected allocation, or `undefined`.
160
+ *
161
+ * Order: id, scope, profile (when expected), then the copied template. The
162
+ * template check recomputes the canonical hash of the `spec.podTemplate` the
163
+ * Sandbox carries and compares it with the revision annotation written in the
164
+ * same create — it detects a copy edited afterwards, and it does not compare
165
+ * against the SandboxTemplate as it is now (a template edit that reaches
166
+ * only later workspaces is not drift of THIS one).
167
+ */
168
+ export function firstAllocationMismatch(
169
+ sandbox: SandboxResource,
170
+ expected: KubernetesWorkspaceAllocation,
171
+ ): { kind: KubernetesWorkspaceAllocationMismatch; expected?: string; actual?: string } | undefined {
172
+ const actual = readAllocation(sandbox.metadata)
173
+ const differs = (
174
+ kind: KubernetesWorkspaceAllocationMismatch,
175
+ want: string,
176
+ have: string | undefined,
177
+ ) => ({ kind, expected: want, ...(have !== undefined ? { actual: have } : {}) })
178
+ if (actual.id !== expected.id) return differs('allocation-id', expected.id, actual.id)
179
+ if (actual.scopeFingerprint !== expected.scopeFingerprint) {
180
+ return differs('scope-fingerprint', expected.scopeFingerprint, actual.scopeFingerprint)
181
+ }
182
+ if (
183
+ expected.executionProfile !== undefined &&
184
+ actual.executionProfile !== expected.executionProfile
185
+ ) {
186
+ return differs('execution-profile', expected.executionProfile, actual.executionProfile)
187
+ }
188
+ const recorded = sandbox.metadata?.annotations?.[POD_TEMPLATE_HASH_ANNOTATION_KEY]
189
+ const podTemplate = sandbox.spec?.podTemplate
190
+ const current = podTemplate === undefined ? undefined : canonicalFingerprint(podTemplate)
191
+ if (recorded === undefined || current !== recorded) {
192
+ return {
193
+ kind: 'template-content',
194
+ ...(recorded !== undefined ? { expected: recorded } : {}),
195
+ ...(current !== undefined ? { actual: current } : {}),
196
+ }
197
+ }
198
+ return undefined
199
+ }