@sylphx/contract 0.5.1 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (123) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/endpoint.d.ts +3 -1
  3. package/dist/endpoint.d.ts.map +1 -1
  4. package/dist/endpoints/admin-audit.d.ts +2 -2
  5. package/dist/endpoints/admin-audit.js +2 -2
  6. package/dist/endpoints/admin-bootstrap.js +3 -3
  7. package/dist/endpoints/admin-branch-databases.d.ts +1 -1
  8. package/dist/endpoints/admin-branch-databases.js +2 -2
  9. package/dist/endpoints/admin-envs-spec.d.ts +27 -0
  10. package/dist/endpoints/admin-envs-spec.d.ts.map +1 -0
  11. package/dist/endpoints/admin-envs-spec.js +25 -0
  12. package/dist/endpoints/admin-projects.d.ts +1 -1
  13. package/dist/endpoints/admin-rate-limits.d.ts +1 -1
  14. package/dist/endpoints/admin-rate-limits.js +3 -3
  15. package/dist/endpoints/admin-secrets.d.ts +3 -3
  16. package/dist/endpoints/admin-secrets.js +1 -1
  17. package/dist/endpoints/admin-services.d.ts +3 -3
  18. package/dist/endpoints/admin-services.d.ts.map +1 -1
  19. package/dist/endpoints/admin-services.js +4 -5
  20. package/dist/endpoints/branch-databases.d.ts +13 -7
  21. package/dist/endpoints/branch-databases.d.ts.map +1 -1
  22. package/dist/endpoints/branch-databases.js +3 -3
  23. package/dist/endpoints/databases.d.ts +100 -164
  24. package/dist/endpoints/databases.d.ts.map +1 -1
  25. package/dist/endpoints/databases.js +8 -35
  26. package/dist/endpoints/deployments.d.ts +1 -3
  27. package/dist/endpoints/deployments.d.ts.map +1 -1
  28. package/dist/endpoints/deployments.js +1 -1
  29. package/dist/endpoints/environments.d.ts +11 -42
  30. package/dist/endpoints/environments.d.ts.map +1 -1
  31. package/dist/endpoints/image-opt.d.ts +5 -13
  32. package/dist/endpoints/image-opt.d.ts.map +1 -1
  33. package/dist/endpoints/image-opt.js +6 -18
  34. package/dist/endpoints/kv-admin.d.ts +0 -1
  35. package/dist/endpoints/kv-admin.d.ts.map +1 -1
  36. package/dist/endpoints/organizations.d.ts +8 -6
  37. package/dist/endpoints/organizations.d.ts.map +1 -1
  38. package/dist/endpoints/project-manifest.d.ts +90 -84
  39. package/dist/endpoints/project-manifest.d.ts.map +1 -1
  40. package/dist/endpoints/projects.d.ts +0 -8
  41. package/dist/endpoints/projects.d.ts.map +1 -1
  42. package/dist/endpoints/realtime-admin.d.ts +0 -1
  43. package/dist/endpoints/realtime-admin.d.ts.map +1 -1
  44. package/dist/endpoints/realtime-admin.js +1 -1
  45. package/dist/endpoints/regions.d.ts +2 -4
  46. package/dist/endpoints/regions.d.ts.map +1 -1
  47. package/dist/endpoints/regions.js +2 -2
  48. package/dist/endpoints/tasks.d.ts +2 -6
  49. package/dist/endpoints/tasks.d.ts.map +1 -1
  50. package/dist/hono-app.d.ts +2 -2
  51. package/dist/hono-app.js +2 -2
  52. package/dist/index.d.ts +254 -338
  53. package/dist/index.d.ts.map +1 -1
  54. package/dist/index.js +4 -0
  55. package/dist/schemas/_primitives.d.ts +14 -0
  56. package/dist/schemas/_primitives.d.ts.map +1 -1
  57. package/dist/schemas/_primitives.js +16 -0
  58. package/dist/schemas/admin-audit.d.ts +4 -4
  59. package/dist/schemas/admin-audit.js +3 -3
  60. package/dist/schemas/admin-bootstrap.d.ts +1 -1
  61. package/dist/schemas/admin-bootstrap.js +1 -1
  62. package/dist/schemas/admin-builds.d.ts +1 -1
  63. package/dist/schemas/admin-builds.js +1 -1
  64. package/dist/schemas/admin-envs-spec.d.ts +49 -0
  65. package/dist/schemas/admin-envs-spec.d.ts.map +1 -0
  66. package/dist/schemas/admin-envs-spec.js +58 -0
  67. package/dist/schemas/admin-projects.d.ts +2 -2
  68. package/dist/schemas/admin-projects.js +1 -1
  69. package/dist/schemas/admin-rate-limits.d.ts +2 -2
  70. package/dist/schemas/admin-rate-limits.js +2 -2
  71. package/dist/schemas/admin-secrets.d.ts +14 -14
  72. package/dist/schemas/admin-secrets.d.ts.map +1 -1
  73. package/dist/schemas/admin-secrets.js +10 -10
  74. package/dist/schemas/admin-services.d.ts +18 -22
  75. package/dist/schemas/admin-services.d.ts.map +1 -1
  76. package/dist/schemas/admin-services.js +15 -19
  77. package/dist/schemas/branch-database.d.ts +25 -18
  78. package/dist/schemas/branch-database.d.ts.map +1 -1
  79. package/dist/schemas/branch-database.js +15 -14
  80. package/dist/schemas/database.d.ts +13 -19
  81. package/dist/schemas/database.d.ts.map +1 -1
  82. package/dist/schemas/database.js +7 -19
  83. package/dist/schemas/deployment.d.ts +5 -7
  84. package/dist/schemas/deployment.d.ts.map +1 -1
  85. package/dist/schemas/deployment.js +6 -6
  86. package/dist/schemas/environment.d.ts +17 -31
  87. package/dist/schemas/environment.d.ts.map +1 -1
  88. package/dist/schemas/environment.js +11 -16
  89. package/dist/schemas/ids.d.ts +4 -0
  90. package/dist/schemas/ids.d.ts.map +1 -1
  91. package/dist/schemas/ids.js +2 -0
  92. package/dist/schemas/image-opt.d.ts +10 -11
  93. package/dist/schemas/image-opt.d.ts.map +1 -1
  94. package/dist/schemas/image-opt.js +11 -12
  95. package/dist/schemas/kv-admin.d.ts +0 -1
  96. package/dist/schemas/kv-admin.d.ts.map +1 -1
  97. package/dist/schemas/kv-admin.js +0 -1
  98. package/dist/schemas/organization.d.ts +8 -6
  99. package/dist/schemas/organization.d.ts.map +1 -1
  100. package/dist/schemas/organization.js +11 -6
  101. package/dist/schemas/project-manifest.d.ts +180 -187
  102. package/dist/schemas/project-manifest.d.ts.map +1 -1
  103. package/dist/schemas/project-manifest.js +62 -57
  104. package/dist/schemas/project.d.ts +0 -6
  105. package/dist/schemas/project.d.ts.map +1 -1
  106. package/dist/schemas/project.js +0 -2
  107. package/dist/schemas/realtime-admin.d.ts +0 -1
  108. package/dist/schemas/realtime-admin.d.ts.map +1 -1
  109. package/dist/schemas/realtime-admin.js +0 -1
  110. package/dist/schemas/realtime.d.ts +2 -2
  111. package/dist/schemas/realtime.js +2 -2
  112. package/dist/schemas/region.d.ts +3 -21
  113. package/dist/schemas/region.d.ts.map +1 -1
  114. package/dist/schemas/region.js +2 -11
  115. package/dist/schemas/resources.d.ts +213 -164
  116. package/dist/schemas/resources.d.ts.map +1 -1
  117. package/dist/schemas/resources.js +87 -105
  118. package/dist/schemas/storage.d.ts +1 -1
  119. package/dist/schemas/storage.js +1 -1
  120. package/dist/schemas/tasks.d.ts +3 -8
  121. package/dist/schemas/tasks.d.ts.map +1 -1
  122. package/dist/schemas/tasks.js +1 -4
  123. package/package.json +1 -1
