@alienplatform/sdk 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.
@@ -1,5 +1,5 @@
1
1
 
2
- > @alienplatform/sdk@1.8.0 build /home/runner/work/alien/alien/packages/sdk
2
+ > @alienplatform/sdk@1.10.0 build /home/runner/work/alien/alien/packages/sdk
3
3
  > tsdown && tsc --emitDeclarationOnly
4
4
 
5
5
  ℹ tsdown v0.13.5 powered by rolldown v1.0.3
@@ -12,8 +12,8 @@
12
12
  - For the "define". Invalid key: Expected never but received "define". 
13
13
  ℹ dist/index.js 1338.28 kB
14
14
  ℹ dist/commands/index.js  12.03 kB │ gzip: 3.11 kB
15
- ℹ dist/dist.js  333.56 kB │ gzip: 62.38 kB
16
- ℹ 3 files, total: 1683.87 kB
15
+ ℹ dist/dist.js  350.34 kB │ gzip: 65.66 kB
16
+ ℹ 3 files, total: 1700.65 kB
17
17
  ../../node_modules/.pnpm/@protobufjs+inquire@1.1.0/node_modules/@protobufjs/inquire/index.js (12:18) [EVAL] Use of direct `eval` function is strongly discouraged as it poses security risks and may cause issues with minification.
18
18
  â•­─[ ../../node_modules/.pnpm/@protobufjs+inquire@1.1.0/node_modules/@protobufjs/inquire/index.js:12:19 ]
19
19
  │
@@ -24,4 +24,4 @@
24
24
   │ Help: Consider using indirect eval. For more information, check the documentation: https://rolldown.rs/guide/troubleshooting#avoiding-direct-eval
25
25
  ────╯
26
26
 
