@alienplatform/core 1.8.0 → 1.10.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 (87) hide show
  1. package/.turbo/turbo-build.log +10 -10
  2. package/dist/index.d.ts +772 -89
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +199 -33
  5. package/dist/index.js.map +1 -1
  6. package/dist/stack.js +579 -44
  7. package/dist/stack.js.map +1 -1
  8. package/dist/tests/index.js +1 -1
  9. package/package.json +1 -1
  10. package/src/__tests__/__snapshots__/stack.test.ts.snap +10 -4
  11. package/src/__tests__/stack.test.ts +185 -2
  12. package/src/compute-cluster.ts +213 -0
  13. package/src/container.ts +38 -26
  14. package/src/daemon.ts +79 -0
  15. package/src/generated/index.ts +42 -2
  16. package/src/generated/schemas/architecture.json +1 -0
  17. package/src/generated/schemas/capacityGroup.json +1 -0
  18. package/src/generated/schemas/capacityGroupScalePolicy.json +1 -0
  19. package/src/generated/schemas/computeChoiceRange.json +1 -0
  20. package/src/generated/schemas/computeCluster.json +1 -0
  21. package/src/generated/schemas/computePoolSelection.json +1 -0
  22. package/src/generated/schemas/computeSettings.json +1 -0
  23. package/src/generated/schemas/container.json +1 -1
  24. package/src/generated/schemas/containerOutputs.json +1 -1
  25. package/src/generated/schemas/containerPort.json +1 -1
  26. package/src/generated/schemas/daemon.json +1 -1
  27. package/src/generated/schemas/daemonOutputs.json +1 -1
  28. package/src/generated/schemas/daemonRuntime.json +1 -0
  29. package/src/generated/schemas/daemonRuntimeMount.json +1 -0
  30. package/src/generated/schemas/exposeProtocol.json +1 -1
  31. package/src/generated/schemas/gpuSpec.json +1 -0
  32. package/src/generated/schemas/machineProfile.json +1 -0
  33. package/src/generated/schemas/publicEndpoint.json +1 -0
  34. package/src/generated/schemas/publicEndpointOutput.json +1 -0
  35. package/src/generated/schemas/stack.json +1 -1
  36. package/src/generated/schemas/stackImportRequest.json +1 -1
  37. package/src/generated/schemas/stackImportResponse.json +1 -1
  38. package/src/generated/schemas/stackInputDefaultValue.json +1 -0
  39. package/src/generated/schemas/stackInputDefinition.json +1 -0
  40. package/src/generated/schemas/stackInputEnvironmentMapping.json +1 -0
  41. package/src/generated/schemas/stackInputEnvironmentVariableType.json +1 -0
  42. package/src/generated/schemas/stackInputKind.json +1 -0
  43. package/src/generated/schemas/stackInputProvider.json +1 -0
  44. package/src/generated/schemas/stackInputValidation.json +1 -0
  45. package/src/generated/schemas/stackSettings.json +1 -1
  46. package/src/generated/schemas/worker.json +1 -1
  47. package/src/generated/schemas/workerOutputs.json +1 -1
  48. package/src/generated/schemas/workerPublicEndpoint.json +1 -0
  49. package/src/generated/zod/architecture-schema.ts +13 -0
  50. package/src/generated/zod/capacity-group-scale-policy-schema.ts +27 -0
  51. package/src/generated/zod/capacity-group-schema.ts +27 -0
  52. package/src/generated/zod/compute-choice-range-schema.ts +17 -0
  53. package/src/generated/zod/compute-cluster-schema.ts +20 -0
  54. package/src/generated/zod/compute-pool-selection-schema.ts +22 -0
  55. package/src/generated/zod/compute-settings-schema.ts +18 -0
  56. package/src/generated/zod/container-outputs-schema.ts +5 -6
  57. package/src/generated/zod/container-port-schema.ts +1 -5
  58. package/src/generated/zod/container-schema.ts +7 -3
  59. package/src/generated/zod/daemon-outputs-schema.ts +4 -0
  60. package/src/generated/zod/daemon-runtime-mount-schema.ts +14 -0
  61. package/src/generated/zod/daemon-runtime-schema.ts +19 -0
  62. package/src/generated/zod/daemon-schema.ts +14 -2
  63. package/src/generated/zod/expose-protocol-schema.ts +2 -2
  64. package/src/generated/zod/gpu-spec-schema.ts +16 -0
  65. package/src/generated/zod/index.ts +42 -2
  66. package/src/generated/zod/machine-profile-schema.ts +25 -0
  67. package/src/generated/zod/public-endpoint-output-schema.ts +21 -0
  68. package/src/generated/zod/public-endpoint-schema.ts +22 -0
  69. package/src/generated/zod/stack-import-request-schema.ts +3 -0
  70. package/src/generated/zod/stack-input-default-value-schema.ts +25 -0
  71. package/src/generated/zod/stack-input-definition-schema.ts +43 -0
  72. package/src/generated/zod/stack-input-environment-mapping-schema.ts +20 -0
  73. package/src/generated/zod/stack-input-environment-variable-type-schema.ts +13 -0
  74. package/src/generated/zod/stack-input-kind-schema.ts +13 -0
  75. package/src/generated/zod/stack-input-provider-schema.ts +13 -0
  76. package/src/generated/zod/stack-input-validation-schema.ts +23 -0
  77. package/src/generated/zod/stack-schema.ts +4 -0
  78. package/src/generated/zod/stack-settings-schema.ts +5 -1
  79. package/src/generated/zod/worker-outputs-schema.ts +4 -5
  80. package/src/generated/zod/worker-public-endpoint-schema.ts +17 -0
  81. package/src/generated/zod/worker-schema.ts +4 -4
  82. package/src/index.ts +9 -0
  83. package/src/input.ts +380 -0
  84. package/src/stack.ts +19 -0
  85. package/src/worker.ts +24 -14
  86. package/src/generated/schemas/ingress.json +0 -1
  87. package/src/generated/zod/ingress-schema.ts +0 -13
package/src/daemon.ts CHANGED
@@ -1,7 +1,11 @@
1
1
  import {
2
2
  type DaemonCode,
3
3
  type Daemon as DaemonConfig,
4
+ type DaemonRuntime,
4
5
  DaemonSchema,
6
+ type ExposeProtocol,
7
+ type HealthCheck,
8
+ type PublicEndpoint,
5
9
  type ResourceSpec,
6
10
  type ResourceType,
7
11
  } from "./generated/index.js"
@@ -11,14 +15,27 @@ export type {
11
15
  Daemon as DaemonConfig,
12
16
  DaemonCode,
13
17
  DaemonOutputs,
18
+ DaemonRuntime,
19
+ ExposeProtocol,
20
+ HealthCheck,
21
+ PublicEndpoint,
14
22
  ResourceSpec,
15
23
  } from "./generated/index.js"
16
24
  export {
17
25
  DaemonCodeSchema,
18
26
  DaemonSchema as DaemonConfigSchema,
19
27
  DaemonOutputsSchema,
28
+ PublicEndpointSchema,
20
29
  } from "./generated/index.js"
21
30
 
