@alienplatform/sdk 3.3.28 → 3.3.29

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 (2) hide show
  1. package/dist/dist.js +1046 -76
  2. package/package.json +4 -4
package/dist/dist.js CHANGED
@@ -2462,6 +2462,138 @@ function handleIntersectionResults(result, left, right) {
2462
2462
  result.value = merged.data;
2463
2463
  return result;
2464
2464
  }
2465
+ const $ZodRecord = /*@__PURE__*/ $constructor("$ZodRecord", (inst, def) => {
2466
+ $ZodType.init(inst, def);
2467
+ const memo = globalConfig.memoizer;
2468
+ memo?.attach(inst);
2469
+ inst._zod.parse = (payload, ctx) => {
2470
+ const input = payload.value;
2471
+ if (!isPlainObject(input)) {
2472
+ payload.issues.push({
2473
+ expected: "record",
2474
+ code: "invalid_type",
2475
+ input,
2476
+ inst
2477
+ });
2478
+ return payload;
2479
+ }
2480
+ const proms = [];
2481
+ const values = def.keyType._zod.values;
2482
+ if (values && !def.partial) {
2483
+ payload.value = memo ? memo.alloc(inst, payload, {}, ctx) : {};
2484
+ const recordKeys = /* @__PURE__ */ new Set();
2485
+ for (const key of values) if (typeof key === "string" || typeof key === "number" || typeof key === "symbol") {
2486
+ recordKeys.add(typeof key === "number" ? key.toString() : key);
2487
+ if (key === "__proto__") continue;
2488
+ const keyResult = def.keyType._zod.run({
2489
+ value: key,
2490
+ issues: []
2491
+ }, ctx);
2492
+ if (keyResult instanceof Promise) throw new Error("Async schemas not supported in object keys currently");
2493
+ if (keyResult.issues.length) {
2494
+ payload.issues.push({
2495
+ code: "invalid_key",
2496
+ origin: "record",
2497
+ issues: keyResult.issues.map((iss) => finalizeIssue(iss, ctx, config())),
2498
+ input: key,
2499
+ path: [key],
2500
+ inst
2501
+ });
2502
+ continue;
2503
+ }
2504
+ const outKey = keyResult.value;
2505
+ if (outKey === "__proto__") continue;
2506
+ const result = def.valueType._zod.run({
2507
+ value: input[key],
2508
+ issues: []
2509
+ }, ctx);
2510
+ if (result instanceof Promise) proms.push(result.then((result) => {
2511
+ if (result.issues.length) payload.issues.push(...prefixIssues(key, result.issues));
2512
+ payload.value[outKey] = result.value;
2513
+ }));
2514
+ else {
2515
+ if (result.issues.length) payload.issues.push(...prefixIssues(key, result.issues));
2516
+ payload.value[outKey] = result.value;
2517
+ }
2518
+ }
2519
+ let unrecognized;
2520
+ for (const key in input) if (!recordKeys.has(key)) {
2521
+ if (def.mode === "loose") {
2522
+ if (key === "__proto__") continue;
2523
+ payload.value[key] = input[key];
2524
+ } else {
2525
+ unrecognized = unrecognized ?? [];
2526
+ unrecognized.push(key);
2527
+ }
2528
+ }
2529
+ if (unrecognized && unrecognized.length > 0) payload.issues.push({
2530
+ code: "unrecognized_keys",
2531
+ input,
2532
+ inst,
2533
+ keys: unrecognized,
2534
+ continue: true
2535
+ });
2536
+ } else {
2537
+ payload.value = memo ? memo.alloc(inst, payload, {}, ctx) : {};
2538
+ let unrecognized;
2539
+ for (const key of Reflect.ownKeys(input)) {
2540
+ if (key === "__proto__") continue;
2541
+ if (!Object.prototype.propertyIsEnumerable.call(input, key)) continue;
2542
+ let keyResult = def.keyType._zod.run({
2543
+ value: key,
2544
+ issues: []
2545
+ }, ctx);
2546
+ if (keyResult instanceof Promise) throw new Error("Async schemas not supported in object keys currently");
2547
+ if (typeof key === "string" && number$1.test(key) && keyResult.issues.length) {
2548
+ const retryResult = def.keyType._zod.run({
2549
+ value: Number(key),
2550
+ issues: []
2551
+ }, ctx);
2552
+ if (retryResult instanceof Promise) throw new Error("Async schemas not supported in object keys currently");
2553
+ if (retryResult.issues.length === 0) keyResult = retryResult;
2554
+ }
2555
+ if (keyResult.issues.length) {
2556
+ if (def.mode === "loose") payload.value[key] = input[key];
2557
+ else if (values) {
2558
+ unrecognized = unrecognized ?? [];
2559
+ unrecognized.push(key);
2560
+ } else payload.issues.push({
2561
+ code: "invalid_key",
2562
+ origin: "record",
2563
+ issues: keyResult.issues.map((iss) => finalizeIssue(iss, ctx, config())),
2564
+ input: key,
2565
+ path: [key],
2566
+ inst
2567
+ });
2568
+ continue;
2569
+ }
2570
+ const outKey = keyResult.value;
2571
+ if (outKey === "__proto__") continue;
2572
+ const result = def.valueType._zod.run({
2573
+ value: input[key],
2574
+ issues: []
2575
+ }, ctx);
2576
+ if (result instanceof Promise) proms.push(result.then((result) => {
2577
+ if (result.issues.length) payload.issues.push(...prefixIssues(key, result.issues));
2578
+ payload.value[outKey] = result.value;
2579
+ }));
2580
+ else {
2581
+ if (result.issues.length) payload.issues.push(...prefixIssues(key, result.issues));
2582
+ payload.value[outKey] = result.value;
2583
+ }
2584
+ }
2585
+ if (unrecognized && unrecognized.length > 0) payload.issues.push({
2586
+ code: "unrecognized_keys",
2587
+ input,
2588
+ inst,
2589
+ keys: unrecognized,
2590
+ continue: true
2591
+ });
2592
+ }
2593
+ if (proms.length) return Promise.all(proms).then(() => payload);
2594
+ return payload;
2595
+ };
2596
+ });
2465
2597
  const $ZodEnum = /*@__PURE__*/ $constructor("$ZodEnum", (inst, def) => {
2466
2598
  $ZodType.init(inst, def);
2467
2599
  const values = getEnumValues(def.entries);
@@ -4153,6 +4285,40 @@ const intersectionProcessor = (schema, ctx, json, params) => {
4153
4285
  json.allOf = allOf;
4154
4286
  ctx.intersections.push(allOf);
4155
4287
  };
4288
+ const recordProcessor = (schema, ctx, _json, params) => {
4289
+ const json = _json;
4290
+ const def = schema._zod.def;
4291
+ json.type = "object";
4292
+ const keyType = def.keyType;
4293
+ const patterns = keyType._zod.bag?.patterns;
4294
+ if (def.mode === "loose" && patterns && patterns.size > 0) {
4295
+ const valueSchema = process(def.valueType, ctx, {
4296
+ ...params,
4297
+ path: [
4298
+ ...params.path,
4299
+ "patternProperties",
4300
+ "*"
4301
+ ]
4302
+ });
4303
+ json.patternProperties = {};
4304
+ for (const pattern of patterns) assignProp(json.patternProperties, pattern.source, valueSchema);
4305
+ } else {
4306
+ if (ctx.target === "draft-07" || ctx.target === "draft-2020-12") json.propertyNames = process(def.keyType, ctx, {
4307
+ ...params,
4308
+ path: [...params.path, "propertyNames"]
4309
+ });
4310
+ json.additionalProperties = process(def.valueType, ctx, {
4311
+ ...params,
4312
+ path: [...params.path, "additionalProperties"]
4313
+ });
4314
+ }
4315
+ const keyValues = keyType._zod.values;
4316
+ const omittableOnInput = ctx.io === "input" && inputOptin(def.valueType) !== void 0;
4317
+ if (keyValues && !def.partial && !omittableOnInput) {
4318
+ const validKeyValues = [...keyValues].filter((v) => typeof v === "string" || typeof v === "number");
4319
+ if (validKeyValues.length > 0) json.required = validKeyValues;
4320
+ }
4321
+ };
4156
4322
  const nullableProcessor = (schema, ctx, json, params) => {
4157
4323
  const def = schema._zod.def;
4158
4324
  const inner = process(def.innerType, ctx, params);
@@ -4950,6 +5116,28 @@ function intersection(left, right) {
4950
5116
  right
4951
5117
  });
4952
5118
  }
5119
+ const ZodRecord = /*@__PURE__*/ $constructor("ZodRecord", (inst, def) => {
5120
+ _ensureDefaultMemoizer();
5121
+ $ZodRecord.init(inst, def);
5122
+ ZodType.init(inst, def);
5123
+ inst._zod.processJSONSchema = (ctx, json, params) => recordProcessor(inst, ctx, json, params);
5124
+ inst.keyType = def.keyType;
5125
+ inst.valueType = def.valueType;
5126
+ });
5127
+ function record(keyType, valueType, params) {
5128
+ if (!valueType || !valueType._zod) return new ZodRecord({
5129
+ type: "record",
5130
+ keyType: string(),
5131
+ valueType: keyType,
5132
+ ...normalizeParams(valueType)
5133
+ });
5134
+ return new ZodRecord({
5135
+ type: "record",
5136
+ keyType,
5137
+ valueType,
5138
+ ...normalizeParams(params)
5139
+ });
5140
+ }
4953
5141
  const ZodEnum = /*@__PURE__*/ $constructor("ZodEnum", (inst, def) => {
4954
5142
  $ZodEnum.init(inst, def);
4955
5143
  ZodType.init(inst, def);
@@ -5164,6 +5352,19 @@ function refine(fn, _params = {}) {
5164
5352
  function superRefine(fn, params) {
5165
5353
  return /* @__PURE__ */ _superRefine(fn, params);
5166
5354
  }
5355
+ function json(params) {
5356
+ const jsonSchema = lazy(() => {
5357
+ return union([
5358
+ string(params),
5359
+ number(),
5360
+ boolean(),
5361
+ _null(),
5362
+ array(jsonSchema),
5363
+ record(string(), jsonSchema)
5364
+ ]);
5365
+ });
5366
+ return jsonSchema;
5367
+ }
5167
5368
  //#endregion
5168
5369
  //#region ../../node_modules/.pnpm/zod@4.5.2/node_modules/zod/v4/classic/iso.js
5169
5370
  function datetime(params) {
@@ -5299,6 +5500,54 @@ function isErrorLike(value) {
5299
5500
  * Do not edit manually.
5300
5501
  */
5301
5502
  /**
5503
+ * @description Reference to a Kubernetes Secret
5504
+ */
5505
+ const SecretReferenceSchema = object({
5506
+ "key": string(),
5507
+ "name": string()
5508
+ }).describe("Reference to a Kubernetes Secret");
5509
+ /**
5510
+ * Generated by Kubb (https://kubb.dev/).
5511
+ * Do not edit manually.
5512
+ */
5513
+ const ValueSchema = json();
5514
+ /**
5515
+ * Generated by Kubb (https://kubb.dev/).
5516
+ * Do not edit manually.
5517
+ */
5518
+ /**
5519
+ * @description Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret
5520
+ */
5521
+ const BindingValueStringSchema = union([
5522
+ lazy(() => ValueSchema),
5523
+ string(),
5524
+ object({ get "secretRef"() {
5525
+ return SecretReferenceSchema.describe("Reference to a Kubernetes Secret");
5526
+ } })
5527
+ ]).describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
5528
+ /**
5529
+ * Generated by Kubb (https://kubb.dev/).
5530
+ * Do not edit manually.
5531
+ */
5532
+ /**
5533
+ * @description Azure Container Registry binding configuration
5534
+ */
5535
+ const AcrArtifactRegistryBindingSchema = object({
5536
+ get "registryName"() {
5537
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
5538
+ },
5539
+ get "repositoryPrefix"() {
5540
+ return union([BindingValueStringSchema, _null()]).optional();
5541
+ },
5542
+ get "resourceGroupName"() {
5543
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
5544
+ }
5545
+ }).describe("Azure Container Registry binding configuration");
5546
+ /**
5547
+ * Generated by Kubb (https://kubb.dev/).
5548
+ * Do not edit manually.
5549
+ */
5550
+ /**
5302
5551
  * @description Canonical error container that provides a structured way to represent errors\nwith rich metadata including error codes, human-readable messages, context,\nand chaining capabilities for error propagation.\n\nThis struct is designed to be both machine-readable and user-friendly,\nsupporting serialization for API responses and detailed error reporting\nin distributed systems.
5303
5552
  */
5304
5553
  const AlienErrorSchema = object({
@@ -5925,6 +6174,84 @@ const ArchitectureSchema = _enum(["arm64", "x86_64"]).describe("CPU architecture
5925
6174
  * Generated by Kubb (https://kubb.dev/).
5926
6175
  * Do not edit manually.
5927
6176
  */
6177
+ /**
6178
+ * @description AWS ECR (Elastic Container Registry) binding configuration
6179
+ */
6180
+ const EcrArtifactRegistryBindingSchema = object({
6181
+ get "pullRoleArn"() {
6182
+ return union([BindingValueStringSchema, _null()]).optional();
6183
+ },
6184
+ get "pushRoleArn"() {
6185
+ return union([BindingValueStringSchema, _null()]).optional();
6186
+ },
6187
+ get "repositoryPrefix"() {
6188
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
6189
+ }
6190
+ }).describe("AWS ECR (Elastic Container Registry) binding configuration");
6191
+ /**
6192
+ * Generated by Kubb (https://kubb.dev/).
6193
+ * Do not edit manually.
6194
+ */
6195
+ /**
6196
+ * @description Google Artifact Registry binding configuration
6197
+ */
6198
+ const GarArtifactRegistryBindingSchema = object({
6199
+ get "pullServiceAccountEmail"() {
6200
+ return union([BindingValueStringSchema, _null()]).optional();
6201
+ },
6202
+ get "pushServiceAccountEmail"() {
6203
+ return union([BindingValueStringSchema, _null()]).optional();
6204
+ },
6205
+ get "repositoryName"() {
6206
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
6207
+ }
6208
+ }).describe("Google Artifact Registry binding configuration");
6209
+ /**
6210
+ * Generated by Kubb (https://kubb.dev/).
6211
+ * Do not edit manually.
6212
+ */
6213
+ /**
6214
+ * @description Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret
6215
+ */
6216
+ const BindingValueOptionStringSchema = union([
6217
+ union([string(), _null()]),
6218
+ lazy(() => ValueSchema),
6219
+ object({ get "secretRef"() {
6220
+ return SecretReferenceSchema.describe("Reference to a Kubernetes Secret");
6221
+ } })
6222
+ ]).describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
6223
+ /**
6224
+ * Generated by Kubb (https://kubb.dev/).
6225
+ * Do not edit manually.
6226
+ */
6227
+ /**
6228
+ * @description Local container registry binding configuration.\n\nThe local registry runs on localhost only and does not require authentication.\nSecurity boundary is the OS process isolation on the customer\'s machine.\nExternal image access is secured by the manager\'s registry proxy (deployment tokens).
6229
+ */
6230
+ const LocalArtifactRegistryBindingSchema = object({
6231
+ get "dataDir"() {
6232
+ return BindingValueOptionStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
6233
+ },
6234
+ get "registryUrl"() {
6235
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
6236
+ }
6237
+ }).describe("Local container registry binding configuration.\n\nThe local registry runs on localhost only and does not require authentication.\nSecurity boundary is the OS process isolation on the customer's machine.\nExternal image access is secured by the manager's registry proxy (deployment tokens).");
6238
+ /**
6239
+ * Generated by Kubb (https://kubb.dev/).
6240
+ * Do not edit manually.
6241
+ */
6242
+ /**
6243
+ * @description Service-type based artifact registry binding that supports multiple registry providers
6244
+ */
6245
+ const ArtifactRegistryBindingSchema = union([
6246
+ lazy(() => EcrArtifactRegistryBindingSchema).and(object({ "service": _enum(["ecr"]) })).describe("AWS ECR (Elastic Container Registry) binding configuration"),
6247
+ lazy(() => AcrArtifactRegistryBindingSchema).and(object({ "service": _enum(["acr"]) })).describe("Azure Container Registry binding configuration"),
6248
+ lazy(() => GarArtifactRegistryBindingSchema).and(object({ "service": _enum(["gar"]) })).describe("Google Artifact Registry binding configuration"),
6249
+ lazy(() => LocalArtifactRegistryBindingSchema).and(object({ "service": _enum(["local"]) })).describe("Local container registry binding configuration.\n\nThe local registry runs on localhost only and does not require authentication.\nSecurity boundary is the OS process isolation on the customer's machine.\nExternal image access is secured by the manager's registry proxy (deployment tokens).")
6250
+ ]).describe("Service-type based artifact registry binding that supports multiple registry providers");
6251
+ /**
6252
+ * Generated by Kubb (https://kubb.dev/).
6253
+ * Do not edit manually.
6254
+ */
5928
6255
  const ArtifactRegistryHeartbeatStatusSchema = object({
5929
6256
  get "collectionIssues"() {
5930
6257
  return array(HeartbeatCollectionIssueSchema);
@@ -6073,6 +6400,44 @@ object({
6073
6400
  * Generated by Kubb (https://kubb.dev/).
6074
6401
  * Do not edit manually.
6075
6402
  */
6403
+ /**
6404
+ * @description Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret
6405
+ */
6406
+ const BindingValueU16Schema = union([
6407
+ int(),
6408
+ lazy(() => ValueSchema),
6409
+ object({ get "secretRef"() {
6410
+ return SecretReferenceSchema.describe("Reference to a Kubernetes Secret");
6411
+ } })
6412
+ ]).describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
6413
+ /**
6414
+ * Generated by Kubb (https://kubb.dev/).
6415
+ * Do not edit manually.
6416
+ */
6417
+ /**
6418
+ * @description AWS Aurora Serverless v2 binding.
6419
+ */
6420
+ const AuroraPostgresBindingSchema = object({
6421
+ get "clusterEndpoint"() {
6422
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
6423
+ },
6424
+ get "database"() {
6425
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
6426
+ },
6427
+ get "passwordSecretArn"() {
6428
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
6429
+ },
6430
+ get "port"() {
6431
+ return BindingValueU16Schema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
6432
+ },
6433
+ get "username"() {
6434
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
6435
+ }
6436
+ }).describe("AWS Aurora Serverless v2 binding.");
6437
+ /**
6438
+ * Generated by Kubb (https://kubb.dev/).
6439
+ * Do not edit manually.
6440
+ */
6076
6441
  const PostgresHeartbeatStatusSchema = object({
6077
6442
  get "collectionIssues"() {
6078
6443
  return array(HeartbeatCollectionIssueSchema);
@@ -6347,6 +6712,7 @@ const AwsComputeClusterHeartbeatDataSchema = object({
6347
6712
  object({
6348
6713
  "clusterId": string().describe("Cluster identifier used by container orchestration."),
6349
6714
  "instanceProfileArn": string().describe("IAM instance profile ARN for cluster machines."),
6715
+ "isolatedInstanceProfileArn": string().describe("Optional isolated node instance profile ARN.").nullish(),
6350
6716
  "securityGroupId": string().describe("Security group ID attached to cluster machines.")
6351
6717
  }).describe("AWS ComputeCluster ImportData.");
6352
6718
  /**
@@ -6358,11 +6724,6 @@ const AwsCustomCertificateConfigSchema = object({ "certificateArn": string() });
6358
6724
  * Generated by Kubb (https://kubb.dev/).
6359
6725
  * Do not edit manually.
6360
6726
  */
6361
- const ValueSchema = any();
6362
- /**
6363
- * Generated by Kubb (https://kubb.dev/).
6364
- * Do not edit manually.
6365
- */
6366
6727
  const ManagedRuntimeEventInvolvedObjectSchema = object({
6367
6728
  get "details"() {
6368
6729
  return union([ValueSchema, _null()]).optional();
@@ -7194,6 +7555,9 @@ object({
7194
7555
  "clusterId": string().describe("Cluster identifier used by the controller."),
7195
7556
  "clusterIdentityPrincipalId": string().describe("AKS cluster identity principal id (system-assigned identity)."),
7196
7557
  "identityId": string().describe("Resource ID of the user-assigned identity attached to cluster VMs."),
7558
+ "isolatedIdentityClientId": string().describe("Optional isolated node identity client ID.").nullish(),
7559
+ "isolatedIdentityId": string().describe("Optional isolated node identity resource ID.").nullish(),
7560
+ "isolatedIdentityPrincipalId": string().describe("Optional isolated node identity principal ID.").nullish(),
7197
7561
  "kubeletIdentityClientId": string().describe("kubelet UAMI client id used by node pools.")
7198
7562
  }).describe("Azure ComputeCluster ImportData — AKS node pool identity / network.");
7199
7563
  /**
@@ -7848,6 +8212,49 @@ const BindingConfigurationGcpBindingSpecSchema = object({
7848
8212
  * Do not edit manually.
7849
8213
  */
7850
8214
  /**
8215
+ * @description Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret
8216
+ */
8217
+ const BindingValueU8Schema = union([
8218
+ int(),
8219
+ lazy(() => ValueSchema),
8220
+ object({ get "secretRef"() {
8221
+ return SecretReferenceSchema.describe("Reference to a Kubernetes Secret");
8222
+ } })
8223
+ ]).describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
8224
+ /**
8225
+ * Generated by Kubb (https://kubb.dev/).
8226
+ * Do not edit manually.
8227
+ */
8228
+ /**
8229
+ * @description Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret
8230
+ */
8231
+ const BindingValueVecStringSchema = union([
8232
+ array(string()),
8233
+ lazy(() => ValueSchema),
8234
+ object({ get "secretRef"() {
8235
+ return SecretReferenceSchema.describe("Reference to a Kubernetes Secret");
8236
+ } })
8237
+ ]).describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
8238
+ /**
8239
+ * Generated by Kubb (https://kubb.dev/).
8240
+ * Do not edit manually.
8241
+ */
8242
+ /**
8243
+ * @description Azure Blob Storage binding configuration
8244
+ */
8245
+ const BlobStorageBindingSchema = object({
8246
+ get "accountName"() {
8247
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
8248
+ },
8249
+ get "containerName"() {
8250
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
8251
+ }
8252
+ }).describe("Azure Blob Storage binding configuration");
8253
+ /**
8254
+ * Generated by Kubb (https://kubb.dev/).
8255
+ * Do not edit manually.
8256
+ */
8257
+ /**
7851
8258
  * @description The type of operation a presigned request performs
7852
8259
  */
7853
8260
  const PresignedOperationSchema = _enum([
@@ -8150,6 +8557,33 @@ const CapacityGroupSchema = object({
8150
8557
  return union([CapacityGroupScalePolicySchema, _null()]).optional();
8151
8558
  }
8152
8559
  }).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).");
8560
+ /**
8561
+ * Generated by Kubb (https://kubb.dev/).
8562
+ * Do not edit manually.
8563
+ */
8564
+ /**
8565
+ * @description GCP Cloud SQL binding.
8566
+ */
8567
+ const CloudSqlPostgresBindingSchema = object({
8568
+ get "database"() {
8569
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
8570
+ },
8571
+ get "host"() {
8572
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
8573
+ },
8574
+ get "passwordSecretName"() {
8575
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
8576
+ },
8577
+ get "port"() {
8578
+ return BindingValueU16Schema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
8579
+ },
8580
+ get "serverCaCertificates"() {
8581
+ return BindingValueVecStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
8582
+ },
8583
+ get "username"() {
8584
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
8585
+ }
8586
+ }).describe("GCP Cloud SQL binding.");
8153
8587
  _enum(["push", "pull"]).describe("How a command is delivered to its target resource.\n\nThis is a Commands-protocol-specific concept and is intentionally distinct\nfrom `DeploymentModel` (see `stack_settings.rs`), which governs the\ninfrastructure-level push/pull wiring for a deployment. Serialized\nlowercase for consistency with `CommandTargetType`.");
8154
8588
  /**
8155
8589
  * Generated by Kubb (https://kubb.dev/).
@@ -8333,6 +8767,71 @@ const ComputeClusterHeartbeatDataSchema = union([
8333
8767
  lazy(() => MachinesComputeClusterHeartbeatDataSchema).and(object({ "backend": _enum(["machines"]) })),
8334
8768
  lazy(() => LocalComputeClusterHeartbeatDataSchema).and(object({ "backend": _enum(["local"]) }))
8335
8769
  ]);
8770
+ /**
8771
+ * Generated by Kubb (https://kubb.dev/).
8772
+ * Do not edit manually.
8773
+ */
8774
+ /**
8775
+ * @description GCP-specific platform permission configuration
8776
+ */
8777
+ const GcpPlatformPermissionSchema = object({
8778
+ get "binding"() {
8779
+ return BindingConfigurationGcpBindingSpecSchema.describe("Generic binding configuration for permissions");
8780
+ },
8781
+ "description": string().describe("Short admin-facing description of why this entry exists.").nullish(),
8782
+ get "grant"() {
8783
+ return PermissionGrantSchema.describe("Grant permissions for a specific cloud platform");
8784
+ },
8785
+ "label": string().describe("Stable admin-facing label for this permission entry.").nullish()
8786
+ }).describe("GCP-specific platform permission configuration");
8787
+ /**
8788
+ * Generated by Kubb (https://kubb.dev/).
8789
+ * Do not edit manually.
8790
+ */
8791
+ /**
8792
+ * @description Platform-specific permission configurations
8793
+ */
8794
+ const PlatformPermissionsSchema = object({
8795
+ get "aws"() {
8796
+ return array(AwsPlatformPermissionSchema.describe("AWS-specific platform permission configuration")).describe("AWS permission configurations").nullish();
8797
+ },
8798
+ get "azure"() {
8799
+ return array(AzurePlatformPermissionSchema.describe("Azure-specific platform permission configuration")).describe("Azure permission configurations").nullish();
8800
+ },
8801
+ get "gcp"() {
8802
+ return array(GcpPlatformPermissionSchema.describe("GCP-specific platform permission configuration")).describe("GCP permission configurations").nullish();
8803
+ }
8804
+ }).describe("Platform-specific permission configurations");
8805
+ /**
8806
+ * Generated by Kubb (https://kubb.dev/).
8807
+ * Do not edit manually.
8808
+ */
8809
+ /**
8810
+ * @description A permission set that can be applied across different cloud platforms
8811
+ */
8812
+ const PermissionSetSchema = object({
8813
+ "description": string().describe("Human-readable description of what this permission set allows"),
8814
+ "id": string().describe("Unique identifier for the permission set (e.g., \"storage/data-read\")"),
8815
+ get "platforms"() {
8816
+ return PlatformPermissionsSchema.describe("Platform-specific permission configurations");
8817
+ }
8818
+ }).describe("A permission set that can be applied across different cloud platforms");
8819
+ /**
8820
+ * Generated by Kubb (https://kubb.dev/).
8821
+ * Do not edit manually.
8822
+ */
8823
+ /**
8824
+ * @description Reference to a permission set - either by name or inline definition
8825
+ */
8826
+ const PermissionSetReferenceSchema = union([lazy(() => PermissionSetSchema), string()]).describe("Reference to a permission set - either by name or inline definition");
8827
+ /**
8828
+ * Generated by Kubb (https://kubb.dev/).
8829
+ * Do not edit manually.
8830
+ */
8831
+ /**
8832
+ * @description Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource
8833
+ */
8834
+ const PermissionProfileSchema = object({}).catchall(array(lazy(() => PermissionSetReferenceSchema).describe("Reference to a permission set - either by name or inline definition"))).describe("Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource");
8336
8835
  object({
8337
8836
  get "capacityGroups"() {
8338
8837
  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.");
@@ -8341,6 +8840,12 @@ object({
8341
8840
  "dynamicContainerPool": string().describe("Pool reserved for containers created after a deployment is installed.\nIf absent, the runtime uses the `general` pool when it exists.").nullish(),
8342
8841
  "failureDomainSpread": optional(object({}).catchall(int().min(0)).describe("Requested failure-domain spread keyed by capacity group.\nEmpty preserves the existing aggregate layout.")),
8343
8842
  "id": string().describe("Unique identifier for the container cluster.\nMust contain only alphanumeric characters, hyphens, and underscores."),
8843
+ get "nodePermissions"() {
8844
+ return union([PermissionProfileSchema, _null()]).optional();
8845
+ },
8846
+ get "nodePermissionsPlatforms"() {
8847
+ return array(PlatformSchema.describe("Represents the target cloud platform.")).describe("Cloud platforms on which the explicit node grants apply; absent applies everywhere.").nullish();
8848
+ },
8344
8849
  "selectedFailureDomains": optional(object({}).catchall(array(string())).describe("Concrete provider failure domains selected during setup, keyed by capacity group.\nEmpty preserves the existing aggregate layout when no spread policy is configured."))
8345
8850
  }).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, runtime\n machine image rollout and, on AWS, the machine type within one CPU architecture\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```");
8346
8851
  /**
@@ -8390,6 +8895,30 @@ const ComputeSettingsSchema = object({ "pools": optional(object({}).catchall(laz
8390
8895
  * Do not edit manually.
8391
8896
  */
8392
8897
  /**
8898
+ * @description Binding configuration for a pre-existing Azure Container Apps Environment.\n\nUsed when deploying to an existing environment instead of having Alien provision one.\nThis is useful for shared environments (e.g., test infrastructure) or enterprise\nsetups where environments are managed by a separate team.
8899
+ */
8900
+ const ContainerAppsEnvironmentBindingSchema = object({
8901
+ get "defaultDomain"() {
8902
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
8903
+ },
8904
+ get "environmentName"() {
8905
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
8906
+ },
8907
+ get "resourceGroupName"() {
8908
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
8909
+ },
8910
+ get "resourceId"() {
8911
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
8912
+ },
8913
+ get "staticIp"() {
8914
+ return union([BindingValueStringSchema, _null()]).optional();
8915
+ }
8916
+ }).describe("Binding configuration for a pre-existing Azure Container Apps Environment.\n\nUsed when deploying to an existing environment instead of having Alien provision one.\nThis is useful for shared environments (e.g., test infrastructure) or enterprise\nsetups where environments are managed by a separate team.");
8917
+ /**
8918
+ * Generated by Kubb (https://kubb.dev/).
8919
+ * Do not edit manually.
8920
+ */
8921
+ /**
8393
8922
  * @description Autoscaling configuration for stateless containers.
8394
8923
  */
8395
8924
  const ContainerAutoscalingSchema = object({
@@ -8792,9 +9321,64 @@ const ReplicaStatusSchema = object({
8792
9321
  "ordinal": int().min(0).describe("Ordinal (for stateful containers)").nullish(),
8793
9322
  "replicaId": string().describe("Replica ID (e.g., \"api-0\", \"api-1\")")
8794
9323
  }).describe("Status of a single container replica.");
8795
- object({
8796
- "currentReplicas": int().min(0).describe("Number of current replicas"),
8797
- "desiredReplicas": int().min(0).describe("Desired number of replicas"),
9324
+ /**
9325
+ * Generated by Kubb (https://kubb.dev/).
9326
+ * Do not edit manually.
9327
+ */
9328
+ /**
9329
+ * @description State of a container\'s snapshot schedule.
9330
+ */
9331
+ const VolumeBackupsStateSchema = _enum([
9332
+ "active",
9333
+ "disabled",
9334
+ "setupRequired"
9335
+ ]).describe("State of a container's snapshot schedule.");
9336
+ /**
9337
+ * Generated by Kubb (https://kubb.dev/).
9338
+ * Do not edit manually.
9339
+ */
9340
+ /**
9341
+ * @description Whether a container\'s snapshot schedule is in place.
9342
+ */
9343
+ const VolumeBackupsStatusSchema = object({
9344
+ "message": string().describe("What is missing when the state is `setupRequired`").nullish(),
9345
+ get "state"() {
9346
+ return VolumeBackupsStateSchema.describe("State of a container's snapshot schedule.");
9347
+ }
9348
+ }).describe("Whether a container's snapshot schedule is in place.");
9349
+ /**
9350
+ * Generated by Kubb (https://kubb.dev/).
9351
+ * Do not edit manually.
9352
+ */
9353
+ /**
9354
+ * @description A completed volume restore.
9355
+ */
9356
+ const VolumeRestoreOutputSchema = object({
9357
+ "completedAt": string().describe("When the restored volume was put in place (RFC 3339)"),
9358
+ "replacedVolumeSnapshotId": string().describe("Snapshot of the replaced volume, taken just before it was deleted"),
9359
+ "requestId": string().describe("ID of the restore request"),
9360
+ "snapshotId": string().describe("Snapshot the volume was restored from")
9361
+ }).describe("A completed volume restore.");
9362
+ /**
9363
+ * Generated by Kubb (https://kubb.dev/).
9364
+ * Do not edit manually.
9365
+ */
9366
+ /**
9367
+ * @description A replica\'s persistent volume and its latest completed snapshot.
9368
+ */
9369
+ const VolumeOutputSchema = object({
9370
+ get "lastRestore"() {
9371
+ return union([VolumeRestoreOutputSchema, _null()]).optional();
9372
+ },
9373
+ "lastSnapshotAt": string().describe("When the latest completed snapshot was started (RFC 3339)").nullish(),
9374
+ "lastSnapshotId": string().describe("Cloud ID of the latest completed snapshot, if any").nullish(),
9375
+ "ordinal": int().min(0).describe("Replica ordinal the volume belongs to"),
9376
+ "volumeId": string().describe("Cloud ID of the volume (EBS volume ID, Persistent Disk name, or Managed Disk ID)"),
9377
+ "zone": string().describe("Zone the volume lives in")
9378
+ }).describe("A replica's persistent volume and its latest completed snapshot.");
9379
+ object({
9380
+ "currentReplicas": int().min(0).describe("Number of current replicas"),
9381
+ "desiredReplicas": int().min(0).describe("Desired number of replicas"),
8798
9382
  "internalDns": string().describe("Internal DNS name (e.g., \"api.svc\")"),
8799
9383
  "name": string().describe("Container name in the managed container backend"),
8800
9384
  "publicEndpoints": optional(object({}).catchall(lazy(() => PublicEndpointOutputSchema).describe("Runtime-resolved public endpoint metadata.")).describe("Public endpoints resolved for this container.")),
@@ -8803,6 +9387,12 @@ object({
8803
9387
  },
8804
9388
  get "status"() {
8805
9389
  return ContainerStatusSchema.describe("Container status in the managed container backend.");
9390
+ },
9391
+ get "volumeBackups"() {
9392
+ return union([VolumeBackupsStatusSchema, _null()]).optional();
9393
+ },
9394
+ get "volumes"() {
9395
+ return array(VolumeOutputSchema.describe("A replica's persistent volume and its latest completed snapshot.")).describe("Persistent volumes, one per replica ordinal, with their latest snapshot.").optional();
8806
9396
  }
8807
9397
  }).describe("Outputs generated by a successfully provisioned Container.");
8808
9398
  /**
@@ -8885,9 +9475,24 @@ const KubernetesSecretMountSchema = object({
8885
9475
  * Do not edit manually.
8886
9476
  */
8887
9477
  /**
9478
+ * @description Scheduled snapshots of a persistent volume.\n\nThe cloud\'s own scheduler takes the snapshots (AWS Data Lifecycle Manager,\na Compute Engine snapshot schedule, or Azure Disk Backup), so they keep being\ntaken while the deployment is unreachable. Snapshots are crash-consistent:\nthe volume as it would be after a sudden power loss. When a container is\ndeleted, Alien keeps one final snapshot of each volume.\n\nKubernetes deployments leave volume backups to the cluster\'s own tooling,\nand local deployments don\'t snapshot volumes. Neither reports volumes in\n`ContainerOutputs.volumes` or a `volumeBackups` status.
9479
+ */
9480
+ const VolumeBackupsSchema = object({
9481
+ "enabled": optional(boolean().describe("Whether snapshots are taken. Defaults to true.")),
9482
+ "intervalHours": optional(int().min(0).describe("Hours between snapshots: 1, 2, 4, 6, 8, 12 or 24. Defaults to 24.")),
9483
+ "retentionDays": optional(int().min(0).describe("Days each snapshot is kept, at most 365. Defaults to 7."))
9484
+ }).describe("Scheduled snapshots of a persistent volume.\n\nThe cloud's own scheduler takes the snapshots (AWS Data Lifecycle Manager,\na Compute Engine snapshot schedule, or Azure Disk Backup), so they keep being\ntaken while the deployment is unreachable. Snapshots are crash-consistent:\nthe volume as it would be after a sudden power loss. When a container is\ndeleted, Alien keeps one final snapshot of each volume.\n\nKubernetes deployments leave volume backups to the cluster's own tooling,\nand local deployments don't snapshot volumes. Neither reports volumes in\n`ContainerOutputs.volumes` or a `volumeBackups` status.");
9485
+ /**
9486
+ * Generated by Kubb (https://kubb.dev/).
9487
+ * Do not edit manually.
9488
+ */
9489
+ /**
8888
9490
  * @description Persistent storage configuration for stateful containers.
8889
9491
  */
8890
9492
  const PersistentStorageSchema = object({
9493
+ get "backups"() {
9494
+ return VolumeBackupsSchema.describe("Scheduled snapshots of a persistent volume.\n\nThe cloud's own scheduler takes the snapshots (AWS Data Lifecycle Manager,\na Compute Engine snapshot schedule, or Azure Disk Backup), so they keep being\ntaken while the deployment is unreachable. Snapshots are crash-consistent:\nthe volume as it would be after a sudden power loss. When a container is\ndeleted, Alien keeps one final snapshot of each volume.\n\nKubernetes deployments leave volume backups to the cluster's own tooling,\nand local deployments don't snapshot volumes. Neither reports volumes in\n`ContainerOutputs.volumes` or a `volumeBackups` status.").optional();
9495
+ },
8891
9496
  "mountPath": string().describe("Mount path inside the container"),
8892
9497
  "size": string().describe("Storage size (e.g., \"100Gi\", \"500Gi\")")
8893
9498
  }).describe("Persistent storage configuration for stateful containers.");
@@ -9252,7 +9857,7 @@ object({
9252
9857
  get "memory"() {
9253
9858
  return ResourceSpecSchema.describe("Resource specification with min/desired values.").optional();
9254
9859
  },
9255
- "permissions": string(),
9860
+ "permissions": string().describe("Named workload permission profile. Absent means no workload cloud identity.").nullish(),
9256
9861
  "pool": string().describe("Capacity group/pool to run on for backends that expose machine pools.").nullish(),
9257
9862
  get "publicEndpoints"() {
9258
9863
  return array(PublicEndpointSchema.describe("Public endpoint configuration for port-backed workload resources.")).describe("Public endpoints exposed by the daemon.").optional();
@@ -9286,6 +9891,7 @@ const DeployerSecretStoreSchema = _enum([
9286
9891
  const DeployerSecretLocationSchema = object({
9287
9892
  "cliCommand": string().describe("Command that writes the value, with `<VALUE>` in place of the secret."),
9288
9893
  "consoleUrl": string().describe("Cloud console page where the secret is created, when the store has one.").nullish(),
9894
+ "deleteCommand": string().describe("Command that deletes the secret. Deleting a deployment keeps the\nsecrets the deployer wrote, since Alien never owned their values.").nullish(),
9289
9895
  "name": string().describe("Full name of the secret in that store."),
9290
9896
  get "store"() {
9291
9897
  return DeployerSecretStoreSchema.describe("The secret store a deployer writes a vault-native secret into.");
@@ -9314,7 +9920,8 @@ object({
9314
9920
  "required": boolean().describe("Whether the workload cannot start without it."),
9315
9921
  get "status"() {
9316
9922
  return DeployerSecretStatusSchema.describe("Whether a deployer secret slot holds a usable value. Alien learns this from\nmetadata only and never reads the value.");
9317
- }
9923
+ },
9924
+ "version": string().describe("The secret store's version of the present value (never the value or a\nhash of it). A new version reaches workloads with the next update.").nullish()
9318
9925
  }).describe("The state of one deployer secret slot, reported with the deployment.");
9319
9926
  /**
9320
9927
  * Generated by Kubb (https://kubb.dev/).
@@ -9408,6 +10015,24 @@ object({
9408
10015
  * Do not edit manually.
9409
10016
  */
9410
10017
  /**
10018
+ * @description AWS DynamoDB KV binding configuration
10019
+ */
10020
+ const DynamodbKvBindingSchema = object({
10021
+ get "endpointUrl"() {
10022
+ return union([BindingValueStringSchema, _null()]).optional();
10023
+ },
10024
+ get "region"() {
10025
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
10026
+ },
10027
+ get "tableName"() {
10028
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
10029
+ }
10030
+ }).describe("AWS DynamoDB KV binding configuration");
10031
+ /**
10032
+ * Generated by Kubb (https://kubb.dev/).
10033
+ * Do not edit manually.
10034
+ */
10035
+ /**
9411
10036
  * @description A single DKIM CNAME record the operator must create in DNS.
9412
10037
  */
9413
10038
  const EmailDkimTokenSchema = object({
@@ -9564,6 +10189,413 @@ union([
9564
10189
  "updatedAt": datetime().describe("Timestamp when the state changed")
9565
10190
  })
9566
10191
  ]).describe("Represents a change to an event");
10192
+ /**
10193
+ * Generated by Kubb (https://kubb.dev/).
10194
+ * Do not edit manually.
10195
+ */
10196
+ /**
10197
+ * @description External AI provider binding configuration (BYO-key).\n\nThe operator-supplied secret rides inside the binding via\n`BindingValue<String>`, so it is a literal on cloud platforms and gains\nKubernetes SecretRef resolution for free (`extract_binding_secrets` walks\nthe binding JSON for `secretRef`).
10198
+ */
10199
+ const ExternalAiBindingSchema = object({
10200
+ get "apiKey"() {
10201
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
10202
+ },
10203
+ "provider": string().describe("The external AI provider name (e.g., \"openai\", \"anthropic\")")
10204
+ }).describe("External AI provider binding configuration (BYO-key).\n\nThe operator-supplied secret rides inside the binding via\n`BindingValue<String>`, so it is a literal on cloud platforms and gains\nKubernetes SecretRef resolution for free (`extract_binding_secrets` walks\nthe binding JSON for `secretRef`).");
10205
+ /**
10206
+ * Generated by Kubb (https://kubb.dev/).
10207
+ * Do not edit manually.
10208
+ */
10209
+ /**
10210
+ * @description GCP Firestore KV binding configuration
10211
+ */
10212
+ const FirestoreKvBindingSchema = object({
10213
+ get "collectionName"() {
10214
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
10215
+ },
10216
+ get "databaseId"() {
10217
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
10218
+ },
10219
+ get "projectId"() {
10220
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
10221
+ }
10222
+ }).describe("GCP Firestore KV binding configuration");
10223
+ /**
10224
+ * Generated by Kubb (https://kubb.dev/).
10225
+ * Do not edit manually.
10226
+ */
10227
+ /**
10228
+ * @description Local development KV binding configuration
10229
+ */
10230
+ const LocalKvBindingSchema = object({
10231
+ get "dataDir"() {
10232
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
10233
+ },
10234
+ get "keyPrefix"() {
10235
+ return union([BindingValueStringSchema, _null()]).optional();
10236
+ }
10237
+ }).describe("Local development KV binding configuration");
10238
+ /**
10239
+ * Generated by Kubb (https://kubb.dev/).
10240
+ * Do not edit manually.
10241
+ */
10242
+ /**
10243
+ * @description Redis KV binding configuration
10244
+ */
10245
+ const RedisKvBindingSchema = object({
10246
+ get "connectionUrl"() {
10247
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
10248
+ },
10249
+ get "database"() {
10250
+ return union([BindingValueU8Schema, _null()]).optional();
10251
+ },
10252
+ get "keyPrefix"() {
10253
+ return union([BindingValueStringSchema, _null()]).optional();
10254
+ }
10255
+ }).describe("Redis KV binding configuration");
10256
+ /**
10257
+ * Generated by Kubb (https://kubb.dev/).
10258
+ * Do not edit manually.
10259
+ */
10260
+ /**
10261
+ * @description Azure Table Storage KV binding configuration
10262
+ */
10263
+ const TableStorageKvBindingSchema = object({
10264
+ get "accountName"() {
10265
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
10266
+ },
10267
+ get "resourceGroupName"() {
10268
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
10269
+ },
10270
+ get "tableName"() {
10271
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
10272
+ }
10273
+ }).describe("Azure Table Storage KV binding configuration");
10274
+ /**
10275
+ * Generated by Kubb (https://kubb.dev/).
10276
+ * Do not edit manually.
10277
+ */
10278
+ /**
10279
+ * @description Represents a KV binding for key-value storage across platforms
10280
+ */
10281
+ const KvBindingSchema = union([
10282
+ lazy(() => DynamodbKvBindingSchema).and(object({ "service": _enum(["dynamodb"]) })).describe("AWS DynamoDB KV binding configuration"),
10283
+ lazy(() => FirestoreKvBindingSchema).and(object({ "service": _enum(["firestore"]) })).describe("GCP Firestore KV binding configuration"),
10284
+ lazy(() => TableStorageKvBindingSchema).and(object({ "service": _enum(["tablestorage"]) })).describe("Azure Table Storage KV binding configuration"),
10285
+ lazy(() => RedisKvBindingSchema).and(object({ "service": _enum(["redis"]) })).describe("Redis KV binding configuration"),
10286
+ lazy(() => LocalKvBindingSchema).and(object({ "service": _enum(["local-kv"]) })).describe("Local development KV binding configuration")
10287
+ ]).describe("Represents a KV binding for key-value storage across platforms");
10288
+ /**
10289
+ * Generated by Kubb (https://kubb.dev/).
10290
+ * Do not edit manually.
10291
+ */
10292
+ /**
10293
+ * @description TLS policy for an operator-provided / BYO Postgres database.\n\nUnlike libpq\'s ambiguous `prefer` mode, both choices map exactly to the\nconnection settings exposed by every supported SDK.
10294
+ */
10295
+ const ExternalPostgresSslModeSchema = _enum(["verify-full", "disable"]).describe("TLS policy for an operator-provided / BYO Postgres database.\n\nUnlike libpq's ambiguous `prefer` mode, both choices map exactly to the\nconnection settings exposed by every supported SDK.");
10296
+ /**
10297
+ * Generated by Kubb (https://kubb.dev/).
10298
+ * Do not edit manually.
10299
+ */
10300
+ /**
10301
+ * @description Operator-provided / BYO database binding.
10302
+ */
10303
+ const ExternalPostgresBindingSchema = object({
10304
+ get "database"() {
10305
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
10306
+ },
10307
+ get "host"() {
10308
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
10309
+ },
10310
+ "password": string().describe("Connection password as a concrete value, never an unresolved `SecretRef`: the platform\nmaterializes the Kubernetes secret into the pod env. The cloud variants carry a secret\nlocator instead."),
10311
+ get "port"() {
10312
+ return BindingValueU16Schema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
10313
+ },
10314
+ get "sslMode"() {
10315
+ return ExternalPostgresSslModeSchema.describe("TLS policy for an operator-provided / BYO Postgres database.\n\nUnlike libpq's ambiguous `prefer` mode, both choices map exactly to the\nconnection settings exposed by every supported SDK.").optional();
10316
+ },
10317
+ get "username"() {
10318
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
10319
+ }
10320
+ }).describe("Operator-provided / BYO database binding.");
10321
+ /**
10322
+ * Generated by Kubb (https://kubb.dev/).
10323
+ * Do not edit manually.
10324
+ */
10325
+ /**
10326
+ * @description Azure Flexible Server binding.
10327
+ */
10328
+ const FlexibleServerPostgresBindingSchema = object({
10329
+ get "database"() {
10330
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
10331
+ },
10332
+ get "host"() {
10333
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
10334
+ },
10335
+ get "passwordSecretUri"() {
10336
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
10337
+ },
10338
+ get "port"() {
10339
+ return BindingValueU16Schema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
10340
+ },
10341
+ get "username"() {
10342
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
10343
+ }
10344
+ }).describe("Azure Flexible Server binding.");
10345
+ /**
10346
+ * Generated by Kubb (https://kubb.dev/).
10347
+ * Do not edit manually.
10348
+ */
10349
+ /**
10350
+ * @description Local embedded Postgres binding.
10351
+ */
10352
+ const LocalPostgresBindingSchema = object({
10353
+ get "database"() {
10354
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
10355
+ },
10356
+ get "host"() {
10357
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
10358
+ },
10359
+ "password": string(),
10360
+ get "port"() {
10361
+ return BindingValueU16Schema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
10362
+ },
10363
+ get "username"() {
10364
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
10365
+ }
10366
+ }).describe("Local embedded Postgres binding.");
10367
+ /**
10368
+ * Generated by Kubb (https://kubb.dev/).
10369
+ * Do not edit manually.
10370
+ */
10371
+ /**
10372
+ * @description Connection details for a Postgres database, one variant per backend.
10373
+ */
10374
+ const PostgresBindingSchema = union([
10375
+ lazy(() => AuroraPostgresBindingSchema).and(object({ "service": _enum(["aurora"]) })).describe("AWS Aurora Serverless v2 binding."),
10376
+ lazy(() => CloudSqlPostgresBindingSchema).and(object({ "service": _enum(["cloud-sql"]) })).describe("GCP Cloud SQL binding."),
10377
+ lazy(() => FlexibleServerPostgresBindingSchema).and(object({ "service": _enum(["flexible-server"]) })).describe("Azure Flexible Server binding."),
10378
+ lazy(() => ExternalPostgresBindingSchema).and(object({ "service": _enum(["external"]) })).describe("Operator-provided / BYO database binding."),
10379
+ lazy(() => LocalPostgresBindingSchema).and(object({ "service": _enum(["local-postgres"]) })).describe("Local embedded Postgres binding.")
10380
+ ]).describe("Connection details for a Postgres database, one variant per backend.");
10381
+ /**
10382
+ * Generated by Kubb (https://kubb.dev/).
10383
+ * Do not edit manually.
10384
+ */
10385
+ /**
10386
+ * @description Local queue parameters
10387
+ */
10388
+ const LocalQueueBindingSchema = object({ get "queuePath"() {
10389
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
10390
+ } }).describe("Local queue parameters");
10391
+ /**
10392
+ * Generated by Kubb (https://kubb.dev/).
10393
+ * Do not edit manually.
10394
+ */
10395
+ /**
10396
+ * @description GCP Pub/Sub parameters
10397
+ */
10398
+ const PubSubQueueBindingSchema = object({
10399
+ get "subscription"() {
10400
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
10401
+ },
10402
+ get "topic"() {
10403
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
10404
+ }
10405
+ }).describe("GCP Pub/Sub parameters");
10406
+ /**
10407
+ * Generated by Kubb (https://kubb.dev/).
10408
+ * Do not edit manually.
10409
+ */
10410
+ /**
10411
+ * @description Azure Service Bus parameters
10412
+ */
10413
+ const ServiceBusQueueBindingSchema = object({
10414
+ get "namespace"() {
10415
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
10416
+ },
10417
+ get "queueName"() {
10418
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
10419
+ }
10420
+ }).describe("Azure Service Bus parameters");
10421
+ /**
10422
+ * Generated by Kubb (https://kubb.dev/).
10423
+ * Do not edit manually.
10424
+ */
10425
+ /**
10426
+ * @description AWS SQS queue parameters
10427
+ */
10428
+ const SqsQueueBindingSchema = object({ get "queueUrl"() {
10429
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
10430
+ } }).describe("AWS SQS queue parameters");
10431
+ /**
10432
+ * Generated by Kubb (https://kubb.dev/).
10433
+ * Do not edit manually.
10434
+ */
10435
+ /**
10436
+ * @description Binding parameters for Queue at runtime or in templates.
10437
+ */
10438
+ const QueueBindingSchema = union([
10439
+ lazy(() => SqsQueueBindingSchema).and(object({ "service": _enum(["sqs"]) })).describe("AWS SQS queue parameters"),
10440
+ lazy(() => PubSubQueueBindingSchema).and(object({ "service": _enum(["pubsub"]) })).describe("GCP Pub/Sub parameters"),
10441
+ lazy(() => ServiceBusQueueBindingSchema).and(object({ "service": _enum(["servicebus"]) })).describe("Azure Service Bus parameters"),
10442
+ lazy(() => LocalQueueBindingSchema).and(object({ "service": _enum(["local-queue"]) })).describe("Local queue parameters")
10443
+ ]).describe("Binding parameters for Queue at runtime or in templates.");
10444
+ /**
10445
+ * Generated by Kubb (https://kubb.dev/).
10446
+ * Do not edit manually.
10447
+ */
10448
+ /**
10449
+ * @description Google Cloud Storage binding configuration
10450
+ */
10451
+ const GcsStorageBindingSchema = object({ get "bucketName"() {
10452
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
10453
+ } }).describe("Google Cloud Storage binding configuration");
10454
+ /**
10455
+ * Generated by Kubb (https://kubb.dev/).
10456
+ * Do not edit manually.
10457
+ */
10458
+ /**
10459
+ * @description Local filesystem storage binding configuration
10460
+ */
10461
+ const LocalStorageBindingSchema = object({ get "storagePath"() {
10462
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
10463
+ } }).describe("Local filesystem storage binding configuration");
10464
+ /**
10465
+ * Generated by Kubb (https://kubb.dev/).
10466
+ * Do not edit manually.
10467
+ */
10468
+ /**
10469
+ * @description S3 storage binding configuration.\n\nTargets AWS S3 by default. Setting `endpoint` targets any S3-compatible\nstore instead (MinIO, Ceph RGW, NetApp StorageGRID, Cloudflare R2, ...),\nwhich is how Kubernetes deployments outside a cloud account attach the\ncustomer\'s existing object storage.
10470
+ */
10471
+ const S3StorageBindingSchema = object({
10472
+ get "accessKeyId"() {
10473
+ return union([BindingValueStringSchema, _null()]).optional();
10474
+ },
10475
+ get "bucketName"() {
10476
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
10477
+ },
10478
+ get "endpoint"() {
10479
+ return union([BindingValueStringSchema, _null()]).optional();
10480
+ },
10481
+ "forcePathStyle": boolean().describe("Use path-style URLs (`endpoint/bucket/key`) instead of virtual-hosted\nones (`bucket.endpoint/key`). Defaults to `true` when `endpoint` is\nset, since most S3-compatible stores require it.").nullish(),
10482
+ get "region"() {
10483
+ return union([BindingValueStringSchema, _null()]).optional();
10484
+ },
10485
+ get "secretAccessKey"() {
10486
+ return union([BindingValueStringSchema, _null()]).optional();
10487
+ }
10488
+ }).describe("S3 storage binding configuration.\n\nTargets AWS S3 by default. Setting `endpoint` targets any S3-compatible\nstore instead (MinIO, Ceph RGW, NetApp StorageGRID, Cloudflare R2, ...),\nwhich is how Kubernetes deployments outside a cloud account attach the\ncustomer's existing object storage.");
10489
+ /**
10490
+ * Generated by Kubb (https://kubb.dev/).
10491
+ * Do not edit manually.
10492
+ */
10493
+ /**
10494
+ * @description Service-type based storage binding that supports multiple storage providers
10495
+ */
10496
+ const StorageBindingSchema = union([
10497
+ lazy(() => S3StorageBindingSchema).and(object({ "service": _enum(["s3"]) })).describe("S3 storage binding configuration.\n\nTargets AWS S3 by default. Setting `endpoint` targets any S3-compatible\nstore instead (MinIO, Ceph RGW, NetApp StorageGRID, Cloudflare R2, ...),\nwhich is how Kubernetes deployments outside a cloud account attach the\ncustomer's existing object storage."),
10498
+ lazy(() => BlobStorageBindingSchema).and(object({ "service": _enum(["blob"]) })).describe("Azure Blob Storage binding configuration"),
10499
+ lazy(() => GcsStorageBindingSchema).and(object({ "service": _enum(["gcs"]) })).describe("Google Cloud Storage binding configuration"),
10500
+ lazy(() => LocalStorageBindingSchema).and(object({ "service": _enum(["local-storage"]) })).describe("Local filesystem storage binding configuration")
10501
+ ]).describe("Service-type based storage binding that supports multiple storage providers");
10502
+ /**
10503
+ * Generated by Kubb (https://kubb.dev/).
10504
+ * Do not edit manually.
10505
+ */
10506
+ /**
10507
+ * @description Azure Key Vault binding configuration
10508
+ */
10509
+ const KeyVaultBindingSchema = object({ get "vaultName"() {
10510
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
10511
+ } }).describe("Azure Key Vault binding configuration");
10512
+ /**
10513
+ * Generated by Kubb (https://kubb.dev/).
10514
+ * Do not edit manually.
10515
+ */
10516
+ /**
10517
+ * @description Kubernetes Secrets vault binding configuration
10518
+ */
10519
+ const KubernetesSecretVaultBindingSchema = object({
10520
+ get "namespace"() {
10521
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
10522
+ },
10523
+ get "vaultPrefix"() {
10524
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
10525
+ }
10526
+ }).describe("Kubernetes Secrets vault binding configuration");
10527
+ /**
10528
+ * Generated by Kubb (https://kubb.dev/).
10529
+ * Do not edit manually.
10530
+ */
10531
+ /**
10532
+ * @description Local development vault binding (for testing/development)
10533
+ */
10534
+ const LocalVaultBindingSchema = object({
10535
+ get "dataDir"() {
10536
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
10537
+ },
10538
+ "vaultName": string().describe("The vault name for local storage")
10539
+ }).describe("Local development vault binding (for testing/development)");
10540
+ /**
10541
+ * Generated by Kubb (https://kubb.dev/).
10542
+ * Do not edit manually.
10543
+ */
10544
+ /**
10545
+ * @description AWS SSM Parameter Store vault binding configuration
10546
+ */
10547
+ const ParameterStoreVaultBindingSchema = object({ get "vaultPrefix"() {
10548
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
10549
+ } }).describe("AWS SSM Parameter Store vault binding configuration");
10550
+ /**
10551
+ * Generated by Kubb (https://kubb.dev/).
10552
+ * Do not edit manually.
10553
+ */
10554
+ /**
10555
+ * @description GCP Secret Manager vault binding configuration
10556
+ */
10557
+ const SecretManagerVaultBindingSchema = object({ get "vaultPrefix"() {
10558
+ return BindingValueStringSchema.describe("Represents a value that can be either a concrete value, a template expression,\nor a reference to a Kubernetes Secret");
10559
+ } }).describe("GCP Secret Manager vault binding configuration");
10560
+ /**
10561
+ * Generated by Kubb (https://kubb.dev/).
10562
+ * Do not edit manually.
10563
+ */
10564
+ /**
10565
+ * @description Represents a vault binding for secure secret management
10566
+ */
10567
+ const VaultBindingSchema = union([
10568
+ lazy(() => ParameterStoreVaultBindingSchema).and(object({ "service": _enum(["parameter-store"]) })).describe("AWS SSM Parameter Store vault binding configuration"),
10569
+ lazy(() => SecretManagerVaultBindingSchema).and(object({ "service": _enum(["secret-manager"]) })).describe("GCP Secret Manager vault binding configuration"),
10570
+ lazy(() => KeyVaultBindingSchema).and(object({ "service": _enum(["key-vault"]) })).describe("Azure Key Vault binding configuration"),
10571
+ lazy(() => KubernetesSecretVaultBindingSchema).and(object({ "service": _enum(["kubernetes-secret"]) })).describe("Kubernetes Secrets vault binding configuration"),
10572
+ lazy(() => LocalVaultBindingSchema).and(object({ "service": _enum(["local-vault"]) })).describe("Local development vault binding (for testing/development)")
10573
+ ]).describe("Represents a vault binding for secure secret management");
10574
+ /**
10575
+ * Generated by Kubb (https://kubb.dev/).
10576
+ * Do not edit manually.
10577
+ */
10578
+ /**
10579
+ * @description Represents a binding to pre-existing infrastructure.\n\nThe binding type must match the resource type it\'s applied to.\nValidated at runtime by the executor.
10580
+ */
10581
+ const ExternalBindingSchema = union([
10582
+ lazy(() => StorageBindingSchema).and(object({ "type": _enum(["storage"]) })).describe("Service-type based storage binding that supports multiple storage providers"),
10583
+ lazy(() => QueueBindingSchema).and(object({ "type": _enum(["queue"]) })).describe("Binding parameters for Queue at runtime or in templates."),
10584
+ lazy(() => KvBindingSchema).and(object({ "type": _enum(["kv"]) })).describe("Represents a KV binding for key-value storage across platforms"),
10585
+ lazy(() => ArtifactRegistryBindingSchema).and(object({ "type": _enum(["artifact_registry"]) })).describe("Service-type based artifact registry binding that supports multiple registry providers"),
10586
+ lazy(() => VaultBindingSchema).and(object({ "type": _enum(["vault"]) })).describe("Represents a vault binding for secure secret management"),
10587
+ lazy(() => ContainerAppsEnvironmentBindingSchema).and(object({ "type": _enum(["container_apps_environment"]) })).describe("Binding configuration for a pre-existing Azure Container Apps Environment.\n\nUsed when deploying to an existing environment instead of having Alien provision one.\nThis is useful for shared environments (e.g., test infrastructure) or enterprise\nsetups where environments are managed by a separate team."),
10588
+ lazy(() => PostgresBindingSchema).and(object({ "type": _enum(["postgres"]) })).describe("Connection details for a Postgres database, one variant per backend."),
10589
+ lazy(() => ExternalAiBindingSchema).and(object({ "type": _enum(["ai"]) })).describe("External AI provider binding configuration (BYO-key).\n\nThe operator-supplied secret rides inside the binding via\n`BindingValue<String>`, so it is a literal on cloud platforms and gains\nKubernetes SecretRef resolution for free (`extract_binding_secrets` walks\nthe binding JSON for `secretRef`).")
10590
+ ]).describe("Represents a binding to pre-existing infrastructure.\n\nThe binding type must match the resource type it's applied to.\nValidated at runtime by the executor.");
10591
+ /**
10592
+ * Generated by Kubb (https://kubb.dev/).
10593
+ * Do not edit manually.
10594
+ */
10595
+ /**
10596
+ * @description Map from resource ID to external binding.\n\nValidated at runtime: binding type must match resource type.
10597
+ */
10598
+ const ExternalBindingsSchema = object({}).catchall(lazy(() => ExternalBindingSchema).describe("Represents a binding to pre-existing infrastructure.\n\nThe binding type must match the resource type it's applied to.\nValidated at runtime by the executor.")).describe("Map from resource ID to external binding.\n\nValidated at runtime: binding type must match resource type.");
9567
10599
  object({ "engineId": string().describe("The engine's resource name, or the bare id it ends with.") }).describe("GCP Agent Platform reasoning-engine ImportData.\n\nEmitted only for a Frozen engine, which the setup stack creates. Vertex assigns the id, so it\nis read off the created resource rather than derived: the controller and the template beneath\nit address the engine by exactly this segment.");
9568
10600
  /**
9569
10601
  * Generated by Kubb (https://kubb.dev/).
@@ -9730,23 +10762,6 @@ object({
9730
10762
  "vpcName": string().describe("VPC short name.").nullish(),
9731
10763
  "vpcSelfLink": string().describe("VPC self-link. Absent when the controller will look up the\ndefault network at runtime.").nullish()
9732
10764
  }).describe("GCP Network ImportData — VPC + subnetwork + Cloud NAT topology.");
9733
- /**
9734
- * Generated by Kubb (https://kubb.dev/).
9735
- * Do not edit manually.
9736
- */
9737
- /**
9738
- * @description GCP-specific platform permission configuration
9739
- */
9740
- const GcpPlatformPermissionSchema = object({
9741
- get "binding"() {
9742
- return BindingConfigurationGcpBindingSpecSchema.describe("Generic binding configuration for permissions");
9743
- },
9744
- "description": string().describe("Short admin-facing description of why this entry exists.").nullish(),
9745
- get "grant"() {
9746
- return PermissionGrantSchema.describe("Grant permissions for a specific cloud platform");
9747
- },
9748
- "label": string().describe("Stable admin-facing label for this permission entry.").nullish()
9749
- }).describe("GCP-specific platform permission configuration");
9750
10765
  object({
9751
10766
  "database": string().describe("Default database name."),
9752
10767
  "databaseVersion": string().describe("Engine version the instance reports."),
@@ -10575,54 +11590,6 @@ const ManagementConfigSchema = union([
10575
11590
  * Do not edit manually.
10576
11591
  */
10577
11592
  /**
10578
- * @description Platform-specific permission configurations
10579
- */
10580
- const PlatformPermissionsSchema = object({
10581
- get "aws"() {
10582
- return array(AwsPlatformPermissionSchema.describe("AWS-specific platform permission configuration")).describe("AWS permission configurations").nullish();
10583
- },
10584
- get "azure"() {
10585
- return array(AzurePlatformPermissionSchema.describe("Azure-specific platform permission configuration")).describe("Azure permission configurations").nullish();
10586
- },
10587
- get "gcp"() {
10588
- return array(GcpPlatformPermissionSchema.describe("GCP-specific platform permission configuration")).describe("GCP permission configurations").nullish();
10589
- }
10590
- }).describe("Platform-specific permission configurations");
10591
- /**
10592
- * Generated by Kubb (https://kubb.dev/).
10593
- * Do not edit manually.
10594
- */
10595
- /**
10596
- * @description A permission set that can be applied across different cloud platforms
10597
- */
10598
- const PermissionSetSchema = object({
10599
- "description": string().describe("Human-readable description of what this permission set allows"),
10600
- "id": string().describe("Unique identifier for the permission set (e.g., \"storage/data-read\")"),
10601
- get "platforms"() {
10602
- return PlatformPermissionsSchema.describe("Platform-specific permission configurations");
10603
- }
10604
- }).describe("A permission set that can be applied across different cloud platforms");
10605
- /**
10606
- * Generated by Kubb (https://kubb.dev/).
10607
- * Do not edit manually.
10608
- */
10609
- /**
10610
- * @description Reference to a permission set - either by name or inline definition
10611
- */
10612
- const PermissionSetReferenceSchema = union([lazy(() => PermissionSetSchema), string()]).describe("Reference to a permission set - either by name or inline definition");
10613
- /**
10614
- * Generated by Kubb (https://kubb.dev/).
10615
- * Do not edit manually.
10616
- */
10617
- /**
10618
- * @description Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource
10619
- */
10620
- const PermissionProfileSchema = object({}).catchall(array(lazy(() => PermissionSetReferenceSchema).describe("Reference to a permission set - either by name or inline definition"))).describe("Permission profile that maps resources to permission sets\nKey can be \"*\" for all resources or resource name for specific resource");
10621
- /**
10622
- * Generated by Kubb (https://kubb.dev/).
10623
- * Do not edit manually.
10624
- */
10625
- /**
10626
11593
  * @description Management permissions configuration for stack management access
10627
11594
  */
10628
11595
  const ManagementPermissionsSchema = union([
@@ -11333,6 +12300,7 @@ object({
11333
12300
  }).describe("Outputs generated by a successfully provisioned ServiceAccount.");
11334
12301
  object({
11335
12302
  "id": string().describe("Identifier for the service account. Must contain only alphanumeric characters, hyphens, and underscores ([A-Za-z0-9-_]).\nMaximum 64 characters."),
12303
+ "resourcePermissionSets": optional(object({}).catchall(array(lazy(() => PermissionSetSchema).describe("A permission set that can be applied across different cloud platforms"))).describe("Resolved grants for concrete resource IDs, captured for setup comparison.")),
11336
12304
  get "stackPermissionSets"() {
11337
12305
  return array(PermissionSetSchema.describe("A permission set that can be applied across different cloud platforms")).describe("Stack-level permission sets that apply to all resources in the stack.\nThese are derived from the \"*\" scope in the permission profile.\nResource-scoped permissions are handled by individual resource controllers.");
11338
12306
  }
@@ -11377,7 +12345,9 @@ const StackSettingsSchema = object({
11377
12345
  get "endpointAccess"() {
11378
12346
  return EndpointAccessSchema.describe("Reachability of the deployment's public endpoints, fixed at setup.").optional();
11379
12347
  },
11380
- "externalBindings": object({}).describe("External bindings for pre-existing infrastructure.\nAllows using existing resources (MinIO, Redis, shared Container Apps\nEnvironment, etc.) instead of having Alien provision them.\nRequired for Kubernetes platform, optional for cloud platforms.").nullish(),
12348
+ get "externalBindings"() {
12349
+ return union([ExternalBindingsSchema, _null()]).optional();
12350
+ },
11381
12351
  get "heartbeats"() {
11382
12352
  return HeartbeatsModeSchema.describe("How heartbeat health checks are handled.").optional();
11383
12353
  },
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alienplatform/sdk",
3
- "version": "3.3.28",
3
+ "version": "3.3.29",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist"
@@ -57,9 +57,9 @@
57
57
  "nice-grpc": "^2.1.11",
58
58
  "nice-grpc-common": "^2.0.2",
59
59
  "zod": "^4.5.2",
60
- "@alienplatform/ai-gateway": "^3.3.28",
61
- "@alienplatform/bindings": "^3.3.28",
62
- "@alienplatform/core": "^3.3.28"
60
+ "@alienplatform/ai-gateway": "^3.3.29",
61
+ "@alienplatform/bindings": "^3.3.29",
62
+ "@alienplatform/core": "^3.3.29"
63
63
  },
64
64
  "scripts": {
65
65
  "build": "tsdown && tsc --emitDeclarationOnly",