27
- ✔ Build complete in 271ms
27
+ ✔ Build complete in 304ms
package/dist/dist.js CHANGED
@@ -4142,6 +4142,14 @@ const AlienEventSchema = union([
4142
4142
  * Generated by Kubb (https://kubb.dev/).
4143
4143
  * Do not edit manually.
4144
4144
  */
4145
+ /**
4146
+ * @description CPU architecture.
4147
+ */
4148
+ const ArchitectureSchema = _enum(["arm64", "x86_64"]).describe("CPU architecture.");
4149
+ /**
4150
+ * Generated by Kubb (https://kubb.dev/).
4151
+ * Do not edit manually.
4152
+ */
4145
4153
  const HeartbeatCollectionIssueReasonSchema = _enum([
4146
4154
  "forbidden",
4147
4155
  "not-installed",
@@ -6021,6 +6029,88 @@ _enum([
6021
6029
  * Do not edit manually.
6022
6030
  */
6023
6031
  /**
6032
+ * @description Allowed range and default for a count selected by the installer.
6033
+ */
6034
+ const ComputeChoiceRangeSchema = object({
6035
+ "default": int().min(0).describe("Default value recommended when no installer override is supplied."),
6036
+ "max": int().min(0).describe("Highest allowed value."),
6037
+ "min": int().min(0).describe("Lowest allowed value.")
6038
+ }).describe("Allowed range and default for a count selected by the installer.");
6039
+ /**
6040
+ * Generated by Kubb (https://kubb.dev/).
6041
+ * Do not edit manually.
6042
+ */
6043
+ /**
6044
+ * @description Source-declared scale policy for a capacity group.
6045
+ */
6046
+ const CapacityGroupScalePolicySchema = union([object({
6047
+ get "machines"() {
6048
+ return ComputeChoiceRangeSchema.describe("Allowed range and default for a count selected by the installer.");
6049
+ },
6050
+ "type": _enum(["fixed"])
6051
+ }), object({
6052
+ get "max"() {
6053
+ return ComputeChoiceRangeSchema.describe("Allowed range and default for a count selected by the installer.");
6054
+ },
6055
+ get "min"() {
6056
+ return ComputeChoiceRangeSchema.describe("Allowed range and default for a count selected by the installer.");
6057
+ },
6058
+ "type": _enum(["autoscale"])
6059
+ })]).describe("Source-declared scale policy for a capacity group.");
6060
+ /**
6061
+ * Generated by Kubb (https://kubb.dev/).
6062
+ * Do not edit manually.
6063
+ */
6064
+ /**
6065
+ * @description GPU specification for a capacity group.
6066
+ */
6067
+ const GpuSpecSchema = object({
6068
+ "count": int().min(0).describe("Number of GPUs per machine"),
6069
+ "type": string().describe("GPU type identifier (e.g., \"nvidia-a100\", \"nvidia-t4\")")
6070
+ }).describe("GPU specification for a capacity group.");
6071
+ /**
6072
+ * Generated by Kubb (https://kubb.dev/).
6073
+ * Do not edit manually.
6074
+ */
6075
+ /**
6076
+ * @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.
6077
+ */
6078
+ const MachineProfileSchema = object({
6079
+ get "architecture"() {
6080
+ return union([ArchitectureSchema, _null()]).optional();
6081
+ },
6082
+ "cpu": string().describe("CPU cores per machine (hardware total) - stored as string to preserve precision\n(e.g., \"8.0\", \"4.5\")"),
6083
+ "ephemeralStorageBytes": int().min(0).describe("Ephemeral storage in bytes (hardware total)"),
6084
+ get "gpu"() {
6085
+ return union([GpuSpecSchema, _null()]).optional();
6086
+ },
6087
+ "memoryBytes": int().min(0).describe("Memory in bytes (hardware total)")
6088
+ }).describe("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.");
6089
+ /**
6090
+ * Generated by Kubb (https://kubb.dev/).
6091
+ * Do not edit manually.
6092
+ */
6093
+ /**
6094
+ * @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).
6095
+ */
6096
+ const CapacityGroupSchema = object({
6097
+ "groupId": string().describe("Unique identifier for this capacity group (must be lowercase alphanumeric with hyphens)"),
6098
+ "instanceType": string().describe("Provider machine selected at deployment time.\n`alien.ts` should declare portable requirements; preflight materialization\nfills this field from `StackSettings.compute`.").nullish(),
6099
+ "maxSize": int().min(0).describe("Maximum number of machines (must be ≤ 10)"),
6100
+ "minSize": int().min(0).describe("Minimum number of machines (can be 0 for scale-to-zero)"),
6101
+ "nestedVirtualization": boolean().describe("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.").nullish(),
6102
+ get "profile"() {
6103
+ return union([MachineProfileSchema, _null()]).optional();
6104
+ },
6105
+ get "scalePolicy"() {
6106
+ return union([CapacityGroupScalePolicySchema, _null()]).optional();
6107
+ }
6108
+ }).describe("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).");
6109
+ /**
6110
+ * Generated by Kubb (https://kubb.dev/).
6111
+ * Do not edit manually.
6112
+ */
6113
+ /**
6024
6114
  * @description Command response from deployment
6025
6115
  */
6026
6116
  const CommandResponseSchema = union([object({
@@ -6119,6 +6209,38 @@ const ComputeClusterHeartbeatDataSchema = union([
6119
6209
  lazy(() => AzureComputeClusterHeartbeatDataSchema).and(object({ "backend": _enum(["azure"]) })),
6120
6210
  lazy(() => LocalComputeClusterHeartbeatDataSchema).and(object({ "backend": _enum(["local"]) }))
6121
6211
  ]);
6212
+ object({
6213
+ get "capacityGroups"() {
6214
+ return array(CapacityGroupSchema.describe("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).")).describe("Capacity groups defining the machine pools for this cluster.\nEach group becomes a separate ASG/MIG/VMSS.");
6215
+ },
6216
+ "containerCidr": string().describe("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.").nullish(),
6217
+ "id": string().describe("Unique identifier for the container cluster.\nMust contain only alphanumeric characters, hyphens, and underscores.")
6218
+ }).describe("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```");
6219
+ /**
6220
+ * Generated by Kubb (https://kubb.dev/).
6221
+ * Do not edit manually.
6222
+ */
6223
+ /**
6224
+ * @description User-selected deployment settings for one compute pool.
6225
+ */
6226
+ const ComputePoolSelectionSchema = union([object({
6227
+ "machine": string().describe("Provider machine type selected for this deployment.").nullish(),
6228
+ "machines": int().min(0).describe("Number of machines to run."),
6229
+ "mode": _enum(["fixed"])
6230
+ }), object({
6231
+ "machine": string().describe("Provider machine type selected for this deployment.").nullish(),
6232
+ "max": int().min(0).describe("Maximum machine count."),
6233
+ "min": int().min(0).describe("Minimum machine count."),
6234
+ "mode": _enum(["autoscale"])
6235
+ })]).describe("User-selected deployment settings for one compute pool.");
6236
+ /**
6237
+ * Generated by Kubb (https://kubb.dev/).
6238
+ * Do not edit manually.
6239
+ */
6240
+ /**
6241
+ * @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.
6242
+ */
6243
+ const ComputeSettingsSchema = object({ "pools": optional(object({}).catchall(lazy(() => ComputePoolSelectionSchema).describe("User-selected deployment settings for one compute pool.")).describe("Selected compute choices keyed by pool ID.")) }).describe("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.");
6122
6244
  /**
6123
6245
  * Generated by Kubb (https://kubb.dev/).
6124
6246
  * Do not edit manually.
@@ -6467,6 +6589,21 @@ const LoadBalancerEndpointSchema = object({
6467
6589
  * Do not edit manually.
6468
6590
  */
6469
6591
  /**
6592
+ * @description Runtime-resolved public endpoint metadata.
6593
+ */
6594
+ const PublicEndpointOutputSchema = object({
6595
+ "host": string().describe("Hostname for this endpoint."),
6596
+ get "loadBalancerEndpoint"() {
6597
+ return union([LoadBalancerEndpointSchema, _null()]).optional();
6598
+ },
6599
+ "url": string().describe("Base URL for this endpoint."),
6600
+ "wildcardHost": string().describe("Wildcard hostname routed to this endpoint, when configured.").nullish()
6601
+ }).describe("Runtime-resolved public endpoint metadata.");
6602
+ /**
6603
+ * Generated by Kubb (https://kubb.dev/).
6604
+ * Do not edit manually.
6605
+ */
6606
+ /**
6470
6607
  * @description Status of a single container replica.
6471
6608
  */
6472
6609
  const ReplicaStatusSchema = object({
@@ -6480,39 +6617,23 @@ object({
6480
6617
  "currentReplicas": int().min(0).describe("Number of current replicas"),
6481
6618
  "desiredReplicas": int().min(0).describe("Desired number of replicas"),
6482
6619
  "internalDns": string().describe("Internal DNS name (e.g., \"api.svc\")"),
6483
- get "loadBalancerEndpoint"() {
6484
- return union([LoadBalancerEndpointSchema, _null()]).optional();
6485
- },
6486
6620
  "name": string().describe("Container name in the managed container backend"),
6621
+ "publicEndpoints": optional(object({}).catchall(lazy(() => PublicEndpointOutputSchema).describe("Runtime-resolved public endpoint metadata.")).describe("Public endpoints resolved for this container.")),
6487
6622
  get "replicas"() {
6488
6623
  return array(ReplicaStatusSchema.describe("Status of a single container replica.")).describe("Status of each replica");
6489
6624
  },
6490
6625
  get "status"() {
6491
6626
  return ContainerStatusSchema.describe("Container status in the managed container backend.");
6492
- },
6493
- "url": string().describe("Public URL (if exposed publicly)").nullish()
6627
+ }
6494
6628
  }).describe("Outputs generated by a successfully provisioned Container.");
6495
6629
  /**
6496
6630
  * Generated by Kubb (https://kubb.dev/).
6497
6631
  * Do not edit manually.
6498
6632
  */
6499
6633
  /**
6500
- * @description Protocol for exposed ports.
6501
- */
6502
- const ExposeProtocolSchema = _enum(["http", "tcp"]).describe("Protocol for exposed ports.");
6503
- /**
6504
- * Generated by Kubb (https://kubb.dev/).
6505
- * Do not edit manually.
6506
- */
6507
- /**
6508
6634
  * @description Container port configuration.
6509
6635
  */
6510
- const ContainerPortSchema = object({
6511
- get "expose"() {
6512
- return union([ExposeProtocolSchema, _null()]).optional();
6513
- },
6514
- "port": int().min(0).describe("Port number")
6515
- }).describe("Container port configuration.");
6636
+ const ContainerPortSchema = object({ "port": int().min(0).describe("Port number") }).describe("Container port configuration.");
6516
6637
  /**
6517
6638
  * Generated by Kubb (https://kubb.dev/).
6518
6639
  * Do not edit manually.
@@ -6543,6 +6664,30 @@ const PersistentStorageSchema = object({
6543
6664
  * Do not edit manually.
6544
6665
  */
6545
6666
  /**
6667
+ * @description Protocol for public workload endpoints.
6668
+ */
6669
+ const ExposeProtocolSchema = _enum(["http", "tcp"]).describe("Protocol for public workload endpoints.");
6670
+ /**
6671
+ * Generated by Kubb (https://kubb.dev/).
6672
+ * Do not edit manually.
6673
+ */
6674
+ /**
6675
+ * @description Public endpoint configuration for port-backed workload resources.
6676
+ */
6677
+ const PublicEndpointSchema = object({
6678
+ "hostLabel": string().describe("Optional DNS label override for generated endpoint hostnames.").nullish(),
6679
+ "name": string().describe("Endpoint name within the resource."),
6680
+ "port": int().min(0).describe("Workload port served by the public endpoint."),
6681
+ get "protocol"() {
6682
+ return ExposeProtocolSchema.describe("Protocol for public workload endpoints.");
6683
+ },
6684
+ "wildcardSubdomains": optional(boolean().describe("Whether to route wildcard subdomains to this endpoint."))
6685
+ }).describe("Public endpoint configuration for port-backed workload resources.");
6686
+ /**
6687
+ * Generated by Kubb (https://kubb.dev/).
6688
+ * Do not edit manually.
6689
+ */
6690
+ /**
6546
6691
  * @description Resource specification with min/desired values.
6547
6692
  */
6548
6693
  const ResourceSpecSchema = object({
@@ -6582,11 +6727,14 @@ object({
6582
6727
  },
6583
6728
  "pool": string().describe("Capacity group to run on (must exist in the cluster)\nIf not specified, containers are scheduled to any available group.").nullish(),
6584
6729
  get "ports"() {
6585
- return array(ContainerPortSchema.describe("Container port configuration.")).describe("Container ports to expose (at least one required)");
6730
+ return array(ContainerPortSchema.describe("Container port configuration.")).describe("Internal container ports (at least one required).");
6731
+ },
6732
+ get "publicEndpoints"() {
6733
+ return array(PublicEndpointSchema.describe("Public endpoint configuration for port-backed workload resources.")).describe("Public endpoints exposed by the container.");
6586
6734
  },
6587
6735
  "replicas": int().min(0).describe("Fixed replica count (for stateful containers or stateless without autoscaling)").nullish(),
6588
6736
  "stateful": optional(boolean().describe("Whether container is stateful (gets stable ordinals, optional persistent volumes)"))
6589
- }).describe("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```");
6737
+ }).describe("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```");
6590
6738
  object({
6591
6739
  "command": string().describe("Command name (e.g., \"generate-report\", \"sync-data\")"),
6592
6740
  "deadline": datetime().describe("Optional deadline for command completion").nullish(),
@@ -6784,10 +6932,33 @@ const DaemonHeartbeatDataSchema = union([
6784
6932
  ]);
6785
6933
  object({
6786
6934
  "daemonName": string(),
6935
+ "publicEndpoints": optional(object({}).catchall(lazy(() => PublicEndpointOutputSchema).describe("Runtime-resolved public endpoint metadata."))),
6787
6936
  "running": boolean()
6788
6937
  });
6938
+ /**
6939
+ * Generated by Kubb (https://kubb.dev/).
6940
+ * Do not edit manually.
6941
+ */
6942
+ const DaemonRuntimeMountSchema = object({
6943
+ "options": string().describe("Optional mount options understood by the backend runtime.").nullish(),
6944
+ "source": string().describe("Absolute host path to mount into the daemon container."),
6945
+ "target": string().describe("Absolute container path where the source is mounted.")
6946
+ });
6947
+ /**
6948
+ * Generated by Kubb (https://kubb.dev/).
6949
+ * Do not edit manually.
6950
+ */
6951
+ const DaemonRuntimeSchema = object({
6952
+ get "mounts"() {
6953
+ return array(DaemonRuntimeMountSchema).describe("Host mounts exposed to the daemon container.").optional();
6954
+ },
6955
+ "networkMode": string().describe("Network mode. Supported values are `host` and `appnet`.").nullish(),
6956
+ "pidNamespace": string().describe("Process namespace mode. Supported values are `host` and `private`.").nullish(),
6957
+ "privileged": boolean().describe("Run the daemon container with elevated host capabilities.").nullish(),
6958
+ "user": string().describe("Runtime user, as a numeric uid or uid:gid string.").nullish()
6959
+ });
6789
6960
  object({
6790
- "cluster": string().describe("ComputeCluster resource ID that this daemon runs on for Horizon-backed\ncloud platforms. Kubernetes and Local runtimes ignore this field.").nullish(),
6961
+ "cluster": string().describe("ComputeCluster resource ID that this daemon runs on for managed cloud\ncompute backends. Kubernetes and Local runtimes ignore this field.").nullish(),
6791
6962
  get "code"() {
6792
6963
  return DaemonCodeSchema;
6793
6964
  },
@@ -6797,6 +6968,9 @@ object({
6797
6968
  return ResourceSpecSchema.describe("Resource specification with min/desired values.").optional();
6798
6969
  },
6799
6970
  "environment": optional(object({}).catchall(string())),
6971
+ get "healthCheck"() {
6972
+ return union([HealthCheckSchema, _null()]).optional();
6973
+ },
6800
6974
  "id": string(),
6801
6975
  get "links"() {
6802
6976
  return array(ResourceRefSchema.describe("New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility."));
@@ -6805,7 +6979,13 @@ object({
6805
6979
  return ResourceSpecSchema.describe("Resource specification with min/desired values.").optional();
6806
6980
  },
6807
6981
  "permissions": string(),
6808
- "pool": string().describe("Capacity group/pool to run on for backends that expose machine pools.").nullish()
6982
+ "pool": string().describe("Capacity group/pool to run on for backends that expose machine pools.").nullish(),
6983
+ get "publicEndpoints"() {
6984
+ return array(PublicEndpointSchema.describe("Public endpoint configuration for port-backed workload resources.")).describe("Public endpoints exposed by the daemon.");
6985
+ },
6986
+ get "runtime"() {
6987
+ return union([DaemonRuntimeSchema, _null()]).optional();
6988
+ }
6809
6989
  });
6810
6990
  /**
6811
6991
  * Generated by Kubb (https://kubb.dev/).
@@ -7310,14 +7490,6 @@ const ImportedResourceSchema = object({
7310
7490
  * Do not edit manually.
7311
7491
  */
7312
7492
  /**
7313
- * @description Controls network accessibility of the worker.
7314
- */
7315
- const IngressSchema = _enum(["public", "private"]).describe("Controls network accessibility of the worker.");
7316
- /**
7317
- * Generated by Kubb (https://kubb.dev/).
7318
- * Do not edit manually.
7319
- */
7320
- /**
7321
7493
  * @description Certificate publication or reference mode for Kubernetes public endpoints.
7322
7494
  */
7323
7495
  const KubernetesCertificateModeSchema = union([
@@ -8232,6 +8404,9 @@ const UpdatesModeSchema = _enum(["auto", "approval-required"]).describe("How upd
8232
8404
  * @description User-customizable deployment settings specified at deploy time.\n\nThese settings are provided by the customer via CloudFormation parameters,\nTerraform attributes, CLI flags, or Helm values. They customize how the\ndeployment runs and what capabilities are enabled.\n\n**Key distinction**: StackSettings is user-customizable, while ManagementConfig\nis platform-derived (from the Manager\'s ServiceAccount).
8233
8405
  */
8234
8406
  const StackSettingsSchema = object({
8407
+ get "compute"() {
8408
+ return union([ComputeSettingsSchema, _null()]).optional();
8409
+ },
8235
8410
  get "deploymentModel"() {
8236
8411
  return DeploymentModelSchema.describe("Deployment model: how updates are delivered to the remote environment.").optional();
8237
8412
  },
@@ -8261,6 +8436,7 @@ object({
8261
8436
  },
8262
8437
  "deploymentGroupToken": string().describe("Deployment-group token authorizing the import."),
8263
8438
  "deploymentName": string().describe("User-chosen deployment name. Must be unique within the deployment\ngroup; the manager returns 409 on collision rather than silently\nresolving to an existing deployment. Each setup adapter picks\nthe natural source: CloudFormation defaults to the CFN stack name,\nHelm to `{namespace}/{release}`, Terraform requires an explicit\n`name` attribute on the `alien_deployment` resource."),
8439
+ "inputValues": optional(object({}).catchall(any()).describe("Deployer-provided stack input values collected by generated setup\nsurfaces. Platform-backed managers resolve these into runtime\nenvironment variables before deployment creation; standalone managers\naccept the field for setup package compatibility.")),
8264
8440
  get "managementConfig"() {
8265
8441
  return union([ManagementConfigSchema, _null()]).optional();
8266
8442
  },
@@ -8295,9 +8471,133 @@ object({
8295
8471
  return StackStateSchema.describe("Represents the collective state of all resources in a stack, including platform and pending actions.");
8296
8472
  }
8297
8473
  }).describe("Response body returned after a stack import.");
8474
+ /**
8475
+ * Generated by Kubb (https://kubb.dev/).
8476
+ * Do not edit manually.
8477
+ */
8478
+ /**
8479
+ * @description Stack input default value.
8480
+ */
8481
+ const StackInputDefaultValueSchema = union([
8482
+ object({
8483
+ "type": _enum(["string"]),
8484
+ "value": string().describe("String default.")
8485
+ }),
8486
+ object({
8487
+ "type": _enum(["number"]),
8488
+ "value": string().describe("Number default.")
8489
+ }),
8490
+ object({
8491
+ "type": _enum(["boolean"]),
8492
+ "value": boolean().describe("Boolean default.")
8493
+ }),
8494
+ object({
8495
+ "type": _enum(["stringList"]),
8496
+ "value": array(string()).describe("String list default.")
8497
+ })
8498
+ ]).describe("Stack input default value.");
8499
+ /**
8500
+ * Generated by Kubb (https://kubb.dev/).
8501
+ * Do not edit manually.
8502
+ */
8503
+ /**
8504
+ * @description Environment variable handling for a stack input mapping.
8505
+ */
8506
+ const StackInputEnvironmentVariableTypeSchema = _enum(["plain", "secret"]).describe("Environment variable handling for a stack input mapping.");
8507
+ /**
8508
+ * Generated by Kubb (https://kubb.dev/).
8509
+ * Do not edit manually.
8510
+ */
8511
+ /**
8512
+ * @description How a resolved stack input is injected into runtime environment variables.
8513
+ */
8514
+ const StackInputEnvironmentMappingSchema = object({
8515
+ "name": string().describe("Environment variable name."),
8516
+ "targetResources": array(string()).describe("Target resource IDs or patterns. None means every env-capable resource.").nullish(),
8517
+ get "type"() {
8518
+ return union([StackInputEnvironmentVariableTypeSchema, _null()]).optional();
8519
+ }
8520
+ }).describe("How a resolved stack input is injected into runtime environment variables.");
8521
+ /**
8522
+ * Generated by Kubb (https://kubb.dev/).
8523
+ * Do not edit manually.
8524
+ */
8525
+ /**
8526
+ * @description Primitive stack input kind.
8527
+ */
8528
+ const StackInputKindSchema = _enum([
8529
+ "string",
8530
+ "secret",
8531
+ "number",
8532
+ "integer",
8533
+ "boolean",
8534
+ "enum",
8535
+ "stringList"
8536
+ ]).describe("Primitive stack input kind.");
8537
+ /**
8538
+ * Generated by Kubb (https://kubb.dev/).
8539
+ * Do not edit manually.
8540
+ */
8541
+ /**
8542
+ * @description Who can provide a stack input value.
8543
+ */
8544
+ const StackInputProviderSchema = _enum(["developer", "deployer"]).describe("Who can provide a stack input value.");
8545
+ /**
8546
+ * Generated by Kubb (https://kubb.dev/).
8547
+ * Do not edit manually.
8548
+ */
8549
+ /**
8550
+ * @description Portable stack input validation constraints.
8551
+ */
8552
+ const StackInputValidationSchema = object({
8553
+ "format": string().describe("Semantic format hint such as url.").nullish(),
8554
+ "max": string().describe("Maximum number.").nullish(),
8555
+ "maxItems": int().min(0).describe("Maximum string-list items.").nullish(),
8556
+ "maxLength": int().min(0).describe("Maximum string length.").nullish(),
8557
+ "min": string().describe("Minimum number.").nullish(),
8558
+ "minItems": int().min(0).describe("Minimum string-list items.").nullish(),
8559
+ "minLength": int().min(0).describe("Minimum string length.").nullish(),
8560
+ "pattern": string().describe("Portable whole-value regex pattern.").nullish(),
8561
+ "values": array(string()).describe("Allowed string enum values.").nullish()
8562
+ }).describe("Portable stack input validation constraints.");
8563
+ /**
8564
+ * Generated by Kubb (https://kubb.dev/).
8565
+ * Do not edit manually.
8566
+ */
8567
+ /**
8568
+ * @description Stack input definition serialized into a release stack.
8569
+ */
8570
+ const StackInputDefinitionSchema = object({
8571
+ get "default"() {
8572
+ return union([StackInputDefaultValueSchema, _null()]).optional();
8573
+ },
8574
+ "description": string().describe("Human-facing helper text."),
8575
+ get "env"() {
8576
+ return array(StackInputEnvironmentMappingSchema.describe("How a resolved stack input is injected into runtime environment variables.")).describe("Runtime env-var mappings for v1 input resolution.").optional();
8577
+ },
8578
+ "id": string().describe("Stable input ID used by CLI/API calls."),
8579
+ get "kind"() {
8580
+ return StackInputKindSchema.describe("Primitive stack input kind.");
8581
+ },
8582
+ "label": string().describe("Human-facing field label."),
8583
+ "placeholder": string().describe("Example placeholder shown in UI.").nullish(),
8584
+ get "platforms"() {
8585
+ return array(PlatformSchema.describe("Represents the target cloud platform.")).describe("Platforms where this input applies.").nullish();
8586
+ },
8587
+ get "providedBy"() {
8588
+ return array(StackInputProviderSchema.describe("Who can provide a stack input value.")).describe("Who can provide this value.");
8589
+ },
8590
+ "required": boolean().describe("Whether a resolved value is required before deployment can proceed."),
8591
+ get "validation"() {
8592
+ return union([StackInputValidationSchema, _null()]).optional();
8593
+ }
8594
+ }).describe("Stack input definition serialized into a release stack.");
8298
8595
  union([object({ "external": string().describe("Reference to another stack by ID") }), _enum(["current"])]).describe("Reference to a stack for management permissions");
8299
8596
  object({
8300
8597
  "id": string().describe("Unique identifier for the stack"),
8598
+ get "inputs"() {
8599
+ return array(StackInputDefinitionSchema.describe("Stack input definition serialized into a release stack.")).describe("Input definitions required before setup or deployment can proceed.").optional();
8600
+ },
8301
8601
  get "permissions"() {
8302
8602
  return PermissionsConfigSchema.describe("Combined permissions configuration that contains both profiles and management").optional();
8303
8603
  },
@@ -8393,10 +8693,7 @@ const WorkerCodeSchema = union([object({
8393
8693
  object({
8394
8694
  "commandsPushTarget": string().describe("Push target for commands delivery. Platform-specific:\n- AWS: Lambda function name or ARN\n- GCP: Full Pub/Sub topic path (projects/{project}/topics/{topic})\n- Azure: Service Bus \"{namespace}/{queue}\"").nullish(),
8395
8695
  "identifier": string().describe("The ARN or platform-specific identifier.").nullish(),
8396
- get "loadBalancerEndpoint"() {
8397
- return union([LoadBalancerEndpointSchema, _null()]).optional();
8398
- },
8399
- "url": string().describe("The invocation URL (if applicable, e.g., for public ingress or specific platforms).").nullish(),
8696
+ "publicEndpoints": optional(object({}).catchall(lazy(() => PublicEndpointOutputSchema).describe("Runtime-resolved public endpoint metadata.")).describe("Public endpoints resolved for this worker.")),
8400
8697
  "workerName": string().describe("The platform-specific worker name.")
8401
8698
  }).describe("Outputs generated by a successfully provisioned Worker.");
8402
8699
  /**
@@ -8404,6 +8701,18 @@ object({
8404
8701
  * Do not edit manually.
8405
8702
  */
8406
8703
  /**
8704
+ * @description Public endpoint configuration for Worker resources.
8705
+ */
8706
+ const WorkerPublicEndpointSchema = object({
8707
+ "hostLabel": string().describe("Optional DNS label override for generated endpoint hostnames.").nullish(),
8708
+ "name": string().describe("Endpoint name within the resource."),
8709
+ "wildcardSubdomains": optional(boolean().describe("Whether to route wildcard subdomains to this endpoint."))
8710
+ }).describe("Public endpoint configuration for Worker resources.");
8711
+ /**
8712
+ * Generated by Kubb (https://kubb.dev/).
8713
+ * Do not edit manually.
8714
+ */
8715
+ /**
8407
8716
  * @description Defines what triggers a worker execution.
8408
8717
  */
8409
8718
  const WorkerTriggerSchema = union([
@@ -8433,14 +8742,14 @@ object({
8433
8742
  "concurrencyLimit": int().min(0).describe("Maximum number of concurrent executions allowed for the worker.\nNone means platform default applies.").nullish(),
8434
8743
  "environment": optional(object({}).catchall(string()).describe("Key-value pairs to set as environment variables for the worker.")),
8435
8744
  "id": string().describe("Identifier for the worker. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]).\nMaximum 64 characters."),
8436
- get "ingress"() {
8437
- return IngressSchema.default("private").optional();
8438
- },
8439
8745
  get "links"() {
8440
8746
  return array(ResourceRefSchema.describe("New ResourceRef that works with any resource type.\nThis can eventually replace the enum-based ResourceRef for full extensibility.")).describe("List of resource references this worker depends on.");
8441
8747
  },
8442
8748
  "memoryMb": optional(int().min(0).default(256).describe("Memory allocated to the worker in megabytes (MB).\nDefault: 256\n\nPlatform-specific constraints:\n- **AWS Lambda**: 128–10240 MB in 1 MB increments\n- **GCP Cloud Run**: 128–32768 MB\n- **Azure Container Apps**: fixed CPU/memory pairs — 512, 1024, 1536, 2048, 2560,\n 3072, 3584, 4096 MB. Values below 512 are automatically rounded up at deploy time.")),
8443
8749
  "permissions": string().describe("Permission profile name that defines the permissions granted to this worker.\nThis references a profile defined in the stack's permission definitions."),
8750
+ get "publicEndpoints"() {
8751
+ return array(WorkerPublicEndpointSchema.describe("Public endpoint configuration for Worker resources.")).describe("Public endpoints exposed by this worker.");
8752
+ },
8444
8753
  get "readinessProbe"() {
8445
8754
  return union([ReadinessProbeSchema, _null()]).optional();
8446
8755
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alienplatform/sdk",
3
- "version": "1.8.0",
3
+ "version": "1.10.0",
4
4
  "type": "module",
5
5
  "exports": {
6
6
  ".": {
@@ -50,7 +50,7 @@
50
50
  "protobufjs": "^7.5.3",
51
51
  "ts-pattern": "^5.7.1",
52
52
  "zod": "4.3.2",
53
- "@alienplatform/core": "^1.8.0"
53
+ "@alienplatform/core": "^1.10.0"
54
54
  },
55
55
  "scripts": {
56
56
  "build": "tsdown && tsc --emitDeclarationOnly",