31
+ export type DaemonPublicEndpointOptions =
32
+ | ExposeProtocol
33
+ | {
34
+ protocol: ExposeProtocol
35
+ hostLabel?: string
36
+ wildcardSubdomains?: boolean
37
+ }
38
+
22
39
  /**
23
40
  * Represents a resident process that runs once per eligible machine or node.
24
41
  *
@@ -28,6 +45,7 @@ export {
28
45
  export class Daemon {
29
46
  private _config: Partial<DaemonConfig> = {
30
47
  links: [],
48
+ publicEndpoints: [],
31
49
  environment: {},
32
50
  cpu: { min: "0.1", desired: "0.1" },
33
51
  memory: { min: "128Mi", desired: "128Mi" },
@@ -105,6 +123,67 @@ export class Daemon {
105
123
  return this
106
124
  }
107
125
 
126
+ /**
127
+ * Sets backend runtime options for trusted daemon infrastructure.
128
+ *
129
+ * Use this only for daemons that intentionally need host-level access, such
130
+ * as a privileged loader that installs or supervises a native host process.
131
+ */
132
+ public runtime(runtime: DaemonRuntime): this {
133
+ this._config.runtime = runtime
134
+ return this
135
+ }
136
+
137
+ /**
138
+ * Exposes a named public endpoint for a daemon port.
139
+ */
140
+ public publicEndpoint(
141
+ name: string,
142
+ port: number,
143
+ options: DaemonPublicEndpointOptions = "http",
144
+ ): this {
145
+ if (!this._config.publicEndpoints) {
146
+ this._config.publicEndpoints = []
147
+ }
148
+
149
+ const endpoint =
150
+ typeof options === "string"
151
+ ? { protocol: options, hostLabel: undefined, wildcardSubdomains: false }
152
+ : options
153
+
154
+ const publicEndpoint: PublicEndpoint = {
155
+ name,
156
+ port,
157
+ protocol: endpoint.protocol,
158
+ hostLabel: endpoint.hostLabel,
159
+ wildcardSubdomains: endpoint.wildcardSubdomains ?? false,
160
+ }
161
+
162
+ this._config.publicEndpoints.push(publicEndpoint)
163
+ return this
164
+ }
165
+
166
+ /**
167
+ * Configures the HTTP health check used by public daemon endpoint load balancers.
168
+ */
169
+ public healthCheck(config: HealthCheck): this {
170
+ this._config.healthCheck = config
171
+ return this
172
+ }
173
+
174
+ /**
175
+ * Configures readiness probe (alias for healthCheck).
176
+ */
177
+ public readinessProbe(config: { method: string; path: string }): this {
178
+ this._config.healthCheck = {
179
+ path: config.path,
180
+ method: config.method,
181
+ timeoutSeconds: 1,
182
+ failureThreshold: 3,
183
+ }
184
+ return this
185
+ }
186
+
108
187
  /**
109
188
  * Sets key-value pairs as environment variables for the daemon.
110
189
  * @param env A map of environment variable names to their values.
@@ -1,6 +1,7 @@
1
1
  export type { AgentStatus } from "./zod/agent-status-schema.js";
2
2
  export type { AlienError } from "./zod/alien-error-schema.js";
3
3
  export type { AlienEvent } from "./zod/alien-event-schema.js";
4
+ export type { Architecture } from "./zod/architecture-schema.js";
4
5
  export type { ArtifactRegistryHeartbeatData } from "./zod/artifact-registry-heartbeat-data-schema.js";
5
6
  export type { ArtifactRegistryHeartbeatStatus } from "./zod/artifact-registry-heartbeat-status-schema.js";
6
7
  export type { ArtifactRegistryOutputs } from "./zod/artifact-registry-outputs-schema.js";
@@ -86,6 +87,8 @@ export type { BuildHeartbeatStatus } from "./zod/build-heartbeat-status-schema.j
86
87
  export type { BuildOutputs } from "./zod/build-outputs-schema.js";
87
88
  export type { Build } from "./zod/build-schema.js";
88
89
  export type { BuildStatus } from "./zod/build-status-schema.js";
90
+ export type { CapacityGroupScalePolicy } from "./zod/capacity-group-scale-policy-schema.js";
91
+ export type { CapacityGroup } from "./zod/capacity-group-schema.js";
89
92
  export type { CommandResponse } from "./zod/command-response-schema.js";
90
93
  export type { CommandState } from "./zod/command-state-schema.js";
91
94
  export type { CommandStatusResponse } from "./zod/command-status-response-schema.js";
@@ -93,8 +96,12 @@ export type { ComputeCapacityBlockerCategory } from "./zod/compute-capacity-bloc
93
96
  export type { ComputeCapacityBlocker } from "./zod/compute-capacity-blocker-schema.js";
94
97
  export type { ComputeCapacityGroupStatus } from "./zod/compute-capacity-group-status-schema.js";
95
98
  export type { ComputeCapacityRecommendation } from "./zod/compute-capacity-recommendation-schema.js";
99
+ export type { ComputeChoiceRange } from "./zod/compute-choice-range-schema.js";
96
100
  export type { ComputeClusterHeartbeatData } from "./zod/compute-cluster-heartbeat-data-schema.js";
97
101
  export type { ComputeClusterHeartbeatStatus } from "./zod/compute-cluster-heartbeat-status-schema.js";
102
+ export type { ComputeCluster } from "./zod/compute-cluster-schema.js";
103
+ export type { ComputePoolSelection } from "./zod/compute-pool-selection-schema.js";
104
+ export type { ComputeSettings } from "./zod/compute-settings-schema.js";
98
105
  export type { ComputeType } from "./zod/compute-type-schema.js";
99
106
  export type { ContainerAutoscaling } from "./zod/container-autoscaling-schema.js";
100
107
  export type { ContainerCode } from "./zod/container-code-schema.js";
@@ -111,6 +118,8 @@ export type { CustomDomainConfig } from "./zod/custom-domain-config-schema.js";
111
118
  export type { DaemonCode } from "./zod/daemon-code-schema.js";
112
119
  export type { DaemonHeartbeatData } from "./zod/daemon-heartbeat-data-schema.js";
113
120
  export type { DaemonOutputs } from "./zod/daemon-outputs-schema.js";
121
+ export type { DaemonRuntimeMount } from "./zod/daemon-runtime-mount-schema.js";
122
+ export type { DaemonRuntime } from "./zod/daemon-runtime-schema.js";
114
123
  export type { Daemon } from "./zod/daemon-schema.js";
115
124
  export type { DeploymentModel } from "./zod/deployment-model-schema.js";
116
125
  export type { DeploymentStatus } from "./zod/deployment-status-schema.js";
@@ -151,6 +160,7 @@ export type { GcpStorageImportData } from "./zod/gcp-storage-import-data-schema.
151
160
  export type { GcpVaultImportData } from "./zod/gcp-vault-import-data-schema.js";
152
161
  export type { GcpVpcNetworkHeartbeatData } from "./zod/gcp-vpc-network-heartbeat-data-schema.js";
153
162
  export type { GcpWorkerImportData } from "./zod/gcp-worker-import-data-schema.js";
163
+ export type { GpuSpec } from "./zod/gpu-spec-schema.js";
154
164
  export type { HealthCheck } from "./zod/health-check-schema.js";
155
165
  export type { HeartbeatBackend } from "./zod/heartbeat-backend-schema.js";
156
166
  export type { HeartbeatCollectionIssueReason } from "./zod/heartbeat-collection-issue-reason-schema.js";
@@ -162,7 +172,6 @@ export type { HorizonWorkloadSchedulingMode } from "./zod/horizon-workload-sched
162
172
  export type { HttpMethod } from "./zod/http-method-schema.js";
163
173
  export type { ImportSourceKind } from "./zod/import-source-kind-schema.js";
164
174
  export type { ImportedResource } from "./zod/imported-resource-schema.js";
165
- export type { Ingress } from "./zod/ingress-schema.js";
166
175
  export type { KubernetesBuildHeartbeatData } from "./zod/kubernetes-build-heartbeat-data-schema.js";
167
176
  export type { KubernetesCertificateMode } from "./zod/kubernetes-certificate-mode-schema.js";
168
177
  export type { KubernetesCloudReference } from "./zod/kubernetes-cloud-reference-schema.js";
@@ -217,6 +226,7 @@ export type { LocalServiceAccountHeartbeatData } from "./zod/local-service-accou
217
226
  export type { LocalStorageHeartbeatData } from "./zod/local-storage-heartbeat-data-schema.js";
218
227
  export type { LocalVaultHeartbeatData } from "./zod/local-vault-heartbeat-data-schema.js";
219
228
  export type { LocalWorkerHeartbeatData } from "./zod/local-worker-heartbeat-data-schema.js";
229
+ export type { MachineProfile } from "./zod/machine-profile-schema.js";
220
230
  export type { ManagedRuntimeEventInvolvedObject } from "./zod/managed-runtime-event-involved-object-schema.js";
221
231
  export type { ManagedRuntimeEventSnapshot } from "./zod/managed-runtime-event-snapshot-schema.js";
222
232
  export type { ManagedRuntimeEventSource } from "./zod/managed-runtime-event-source-schema.js";
@@ -245,6 +255,8 @@ export type { PresignedRequestBackend } from "./zod/presigned-request-backend-sc
245
255
  export type { PresignedRequest } from "./zod/presigned-request-schema.js";
246
256
  export type { ProviderFleetStatus } from "./zod/provider-fleet-status-schema.js";
247
257
  export type { ProviderLifecycleState } from "./zod/provider-lifecycle-state-schema.js";
258
+ export type { PublicEndpointOutput } from "./zod/public-endpoint-output-schema.js";
259
+ export type { PublicEndpoint } from "./zod/public-endpoint-schema.js";
248
260
  export type { PushProgress } from "./zod/push-progress-schema.js";
249
261
  export type { QueueHeartbeatData } from "./zod/queue-heartbeat-data-schema.js";
250
262
  export type { QueueHeartbeatStatus } from "./zod/queue-heartbeat-status-schema.js";
@@ -278,6 +290,13 @@ export type { ServiceActivationHeartbeatData } from "./zod/service-activation-he
278
290
  export type { ServiceActivationHeartbeatStatus } from "./zod/service-activation-heartbeat-status-schema.js";
279
291
  export type { StackImportRequest } from "./zod/stack-import-request-schema.js";
280
292
  export type { StackImportResponse } from "./zod/stack-import-response-schema.js";
293
+ export type { StackInputDefaultValue } from "./zod/stack-input-default-value-schema.js";
294
+ export type { StackInputDefinition } from "./zod/stack-input-definition-schema.js";
295
+ export type { StackInputEnvironmentMapping } from "./zod/stack-input-environment-mapping-schema.js";
296
+ export type { StackInputEnvironmentVariableType } from "./zod/stack-input-environment-variable-type-schema.js";
297
+ export type { StackInputKind } from "./zod/stack-input-kind-schema.js";
298
+ export type { StackInputProvider } from "./zod/stack-input-provider-schema.js";
299
+ export type { StackInputValidation } from "./zod/stack-input-validation-schema.js";
281
300
  export type { StackRef } from "./zod/stack-ref-schema.js";
282
301
  export type { StackResourceState } from "./zod/stack-resource-state-schema.js";
283
302
  export type { Stack } from "./zod/stack-schema.js";
@@ -306,6 +325,7 @@ export type { Vault } from "./zod/vault-schema.js";
306
325
  export type { WorkerCode } from "./zod/worker-code-schema.js";
307
326
  export type { WorkerHeartbeatData } from "./zod/worker-heartbeat-data-schema.js";
308
327
  export type { WorkerOutputs } from "./zod/worker-outputs-schema.js";
328
+ export type { WorkerPublicEndpoint } from "./zod/worker-public-endpoint-schema.js";
309
329
  export type { Worker } from "./zod/worker-schema.js";
310
330
  export type { WorkerTrigger } from "./zod/worker-trigger-schema.js";
311
331
  export type { WorkloadHeartbeatStatus } from "./zod/workload-heartbeat-status-schema.js";
@@ -313,6 +333,7 @@ export type { WorkloadReplicaStatus } from "./zod/workload-replica-status-schema
313
333
  export { AgentStatusSchema } from "./zod/agent-status-schema.js";
314
334
  export { AlienErrorSchema } from "./zod/alien-error-schema.js";
315
335
  export { AlienEventSchema } from "./zod/alien-event-schema.js";
336
+ export { ArchitectureSchema } from "./zod/architecture-schema.js";
316
337
  export { ArtifactRegistryHeartbeatDataSchema } from "./zod/artifact-registry-heartbeat-data-schema.js";
317
338
  export { ArtifactRegistryHeartbeatStatusSchema } from "./zod/artifact-registry-heartbeat-status-schema.js";
318
339
  export { ArtifactRegistryOutputsSchema } from "./zod/artifact-registry-outputs-schema.js";
@@ -398,6 +419,8 @@ export { BuildHeartbeatStatusSchema } from "./zod/build-heartbeat-status-schema.
398
419
  export { BuildOutputsSchema } from "./zod/build-outputs-schema.js";
399
420
  export { BuildSchema } from "./zod/build-schema.js";
400
421
  export { BuildStatusSchema } from "./zod/build-status-schema.js";
422
+ export { CapacityGroupScalePolicySchema } from "./zod/capacity-group-scale-policy-schema.js";
423
+ export { CapacityGroupSchema } from "./zod/capacity-group-schema.js";
401
424
  export { CommandResponseSchema } from "./zod/command-response-schema.js";
402
425
  export { CommandStateSchema } from "./zod/command-state-schema.js";
403
426
  export { CommandStatusResponseSchema } from "./zod/command-status-response-schema.js";
@@ -405,8 +428,12 @@ export { ComputeCapacityBlockerCategorySchema } from "./zod/compute-capacity-blo
405
428
  export { ComputeCapacityBlockerSchema } from "./zod/compute-capacity-blocker-schema.js";
406
429
  export { ComputeCapacityGroupStatusSchema } from "./zod/compute-capacity-group-status-schema.js";
407
430
  export { ComputeCapacityRecommendationSchema } from "./zod/compute-capacity-recommendation-schema.js";
431
+ export { ComputeChoiceRangeSchema } from "./zod/compute-choice-range-schema.js";
408
432
  export { ComputeClusterHeartbeatDataSchema } from "./zod/compute-cluster-heartbeat-data-schema.js";
409
433
  export { ComputeClusterHeartbeatStatusSchema } from "./zod/compute-cluster-heartbeat-status-schema.js";
434
+ export { ComputeClusterSchema } from "./zod/compute-cluster-schema.js";
435
+ export { ComputePoolSelectionSchema } from "./zod/compute-pool-selection-schema.js";
436
+ export { ComputeSettingsSchema } from "./zod/compute-settings-schema.js";
410
437
  export { ComputeTypeSchema } from "./zod/compute-type-schema.js";
411
438
  export { ContainerAutoscalingSchema } from "./zod/container-autoscaling-schema.js";
412
439
  export { ContainerCodeSchema } from "./zod/container-code-schema.js";
@@ -423,6 +450,8 @@ export { CustomDomainConfigSchema } from "./zod/custom-domain-config-schema.js";
423
450
  export { DaemonCodeSchema } from "./zod/daemon-code-schema.js";
424
451
  export { DaemonHeartbeatDataSchema } from "./zod/daemon-heartbeat-data-schema.js";
425
452
  export { DaemonOutputsSchema } from "./zod/daemon-outputs-schema.js";
453
+ export { DaemonRuntimeMountSchema } from "./zod/daemon-runtime-mount-schema.js";
454
+ export { DaemonRuntimeSchema } from "./zod/daemon-runtime-schema.js";
426
455
  export { DaemonSchema } from "./zod/daemon-schema.js";
427
456
  export { DeploymentModelSchema } from "./zod/deployment-model-schema.js";
428
457
  export { DeploymentStatusSchema } from "./zod/deployment-status-schema.js";
@@ -463,6 +492,7 @@ export { GcpStorageImportDataSchema } from "./zod/gcp-storage-import-data-schema
463
492
  export { GcpVaultImportDataSchema } from "./zod/gcp-vault-import-data-schema.js";
464
493
  export { GcpVpcNetworkHeartbeatDataSchema } from "./zod/gcp-vpc-network-heartbeat-data-schema.js";
465
494
  export { GcpWorkerImportDataSchema } from "./zod/gcp-worker-import-data-schema.js";
495
+ export { GpuSpecSchema } from "./zod/gpu-spec-schema.js";
466
496
  export { HealthCheckSchema } from "./zod/health-check-schema.js";
467
497
  export { HeartbeatBackendSchema } from "./zod/heartbeat-backend-schema.js";
468
498
  export { HeartbeatCollectionIssueReasonSchema } from "./zod/heartbeat-collection-issue-reason-schema.js";
@@ -474,7 +504,6 @@ export { HorizonWorkloadSchedulingModeSchema } from "./zod/horizon-workload-sche
474
504
  export { HttpMethodSchema } from "./zod/http-method-schema.js";
475
505
  export { ImportSourceKindSchema } from "./zod/import-source-kind-schema.js";
476
506
  export { ImportedResourceSchema } from "./zod/imported-resource-schema.js";
477
- export { IngressSchema } from "./zod/ingress-schema.js";
478
507
  export { KubernetesBuildHeartbeatDataSchema } from "./zod/kubernetes-build-heartbeat-data-schema.js";
479
508
  export { KubernetesCertificateModeSchema } from "./zod/kubernetes-certificate-mode-schema.js";
480
509
  export { KubernetesCloudReferenceSchema } from "./zod/kubernetes-cloud-reference-schema.js";
@@ -529,6 +558,7 @@ export { LocalServiceAccountHeartbeatDataSchema } from "./zod/local-service-acco
529
558
  export { LocalStorageHeartbeatDataSchema } from "./zod/local-storage-heartbeat-data-schema.js";
530
559
  export { LocalVaultHeartbeatDataSchema } from "./zod/local-vault-heartbeat-data-schema.js";
531
560
  export { LocalWorkerHeartbeatDataSchema } from "./zod/local-worker-heartbeat-data-schema.js";
561
+ export { MachineProfileSchema } from "./zod/machine-profile-schema.js";
532
562
  export { ManagedRuntimeEventInvolvedObjectSchema } from "./zod/managed-runtime-event-involved-object-schema.js";
533
563
  export { ManagedRuntimeEventSnapshotSchema } from "./zod/managed-runtime-event-snapshot-schema.js";
534
564
  export { ManagedRuntimeEventSourceSchema } from "./zod/managed-runtime-event-source-schema.js";
@@ -557,6 +587,8 @@ export { PresignedRequestBackendSchema } from "./zod/presigned-request-backend-s
557
587
  export { PresignedRequestSchema } from "./zod/presigned-request-schema.js";
558
588
  export { ProviderFleetStatusSchema } from "./zod/provider-fleet-status-schema.js";
559
589
  export { ProviderLifecycleStateSchema } from "./zod/provider-lifecycle-state-schema.js";
590
+ export { PublicEndpointOutputSchema } from "./zod/public-endpoint-output-schema.js";
591
+ export { PublicEndpointSchema } from "./zod/public-endpoint-schema.js";
560
592
  export { PushProgressSchema } from "./zod/push-progress-schema.js";
561
593
  export { QueueHeartbeatDataSchema } from "./zod/queue-heartbeat-data-schema.js";
562
594
  export { QueueHeartbeatStatusSchema } from "./zod/queue-heartbeat-status-schema.js";
@@ -590,6 +622,13 @@ export { ServiceActivationHeartbeatDataSchema } from "./zod/service-activation-h
590
622
  export { ServiceActivationHeartbeatStatusSchema } from "./zod/service-activation-heartbeat-status-schema.js";
591
623
  export { StackImportRequestSchema } from "./zod/stack-import-request-schema.js";
592
624
  export { StackImportResponseSchema } from "./zod/stack-import-response-schema.js";
625
+ export { StackInputDefaultValueSchema } from "./zod/stack-input-default-value-schema.js";
626
+ export { StackInputDefinitionSchema } from "./zod/stack-input-definition-schema.js";
627
+ export { StackInputEnvironmentMappingSchema } from "./zod/stack-input-environment-mapping-schema.js";
628
+ export { StackInputEnvironmentVariableTypeSchema } from "./zod/stack-input-environment-variable-type-schema.js";
629
+ export { StackInputKindSchema } from "./zod/stack-input-kind-schema.js";
630
+ export { StackInputProviderSchema } from "./zod/stack-input-provider-schema.js";
631
+ export { StackInputValidationSchema } from "./zod/stack-input-validation-schema.js";
593
632
  export { StackRefSchema } from "./zod/stack-ref-schema.js";
594
633
  export { StackResourceStateSchema } from "./zod/stack-resource-state-schema.js";
595
634
  export { StackSchema } from "./zod/stack-schema.js";
@@ -618,6 +657,7 @@ export { VaultSchema } from "./zod/vault-schema.js";
618
657
  export { WorkerCodeSchema } from "./zod/worker-code-schema.js";
619
658
  export { WorkerHeartbeatDataSchema } from "./zod/worker-heartbeat-data-schema.js";
620
659
  export { WorkerOutputsSchema } from "./zod/worker-outputs-schema.js";
660
+ export { WorkerPublicEndpointSchema } from "./zod/worker-public-endpoint-schema.js";
621
661
  export { WorkerSchema } from "./zod/worker-schema.js";
622
662
  export { WorkerTriggerSchema } from "./zod/worker-trigger-schema.js";
623
663
  export { WorkloadHeartbeatStatusSchema } from "./zod/workload-heartbeat-status-schema.js";
@@ -0,0 +1 @@
1
+ {"type":"string","description":"CPU architecture.","enum":["arm64","x86_64"],"x-readme-ref-name":"Architecture"}
@@ -0,0 +1 @@
1
+ {"type":"object","description":"Capacity group definition.\n\nA capacity group represents machines with identical hardware profiles.\nEach group becomes a separate Auto Scaling Group (AWS), Managed Instance Group (GCP),\nor VM Scale Set (Azure).","required":["groupId","minSize","maxSize"],"properties":{"groupId":{"type":"string","description":"Unique identifier for this capacity group (must be lowercase alphanumeric with hyphens)"},"instanceType":{"type":["string","null"],"description":"Provider machine selected at deployment time.\n`alien.ts` should declare portable requirements; preflight materialization\nfills this field from `StackSettings.compute`."},"maxSize":{"type":"integer","format":"int32","description":"Maximum number of machines (must be ≤ 10)","minimum":0},"minSize":{"type":"integer","format":"int32","description":"Minimum number of machines (can be 0 for scale-to-zero)","minimum":0},"nestedVirtualization":{"type":["boolean","null"],"description":"Require instance types that expose nested virtualization (VT-x/EPT)\nto guest VMs. This is needed by workloads that boot nested VMs inside\ncontainers.\nWhen true, the controller's instance-type selector is constrained\nto a vetted nested-virt-capable allowlist."},"profile":{"oneOf":[{"type":"null"},{"description":"Machine resource profile (auto-derived from instance_type if not specified)","type":"object","required":["cpu","memoryBytes","ephemeralStorageBytes"],"properties":{"architecture":{"oneOf":[{"type":"null"},{"description":"CPU architecture required or provided by this machine profile.","type":"string","enum":["arm64","x86_64"],"x-readme-ref-name":"Architecture"}]},"cpu":{"type":"string","description":"CPU cores per machine (hardware total) - stored as string to preserve precision\n(e.g., \"8.0\", \"4.5\")"},"ephemeralStorageBytes":{"type":"integer","format":"int64","description":"Ephemeral storage in bytes (hardware total)","minimum":0},"gpu":{"oneOf":[{"type":"null"},{"description":"GPU specification (optional)","type":"object","required":["type","count"],"properties":{"count":{"type":"integer","format":"int32","description":"Number of GPUs per machine","minimum":0},"type":{"type":"string","description":"GPU type identifier (e.g., \"nvidia-a100\", \"nvidia-t4\")"}},"x-readme-ref-name":"GpuSpec"}]},"memoryBytes":{"type":"integer","format":"int64","description":"Memory in bytes (hardware total)","minimum":0}},"x-readme-ref-name":"MachineProfile"}]},"scalePolicy":{"oneOf":[{"type":"null"},{"description":"Source-declared scale policy and installer-editable bounds.\n\nOlder stacks only have `minSize` and `maxSize`; planners derive an exact\nfixed/autoscale policy from those selected bounds when this field is absent.","oneOf":[{"type":"object","description":"A fixed-size pool where the installer can choose the fixed machine count.","required":["machines","type"],"properties":{"machines":{"description":"Allowed fixed machine count range.","type":"object","required":["min","max","default"],"properties":{"default":{"type":"integer","format":"int32","description":"Default value recommended when no installer override is supplied.","minimum":0},"max":{"type":"integer","format":"int32","description":"Highest allowed value.","minimum":0},"min":{"type":"integer","format":"int32","description":"Lowest allowed value.","minimum":0}},"x-readme-ref-name":"ComputeChoiceRange"},"type":{"type":"string","enum":["fixed"]}}},{"type":"object","description":"An autoscaling pool with separately bounded min and max counts.","required":["min","max","type"],"properties":{"max":{"description":"Allowed maximum machine count range.","type":"object","required":["min","max","default"],"properties":{"default":{"type":"integer","format":"int32","description":"Default value recommended when no installer override is supplied.","minimum":0},"max":{"type":"integer","format":"int32","description":"Highest allowed value.","minimum":0},"min":{"type":"integer","format":"int32","description":"Lowest allowed value.","minimum":0}},"x-readme-ref-name":"ComputeChoiceRange"},"min":{"description":"Allowed minimum machine count range.","type":"object","required":["min","max","default"],"properties":{"default":{"type":"integer","format":"int32","description":"Default value recommended when no installer override is supplied.","minimum":0},"max":{"type":"integer","format":"int32","description":"Highest allowed value.","minimum":0},"min":{"type":"integer","format":"int32","description":"Lowest allowed value.","minimum":0}},"x-readme-ref-name":"ComputeChoiceRange"},"type":{"type":"string","enum":["autoscale"]}}}],"x-readme-ref-name":"CapacityGroupScalePolicy"}]}},"x-readme-ref-name":"CapacityGroup"}
@@ -0,0 +1 @@
1
+ {"oneOf":[{"type":"object","description":"A fixed-size pool where the installer can choose the fixed machine count.","required":["machines","type"],"properties":{"machines":{"description":"Allowed fixed machine count range.","type":"object","required":["min","max","default"],"properties":{"default":{"type":"integer","format":"int32","description":"Default value recommended when no installer override is supplied.","minimum":0},"max":{"type":"integer","format":"int32","description":"Highest allowed value.","minimum":0},"min":{"type":"integer","format":"int32","description":"Lowest allowed value.","minimum":0}},"x-readme-ref-name":"ComputeChoiceRange"},"type":{"type":"string","enum":["fixed"]}}},{"type":"object","description":"An autoscaling pool with separately bounded min and max counts.","required":["min","max","type"],"properties":{"max":{"description":"Allowed maximum machine count range.","type":"object","required":["min","max","default"],"properties":{"default":{"type":"integer","format":"int32","description":"Default value recommended when no installer override is supplied.","minimum":0},"max":{"type":"integer","format":"int32","description":"Highest allowed value.","minimum":0},"min":{"type":"integer","format":"int32","description":"Lowest allowed value.","minimum":0}},"x-readme-ref-name":"ComputeChoiceRange"},"min":{"description":"Allowed minimum machine count range.","type":"object","required":["min","max","default"],"properties":{"default":{"type":"integer","format":"int32","description":"Default value recommended when no installer override is supplied.","minimum":0},"max":{"type":"integer","format":"int32","description":"Highest allowed value.","minimum":0},"min":{"type":"integer","format":"int32","description":"Lowest allowed value.","minimum":0}},"x-readme-ref-name":"ComputeChoiceRange"},"type":{"type":"string","enum":["autoscale"]}}}],"description":"Source-declared scale policy for a capacity group.","x-readme-ref-name":"CapacityGroupScalePolicy"}
@@ -0,0 +1 @@
1
+ {"type":"object","description":"Allowed range and default for a count selected by the installer.","required":["min","max","default"],"properties":{"default":{"type":"integer","format":"int32","description":"Default value recommended when no installer override is supplied.","minimum":0},"max":{"type":"integer","format":"int32","description":"Highest allowed value.","minimum":0},"min":{"type":"integer","format":"int32","description":"Lowest allowed value.","minimum":0}},"x-readme-ref-name":"ComputeChoiceRange"}
@@ -0,0 +1 @@
1
+ {"type":"object","description":"ComputeCluster resource for running long-running container workloads.\n\nA ComputeCluster provides the setup-owned machine boundary for containers.\nAlien may manage the worker fleet inside that boundary when setup grants\n`compute-cluster/management`.\n\n## Architecture\n\n- **Setup** creates cloud resources: ASGs/MIGs/VMSSs, IAM roles, security groups\n- **Alien** manages allowed fleet operations: machine count and runtime\n machine image rollout\n- A node agent runs on each machine from the selected runtime image channel\n\n## Example\n\n```rust\nuse alien_core::{CapacityGroup, ComputeCluster, MachineProfile};\n\nlet cluster = ComputeCluster::new(\"compute\".to_string())\n .capacity_group(CapacityGroup {\n group_id: \"general\".to_string(),\n instance_type: None,\n profile: Some(MachineProfile {\n cpu: \"4.0\".to_string(),\n memory_bytes: 16 * 1024 * 1024 * 1024,\n ephemeral_storage_bytes: 20 * 1024 * 1024 * 1024,\n architecture: None,\n gpu: None,\n }),\n min_size: 1,\n max_size: 5,\n scale_policy: None,\n nested_virtualization: None,\n })\n .build();\n```","required":["id","capacityGroups"],"properties":{"capacityGroups":{"type":"array","items":{"type":"object","description":"Capacity group definition.\n\nA capacity group represents machines with identical hardware profiles.\nEach group becomes a separate Auto Scaling Group (AWS), Managed Instance Group (GCP),\nor VM Scale Set (Azure).","required":["groupId","minSize","maxSize"],"properties":{"groupId":{"type":"string","description":"Unique identifier for this capacity group (must be lowercase alphanumeric with hyphens)"},"instanceType":{"type":["string","null"],"description":"Provider machine selected at deployment time.\n`alien.ts` should declare portable requirements; preflight materialization\nfills this field from `StackSettings.compute`."},"maxSize":{"type":"integer","format":"int32","description":"Maximum number of machines (must be ≤ 10)","minimum":0},"minSize":{"type":"integer","format":"int32","description":"Minimum number of machines (can be 0 for scale-to-zero)","minimum":0},"nestedVirtualization":{"type":["boolean","null"],"description":"Require instance types that expose nested virtualization (VT-x/EPT)\nto guest VMs. This is needed by workloads that boot nested VMs inside\ncontainers.\nWhen true, the controller's instance-type selector is constrained\nto a vetted nested-virt-capable allowlist."},"profile":{"oneOf":[{"type":"null"},{"description":"Machine resource profile (auto-derived from instance_type if not specified)","type":"object","required":["cpu","memoryBytes","ephemeralStorageBytes"],"properties":{"architecture":{"oneOf":[{"type":"null"},{"description":"CPU architecture required or provided by this machine profile.","type":"string","enum":["arm64","x86_64"],"x-readme-ref-name":"Architecture"}]},"cpu":{"type":"string","description":"CPU cores per machine (hardware total) - stored as string to preserve precision\n(e.g., \"8.0\", \"4.5\")"},"ephemeralStorageBytes":{"type":"integer","format":"int64","description":"Ephemeral storage in bytes (hardware total)","minimum":0},"gpu":{"oneOf":[{"type":"null"},{"description":"GPU specification (optional)","type":"object","required":["type","count"],"properties":{"count":{"type":"integer","format":"int32","description":"Number of GPUs per machine","minimum":0},"type":{"type":"string","description":"GPU type identifier (e.g., \"nvidia-a100\", \"nvidia-t4\")"}},"x-readme-ref-name":"GpuSpec"}]},"memoryBytes":{"type":"integer","format":"int64","description":"Memory in bytes (hardware total)","minimum":0}},"x-readme-ref-name":"MachineProfile"}]},"scalePolicy":{"oneOf":[{"type":"null"},{"description":"Source-declared scale policy and installer-editable bounds.\n\nOlder stacks only have `minSize` and `maxSize`; planners derive an exact\nfixed/autoscale policy from those selected bounds when this field is absent.","oneOf":[{"type":"object","description":"A fixed-size pool where the installer can choose the fixed machine count.","required":["machines","type"],"properties":{"machines":{"description":"Allowed fixed machine count range.","type":"object","required":["min","max","default"],"properties":{"default":{"type":"integer","format":"int32","description":"Default value recommended when no installer override is supplied.","minimum":0},"max":{"type":"integer","format":"int32","description":"Highest allowed value.","minimum":0},"min":{"type":"integer","format":"int32","description":"Lowest allowed value.","minimum":0}},"x-readme-ref-name":"ComputeChoiceRange"},"type":{"type":"string","enum":["fixed"]}}},{"type":"object","description":"An autoscaling pool with separately bounded min and max counts.","required":["min","max","type"],"properties":{"max":{"description":"Allowed maximum machine count range.","type":"object","required":["min","max","default"],"properties":{"default":{"type":"integer","format":"int32","description":"Default value recommended when no installer override is supplied.","minimum":0},"max":{"type":"integer","format":"int32","description":"Highest allowed value.","minimum":0},"min":{"type":"integer","format":"int32","description":"Lowest allowed value.","minimum":0}},"x-readme-ref-name":"ComputeChoiceRange"},"min":{"description":"Allowed minimum machine count range.","type":"object","required":["min","max","default"],"properties":{"default":{"type":"integer","format":"int32","description":"Default value recommended when no installer override is supplied.","minimum":0},"max":{"type":"integer","format":"int32","description":"Highest allowed value.","minimum":0},"min":{"type":"integer","format":"int32","description":"Lowest allowed value.","minimum":0}},"x-readme-ref-name":"ComputeChoiceRange"},"type":{"type":"string","enum":["autoscale"]}}}],"x-readme-ref-name":"CapacityGroupScalePolicy"}]}},"x-readme-ref-name":"CapacityGroup"},"description":"Capacity groups defining the machine pools for this cluster.\nEach group becomes a separate ASG/MIG/VMSS."},"containerCidr":{"type":["string","null"],"description":"Container CIDR block for internal container networking.\nAuto-generated as \"10.244.0.0/16\" if not specified.\nEach machine gets a /24 subnet from this range."},"id":{"type":"string","description":"Unique identifier for the container cluster.\nMust contain only alphanumeric characters, hyphens, and underscores."}},"additionalProperties":false,"x-readme-ref-name":"ComputeCluster"}
@@ -0,0 +1 @@
1
+ {"oneOf":[{"type":"object","description":"Fixed number of machines.","required":["machines","mode"],"properties":{"machine":{"type":["string","null"],"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","format":"int32","description":"Number of machines to run.","minimum":0},"mode":{"type":"string","enum":["fixed"]}}},{"type":"object","description":"Autoscaling machine pool.","required":["min","max","mode"],"properties":{"machine":{"type":["string","null"],"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","format":"int32","description":"Maximum machine count.","minimum":0},"min":{"type":"integer","format":"int32","description":"Minimum machine count.","minimum":0},"mode":{"type":"string","enum":["autoscale"]}}}],"description":"User-selected deployment settings for one compute pool.","x-readme-ref-name":"ComputePoolSelection"}
@@ -0,0 +1 @@
1
+ {"type":"object","description":"Deployment-time compute choices for Alien-managed compute pools.\n\nApplication source declares portable pool requirements. This settings\nobject stores the concrete choices made for one deployment, such as the\nprovider machine type and selected machine counts.","properties":{"pools":{"type":"object","description":"Selected compute choices keyed by pool ID.","additionalProperties":{"oneOf":[{"type":"object","description":"Fixed number of machines.","required":["machines","mode"],"properties":{"machine":{"type":["string","null"],"description":"Provider machine type selected for this deployment."},"machines":{"type":"integer","format":"int32","description":"Number of machines to run.","minimum":0},"mode":{"type":"string","enum":["fixed"]}}},{"type":"object","description":"Autoscaling machine pool.","required":["min","max","mode"],"properties":{"machine":{"type":["string","null"],"description":"Provider machine type selected for this deployment."},"max":{"type":"integer","format":"int32","description":"Maximum machine count.","minimum":0},"min":{"type":"integer","format":"int32","description":"Minimum machine count.","minimum":0},"mode":{"type":"string","enum":["autoscale"]}}}],"description":"User-selected deployment settings for one compute pool.","x-readme-ref-name":"ComputePoolSelection"},"propertyNames":{"type":"string"}}},"x-readme-ref-name":"ComputeSettings"}
@@ -1 +1 @@
1
- {"type":"object","description":"Container resource for running long-running container workloads.\n\nA Container defines a deployable unit that runs on a ComputeCluster.\nThe managed container backend handles scheduling replicas across machines,\nautoscaling based on various metrics, and service discovery.\n\n## Example\n\n```rust\nuse alien_core::{Container, ContainerCode, ResourceSpec, ContainerAutoscaling, ContainerPort, ExposeProtocol};\n\nlet container = Container::new(\"api\".to_string())\n .cluster(\"compute\".to_string())\n .code(ContainerCode::Image {\n image: \"myapp:latest\".to_string(),\n })\n .cpu(ResourceSpec { min: \"0.5\".to_string(), desired: \"1\".to_string() })\n .memory(ResourceSpec { min: \"512Mi\".to_string(), desired: \"1Gi\".to_string() })\n .port(8080)\n .expose_port(8080, ExposeProtocol::Http)\n .autoscaling(ContainerAutoscaling {\n min: 2,\n desired: 3,\n max: 10,\n target_cpu_percent: Some(70.0),\n target_memory_percent: None,\n target_http_in_flight_per_replica: Some(100),\n max_http_p95_latency_ms: None,\n })\n .permissions(\"container-execution\".to_string())\n .build();\n```","required":["id","links","ports","code","cpu","memory","permissions"],"properties":{"autoscaling":{"oneOf":[{"type":"null"},{"description":"Autoscaling configuration (only for stateless containers)","type":"object","required":["min","desired","max"],"properties":{"desired":{"type":"integer","format":"int32","description":"Initial desired replicas at container creation","minimum":0},"max":{"type":"integer","format":"int32","description":"Maximum replicas under load","minimum":0},"maxHttpP95LatencyMs":{"type":["number","null"],"format":"double","description":"Maximum acceptable p95 HTTP latency in milliseconds"},"min":{"type":"integer","format":"int32","description":"Minimum replicas (always running)","minimum":0},"targetCpuPercent":{"type":["number","null"],"format":"double","description":"Target CPU utilization percentage for scaling (default: 70%)"},"targetHttpInFlightPerReplica":{"type":["integer","null"],"format":"int32","description":"Target in-flight HTTP requests per replica","minimum":0},"targetMemoryPercent":{"type":["number","null"],"format":"double","description":"Target memory utilization percentage for scaling (default: 80%)"}},"x-readme-ref-name":"ContainerAutoscaling"}]},"cluster":{"type":["string","null"],"description":"ComputeCluster resource ID that this container runs on.\nIf None, will be auto-assigned by ComputeClusterMutation at deployment time."},"code":{"description":"Container code (image or source)","oneOf":[{"type":"object","description":"Container image reference","required":["image","type"],"properties":{"image":{"type":"string","description":"Container image (e.g., `postgres:16`, `ghcr.io/myorg/myimage:latest`)"},"type":{"type":"string","enum":["image"]}}},{"type":"object","description":"Source code to be built","required":["src","toolchain","type"],"properties":{"src":{"type":"string","description":"The source directory to build from"},"toolchain":{"description":"Toolchain configuration with type-safe options","oneOf":[{"type":"object","description":"Rust with Cargo build system","required":["binaryName","type"],"properties":{"binaryName":{"type":"string","description":"Name of the binary to build and run"},"type":{"type":"string","enum":["rust"]}}},{"type":"object","description":"TypeScript/JavaScript compiled to single executable with Bun","required":["type"],"properties":{"binaryName":{"type":["string","null"],"description":"Name of the compiled binary (defaults to package.json name if not specified)"},"type":{"type":"string","enum":["typescript"]}}},{"type":"object","description":"Docker build from Dockerfile","required":["type"],"properties":{"buildArgs":{"type":["object","null"],"description":"Build arguments for docker build","additionalProperties":{"type":"string"},"propertyNames":{"type":"string"}},"dockerfile":{"type":["string","null"],"description":"Dockerfile path relative to src (default: \"Dockerfile\")"},"target":{"type":["string","null"],"description":"Multi-stage build target"},"type":{"type":"string","enum":["docker"]}}}],"x-readme-ref-name":"ToolchainConfig"},"type":{"type":"string","enum":["source"]}}}],"x-readme-ref-name":"ContainerCode"},"command":{"type":["array","null"],"items":{"type":"string"},"description":"Command to override image default"},"cpu":{"description":"CPU resource requirements","type":"object","required":["min","desired"],"properties":{"desired":{"type":"string","description":"Desired resource allocation (used by scheduler)"},"min":{"type":"string","description":"Minimum resource allocation"}},"x-readme-ref-name":"ResourceSpec"},"environment":{"type":"object","description":"Environment variables","additionalProperties":{"type":"string"},"propertyNames":{"type":"string"}},"ephemeralStorage":{"type":["string","null"],"description":"Ephemeral storage requirement (e.g., \"10Gi\")"},"gpu":{"oneOf":[{"type":"null"},{"description":"GPU requirements (optional)","type":"object","required":["type","count"],"properties":{"count":{"type":"integer","format":"int32","description":"Number of GPUs required (1-8)","minimum":0},"type":{"type":"string","description":"GPU type identifier (e.g., \"nvidia-a100\", \"nvidia-t4\")"}},"x-readme-ref-name":"ContainerGpuSpec"}]},"healthCheck":{"oneOf":[{"type":"null"},{"description":"Health check configuration","type":"object","properties":{"failureThreshold":{"type":"integer","format":"int32","description":"Number of consecutive failures before marking replica unhealthy","minimum":0},"method":{"type":"string","description":"HTTP method to use for health check"},"path":{"type":"string","description":"HTTP endpoint path to check (e.g., \"/health\", \"/ready\")"},"port":{"type":["integer","null"],"format":"int32","description":"Port to check (defaults to container port if not specified)","minimum":0},"timeoutSeconds":{"type":"integer","format":"int32","description":"Request timeout in seconds (1-5)","minimum":0}},"x-readme-ref-name":"HealthCheck"}]},"id":{"type":"string","description":"Unique identifier for the container.\nMust be DNS-compatible: lowercase alphanumeric with hyphens."},"links":{"type":"array","items":{"type":"object","description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility.","required":["type","id"],"properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior.","examples":["worker","storage","queue","redis","postgres"],"x-readme-ref-name":"ResourceType"}},"x-readme-ref-name":"ResourceRef"},"description":"Resource links (dependencies)"},"memory":{"description":"Memory resource requirements (must use Ki/Mi/Gi/Ti suffix)","type":"object","required":["min","desired"],"properties":{"desired":{"type":"string","description":"Desired resource allocation (used by scheduler)"},"min":{"type":"string","description":"Minimum resource allocation"}},"x-readme-ref-name":"ResourceSpec"},"permissions":{"type":"string","description":"Permission profile name"},"persistentStorage":{"oneOf":[{"type":"null"},{"description":"Persistent storage configuration (only for stateful containers)","type":"object","required":["size","mountPath"],"properties":{"mountPath":{"type":"string","description":"Mount path inside the container"},"size":{"type":"string","description":"Storage size (e.g., \"100Gi\", \"500Gi\")"}},"x-readme-ref-name":"PersistentStorage"}]},"pool":{"type":["string","null"],"description":"Capacity group to run on (must exist in the cluster)\nIf not specified, containers are scheduled to any available group."},"ports":{"type":"array","items":{"type":"object","description":"Container port configuration.","required":["port"],"properties":{"expose":{"oneOf":[{"type":"null"},{"description":"Optional exposure protocol (if None, port is internal-only)","type":"string","enum":["http","tcp"],"x-readme-ref-name":"ExposeProtocol"}]},"port":{"type":"integer","format":"int32","description":"Port number","minimum":0}},"x-readme-ref-name":"ContainerPort"},"description":"Container ports to expose (at least one required)"},"replicas":{"type":["integer","null"],"format":"int32","description":"Fixed replica count (for stateful containers or stateless without autoscaling)","minimum":0},"stateful":{"type":"boolean","description":"Whether container is stateful (gets stable ordinals, optional persistent volumes)"}},"additionalProperties":false,"x-readme-ref-name":"Container"}
1
+ {"type":"object","description":"Container resource for running long-running container workloads.\n\nA Container defines a deployable unit that runs on a ComputeCluster.\nThe managed container backend handles scheduling replicas across machines,\nautoscaling based on various metrics, and service discovery.\n\n## Example\n\n```rust\nuse alien_core::{Container, ContainerCode, ResourceSpec, ContainerAutoscaling, PublicEndpoint, ExposeProtocol};\n\nlet container = Container::new(\"api\".to_string())\n .cluster(\"compute\".to_string())\n .code(ContainerCode::Image {\n image: \"myapp:latest\".to_string(),\n })\n .cpu(ResourceSpec { min: \"0.5\".to_string(), desired: \"1\".to_string() })\n .memory(ResourceSpec { min: \"512Mi\".to_string(), desired: \"1Gi\".to_string() })\n .port(8080)\n .public_endpoint(PublicEndpoint {\n name: \"api\".to_string(),\n port: 8080,\n protocol: ExposeProtocol::Http,\n host_label: None,\n wildcard_subdomains: false,\n })\n .autoscaling(ContainerAutoscaling {\n min: 2,\n desired: 3,\n max: 10,\n target_cpu_percent: Some(70.0),\n target_memory_percent: None,\n target_http_in_flight_per_replica: Some(100),\n max_http_p95_latency_ms: None,\n })\n .permissions(\"container-execution\".to_string())\n .build();\n```","required":["id","links","ports","publicEndpoints","code","cpu","memory","permissions"],"properties":{"autoscaling":{"oneOf":[{"type":"null"},{"description":"Autoscaling configuration (only for stateless containers)","type":"object","required":["min","desired","max"],"properties":{"desired":{"type":"integer","format":"int32","description":"Initial desired replicas at container creation","minimum":0},"max":{"type":"integer","format":"int32","description":"Maximum replicas under load","minimum":0},"maxHttpP95LatencyMs":{"type":["number","null"],"format":"double","description":"Maximum acceptable p95 HTTP latency in milliseconds"},"min":{"type":"integer","format":"int32","description":"Minimum replicas (always running)","minimum":0},"targetCpuPercent":{"type":["number","null"],"format":"double","description":"Target CPU utilization percentage for scaling (default: 70%)"},"targetHttpInFlightPerReplica":{"type":["integer","null"],"format":"int32","description":"Target in-flight HTTP requests per replica","minimum":0},"targetMemoryPercent":{"type":["number","null"],"format":"double","description":"Target memory utilization percentage for scaling (default: 80%)"}},"x-readme-ref-name":"ContainerAutoscaling"}]},"cluster":{"type":["string","null"],"description":"ComputeCluster resource ID that this container runs on.\nIf None, will be auto-assigned by ComputeClusterMutation at deployment time."},"code":{"description":"Container code (image or source)","oneOf":[{"type":"object","description":"Container image reference","required":["image","type"],"properties":{"image":{"type":"string","description":"Container image (e.g., `postgres:16`, `ghcr.io/myorg/myimage:latest`)"},"type":{"type":"string","enum":["image"]}}},{"type":"object","description":"Source code to be built","required":["src","toolchain","type"],"properties":{"src":{"type":"string","description":"The source directory to build from"},"toolchain":{"description":"Toolchain configuration with type-safe options","oneOf":[{"type":"object","description":"Rust with Cargo build system","required":["binaryName","type"],"properties":{"binaryName":{"type":"string","description":"Name of the binary to build and run"},"type":{"type":"string","enum":["rust"]}}},{"type":"object","description":"TypeScript/JavaScript compiled to single executable with Bun","required":["type"],"properties":{"binaryName":{"type":["string","null"],"description":"Name of the compiled binary (defaults to package.json name if not specified)"},"type":{"type":"string","enum":["typescript"]}}},{"type":"object","description":"Docker build from Dockerfile","required":["type"],"properties":{"buildArgs":{"type":["object","null"],"description":"Build arguments for docker build","additionalProperties":{"type":"string"},"propertyNames":{"type":"string"}},"dockerfile":{"type":["string","null"],"description":"Dockerfile path relative to src (default: \"Dockerfile\")"},"target":{"type":["string","null"],"description":"Multi-stage build target"},"type":{"type":"string","enum":["docker"]}}}],"x-readme-ref-name":"ToolchainConfig"},"type":{"type":"string","enum":["source"]}}}],"x-readme-ref-name":"ContainerCode"},"command":{"type":["array","null"],"items":{"type":"string"},"description":"Command to override image default"},"cpu":{"description":"CPU resource requirements","type":"object","required":["min","desired"],"properties":{"desired":{"type":"string","description":"Desired resource allocation (used by scheduler)"},"min":{"type":"string","description":"Minimum resource allocation"}},"x-readme-ref-name":"ResourceSpec"},"environment":{"type":"object","description":"Environment variables","additionalProperties":{"type":"string"},"propertyNames":{"type":"string"}},"ephemeralStorage":{"type":["string","null"],"description":"Ephemeral storage requirement (e.g., \"10Gi\")"},"gpu":{"oneOf":[{"type":"null"},{"description":"GPU requirements (optional)","type":"object","required":["type","count"],"properties":{"count":{"type":"integer","format":"int32","description":"Number of GPUs required (1-8)","minimum":0},"type":{"type":"string","description":"GPU type identifier (e.g., \"nvidia-a100\", \"nvidia-t4\")"}},"x-readme-ref-name":"ContainerGpuSpec"}]},"healthCheck":{"oneOf":[{"type":"null"},{"description":"Health check configuration","type":"object","properties":{"failureThreshold":{"type":"integer","format":"int32","description":"Number of consecutive failures before marking replica unhealthy","minimum":0},"method":{"type":"string","description":"HTTP method to use for health check"},"path":{"type":"string","description":"HTTP endpoint path to check (e.g., \"/health\", \"/ready\")"},"port":{"type":["integer","null"],"format":"int32","description":"Port to check (defaults to container port if not specified)","minimum":0},"timeoutSeconds":{"type":"integer","format":"int32","description":"Request timeout in seconds (1-5)","minimum":0}},"x-readme-ref-name":"HealthCheck"}]},"id":{"type":"string","description":"Unique identifier for the container.\nMust be DNS-compatible: lowercase alphanumeric with hyphens."},"links":{"type":"array","items":{"type":"object","description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility.","required":["type","id"],"properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior.","examples":["worker","storage","queue","redis","postgres"],"x-readme-ref-name":"ResourceType"}},"x-readme-ref-name":"ResourceRef"},"description":"Resource links (dependencies)"},"memory":{"description":"Memory resource requirements (must use Ki/Mi/Gi/Ti suffix)","type":"object","required":["min","desired"],"properties":{"desired":{"type":"string","description":"Desired resource allocation (used by scheduler)"},"min":{"type":"string","description":"Minimum resource allocation"}},"x-readme-ref-name":"ResourceSpec"},"permissions":{"type":"string","description":"Permission profile name"},"persistentStorage":{"oneOf":[{"type":"null"},{"description":"Persistent storage configuration (only for stateful containers)","type":"object","required":["size","mountPath"],"properties":{"mountPath":{"type":"string","description":"Mount path inside the container"},"size":{"type":"string","description":"Storage size (e.g., \"100Gi\", \"500Gi\")"}},"x-readme-ref-name":"PersistentStorage"}]},"pool":{"type":["string","null"],"description":"Capacity group to run on (must exist in the cluster)\nIf not specified, containers are scheduled to any available group."},"ports":{"type":"array","items":{"type":"object","description":"Container port configuration.","required":["port"],"properties":{"port":{"type":"integer","format":"int32","description":"Port number","minimum":0}},"x-readme-ref-name":"ContainerPort"},"description":"Internal container ports (at least one required)."},"publicEndpoints":{"type":"array","items":{"type":"object","description":"Public endpoint configuration for port-backed workload resources.","required":["name","port","protocol"],"properties":{"hostLabel":{"type":["string","null"],"description":"Optional DNS label override for generated endpoint hostnames."},"name":{"type":"string","description":"Endpoint name within the resource."},"port":{"type":"integer","format":"int32","description":"Workload port served by the public endpoint.","minimum":0},"protocol":{"description":"Public protocol.","type":"string","enum":["http","tcp"],"x-readme-ref-name":"ExposeProtocol"},"wildcardSubdomains":{"type":"boolean","description":"Whether to route wildcard subdomains to this endpoint."}},"x-readme-ref-name":"PublicEndpoint"},"description":"Public endpoints exposed by the container."},"replicas":{"type":["integer","null"],"format":"int32","description":"Fixed replica count (for stateful containers or stateless without autoscaling)","minimum":0},"stateful":{"type":"boolean","description":"Whether container is stateful (gets stable ordinals, optional persistent volumes)"}},"additionalProperties":false,"x-readme-ref-name":"Container"}
@@ -1 +1 @@
1
- {"type":"object","description":"Outputs generated by a successfully provisioned Container.","required":["name","status","currentReplicas","desiredReplicas","internalDns","replicas"],"properties":{"currentReplicas":{"type":"integer","format":"int32","description":"Number of current replicas","minimum":0},"desiredReplicas":{"type":"integer","format":"int32","description":"Desired number of replicas","minimum":0},"internalDns":{"type":"string","description":"Internal DNS name (e.g., \"api.svc\")"},"loadBalancerEndpoint":{"oneOf":[{"type":"null"},{"description":"Load balancer endpoint information for DNS management (optional).\nUsed by the DNS controller to create custom domain mappings.","type":"object","required":["dnsName"],"properties":{"dnsName":{"type":"string","description":"The DNS name of the load balancer endpoint (e.g., ALB DNS, API Gateway domain)."},"hostedZoneId":{"type":["string","null"],"description":"AWS Route53 hosted zone ID (for ALIAS records). Only set on AWS."}},"x-readme-ref-name":"LoadBalancerEndpoint"}]},"name":{"type":"string","description":"Container name in the managed container backend"},"replicas":{"type":"array","items":{"type":"object","description":"Status of a single container replica.","required":["replicaId","healthy"],"properties":{"containerIp":{"type":["string","null"],"description":"Container IP address (for service discovery)"},"healthy":{"type":"boolean","description":"Whether the replica is healthy"},"machineId":{"type":["string","null"],"description":"Machine ID the replica is running on"},"ordinal":{"type":["integer","null"],"format":"int32","description":"Ordinal (for stateful containers)","minimum":0},"replicaId":{"type":"string","description":"Replica ID (e.g., \"api-0\", \"api-1\")"}},"x-readme-ref-name":"ReplicaStatus"},"description":"Status of each replica"},"status":{"description":"Current container status","type":"string","enum":["pending","running","stopped","failing"],"x-readme-ref-name":"ContainerStatus"},"url":{"type":["string","null"],"description":"Public URL (if exposed publicly)"}},"x-readme-ref-name":"ContainerOutputs"}
1
+ {"type":"object","description":"Outputs generated by a successfully provisioned Container.","required":["name","status","currentReplicas","desiredReplicas","internalDns","replicas"],"properties":{"currentReplicas":{"type":"integer","format":"int32","description":"Number of current replicas","minimum":0},"desiredReplicas":{"type":"integer","format":"int32","description":"Desired number of replicas","minimum":0},"internalDns":{"type":"string","description":"Internal DNS name (e.g., \"api.svc\")"},"name":{"type":"string","description":"Container name in the managed container backend"},"publicEndpoints":{"type":"object","description":"Public endpoints resolved for this container.","additionalProperties":{"type":"object","description":"Runtime-resolved public endpoint metadata.","required":["url","host"],"properties":{"host":{"type":"string","description":"Hostname for this endpoint."},"loadBalancerEndpoint":{"oneOf":[{"type":"null"},{"description":"Load balancer endpoint information for DNS management.","type":"object","required":["dnsName"],"properties":{"dnsName":{"type":"string","description":"The DNS name of the load balancer endpoint (e.g., ALB DNS, API Gateway domain)."},"hostedZoneId":{"type":["string","null"],"description":"AWS Route53 hosted zone ID (for ALIAS records). Only set on AWS."}},"x-readme-ref-name":"LoadBalancerEndpoint"}]},"url":{"type":"string","description":"Base URL for this endpoint."},"wildcardHost":{"type":["string","null"],"description":"Wildcard hostname routed to this endpoint, when configured."}},"x-readme-ref-name":"PublicEndpointOutput"},"propertyNames":{"type":"string"}},"replicas":{"type":"array","items":{"type":"object","description":"Status of a single container replica.","required":["replicaId","healthy"],"properties":{"containerIp":{"type":["string","null"],"description":"Container IP address (for service discovery)"},"healthy":{"type":"boolean","description":"Whether the replica is healthy"},"machineId":{"type":["string","null"],"description":"Machine ID the replica is running on"},"ordinal":{"type":["integer","null"],"format":"int32","description":"Ordinal (for stateful containers)","minimum":0},"replicaId":{"type":"string","description":"Replica ID (e.g., \"api-0\", \"api-1\")"}},"x-readme-ref-name":"ReplicaStatus"},"description":"Status of each replica"},"status":{"description":"Current container status","type":"string","enum":["pending","running","stopped","failing"],"x-readme-ref-name":"ContainerStatus"}},"x-readme-ref-name":"ContainerOutputs"}
@@ -1 +1 @@
1
- {"type":"object","description":"Container port configuration.","required":["port"],"properties":{"expose":{"oneOf":[{"type":"null"},{"description":"Optional exposure protocol (if None, port is internal-only)","type":"string","enum":["http","tcp"],"x-readme-ref-name":"ExposeProtocol"}]},"port":{"type":"integer","format":"int32","description":"Port number","minimum":0}},"x-readme-ref-name":"ContainerPort"}
1
+ {"type":"object","description":"Container port configuration.","required":["port"],"properties":{"port":{"type":"integer","format":"int32","description":"Port number","minimum":0}},"x-readme-ref-name":"ContainerPort"}
@@ -1 +1 @@
1
- {"type":"object","required":["id","links","permissions","code"],"properties":{"cluster":{"type":["string","null"],"description":"ComputeCluster resource ID that this daemon runs on for Horizon-backed\ncloud platforms. Kubernetes and Local runtimes ignore this field."},"code":{"oneOf":[{"type":"object","required":["image","type"],"properties":{"image":{"type":"string"},"type":{"type":"string","enum":["image"]}}},{"type":"object","required":["src","toolchain","type"],"properties":{"src":{"type":"string"},"toolchain":{"oneOf":[{"type":"object","description":"Rust with Cargo build system","required":["binaryName","type"],"properties":{"binaryName":{"type":"string","description":"Name of the binary to build and run"},"type":{"type":"string","enum":["rust"]}}},{"type":"object","description":"TypeScript/JavaScript compiled to single executable with Bun","required":["type"],"properties":{"binaryName":{"type":["string","null"],"description":"Name of the compiled binary (defaults to package.json name if not specified)"},"type":{"type":"string","enum":["typescript"]}}},{"type":"object","description":"Docker build from Dockerfile","required":["type"],"properties":{"buildArgs":{"type":["object","null"],"description":"Build arguments for docker build","additionalProperties":{"type":"string"},"propertyNames":{"type":"string"}},"dockerfile":{"type":["string","null"],"description":"Dockerfile path relative to src (default: \"Dockerfile\")"},"target":{"type":["string","null"],"description":"Multi-stage build target"},"type":{"type":"string","enum":["docker"]}}}],"description":"Configuration for different programming language toolchains.\nEach toolchain provides type-safe build configuration and auto-detection capabilities.","x-readme-ref-name":"ToolchainConfig"},"type":{"type":"string","enum":["source"]}}}],"x-readme-ref-name":"DaemonCode"},"command":{"type":["array","null"],"items":{"type":"string"},"description":"Command to override the image default."},"commandsEnabled":{"type":"boolean","default":false},"cpu":{"description":"CPU resource requirements for each daemon instance.","type":"object","required":["min","desired"],"properties":{"desired":{"type":"string","description":"Desired resource allocation (used by scheduler)"},"min":{"type":"string","description":"Minimum resource allocation"}},"x-readme-ref-name":"ResourceSpec"},"environment":{"type":"object","additionalProperties":{"type":"string"},"propertyNames":{"type":"string"}},"id":{"type":"string"},"links":{"type":"array","items":{"type":"object","description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility.","required":["type","id"],"properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior.","examples":["worker","storage","queue","redis","postgres"],"x-readme-ref-name":"ResourceType"}},"x-readme-ref-name":"ResourceRef"}},"memory":{"description":"Memory resource requirements for each daemon instance.","type":"object","required":["min","desired"],"properties":{"desired":{"type":"string","description":"Desired resource allocation (used by scheduler)"},"min":{"type":"string","description":"Minimum resource allocation"}},"x-readme-ref-name":"ResourceSpec"},"permissions":{"type":"string"},"pool":{"type":["string","null"],"description":"Capacity group/pool to run on for backends that expose machine pools."}},"additionalProperties":false,"x-readme-ref-name":"Daemon"}
1
+ {"type":"object","required":["id","links","publicEndpoints","permissions","code"],"properties":{"cluster":{"type":["string","null"],"description":"ComputeCluster resource ID that this daemon runs on for managed cloud\ncompute backends. Kubernetes and Local runtimes ignore this field."},"code":{"oneOf":[{"type":"object","required":["image","type"],"properties":{"image":{"type":"string"},"type":{"type":"string","enum":["image"]}}},{"type":"object","required":["src","toolchain","type"],"properties":{"src":{"type":"string"},"toolchain":{"oneOf":[{"type":"object","description":"Rust with Cargo build system","required":["binaryName","type"],"properties":{"binaryName":{"type":"string","description":"Name of the binary to build and run"},"type":{"type":"string","enum":["rust"]}}},{"type":"object","description":"TypeScript/JavaScript compiled to single executable with Bun","required":["type"],"properties":{"binaryName":{"type":["string","null"],"description":"Name of the compiled binary (defaults to package.json name if not specified)"},"type":{"type":"string","enum":["typescript"]}}},{"type":"object","description":"Docker build from Dockerfile","required":["type"],"properties":{"buildArgs":{"type":["object","null"],"description":"Build arguments for docker build","additionalProperties":{"type":"string"},"propertyNames":{"type":"string"}},"dockerfile":{"type":["string","null"],"description":"Dockerfile path relative to src (default: \"Dockerfile\")"},"target":{"type":["string","null"],"description":"Multi-stage build target"},"type":{"type":"string","enum":["docker"]}}}],"description":"Configuration for different programming language toolchains.\nEach toolchain provides type-safe build configuration and auto-detection capabilities.","x-readme-ref-name":"ToolchainConfig"},"type":{"type":"string","enum":["source"]}}}],"x-readme-ref-name":"DaemonCode"},"command":{"type":["array","null"],"items":{"type":"string"},"description":"Command to override the image default."},"commandsEnabled":{"type":"boolean","default":false},"cpu":{"description":"CPU resource requirements for each daemon instance.","type":"object","required":["min","desired"],"properties":{"desired":{"type":"string","description":"Desired resource allocation (used by scheduler)"},"min":{"type":"string","description":"Minimum resource allocation"}},"x-readme-ref-name":"ResourceSpec"},"environment":{"type":"object","additionalProperties":{"type":"string"},"propertyNames":{"type":"string"}},"healthCheck":{"oneOf":[{"type":"null"},{"description":"HTTP health check for public daemon endpoint load balancers.","type":"object","properties":{"failureThreshold":{"type":"integer","format":"int32","description":"Number of consecutive failures before marking replica unhealthy","minimum":0},"method":{"type":"string","description":"HTTP method to use for health check"},"path":{"type":"string","description":"HTTP endpoint path to check (e.g., \"/health\", \"/ready\")"},"port":{"type":["integer","null"],"format":"int32","description":"Port to check (defaults to container port if not specified)","minimum":0},"timeoutSeconds":{"type":"integer","format":"int32","description":"Request timeout in seconds (1-5)","minimum":0}},"x-readme-ref-name":"HealthCheck"}]},"id":{"type":"string"},"links":{"type":"array","items":{"type":"object","description":"New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility.","required":["type","id"],"properties":{"id":{"type":"string"},"type":{"type":"string","description":"Resource type identifier that determines the specific kind of resource. This field is used for polymorphic deserialization and resource-specific behavior.","examples":["worker","storage","queue","redis","postgres"],"x-readme-ref-name":"ResourceType"}},"x-readme-ref-name":"ResourceRef"}},"memory":{"description":"Memory resource requirements for each daemon instance.","type":"object","required":["min","desired"],"properties":{"desired":{"type":"string","description":"Desired resource allocation (used by scheduler)"},"min":{"type":"string","description":"Minimum resource allocation"}},"x-readme-ref-name":"ResourceSpec"},"permissions":{"type":"string"},"pool":{"type":["string","null"],"description":"Capacity group/pool to run on for backends that expose machine pools."},"publicEndpoints":{"type":"array","items":{"type":"object","description":"Public endpoint configuration for port-backed workload resources.","required":["name","port","protocol"],"properties":{"hostLabel":{"type":["string","null"],"description":"Optional DNS label override for generated endpoint hostnames."},"name":{"type":"string","description":"Endpoint name within the resource."},"port":{"type":"integer","format":"int32","description":"Workload port served by the public endpoint.","minimum":0},"protocol":{"description":"Public protocol.","type":"string","enum":["http","tcp"],"x-readme-ref-name":"ExposeProtocol"},"wildcardSubdomains":{"type":"boolean","description":"Whether to route wildcard subdomains to this endpoint."}},"x-readme-ref-name":"PublicEndpoint"},"description":"Public endpoints exposed by the daemon."},"runtime":{"oneOf":[{"type":"null"},{"description":"Optional backend runtime settings for trusted daemons.\n\nThese settings are intended for daemon-style infrastructure that must\noperate on the host. Backends that do not support a setting may reject\nit during provisioning.","type":"object","properties":{"mounts":{"type":"array","items":{"type":"object","required":["source","target"],"properties":{"options":{"type":["string","null"],"description":"Optional mount options understood by the backend runtime."},"source":{"type":"string","description":"Absolute host path to mount into the daemon container."},"target":{"type":"string","description":"Absolute container path where the source is mounted."}},"additionalProperties":false,"x-readme-ref-name":"DaemonRuntimeMount"},"description":"Host mounts exposed to the daemon container."},"networkMode":{"type":["string","null"],"description":"Network mode. Supported values are `host` and `appnet`."},"pidNamespace":{"type":["string","null"],"description":"Process namespace mode. Supported values are `host` and `private`."},"privileged":{"type":["boolean","null"],"description":"Run the daemon container with elevated host capabilities."},"user":{"type":["string","null"],"description":"Runtime user, as a numeric uid or uid:gid string."}},"additionalProperties":false,"x-readme-ref-name":"DaemonRuntime"}]}},"additionalProperties":false,"x-readme-ref-name":"Daemon"}
@@ -1 +1 @@
1
- {"type":"object","required":["daemonName","running"],"properties":{"daemonName":{"type":"string"},"running":{"type":"boolean"}},"x-readme-ref-name":"DaemonOutputs"}
1
+ {"type":"object","required":["daemonName","running"],"properties":{"daemonName":{"type":"string"},"publicEndpoints":{"type":"object","additionalProperties":{"type":"object","description":"Runtime-resolved public endpoint metadata.","required":["url","host"],"properties":{"host":{"type":"string","description":"Hostname for this endpoint."},"loadBalancerEndpoint":{"oneOf":[{"type":"null"},{"description":"Load balancer endpoint information for DNS management.","type":"object","required":["dnsName"],"properties":{"dnsName":{"type":"string","description":"The DNS name of the load balancer endpoint (e.g., ALB DNS, API Gateway domain)."},"hostedZoneId":{"type":["string","null"],"description":"AWS Route53 hosted zone ID (for ALIAS records). Only set on AWS."}},"x-readme-ref-name":"LoadBalancerEndpoint"}]},"url":{"type":"string","description":"Base URL for this endpoint."},"wildcardHost":{"type":["string","null"],"description":"Wildcard hostname routed to this endpoint, when configured."}},"x-readme-ref-name":"PublicEndpointOutput"},"propertyNames":{"type":"string"}},"running":{"type":"boolean"}},"x-readme-ref-name":"DaemonOutputs"}
@@ -0,0 +1 @@
1
+ {"type":"object","properties":{"mounts":{"type":"array","items":{"type":"object","required":["source","target"],"properties":{"options":{"type":["string","null"],"description":"Optional mount options understood by the backend runtime."},"source":{"type":"string","description":"Absolute host path to mount into the daemon container."},"target":{"type":"string","description":"Absolute container path where the source is mounted."}},"additionalProperties":false,"x-readme-ref-name":"DaemonRuntimeMount"},"description":"Host mounts exposed to the daemon container."},"networkMode":{"type":["string","null"],"description":"Network mode. Supported values are `host` and `appnet`."},"pidNamespace":{"type":["string","null"],"description":"Process namespace mode. Supported values are `host` and `private`."},"privileged":{"type":["boolean","null"],"description":"Run the daemon container with elevated host capabilities."},"user":{"type":["string","null"],"description":"Runtime user, as a numeric uid or uid:gid string."}},"additionalProperties":false,"x-readme-ref-name":"DaemonRuntime"}
@@ -0,0 +1 @@
1
+ {"type":"object","required":["source","target"],"properties":{"options":{"type":["string","null"],"description":"Optional mount options understood by the backend runtime."},"source":{"type":"string","description":"Absolute host path to mount into the daemon container."},"target":{"type":"string","description":"Absolute container path where the source is mounted."}},"additionalProperties":false,"x-readme-ref-name":"DaemonRuntimeMount"}
@@ -1 +1 @@
1
- {"type":"string","description":"Protocol for exposed ports.","enum":["http","tcp"],"x-readme-ref-name":"ExposeProtocol"}
1
+ {"type":"string","description":"Protocol for public workload endpoints.","enum":["http","tcp"],"x-readme-ref-name":"ExposeProtocol"}
@@ -0,0 +1 @@
1
+ {"type":"object","description":"GPU specification for a capacity group.","required":["type","count"],"properties":{"count":{"type":"integer","format":"int32","description":"Number of GPUs per machine","minimum":0},"type":{"type":"string","description":"GPU type identifier (e.g., \"nvidia-a100\", \"nvidia-t4\")"}},"x-readme-ref-name":"GpuSpec"}
@@ -0,0 +1 @@
1
+ {"type":"object","description":"Machine resource profile for a capacity group.\n\nRepresents the hardware specifications for machines in a capacity group.\nThese are hardware totals (what the instance type advertises), not allocatable\ncapacity. The managed container scheduler internally subtracts system reserves for planning.","required":["cpu","memoryBytes","ephemeralStorageBytes"],"properties":{"architecture":{"oneOf":[{"type":"null"},{"description":"CPU architecture required or provided by this machine profile.","type":"string","enum":["arm64","x86_64"],"x-readme-ref-name":"Architecture"}]},"cpu":{"type":"string","description":"CPU cores per machine (hardware total) - stored as string to preserve precision\n(e.g., \"8.0\", \"4.5\")"},"ephemeralStorageBytes":{"type":"integer","format":"int64","description":"Ephemeral storage in bytes (hardware total)","minimum":0},"gpu":{"oneOf":[{"type":"null"},{"description":"GPU specification (optional)","type":"object","required":["type","count"],"properties":{"count":{"type":"integer","format":"int32","description":"Number of GPUs per machine","minimum":0},"type":{"type":"string","description":"GPU type identifier (e.g., \"nvidia-a100\", \"nvidia-t4\")"}},"x-readme-ref-name":"GpuSpec"}]},"memoryBytes":{"type":"integer","format":"int64","description":"Memory in bytes (hardware total)","minimum":0}},"x-readme-ref-name":"MachineProfile"}
@@ -0,0 +1 @@
1
+ {"type":"object","description":"Public endpoint configuration for port-backed workload resources.","required":["name","port","protocol"],"properties":{"hostLabel":{"type":["string","null"],"description":"Optional DNS label override for generated endpoint hostnames."},"name":{"type":"string","description":"Endpoint name within the resource."},"port":{"type":"integer","format":"int32","description":"Workload port served by the public endpoint.","minimum":0},"protocol":{"description":"Public protocol.","type":"string","enum":["http","tcp"],"x-readme-ref-name":"ExposeProtocol"},"wildcardSubdomains":{"type":"boolean","description":"Whether to route wildcard subdomains to this endpoint."}},"x-readme-ref-name":"PublicEndpoint"}
@@ -0,0 +1 @@
1
+ {"type":"object","description":"Runtime-resolved public endpoint metadata.","required":["url","host"],"properties":{"host":{"type":"string","description":"Hostname for this endpoint."},"loadBalancerEndpoint":{"oneOf":[{"type":"null"},{"description":"Load balancer endpoint information for DNS management.","type":"object","required":["dnsName"],"properties":{"dnsName":{"type":"string","description":"The DNS name of the load balancer endpoint (e.g., ALB DNS, API Gateway domain)."},"hostedZoneId":{"type":["string","null"],"description":"AWS Route53 hosted zone ID (for ALIAS records). Only set on AWS."}},"x-readme-ref-name":"LoadBalancerEndpoint"}]},"url":{"type":"string","description":"Base URL for this endpoint."},"wildcardHost":{"type":["string","null"],"description":"Wildcard hostname routed to this endpoint, when configured."}},"x-readme-ref-name":"PublicEndpointOutput"}