@@ -25,10 +25,10 @@ export type Slug = typeof Slug.Type;
25
25
  /** Environment name — closed enum matches ADR-080 environment types. */
26
26
  export declare const ManifestEnvName: Schema.Literal<["production", "staging", "preview", "development"]>;
27
27
  export type ManifestEnvName = typeof ManifestEnvName.Type;
28
- /** Hetzner region starter set; extend as new regions come online. */
28
+ /** Public region slug. The platform maps this to provider capacity internally. */
29
29
  export declare const ManifestRegion: Schema.Literal<["fsn1", "nbg1", "hel1", "ash1", "hil1"]>;
30
30
  export type ManifestRegion = typeof ManifestRegion.Type;
31
- /** Machine size tiers — shared between build runners and service containers. */
31
+ /** Compute size tiers — shared between build runners and runtime services. */
32
32
  export declare const MachineSize: Schema.Literal<["nano", "micro", "small", "standard", "large", "xlarge"]>;
33
33
  export type MachineSize = typeof MachineSize.Type;
34
34
  /** Build runner size — smaller enum than MachineSize (no nano/micro). */
@@ -40,13 +40,16 @@ export type BuildpackName = typeof BuildpackName.Type;
40
40
  /** Build strategy hint. `dockerfile` pins the build to the declared Dockerfile. */
41
41
  export declare const BuildStrategy: Schema.Literal<["auto", "buildpack", "dockerfile", "nixpacks"]>;
42
42
  export type BuildStrategy = typeof BuildStrategy.Type;
43
- /** Service type discriminant — drives K8s workload shape (Deployment/Job). */
43
+ /** Service type discriminant — drives the platform runtime shape. */
44
44
  export declare const ServiceType: Schema.Literal<["web", "worker", "cron", "function"]>;
45
45
  export type ServiceType = typeof ServiceType.Type;
46
- /** Deploy strategy `rolling` is the Sylphx default (ArgoCD PreSync-gated). */
46
+ /** Public instance count for user-declared services. */
47
+ export declare const ManifestServiceInstanceCount: Schema.filter<Schema.filter<typeof Schema.Number>>;
48
+ export type ManifestServiceInstanceCount = typeof ManifestServiceInstanceCount.Type;
49
+ /** Deploy strategy — `rolling` is the Sylphx default. */
47
50
  export declare const DeployStrategy: Schema.Literal<["rolling", "blue-green", "immediate"]>;
48
51
  export type DeployStrategy = typeof DeployStrategy.Type;
49
- /** WWW-apex redirect policy at the Gateway API listener. */
52
+ /** WWW-apex redirect policy. */
50
53
  export declare const WwwRedirect: Schema.Literal<["apex", "www", "none"]>;
51
54
  export type WwwRedirect = typeof WwwRedirect.Type;
52
55
  export declare const ManifestProjectSection: Schema.Struct<{
@@ -92,10 +95,10 @@ export type ManifestBuildSection = typeof ManifestBuildSection.Type;
92
95
  export declare const ManifestDeploySection: Schema.Struct<{
93
96
  /**
94
97
  * Command run before traffic cutover (DB migrations via expand-and-
95
- * contract). Runs as an ArgoCD PreSync Job (sync-wave "-1"). ADR-066.2.
98
+ * contract). Runs before the new release accepts traffic. ADR-066.2.
96
99
  */
97
100
  release_command: Schema.optional<typeof Schema.String>;
98
- /** HTTP path for K8s readinessProbe. */
101
+ /** HTTP readiness path. */
99
102
  health_check_path: Schema.optional<typeof Schema.String>;
100
103
  /** Timeout in seconds. */
101
104
  health_check_timeout: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
@@ -119,8 +122,8 @@ export declare const ManifestServiceHealthSection: Schema.Struct<{
119
122
  command: Schema.optional<typeof Schema.String>;
120
123
  }>;
121
124
  export type ManifestServiceHealthSection = typeof ManifestServiceHealthSection.Type;
122
- export declare const ManifestServiceSection: Schema.Struct<{
123
- /** Service name — unique within project. Used as K8s Deployment name. */
125
+ export declare const ManifestServiceSection: Schema.filter<Schema.Struct<{
126
+ /** Service name — unique within project. */
124
127
  name: Schema.filter<Schema.filter<Schema.filter<typeof Schema.String>>>;
125
128
  type: Schema.Literal<["web", "worker", "cron", "function"]>;
126
129
  /** Per-service build override. Root [build] remains the default. */
@@ -137,48 +140,45 @@ export declare const ManifestServiceSection: Schema.Struct<{
137
140
  path: Schema.optional<typeof Schema.String>;
138
141
  command: Schema.optional<typeof Schema.String>;
139
142
  }>>;
140
- /** Container start command. */
143
+ /** Service start command. */
141
144
  command: Schema.optional<typeof Schema.String>;
142
- /** Internal container port; required for `web`. */
145
+ /** Service port; required for `web` when it cannot be detected automatically. */
143
146
  port: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
144
- /**
145
- * Public HTTP port (Gateway API listener). Defaults to 443 for web.
146
- * Most users leave unset.
147
- */
148
- internal_port: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
149
- /** Replica count. Ignored for `cron`. */
150
- replicas: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
151
- /** Compute size; maps to per-service K8s resources.requests/limits. */
147
+ /** Explicit instance count. Ignored for `cron`. */
148
+ instances: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
149
+ /** Compute size; maps to per-service runtime resources. */
152
150
  instance_type: Schema.optional<Schema.Literal<["nano", "micro", "small", "standard", "large", "xlarge"]>>;
153
151
  /** Required when type=cron. Standard 5-field cron expression. */
154
152
  cron_schedule: Schema.optional<typeof Schema.String>;
155
153
  /** Optional per-service region override. */
156
154
  regions: Schema.optional<Schema.Array$<Schema.Literal<["fsn1", "nbg1", "hel1", "ash1", "hil1"]>>>;
157
- /**
158
- * Scale-to-zero (KEDA). `false` (default) = pinned at `min_replicas >= 1`;
159
- * `true` = the reconciler emits a KEDA ScaledObject and lets KEDA drive
160
- * the replica count from 0 → N on incoming traffic (docs/design/scale-to-zero.md).
161
- */
155
+ /** Scale-to-zero. `false` (default) = pinned at `min_instances >= 1`. */
162
156
  scale_to_zero: Schema.optional<typeof Schema.Boolean>;
163
157
  /**
164
- * Seconds of no traffic before KEDA scales the Deployment down to 0.
165
- * Maps to KEDA `cooldownPeriod`. Only meaningful when `scale_to_zero=true`.
158
+ * Seconds of no traffic before the platform scales the service down to 0.
159
+ * Only meaningful when `scale_to_zero=true`.
166
160
  * Range: 60s–3600s. Default: 300 (5 min).
167
161
  */
168
162
  idle_timeout_seconds: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
169
163
  /**
170
- * Minimum replica count. Default: `0` when `scale_to_zero=true`, else `1`.
171
- * Setting `min_replicas=1` alongside `scale_to_zero=true` keeps a warm
172
- * floor while still letting KEDA scale horizontally beyond 1.
164
+ * Minimum instance count. Default: `0` when `scale_to_zero=true`, else `1`.
165
+ * Setting `min_instances=1` alongside `scale_to_zero=true` keeps a warm
166
+ * floor while still allowing horizontal scale-out beyond 1.
173
167
  */
174
- min_replicas: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
168
+ min_instances: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
169
+ /** Optional upper bound for platform-managed horizontal scale-out. */
170
+ max_instances: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
175
171
  /** Per-service env var merge — refs entries from top-level [env]. */
176
172
  env: Schema.optional<Schema.Array$<typeof Schema.String>>;
177
- /** Per-service resource bindings (by resource name). */
173
+ /**
174
+ * Reserved for declarative service-scoped managed resource bindings.
175
+ * Current push-webhook support is environment-scoped via top-level [resources.*],
176
+ * so deploy parsing fails closed if this field is present.
177
+ */
178
178
  resources: Schema.optional<Schema.Array$<Schema.filter<Schema.filter<Schema.filter<typeof Schema.String>>>>>;
179
179
  /** Paths whose changes should trigger this service in monorepos. */
180
180
  watch_paths: Schema.optional<Schema.Array$<typeof Schema.String>>;
181
- }>;
181
+ }>>;
182
182
  export type ManifestServiceSection = typeof ManifestServiceSection.Type;
183
183
  export declare const ManifestMigrationEngine: Schema.Literal<["atlas", "drizzle", "prisma", "alembic", "flyway", "goose", "sqlx", "custom"]>;
184
184
  export type ManifestMigrationEngine = typeof ManifestMigrationEngine.Type;
@@ -208,8 +208,8 @@ export type ManifestDatabaseSection = typeof ManifestDatabaseSection.Type;
208
208
  * Env var value — literal, secret reference, or resource attribute.
209
209
  * Values are NEVER stored in the manifest — always by reference.
210
210
  * `from_secret` resolves via the platform `secrets` table (AES-256-GCM).
211
- * `from_resource` + `attr` resolves via the `resources` table; valid
212
- * attributes: `connection_url | host | port | user | password | database`.
211
+ * `from_resource` + `attr` resolves product-level outputs such as
212
+ * `database_url`, `cache_url`, `search_url`, and `volume_mount_path`.
213
213
  */
214
214
  export declare const ManifestEnvValue: Schema.Union<[Schema.Struct<{
215
215
  value: typeof Schema.String;
@@ -244,51 +244,47 @@ export declare const KvTier: Schema.Literal<["nano", "micro", "standard", "large
244
244
  export type KvTier = typeof KvTier.Type;
245
245
  export declare const ManifestVolumeTier: Schema.Literal<["nano", "micro", "standard", "large", "xl", "hobby", "starter", "pro", "business", "enterprise", "enterprise-2x", "enterprise-4x"]>;
246
246
  export type ManifestVolumeTier = typeof ManifestVolumeTier.Type;
247
- export declare const ManifestVolumeAccessMode: Schema.Literal<["ReadWriteOnce", "ReadWriteMany"]>;
248
- export type ManifestVolumeAccessMode = typeof ManifestVolumeAccessMode.Type;
247
+ export declare const ManifestVolumeSharing: Schema.Literal<["single-writer", "shared"]>;
248
+ export type ManifestVolumeSharing = typeof ManifestVolumeSharing.Type;
249
249
  export declare const ManifestDatabaseEngine: Schema.Literal<["postgres"]>;
250
250
  export type ManifestDatabaseEngine = typeof ManifestDatabaseEngine.Type;
251
- export declare const ManifestKvEngine: Schema.Literal<["valkey"]>;
252
- export type ManifestKvEngine = typeof ManifestKvEngine.Type;
253
- export declare const ManifestSearchEngine: Schema.Literal<["typesense"]>;
254
- export type ManifestSearchEngine = typeof ManifestSearchEngine.Type;
255
251
  export declare const ManifestDatabaseResource: Schema.Struct<{
256
252
  /** Capability-specific engine. PostgreSQL is the first supported database engine. */
257
253
  engine: Schema.optional<Schema.Literal<["postgres"]>>;
258
- /** CNPG tier; IMMUTABLE after creation. */
254
+ /** Product tier; IMMUTABLE after creation. */
259
255
  tier: Schema.Literal<["nano", "micro", "standard", "large", "xl", "hobby", "starter", "pro", "business", "enterprise", "enterprise-2x", "enterprise-4x"]>;
260
256
  storage_gb: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
261
257
  version: Schema.optional<Schema.Literal<["15", "16", "17"]>>;
262
- /** Enable CNPG read-replica(s). */
263
- replicas: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
258
+ /** Optional managed read replicas. */
259
+ read_replicas: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
264
260
  /** Branch-per-preview (P0 gap #4 sibling). */
265
261
  branch_on_preview: Schema.optional<typeof Schema.Boolean>;
266
262
  }>;
267
263
  export type ManifestDatabaseResource = typeof ManifestDatabaseResource.Type;
268
264
  export declare const ManifestKvResource: Schema.Struct<{
269
- /** Capability-specific engine. Valkey is the first supported KV engine. */
270
- engine: Schema.optional<Schema.Literal<["valkey"]>>;
265
+ engine: Schema.optionalWith<typeof Schema.Never, {
266
+ exact: true;
267
+ }>;
271
268
  tier: Schema.Literal<["nano", "micro", "standard", "large", "xl", "hobby", "starter", "pro", "business", "enterprise", "enterprise-2x", "enterprise-4x"]>;
272
269
  storage_gb: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
273
270
  }>;
274
271
  export type ManifestKvResource = typeof ManifestKvResource.Type;
275
272
  export declare const ManifestSearchResource: Schema.Struct<{
276
- /** Capability-specific engine. Typesense is the first supported search engine. */
277
- engine: Schema.optional<Schema.Literal<["typesense"]>>;
273
+ engine: Schema.optionalWith<typeof Schema.Never, {
274
+ exact: true;
275
+ }>;
278
276
  tier: Schema.Literal<["nano", "micro", "standard", "large", "xl", "hobby", "starter", "pro", "business", "enterprise", "enterprise-2x", "enterprise-4x"]>;
279
277
  storage_gb: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
280
- nodes: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
281
278
  }>;
282
279
  export type ManifestSearchResource = typeof ManifestSearchResource.Type;
283
280
  export declare const ManifestVolumeResource: Schema.Struct<{
284
281
  tier: Schema.Literal<["nano", "micro", "standard", "large", "xl", "hobby", "starter", "pro", "business", "enterprise", "enterprise-2x", "enterprise-4x"]>;
285
282
  storage_gb: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
286
283
  /**
287
- * ReadWriteMany is required when a volume is shared by multiple sandboxes,
288
- * workers, or replicas. ReadWriteOnce remains valid for single-writer app
289
- * disks.
284
+ * Public sharing intent. The platform maps this to the best backend storage
285
+ * class without exposing implementation details.
290
286
  */
291
- access_mode: Schema.optional<Schema.Literal<["ReadWriteOnce", "ReadWriteMany"]>>;
287
+ sharing: Schema.optional<Schema.Literal<["single-writer", "shared"]>>;
292
288
  /**
293
289
  * Optional env-facing path metadata. This does not mount the volume into an
294
290
  * app service by itself; service/task mounts stay explicit bindings.
@@ -305,37 +301,37 @@ export declare const ManifestResourcesSection: Schema.Struct<{
305
301
  database: Schema.optional<Schema.Struct<{
306
302
  /** Capability-specific engine. PostgreSQL is the first supported database engine. */
307
303
  engine: Schema.optional<Schema.Literal<["postgres"]>>;
308
- /** CNPG tier; IMMUTABLE after creation. */
304
+ /** Product tier; IMMUTABLE after creation. */
309
305
  tier: Schema.Literal<["nano", "micro", "standard", "large", "xl", "hobby", "starter", "pro", "business", "enterprise", "enterprise-2x", "enterprise-4x"]>;
310
306
  storage_gb: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
311
307
  version: Schema.optional<Schema.Literal<["15", "16", "17"]>>;
312
- /** Enable CNPG read-replica(s). */
313
- replicas: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
308
+ /** Optional managed read replicas. */
309
+ read_replicas: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
314
310
  /** Branch-per-preview (P0 gap #4 sibling). */
315
311
  branch_on_preview: Schema.optional<typeof Schema.Boolean>;
316
312
  }>>;
317
313
  kv: Schema.optional<Schema.Struct<{
318
- /** Capability-specific engine. Valkey is the first supported KV engine. */
319
- engine: Schema.optional<Schema.Literal<["valkey"]>>;
314
+ engine: Schema.optionalWith<typeof Schema.Never, {
315
+ exact: true;
316
+ }>;
320
317
  tier: Schema.Literal<["nano", "micro", "standard", "large", "xl", "hobby", "starter", "pro", "business", "enterprise", "enterprise-2x", "enterprise-4x"]>;
321
318
  storage_gb: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
322
319
  }>>;
323
320
  search: Schema.optional<Schema.Struct<{
324
- /** Capability-specific engine. Typesense is the first supported search engine. */
325
- engine: Schema.optional<Schema.Literal<["typesense"]>>;
321
+ engine: Schema.optionalWith<typeof Schema.Never, {
322
+ exact: true;
323
+ }>;
326
324
  tier: Schema.Literal<["nano", "micro", "standard", "large", "xl", "hobby", "starter", "pro", "business", "enterprise", "enterprise-2x", "enterprise-4x"]>;
327
325
  storage_gb: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
328
- nodes: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
329
326
  }>>;
330
327
  volume: Schema.optional<Schema.Struct<{
331
328
  tier: Schema.Literal<["nano", "micro", "standard", "large", "xl", "hobby", "starter", "pro", "business", "enterprise", "enterprise-2x", "enterprise-4x"]>;
332
329
  storage_gb: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
333
330
  /**
334
- * ReadWriteMany is required when a volume is shared by multiple sandboxes,
335
- * workers, or replicas. ReadWriteOnce remains valid for single-writer app
336
- * disks.
331
+ * Public sharing intent. The platform maps this to the best backend storage
332
+ * class without exposing implementation details.
337
333
  */
338
- access_mode: Schema.optional<Schema.Literal<["ReadWriteOnce", "ReadWriteMany"]>>;
334
+ sharing: Schema.optional<Schema.Literal<["single-writer", "shared"]>>;
339
335
  /**
340
336
  * Optional env-facing path metadata. This does not mount the volume into an
341
337
  * app service by itself; service/task mounts stay explicit bindings.
@@ -367,22 +363,22 @@ export type ManifestCiSection = typeof ManifestCiSection.Type;
367
363
  * `[[services]]` entry with the matching name. Arrays replace, scalars/
368
364
  * structs merge.
369
365
  */
370
- export declare const ManifestServiceOverride: Schema.Struct<{
366
+ export declare const ManifestServiceOverride: Schema.filter<Schema.Struct<{
371
367
  name: Schema.filter<Schema.filter<Schema.filter<typeof Schema.String>>>;
372
368
  type: Schema.optional<Schema.Literal<["web", "worker", "cron", "function"]>>;
373
369
  command: Schema.optional<typeof Schema.String>;
374
370
  port: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
375
- internal_port: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
376
- replicas: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
371
+ instances: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
377
372
  instance_type: Schema.optional<Schema.Literal<["nano", "micro", "small", "standard", "large", "xlarge"]>>;
378
373
  cron_schedule: Schema.optional<typeof Schema.String>;
379
374
  regions: Schema.optional<Schema.Array$<Schema.Literal<["fsn1", "nbg1", "hel1", "ash1", "hil1"]>>>;
380
375
  scale_to_zero: Schema.optional<typeof Schema.Boolean>;
381
376
  idle_timeout_seconds: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
382
- min_replicas: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
377
+ min_instances: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
378
+ max_instances: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
383
379
  env: Schema.optional<Schema.Array$<typeof Schema.String>>;
384
380
  resources: Schema.optional<Schema.Array$<Schema.filter<Schema.filter<Schema.filter<typeof Schema.String>>>>>;
385
- }>;
381
+ }>>;
386
382
  export type ManifestServiceOverride = typeof ManifestServiceOverride.Type;
387
383
  export declare const ManifestEnvironmentOverride: Schema.Struct<{
388
384
  /** Shallow-merge over top-level [env]. */
@@ -422,10 +418,10 @@ export declare const ManifestEnvironmentOverride: Schema.Struct<{
422
418
  deploy: Schema.optional<Schema.Struct<{
423
419
  /**
424
420
  * Command run before traffic cutover (DB migrations via expand-and-
425
- * contract). Runs as an ArgoCD PreSync Job (sync-wave "-1"). ADR-066.2.
421
+ * contract). Runs before the new release accepts traffic. ADR-066.2.
426
422
  */
427
423
  release_command: Schema.optional<typeof Schema.String>;
428
- /** HTTP path for K8s readinessProbe. */
424
+ /** HTTP readiness path. */
429
425
  health_check_path: Schema.optional<typeof Schema.String>;
430
426
  /** Timeout in seconds. */
431
427
  health_check_timeout: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
@@ -435,22 +431,22 @@ export declare const ManifestEnvironmentOverride: Schema.Struct<{
435
431
  graceful_shutdown: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
436
432
  }>>;
437
433
  /** Sparse service overrides; entries match by `name`. */
438
- services: Schema.optional<Schema.Array$<Schema.Struct<{
434
+ services: Schema.optional<Schema.Array$<Schema.filter<Schema.Struct<{
439
435
  name: Schema.filter<Schema.filter<Schema.filter<typeof Schema.String>>>;
440
436
  type: Schema.optional<Schema.Literal<["web", "worker", "cron", "function"]>>;
441
437
  command: Schema.optional<typeof Schema.String>;
442
438
  port: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
443
- internal_port: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
444
- replicas: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
439
+ instances: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
445
440
  instance_type: Schema.optional<Schema.Literal<["nano", "micro", "small", "standard", "large", "xlarge"]>>;
446
441
  cron_schedule: Schema.optional<typeof Schema.String>;
447
442
  regions: Schema.optional<Schema.Array$<Schema.Literal<["fsn1", "nbg1", "hel1", "ash1", "hil1"]>>>;
448
443
  scale_to_zero: Schema.optional<typeof Schema.Boolean>;
449
444
  idle_timeout_seconds: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
450
- min_replicas: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
445
+ min_instances: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
446
+ max_instances: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
451
447
  env: Schema.optional<Schema.Array$<typeof Schema.String>>;
452
448
  resources: Schema.optional<Schema.Array$<Schema.filter<Schema.filter<Schema.filter<typeof Schema.String>>>>>;
453
- }>>>;
449
+ }>>>>;
454
450
  /** Per-env region override. */
455
451
  region: Schema.optional<Schema.Literal<["fsn1", "nbg1", "hel1", "ash1", "hil1"]>>;
456
452
  /** Domain overrides; typically for preview-only hostnames. */
@@ -489,15 +485,15 @@ export declare const ManifestEnvironmentsMap: Schema.SchemaClass<{
489
485
  readonly port?: number | undefined;
490
486
  readonly env?: readonly string[] | undefined;
491
487
  readonly resources?: readonly string[] | undefined;
492
- readonly replicas?: number | undefined;
488
+ readonly instances?: number | undefined;
489
+ readonly max_instances?: number | undefined;
493
490
  readonly command?: string | undefined;
494
- readonly internal_port?: number | undefined;
495
- readonly instance_type?: "standard" | "large" | "xlarge" | "nano" | "micro" | "small" | undefined;
491
+ readonly instance_type?: "nano" | "micro" | "standard" | "large" | "xlarge" | "small" | undefined;
496
492
  readonly cron_schedule?: string | undefined;
497
493
  readonly regions?: readonly ("fsn1" | "nbg1" | "hel1" | "ash1" | "hil1")[] | undefined;
498
494
  readonly scale_to_zero?: boolean | undefined;
499
495
  readonly idle_timeout_seconds?: number | undefined;
500
- readonly min_replicas?: number | undefined;
496
+ readonly min_instances?: number | undefined;
501
497
  }[] | undefined;
502
498
  readonly region?: "fsn1" | "nbg1" | "hel1" | "ash1" | "hil1" | undefined;
503
499
  readonly env?: {
@@ -543,15 +539,15 @@ export declare const ManifestEnvironmentsMap: Schema.SchemaClass<{
543
539
  readonly port?: number | undefined;
544
540
  readonly env?: readonly string[] | undefined;
545
541
  readonly resources?: readonly string[] | undefined;
546
- readonly replicas?: number | undefined;
542
+ readonly instances?: number | undefined;
543
+ readonly max_instances?: number | undefined;
547
544
  readonly command?: string | undefined;
548
- readonly internal_port?: number | undefined;
549
- readonly instance_type?: "standard" | "large" | "xlarge" | "nano" | "micro" | "small" | undefined;
545
+ readonly instance_type?: "nano" | "micro" | "standard" | "large" | "xlarge" | "small" | undefined;
550
546
  readonly cron_schedule?: string | undefined;
551
547
  readonly regions?: readonly ("fsn1" | "nbg1" | "hel1" | "ash1" | "hil1")[] | undefined;
552
548
  readonly scale_to_zero?: boolean | undefined;
553
549
  readonly idle_timeout_seconds?: number | undefined;
554
- readonly min_replicas?: number | undefined;
550
+ readonly min_instances?: number | undefined;
555
551
  }[] | undefined;
556
552
  readonly region?: "fsn1" | "nbg1" | "hel1" | "ash1" | "hil1" | undefined;
557
553
  readonly env?: {
@@ -597,15 +593,15 @@ export declare const ManifestEnvironmentsMap: Schema.SchemaClass<{
597
593
  readonly port?: number | undefined;
598
594
  readonly env?: readonly string[] | undefined;
599
595
  readonly resources?: readonly string[] | undefined;
600
- readonly replicas?: number | undefined;
596
+ readonly instances?: number | undefined;
597
+ readonly max_instances?: number | undefined;
601
598
  readonly command?: string | undefined;
602
- readonly internal_port?: number | undefined;
603
- readonly instance_type?: "standard" | "large" | "xlarge" | "nano" | "micro" | "small" | undefined;
599
+ readonly instance_type?: "nano" | "micro" | "standard" | "large" | "xlarge" | "small" | undefined;
604
600
  readonly cron_schedule?: string | undefined;
605
601
  readonly regions?: readonly ("fsn1" | "nbg1" | "hel1" | "ash1" | "hil1")[] | undefined;
606
602
  readonly scale_to_zero?: boolean | undefined;
607
603
  readonly idle_timeout_seconds?: number | undefined;
608
- readonly min_replicas?: number | undefined;
604
+ readonly min_instances?: number | undefined;
609
605
  }[] | undefined;
610
606
  readonly region?: "fsn1" | "nbg1" | "hel1" | "ash1" | "hil1" | undefined;
611
607
  readonly env?: {
@@ -651,15 +647,15 @@ export declare const ManifestEnvironmentsMap: Schema.SchemaClass<{
651
647
  readonly port?: number | undefined;
652
648
  readonly env?: readonly string[] | undefined;
653
649
  readonly resources?: readonly string[] | undefined;
654
- readonly replicas?: number | undefined;
650
+ readonly instances?: number | undefined;
651
+ readonly max_instances?: number | undefined;
655
652
  readonly command?: string | undefined;
656
- readonly internal_port?: number | undefined;
657
- readonly instance_type?: "standard" | "large" | "xlarge" | "nano" | "micro" | "small" | undefined;
653
+ readonly instance_type?: "nano" | "micro" | "standard" | "large" | "xlarge" | "small" | undefined;
658
654
  readonly cron_schedule?: string | undefined;
659
655
  readonly regions?: readonly ("fsn1" | "nbg1" | "hel1" | "ash1" | "hil1")[] | undefined;
660
656
  readonly scale_to_zero?: boolean | undefined;
661
657
  readonly idle_timeout_seconds?: number | undefined;
662
- readonly min_replicas?: number | undefined;
658
+ readonly min_instances?: number | undefined;
663
659
  }[] | undefined;
664
660
  readonly region?: "fsn1" | "nbg1" | "hel1" | "ash1" | "hil1" | undefined;
665
661
  readonly env?: {
@@ -706,15 +702,15 @@ export declare const ManifestEnvironmentsMap: Schema.SchemaClass<{
706
702
  readonly port?: number | undefined;
707
703
  readonly env?: readonly string[] | undefined;
708
704
  readonly resources?: readonly string[] | undefined;
709
- readonly replicas?: number | undefined;
705
+ readonly instances?: number | undefined;
706
+ readonly max_instances?: number | undefined;
710
707
  readonly command?: string | undefined;
711
- readonly internal_port?: number | undefined;
712
- readonly instance_type?: "standard" | "large" | "xlarge" | "nano" | "micro" | "small" | undefined;
708
+ readonly instance_type?: "nano" | "micro" | "standard" | "large" | "xlarge" | "small" | undefined;
713
709
  readonly cron_schedule?: string | undefined;
714
710
  readonly regions?: readonly ("fsn1" | "nbg1" | "hel1" | "ash1" | "hil1")[] | undefined;
715
711
  readonly scale_to_zero?: boolean | undefined;
716
712
  readonly idle_timeout_seconds?: number | undefined;
717
- readonly min_replicas?: number | undefined;
713
+ readonly min_instances?: number | undefined;
718
714
  }[] | undefined;
719
715
  readonly region?: "fsn1" | "nbg1" | "hel1" | "ash1" | "hil1" | undefined;
720
716
  readonly env?: {
@@ -760,15 +756,15 @@ export declare const ManifestEnvironmentsMap: Schema.SchemaClass<{
760
756
  readonly port?: number | undefined;
761
757
  readonly env?: readonly string[] | undefined;
762
758
  readonly resources?: readonly string[] | undefined;
763
- readonly replicas?: number | undefined;
759
+ readonly instances?: number | undefined;
760
+ readonly max_instances?: number | undefined;
764
761
  readonly command?: string | undefined;
765
- readonly internal_port?: number | undefined;
766
- readonly instance_type?: "standard" | "large" | "xlarge" | "nano" | "micro" | "small" | undefined;
762
+ readonly instance_type?: "nano" | "micro" | "standard" | "large" | "xlarge" | "small" | undefined;
767
763
  readonly cron_schedule?: string | undefined;
768
764
  readonly regions?: readonly ("fsn1" | "nbg1" | "hel1" | "ash1" | "hil1")[] | undefined;
769
765
  readonly scale_to_zero?: boolean | undefined;
770
766
  readonly idle_timeout_seconds?: number | undefined;
771
- readonly min_replicas?: number | undefined;
767
+ readonly min_instances?: number | undefined;
772
768
  }[] | undefined;
773
769
  readonly region?: "fsn1" | "nbg1" | "hel1" | "ash1" | "hil1" | undefined;
774
770
  readonly env?: {
@@ -814,15 +810,15 @@ export declare const ManifestEnvironmentsMap: Schema.SchemaClass<{
814
810
  readonly port?: number | undefined;
815
811
  readonly env?: readonly string[] | undefined;
816
812
  readonly resources?: readonly string[] | undefined;
817
- readonly replicas?: number | undefined;
813
+ readonly instances?: number | undefined;
814
+ readonly max_instances?: number | undefined;
818
815
  readonly command?: string | undefined;
819
- readonly internal_port?: number | undefined;
820
- readonly instance_type?: "standard" | "large" | "xlarge" | "nano" | "micro" | "small" | undefined;
816
+ readonly instance_type?: "nano" | "micro" | "standard" | "large" | "xlarge" | "small" | undefined;
821
817
  readonly cron_schedule?: string | undefined;
822
818
  readonly regions?: readonly ("fsn1" | "nbg1" | "hel1" | "ash1" | "hil1")[] | undefined;
823
819
  readonly scale_to_zero?: boolean | undefined;
824
820
  readonly idle_timeout_seconds?: number | undefined;
825
- readonly min_replicas?: number | undefined;
821
+ readonly min_instances?: number | undefined;
826
822
  }[] | undefined;
827
823
  readonly region?: "fsn1" | "nbg1" | "hel1" | "ash1" | "hil1" | undefined;
828
824
  readonly env?: {
@@ -868,15 +864,15 @@ export declare const ManifestEnvironmentsMap: Schema.SchemaClass<{
868
864
  readonly port?: number | undefined;
869
865
  readonly env?: readonly string[] | undefined;
870
866
  readonly resources?: readonly string[] | undefined;
871
- readonly replicas?: number | undefined;
867
+ readonly instances?: number | undefined;
868
+ readonly max_instances?: number | undefined;
872
869
  readonly command?: string | undefined;
873
- readonly internal_port?: number | undefined;
874
- readonly instance_type?: "standard" | "large" | "xlarge" | "nano" | "micro" | "small" | undefined;
870
+ readonly instance_type?: "nano" | "micro" | "standard" | "large" | "xlarge" | "small" | undefined;
875
871
  readonly cron_schedule?: string | undefined;
876
872
  readonly regions?: readonly ("fsn1" | "nbg1" | "hel1" | "ash1" | "hil1")[] | undefined;
877
873
  readonly scale_to_zero?: boolean | undefined;
878
874
  readonly idle_timeout_seconds?: number | undefined;
879
- readonly min_replicas?: number | undefined;
875
+ readonly min_instances?: number | undefined;
880
876
  }[] | undefined;
881
877
  readonly region?: "fsn1" | "nbg1" | "hel1" | "ash1" | "hil1" | undefined;
882
878
  readonly env?: {
@@ -958,10 +954,10 @@ export declare const SylphxManifest: Schema.Struct<{
958
954
  deploy: Schema.optional<Schema.Struct<{
959
955
  /**
960
956
  * Command run before traffic cutover (DB migrations via expand-and-
961
- * contract). Runs as an ArgoCD PreSync Job (sync-wave "-1"). ADR-066.2.
957
+ * contract). Runs before the new release accepts traffic. ADR-066.2.
962
958
  */
963
959
  release_command: Schema.optional<typeof Schema.String>;
964
- /** HTTP path for K8s readinessProbe. */
960
+ /** HTTP readiness path. */
965
961
  health_check_path: Schema.optional<typeof Schema.String>;
966
962
  /** Timeout in seconds. */
967
963
  health_check_timeout: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
@@ -970,8 +966,8 @@ export declare const SylphxManifest: Schema.Struct<{
970
966
  /** Grace period before SIGKILL (seconds). */
971
967
  graceful_shutdown: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
972
968
  }>>;
973
- services: Schema.optional<Schema.Array$<Schema.Struct<{
974
- /** Service name — unique within project. Used as K8s Deployment name. */
969
+ services: Schema.optional<Schema.Array$<Schema.filter<Schema.Struct<{
970
+ /** Service name — unique within project. */
975
971
  name: Schema.filter<Schema.filter<Schema.filter<typeof Schema.String>>>;
976
972
  type: Schema.Literal<["web", "worker", "cron", "function"]>;
977
973
  /** Per-service build override. Root [build] remains the default. */
@@ -988,48 +984,45 @@ export declare const SylphxManifest: Schema.Struct<{
988
984
  path: Schema.optional<typeof Schema.String>;
989
985
  command: Schema.optional<typeof Schema.String>;
990
986
  }>>;
991
- /** Container start command. */
987
+ /** Service start command. */
992
988
  command: Schema.optional<typeof Schema.String>;
993
- /** Internal container port; required for `web`. */
989
+ /** Service port; required for `web` when it cannot be detected automatically. */
994
990
  port: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
995
- /**
996
- * Public HTTP port (Gateway API listener). Defaults to 443 for web.
997
- * Most users leave unset.
998
- */
999
- internal_port: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
1000
- /** Replica count. Ignored for `cron`. */
1001
- replicas: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
1002
- /** Compute size; maps to per-service K8s resources.requests/limits. */
991
+ /** Explicit instance count. Ignored for `cron`. */
992
+ instances: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
993
+ /** Compute size; maps to per-service runtime resources. */
1003
994
  instance_type: Schema.optional<Schema.Literal<["nano", "micro", "small", "standard", "large", "xlarge"]>>;
1004
995
  /** Required when type=cron. Standard 5-field cron expression. */
1005
996
  cron_schedule: Schema.optional<typeof Schema.String>;
1006
997
  /** Optional per-service region override. */
1007
998
  regions: Schema.optional<Schema.Array$<Schema.Literal<["fsn1", "nbg1", "hel1", "ash1", "hil1"]>>>;
1008
- /**
1009
- * Scale-to-zero (KEDA). `false` (default) = pinned at `min_replicas >= 1`;
1010
- * `true` = the reconciler emits a KEDA ScaledObject and lets KEDA drive
1011
- * the replica count from 0 → N on incoming traffic (docs/design/scale-to-zero.md).
1012
- */
999
+ /** Scale-to-zero. `false` (default) = pinned at `min_instances >= 1`. */
1013
1000
  scale_to_zero: Schema.optional<typeof Schema.Boolean>;
1014
1001
  /**
1015
- * Seconds of no traffic before KEDA scales the Deployment down to 0.
1016
- * Maps to KEDA `cooldownPeriod`. Only meaningful when `scale_to_zero=true`.
1002
+ * Seconds of no traffic before the platform scales the service down to 0.
1003
+ * Only meaningful when `scale_to_zero=true`.
1017
1004
  * Range: 60s–3600s. Default: 300 (5 min).
1018
1005
  */
1019
1006
  idle_timeout_seconds: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
1020
1007
  /**
1021
- * Minimum replica count. Default: `0` when `scale_to_zero=true`, else `1`.
1022
- * Setting `min_replicas=1` alongside `scale_to_zero=true` keeps a warm
1023
- * floor while still letting KEDA scale horizontally beyond 1.
1008
+ * Minimum instance count. Default: `0` when `scale_to_zero=true`, else `1`.
1009
+ * Setting `min_instances=1` alongside `scale_to_zero=true` keeps a warm
1010
+ * floor while still allowing horizontal scale-out beyond 1.
1024
1011
  */
1025
- min_replicas: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
1012
+ min_instances: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
1013
+ /** Optional upper bound for platform-managed horizontal scale-out. */
1014
+ max_instances: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
1026
1015
  /** Per-service env var merge — refs entries from top-level [env]. */
1027
1016
  env: Schema.optional<Schema.Array$<typeof Schema.String>>;
1028
- /** Per-service resource bindings (by resource name). */
1017
+ /**
1018
+ * Reserved for declarative service-scoped managed resource bindings.
1019
+ * Current push-webhook support is environment-scoped via top-level [resources.*],
1020
+ * so deploy parsing fails closed if this field is present.
1021
+ */
1029
1022
  resources: Schema.optional<Schema.Array$<Schema.filter<Schema.filter<Schema.filter<typeof Schema.String>>>>>;
1030
1023
  /** Paths whose changes should trigger this service in monorepos. */
1031
1024
  watch_paths: Schema.optional<Schema.Array$<typeof Schema.String>>;
1032
- }>>>;
1025
+ }>>>>;
1033
1026
  database: Schema.optional<Schema.Struct<{
1034
1027
  migrations: Schema.optional<Schema.Struct<{
1035
1028
  engine: Schema.Literal<["atlas", "drizzle", "prisma", "alembic", "flyway", "goose", "sqlx", "custom"]>;
@@ -1074,15 +1067,15 @@ export declare const SylphxManifest: Schema.Struct<{
1074
1067
  readonly port?: number | undefined;
1075
1068
  readonly env?: readonly string[] | undefined;
1076
1069
  readonly resources?: readonly string[] | undefined;
1077
- readonly replicas?: number | undefined;
1070
+ readonly instances?: number | undefined;
1071
+ readonly max_instances?: number | undefined;
1078
1072
  readonly command?: string | undefined;
1079
- readonly internal_port?: number | undefined;
1080
- readonly instance_type?: "standard" | "large" | "xlarge" | "nano" | "micro" | "small" | undefined;
1073
+ readonly instance_type?: "nano" | "micro" | "standard" | "large" | "xlarge" | "small" | undefined;
1081
1074
  readonly cron_schedule?: string | undefined;
1082
1075
  readonly regions?: readonly ("fsn1" | "nbg1" | "hel1" | "ash1" | "hil1")[] | undefined;
1083
1076
  readonly scale_to_zero?: boolean | undefined;
1084
1077
  readonly idle_timeout_seconds?: number | undefined;
1085
- readonly min_replicas?: number | undefined;
1078
+ readonly min_instances?: number | undefined;
1086
1079
  }[] | undefined;
1087
1080
  readonly region?: "fsn1" | "nbg1" | "hel1" | "ash1" | "hil1" | undefined;
1088
1081
  readonly env?: {
@@ -1128,15 +1121,15 @@ export declare const SylphxManifest: Schema.Struct<{
1128
1121
  readonly port?: number | undefined;
1129
1122
  readonly env?: readonly string[] | undefined;
1130
1123
  readonly resources?: readonly string[] | undefined;
1131
- readonly replicas?: number | undefined;
1124
+ readonly instances?: number | undefined;
1125
+ readonly max_instances?: number | undefined;
1132
1126
  readonly command?: string | undefined;
1133
- readonly internal_port?: number | undefined;
1134
- readonly instance_type?: "standard" | "large" | "xlarge" | "nano" | "micro" | "small" | undefined;
1127
+ readonly instance_type?: "nano" | "micro" | "standard" | "large" | "xlarge" | "small" | undefined;
1135
1128
  readonly cron_schedule?: string | undefined;
1136
1129
  readonly regions?: readonly ("fsn1" | "nbg1" | "hel1" | "ash1" | "hil1")[] | undefined;
1137
1130
  readonly scale_to_zero?: boolean | undefined;
1138
1131
  readonly idle_timeout_seconds?: number | undefined;
1139
- readonly min_replicas?: number | undefined;
1132
+ readonly min_instances?: number | undefined;
1140
1133
  }[] | undefined;
1141
1134
  readonly region?: "fsn1" | "nbg1" | "hel1" | "ash1" | "hil1" | undefined;
1142
1135
  readonly env?: {
@@ -1182,15 +1175,15 @@ export declare const SylphxManifest: Schema.Struct<{
1182
1175
  readonly port?: number | undefined;
1183
1176
  readonly env?: readonly string[] | undefined;
1184
1177
  readonly resources?: readonly string[] | undefined;
1185
- readonly replicas?: number | undefined;
1178
+ readonly instances?: number | undefined;
1179
+ readonly max_instances?: number | undefined;
1186
1180
  readonly command?: string | undefined;
1187
- readonly internal_port?: number | undefined;
1188
- readonly instance_type?: "standard" | "large" | "xlarge" | "nano" | "micro" | "small" | undefined;
1181
+ readonly instance_type?: "nano" | "micro" | "standard" | "large" | "xlarge" | "small" | undefined;
1189
1182
  readonly cron_schedule?: string | undefined;
1190
1183
  readonly regions?: readonly ("fsn1" | "nbg1" | "hel1" | "ash1" | "hil1")[] | undefined;
1191
1184
  readonly scale_to_zero?: boolean | undefined;
1192
1185
  readonly idle_timeout_seconds?: number | undefined;
1193
- readonly min_replicas?: number | undefined;
1186
+ readonly min_instances?: number | undefined;
1194
1187
  }[] | undefined;
1195
1188
  readonly region?: "fsn1" | "nbg1" | "hel1" | "ash1" | "hil1" | undefined;
1196
1189
  readonly env?: {
@@ -1236,15 +1229,15 @@ export declare const SylphxManifest: Schema.Struct<{
1236
1229
  readonly port?: number | undefined;
1237
1230
  readonly env?: readonly string[] | undefined;
1238
1231
  readonly resources?: readonly string[] | undefined;
1239
- readonly replicas?: number | undefined;
1232
+ readonly instances?: number | undefined;
1233
+ readonly max_instances?: number | undefined;
1240
1234
  readonly command?: string | undefined;
1241
- readonly internal_port?: number | undefined;
1242
- readonly instance_type?: "standard" | "large" | "xlarge" | "nano" | "micro" | "small" | undefined;
1235
+ readonly instance_type?: "nano" | "micro" | "standard" | "large" | "xlarge" | "small" | undefined;
1243
1236
  readonly cron_schedule?: string | undefined;
1244
1237
  readonly regions?: readonly ("fsn1" | "nbg1" | "hel1" | "ash1" | "hil1")[] | undefined;
1245
1238
  readonly scale_to_zero?: boolean | undefined;
1246
1239
  readonly idle_timeout_seconds?: number | undefined;
1247
- readonly min_replicas?: number | undefined;
1240
+ readonly min_instances?: number | undefined;
1248
1241
  }[] | undefined;
1249
1242
  readonly region?: "fsn1" | "nbg1" | "hel1" | "ash1" | "hil1" | undefined;
1250
1243
  readonly env?: {
@@ -1291,15 +1284,15 @@ export declare const SylphxManifest: Schema.Struct<{
1291
1284
  readonly port?: number | undefined;
1292
1285
  readonly env?: readonly string[] | undefined;
1293
1286
  readonly resources?: readonly string[] | undefined;
1294
- readonly replicas?: number | undefined;
1287
+ readonly instances?: number | undefined;
1288
+ readonly max_instances?: number | undefined;
1295
1289
  readonly command?: string | undefined;
1296
- readonly internal_port?: number | undefined;
1297
- readonly instance_type?: "standard" | "large" | "xlarge" | "nano" | "micro" | "small" | undefined;
1290
+ readonly instance_type?: "nano" | "micro" | "standard" | "large" | "xlarge" | "small" | undefined;
1298
1291
  readonly cron_schedule?: string | undefined;
1299
1292
  readonly regions?: readonly ("fsn1" | "nbg1" | "hel1" | "ash1" | "hil1")[] | undefined;
1300
1293
  readonly scale_to_zero?: boolean | undefined;
1301
1294
  readonly idle_timeout_seconds?: number | undefined;
1302
- readonly min_replicas?: number | undefined;
1295
+ readonly min_instances?: number | undefined;
1303
1296
  }[] | undefined;
1304
1297
  readonly region?: "fsn1" | "nbg1" | "hel1" | "ash1" | "hil1" | undefined;
1305
1298
  readonly env?: {
@@ -1345,15 +1338,15 @@ export declare const SylphxManifest: Schema.Struct<{
1345
1338
  readonly port?: number | undefined;
1346
1339
  readonly env?: readonly string[] | undefined;
1347
1340
  readonly resources?: readonly string[] | undefined;
1348
- readonly replicas?: number | undefined;
1341
+ readonly instances?: number | undefined;
1342
+ readonly max_instances?: number | undefined;
1349
1343
  readonly command?: string | undefined;
1350
- readonly internal_port?: number | undefined;
1351
- readonly instance_type?: "standard" | "large" | "xlarge" | "nano" | "micro" | "small" | undefined;
1344
+ readonly instance_type?: "nano" | "micro" | "standard" | "large" | "xlarge" | "small" | undefined;
1352
1345
  readonly cron_schedule?: string | undefined;
1353
1346
  readonly regions?: readonly ("fsn1" | "nbg1" | "hel1" | "ash1" | "hil1")[] | undefined;
1354
1347
  readonly scale_to_zero?: boolean | undefined;
1355
1348
  readonly idle_timeout_seconds?: number | undefined;
1356
- readonly min_replicas?: number | undefined;
1349
+ readonly min_instances?: number | undefined;
1357
1350
  }[] | undefined;
1358
1351
  readonly region?: "fsn1" | "nbg1" | "hel1" | "ash1" | "hil1" | undefined;
1359
1352
  readonly env?: {
@@ -1399,15 +1392,15 @@ export declare const SylphxManifest: Schema.Struct<{
1399
1392
  readonly port?: number | undefined;
1400
1393
  readonly env?: readonly string[] | undefined;
1401
1394
  readonly resources?: readonly string[] | undefined;
1402
- readonly replicas?: number | undefined;
1395
+ readonly instances?: number | undefined;
1396
+ readonly max_instances?: number | undefined;
1403
1397
  readonly command?: string | undefined;
1404
- readonly internal_port?: number | undefined;
1405
- readonly instance_type?: "standard" | "large" | "xlarge" | "nano" | "micro" | "small" | undefined;
1398
+ readonly instance_type?: "nano" | "micro" | "standard" | "large" | "xlarge" | "small" | undefined;
1406
1399
  readonly cron_schedule?: string | undefined;
1407
1400
  readonly regions?: readonly ("fsn1" | "nbg1" | "hel1" | "ash1" | "hil1")[] | undefined;
1408
1401
  readonly scale_to_zero?: boolean | undefined;
1409
1402
  readonly idle_timeout_seconds?: number | undefined;
1410
- readonly min_replicas?: number | undefined;
1403
+ readonly min_instances?: number | undefined;
1411
1404
  }[] | undefined;
1412
1405
  readonly region?: "fsn1" | "nbg1" | "hel1" | "ash1" | "hil1" | undefined;
1413
1406
  readonly env?: {
@@ -1453,15 +1446,15 @@ export declare const SylphxManifest: Schema.Struct<{
1453
1446
  readonly port?: number | undefined;
1454
1447
  readonly env?: readonly string[] | undefined;
1455
1448
  readonly resources?: readonly string[] | undefined;
1456
- readonly replicas?: number | undefined;
1449
+ readonly instances?: number | undefined;
1450
+ readonly max_instances?: number | undefined;
1457
1451
  readonly command?: string | undefined;
1458
- readonly internal_port?: number | undefined;
1459
- readonly instance_type?: "standard" | "large" | "xlarge" | "nano" | "micro" | "small" | undefined;
1452
+ readonly instance_type?: "nano" | "micro" | "standard" | "large" | "xlarge" | "small" | undefined;
1460
1453
  readonly cron_schedule?: string | undefined;
1461
1454
  readonly regions?: readonly ("fsn1" | "nbg1" | "hel1" | "ash1" | "hil1")[] | undefined;
1462
1455
  readonly scale_to_zero?: boolean | undefined;
1463
1456
  readonly idle_timeout_seconds?: number | undefined;
1464
- readonly min_replicas?: number | undefined;
1457
+ readonly min_instances?: number | undefined;
1465
1458
  }[] | undefined;
1466
1459
  readonly region?: "fsn1" | "nbg1" | "hel1" | "ash1" | "hil1" | undefined;
1467
1460
  readonly env?: {
@@ -1498,37 +1491,37 @@ export declare const SylphxManifest: Schema.Struct<{
1498
1491
  database: Schema.optional<Schema.Struct<{
1499
1492
  /** Capability-specific engine. PostgreSQL is the first supported database engine. */
1500
1493
  engine: Schema.optional<Schema.Literal<["postgres"]>>;
1501
- /** CNPG tier; IMMUTABLE after creation. */
1494
+ /** Product tier; IMMUTABLE after creation. */
1502
1495
  tier: Schema.Literal<["nano", "micro", "standard", "large", "xl", "hobby", "starter", "pro", "business", "enterprise", "enterprise-2x", "enterprise-4x"]>;
1503
1496
  storage_gb: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
1504
1497
  version: Schema.optional<Schema.Literal<["15", "16", "17"]>>;
1505
- /** Enable CNPG read-replica(s). */
1506
- replicas: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
1498
+ /** Optional managed read replicas. */
1499
+ read_replicas: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
1507
1500
  /** Branch-per-preview (P0 gap #4 sibling). */
1508
1501
  branch_on_preview: Schema.optional<typeof Schema.Boolean>;
1509
1502
  }>>;
1510
1503
  kv: Schema.optional<Schema.Struct<{
1511
- /** Capability-specific engine. Valkey is the first supported KV engine. */
1512
- engine: Schema.optional<Schema.Literal<["valkey"]>>;
1504
+ engine: Schema.optionalWith<typeof Schema.Never, {
1505
+ exact: true;
1506
+ }>;
1513
1507
  tier: Schema.Literal<["nano", "micro", "standard", "large", "xl", "hobby", "starter", "pro", "business", "enterprise", "enterprise-2x", "enterprise-4x"]>;
1514
1508
  storage_gb: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
1515
1509
  }>>;
1516
1510
  search: Schema.optional<Schema.Struct<{
1517
- /** Capability-specific engine. Typesense is the first supported search engine. */
1518
- engine: Schema.optional<Schema.Literal<["typesense"]>>;
1511
+ engine: Schema.optionalWith<typeof Schema.Never, {
1512
+ exact: true;
1513
+ }>;
1519
1514
  tier: Schema.Literal<["nano", "micro", "standard", "large", "xl", "hobby", "starter", "pro", "business", "enterprise", "enterprise-2x", "enterprise-4x"]>;
1520
1515
  storage_gb: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
1521
- nodes: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
1522
1516
  }>>;
1523
1517
  volume: Schema.optional<Schema.Struct<{
1524
1518
  tier: Schema.Literal<["nano", "micro", "standard", "large", "xl", "hobby", "starter", "pro", "business", "enterprise", "enterprise-2x", "enterprise-4x"]>;
1525
1519
  storage_gb: Schema.optional<Schema.filter<Schema.filter<typeof Schema.Number>>>;
1526
1520
  /**
1527
- * ReadWriteMany is required when a volume is shared by multiple sandboxes,
1528
- * workers, or replicas. ReadWriteOnce remains valid for single-writer app
1529
- * disks.
1521
+ * Public sharing intent. The platform maps this to the best backend storage
1522
+ * class without exposing implementation details.
1530
1523
  */
1531
- access_mode: Schema.optional<Schema.Literal<["ReadWriteOnce", "ReadWriteMany"]>>;
1524
+ sharing: Schema.optional<Schema.Literal<["single-writer", "shared"]>>;
1532
1525
  /**
1533
1526
  * Optional env-facing path metadata. This does not mount the volume into an
1534
1527
  * app service by itself; service/task mounts stay explicit bindings.
@@ -1562,13 +1555,13 @@ export type SylphxManifest = typeof SylphxManifest.Type;
1562
1555
  * the schema above.
1563
1556
  */
1564
1557
  export interface ResolvedScaleToZero {
1565
- /** Whether the service opts into KEDA-managed scale-to-zero. */
1558
+ /** Whether the service opts into platform-managed scale-to-zero. */
1566
1559
  scaleToZero: boolean;
1567
- /** KEDA `cooldownPeriod` (seconds). Meaningful only when scaleToZero=true. */
1560
+ /** Idle cooldown in seconds. Meaningful only when scaleToZero=true. */
1568
1561
  idleTimeoutSeconds: number;
1569
- /** KEDA `minReplicaCount`. 0 iff `scaleToZero=true` and caller didn't pin a warm floor. */
1562
+ /** Minimum warm instances. 0 iff `scaleToZero=true` and caller didn't pin a warm floor. */
1570
1563
  minReplicas: number;
1571
- /** KEDA `maxReplicaCount`. Upper bound for horizontal scaling. */
1564
+ /** Upper bound for horizontal scaling. */
1572
1565
  maxReplicas: number;
1573
1566
  }
1574
1567
  /**
@@ -1579,11 +1572,11 @@ export interface ResolvedScaleToZero {
1579
1572
  export declare const SCALE_TO_ZERO_DEFAULTS: {
1580
1573
  /** Idle timeout in seconds when caller didn't provide one. */
1581
1574
  readonly idleTimeoutSeconds: 300;
1582
- /** Min replicas when the service opted into scale-to-zero. */
1575
+ /** Min instances when the service opted into scale-to-zero. */
1583
1576
  readonly minReplicasScaleToZero: 0;
1584
- /** Min replicas when the service did NOT opt in (pinned warm). */
1577
+ /** Min instances when the service did NOT opt in (pinned warm). */
1585
1578
  readonly minReplicasWarm: 1;
1586
- /** Max replicas fallback when neither manifest nor compute profile specify. */
1579
+ /** Max instances fallback when neither manifest nor compute profile specify. */
1587
1580
  readonly maxReplicasDefault: 10;
1588
1581
  };
1589
1582
  /**
@@ -1595,7 +1588,7 @@ export declare const SCALE_TO_ZERO_DEFAULTS: {
1595
1588
  * Pass `null`/`undefined` for "no scale-to-zero".
1596
1589
  * @param explicitMax - Optional per-tier ceiling (e.g. resolved from
1597
1590
  * compute profile). Takes precedence over the static
1598
- * 10-replica fallback but not over an input.maxReplicas.
1591
+ * 10-instance fallback but not over an input.maxReplicas.
1599
1592
  */
1600
1593
  export declare function resolveScaleToZeroDefaults(input: {
1601
1594
  scaleToZero?: boolean;