@ever-works/contracts 1.0.0 → 1.0.2
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.
- package/dist/api/index.d.cts +3 -132
- package/dist/api/index.d.ts +3 -132
- package/dist/domain/index.cjs +52 -1
- package/dist/domain/index.d.cts +44 -3
- package/dist/domain/index.d.ts +44 -3
- package/dist/domain/index.js +52 -2
- package/dist/feed.types-BUfAuVJZ.d.cts +1372 -0
- package/dist/feed.types-BUfAuVJZ.d.ts +1372 -0
- package/dist/index.cjs +4002 -2
- package/dist/index.d.cts +7637 -6
- package/dist/index.d.ts +7637 -6
- package/dist/index.js +3274 -3
- package/package.json +4 -4
- package/dist/feed.types-BWk3CHqj.d.cts +0 -355
- package/dist/feed.types-BWk3CHqj.d.ts +0 -355
package/dist/index.cjs
CHANGED
|
@@ -16,7 +16,8 @@ var USER_SELECTABLE_WORK_KINDS = [
|
|
|
16
16
|
"blog",
|
|
17
17
|
"directory",
|
|
18
18
|
"awesome-repo",
|
|
19
|
-
"repo"
|
|
19
|
+
"repo",
|
|
20
|
+
"app"
|
|
20
21
|
];
|
|
21
22
|
var WORK_KINDS = [...USER_SELECTABLE_WORK_KINDS, "company", "campaign", "default"];
|
|
22
23
|
var WORK_KIND_SET = new Set(WORK_KINDS);
|
|
@@ -41,6 +42,9 @@ function isUserSelectableWorkKind(value) {
|
|
|
41
42
|
function isRepositoryWorkKind(value) {
|
|
42
43
|
return normalizeWorkKind(value) === "repo";
|
|
43
44
|
}
|
|
45
|
+
function isAppWorkKind(value) {
|
|
46
|
+
return normalizeWorkKind(value) === "app";
|
|
47
|
+
}
|
|
44
48
|
|
|
45
49
|
// src/domain/goal-kind.ts
|
|
46
50
|
var GOAL_KINDS = ["metric", "delivery"];
|
|
@@ -196,6 +200,8 @@ var DIRECTORY_CAPABILITIES = {
|
|
|
196
200
|
sourceValidation: true,
|
|
197
201
|
deploy: true,
|
|
198
202
|
kb: true,
|
|
203
|
+
builds: false,
|
|
204
|
+
appEnvironment: false,
|
|
199
205
|
metrics: ["total-items", "categories", "comparisons", "generation-status", "days-active"],
|
|
200
206
|
repos: { data: true, work: true, website: true }
|
|
201
207
|
};
|
|
@@ -213,6 +219,8 @@ var WORK_KIND_CAPABILITIES = {
|
|
|
213
219
|
sourceValidation: true,
|
|
214
220
|
deploy: true,
|
|
215
221
|
kb: true,
|
|
222
|
+
builds: false,
|
|
223
|
+
appEnvironment: false,
|
|
216
224
|
metrics: ["total-items", "categories", "tags", "generation-status", "days-active"],
|
|
217
225
|
repos: { data: true, work: true, website: true }
|
|
218
226
|
},
|
|
@@ -225,6 +233,8 @@ var WORK_KIND_CAPABILITIES = {
|
|
|
225
233
|
sourceValidation: false,
|
|
226
234
|
deploy: true,
|
|
227
235
|
kb: true,
|
|
236
|
+
builds: false,
|
|
237
|
+
appEnvironment: false,
|
|
228
238
|
metrics: ["posts", "page-views", "registered-users", "deploy-status", "days-active"],
|
|
229
239
|
repos: { data: true, work: true, website: true }
|
|
230
240
|
},
|
|
@@ -237,6 +247,8 @@ var WORK_KIND_CAPABILITIES = {
|
|
|
237
247
|
sourceValidation: false,
|
|
238
248
|
deploy: true,
|
|
239
249
|
kb: true,
|
|
250
|
+
builds: false,
|
|
251
|
+
appEnvironment: false,
|
|
240
252
|
metrics: ["page-views", "registered-users", "sessions", "deploy-status", "generation-status"],
|
|
241
253
|
repos: { data: true, work: true, website: true }
|
|
242
254
|
},
|
|
@@ -249,6 +261,8 @@ var WORK_KIND_CAPABILITIES = {
|
|
|
249
261
|
sourceValidation: false,
|
|
250
262
|
deploy: true,
|
|
251
263
|
kb: true,
|
|
264
|
+
builds: false,
|
|
265
|
+
appEnvironment: false,
|
|
252
266
|
metrics: ["page-views", "conversions", "deploy-status", "days-active"],
|
|
253
267
|
repos: { data: true, work: true, website: true }
|
|
254
268
|
},
|
|
@@ -272,6 +286,8 @@ var WORK_KIND_CAPABILITIES = {
|
|
|
272
286
|
sourceValidation: false,
|
|
273
287
|
deploy: false,
|
|
274
288
|
kb: true,
|
|
289
|
+
builds: false,
|
|
290
|
+
appEnvironment: false,
|
|
275
291
|
metrics: ["agents", "open-tasks", "days-active"],
|
|
276
292
|
repos: { data: true, work: false, website: false }
|
|
277
293
|
},
|
|
@@ -286,6 +302,8 @@ var WORK_KIND_CAPABILITIES = {
|
|
|
286
302
|
sourceValidation: false,
|
|
287
303
|
deploy: false,
|
|
288
304
|
kb: true,
|
|
305
|
+
builds: false,
|
|
306
|
+
appEnvironment: false,
|
|
289
307
|
metrics: ["works-owned", "team-members", "agents", "open-tasks", "days-active"],
|
|
290
308
|
repos: { data: true, work: true, website: false }
|
|
291
309
|
},
|
|
@@ -305,8 +323,40 @@ var WORK_KIND_CAPABILITIES = {
|
|
|
305
323
|
sourceValidation: false,
|
|
306
324
|
deploy: false,
|
|
307
325
|
kb: true,
|
|
326
|
+
builds: false,
|
|
327
|
+
appEnvironment: false,
|
|
308
328
|
metrics: ["agents", "open-tasks", "conversions", "days-active"],
|
|
309
329
|
repos: { data: true, work: true, website: false }
|
|
330
|
+
},
|
|
331
|
+
// An App Work wraps code the platform did not generate (README D1): the
|
|
332
|
+
// repository the member pasted, forked or copied IS its Work Repository,
|
|
333
|
+
// so the persisted `website` role is on and the `data` role — which holds
|
|
334
|
+
// a Work's generated data — is off. Nothing item-shaped applies: no
|
|
335
|
+
// items, taxonomy, comparisons, community-PR intake, import/export or
|
|
336
|
+
// source validation, and no generated site to render.
|
|
337
|
+
//
|
|
338
|
+
// `deploy` is ON where `repo` refuses it, which is the whole point of the
|
|
339
|
+
// kind: the second contract invariant this entry replaces is "a kind
|
|
340
|
+
// deploys only with a repository to deploy" — an App Work deploys the
|
|
341
|
+
// Work Repository without ever having generated one.
|
|
342
|
+
//
|
|
343
|
+
// `builds` and `appEnvironment` (Resolution R-7) are true HERE ONLY — the
|
|
344
|
+
// two flags exist so APW-05's Builds surface and APW-07's App env /
|
|
345
|
+
// dependencies surfaces can hang off the registry instead of off
|
|
346
|
+
// `kind === 'app'` inline tests, exactly as `deploy` does.
|
|
347
|
+
app: {
|
|
348
|
+
items: { enabled: false, labelKey: "items" },
|
|
349
|
+
taxonomy: false,
|
|
350
|
+
comparisons: false,
|
|
351
|
+
communityPr: false,
|
|
352
|
+
itemImportExport: false,
|
|
353
|
+
sourceValidation: false,
|
|
354
|
+
deploy: true,
|
|
355
|
+
kb: true,
|
|
356
|
+
builds: true,
|
|
357
|
+
appEnvironment: true,
|
|
358
|
+
metrics: ["agents", "open-tasks", "deploy-status", "days-active"],
|
|
359
|
+
repos: { data: false, work: false, website: true }
|
|
310
360
|
}
|
|
311
361
|
};
|
|
312
362
|
function getWorkCapabilities(kind) {
|
|
@@ -316,6 +366,3120 @@ function workKindHasItems(kind) {
|
|
|
316
366
|
return getWorkCapabilities(kind).items.enabled;
|
|
317
367
|
}
|
|
318
368
|
|
|
369
|
+
// src/apps/app-dependencies.ts
|
|
370
|
+
var APP_DEPENDENCY_KINDS = ["postgres", "redis", "objectStorage", "smtp"];
|
|
371
|
+
var APP_DEPENDENCY_TARGETS = ["your-cluster", "ever-works-apps"];
|
|
372
|
+
var APP_DEPENDENCY_STATUSES = [
|
|
373
|
+
"pending",
|
|
374
|
+
"awaiting_config",
|
|
375
|
+
"provisioning",
|
|
376
|
+
"ready",
|
|
377
|
+
"degraded",
|
|
378
|
+
"failed",
|
|
379
|
+
"kept",
|
|
380
|
+
"deleting",
|
|
381
|
+
"deleted"
|
|
382
|
+
];
|
|
383
|
+
var APP_DEPENDENCY_INACTIVE_STATUSES = ["kept", "deleted"];
|
|
384
|
+
var APP_DEPENDENCY_BACKUP_POLICIES = ["none", "operator", "provider", "managed"];
|
|
385
|
+
var APP_DEPENDENCY_BACKUP_STATES = [
|
|
386
|
+
"none",
|
|
387
|
+
"not_configured",
|
|
388
|
+
"healthy",
|
|
389
|
+
"overdue",
|
|
390
|
+
"failing",
|
|
391
|
+
"external",
|
|
392
|
+
"unknown"
|
|
393
|
+
];
|
|
394
|
+
var APP_DEPENDENCY_REASONS = [
|
|
395
|
+
"noDefaultStorageClass",
|
|
396
|
+
"clusterUnreachable",
|
|
397
|
+
"smtpConnectFailed",
|
|
398
|
+
"smtpTlsFailed",
|
|
399
|
+
"smtpAuthRefused",
|
|
400
|
+
"bucketUnreadable",
|
|
401
|
+
"volumeNotReady",
|
|
402
|
+
"extensionUnavailable",
|
|
403
|
+
"platformServerRefused",
|
|
404
|
+
"deadlineExceeded",
|
|
405
|
+
"namespaceNotOwned",
|
|
406
|
+
"namespaceBaselineMissing",
|
|
407
|
+
"clusterPermissionMissing",
|
|
408
|
+
"operatorNamespaceUnknown",
|
|
409
|
+
"volumeExpansionUnsupported",
|
|
410
|
+
"sizeShrinkRefused",
|
|
411
|
+
"relayIneligible",
|
|
412
|
+
"relaySuspended",
|
|
413
|
+
"providerNotSupported",
|
|
414
|
+
"dependencyNotDeclared",
|
|
415
|
+
"confirmationMismatch",
|
|
416
|
+
"deleteInProgress",
|
|
417
|
+
"notGenerated",
|
|
418
|
+
"notAppWork",
|
|
419
|
+
// APW07-G28 — the last two of APW-06's four `unavailable` codes, in the
|
|
420
|
+
// port's own order (`target_none`, `target_not_checked`, then the two that
|
|
421
|
+
// already had a member: `namespace_owned_elsewhere` → `namespaceNotOwned`,
|
|
422
|
+
// `cluster_unreachable` → `clusterUnreachable`).
|
|
423
|
+
"targetNone",
|
|
424
|
+
"targetNotChecked"
|
|
425
|
+
];
|
|
426
|
+
var APP_DEPENDENCY_STATUS_REASONS = [
|
|
427
|
+
"noDefaultStorageClass",
|
|
428
|
+
"clusterUnreachable",
|
|
429
|
+
"smtpConnectFailed",
|
|
430
|
+
"smtpTlsFailed",
|
|
431
|
+
"smtpAuthRefused",
|
|
432
|
+
"bucketUnreadable",
|
|
433
|
+
"volumeNotReady",
|
|
434
|
+
"extensionUnavailable",
|
|
435
|
+
"platformServerRefused",
|
|
436
|
+
"deadlineExceeded",
|
|
437
|
+
"namespaceNotOwned",
|
|
438
|
+
"namespaceBaselineMissing",
|
|
439
|
+
"clusterPermissionMissing",
|
|
440
|
+
"operatorNamespaceUnknown",
|
|
441
|
+
"relayIneligible",
|
|
442
|
+
"relaySuspended",
|
|
443
|
+
// APW07-G28: the port's `target_none` / `target_not_checked`.
|
|
444
|
+
"targetNone",
|
|
445
|
+
"targetNotChecked"
|
|
446
|
+
];
|
|
447
|
+
var APP_DEPENDENCY_ERROR_CODES = [
|
|
448
|
+
"volumeExpansionUnsupported",
|
|
449
|
+
"sizeShrinkRefused",
|
|
450
|
+
"providerNotSupported",
|
|
451
|
+
"dependencyNotDeclared",
|
|
452
|
+
"confirmationMismatch",
|
|
453
|
+
"deleteInProgress",
|
|
454
|
+
"notGenerated",
|
|
455
|
+
"notAppWork"
|
|
456
|
+
];
|
|
457
|
+
var APP_DEPENDENCY_REASON_MESSAGE_LEAVES = {
|
|
458
|
+
noDefaultStorageClass: "noDefaultStorageClass",
|
|
459
|
+
clusterUnreachable: "clusterUnreachable",
|
|
460
|
+
smtpConnectFailed: "smtpConnectFailed",
|
|
461
|
+
smtpTlsFailed: "smtpTlsFailed",
|
|
462
|
+
smtpAuthRefused: "smtpAuthRefused",
|
|
463
|
+
bucketUnreadable: "bucketUnreadable",
|
|
464
|
+
volumeNotReady: "volumeNotReady",
|
|
465
|
+
extensionUnavailable: "extensionUnavailable",
|
|
466
|
+
platformServerRefused: "platformServerRefused",
|
|
467
|
+
deadlineExceeded: "deadlineExceeded",
|
|
468
|
+
namespaceNotOwned: "namespaceNotOwned",
|
|
469
|
+
namespaceBaselineMissing: "namespaceBaselineMissing",
|
|
470
|
+
clusterPermissionMissing: "clusterPermissionMissing",
|
|
471
|
+
operatorNamespaceUnknown: "operatorNamespaceUnknown",
|
|
472
|
+
volumeExpansionUnsupported: "volumeExpansionUnsupported",
|
|
473
|
+
sizeShrinkRefused: "sizeShrinkRefused",
|
|
474
|
+
relayIneligible: "relayIneligible",
|
|
475
|
+
relaySuspended: "relaySuspended",
|
|
476
|
+
providerNotSupported: "providerNotSupported",
|
|
477
|
+
dependencyNotDeclared: "dependencyNotDeclared",
|
|
478
|
+
confirmationMismatch: "confirmationMismatch",
|
|
479
|
+
deleteInProgress: "deleteInProgress",
|
|
480
|
+
notGenerated: "notGenerated",
|
|
481
|
+
notAppWork: "notAppWork",
|
|
482
|
+
// APW07-G28 — no new copy subtree: the two port preconditions get one leaf
|
|
483
|
+
// each, exactly like every other reason, and T2's spec pins them against
|
|
484
|
+
// `apps/web/messages/en.json`.
|
|
485
|
+
targetNone: "targetNone",
|
|
486
|
+
targetNotChecked: "targetNotChecked"
|
|
487
|
+
};
|
|
488
|
+
var APP_DEPENDENCY_REASON_MESSAGE_KEY_PREFIX = "dashboard.workDetail.appDependencies.reasons";
|
|
489
|
+
var APP_DEPENDENCY_STATUS_MESSAGE_LEAVES = {
|
|
490
|
+
pending: "pending",
|
|
491
|
+
awaiting_config: "awaitingConfig",
|
|
492
|
+
provisioning: "provisioning",
|
|
493
|
+
ready: "ready",
|
|
494
|
+
degraded: "degraded",
|
|
495
|
+
failed: "failed",
|
|
496
|
+
kept: "kept",
|
|
497
|
+
deleting: "deleting",
|
|
498
|
+
deleted: "deleted"
|
|
499
|
+
};
|
|
500
|
+
var APP_DEPENDENCY_STATUS_MESSAGE_KEY_PREFIX = "dashboard.workDetail.appDependencies.status";
|
|
501
|
+
var APP_DEPENDENCY_BACKUP_STATE_MESSAGE_LEAVES = {
|
|
502
|
+
none: "none",
|
|
503
|
+
not_configured: "notConfigured",
|
|
504
|
+
healthy: "healthy",
|
|
505
|
+
overdue: "overdue",
|
|
506
|
+
failing: "failing",
|
|
507
|
+
external: "external",
|
|
508
|
+
unknown: "unknown"
|
|
509
|
+
};
|
|
510
|
+
var APP_DEPENDENCY_BACKUP_STATE_MESSAGE_KEY_PREFIX = "dashboard.workDetail.appDependencies.backup";
|
|
511
|
+
function appDependencyReasonMessageKey(reason) {
|
|
512
|
+
return `${APP_DEPENDENCY_REASON_MESSAGE_KEY_PREFIX}.${APP_DEPENDENCY_REASON_MESSAGE_LEAVES[reason]}`;
|
|
513
|
+
}
|
|
514
|
+
function appDependencyStatusMessageKey(status) {
|
|
515
|
+
return `${APP_DEPENDENCY_STATUS_MESSAGE_KEY_PREFIX}.${APP_DEPENDENCY_STATUS_MESSAGE_LEAVES[status]}`;
|
|
516
|
+
}
|
|
517
|
+
function appDependencyBackupStateMessageKey(state) {
|
|
518
|
+
return `${APP_DEPENDENCY_BACKUP_STATE_MESSAGE_KEY_PREFIX}.${APP_DEPENDENCY_BACKUP_STATE_MESSAGE_LEAVES[state]}`;
|
|
519
|
+
}
|
|
520
|
+
function isAppDependencyReason(value) {
|
|
521
|
+
return APP_DEPENDENCY_REASONS.includes(value);
|
|
522
|
+
}
|
|
523
|
+
var APP_DEPENDENCY_PROVIDER_IDS = [
|
|
524
|
+
"k8s-inline-postgres",
|
|
525
|
+
"k8s-inline-redis",
|
|
526
|
+
"k8s-inline-minio",
|
|
527
|
+
"smtp-external",
|
|
528
|
+
"s3-external",
|
|
529
|
+
"platform-smtp-relay",
|
|
530
|
+
"managed-postgres",
|
|
531
|
+
"managed-redis",
|
|
532
|
+
"managed-object-storage",
|
|
533
|
+
"managed-smtp"
|
|
534
|
+
];
|
|
535
|
+
var APP_DEPENDENCY_OUTPUTS = {
|
|
536
|
+
postgres: { url: true, directUrl: true, host: false, port: false, database: false, user: false, password: true },
|
|
537
|
+
redis: { url: true, host: false, port: false, password: true },
|
|
538
|
+
objectStorage: { endpoint: false, region: false, accessKeyId: true, secretAccessKey: true, "bucket.*": false },
|
|
539
|
+
smtp: { host: false, port: false, user: false, password: true, from: false, secure: false }
|
|
540
|
+
};
|
|
541
|
+
var APP_DEPENDENCY_OUTPUT_NAMES = {
|
|
542
|
+
postgres: ["url", "directUrl", "host", "port", "database", "user", "password"],
|
|
543
|
+
redis: ["url", "host", "port", "password"],
|
|
544
|
+
objectStorage: ["endpoint", "region", "accessKeyId", "secretAccessKey", "bucket.*"],
|
|
545
|
+
smtp: ["host", "port", "user", "password", "from", "secure"]
|
|
546
|
+
};
|
|
547
|
+
var APP_DEPENDENCY_BUCKET_OUTPUT_PATTERN = "bucket.*";
|
|
548
|
+
var APP_DEPENDENCY_BUCKET_OUTPUT_PREFIX = "bucket.";
|
|
549
|
+
function appDependencyOutputNames(kind) {
|
|
550
|
+
return APP_DEPENDENCY_OUTPUT_NAMES[kind];
|
|
551
|
+
}
|
|
552
|
+
function isAppDependencyOutputSecret(kind, output) {
|
|
553
|
+
const flags = APP_DEPENDENCY_OUTPUTS[kind];
|
|
554
|
+
return flags[output] ?? true;
|
|
555
|
+
}
|
|
556
|
+
var APP_DEPENDENCY_TOKEN_SCHEME = "ew-dep://";
|
|
557
|
+
function appDependencyToken(kind, output) {
|
|
558
|
+
return `${APP_DEPENDENCY_TOKEN_SCHEME}${kind}/${output}`;
|
|
559
|
+
}
|
|
560
|
+
function parseAppDependencyToken(text) {
|
|
561
|
+
if (!text.startsWith(APP_DEPENDENCY_TOKEN_SCHEME)) return null;
|
|
562
|
+
const rest = text.slice(APP_DEPENDENCY_TOKEN_SCHEME.length);
|
|
563
|
+
const separator = rest.indexOf("/");
|
|
564
|
+
if (separator <= 0 || separator === rest.length - 1) return null;
|
|
565
|
+
const kind = rest.slice(0, separator);
|
|
566
|
+
const output = rest.slice(separator + 1);
|
|
567
|
+
if (!APP_DEPENDENCY_KINDS.includes(kind)) return null;
|
|
568
|
+
if (output.includes("/")) return null;
|
|
569
|
+
return { kind, output };
|
|
570
|
+
}
|
|
571
|
+
var APP_DEPENDENCY_TOKEN_UNKNOWN_CODE = "DEPENDENCY_TOKEN_UNKNOWN";
|
|
572
|
+
var APP_DEPENDENCY_READY_DEADLINE_MS = {
|
|
573
|
+
postgres: 6e5,
|
|
574
|
+
redis: 3e5,
|
|
575
|
+
objectStorage: 6e5,
|
|
576
|
+
smtp: 3e4
|
|
577
|
+
};
|
|
578
|
+
var APP_DEPENDENCY_EXTERNAL_TEST_MS = 3e4;
|
|
579
|
+
var APP_DEPENDENCY_DEFAULT_SIZE_GIB = { postgres: 10, objectStorage: 20, redis: 1 };
|
|
580
|
+
var APP_DEPENDENCY_TRANSIENT_ATTEMPTS = 3;
|
|
581
|
+
var APP_DEPENDENCY_RETRY_DELAY_MS = 3e5;
|
|
582
|
+
var APP_DEPENDENCY_REFRESH_AFTER_MS = 9e5;
|
|
583
|
+
var APP_DEPENDENCY_BACKUP_OVERDUE_MS = 26 * 36e5;
|
|
584
|
+
var APP_DEPENDENCY_RELAY_DAILY_LIMIT = 200;
|
|
585
|
+
var APP_DEPENDENCY_MANAGED = {
|
|
586
|
+
pgRoleConnectionLimit: 20,
|
|
587
|
+
pgDatabaseConnectionLimit: 25,
|
|
588
|
+
pgStatementTimeoutMs: 6e4,
|
|
589
|
+
pgIdleInTransactionTimeoutMs: 6e4,
|
|
590
|
+
bucketQuotaGiB: 10,
|
|
591
|
+
redisMaxMemoryMiB: 256,
|
|
592
|
+
backupMaxAgeMs: 864e5
|
|
593
|
+
};
|
|
594
|
+
var APP_DEPENDENCY_POSTGRES_DEFAULT_PORT = 5432;
|
|
595
|
+
var APP_DEPENDENCY_ZONE_BUCKET_PREFIX = "aw-";
|
|
596
|
+
var APP_DEPENDENCY_ZONE_BUCKET_NAME_SHAPE = "aw-<hex12>-<name>";
|
|
597
|
+
var APP_DEPENDENCY_ZONE_REDIS_MAX_MEMORY_MIB = 256;
|
|
598
|
+
var APP_DEPENDENCY_RELAY_LIMITS = {
|
|
599
|
+
perAccountPerDay: 1e3,
|
|
600
|
+
perOrganizationPerDay: 5e3,
|
|
601
|
+
suspendBounceRate: 0.05
|
|
602
|
+
};
|
|
603
|
+
var APP_DEPENDENCY_ENV_VARS = {
|
|
604
|
+
/** R-30 kill switch for dependency provisioning and the mail relay. */
|
|
605
|
+
depsEnabled: "EVER_WORKS_APP_DEPS_ENABLED",
|
|
606
|
+
/** R-30 kill switch for the relay alone. */
|
|
607
|
+
mailRelayEnabled: "EVER_WORKS_APP_MAIL_RELAY_ENABLED",
|
|
608
|
+
/** Comma-separated CIDRs that get past the public-endpoint guard (APW07-G09). */
|
|
609
|
+
privateAllowlist: "EVER_WORKS_APP_DEPENDENCY_PRIVATE_ALLOWLIST",
|
|
610
|
+
relayDailyLimitPerAccount: "EVER_WORKS_APP_RELAY_DAILY_LIMIT_PER_ACCOUNT",
|
|
611
|
+
relayDailyLimitPerOrganization: "EVER_WORKS_APP_RELAY_DAILY_LIMIT_PER_ORGANIZATION",
|
|
612
|
+
relaySuspendBounceRate: "EVER_WORKS_APP_RELAY_SUSPEND_BOUNCE_RATE",
|
|
613
|
+
/** Per-App-Work daily relay cap override — CONTRACTS §7A:669. */
|
|
614
|
+
mailMaxPerDay: "EVER_WORKS_APP_MAIL_MAX_PER_DAY"
|
|
615
|
+
};
|
|
616
|
+
function isAppDependencyBackupOverdue(lastBackupAt, now) {
|
|
617
|
+
if (!lastBackupAt) return false;
|
|
618
|
+
const last = Date.parse(lastBackupAt);
|
|
619
|
+
if (Number.isNaN(last)) return false;
|
|
620
|
+
return now - last > APP_DEPENDENCY_BACKUP_OVERDUE_MS;
|
|
621
|
+
}
|
|
622
|
+
function appDependencyReadyDeadlineMs(kind) {
|
|
623
|
+
return APP_DEPENDENCY_READY_DEADLINE_MS[kind];
|
|
624
|
+
}
|
|
625
|
+
function appDependencyDefaultSizeGiB(kind) {
|
|
626
|
+
return kind in APP_DEPENDENCY_DEFAULT_SIZE_GIB ? APP_DEPENDENCY_DEFAULT_SIZE_GIB[kind] : null;
|
|
627
|
+
}
|
|
628
|
+
function isAppDependencySizeChangeAllowed(previousGiB, nextGiB) {
|
|
629
|
+
if (previousGiB !== null && nextGiB < previousGiB) return { allowed: false, refusal: "dependencySizeShrink" };
|
|
630
|
+
return { allowed: true };
|
|
631
|
+
}
|
|
632
|
+
function canDeleteAppDependencyData(input) {
|
|
633
|
+
return input.hasEditAccess && input.confirmSlug !== null && input.confirmSlug === input.workSlug;
|
|
634
|
+
}
|
|
635
|
+
function appDependencyBlocksDeploy(kind, required) {
|
|
636
|
+
return kind === "smtp" ? required : true;
|
|
637
|
+
}
|
|
638
|
+
|
|
639
|
+
// src/apps/app-env.ts
|
|
640
|
+
var APP_ENV_ORIGINS = ["generated", "derived", "prompted", "user", "default"];
|
|
641
|
+
var APP_ENV_STORED_ORIGINS = ["generated", "prompted", "user", "derived"];
|
|
642
|
+
var APP_ENV_PHASES = ["build", "runtime", "both"];
|
|
643
|
+
var APP_ENV_GENERATOR_KINDS = ["base64", "hex", "chars", "uuid", "keypair"];
|
|
644
|
+
var APP_ENV_ALPHABETS = {
|
|
645
|
+
alnum: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789",
|
|
646
|
+
"alnum-symbols": "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!#%+,-.:=?@^_~",
|
|
647
|
+
"hex-lower": "0123456789abcdef",
|
|
648
|
+
base64url: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"
|
|
649
|
+
};
|
|
650
|
+
var APP_ENV_KEYPAIR_TYPES = ["ed25519", "ec-p256", "rsa-2048", "rsa-4096"];
|
|
651
|
+
var APP_ENV_KEYPAIR_FORMATS = ["pem", "base64url-raw", "pkcs12"];
|
|
652
|
+
var APP_ENV_KEYPAIR_RAW_TYPES = ["ed25519", "ec-p256"];
|
|
653
|
+
var APP_ENV_KEYPAIR_DEFAULT_FORMAT = "pem";
|
|
654
|
+
var APP_ENV_NAME_PATTERN = "^[A-Z_][A-Z0-9_]{0,127}$";
|
|
655
|
+
var APP_ENV_DEP_PASSWORD_TOKEN_PREFIX = "DEP_";
|
|
656
|
+
var APP_ENV_DEP_PASSWORD_TOKEN_SUFFIX = "_PASSWORD";
|
|
657
|
+
var APP_ENV_RESERVED_PREFIX = "EVER_WORKS_";
|
|
658
|
+
var APP_ENV_PUBLIC_PREFIXES = [
|
|
659
|
+
"NEXT_PUBLIC_",
|
|
660
|
+
"VITE_",
|
|
661
|
+
"PUBLIC_",
|
|
662
|
+
"REACT_APP_",
|
|
663
|
+
"NUXT_PUBLIC_",
|
|
664
|
+
"EXPO_PUBLIC_"
|
|
665
|
+
];
|
|
666
|
+
var APP_ENV_PUBLIC_HALF_SUFFIX = "_PUBLIC";
|
|
667
|
+
var APP_ENV_ROTATE_MODES = ["never"];
|
|
668
|
+
var APP_ENV_VALUE_MAX_BYTES = 65536;
|
|
669
|
+
var APP_ENV_TOTAL_MAX_BYTES = 1048576;
|
|
670
|
+
var APP_ENV_MAX_STORED = 300;
|
|
671
|
+
var APP_ENV_PUBLIC_HALF_MAX_BYTES = 16384;
|
|
672
|
+
var APP_ENV_PATTERN_BUDGET_MS = 50;
|
|
673
|
+
var APP_ENV_DOTENV_MAX_BYTES = 65536;
|
|
674
|
+
var APP_ENV_DOTENV_MAX_LINES = 500;
|
|
675
|
+
var APP_ENV_GENERATE_SLA_MS = 6e4;
|
|
676
|
+
var APP_ENV_ROTATIONS_PER_HOUR = 10;
|
|
677
|
+
var APP_ENV_PUTS_PER_MINUTE = 30;
|
|
678
|
+
var APP_ENV_TEMPLATE_MAX_DEPTH = 10;
|
|
679
|
+
var APP_ENV_CHARS_MIN_LENGTH = 16;
|
|
680
|
+
var APP_ENV_CHARS_MAX_LENGTH = 256;
|
|
681
|
+
var APP_ENV_BASE64_MIN_BYTES = 16;
|
|
682
|
+
var APP_ENV_BASE64_MAX_BYTES = 128;
|
|
683
|
+
var APP_ENV_UUID_LENGTH = 36;
|
|
684
|
+
var APP_ENV_REDACT_MIN_CHARS = 6;
|
|
685
|
+
function appEnvGeneratorFingerprint(generate) {
|
|
686
|
+
if (generate.kind === "keypair") {
|
|
687
|
+
const keypair = generate.keypair;
|
|
688
|
+
const type = keypair?.type ?? "ed25519";
|
|
689
|
+
const format = keypair?.format ?? APP_ENV_KEYPAIR_DEFAULT_FORMAT;
|
|
690
|
+
const suffix = format === "pkcs12" && keypair?.passwordEnv ? `:${keypair.passwordEnv}` : "";
|
|
691
|
+
return `keypair:${type}:${format}${suffix}`;
|
|
692
|
+
}
|
|
693
|
+
if (generate.kind === "uuid") return "uuid";
|
|
694
|
+
if (generate.kind === "chars")
|
|
695
|
+
return `chars:${generate.length ?? APP_ENV_CHARS_MIN_LENGTH}:${generate.alphabet ?? "alnum"}`;
|
|
696
|
+
return `${generate.kind}:${generate.bytes ?? APP_ENV_BASE64_MIN_BYTES}`;
|
|
697
|
+
}
|
|
698
|
+
function appEnvStoredFingerprint(version) {
|
|
699
|
+
return `v${version}`;
|
|
700
|
+
}
|
|
701
|
+
function appEnvDependencyFingerprint(outputsVersion) {
|
|
702
|
+
return `d${outputsVersion}`;
|
|
703
|
+
}
|
|
704
|
+
function appEnvTemplateFingerprint(text, placeholders) {
|
|
705
|
+
const sorted = placeholders.map((entry) => [entry.placeholder, entry.fingerprint]).sort((left, right) => {
|
|
706
|
+
if (left[0] !== right[0]) return left[0] < right[0] ? -1 : 1;
|
|
707
|
+
if (left[1] !== right[1]) return left[1] < right[1] ? -1 : 1;
|
|
708
|
+
return 0;
|
|
709
|
+
});
|
|
710
|
+
return `t${sorted.map(([placeholder, fingerprint]) => `${text}\0${placeholder}\0${fingerprint}`).join("")}`;
|
|
711
|
+
}
|
|
712
|
+
function appEnvPublicHalfName(name) {
|
|
713
|
+
return `${name}${APP_ENV_PUBLIC_HALF_SUFFIX}`;
|
|
714
|
+
}
|
|
715
|
+
function appEnvDependencyPasswordToken(kind) {
|
|
716
|
+
return `${APP_ENV_DEP_PASSWORD_TOKEN_PREFIX}${kind.toUpperCase()}${APP_ENV_DEP_PASSWORD_TOKEN_SUFFIX}`;
|
|
717
|
+
}
|
|
718
|
+
function appEnvKeypairFormatSupported(type, format, passwordEnv) {
|
|
719
|
+
if (format === "base64url-raw") return APP_ENV_KEYPAIR_RAW_TYPES.includes(type);
|
|
720
|
+
if (format === "pkcs12") return passwordEnv !== void 0 && passwordEnv.length > 0;
|
|
721
|
+
return true;
|
|
722
|
+
}
|
|
723
|
+
function hasAppEnvPublicPrefix(name) {
|
|
724
|
+
return APP_ENV_PUBLIC_PREFIXES.some((prefix) => name.startsWith(prefix));
|
|
725
|
+
}
|
|
726
|
+
var APP_ENV_VALIDATION_REFUSAL_CODES = [
|
|
727
|
+
"invalidName",
|
|
728
|
+
"reservedName",
|
|
729
|
+
"valueTooLarge",
|
|
730
|
+
"controlCharacter",
|
|
731
|
+
"lengthMismatch",
|
|
732
|
+
"tooShort",
|
|
733
|
+
"tooLong",
|
|
734
|
+
"patternMismatch"
|
|
735
|
+
];
|
|
736
|
+
var APP_ENV_IMPORT_OUTCOMES = ["set", "created", "skipped", "refused"];
|
|
737
|
+
var APP_ENV_API_ERROR_CODES = [
|
|
738
|
+
"generatedValueUseRotate",
|
|
739
|
+
"neverRotateNotAcknowledged",
|
|
740
|
+
"rotateConfirmationMismatch",
|
|
741
|
+
"secureStorageUnavailable",
|
|
742
|
+
"tooManyValues",
|
|
743
|
+
"valuesTooLarge",
|
|
744
|
+
"malformedLine",
|
|
745
|
+
"rotateRateLimited"
|
|
746
|
+
];
|
|
747
|
+
var APP_ENV_ERROR_CODES = [...APP_ENV_VALIDATION_REFUSAL_CODES, ...APP_ENV_API_ERROR_CODES];
|
|
748
|
+
var APP_ENV_ERROR_MESSAGE_LEAVES = {
|
|
749
|
+
invalidName: "invalidName",
|
|
750
|
+
reservedName: "reservedName",
|
|
751
|
+
valueTooLarge: "valueTooLarge",
|
|
752
|
+
controlCharacter: "controlCharacter",
|
|
753
|
+
lengthMismatch: "lengthMismatch",
|
|
754
|
+
tooShort: "tooShort",
|
|
755
|
+
tooLong: "tooLong",
|
|
756
|
+
patternMismatch: "patternMismatch",
|
|
757
|
+
generatedValueUseRotate: "generatedValueUseRotate",
|
|
758
|
+
neverRotateNotAcknowledged: "neverRotateNotAcknowledged",
|
|
759
|
+
rotateConfirmationMismatch: "rotateConfirmationMismatch",
|
|
760
|
+
secureStorageUnavailable: "secureStorageUnavailable",
|
|
761
|
+
tooManyValues: "tooManyValues",
|
|
762
|
+
valuesTooLarge: "valuesTooLarge",
|
|
763
|
+
malformedLine: "malformedLine",
|
|
764
|
+
rotateRateLimited: "rotateRateLimited"
|
|
765
|
+
};
|
|
766
|
+
var APP_ENV_ERROR_MESSAGE_KEY_PREFIX = "dashboard.workDetail.appEnv.errors";
|
|
767
|
+
function appEnvErrorMessageKey(code) {
|
|
768
|
+
return `${APP_ENV_ERROR_MESSAGE_KEY_PREFIX}.${APP_ENV_ERROR_MESSAGE_LEAVES[code]}`;
|
|
769
|
+
}
|
|
770
|
+
var APP_ENV_UNRESOLVED_REASONS = [
|
|
771
|
+
/** A required `prompt` entry has no stored value — plan §2.2:119. */
|
|
772
|
+
"missingRequired",
|
|
773
|
+
/** A `from: domains.primary.*` entry with no primary domain — plan §2.2:121. */
|
|
774
|
+
"noPrimaryDomain",
|
|
775
|
+
/** A build-phase `deps.<kind>.<out>` with no build service of that kind — plan §2.2:122, FR-22. */
|
|
776
|
+
"noBuildService",
|
|
777
|
+
/** A runtime `deps.<kind>.<out>` whose row is not `ready` — plan §2.2:122. */
|
|
778
|
+
"dependencyNotReady",
|
|
779
|
+
/** `platform.smtp.*` / `components.*.internalUrl` are not available at build — plan §2.2:123–124. */
|
|
780
|
+
"notAvailableAtBuild",
|
|
781
|
+
/** `platform.smtp.*` with no relay selected — plan §2.2:123. */
|
|
782
|
+
"relayNotSelected",
|
|
783
|
+
/** A template that cannot be resolved, failing closed — plan §4.6.1:449. */
|
|
784
|
+
"templateUnresolvable"
|
|
785
|
+
];
|
|
786
|
+
var APP_ENV_RESOLUTION_TARGETS = ["cluster", "runner"];
|
|
787
|
+
var APP_ENV_DECLARED_SOURCES = ["generate", "from", "template", "prompt", "value"];
|
|
788
|
+
var APP_ENV_RECIPE_SOURCES = ["generate", "literal", "template", "prompted", "derived"];
|
|
789
|
+
var APP_ENV_RECIPE_TOKEN_KINDS = ["gen", "prompted", "dep"];
|
|
790
|
+
var APP_ENV_RUNNER_RECIPE_ENDPOINTS = {
|
|
791
|
+
postgres: { host: "postgres", port: 5432, user: "ever-works-build", database: "app" },
|
|
792
|
+
redis: { host: "redis", port: 6379, password: "" },
|
|
793
|
+
objectStorage: { host: "object-storage", port: 9e3, accessKeyId: "ever-works-build" }
|
|
794
|
+
};
|
|
795
|
+
var APP_ENV_BUILD_SERVICE_OUTPUTS = {
|
|
796
|
+
postgres: { host: "127.0.0.1", port: 5432, region: null, from: null },
|
|
797
|
+
redis: { host: "127.0.0.1", port: 6379, region: null, from: null },
|
|
798
|
+
objectStorage: { host: "127.0.0.1", port: 9e3, region: "us-east-1", from: null },
|
|
799
|
+
smtp: { host: "127.0.0.1", port: 1025, region: null, from: "build@example.invalid" }
|
|
800
|
+
};
|
|
801
|
+
var APP_ENV_BUILD_SERVICE_OBJECT_STORAGE_REGION = "us-east-1";
|
|
802
|
+
var APP_ENV_BUILD_SERVICE_SMTP_FROM = "build@example.invalid";
|
|
803
|
+
var APP_ENV_BUILD_SERVICE_VALUE_FLAG = "fromBuildService";
|
|
804
|
+
|
|
805
|
+
// src/apps/app-launcher.ts
|
|
806
|
+
var APP_LAUNCHER_ENVIRONMENTS = ["production", "stage", "develop"];
|
|
807
|
+
var APP_LAUNCHER_ITEM_KINDS = ["platform", "work"];
|
|
808
|
+
var APP_LAUNCHER_SECTIONS = ["pinned", "platforms", "works"];
|
|
809
|
+
var APP_LAUNCHER_WORK_CHIPS = ["deploying", "lastDeployFailed"];
|
|
810
|
+
var APP_LAUNCHER_MANAGE_STATES = ["listed", "notLive", "exposureOff"];
|
|
811
|
+
var APP_LAUNCHER_PLATFORM_STATUSES = ["available", "beta", "soon"];
|
|
812
|
+
var APP_LAUNCHER_REJECTION_REASONS = ["unknownItem", "cannotHideCurrent"];
|
|
813
|
+
var APP_LAUNCHER_EMPTY_ACTIONS = ["createAppWork", "goToWorks"];
|
|
814
|
+
var APP_LAUNCHER_ORIGIN_NOT_ALLOWED = "origin_not_allowed";
|
|
815
|
+
var APP_LAUNCHER_PIN_LIMIT = 6;
|
|
816
|
+
var APP_LAUNCHER_MAX_ITEMS_RESPONSE = 200;
|
|
817
|
+
var APP_LAUNCHER_MAX_CHANGES_PER_SAVE = 200;
|
|
818
|
+
var APP_LAUNCHER_MAX_PREFERENCE_ROWS = 500;
|
|
819
|
+
var APP_LAUNCHER_PANEL_PLATFORMS_MAX = 12;
|
|
820
|
+
var APP_LAUNCHER_PANEL_WORKS_MAX = 24;
|
|
821
|
+
var APP_LAUNCHER_CATALOG_MAX_ENTRIES = 24;
|
|
822
|
+
var APP_LAUNCHER_ICON_MAX_BYTES = 16384;
|
|
823
|
+
var APP_LAUNCHER_CLIENT_CACHE_MS = 5 * 6e4;
|
|
824
|
+
var APP_LAUNCHER_NAME_MAX_LENGTH = 100;
|
|
825
|
+
var APP_LAUNCHER_DESCRIPTION_MAX_LENGTH = 80;
|
|
826
|
+
var APP_LAUNCHER_FILTER_MAX_LENGTH = APP_LAUNCHER_NAME_MAX_LENGTH;
|
|
827
|
+
function isAppLauncherEnvironment(value) {
|
|
828
|
+
return typeof value === "string" && APP_LAUNCHER_ENVIRONMENTS.includes(value);
|
|
829
|
+
}
|
|
830
|
+
function appLauncherPinLimitExceeded(pinnedCount) {
|
|
831
|
+
if (!Number.isInteger(pinnedCount) || pinnedCount < 0) {
|
|
832
|
+
return true;
|
|
833
|
+
}
|
|
834
|
+
return pinnedCount > APP_LAUNCHER_PIN_LIMIT;
|
|
835
|
+
}
|
|
836
|
+
|
|
837
|
+
// src/apps/app-license.types.ts
|
|
838
|
+
var LICENSE_CLASSES = ["green", "amber", "red", "unknown"];
|
|
839
|
+
var LICENSE_CLASS_RANK = {
|
|
840
|
+
green: 0,
|
|
841
|
+
amber: 1,
|
|
842
|
+
unknown: 2,
|
|
843
|
+
red: 3
|
|
844
|
+
};
|
|
845
|
+
var LICENSE_SOURCES = ["detected", "blueprint", "user"];
|
|
846
|
+
var LICENSE_REGISTRY_SOURCES = ["live", "last_good", "snapshot"];
|
|
847
|
+
var MANAGED_HOSTING_REASONS = [
|
|
848
|
+
"licenseNotGreen",
|
|
849
|
+
"upstreamAgreementMissing",
|
|
850
|
+
"entryDisallows",
|
|
851
|
+
"blueprintNotVerified",
|
|
852
|
+
"managedTierDisabled"
|
|
853
|
+
];
|
|
854
|
+
var MANAGED_HOSTING_AVAILABILITIES = ["available", ...MANAGED_HOSTING_REASONS];
|
|
855
|
+
var BLUEPRINT_MATCH_SOURCES = ["manifest", "alias", "fork", "probe", "explicit", "file"];
|
|
856
|
+
var LICENSE_HOSTING_DECISIONS = ["allowed", "attestationRequired"];
|
|
857
|
+
var LICENSE_TEXT_MATCH_THRESHOLD = 0.9;
|
|
858
|
+
var LICENSE_MAX_FILE_READS = 12;
|
|
859
|
+
var LICENSE_MIXED_DIR_NAMES = ["ee", "enterprise", "premium", "commercial"];
|
|
860
|
+
var LICENSE_MIXED_MAX_DEPTH = 4;
|
|
861
|
+
var LICENSE_EVIDENCE_MAX = 20;
|
|
862
|
+
var LICENSE_TREE_MAX_ENTRIES = 1e5;
|
|
863
|
+
var LICENSE_HEADER_SCAN_BYTES = 2048;
|
|
864
|
+
var LICENSE_ATTEST_PER_MIN = 10;
|
|
865
|
+
var APPS_MANAGED_REQUIRES_VERIFIED = true;
|
|
866
|
+
|
|
867
|
+
// src/apps/app-source.ts
|
|
868
|
+
var APP_SOURCE_REPOSITORY_TYPES = ["app_link", "app_fork", "app_private_copy"];
|
|
869
|
+
var APP_WORK_REPOSITORY_ROLE = "website";
|
|
870
|
+
var APP_REPOSITORY_MODES = ["link", "fork", "private-copy"];
|
|
871
|
+
var APP_SOURCE_REPOSITORY_TYPE_BY_MODE = {
|
|
872
|
+
link: "app_link",
|
|
873
|
+
fork: "app_fork",
|
|
874
|
+
"private-copy": "app_private_copy"
|
|
875
|
+
};
|
|
876
|
+
var APP_SOURCE_REPOSITORY_NAME_SUFFIXES = { app: "-app", default: "-website" };
|
|
877
|
+
var APP_SOURCE_SPEC_FILE = ".works/works.yml";
|
|
878
|
+
var APP_SOURCE_SPEC_VERSION = 2;
|
|
879
|
+
var APP_SOURCE_SPEC_KIND = "app";
|
|
880
|
+
var APP_DEPLOY_TARGET_CHOICES = ["none", "your-cluster", "ever-works-apps"];
|
|
881
|
+
var APP_SOURCE_REASON_CODES = [
|
|
882
|
+
"invalid_url",
|
|
883
|
+
"provider_not_connected",
|
|
884
|
+
"insufficient_scope",
|
|
885
|
+
"not_found",
|
|
886
|
+
"sso_authorization_required",
|
|
887
|
+
"oauth_app_restricted",
|
|
888
|
+
"empty_repository",
|
|
889
|
+
"no_push_access",
|
|
890
|
+
"archived",
|
|
891
|
+
"forking_disabled",
|
|
892
|
+
"own_repository",
|
|
893
|
+
"target_owner_unavailable",
|
|
894
|
+
"target_owner_forbidden",
|
|
895
|
+
"too_large_for_private_copy",
|
|
896
|
+
"uses_lfs",
|
|
897
|
+
"copy_name_unavailable",
|
|
898
|
+
"in_use_by_another_account",
|
|
899
|
+
"app_work_exists",
|
|
900
|
+
"create_in_progress",
|
|
901
|
+
"rate_limited",
|
|
902
|
+
"managed_hosting_unavailable",
|
|
903
|
+
"cluster_target_unavailable",
|
|
904
|
+
"app_works_disabled",
|
|
905
|
+
"blueprint_mismatch"
|
|
906
|
+
];
|
|
907
|
+
function isAppSourceReasonCode(value) {
|
|
908
|
+
return typeof value === "string" && APP_SOURCE_REASON_CODES.includes(value);
|
|
909
|
+
}
|
|
910
|
+
var APP_SOURCE_BLUEPRINT_STATUSES = ["matched", "none", "unavailable"];
|
|
911
|
+
var APP_SOURCE_BLUEPRINT_MATCH_SOURCES = ["manifest", "alias", "fork", "probe", "explicit"];
|
|
912
|
+
var APP_SOURCE_LICENSE_CLASSES = ["green", "amber", "red", "unknown"];
|
|
913
|
+
var APP_SOURCE_LICENSE_SOURCES = ["detected", "blueprint", "user"];
|
|
914
|
+
function firstReason(candidates) {
|
|
915
|
+
for (const [matches, reason] of candidates) {
|
|
916
|
+
if (matches) {
|
|
917
|
+
return reason;
|
|
918
|
+
}
|
|
919
|
+
}
|
|
920
|
+
return void 0;
|
|
921
|
+
}
|
|
922
|
+
function resolveAppRepositoryModes(factsInput) {
|
|
923
|
+
const linkReason = firstReason([
|
|
924
|
+
[!factsInput.canPush, "no_push_access"],
|
|
925
|
+
[factsInput.archived, "archived"],
|
|
926
|
+
[factsInput.isInUseByAnotherAccount, "in_use_by_another_account"]
|
|
927
|
+
]);
|
|
928
|
+
const forkReason = firstReason([
|
|
929
|
+
[!factsInput.allowForking, "forking_disabled"],
|
|
930
|
+
[factsInput.empty, "empty_repository"],
|
|
931
|
+
[factsInput.isOwnRepository, "own_repository"]
|
|
932
|
+
]);
|
|
933
|
+
const sizeKnown = typeof factsInput.sizeKb === "number" && Number.isFinite(factsInput.sizeKb) && factsInput.sizeKb >= 0;
|
|
934
|
+
const copyReason = firstReason([
|
|
935
|
+
[!sizeKnown || factsInput.sizeKb > APP_PRIVATE_COPY_MAX_SIZE_KB, "too_large_for_private_copy"],
|
|
936
|
+
[factsInput.usesLfs, "uses_lfs"],
|
|
937
|
+
[factsInput.visibility === "private" && !factsInput.allowForking, "forking_disabled"]
|
|
938
|
+
]);
|
|
939
|
+
const modes = {
|
|
940
|
+
link: linkReason ? { available: false, reason: linkReason } : { available: true },
|
|
941
|
+
fork: forkReason ? { available: false, reason: forkReason } : { available: true },
|
|
942
|
+
"private-copy": copyReason ? { available: false, reason: copyReason } : { available: true }
|
|
943
|
+
};
|
|
944
|
+
let defaultMode = null;
|
|
945
|
+
if (modes.link.available && factsInput.canPush && !factsInput.isFork) {
|
|
946
|
+
defaultMode = "link";
|
|
947
|
+
} else if (modes.fork.available && (!factsInput.canPush || factsInput.isFork)) {
|
|
948
|
+
defaultMode = "fork";
|
|
949
|
+
} else if (modes.link.available) {
|
|
950
|
+
defaultMode = "link";
|
|
951
|
+
}
|
|
952
|
+
return { modes, defaultMode };
|
|
953
|
+
}
|
|
954
|
+
var APP_INSPECT_MAX_PROVIDER_CALLS = 15;
|
|
955
|
+
var APP_INSPECT_FIXED_PROVIDER_CALLS = 5;
|
|
956
|
+
var APP_INSPECT_OWNER_MIN_CALLS_REMAINING = 3;
|
|
957
|
+
function canStartTargetOwnerScan(callsRemaining) {
|
|
958
|
+
return Number.isFinite(callsRemaining) && callsRemaining >= APP_INSPECT_OWNER_MIN_CALLS_REMAINING;
|
|
959
|
+
}
|
|
960
|
+
var APP_INSPECT_P95_BUDGET_MS = 8e3;
|
|
961
|
+
var APP_INSPECT_CACHE_TTL_MS = 6e4;
|
|
962
|
+
var APP_INSPECT_RATE_LIMIT_PER_MINUTE = 30;
|
|
963
|
+
var APP_TARGET_OWNER_SCAN_LIMIT_P1 = 30;
|
|
964
|
+
var APP_TARGET_OWNER_SCAN_LIMIT_P2 = 200;
|
|
965
|
+
var APP_PRIVATE_COPY_MAX_SIZE_KB = 512e3;
|
|
966
|
+
var APP_PRIVATE_COPY_NAME_ATTEMPTS = 5;
|
|
967
|
+
var APP_CREATE_LOCK_TTL_MS = 12e4;
|
|
968
|
+
var APP_CREATE_IDEMPOTENCY_WINDOW_MS = 6e5;
|
|
969
|
+
var APP_CREATE_RESPONSE_BUDGET_MS = 1e4;
|
|
970
|
+
var APP_REPOSITORY_URL_MAX_LENGTH = 400;
|
|
971
|
+
function appRepositoryUrlLengthExceeded(repositoryUrl) {
|
|
972
|
+
return typeof repositoryUrl !== "string" || repositoryUrl.length > APP_REPOSITORY_URL_MAX_LENGTH;
|
|
973
|
+
}
|
|
974
|
+
|
|
975
|
+
// src/apps/app-runtime.ts
|
|
976
|
+
var APP_DEPLOY_TARGETS = APP_DEPLOY_TARGET_CHOICES;
|
|
977
|
+
var APP_DEPLOY_PURPOSES = ["deploy", "verification"];
|
|
978
|
+
var APP_DEPLOY_PHASES = [
|
|
979
|
+
"prepare",
|
|
980
|
+
"pre-deploy-jobs",
|
|
981
|
+
"rollout",
|
|
982
|
+
"first-deploy-jobs",
|
|
983
|
+
"in-cluster-smoke",
|
|
984
|
+
"publish",
|
|
985
|
+
"public-smoke",
|
|
986
|
+
"post-deploy-jobs",
|
|
987
|
+
"cron",
|
|
988
|
+
"rollback",
|
|
989
|
+
"done"
|
|
990
|
+
];
|
|
991
|
+
var APP_DEPLOY_OUTCOMES = [
|
|
992
|
+
"succeeded",
|
|
993
|
+
"succeeded-with-warnings",
|
|
994
|
+
"failed",
|
|
995
|
+
"rolled-back",
|
|
996
|
+
"cancelled",
|
|
997
|
+
"rollback-failed"
|
|
998
|
+
];
|
|
999
|
+
var APP_CANCEL_REASONS = ["user", "quarantined", "app_work_deleting"];
|
|
1000
|
+
var APP_DEPLOYMENT_STATES = [
|
|
1001
|
+
"INITIALIZING",
|
|
1002
|
+
"QUEUED",
|
|
1003
|
+
"BUILDING",
|
|
1004
|
+
"DEPLOYING",
|
|
1005
|
+
"VERIFYING",
|
|
1006
|
+
"READY",
|
|
1007
|
+
"ERROR",
|
|
1008
|
+
"CANCELED",
|
|
1009
|
+
"TIMEOUT",
|
|
1010
|
+
"ROLLED_BACK",
|
|
1011
|
+
"SUPERSEDED"
|
|
1012
|
+
];
|
|
1013
|
+
var APP_DEPLOYMENT_TERMINAL_STATES = [
|
|
1014
|
+
"READY",
|
|
1015
|
+
"ERROR",
|
|
1016
|
+
"CANCELED",
|
|
1017
|
+
"TIMEOUT",
|
|
1018
|
+
"ROLLED_BACK",
|
|
1019
|
+
"SUPERSEDED"
|
|
1020
|
+
];
|
|
1021
|
+
var APP_DEPLOYMENT_DISPLAY_STATES = [
|
|
1022
|
+
"queued",
|
|
1023
|
+
"deploying",
|
|
1024
|
+
"checking",
|
|
1025
|
+
"live",
|
|
1026
|
+
"live-with-warnings",
|
|
1027
|
+
"failed",
|
|
1028
|
+
"rolled-back",
|
|
1029
|
+
"cancelled",
|
|
1030
|
+
"cancelled-quarantined",
|
|
1031
|
+
"skipped"
|
|
1032
|
+
];
|
|
1033
|
+
var APP_RUNTIME_STATES = [
|
|
1034
|
+
"not-deployed",
|
|
1035
|
+
"live",
|
|
1036
|
+
"degraded",
|
|
1037
|
+
"down",
|
|
1038
|
+
"unreachable",
|
|
1039
|
+
"paused",
|
|
1040
|
+
"deleting"
|
|
1041
|
+
];
|
|
1042
|
+
var APP_RUNTIME_HEALTH = ["unknown", "healthy", "degraded", "down", "unreachable"];
|
|
1043
|
+
var APP_PRECONDITION_CODES = [
|
|
1044
|
+
"spec_invalid",
|
|
1045
|
+
"license_blocks_target",
|
|
1046
|
+
"license_attestation_missing",
|
|
1047
|
+
"env_required_unset",
|
|
1048
|
+
"dependency_not_ready",
|
|
1049
|
+
"no_green_build",
|
|
1050
|
+
"no_green_build_for_head",
|
|
1051
|
+
"build_image_missing",
|
|
1052
|
+
"nothing_to_deploy",
|
|
1053
|
+
"image_not_pinned",
|
|
1054
|
+
"image_not_found",
|
|
1055
|
+
"image_private_unsupported",
|
|
1056
|
+
"image_unresolvable",
|
|
1057
|
+
"primary_domain_missing",
|
|
1058
|
+
"target_none",
|
|
1059
|
+
"target_not_checked",
|
|
1060
|
+
"cluster_changed_unconfirmed",
|
|
1061
|
+
"managed_disabled",
|
|
1062
|
+
"managed_scope_unverified_blueprint",
|
|
1063
|
+
"quota_exceeded",
|
|
1064
|
+
"managed_ineligible",
|
|
1065
|
+
"managed_sandbox_unavailable",
|
|
1066
|
+
"app_work_deleting",
|
|
1067
|
+
"paused",
|
|
1068
|
+
"deploy_in_progress",
|
|
1069
|
+
"cron_auth_env_unset",
|
|
1070
|
+
"job_auth_env_unset",
|
|
1071
|
+
"volume_replicas",
|
|
1072
|
+
"volume_shrink",
|
|
1073
|
+
"privileged_port",
|
|
1074
|
+
"cron_too_frequent",
|
|
1075
|
+
"managed_root_forbidden",
|
|
1076
|
+
"image_user_unverifiable",
|
|
1077
|
+
"worker_not_isolated",
|
|
1078
|
+
"env_source_unavailable",
|
|
1079
|
+
"pull_credential_unavailable",
|
|
1080
|
+
"namespace_foreign",
|
|
1081
|
+
"verification_namespace_forbidden"
|
|
1082
|
+
];
|
|
1083
|
+
var APP_PRECONDITION_STATES = {
|
|
1084
|
+
spec_invalid: APP_RUNTIME_STATES,
|
|
1085
|
+
license_blocks_target: APP_RUNTIME_STATES,
|
|
1086
|
+
license_attestation_missing: APP_RUNTIME_STATES,
|
|
1087
|
+
env_required_unset: APP_RUNTIME_STATES,
|
|
1088
|
+
dependency_not_ready: APP_RUNTIME_STATES,
|
|
1089
|
+
no_green_build: APP_RUNTIME_STATES,
|
|
1090
|
+
no_green_build_for_head: APP_RUNTIME_STATES,
|
|
1091
|
+
build_image_missing: APP_RUNTIME_STATES,
|
|
1092
|
+
nothing_to_deploy: APP_RUNTIME_STATES,
|
|
1093
|
+
image_not_pinned: APP_RUNTIME_STATES,
|
|
1094
|
+
image_not_found: APP_RUNTIME_STATES,
|
|
1095
|
+
image_private_unsupported: APP_RUNTIME_STATES,
|
|
1096
|
+
image_unresolvable: APP_RUNTIME_STATES,
|
|
1097
|
+
primary_domain_missing: APP_RUNTIME_STATES,
|
|
1098
|
+
target_none: APP_RUNTIME_STATES,
|
|
1099
|
+
target_not_checked: APP_RUNTIME_STATES,
|
|
1100
|
+
cluster_changed_unconfirmed: APP_RUNTIME_STATES,
|
|
1101
|
+
managed_disabled: APP_RUNTIME_STATES,
|
|
1102
|
+
managed_scope_unverified_blueprint: APP_RUNTIME_STATES,
|
|
1103
|
+
quota_exceeded: APP_RUNTIME_STATES,
|
|
1104
|
+
managed_ineligible: APP_RUNTIME_STATES,
|
|
1105
|
+
managed_sandbox_unavailable: APP_RUNTIME_STATES,
|
|
1106
|
+
app_work_deleting: ["deleting"],
|
|
1107
|
+
paused: ["paused"],
|
|
1108
|
+
deploy_in_progress: APP_RUNTIME_STATES,
|
|
1109
|
+
cron_auth_env_unset: APP_RUNTIME_STATES,
|
|
1110
|
+
job_auth_env_unset: APP_RUNTIME_STATES,
|
|
1111
|
+
volume_replicas: APP_RUNTIME_STATES,
|
|
1112
|
+
volume_shrink: APP_RUNTIME_STATES,
|
|
1113
|
+
privileged_port: APP_RUNTIME_STATES,
|
|
1114
|
+
cron_too_frequent: APP_RUNTIME_STATES,
|
|
1115
|
+
managed_root_forbidden: APP_RUNTIME_STATES,
|
|
1116
|
+
image_user_unverifiable: APP_RUNTIME_STATES,
|
|
1117
|
+
worker_not_isolated: APP_RUNTIME_STATES,
|
|
1118
|
+
env_source_unavailable: APP_RUNTIME_STATES,
|
|
1119
|
+
pull_credential_unavailable: APP_RUNTIME_STATES,
|
|
1120
|
+
namespace_foreign: APP_RUNTIME_STATES,
|
|
1121
|
+
verification_namespace_forbidden: APP_RUNTIME_STATES
|
|
1122
|
+
};
|
|
1123
|
+
var APP_PRECONDITION_MESSAGE_LEAVES = {
|
|
1124
|
+
spec_invalid: "specInvalid",
|
|
1125
|
+
license_blocks_target: "licenseBlocksTarget",
|
|
1126
|
+
license_attestation_missing: "licenseAttestationMissing",
|
|
1127
|
+
env_required_unset: "envRequiredUnset",
|
|
1128
|
+
dependency_not_ready: "dependencyNotReady",
|
|
1129
|
+
no_green_build: "noGreenBuild",
|
|
1130
|
+
no_green_build_for_head: "noGreenBuildForHead",
|
|
1131
|
+
build_image_missing: "buildImageMissing",
|
|
1132
|
+
nothing_to_deploy: "nothingToDeploy",
|
|
1133
|
+
image_not_pinned: "imageNotPinned",
|
|
1134
|
+
image_not_found: "imageNotFound",
|
|
1135
|
+
image_private_unsupported: "imagePrivateUnsupported",
|
|
1136
|
+
image_unresolvable: "imageUnresolvable",
|
|
1137
|
+
primary_domain_missing: "primaryDomainMissing",
|
|
1138
|
+
target_none: "targetNone",
|
|
1139
|
+
target_not_checked: "targetNotChecked",
|
|
1140
|
+
cluster_changed_unconfirmed: "clusterChangedUnconfirmed",
|
|
1141
|
+
managed_disabled: "managedDisabled",
|
|
1142
|
+
managed_scope_unverified_blueprint: "managedScopeUnverifiedBlueprint",
|
|
1143
|
+
quota_exceeded: "quotaExceeded",
|
|
1144
|
+
managed_ineligible: "managedIneligible",
|
|
1145
|
+
managed_sandbox_unavailable: "managedSandboxUnavailable",
|
|
1146
|
+
app_work_deleting: "appWorkDeleting",
|
|
1147
|
+
paused: "paused",
|
|
1148
|
+
deploy_in_progress: "deployInProgress",
|
|
1149
|
+
cron_auth_env_unset: "cronAuthEnvUnset",
|
|
1150
|
+
job_auth_env_unset: "jobAuthEnvUnset",
|
|
1151
|
+
volume_replicas: "volumeReplicas",
|
|
1152
|
+
volume_shrink: "volumeShrink",
|
|
1153
|
+
privileged_port: "privilegedPort",
|
|
1154
|
+
cron_too_frequent: "cronTooFrequent",
|
|
1155
|
+
managed_root_forbidden: "managedRootForbidden",
|
|
1156
|
+
image_user_unverifiable: "imageUserUnverifiable",
|
|
1157
|
+
worker_not_isolated: "workerNotIsolated",
|
|
1158
|
+
env_source_unavailable: "envSourceUnavailable",
|
|
1159
|
+
pull_credential_unavailable: "pullCredentialUnavailable",
|
|
1160
|
+
namespace_foreign: "namespaceForeign",
|
|
1161
|
+
verification_namespace_forbidden: "verificationNamespaceForbidden"
|
|
1162
|
+
};
|
|
1163
|
+
var APP_FAILURE_CODES = [
|
|
1164
|
+
"crash_loop",
|
|
1165
|
+
"oom_killed",
|
|
1166
|
+
"image_pull",
|
|
1167
|
+
"create_container_config",
|
|
1168
|
+
"rollout_timeout",
|
|
1169
|
+
"job_failed",
|
|
1170
|
+
"smoke_failed",
|
|
1171
|
+
"publish_failed",
|
|
1172
|
+
"rollback_failed",
|
|
1173
|
+
"cluster_unreachable",
|
|
1174
|
+
"worker_failed",
|
|
1175
|
+
"isolation_not_enforced",
|
|
1176
|
+
"managed_root_forbidden",
|
|
1177
|
+
"image_user_unverifiable",
|
|
1178
|
+
"deadline_exceeded",
|
|
1179
|
+
"image_not_found",
|
|
1180
|
+
"image_private_unsupported",
|
|
1181
|
+
"image_unresolvable"
|
|
1182
|
+
];
|
|
1183
|
+
var APP_FAILURE_MESSAGE_LEAVES = {
|
|
1184
|
+
crash_loop: "crashLoop",
|
|
1185
|
+
oom_killed: "oomKilled",
|
|
1186
|
+
image_pull: "imagePull",
|
|
1187
|
+
create_container_config: null,
|
|
1188
|
+
rollout_timeout: "rolloutTimeout",
|
|
1189
|
+
job_failed: "jobFailed",
|
|
1190
|
+
smoke_failed: "smokeFailed",
|
|
1191
|
+
publish_failed: "publishFailed",
|
|
1192
|
+
rollback_failed: "rollbackFailed",
|
|
1193
|
+
cluster_unreachable: null,
|
|
1194
|
+
worker_failed: null,
|
|
1195
|
+
isolation_not_enforced: null,
|
|
1196
|
+
managed_root_forbidden: "imageRunsAsRoot",
|
|
1197
|
+
image_user_unverifiable: "imageUserUnverifiable",
|
|
1198
|
+
deadline_exceeded: null,
|
|
1199
|
+
image_not_found: "imageNotFound",
|
|
1200
|
+
image_private_unsupported: "imagePrivateUnsupported",
|
|
1201
|
+
image_unresolvable: "imageUnresolvable"
|
|
1202
|
+
};
|
|
1203
|
+
var APP_FAILURE_CODES_WITHOUT_MESSAGE_LEAF = [
|
|
1204
|
+
"create_container_config",
|
|
1205
|
+
"cluster_unreachable",
|
|
1206
|
+
"worker_failed",
|
|
1207
|
+
"isolation_not_enforced",
|
|
1208
|
+
"deadline_exceeded"
|
|
1209
|
+
];
|
|
1210
|
+
var APP_FAILURE_LEAVES_WITHOUT_FAILURE_CODE = ["imageNotPinned"];
|
|
1211
|
+
var APP_DEPLOY_REQUEST_BUDGET_MS = 2e3;
|
|
1212
|
+
var APP_PREPARE_TIMEOUT_S = 120;
|
|
1213
|
+
var APP_JOB_TIMEOUT_DEFAULT_S = 600;
|
|
1214
|
+
var APP_ROLLOUT_EXTRA_S = 120;
|
|
1215
|
+
var APP_ROLLOUT_MIN_S = 300;
|
|
1216
|
+
var APP_ROLLOUT_MAX_S = 2400;
|
|
1217
|
+
var APP_ROLLOUT_POLL_S = 5;
|
|
1218
|
+
var APP_ROLLOUT_RESTARTS_FAIL = 3;
|
|
1219
|
+
var APP_ROLLOUT_STUCK_POD_S = 180;
|
|
1220
|
+
var APP_WORKER_STABLE_S = 30;
|
|
1221
|
+
var APP_SMOKE_IN_CLUSTER_WINDOW_S = 120;
|
|
1222
|
+
var APP_SMOKE_RETRY_S = 10;
|
|
1223
|
+
var APP_SMOKE_PUBLIC_FIRST_WINDOW_S = 600;
|
|
1224
|
+
var APP_SMOKE_PUBLIC_WINDOW_S = 180;
|
|
1225
|
+
var APP_SMOKE_BODY_BYTES = 1048576;
|
|
1226
|
+
var APP_SMOKE_FOUND_CHARS = 200;
|
|
1227
|
+
var APP_PUBLISH_TIMEOUT_S = 60;
|
|
1228
|
+
var APP_DEPLOY_MAX_DURATION_S = 7200;
|
|
1229
|
+
var APP_ENV_SECRETS_KEPT = 3;
|
|
1230
|
+
var APP_ROLLBACK_CANDIDATES = 20;
|
|
1231
|
+
var APP_JOB_RUNS_KEPT = 3;
|
|
1232
|
+
var APP_JOB_TTL_S = 86400;
|
|
1233
|
+
var APP_TMP_SIZE_MI = 256;
|
|
1234
|
+
var APP_PAUSE_TIMEOUT_S = 120;
|
|
1235
|
+
var APP_REMOVE_TIMEOUT_S = 300;
|
|
1236
|
+
var APP_HEALTH_POLL_S = 60;
|
|
1237
|
+
var APP_HEALTH_BATCH = 500;
|
|
1238
|
+
var APP_HEALTH_POLL_TIMEOUT_S = 20;
|
|
1239
|
+
var APP_HEALTH_CLUSTER_CONCURRENCY = 5;
|
|
1240
|
+
var APP_HEALTH_FAILS_TO_NOTIFY = 5;
|
|
1241
|
+
var APP_HEALTH_PASSES_TO_RECOVER = 3;
|
|
1242
|
+
var APP_HEALTH_UNREACHABLE_POLLS = 10;
|
|
1243
|
+
var APP_HEALTH_NOTIFY_DEDUPE_H = 6;
|
|
1244
|
+
var APP_STATUS_STALE_S = 180;
|
|
1245
|
+
var APP_STATUS_REFRESH_MIN_S = 15;
|
|
1246
|
+
var APP_CERT_NOTIFY_AFTER_MIN = 30;
|
|
1247
|
+
var APP_LOG_LINES_DEFAULT = 200;
|
|
1248
|
+
var APP_LOG_LINES_MAX = 500;
|
|
1249
|
+
var APP_LOG_BYTES_MAX = 262144;
|
|
1250
|
+
var APP_LOG_CACHE_S = 300;
|
|
1251
|
+
var APP_LOG_REDACT_MIN_CHARS = 8;
|
|
1252
|
+
var APP_CLUSTER_CHECK_TIMEOUT_S = 30;
|
|
1253
|
+
var APP_CLUSTER_DIAL_TIMEOUT_S = 10;
|
|
1254
|
+
var APP_ISOLATION_PROBE_TIMEOUT_S = 3;
|
|
1255
|
+
var APP_DOMAIN_RECONCILE_S = 60;
|
|
1256
|
+
var APP_MANAGED_MAX_PER_USER_DEFAULT = 3;
|
|
1257
|
+
var APP_MANAGED_CRON_MIN_INTERVAL_MIN = 5;
|
|
1258
|
+
var APP_SUBDOMAIN_LABEL_MIN = 3;
|
|
1259
|
+
var APP_PREVIEWS_MAX = 3;
|
|
1260
|
+
var APP_PREVIEW_CLOSE_REMOVE_MIN = 10;
|
|
1261
|
+
var APP_PREVIEW_IDLE_H = 72;
|
|
1262
|
+
var APP_DEPLOY_LOCK_STALE_S = APP_DEPLOY_MAX_DURATION_S + 60;
|
|
1263
|
+
function probeToleranceSeconds(probe) {
|
|
1264
|
+
const period = Number.isFinite(probe.periodSeconds) ? Math.max(0, probe.periodSeconds) : 0;
|
|
1265
|
+
const threshold = Number.isFinite(probe.failureThreshold) ? Math.max(0, probe.failureThreshold) : 0;
|
|
1266
|
+
const tolerance = period * threshold;
|
|
1267
|
+
return Number.isFinite(tolerance) ? tolerance : 0;
|
|
1268
|
+
}
|
|
1269
|
+
function appComponentDeadlineSeconds(input) {
|
|
1270
|
+
const total = probeToleranceSeconds(input.startup) + probeToleranceSeconds(input.readiness) + APP_ROLLOUT_EXTRA_S;
|
|
1271
|
+
return Math.min(APP_ROLLOUT_MAX_S, Math.max(APP_ROLLOUT_MIN_S, total));
|
|
1272
|
+
}
|
|
1273
|
+
|
|
1274
|
+
// src/apps/app-spec-issues.ts
|
|
1275
|
+
var APP_SPEC_FILE_MAX_BYTES = 262144;
|
|
1276
|
+
var APP_SPEC_MAX_ISSUES = 200;
|
|
1277
|
+
var APP_SPEC_YAML_MAX_ALIASES = 100;
|
|
1278
|
+
var APP_SPEC_MAX_DEPTH = 12;
|
|
1279
|
+
var APP_SPEC_SUGGESTION_MAX_DISTANCE = 2;
|
|
1280
|
+
var APP_SPEC_SEVERITIES = ["error", "warning"];
|
|
1281
|
+
var APP_SPEC_VALIDATION_STATUSES = [
|
|
1282
|
+
"valid",
|
|
1283
|
+
"valid_with_warnings",
|
|
1284
|
+
"invalid",
|
|
1285
|
+
"missing",
|
|
1286
|
+
"unreadable"
|
|
1287
|
+
];
|
|
1288
|
+
var APP_SPEC_VALIDATION_MODES = ["draft", "data-repository", "blueprint"];
|
|
1289
|
+
var APP_SPEC_ISSUE_CODES = [
|
|
1290
|
+
// Structural (schema.md §23:538-543)
|
|
1291
|
+
"yaml_syntax",
|
|
1292
|
+
"file_too_large",
|
|
1293
|
+
"yaml_alias_limit",
|
|
1294
|
+
"duplicate_key",
|
|
1295
|
+
"kind_mismatch",
|
|
1296
|
+
"required",
|
|
1297
|
+
"invalid_type",
|
|
1298
|
+
"invalid_enum",
|
|
1299
|
+
"out_of_range",
|
|
1300
|
+
"pattern",
|
|
1301
|
+
"unknown_field",
|
|
1302
|
+
"unknown_field_newer_version",
|
|
1303
|
+
"blueprint_mode_forbidden_key",
|
|
1304
|
+
"pattern_unsupported",
|
|
1305
|
+
"prompt_example_secret",
|
|
1306
|
+
"generated_not_secret",
|
|
1307
|
+
"worker_port_forbidden",
|
|
1308
|
+
"worker_probe_without_port",
|
|
1309
|
+
"http_job_requires_web_component",
|
|
1310
|
+
"public_bucket_undeclared",
|
|
1311
|
+
"extension_unavailable",
|
|
1312
|
+
"cron_invalid",
|
|
1313
|
+
"reference_syntax",
|
|
1314
|
+
"template_cycle",
|
|
1315
|
+
"template_too_deep",
|
|
1316
|
+
"blueprint_repo_outside_org",
|
|
1317
|
+
// Rule codes (schema.md §22:455-481, R1 → R27)
|
|
1318
|
+
"web_component_needs_port",
|
|
1319
|
+
"strategy_requires_components",
|
|
1320
|
+
"components_require_strategy",
|
|
1321
|
+
"primary_component_invalid",
|
|
1322
|
+
"duplicate_name",
|
|
1323
|
+
"reference_unresolved",
|
|
1324
|
+
"secret_reference_not_secret",
|
|
1325
|
+
"phase_mismatch",
|
|
1326
|
+
"env_source_count",
|
|
1327
|
+
"literal_secret_value",
|
|
1328
|
+
"generate_validate_conflict",
|
|
1329
|
+
"literal_secret_in_build_args",
|
|
1330
|
+
"secret_build_arg",
|
|
1331
|
+
"upstream_pr_approval_required",
|
|
1332
|
+
"upstream_forbidden_for_link",
|
|
1333
|
+
"upstream_sync_requires_upstream",
|
|
1334
|
+
"upstream_prs_require_fork",
|
|
1335
|
+
"component_ref_unknown",
|
|
1336
|
+
"auth_env_not_secret",
|
|
1337
|
+
"limit_below_request",
|
|
1338
|
+
"volume_replicas",
|
|
1339
|
+
"image_not_pinned",
|
|
1340
|
+
"advisory_check",
|
|
1341
|
+
"schedule_too_frequent",
|
|
1342
|
+
"path_outside_repository",
|
|
1343
|
+
"reserved_env_name",
|
|
1344
|
+
"license_declared_mismatch",
|
|
1345
|
+
"keypair_format_unsupported",
|
|
1346
|
+
"keypair_password_invalid",
|
|
1347
|
+
"sourceOfferMissing",
|
|
1348
|
+
// Server-only rules (schema.md §22:483-488)
|
|
1349
|
+
"source_relation_mismatch",
|
|
1350
|
+
"blueprint_unknown",
|
|
1351
|
+
"build_strategy_unavailable",
|
|
1352
|
+
"dependency_unavailable",
|
|
1353
|
+
"tracked_branch_missing"
|
|
1354
|
+
];
|
|
1355
|
+
|
|
1356
|
+
// src/apps/app-spec.types.ts
|
|
1357
|
+
var APP_SPEC_VERSION = 1;
|
|
1358
|
+
var APP_SPEC_EVALUATE_COALESCE_MS = 5e3;
|
|
1359
|
+
var APP_SPEC_LAZY_HEAD_CHECK_MS = 6e4;
|
|
1360
|
+
var APP_SPEC_DRAFT_VALIDATE_PER_MIN = 30;
|
|
1361
|
+
var APP_SPEC_REFRESH_PER_MIN = 6;
|
|
1362
|
+
var APP_SPEC_MAX_PROTECTED_PATHS = 50;
|
|
1363
|
+
var APP_SPEC_MAX_REQUIRE_HUMAN_MERGE_PATHS = 50;
|
|
1364
|
+
var APP_SPEC_PUBLIC_KEY_SUFFIX = "_PUBLIC";
|
|
1365
|
+
var APP_SPEC_SOURCE_RELATIONS = ["fork", "private-copy", "link"];
|
|
1366
|
+
var APP_SPEC_BUILD_STRATEGIES = ["dockerfile", "image", "auto", "none"];
|
|
1367
|
+
var APP_SPEC_COMPONENT_ROLES = ["web", "worker"];
|
|
1368
|
+
var APP_SPEC_PROBE_KINDS = ["startup", "readiness", "liveness"];
|
|
1369
|
+
var APP_SPEC_ENV_PHASES = ["runtime", "build", "both"];
|
|
1370
|
+
var APP_SPEC_GENERATE_KINDS = ["base64", "hex", "chars", "uuid", "keypair"];
|
|
1371
|
+
var APP_SPEC_GENERATE_ALPHABETS = ["alnum", "alnum-symbols", "hex-lower", "base64url"];
|
|
1372
|
+
var APP_SPEC_GENERATE_ROTATIONS = ["never"];
|
|
1373
|
+
var APP_SPEC_KEYPAIR_TYPES = ["ed25519", "ec-p256", "rsa-2048", "rsa-4096"];
|
|
1374
|
+
var APP_SPEC_KEYPAIR_FORMATS = ["pem", "base64url-raw", "pkcs12"];
|
|
1375
|
+
var APP_SPEC_JOB_WHENS = ["pre-deploy", "first-deploy", "post-deploy"];
|
|
1376
|
+
var APP_SPEC_HTTP_METHODS = ["GET", "POST", "PUT", "PATCH", "DELETE"];
|
|
1377
|
+
var APP_SPEC_HTTP_AUTH_SCHEMES = ["bearer", "raw"];
|
|
1378
|
+
var APP_SPEC_CRON_CONCURRENCIES = ["forbid", "allow"];
|
|
1379
|
+
var APP_SPEC_DOMAIN_CHANGES = ["restart", "rebuild"];
|
|
1380
|
+
var APP_SPEC_SMOKE_HTTP_METHODS = ["GET", "HEAD", "POST"];
|
|
1381
|
+
var APP_SPEC_SMOKE_WHENS = ["always", "first-deploy"];
|
|
1382
|
+
var APP_SPEC_UPSTREAM_SYNC_MODES = ["merge"];
|
|
1383
|
+
var APP_SPEC_POSTGRES_VERSIONS = ["14", "15", "16", "17"];
|
|
1384
|
+
var APP_SPEC_REDIS_VERSIONS = ["7"];
|
|
1385
|
+
var APP_SPEC_REDIS_MAXMEMORY_POLICIES = [
|
|
1386
|
+
"noeviction",
|
|
1387
|
+
"allkeys-lru",
|
|
1388
|
+
"volatile-lru",
|
|
1389
|
+
"allkeys-lfu",
|
|
1390
|
+
"volatile-lfu"
|
|
1391
|
+
];
|
|
1392
|
+
var APP_SPEC_EVALUATION_TRIGGERS = [
|
|
1393
|
+
"created",
|
|
1394
|
+
"push",
|
|
1395
|
+
"pr_merged",
|
|
1396
|
+
"manual",
|
|
1397
|
+
"lazy",
|
|
1398
|
+
"blueprint_applied",
|
|
1399
|
+
"build"
|
|
1400
|
+
];
|
|
1401
|
+
var APP_SPEC_BLOCK_DEFAULTS = {
|
|
1402
|
+
// §8 display
|
|
1403
|
+
"display.protectedPaths": [],
|
|
1404
|
+
// §9 build
|
|
1405
|
+
"build.dockerfile": "Dockerfile",
|
|
1406
|
+
"build.context": ".",
|
|
1407
|
+
"build.args": [],
|
|
1408
|
+
"build.services": [],
|
|
1409
|
+
"build.resources.cpu": 2,
|
|
1410
|
+
"build.resources.memory": "7Gi",
|
|
1411
|
+
"build.resources.timeoutMinutes": 60,
|
|
1412
|
+
// §10 components
|
|
1413
|
+
"components[].replicas": 1,
|
|
1414
|
+
"components[].writableRootFilesystem": false,
|
|
1415
|
+
"components[].probes.startup.periodSeconds": 10,
|
|
1416
|
+
"components[].probes.startup.timeoutSeconds": 5,
|
|
1417
|
+
"components[].probes.startup.initialDelaySeconds": 0,
|
|
1418
|
+
"components[].probes.startup.failureThreshold": 30,
|
|
1419
|
+
"components[].probes.readiness.periodSeconds": 10,
|
|
1420
|
+
"components[].probes.readiness.timeoutSeconds": 5,
|
|
1421
|
+
"components[].probes.readiness.initialDelaySeconds": 0,
|
|
1422
|
+
"components[].probes.readiness.failureThreshold": 3,
|
|
1423
|
+
"components[].probes.liveness.periodSeconds": 10,
|
|
1424
|
+
"components[].probes.liveness.timeoutSeconds": 5,
|
|
1425
|
+
"components[].probes.liveness.initialDelaySeconds": 0,
|
|
1426
|
+
"components[].probes.liveness.failureThreshold": 3,
|
|
1427
|
+
"components[].resources.cpu": "250m",
|
|
1428
|
+
"components[].resources.memory": "512Mi",
|
|
1429
|
+
"components[].volumes": [],
|
|
1430
|
+
"components[].volumes[].backup": true,
|
|
1431
|
+
// §11 dependencies
|
|
1432
|
+
"dependencies.postgres.version": "16",
|
|
1433
|
+
"dependencies.postgres.directUrl": false,
|
|
1434
|
+
"dependencies.postgres.extensions": [],
|
|
1435
|
+
"dependencies.redis.version": "7",
|
|
1436
|
+
"dependencies.redis.maxmemoryPolicy": "noeviction",
|
|
1437
|
+
"dependencies.redis.persistence": false,
|
|
1438
|
+
"dependencies.objectStorage.publicBuckets": [],
|
|
1439
|
+
"dependencies.smtp.required": false,
|
|
1440
|
+
// §12 env
|
|
1441
|
+
"env[].secret": false,
|
|
1442
|
+
"env[].phase": "runtime",
|
|
1443
|
+
"env[].generate.bytes": 32,
|
|
1444
|
+
"env[].generate.length": 32,
|
|
1445
|
+
"env[].generate.alphabet": "alnum",
|
|
1446
|
+
"env[].generate.keypair.type": "ed25519",
|
|
1447
|
+
"env[].generate.keypair.format": "pem",
|
|
1448
|
+
"env[].generate.rotate": "never",
|
|
1449
|
+
"env[].prompt.required": true,
|
|
1450
|
+
// §13 jobs
|
|
1451
|
+
"jobs[].http.method": "POST",
|
|
1452
|
+
"jobs[].http.authScheme": "bearer",
|
|
1453
|
+
"jobs[].http.expect.status": [200, 201, 204],
|
|
1454
|
+
"jobs[].timeoutSeconds": 600,
|
|
1455
|
+
"jobs[].retries": 0,
|
|
1456
|
+
// §14 cron
|
|
1457
|
+
"cron[].http.method": "POST",
|
|
1458
|
+
"cron[].http.authScheme": "bearer",
|
|
1459
|
+
"cron[].http.expect.status": [200, 201, 204],
|
|
1460
|
+
"cron[].timeoutSeconds": 300,
|
|
1461
|
+
"cron[].concurrency": "forbid",
|
|
1462
|
+
// §15 domains
|
|
1463
|
+
"domains.publicUrlEnv": [],
|
|
1464
|
+
"domains.onChange": "restart",
|
|
1465
|
+
"domains.needsHairpin": false,
|
|
1466
|
+
// §16 smoke
|
|
1467
|
+
"smoke[].http.method": "GET",
|
|
1468
|
+
"smoke[].expect.status": [200],
|
|
1469
|
+
"smoke[].expect.bodyContains": [],
|
|
1470
|
+
"smoke[].expect.bodyNotContains": [],
|
|
1471
|
+
"smoke[].expect.maxLatencyMs": 1e4,
|
|
1472
|
+
"smoke[].when": "always",
|
|
1473
|
+
// §17 checks
|
|
1474
|
+
"checks[].required": true,
|
|
1475
|
+
"checks[].timeoutSeconds": 1800,
|
|
1476
|
+
// §18 agents
|
|
1477
|
+
"agents.instructionFiles": [],
|
|
1478
|
+
"agents.maxPullRequestChangedLines": 500,
|
|
1479
|
+
"agents.maxPullRequestChangedFiles": 50,
|
|
1480
|
+
"agents.requireHumanMergePaths": [],
|
|
1481
|
+
// §19 upstreamSync
|
|
1482
|
+
"upstreamSync.enabled": true,
|
|
1483
|
+
"upstreamSync.schedule": "0 6 * * 1",
|
|
1484
|
+
"upstreamSync.mode": "merge",
|
|
1485
|
+
// §20 upstreamPullRequests, provisioning
|
|
1486
|
+
"upstreamPullRequests.enabled": false,
|
|
1487
|
+
"upstreamPullRequests.requireApproval": true,
|
|
1488
|
+
"upstreamPullRequests.maxOpen": 3,
|
|
1489
|
+
"provisioning.autoReprovision": false
|
|
1490
|
+
};
|
|
1491
|
+
var APP_SPEC_EXTENSION_KEY_PREFIX = "x-";
|
|
1492
|
+
var APP_SPEC_SOURCE_ONLY_KEYS = ["kind", "appSpecVersion", "source"];
|
|
1493
|
+
function isSourceOnlyAppSpec(spec) {
|
|
1494
|
+
if (typeof spec !== "object" || spec === null || Array.isArray(spec)) {
|
|
1495
|
+
return false;
|
|
1496
|
+
}
|
|
1497
|
+
const allowed = APP_SPEC_SOURCE_ONLY_KEYS;
|
|
1498
|
+
for (const key of Object.keys(spec)) {
|
|
1499
|
+
if (key.startsWith(APP_SPEC_EXTENSION_KEY_PREFIX)) {
|
|
1500
|
+
continue;
|
|
1501
|
+
}
|
|
1502
|
+
if (!allowed.includes(key)) {
|
|
1503
|
+
return false;
|
|
1504
|
+
}
|
|
1505
|
+
}
|
|
1506
|
+
return true;
|
|
1507
|
+
}
|
|
1508
|
+
|
|
1509
|
+
// src/apps/app-upstream.ts
|
|
1510
|
+
var APP_READINESS_STATES = ["preparing", "ready", "timed_out", "failed", "waiting_for_setup_pr"];
|
|
1511
|
+
var APP_SYNC_RESULTS = [
|
|
1512
|
+
"up_to_date",
|
|
1513
|
+
"fast_forwarded",
|
|
1514
|
+
"pull_request_opened",
|
|
1515
|
+
"pull_request_updated",
|
|
1516
|
+
"conflict",
|
|
1517
|
+
"skipped",
|
|
1518
|
+
"paused",
|
|
1519
|
+
"failed"
|
|
1520
|
+
];
|
|
1521
|
+
var APP_SYNC_REASONS = [
|
|
1522
|
+
"up_to_date",
|
|
1523
|
+
"fast_forwarded",
|
|
1524
|
+
"pull_request_opened",
|
|
1525
|
+
"pull_request_updated",
|
|
1526
|
+
"pull_request_merged",
|
|
1527
|
+
"pull_request_closed",
|
|
1528
|
+
"conflict",
|
|
1529
|
+
"held_for_workflow_review",
|
|
1530
|
+
"skipped_rate_limited",
|
|
1531
|
+
"skipped_budget",
|
|
1532
|
+
"license_worse",
|
|
1533
|
+
"disabled_by_spec",
|
|
1534
|
+
"paused",
|
|
1535
|
+
"provider_unsupported",
|
|
1536
|
+
"failed"
|
|
1537
|
+
];
|
|
1538
|
+
var APP_READINESS_FAILURE_REASONS = [
|
|
1539
|
+
"access_revoked",
|
|
1540
|
+
"dispatch_unavailable",
|
|
1541
|
+
"copy_refused",
|
|
1542
|
+
"too_large",
|
|
1543
|
+
"provider_unsupported",
|
|
1544
|
+
"timed_out",
|
|
1545
|
+
"setup_pull_request_closed",
|
|
1546
|
+
"handler_failed",
|
|
1547
|
+
"blueprint_apply_failed",
|
|
1548
|
+
"data_repository_missing"
|
|
1549
|
+
];
|
|
1550
|
+
var APP_UPSTREAM_WARNING_CODES = [
|
|
1551
|
+
"upstreamArchived",
|
|
1552
|
+
"upstreamUnavailable",
|
|
1553
|
+
"forkMissing",
|
|
1554
|
+
"privateCopyMissing",
|
|
1555
|
+
"rateLimited",
|
|
1556
|
+
"defaultBranchRenamed",
|
|
1557
|
+
"privateCopyTooLarge",
|
|
1558
|
+
"historyRewritten",
|
|
1559
|
+
"needsAdmin",
|
|
1560
|
+
"appPermissionMissing",
|
|
1561
|
+
"notReady",
|
|
1562
|
+
"workflowsGated"
|
|
1563
|
+
];
|
|
1564
|
+
var APP_UPSTREAM_STATUSES = ["available", "archived", "unavailable", "none", "unknown"];
|
|
1565
|
+
var APP_ACTIONS_STATES = [
|
|
1566
|
+
"pending",
|
|
1567
|
+
"clean",
|
|
1568
|
+
"needs_admin",
|
|
1569
|
+
"permission_missing",
|
|
1570
|
+
"failed",
|
|
1571
|
+
"not_applicable"
|
|
1572
|
+
];
|
|
1573
|
+
var APP_FORK_READINESS_REASONS = ["initial", "retry", "redispatch", "setup_merged"];
|
|
1574
|
+
var APP_FORK_READINESS_POLL_DELAYS_MS = [2e3, 4e3, 8e3, 15e3];
|
|
1575
|
+
var APP_FORK_READINESS_POLL_INTERVAL_MS = 15e3;
|
|
1576
|
+
var APP_FORK_READINESS_TIMEOUT_MS = 9e5;
|
|
1577
|
+
var APP_FORK_READINESS_READY_LATENCY_MS = 3e4;
|
|
1578
|
+
var APP_FORK_READINESS_MANUAL_RETRIES_PER_HOUR = 3;
|
|
1579
|
+
var APP_FORK_READINESS_MAX_REDISPATCH = 3;
|
|
1580
|
+
var APP_FORK_READINESS_IDLE_MS = 6e5;
|
|
1581
|
+
var APP_FORK_READINESS_TIMEOUT_OVERRIDE_MIN_MS = 5e3;
|
|
1582
|
+
var APP_FORK_READINESS_TIMEOUT_ENV = "EVER_WORKS_APP_FORK_READINESS_TIMEOUT_MS";
|
|
1583
|
+
var APP_SETUP_PR_CHECK_ON_VIEW_MIN_INTERVAL_MS = 6e4;
|
|
1584
|
+
var APP_SETUP_PR_CHECK_BATCH = 50;
|
|
1585
|
+
var APP_UPSTREAM_SYNC_DEFAULT_SCHEDULE = "0 6 * * 1";
|
|
1586
|
+
var APP_UPSTREAM_SYNC_MIN_INTERVAL_MS = 36e5;
|
|
1587
|
+
var APP_UPSTREAM_SYNC_JITTER_MAX_MS = 3e5;
|
|
1588
|
+
var APP_UPSTREAM_SYNC_MANUAL_PER_HOUR = 6;
|
|
1589
|
+
var APP_UPSTREAM_SYNC_ACK_BUDGET_MS = 2e3;
|
|
1590
|
+
var APP_UPSTREAM_SYNC_LOCK_TTL_MS = 18e5;
|
|
1591
|
+
var APP_UPSTREAM_SYNC_DISPATCH_CRON = "*/10 * * * *";
|
|
1592
|
+
var APP_UPSTREAM_SYNC_DISPATCH_BATCH = 50;
|
|
1593
|
+
var APP_UPSTREAM_SYNC_MAX_PROVIDER_CALLS = 20;
|
|
1594
|
+
var APP_UPSTREAM_SYNC_BRANCH = "ever-works/upstream-sync";
|
|
1595
|
+
var APP_UPSTREAM_CONFLICT_LABEL_PREFIX = "app-upstream-conflict:";
|
|
1596
|
+
var APP_UPSTREAM_CONFLICT_MAX_PATHS = 50;
|
|
1597
|
+
var APP_ACTIONS_HYGIENE_MAX_WORKFLOWS = 100;
|
|
1598
|
+
var APP_RATE_LIMIT_MIN_REMAINING = 300;
|
|
1599
|
+
var APP_RATE_LIMIT_RESET_GRACE_MS = 6e4;
|
|
1600
|
+
var APP_RATE_LIMIT_BACKOFF_BASE_MS = 6e4;
|
|
1601
|
+
var APP_RATE_LIMIT_BACKOFF_MAX_MS = 36e5;
|
|
1602
|
+
var APP_RATE_LIMITED_PERSISTENT_AFTER = 3;
|
|
1603
|
+
var APP_DIVERGENCE_TTL_MS = 6e5;
|
|
1604
|
+
var APP_DIVERGENCE_DAILY_MS = 864e5;
|
|
1605
|
+
var APP_BEHIND_EVENT_STEP = 25;
|
|
1606
|
+
var APP_UPSTREAM_UNAVAILABLE_RECHECK_MS = 864e5;
|
|
1607
|
+
var APP_LICENSE_EVALUATION_REASONS = ["upstream_synced", "upstream_merged", "blueprint_applied"];
|
|
1608
|
+
function appManualSyncAllowed(manualSyncsThisHour) {
|
|
1609
|
+
return Number.isFinite(manualSyncsThisHour) && manualSyncsThisHour >= 0 && manualSyncsThisHour < APP_UPSTREAM_SYNC_MANUAL_PER_HOUR;
|
|
1610
|
+
}
|
|
1611
|
+
function appRateLimitAllowsSync(remainingRequests) {
|
|
1612
|
+
return Number.isFinite(remainingRequests) && remainingRequests >= APP_RATE_LIMIT_MIN_REMAINING;
|
|
1613
|
+
}
|
|
1614
|
+
|
|
1615
|
+
// src/apps/apps-catalog.types.ts
|
|
1616
|
+
var APPS_CATALOG_CACHE_TTL_MS = 36e5;
|
|
1617
|
+
var APPS_CATALOG_FAILURE_TTL_MS = 3e4;
|
|
1618
|
+
var APPS_CATALOG_FETCH_TIMEOUT_MS = 8e3;
|
|
1619
|
+
var APPS_CATALOG_MANIFEST_MAX_BYTES = 2097152;
|
|
1620
|
+
var APPS_CATALOG_MAX_ENTRIES = 1e3;
|
|
1621
|
+
var APPS_CATALOG_REGISTRY_MAX_BYTES = 262144;
|
|
1622
|
+
var APPS_CATALOG_LAST_GOOD_REGISTRY_MS = 7 * 864e5;
|
|
1623
|
+
var APPS_CATALOG_PAGE_SIZE = 24;
|
|
1624
|
+
var APPS_CATALOG_PAGE_SIZE_MAX = 100;
|
|
1625
|
+
var APPS_CATALOG_SEARCH_MIN_CHARS = 2;
|
|
1626
|
+
var APPS_CATALOG_README_MAX_BYTES = 65536;
|
|
1627
|
+
var APPS_CATALOG_PUBLIC_PER_MIN = 120;
|
|
1628
|
+
var APPS_CATALOG_FANOUT_PER_RUN = 500;
|
|
1629
|
+
var APPS_CATALOG_REFRESH_CRON = "23 * * * *";
|
|
1630
|
+
var BLUEPRINT_RESOLVE_HIT_TTL_MS = 36e5;
|
|
1631
|
+
var BLUEPRINT_RESOLVE_MISS_TTL_MS = 6e5;
|
|
1632
|
+
var BLUEPRINT_PROBE_MAX_READS = 3;
|
|
1633
|
+
var BLUEPRINT_ALTERNATIVES_MAX = 5;
|
|
1634
|
+
var BLUEPRINT_OVERLAY_MAX_FILES = 50;
|
|
1635
|
+
var BLUEPRINT_OVERLAY_FILE_MAX_BYTES = 1048576;
|
|
1636
|
+
var BLUEPRINT_OVERLAY_TOTAL_MAX_BYTES = 5242880;
|
|
1637
|
+
var BLUEPRINT_APPLY_RETRIES = 3;
|
|
1638
|
+
var BLUEPRINT_APPLY_PER_HOUR = 5;
|
|
1639
|
+
var APPS_CATALOG_CATEGORIES = [
|
|
1640
|
+
"analytics",
|
|
1641
|
+
"communication",
|
|
1642
|
+
"content",
|
|
1643
|
+
"crm",
|
|
1644
|
+
"developer-tools",
|
|
1645
|
+
"finance",
|
|
1646
|
+
"forms",
|
|
1647
|
+
"knowledge",
|
|
1648
|
+
"marketing",
|
|
1649
|
+
"productivity",
|
|
1650
|
+
"project-management",
|
|
1651
|
+
"scheduling",
|
|
1652
|
+
"security",
|
|
1653
|
+
"support",
|
|
1654
|
+
"other"
|
|
1655
|
+
];
|
|
1656
|
+
var APPS_CATALOG_ENTRY_STATUSES = ["production", "beta", "placeholder"];
|
|
1657
|
+
var APPS_CATALOG_VERIFICATION_STATUSES = ["candidate", "verified", "at-risk", "not-verified"];
|
|
1658
|
+
var APPS_CATALOG_ENTRY_LICENSE_CLASSES = ["green", "amber"];
|
|
1659
|
+
var BLUEPRINT_RESOLUTION_REASONS = ["notListed", "lookupFailed", "refMismatch", "blueprintNotFound"];
|
|
1660
|
+
|
|
1661
|
+
// src/apps/apps-limits.ts
|
|
1662
|
+
var APP_REPOSITORY_STAGES = ["private-copy", "provisioning", "build", "sandbox"];
|
|
1663
|
+
var APP_REPOSITORY_STAGE_REFUSAL_CODES = [
|
|
1664
|
+
"too_large_for_private_copy",
|
|
1665
|
+
"uses_lfs",
|
|
1666
|
+
"repository-too-large"
|
|
1667
|
+
];
|
|
1668
|
+
var APP_REPOSITORY_STAGE_LIMITS = {
|
|
1669
|
+
"private-copy": {
|
|
1670
|
+
maxSizeKb: APP_PRIVATE_COPY_MAX_SIZE_KB,
|
|
1671
|
+
fetchesLfs: false,
|
|
1672
|
+
refusalCodes: ["too_large_for_private_copy", "uses_lfs"]
|
|
1673
|
+
},
|
|
1674
|
+
provisioning: {
|
|
1675
|
+
maxSizeKb: 3 * 1024 * 1024,
|
|
1676
|
+
refusalCodes: ["repository-too-large"]
|
|
1677
|
+
},
|
|
1678
|
+
build: {
|
|
1679
|
+
refusalCodes: []
|
|
1680
|
+
},
|
|
1681
|
+
sandbox: {
|
|
1682
|
+
refusalCodes: []
|
|
1683
|
+
}
|
|
1684
|
+
};
|
|
1685
|
+
var APP_REPOSITORY_STAGES_WITHOUT_SPEC_LIMIT = ["build", "sandbox"];
|
|
1686
|
+
function firstRefusingRepositoryStage(input) {
|
|
1687
|
+
const stages = input.stages ?? APP_REPOSITORY_STAGES;
|
|
1688
|
+
const sizeKnown = typeof input.sizeKb === "number" && Number.isFinite(input.sizeKb) && input.sizeKb >= 0;
|
|
1689
|
+
for (const stage of stages) {
|
|
1690
|
+
const limit = APP_REPOSITORY_STAGE_LIMITS[stage];
|
|
1691
|
+
if (stage === "private-copy" && input.usesLfs === true) {
|
|
1692
|
+
return stage;
|
|
1693
|
+
}
|
|
1694
|
+
if (limit.maxSizeKb === void 0) {
|
|
1695
|
+
continue;
|
|
1696
|
+
}
|
|
1697
|
+
if (!sizeKnown || input.sizeKb > limit.maxSizeKb) {
|
|
1698
|
+
return stage;
|
|
1699
|
+
}
|
|
1700
|
+
}
|
|
1701
|
+
return null;
|
|
1702
|
+
}
|
|
1703
|
+
var APP_QUOTA_SCOPES = ["member", "org"];
|
|
1704
|
+
var APP_WORK_QUOTA_CAPS = {
|
|
1705
|
+
/** Active App Works per member / organization (CONTRACTS.md:658). */
|
|
1706
|
+
activeAppWorks: { member: 25, org: 200, env: "EVER_WORKS_APPS_MAX_ACTIVE" },
|
|
1707
|
+
/** Creates per day (CONTRACTS.md:659). */
|
|
1708
|
+
createsPerDay: { member: 20, org: 100, env: "EVER_WORKS_APPS_MAX_CREATES_PER_DAY" },
|
|
1709
|
+
/** Private copies held, each already bounded by the 500 MB of APW-01 FR-20 (CONTRACTS.md:660). */
|
|
1710
|
+
privateCopies: { member: 10, org: 50, env: "EVER_WORKS_APPS_MAX_PRIVATE_COPIES" }
|
|
1711
|
+
};
|
|
1712
|
+
function appWorkQuotaAllows(cap, currentCount) {
|
|
1713
|
+
return Number.isFinite(cap) && cap > 0 && Number.isFinite(currentCount) && currentCount < cap;
|
|
1714
|
+
}
|
|
1715
|
+
|
|
1716
|
+
// src/apps/apps-tier.ts
|
|
1717
|
+
var LAUNCH_GATE_ITEM_IDS = [
|
|
1718
|
+
"LG-01",
|
|
1719
|
+
"LG-02",
|
|
1720
|
+
"LG-03",
|
|
1721
|
+
"LG-04",
|
|
1722
|
+
"LG-05",
|
|
1723
|
+
"LG-06",
|
|
1724
|
+
"LG-07",
|
|
1725
|
+
"LG-08",
|
|
1726
|
+
"LG-09",
|
|
1727
|
+
"LG-10",
|
|
1728
|
+
"LG-11",
|
|
1729
|
+
"LG-12",
|
|
1730
|
+
"LG-13",
|
|
1731
|
+
"LG-14",
|
|
1732
|
+
"LG-15",
|
|
1733
|
+
"LG-16",
|
|
1734
|
+
"LG-17",
|
|
1735
|
+
"LG-18",
|
|
1736
|
+
"LG-19",
|
|
1737
|
+
"LG-20",
|
|
1738
|
+
"LG-21",
|
|
1739
|
+
"LG-22",
|
|
1740
|
+
"LG-23",
|
|
1741
|
+
"LG-24",
|
|
1742
|
+
"LG-25"
|
|
1743
|
+
];
|
|
1744
|
+
var LAUNCH_GATE_KINDS = ["automated", "attested", "both"];
|
|
1745
|
+
var LAUNCH_GATE_PHASES = ["P2", "P3"];
|
|
1746
|
+
var LAUNCH_GATE_OUTCOMES = ["passed", "failed", "inconclusive", "error"];
|
|
1747
|
+
var LAUNCH_GATE_ITEMS = [
|
|
1748
|
+
{ id: "LG-01", title: "Dedicated capacity", kind: "attested", phase: "P2" },
|
|
1749
|
+
{ id: "LG-02", title: "Network segmentation", kind: "both", phase: "P2" },
|
|
1750
|
+
{ id: "LG-03", title: "Separate egress identity", kind: "both", phase: "P2" },
|
|
1751
|
+
{ id: "LG-04", title: "Sandboxed runtime, enforced", kind: "automated", phase: "P2" },
|
|
1752
|
+
{ id: "LG-05", title: "Restricted pod security by default", kind: "automated", phase: "P2" },
|
|
1753
|
+
{ id: "LG-06", title: "Default-deny networking", kind: "automated", phase: "P2" },
|
|
1754
|
+
{ id: "LG-07", title: "Egress deny list", kind: "automated", phase: "P2" },
|
|
1755
|
+
{ id: "LG-08", title: "Mail and mining ports blocked", kind: "automated", phase: "P2" },
|
|
1756
|
+
{ id: "LG-09", title: "Quotas and limits", kind: "automated", phase: "P2" },
|
|
1757
|
+
{ id: "LG-10", title: "One namespace per App Work", kind: "automated", phase: "P2" },
|
|
1758
|
+
{ id: "LG-11", title: "No platform credentials in tenants", kind: "automated", phase: "P2" },
|
|
1759
|
+
{ id: "LG-12", title: "Platform credential is narrow", kind: "automated", phase: "P2" },
|
|
1760
|
+
{ id: "LG-13", title: "Image supply chain", kind: "automated", phase: "P2" },
|
|
1761
|
+
{ id: "LG-14", title: "Tenant-only data servers", kind: "both", phase: "P2" },
|
|
1762
|
+
{ id: "LG-15", title: "User-apps domain", kind: "both", phase: "P2" },
|
|
1763
|
+
{ id: "LG-16", title: "Separate edge", kind: "both", phase: "P2" },
|
|
1764
|
+
{ id: "LG-17", title: "Custom hostnames", kind: "automated", phase: "P2" },
|
|
1765
|
+
{ id: "LG-18", title: "Tenant quarantine drill", kind: "automated", phase: "P2" },
|
|
1766
|
+
{ id: "LG-19", title: "Abuse controls", kind: "both", phase: "P2" },
|
|
1767
|
+
{ id: "LG-20", title: "Metering flowing", kind: "automated", phase: "P2" },
|
|
1768
|
+
{ id: "LG-21", title: "Audit trail", kind: "both", phase: "P2" },
|
|
1769
|
+
{ id: "LG-22", title: "Policies from Git, no drift", kind: "automated", phase: "P2" },
|
|
1770
|
+
{ id: "LG-23", title: "Controller healthy", kind: "automated", phase: "P2" },
|
|
1771
|
+
{ id: "LG-24", title: "Sandboxed in-zone builds", kind: "both", phase: "P3" },
|
|
1772
|
+
{ id: "LG-25", title: "Build limits", kind: "automated", phase: "P3" }
|
|
1773
|
+
];
|
|
1774
|
+
function launchGateItemsForPhase(phase) {
|
|
1775
|
+
return LAUNCH_GATE_ITEMS.filter((item) => item.phase === phase);
|
|
1776
|
+
}
|
|
1777
|
+
var APPS_TIER_PROBE_REASON_CODES = [
|
|
1778
|
+
"PHASE_NOT_ENABLED",
|
|
1779
|
+
"misconfigured",
|
|
1780
|
+
"PRIVATE_RANGE_REACHABLE",
|
|
1781
|
+
"PLATFORM_ENDPOINT_REACHABLE",
|
|
1782
|
+
"CONTROL_UNREACHABLE",
|
|
1783
|
+
"EGRESS_IDENTITY_SHARED",
|
|
1784
|
+
"SANDBOX_KERNEL_NOT_DETECTED",
|
|
1785
|
+
"UNSANDBOXED_POD_ADMITTED",
|
|
1786
|
+
"PRIVILEGED_POD_ADMITTED",
|
|
1787
|
+
"CROSS_TENANT_REACHABLE",
|
|
1788
|
+
"DIRECT_POD_INGRESS_REACHABLE",
|
|
1789
|
+
"METADATA_REACHABLE",
|
|
1790
|
+
"CONTROL_PLANE_REACHABLE",
|
|
1791
|
+
"MAIL_PORT_OPEN",
|
|
1792
|
+
"MINING_PORT_OPEN",
|
|
1793
|
+
"QUOTA_MISMATCH",
|
|
1794
|
+
"LOADBALANCER_ADMITTED",
|
|
1795
|
+
"OVER_QUOTA_ADMITTED",
|
|
1796
|
+
"NAMESPACE_SHARED",
|
|
1797
|
+
"NAMESPACE_FIELD_ACCEPTED",
|
|
1798
|
+
"SA_TOKEN_PRESENT",
|
|
1799
|
+
"PLANTED_CREDENTIAL_ADMITTED",
|
|
1800
|
+
"CREDENTIAL_TOO_BROAD",
|
|
1801
|
+
"UNSIGNED_IMAGE_ADMITTED",
|
|
1802
|
+
"FOREIGN_IMAGE_ADMITTED",
|
|
1803
|
+
"VULNERABLE_IMAGE_PROMOTED",
|
|
1804
|
+
"CROSS_TENANT_DB_REACHABLE",
|
|
1805
|
+
"CONNECTION_LIMIT_NOT_ENFORCED",
|
|
1806
|
+
"STATEMENT_TIMEOUT_NOT_ENFORCED",
|
|
1807
|
+
"APEX_UNDER_PLATFORM_DOMAIN",
|
|
1808
|
+
"APEX_NOT_ON_PSL",
|
|
1809
|
+
"PSL_UNREACHABLE",
|
|
1810
|
+
"CANARY_TLS_INVALID",
|
|
1811
|
+
"CANARY_UNREACHABLE",
|
|
1812
|
+
"CUSTOM_HOSTNAME_NOT_ACTIVE",
|
|
1813
|
+
"UNREGISTERED_HOST_ADMITTED",
|
|
1814
|
+
"QUARANTINE_ISOLATION_SLOW",
|
|
1815
|
+
"QUARANTINE_SCALE_SLOW",
|
|
1816
|
+
"QUARANTINE_EDGE_SLOW",
|
|
1817
|
+
"QUARANTINE_NOT_ISOLATING",
|
|
1818
|
+
"RELEASE_SLOW",
|
|
1819
|
+
"MARKER_LOST",
|
|
1820
|
+
"BANDWIDTH_LIMIT_MISSING",
|
|
1821
|
+
"SENSOR_SILENT",
|
|
1822
|
+
"SIGNAL_NOT_IMPORTED",
|
|
1823
|
+
"USAGE_REPORT_STALE",
|
|
1824
|
+
"USAGE_IMPORT_STALE",
|
|
1825
|
+
"AUDIT_ROWS_MISSING",
|
|
1826
|
+
"POLICY_DRIFT",
|
|
1827
|
+
"POLICY_MANIFEST_MISSING",
|
|
1828
|
+
"HEARTBEAT_STALE",
|
|
1829
|
+
"CONTROLLER_TOO_OLD",
|
|
1830
|
+
"BUILD_UNSANDBOXED",
|
|
1831
|
+
"BUILD_EGRESS_OPEN",
|
|
1832
|
+
"BUILD_PUSH_CROSS_TENANT",
|
|
1833
|
+
"BUILD_CAP_NOT_ENFORCED"
|
|
1834
|
+
];
|
|
1835
|
+
var APPS_TIER_STATES = ["closed", "open-verified-blueprints", "open-any"];
|
|
1836
|
+
var APPS_TIER_SCOPES = ["verified-blueprints", "any"];
|
|
1837
|
+
var APPS_TIER_CLOSED_REASON_CODES = [
|
|
1838
|
+
/** The operator ceiling `EVER_WORKS_APPS_MANAGED_ENABLED` is off — plan §5.4:682. */
|
|
1839
|
+
"CEILING_OFF",
|
|
1840
|
+
/** An operator closed the tier — plan §5.4:683. */
|
|
1841
|
+
"CLOSED_BY_OPERATOR",
|
|
1842
|
+
/** `open-any` was asked for while `EVER_WORKS_APPS_MAX_SCOPE` forbids it — plan §5.4:685. */
|
|
1843
|
+
"SCOPE_NOT_ALLOWED",
|
|
1844
|
+
/** No finished gate run exists — plan §5.4:689. */
|
|
1845
|
+
"NO_RUN",
|
|
1846
|
+
/** The newest run is not green for the scope — plan §5.4:690. */
|
|
1847
|
+
"RUN_NOT_GREEN",
|
|
1848
|
+
/** The newest green run is older than the maximum age — plan §5.4:691. */
|
|
1849
|
+
"RUN_STALE",
|
|
1850
|
+
/** An attested item has no current attestation — plan §5.4:692. */
|
|
1851
|
+
"NOT_ATTESTED",
|
|
1852
|
+
/** An attestation expired — plan §5.4:692. */
|
|
1853
|
+
"ATTESTATION_EXPIRED",
|
|
1854
|
+
/** The controller heartbeat is missing or older than 120 s — plan §5.4:694. */
|
|
1855
|
+
"CONTROLLER_STALE",
|
|
1856
|
+
/** The controller version is below the platform's minimum — plan §5.4:695. */
|
|
1857
|
+
"CONTROLLER_TOO_OLD"
|
|
1858
|
+
];
|
|
1859
|
+
var APPS_TIER_AUTO_REOPENABLE_REASON_CODES = ["RUN_STALE", "CONTROLLER_STALE"];
|
|
1860
|
+
var APPS_TIER_POLICY_DEFAULT_SCOPE = "verified-blueprints";
|
|
1861
|
+
function isSemverLessThan(left, right) {
|
|
1862
|
+
const parse = (version) => {
|
|
1863
|
+
const withoutPrefix = version.replace(/^v/, "");
|
|
1864
|
+
const [core, ...rest] = withoutPrefix.split("-");
|
|
1865
|
+
return {
|
|
1866
|
+
parts: core.split(".").map((part) => Number.parseInt(part, 10) || 0),
|
|
1867
|
+
prerelease: rest.length > 0 ? rest.join("-") : null
|
|
1868
|
+
};
|
|
1869
|
+
};
|
|
1870
|
+
const a = parse(left);
|
|
1871
|
+
const b = parse(right);
|
|
1872
|
+
for (let index = 0; index < Math.max(a.parts.length, b.parts.length); index += 1) {
|
|
1873
|
+
const difference = (a.parts[index] ?? 0) - (b.parts[index] ?? 0);
|
|
1874
|
+
if (difference !== 0) return difference < 0;
|
|
1875
|
+
}
|
|
1876
|
+
if (a.prerelease === null && b.prerelease === null) return false;
|
|
1877
|
+
if (a.prerelease !== null && b.prerelease === null) return true;
|
|
1878
|
+
if (a.prerelease === null && b.prerelease !== null) return false;
|
|
1879
|
+
return (a.prerelease ?? "") < (b.prerelease ?? "");
|
|
1880
|
+
}
|
|
1881
|
+
function evaluateAppsTierPolicyState(input) {
|
|
1882
|
+
const closed = (scope2, reasons2) => ({
|
|
1883
|
+
open: false,
|
|
1884
|
+
scope: scope2,
|
|
1885
|
+
reasons: reasons2,
|
|
1886
|
+
autoReopenable: false
|
|
1887
|
+
});
|
|
1888
|
+
if (!input.ceilingEnabled) return closed(APPS_TIER_POLICY_DEFAULT_SCOPE, ["CEILING_OFF"]);
|
|
1889
|
+
if (input.lastEvent === null) return closed(APPS_TIER_POLICY_DEFAULT_SCOPE, ["CLOSED_BY_OPERATOR"]);
|
|
1890
|
+
if (input.lastEvent.state === "closed") {
|
|
1891
|
+
return closed(
|
|
1892
|
+
APPS_TIER_POLICY_DEFAULT_SCOPE,
|
|
1893
|
+
input.lastEvent.automatic ? input.lastEvent.reasonCodes : ["CLOSED_BY_OPERATOR"]
|
|
1894
|
+
);
|
|
1895
|
+
}
|
|
1896
|
+
const scope = input.lastEvent.state === "open-any" ? "any" : "verified-blueprints";
|
|
1897
|
+
if (scope === "any" && input.maxScope !== "any") return closed(scope, ["SCOPE_NOT_ALLOWED"]);
|
|
1898
|
+
const maxAgeMs = Math.min(input.gateMaxAgeHours, GATE_MAX_AGE_HOURS) * 36e5;
|
|
1899
|
+
const reasons = [];
|
|
1900
|
+
const run = input.latestRun;
|
|
1901
|
+
if (run === null) {
|
|
1902
|
+
reasons.push("NO_RUN");
|
|
1903
|
+
} else if (run.status !== "green" || run.coversScope !== "any" && run.coversScope !== scope) {
|
|
1904
|
+
reasons.push("RUN_NOT_GREEN");
|
|
1905
|
+
} else if (input.now - run.finishedAtEpochMs > maxAgeMs) {
|
|
1906
|
+
reasons.push("RUN_STALE");
|
|
1907
|
+
}
|
|
1908
|
+
reasons.push(...input.attestationReasons);
|
|
1909
|
+
if (input.controllerRenewedAtEpochMs === null || input.now - input.controllerRenewedAtEpochMs > HEARTBEAT_MAX_AGE_MS) {
|
|
1910
|
+
reasons.push("CONTROLLER_STALE");
|
|
1911
|
+
}
|
|
1912
|
+
if (isSemverLessThan(input.controllerVersion, input.controllerMinVersion)) reasons.push("CONTROLLER_TOO_OLD");
|
|
1913
|
+
if (reasons.length === 0) return { open: true, scope, reasons, autoReopenable: false };
|
|
1914
|
+
return {
|
|
1915
|
+
open: false,
|
|
1916
|
+
scope,
|
|
1917
|
+
reasons,
|
|
1918
|
+
autoReopenable: reasons.every(
|
|
1919
|
+
(reason) => APPS_TIER_AUTO_REOPENABLE_REASON_CODES.includes(reason)
|
|
1920
|
+
)
|
|
1921
|
+
};
|
|
1922
|
+
}
|
|
1923
|
+
var APPS_TIER_ELIGIBILITY_REASONS = [
|
|
1924
|
+
"emailUnverified",
|
|
1925
|
+
"planRequired",
|
|
1926
|
+
"ownerQuarantined",
|
|
1927
|
+
"capReached",
|
|
1928
|
+
"tierClosed"
|
|
1929
|
+
];
|
|
1930
|
+
var APPS_TIER_ELIGIBILITY_DISABLED_REASONS = ["tierClosed"];
|
|
1931
|
+
var APPS_TIER_QUARANTINE_CATEGORIES = ["abuse", "security", "billing", "legal", "pause-all", "drill"];
|
|
1932
|
+
var APPS_TIER_QUARANTINE_SOURCES = ["operator", "detector", "self-check"];
|
|
1933
|
+
var APPS_TIER_BILLING_QUARANTINE_CATEGORY = "billing";
|
|
1934
|
+
var APPS_TIER_PAUSE_ALL_CATEGORY = "security";
|
|
1935
|
+
var APPS_TIER_PAUSE_ALL_CONFIRMATION = "PAUSE ALL";
|
|
1936
|
+
var APPS_TIER_SIGNAL_KINDS = ["runtime", "mining", "mail", "bandwidth", "report"];
|
|
1937
|
+
var APPS_TIER_SIGNAL_SEVERITIES = ["low", "medium", "high"];
|
|
1938
|
+
var APPS_TIER_API_GROUP = "hosting.ever.works";
|
|
1939
|
+
var APPS_TIER_API_VERSION = "v1alpha1";
|
|
1940
|
+
var APPS_TIER_CONTROL_NAMESPACE_DEFAULT = "ever-works-apps-control";
|
|
1941
|
+
var APPS_TIER_WORK_NAME_PREFIX = "w-";
|
|
1942
|
+
var APPS_TIER_TENANT_NAMESPACE_PREFIX = "ewa-";
|
|
1943
|
+
var APPS_TIER_WORK_OWNER_LABEL = "hosting.ever.works/owner";
|
|
1944
|
+
var APPS_TIER_WORK_CANARY_LABEL = "hosting.ever.works/canary";
|
|
1945
|
+
var APPS_TIER_QUARANTINED_LABEL = "hosting.ever.works/quarantined";
|
|
1946
|
+
var APPS_TIER_TENANT_LABEL = "hosting.ever.works/tenant";
|
|
1947
|
+
var APPS_TIER_WORK_ID_LABEL = "hosting.ever.works/work-id";
|
|
1948
|
+
var APPS_TIER_ALLOWED_HOSTS_ANNOTATION = "hosting.ever.works/allowed-hosts";
|
|
1949
|
+
var APPS_TIER_RETAINED_UNTIL_LABEL = "hosting.ever.works/retained-until";
|
|
1950
|
+
var APPS_TIER_RUN_JOB_ANNOTATION = "hosting.ever.works/run-job";
|
|
1951
|
+
var APPS_TIER_WORK_DESIRED_STATES = ["running", "paused", "quarantined", "removed"];
|
|
1952
|
+
var APPS_TIER_WORK_PHASES = [
|
|
1953
|
+
"Pending",
|
|
1954
|
+
"Promoting",
|
|
1955
|
+
"Provisioning",
|
|
1956
|
+
"Ready",
|
|
1957
|
+
"Degraded",
|
|
1958
|
+
"Paused",
|
|
1959
|
+
"Quarantined",
|
|
1960
|
+
"Refused",
|
|
1961
|
+
"Failed",
|
|
1962
|
+
"Removed"
|
|
1963
|
+
];
|
|
1964
|
+
var APPS_TIER_DEPLOY_PHASES = [
|
|
1965
|
+
"prepare",
|
|
1966
|
+
"pre-deploy-jobs",
|
|
1967
|
+
"rollout",
|
|
1968
|
+
"first-deploy-jobs",
|
|
1969
|
+
"in-cluster-smoke",
|
|
1970
|
+
"publish",
|
|
1971
|
+
"public-smoke",
|
|
1972
|
+
"post-deploy-jobs",
|
|
1973
|
+
"cron",
|
|
1974
|
+
"done"
|
|
1975
|
+
];
|
|
1976
|
+
var APPS_TIER_COMPONENT_ROLES = ["web", "worker"];
|
|
1977
|
+
var APPS_TIER_JOB_PHASES = ["pre-deploy", "first-deploy", "post-deploy"];
|
|
1978
|
+
var APPS_TIER_JOB_STATUSES = ["succeeded", "failed", "timeout", "running"];
|
|
1979
|
+
var APPS_TIER_SMOKE_SCOPES = ["in-cluster", "public"];
|
|
1980
|
+
var APPS_TIER_SMOKE_STATUSES = ["passed", "failed", "skipped"];
|
|
1981
|
+
var APPS_TIER_DEPENDENCY_PHASES = ["pending", "ready", "failed", "released"];
|
|
1982
|
+
var APPS_TIER_WORK_REFUSAL_CODES = [
|
|
1983
|
+
"SPEC_LIMIT_EXCEEDED",
|
|
1984
|
+
"NAMESPACE_FIELD_FORBIDDEN",
|
|
1985
|
+
"QUOTA_PROFILE_UNKNOWN",
|
|
1986
|
+
"PLATFORM_CREDENTIAL_IN_ENV",
|
|
1987
|
+
"IMAGE_NOT_DIGEST_PINNED",
|
|
1988
|
+
"IMAGE_SCAN_BLOCKED",
|
|
1989
|
+
"IMAGE_UNSIGNED",
|
|
1990
|
+
"IMAGE_OUTSIDE_TENANT_REGISTRY",
|
|
1991
|
+
"HOST_NOT_VERIFIED",
|
|
1992
|
+
"HOST_CLAIMED",
|
|
1993
|
+
"SEALED_PAYLOAD_INVALID",
|
|
1994
|
+
"CRON_TOO_FREQUENT",
|
|
1995
|
+
/** An `ew-dep://` token the zone cannot resolve — CONTRACTS §3:371. */
|
|
1996
|
+
"DEPENDENCY_TOKEN_UNKNOWN",
|
|
1997
|
+
/** The zone cannot prove the isolation the Work requires — plan §3.1:277–280. */
|
|
1998
|
+
"ISOLATION_NOT_ENFORCED"
|
|
1999
|
+
];
|
|
2000
|
+
var APPS_TIER_WORK_DEGRADED_REASONS = ["IMAGE_RUNS_AS_ROOT", "QUOTA_EXCEEDED"];
|
|
2001
|
+
var APPS_TIER_MAX_COMPONENTS = 8;
|
|
2002
|
+
var APPS_TIER_MAX_JOBS = 10;
|
|
2003
|
+
var APPS_TIER_MAX_CRON = 10;
|
|
2004
|
+
var APPS_TIER_MAX_SMOKE = 20;
|
|
2005
|
+
var APPS_TIER_MAX_HOSTS = 20;
|
|
2006
|
+
var APPS_TIER_MAX_ENV_NAMES = 200;
|
|
2007
|
+
var APPS_TIER_MAX_COMPONENT_VOLUMES = 4;
|
|
2008
|
+
var APPS_TIER_MAX_COMPONENT_REPLICAS = 10;
|
|
2009
|
+
var APPS_TIER_MAX_IMAGES = 8;
|
|
2010
|
+
var APPS_TIER_MAX_JOB_TIMEOUT_SECONDS = 3600;
|
|
2011
|
+
var APPS_TIER_MAX_SEALED_ENV_BYTES = 262144;
|
|
2012
|
+
var APPS_TIER_MAX_WORK_BYTES = 524288;
|
|
2013
|
+
var APPS_TIER_MIN_CRON_INTERVAL_MS = 3e5;
|
|
2014
|
+
var APPS_TIER_MAX_PULL_CREDENTIAL_BYTES = 8192;
|
|
2015
|
+
var PULL_CREDENTIAL_MAX_MS = 9e5;
|
|
2016
|
+
var APPS_TIER_QUOTA_PROFILES = {
|
|
2017
|
+
starter: {
|
|
2018
|
+
name: "starter",
|
|
2019
|
+
cpuRequest: 1,
|
|
2020
|
+
cpuLimit: 2,
|
|
2021
|
+
memoryRequestGiB: 2,
|
|
2022
|
+
memoryLimitGiB: 4,
|
|
2023
|
+
pods: 10,
|
|
2024
|
+
volumes: 4,
|
|
2025
|
+
volumeTotalGiB: 10,
|
|
2026
|
+
bandwidthOutMbps: 20,
|
|
2027
|
+
bandwidthInMbps: 50,
|
|
2028
|
+
monthlyEgressGiB: 100,
|
|
2029
|
+
loadBalancers: 0,
|
|
2030
|
+
nodePorts: 0
|
|
2031
|
+
},
|
|
2032
|
+
standard: {
|
|
2033
|
+
name: "standard",
|
|
2034
|
+
cpuRequest: 2,
|
|
2035
|
+
cpuLimit: 4,
|
|
2036
|
+
memoryRequestGiB: 4,
|
|
2037
|
+
memoryLimitGiB: 8,
|
|
2038
|
+
pods: 20,
|
|
2039
|
+
volumes: 8,
|
|
2040
|
+
volumeTotalGiB: 50,
|
|
2041
|
+
bandwidthOutMbps: 50,
|
|
2042
|
+
bandwidthInMbps: 100,
|
|
2043
|
+
monthlyEgressGiB: 500,
|
|
2044
|
+
loadBalancers: 0,
|
|
2045
|
+
nodePorts: 0
|
|
2046
|
+
}
|
|
2047
|
+
};
|
|
2048
|
+
var APPS_TIER_QUOTA_CEILINGS = {
|
|
2049
|
+
cpu: 16,
|
|
2050
|
+
memoryGiB: 32,
|
|
2051
|
+
pods: 100,
|
|
2052
|
+
storageGiB: 500
|
|
2053
|
+
};
|
|
2054
|
+
var APPS_TIER_QUOTA_PROFILE_NAMES = ["starter", "standard"];
|
|
2055
|
+
function resolveAppsTierQuotaProfile(name) {
|
|
2056
|
+
const profiles = APPS_TIER_QUOTA_PROFILES;
|
|
2057
|
+
return profiles[name] ?? null;
|
|
2058
|
+
}
|
|
2059
|
+
function clampAppsTierQuotaProfile(profile) {
|
|
2060
|
+
const clamped = [];
|
|
2061
|
+
const reduce = (current, ceiling, field) => {
|
|
2062
|
+
if (current <= ceiling) return current;
|
|
2063
|
+
clamped.push(field);
|
|
2064
|
+
return ceiling;
|
|
2065
|
+
};
|
|
2066
|
+
return {
|
|
2067
|
+
profile: {
|
|
2068
|
+
...profile,
|
|
2069
|
+
cpuRequest: reduce(profile.cpuRequest, APPS_TIER_QUOTA_CEILINGS.cpu, "cpuRequest"),
|
|
2070
|
+
cpuLimit: reduce(profile.cpuLimit, APPS_TIER_QUOTA_CEILINGS.cpu, "cpuLimit"),
|
|
2071
|
+
memoryRequestGiB: reduce(profile.memoryRequestGiB, APPS_TIER_QUOTA_CEILINGS.memoryGiB, "memoryRequestGiB"),
|
|
2072
|
+
memoryLimitGiB: reduce(profile.memoryLimitGiB, APPS_TIER_QUOTA_CEILINGS.memoryGiB, "memoryLimitGiB"),
|
|
2073
|
+
pods: reduce(profile.pods, APPS_TIER_QUOTA_CEILINGS.pods, "pods"),
|
|
2074
|
+
volumeTotalGiB: reduce(profile.volumeTotalGiB, APPS_TIER_QUOTA_CEILINGS.storageGiB, "volumeTotalGiB")
|
|
2075
|
+
},
|
|
2076
|
+
clamped
|
|
2077
|
+
};
|
|
2078
|
+
}
|
|
2079
|
+
var GATE_MAX_AGE_HOURS = 24;
|
|
2080
|
+
var SELF_CHECK_BUDGET_MS = 9e5;
|
|
2081
|
+
var PROBE_CONNECT_TIMEOUT_MS = 3e3;
|
|
2082
|
+
var PROBE_ATTEMPTS = 2;
|
|
2083
|
+
var SELF_CHECK_INTERVAL_HOURS = 6;
|
|
2084
|
+
var ATTESTATION_TTL_DAYS = 90;
|
|
2085
|
+
var ATTESTATION_NOTICE_DAYS = [14, 1];
|
|
2086
|
+
var HEARTBEAT_MAX_AGE_MS = 12e4;
|
|
2087
|
+
var GATE_WATCH_INTERVAL_MIN = 5;
|
|
2088
|
+
var QUARANTINE_ISOLATE_MS = 15e3;
|
|
2089
|
+
var QUARANTINE_SCALE_MS = 6e4;
|
|
2090
|
+
var QUARANTINE_EDGE_MS = 12e4;
|
|
2091
|
+
var RELEASE_RESTORE_MS = 18e4;
|
|
2092
|
+
var DETECTOR_QUARANTINE_MS = 6e4;
|
|
2093
|
+
var IMAGE_ALLOWANCE_MAX_DAYS = 30;
|
|
2094
|
+
var REMOVED_DATA_RETENTION_DAYS = 30;
|
|
2095
|
+
var APPS_TIER_SELF_CHECK_RUN_RETENTION_DAYS = 180;
|
|
2096
|
+
var APPS_TIER_SELF_CHECK_RUN_RETENTION_COUNT = 500;
|
|
2097
|
+
var APPS_TIER_ZONE_AUDIT_RETENTION_DAYS = 90;
|
|
2098
|
+
var APPS_TIER_USAGE_FRESHNESS_MS = 72e5;
|
|
2099
|
+
var APPS_TIER_EGRESS_NOTICE_SHARE = 0.8;
|
|
2100
|
+
var APPS_TIER_EGRESS_THROTTLE_MBPS = 2;
|
|
2101
|
+
var APPS_TIER_BILLING_GRACE_DAYS = 7;
|
|
2102
|
+
var APPS_TIER_MINING_CPU_SHARE = 0.9;
|
|
2103
|
+
var APPS_TIER_MINING_CPU_WINDOW_MS = 18e5;
|
|
2104
|
+
var APPS_TIER_MINING_REFUSED_CONNECTIONS = 10;
|
|
2105
|
+
var APPS_TIER_MINING_MEDIUM_WINDOW_MS = 216e5;
|
|
2106
|
+
var APPS_TIER_MAIL_REFUSED_ATTEMPTS_PER_HOUR = 50;
|
|
2107
|
+
var APPS_TIER_SIGNAL_SUMMARY_MAX_CHARS = 500;
|
|
2108
|
+
var APPS_TIER_QUARANTINE_REASON_MIN_CHARS = 10;
|
|
2109
|
+
var APPS_TIER_ATTESTATION_EVIDENCE_MIN_CHARS = 20;
|
|
2110
|
+
var APPS_TIER_ATTESTATION_EVIDENCE_MAX_CHARS = 2e3;
|
|
2111
|
+
var APPS_TIER_ATTESTATION_EVIDENCE_REFERENCE_MAX_CHARS = 500;
|
|
2112
|
+
var APPS_TIER_HEARTBEAT_STALE_MS = 216e5;
|
|
2113
|
+
var APPS_TIER_PRICEBOOK_VERSION = 2;
|
|
2114
|
+
var APPS_TIER_PRICE_GROUP = "hosting";
|
|
2115
|
+
var APPS_TIER_PRICE_KEYS = {
|
|
2116
|
+
cpuCoreHour: "hosting.cpu_core_hour",
|
|
2117
|
+
memoryGiBHour: "hosting.memory_gib_hour",
|
|
2118
|
+
egressGiB: "hosting.egress_gib",
|
|
2119
|
+
storageGiBMonth: "hosting.storage_gib_month",
|
|
2120
|
+
buildMinute: "hosting.build_minute",
|
|
2121
|
+
dependencyStorageGiBHour: "hosting.dependency_storage_gib_hour",
|
|
2122
|
+
dependencyBackupGiBHour: "hosting.dependency_backup_gib_hour",
|
|
2123
|
+
relayMessages: "relay.messages"
|
|
2124
|
+
};
|
|
2125
|
+
var APPS_TIER_PRICE_UNITS = {
|
|
2126
|
+
cpuCoreSecondsPerUnit: 3600,
|
|
2127
|
+
memoryMiBHoursPerUnit: 1024,
|
|
2128
|
+
egressMiBPerUnit: 1024,
|
|
2129
|
+
storageGiBHoursPerUnit: 720
|
|
2130
|
+
};
|
|
2131
|
+
var APPS_TIER_USAGE_UNITS = [
|
|
2132
|
+
"cpuCoreSeconds",
|
|
2133
|
+
"memoryMiBHours",
|
|
2134
|
+
"egressMiB",
|
|
2135
|
+
"storageGiBHours",
|
|
2136
|
+
"buildMinutes",
|
|
2137
|
+
"dependencyStorageGiBHours",
|
|
2138
|
+
"dependencyBackupGiBHours"
|
|
2139
|
+
];
|
|
2140
|
+
function appsTierReceiptIdempotencyKey(workId, day) {
|
|
2141
|
+
return `apps-tier:${workId}:${day}`;
|
|
2142
|
+
}
|
|
2143
|
+
var APPS_TIER_METERING_IMPORT_CRON = "7 * * * *";
|
|
2144
|
+
var APPS_TIER_DAILY_RECEIPTS_CRON = "15 0 * * *";
|
|
2145
|
+
var APPS_TIER_EDGE_TLS_MODE = "edge";
|
|
2146
|
+
var APPS_TIER_MANAGED_ENABLED_ENV_VAR = "EVER_WORKS_APPS_MANAGED_ENABLED";
|
|
2147
|
+
var APPS_TIER_MAX_SCOPE_ENV_VAR = "EVER_WORKS_APPS_MAX_SCOPE";
|
|
2148
|
+
var APPS_TIER_GATE_MAX_AGE_HOURS_ENV_VAR = "EVER_WORKS_APPS_GATE_MAX_AGE_HOURS";
|
|
2149
|
+
var APPS_TIER_CONTROLLER_MIN_VERSION_ENV_VAR = "EVER_WORKS_APPS_CONTROLLER_MIN_VERSION";
|
|
2150
|
+
var APPS_TIER_CONTROL_KUBECONFIG_ENV_VAR = "EVER_WORKS_APPS_CONTROL_KUBECONFIG";
|
|
2151
|
+
var APPS_TIER_MAX_PER_USER_ENV_VAR = "EVER_WORKS_APPS_MAX_PER_USER";
|
|
2152
|
+
var APPS_TIER_PUBLIC_KEY_CONFIG_MAP = "ever-works-apps-controller-public-key";
|
|
2153
|
+
var APPS_TIER_ZONE_INFO_CONFIG_MAP = "ever-works-apps-zone-info";
|
|
2154
|
+
var APPS_TIER_SEAL_AAD_PREFIX = "hosting.ever.works/v1alpha1";
|
|
2155
|
+
var APPS_TIER_ACTIVITY_ACTION_TYPE = "app_tier";
|
|
2156
|
+
var APPS_TIER_EVENT_NAMES = [
|
|
2157
|
+
"app.tier.quarantined",
|
|
2158
|
+
"app.tier.released",
|
|
2159
|
+
"app.tier.deploy_refused",
|
|
2160
|
+
"app.tier.egress_threshold",
|
|
2161
|
+
"app.tier.usage_daily"
|
|
2162
|
+
];
|
|
2163
|
+
var APPS_TIER_NOTIFICATION_IDS = [
|
|
2164
|
+
"app_tier_usage_80",
|
|
2165
|
+
"app_tier_quarantined",
|
|
2166
|
+
"app_tier_egress",
|
|
2167
|
+
"app_attestation_expiry"
|
|
2168
|
+
];
|
|
2169
|
+
var APPS_TIER_OPEN_REFUSED_CODE = "apps_tier_open_refused";
|
|
2170
|
+
var APPS_TIER_QUOTA_CEILING_EXCEEDED_CODE = "quota_ceiling_exceeded";
|
|
2171
|
+
|
|
2172
|
+
// src/apps/builds.ts
|
|
2173
|
+
var APP_BUILD_STATUSES = ["queued", "running", "succeeded", "failed", "cancelled", "blocked"];
|
|
2174
|
+
var APP_BUILD_TRIGGERS = ["push", "pull_request", "manual", "verification"];
|
|
2175
|
+
var APP_BUILD_DEPLOYABLE_TRIGGERS = ["push", "manual"];
|
|
2176
|
+
var APP_BUILD_FAILURE_CLASSES = [
|
|
2177
|
+
"outOfMemory",
|
|
2178
|
+
"diskFull",
|
|
2179
|
+
"dockerfileError",
|
|
2180
|
+
"dependencyDownloadFailed",
|
|
2181
|
+
"registryPushDenied",
|
|
2182
|
+
"missingBuildValue",
|
|
2183
|
+
"secretInImage",
|
|
2184
|
+
"timeout",
|
|
2185
|
+
"workflowInvalid",
|
|
2186
|
+
"digestMismatch",
|
|
2187
|
+
"verificationFailed",
|
|
2188
|
+
"egressBlocked",
|
|
2189
|
+
"lost",
|
|
2190
|
+
"unknown"
|
|
2191
|
+
];
|
|
2192
|
+
var APP_BUILD_BLOCKED_REASONS = [
|
|
2193
|
+
"workflowPending",
|
|
2194
|
+
"workflowEditedByHand",
|
|
2195
|
+
"workflowWriteFailed",
|
|
2196
|
+
"actionsDisabled",
|
|
2197
|
+
"missingBuildValues",
|
|
2198
|
+
"runnerTooSmall",
|
|
2199
|
+
"tooManyBuildValues",
|
|
2200
|
+
"buildValueTooLarge",
|
|
2201
|
+
"secretLimitReached",
|
|
2202
|
+
"strategyNotSupported",
|
|
2203
|
+
"specInvalid",
|
|
2204
|
+
"gitConnectionMissing",
|
|
2205
|
+
"repositoryUnavailable",
|
|
2206
|
+
"managedConcurrencyLimit",
|
|
2207
|
+
"buildValueNameReserved",
|
|
2208
|
+
"buildServicePortRequired",
|
|
2209
|
+
"verificationDependencyUnsupported"
|
|
2210
|
+
];
|
|
2211
|
+
var APP_BUILD_NOT_DEPLOYABLE_REASONS = [
|
|
2212
|
+
"notSucceeded",
|
|
2213
|
+
"pullRequest",
|
|
2214
|
+
"verification",
|
|
2215
|
+
"specInvalid",
|
|
2216
|
+
"staleInputs",
|
|
2217
|
+
"secretCheckFailed",
|
|
2218
|
+
"digestUnconfirmed",
|
|
2219
|
+
"criticalVulnerability",
|
|
2220
|
+
"unsigned"
|
|
2221
|
+
];
|
|
2222
|
+
var APP_BUILD_CANCEL_REASONS = ["user", "superseded"];
|
|
2223
|
+
var APP_BUILD_SECRET_CHECK_RESULTS = ["passed", "failed", "not_needed"];
|
|
2224
|
+
var APP_BUILD_RUNNER_CLASSES = ["github-public", "github-private", "github-larger", "apps-builder"];
|
|
2225
|
+
var APP_BUILD_SYNC_ORIGINS = ["none", "upstreamSync"];
|
|
2226
|
+
var APP_BUILD_SIGNATURE_STATES = ["signed", "unsigned", "foreign"];
|
|
2227
|
+
var APP_BUILD_WORKFLOW_STATES = ["none", "committed", "pullRequestOpen", "editedByHand"];
|
|
2228
|
+
var APP_BUILD_PREPARE_WORKFLOW_STATES = [
|
|
2229
|
+
"unchanged",
|
|
2230
|
+
"committed",
|
|
2231
|
+
"pullRequestOpened",
|
|
2232
|
+
"pullRequestUpdated",
|
|
2233
|
+
"editedByHand"
|
|
2234
|
+
];
|
|
2235
|
+
var APP_BUILD_WEBHOOK_STATES = ["none", "installed", "skipped", "permissionMissing"];
|
|
2236
|
+
var APP_BUILD_STRATEGIES = ["dockerfile", "image", "auto", "none"];
|
|
2237
|
+
var APP_BUILD_KINDS = ["github-actions", "apps-builder"];
|
|
2238
|
+
var APP_BUILD_EVENT_NAMES = [
|
|
2239
|
+
"app.build.queued",
|
|
2240
|
+
"app.build.started",
|
|
2241
|
+
"app.build.succeeded",
|
|
2242
|
+
"app.build.failed",
|
|
2243
|
+
"app.build.cancelled"
|
|
2244
|
+
];
|
|
2245
|
+
var APP_BUILD_ACTIVITY_ACTION_TYPE = "app_build";
|
|
2246
|
+
var APP_BUILD_STATUS_EVENT_MAP = {
|
|
2247
|
+
queued: "app.build.queued",
|
|
2248
|
+
running: "app.build.started",
|
|
2249
|
+
succeeded: "app.build.succeeded",
|
|
2250
|
+
failed: "app.build.failed",
|
|
2251
|
+
cancelled: "app.build.cancelled",
|
|
2252
|
+
blocked: null
|
|
2253
|
+
};
|
|
2254
|
+
function appBuildEventNameForStatus(status) {
|
|
2255
|
+
return APP_BUILD_STATUS_EVENT_MAP[status];
|
|
2256
|
+
}
|
|
2257
|
+
var APP_BUILD_WORKFLOW_PATH = ".github/workflows/ever-works-build.yml";
|
|
2258
|
+
var APP_BUILD_WORKFLOW_BRANCH = "ever-works/build-workflow";
|
|
2259
|
+
var APP_BUILD_SECRET_PREFIX = "EW_";
|
|
2260
|
+
var APP_BUILD_IMAGE_NAME = "ever-works-app";
|
|
2261
|
+
var APP_BUILD_GENERATOR_VERSION = 1;
|
|
2262
|
+
var APP_BUILD_MAX_VALUES = 50;
|
|
2263
|
+
var APP_BUILD_SECRET_MAX_BYTES = 48e3;
|
|
2264
|
+
var APP_BUILD_SECRET_CHECK_MIN_CHARS = 8;
|
|
2265
|
+
var APP_BUILD_REBUILD_DEDUPE_MS = 1e4;
|
|
2266
|
+
var APP_BUILD_REBUILDS_PER_HOUR = 10;
|
|
2267
|
+
var APP_BUILD_ENV_SYNC_SLA_MS = 6e4;
|
|
2268
|
+
var APP_BUILD_POLL_AFTER_SILENCE_MS = 9e4;
|
|
2269
|
+
var APP_BUILD_SWEEP_BATCH = 200;
|
|
2270
|
+
var APP_BUILD_ADOPT_WINDOW_MS = 3e5;
|
|
2271
|
+
var APP_BUILD_LOST_GRACE_MINUTES = 30;
|
|
2272
|
+
var APP_BUILD_RESULT_MAX_BYTES = 8192;
|
|
2273
|
+
var APP_BUILD_LOG_TAIL_BYTES = 2097152;
|
|
2274
|
+
var APP_BUILD_EXCERPT_MAX_LINES = 20;
|
|
2275
|
+
var APP_BUILD_EXCERPT_MAX_LINE_CHARS = 300;
|
|
2276
|
+
var APP_BUILD_RUNNER_HEADROOM_GIB = 2;
|
|
2277
|
+
var APP_BUILD_RUNNERS = {
|
|
2278
|
+
githubPublic: { label: "ubuntu-latest", vcpu: 4, memoryGiB: 16, runnerClass: "github-public" },
|
|
2279
|
+
githubPrivate: { label: "ubuntu-latest", vcpu: 2, memoryGiB: 7, runnerClass: "github-private" }
|
|
2280
|
+
};
|
|
2281
|
+
var APP_BUILD_VERIFY_TIMEOUT_MINUTES = 30;
|
|
2282
|
+
var APP_BUILD_VERIFY_MEMORY_GIB = 12;
|
|
2283
|
+
var APP_BUILD_VERIFY_PLAN_MAX_CHARS = 6e4;
|
|
2284
|
+
var APP_BUILD_PULL_TOKEN_EXPIRY_WARN_DAYS = 14;
|
|
2285
|
+
var APP_BUILD_LIST_PAGE_SIZE = 20;
|
|
2286
|
+
var APP_BUILD_LIST_MAX_PAGE_SIZE = 100;
|
|
2287
|
+
var APP_BUILD_MANAGED_DEFAULTS = {
|
|
2288
|
+
vcpu: 4,
|
|
2289
|
+
memoryGiB: 12,
|
|
2290
|
+
diskGiB: 30,
|
|
2291
|
+
timeoutMinutes: 60
|
|
2292
|
+
};
|
|
2293
|
+
var APP_BUILD_MANAGED_MAXIMUMS = { vcpu: 16, memoryGiB: 64, timeoutMinutes: 180 };
|
|
2294
|
+
var APP_BUILD_MANAGED_CONCURRENCY = { perAppWork: 1, perAccount: 3 };
|
|
2295
|
+
var APP_BUILD_CHECKS_JOB_ID = "checks";
|
|
2296
|
+
var APP_BUILD_CHECK_NAME_PREFIX = "Ever Works check: ";
|
|
2297
|
+
var APP_BUILD_CHECKS_MAX = 20;
|
|
2298
|
+
var APP_BUILD_CHECKS_MAX_PARALLEL = 5;
|
|
2299
|
+
var APP_BUILD_VERIFY_PROMPTED_SECRET = "EW_VERIFY__PROMPTED";
|
|
2300
|
+
var APP_BUILD_VERIFY_PLAN_INPUT = "ew_verify_plan";
|
|
2301
|
+
var APP_BUILD_RESULT_ARTIFACT_NAME = "ever-works-build-result";
|
|
2302
|
+
var APP_BUILD_RESULT_ARTIFACT_FILE = "ever-works-build-result.json";
|
|
2303
|
+
var APP_BUILD_RESULT_ARTIFACT_RETENTION_DAYS = 7;
|
|
2304
|
+
var APP_BUILD_BRANCH_SLUG_MAX_CHARS = 100;
|
|
2305
|
+
var APP_BUILD_SETTING_RECLAIM_DISK = "reclaimDisk";
|
|
2306
|
+
var APP_BUILD_SETTING_ATTESTATIONS = "attestations";
|
|
2307
|
+
var APP_BUILD_SETTING_ALLOW_VALUES_ON_PULL_REQUESTS = "allowBuildValuesOnPullRequests";
|
|
2308
|
+
var APP_BUILD_SETTING_VERIFICATION_PROMPTED_REQUIRES_APPROVAL = "verificationPromptedValuesRequireApproval";
|
|
2309
|
+
var APP_BUILD_RESTRICTED_VALUE_LITERAL = "ew-restricted";
|
|
2310
|
+
var APP_BUILD_WEBHOOK_EVENT = "workflow_run";
|
|
2311
|
+
var APP_BUILD_SWEEP_CRON = "*/2 * * * *";
|
|
2312
|
+
var BUILD_SERVICE_HOST = "127.0.0.1";
|
|
2313
|
+
var BUILD_SERVICE_HEALTH_KINDS = { command: "command", http: "http", waitLoop: "waitLoop" };
|
|
2314
|
+
var BUILD_SERVICE_DEFAULTS = {
|
|
2315
|
+
postgres: {
|
|
2316
|
+
imagePrefixes: ["postgres"],
|
|
2317
|
+
env: { POSTGRES_USER: "ever-works-build", POSTGRES_PASSWORD: "ever-works-build", POSTGRES_DB: "app" },
|
|
2318
|
+
containerPort: 5432,
|
|
2319
|
+
health: { kind: "command", command: "pg_isready -U <user> -d <db>" }
|
|
2320
|
+
},
|
|
2321
|
+
redis: {
|
|
2322
|
+
imagePrefixes: ["redis"],
|
|
2323
|
+
env: {},
|
|
2324
|
+
containerPort: 6379,
|
|
2325
|
+
health: { kind: "command", command: "redis-cli ping" }
|
|
2326
|
+
},
|
|
2327
|
+
minio: {
|
|
2328
|
+
imagePrefixes: ["minio"],
|
|
2329
|
+
env: { MINIO_ROOT_USER: "ever-works-build", MINIO_ROOT_PASSWORD: "ever-works-build" },
|
|
2330
|
+
containerPort: 9e3,
|
|
2331
|
+
health: { kind: "http", path: "/minio/health/live" }
|
|
2332
|
+
},
|
|
2333
|
+
smtp: {
|
|
2334
|
+
imagePrefixes: [],
|
|
2335
|
+
env: {},
|
|
2336
|
+
containerPort: 1025,
|
|
2337
|
+
health: { kind: "waitLoop", seconds: 60 }
|
|
2338
|
+
}
|
|
2339
|
+
};
|
|
2340
|
+
var BUILD_SERVICE_KINDS = ["postgres", "redis", "minio", "smtp"];
|
|
2341
|
+
function resolveBuildServiceKind(image) {
|
|
2342
|
+
for (const kind of BUILD_SERVICE_KINDS) {
|
|
2343
|
+
const prefixes = BUILD_SERVICE_DEFAULTS[kind].imagePrefixes;
|
|
2344
|
+
for (const prefix of prefixes) {
|
|
2345
|
+
if (image.startsWith(prefix)) return kind;
|
|
2346
|
+
}
|
|
2347
|
+
}
|
|
2348
|
+
return null;
|
|
2349
|
+
}
|
|
2350
|
+
function resolveBuildServiceEnv(kind, declared) {
|
|
2351
|
+
const merged = { ...BUILD_SERVICE_DEFAULTS[kind].env };
|
|
2352
|
+
for (const entry of declared ?? []) {
|
|
2353
|
+
merged[entry.name] = entry.value;
|
|
2354
|
+
}
|
|
2355
|
+
return merged;
|
|
2356
|
+
}
|
|
2357
|
+
function resolveBuildServicePort(image, declaredPort) {
|
|
2358
|
+
const kind = resolveBuildServiceKind(image);
|
|
2359
|
+
if (kind === null) {
|
|
2360
|
+
return declaredPort === void 0 ? null : `${declaredPort}:${declaredPort}`;
|
|
2361
|
+
}
|
|
2362
|
+
return `${declaredPort ?? BUILD_SERVICE_DEFAULTS[kind].containerPort}:${BUILD_SERVICE_DEFAULTS[kind].containerPort}`;
|
|
2363
|
+
}
|
|
2364
|
+
function evaluateBuildServicePort(service) {
|
|
2365
|
+
const published = resolveBuildServicePort(service.image, service.port);
|
|
2366
|
+
return published === null ? { ok: false, blockedReason: "buildServicePortRequired" } : { ok: true, published };
|
|
2367
|
+
}
|
|
2368
|
+
function appBuildRunnerCapacity(runner) {
|
|
2369
|
+
return { vcpu: runner.vcpu, memoryGiB: runner.memoryGiB - APP_BUILD_RUNNER_HEADROOM_GIB };
|
|
2370
|
+
}
|
|
2371
|
+
function evaluateBuildRunnerFit(runner, declaredMemoryGiB) {
|
|
2372
|
+
const capacity = appBuildRunnerCapacity(runner);
|
|
2373
|
+
if (declaredMemoryGiB === void 0 || declaredMemoryGiB <= capacity.memoryGiB) return { fits: true };
|
|
2374
|
+
return { fits: false, blockedReason: "runnerTooSmall", maxMemoryGiB: capacity.memoryGiB };
|
|
2375
|
+
}
|
|
2376
|
+
function appBuildCheckName(name) {
|
|
2377
|
+
return `${APP_BUILD_CHECK_NAME_PREFIX}${name}`;
|
|
2378
|
+
}
|
|
2379
|
+
function isAppBuildCheckJobName(jobName) {
|
|
2380
|
+
return jobName.startsWith(APP_BUILD_CHECK_NAME_PREFIX);
|
|
2381
|
+
}
|
|
2382
|
+
var SHA256_ROUND_CONSTANTS = [
|
|
2383
|
+
1116352408,
|
|
2384
|
+
1899447441,
|
|
2385
|
+
3049323471,
|
|
2386
|
+
3921009573,
|
|
2387
|
+
961987163,
|
|
2388
|
+
1508970993,
|
|
2389
|
+
2453635748,
|
|
2390
|
+
2870763221,
|
|
2391
|
+
3624381080,
|
|
2392
|
+
310598401,
|
|
2393
|
+
607225278,
|
|
2394
|
+
1426881987,
|
|
2395
|
+
1925078388,
|
|
2396
|
+
2162078206,
|
|
2397
|
+
2614888103,
|
|
2398
|
+
3248222580,
|
|
2399
|
+
3835390401,
|
|
2400
|
+
4022224774,
|
|
2401
|
+
264347078,
|
|
2402
|
+
604807628,
|
|
2403
|
+
770255983,
|
|
2404
|
+
1249150122,
|
|
2405
|
+
1555081692,
|
|
2406
|
+
1996064986,
|
|
2407
|
+
2554220882,
|
|
2408
|
+
2821834349,
|
|
2409
|
+
2952996808,
|
|
2410
|
+
3210313671,
|
|
2411
|
+
3336571891,
|
|
2412
|
+
3584528711,
|
|
2413
|
+
113926993,
|
|
2414
|
+
338241895,
|
|
2415
|
+
666307205,
|
|
2416
|
+
773529912,
|
|
2417
|
+
1294757372,
|
|
2418
|
+
1396182291,
|
|
2419
|
+
1695183700,
|
|
2420
|
+
1986661051,
|
|
2421
|
+
2177026350,
|
|
2422
|
+
2456956037,
|
|
2423
|
+
2730485921,
|
|
2424
|
+
2820302411,
|
|
2425
|
+
3259730800,
|
|
2426
|
+
3345764771,
|
|
2427
|
+
3516065817,
|
|
2428
|
+
3600352804,
|
|
2429
|
+
4094571909,
|
|
2430
|
+
275423344,
|
|
2431
|
+
430227734,
|
|
2432
|
+
506948616,
|
|
2433
|
+
659060556,
|
|
2434
|
+
883997877,
|
|
2435
|
+
958139571,
|
|
2436
|
+
1322822218,
|
|
2437
|
+
1537002063,
|
|
2438
|
+
1747873779,
|
|
2439
|
+
1955562222,
|
|
2440
|
+
2024104815,
|
|
2441
|
+
2227730452,
|
|
2442
|
+
2361852424,
|
|
2443
|
+
2428436474,
|
|
2444
|
+
2756734187,
|
|
2445
|
+
3204031479,
|
|
2446
|
+
3329325298
|
|
2447
|
+
];
|
|
2448
|
+
var SHA256_INITIAL_HASH = [
|
|
2449
|
+
1779033703,
|
|
2450
|
+
3144134277,
|
|
2451
|
+
1013904242,
|
|
2452
|
+
2773480762,
|
|
2453
|
+
1359893119,
|
|
2454
|
+
2600822924,
|
|
2455
|
+
528734635,
|
|
2456
|
+
1541459225
|
|
2457
|
+
];
|
|
2458
|
+
function rotateRight32(value, bits) {
|
|
2459
|
+
return (value >>> bits | value << 32 - bits) >>> 0;
|
|
2460
|
+
}
|
|
2461
|
+
function toHexWords(words) {
|
|
2462
|
+
let hex = "";
|
|
2463
|
+
for (const word of words) hex += word.toString(16).padStart(8, "0");
|
|
2464
|
+
return hex;
|
|
2465
|
+
}
|
|
2466
|
+
function sha256Hex(text) {
|
|
2467
|
+
const message = new TextEncoder().encode(text);
|
|
2468
|
+
const bitLength = message.length * 8;
|
|
2469
|
+
const paddedLength = Math.ceil((message.length + 9) / 64) * 64;
|
|
2470
|
+
const padded = new Uint8Array(paddedLength);
|
|
2471
|
+
padded.set(message);
|
|
2472
|
+
padded[message.length] = 128;
|
|
2473
|
+
const high = Math.floor(bitLength / 4294967296);
|
|
2474
|
+
const low = bitLength >>> 0;
|
|
2475
|
+
padded[paddedLength - 8] = high >>> 24 & 255;
|
|
2476
|
+
padded[paddedLength - 7] = high >>> 16 & 255;
|
|
2477
|
+
padded[paddedLength - 6] = high >>> 8 & 255;
|
|
2478
|
+
padded[paddedLength - 5] = high & 255;
|
|
2479
|
+
padded[paddedLength - 4] = low >>> 24 & 255;
|
|
2480
|
+
padded[paddedLength - 3] = low >>> 16 & 255;
|
|
2481
|
+
padded[paddedLength - 2] = low >>> 8 & 255;
|
|
2482
|
+
padded[paddedLength - 1] = low & 255;
|
|
2483
|
+
const schedule = new Uint32Array(64);
|
|
2484
|
+
const hash = new Uint32Array(SHA256_INITIAL_HASH);
|
|
2485
|
+
for (let offset = 0; offset < paddedLength; offset += 64) {
|
|
2486
|
+
for (let index = 0; index < 16; index += 1) {
|
|
2487
|
+
const at = offset + index * 4;
|
|
2488
|
+
schedule[index] = (padded[at] << 24 | padded[at + 1] << 16 | padded[at + 2] << 8 | padded[at + 3]) >>> 0;
|
|
2489
|
+
}
|
|
2490
|
+
for (let index = 16; index < 64; index += 1) {
|
|
2491
|
+
const w15 = schedule[index - 15];
|
|
2492
|
+
const w2 = schedule[index - 2];
|
|
2493
|
+
const sigma0 = (rotateRight32(w15, 7) ^ rotateRight32(w15, 18) ^ w15 >>> 3) >>> 0;
|
|
2494
|
+
const sigma1 = (rotateRight32(w2, 17) ^ rotateRight32(w2, 19) ^ w2 >>> 10) >>> 0;
|
|
2495
|
+
schedule[index] = schedule[index - 16] + sigma0 + schedule[index - 7] + sigma1 >>> 0;
|
|
2496
|
+
}
|
|
2497
|
+
let a = hash[0];
|
|
2498
|
+
let b = hash[1];
|
|
2499
|
+
let c = hash[2];
|
|
2500
|
+
let d = hash[3];
|
|
2501
|
+
let e = hash[4];
|
|
2502
|
+
let f = hash[5];
|
|
2503
|
+
let g = hash[6];
|
|
2504
|
+
let h = hash[7];
|
|
2505
|
+
for (let index = 0; index < 64; index += 1) {
|
|
2506
|
+
const sum1 = (rotateRight32(e, 6) ^ rotateRight32(e, 11) ^ rotateRight32(e, 25)) >>> 0;
|
|
2507
|
+
const choose = (e & f ^ ~e & g) >>> 0;
|
|
2508
|
+
const temp1 = h + sum1 + choose + SHA256_ROUND_CONSTANTS[index] + schedule[index] >>> 0;
|
|
2509
|
+
const sum0 = (rotateRight32(a, 2) ^ rotateRight32(a, 13) ^ rotateRight32(a, 22)) >>> 0;
|
|
2510
|
+
const majority = (a & b ^ a & c ^ b & c) >>> 0;
|
|
2511
|
+
const temp2 = sum0 + majority >>> 0;
|
|
2512
|
+
h = g;
|
|
2513
|
+
g = f;
|
|
2514
|
+
f = e;
|
|
2515
|
+
e = d + temp1 >>> 0;
|
|
2516
|
+
d = c;
|
|
2517
|
+
c = b;
|
|
2518
|
+
b = a;
|
|
2519
|
+
a = temp1 + temp2 >>> 0;
|
|
2520
|
+
}
|
|
2521
|
+
hash[0] = hash[0] + a >>> 0;
|
|
2522
|
+
hash[1] = hash[1] + b >>> 0;
|
|
2523
|
+
hash[2] = hash[2] + c >>> 0;
|
|
2524
|
+
hash[3] = hash[3] + d >>> 0;
|
|
2525
|
+
hash[4] = hash[4] + e >>> 0;
|
|
2526
|
+
hash[5] = hash[5] + f >>> 0;
|
|
2527
|
+
hash[6] = hash[6] + g >>> 0;
|
|
2528
|
+
hash[7] = hash[7] + h >>> 0;
|
|
2529
|
+
}
|
|
2530
|
+
return toHexWords([hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7]]);
|
|
2531
|
+
}
|
|
2532
|
+
function computeBuildInputsHash(values) {
|
|
2533
|
+
for (const value of values) {
|
|
2534
|
+
if (value.name.includes("\0") || value.name.includes("")) {
|
|
2535
|
+
throw new Error("computeBuildInputsHash: an env name may not contain U+0000 or U+0001");
|
|
2536
|
+
}
|
|
2537
|
+
if (value.fingerprint.includes("\0") || value.fingerprint.includes("")) {
|
|
2538
|
+
throw new Error("computeBuildInputsHash: a fingerprint may not contain U+0000 or U+0001");
|
|
2539
|
+
}
|
|
2540
|
+
}
|
|
2541
|
+
const canonical = values.map((value) => [value.name, value.fingerprint]).sort((left, right) => {
|
|
2542
|
+
if (left[0] !== right[0]) return left[0] < right[0] ? -1 : 1;
|
|
2543
|
+
if (left[1] !== right[1]) return left[1] < right[1] ? -1 : 1;
|
|
2544
|
+
return 0;
|
|
2545
|
+
}).map(([name, fingerprint]) => `${name}\0${fingerprint}`).join("");
|
|
2546
|
+
return sha256Hex(canonical);
|
|
2547
|
+
}
|
|
2548
|
+
function buildFailureExcerpt(lines, endAtLine) {
|
|
2549
|
+
const end = endAtLine === void 0 ? lines.length : Math.min(endAtLine + 1, lines.length);
|
|
2550
|
+
const start = Math.max(0, end - APP_BUILD_EXCERPT_MAX_LINES);
|
|
2551
|
+
return lines.slice(start, end).map((line) => line.slice(0, APP_BUILD_EXCERPT_MAX_LINE_CHARS));
|
|
2552
|
+
}
|
|
2553
|
+
function evaluateBuildDeployability(input) {
|
|
2554
|
+
const notDeployable = (reason) => ({ deployable: false, notDeployableReason: reason });
|
|
2555
|
+
if (input.status !== "succeeded") return notDeployable("notSucceeded");
|
|
2556
|
+
if (input.trigger === "verification") return notDeployable("verification");
|
|
2557
|
+
if (input.trigger !== "push" && input.trigger !== "manual") return notDeployable("pullRequest");
|
|
2558
|
+
if (input.branch !== input.trackedBranch) return notDeployable("pullRequest");
|
|
2559
|
+
if (input.specValidAtCommit !== true) return notDeployable("specInvalid");
|
|
2560
|
+
if (input.secretsSyncedAtEpochMs === null || input.startedAtEpochMs === null) return notDeployable("staleInputs");
|
|
2561
|
+
if (input.secretsSyncedAtEpochMs > input.startedAtEpochMs) return notDeployable("staleInputs");
|
|
2562
|
+
if (input.buildInputsHash === null || input.buildInputsHash !== input.currentInputsHash) {
|
|
2563
|
+
return notDeployable("staleInputs");
|
|
2564
|
+
}
|
|
2565
|
+
if (input.secretCheck !== "passed" && input.secretCheck !== "not_needed") return notDeployable("secretCheckFailed");
|
|
2566
|
+
if (!input.digestConfirmed) return notDeployable("digestUnconfirmed");
|
|
2567
|
+
if (input.buildKind === "apps-builder") {
|
|
2568
|
+
if (input.signatureState !== "signed") return notDeployable("unsigned");
|
|
2569
|
+
if (input.policy.blockFixableCritical && (input.scan?.fixableCritical ?? 0) > 0) {
|
|
2570
|
+
return notDeployable("criticalVulnerability");
|
|
2571
|
+
}
|
|
2572
|
+
}
|
|
2573
|
+
return { deployable: true, notDeployableReason: null };
|
|
2574
|
+
}
|
|
2575
|
+
var APP_BUILD_RUN_SOURCES = ["event", "poll"];
|
|
2576
|
+
var APP_BUILD_RUN_DISCOVERY_PER_PAGE = 20;
|
|
2577
|
+
var APP_BUILD_RUN_DISCOVERY_BATCH = 100;
|
|
2578
|
+
var APP_BUILD_FAILURE_COPY_EN = {
|
|
2579
|
+
outOfMemory: {
|
|
2580
|
+
title: "Ran out of memory",
|
|
2581
|
+
suggestion: "Raise build.resources.memory (now {memory}) or lower the build's heap size. On this runner a build can use at most {max}."
|
|
2582
|
+
},
|
|
2583
|
+
diskFull: {
|
|
2584
|
+
title: "Ran out of disk space",
|
|
2585
|
+
suggestion: 'Turn on "Reclaim runner disk" in build settings, or shrink the build context with a .dockerignore file.'
|
|
2586
|
+
},
|
|
2587
|
+
dockerfileError: {
|
|
2588
|
+
title: "The Dockerfile failed at step {step} of {total}",
|
|
2589
|
+
suggestion: "The failing step was: {command}. Fix it in {dockerfile} and push, or ask an agent to fix it."
|
|
2590
|
+
},
|
|
2591
|
+
dependencyDownloadFailed: {
|
|
2592
|
+
title: "Couldn't download dependencies",
|
|
2593
|
+
suggestion: "A package or base image registry didn't answer. Rebuild in a few minutes; if it keeps failing, pin the versions you depend on."
|
|
2594
|
+
},
|
|
2595
|
+
registryPushDenied: {
|
|
2596
|
+
title: "Couldn't push the image",
|
|
2597
|
+
suggestion: "Allow workflows in this repository to write packages (Settings \u25B8 Actions \u25B8 General \u25B8 Workflow permissions), then rebuild."
|
|
2598
|
+
},
|
|
2599
|
+
missingBuildValue: {
|
|
2600
|
+
title: "A build value is missing: {names}",
|
|
2601
|
+
suggestion: "Set it in Settings \u25B8 Environment, then rebuild."
|
|
2602
|
+
},
|
|
2603
|
+
secretInImage: {
|
|
2604
|
+
title: "A secret would have been published inside the image: {name}",
|
|
2605
|
+
suggestion: "Use this value only in an earlier build stage, or pass it as a build secret mount. Nothing was pushed."
|
|
2606
|
+
},
|
|
2607
|
+
timeout: {
|
|
2608
|
+
title: "Took longer than {minutes} minutes",
|
|
2609
|
+
suggestion: "Raise build.resources.timeoutMinutes (maximum 180) or speed the build up with caching."
|
|
2610
|
+
},
|
|
2611
|
+
workflowInvalid: {
|
|
2612
|
+
title: "The workflow file is invalid",
|
|
2613
|
+
suggestion: "GitHub can't run the build workflow. Review the open pull request from Ever Works to restore it."
|
|
2614
|
+
},
|
|
2615
|
+
digestMismatch: {
|
|
2616
|
+
title: "The pushed image could not be confirmed",
|
|
2617
|
+
suggestion: "The registry reported a different image than the build did. Rebuild; nothing unconfirmed will be deployed."
|
|
2618
|
+
},
|
|
2619
|
+
verificationFailed: {
|
|
2620
|
+
title: "The app didn't pass its smoke tests",
|
|
2621
|
+
suggestion: "{failed} of {total} smoke tests failed. See the results below."
|
|
2622
|
+
},
|
|
2623
|
+
egressBlocked: {
|
|
2624
|
+
title: "Network access was blocked",
|
|
2625
|
+
suggestion: "The build tried to reach {hosts}, which aren't on the builder's allowed list. Get what you need from your source repository or an allowed registry, then rebuild."
|
|
2626
|
+
},
|
|
2627
|
+
lost: {
|
|
2628
|
+
title: "Lost track of this build",
|
|
2629
|
+
suggestion: "GitHub stopped answering about this build. Check it on GitHub."
|
|
2630
|
+
},
|
|
2631
|
+
unknown: {
|
|
2632
|
+
title: "Something else went wrong",
|
|
2633
|
+
suggestion: "Open the logs on GitHub, or ask an agent to look."
|
|
2634
|
+
}
|
|
2635
|
+
};
|
|
2636
|
+
var APP_BUILD_BLOCKED_ACTIONS = [
|
|
2637
|
+
"reviewPullRequest",
|
|
2638
|
+
"turnOnActions",
|
|
2639
|
+
"setValue",
|
|
2640
|
+
"useLargerRunner",
|
|
2641
|
+
"openRepositorySettings",
|
|
2642
|
+
"reconnectGithub",
|
|
2643
|
+
"rebuild",
|
|
2644
|
+
"openEnvironment"
|
|
2645
|
+
];
|
|
2646
|
+
var APP_BUILD_BLOCKED_REASON_ACTIONS = {
|
|
2647
|
+
workflowPending: "reviewPullRequest",
|
|
2648
|
+
workflowEditedByHand: "reviewPullRequest",
|
|
2649
|
+
workflowWriteFailed: "rebuild",
|
|
2650
|
+
actionsDisabled: "turnOnActions",
|
|
2651
|
+
missingBuildValues: "setValue",
|
|
2652
|
+
runnerTooSmall: "useLargerRunner",
|
|
2653
|
+
tooManyBuildValues: "openEnvironment",
|
|
2654
|
+
buildValueTooLarge: "openEnvironment",
|
|
2655
|
+
buildServicePortRequired: "openEnvironment",
|
|
2656
|
+
verificationDependencyUnsupported: null,
|
|
2657
|
+
strategyNotSupported: null,
|
|
2658
|
+
specInvalid: null,
|
|
2659
|
+
repositoryUnavailable: null,
|
|
2660
|
+
managedConcurrencyLimit: null,
|
|
2661
|
+
buildValueNameReserved: "openEnvironment",
|
|
2662
|
+
secretLimitReached: "openRepositorySettings",
|
|
2663
|
+
gitConnectionMissing: "reconnectGithub"
|
|
2664
|
+
};
|
|
2665
|
+
var APP_VERIFICATION_PLAN_VERSION = 1;
|
|
2666
|
+
var APP_BUILD_VERIFY_PLAN_MAX_COMPONENTS = 10;
|
|
2667
|
+
var APP_BUILD_VERIFY_PLAN_MAX_DEPENDENCIES = 3;
|
|
2668
|
+
var APP_BUILD_VERIFY_PLAN_MAX_JOBS = 10;
|
|
2669
|
+
var APP_BUILD_VERIFY_PLAN_MAX_SMOKE = 20;
|
|
2670
|
+
var APP_BUILD_VERIFY_PLAN_MAX_ENV_ENTRIES = 100;
|
|
2671
|
+
var APP_BUILD_VERIFICATION_RESULT_MAX_SMOKE = 50;
|
|
2672
|
+
var APP_VERIFICATION_JOB_PHASES = ["pre-deploy", "first-deploy"];
|
|
2673
|
+
var APP_MANIFEST_JOB_PHASES = ["pre-deploy", "first-deploy", "post-deploy"];
|
|
2674
|
+
var APP_VERIFICATION_PROBE_KINDS = ["http", "tcp"];
|
|
2675
|
+
var APP_HTTP_AUTH_SCHEMES = ["bearer", "raw"];
|
|
2676
|
+
var APP_VERIFICATION_HTTP_METHODS = ["GET", "POST", "PUT", "PATCH", "DELETE", "HEAD"];
|
|
2677
|
+
var APP_VERIFICATION_SMOKE_WHENS = ["after-deploy", "after-jobs"];
|
|
2678
|
+
var APP_VERIFICATION_COMPONENT_ROLES = ["web", "worker"];
|
|
2679
|
+
var APP_VERIFICATION_DEPENDENCY_KINDS = ["postgres", "redis", "objectStorage"];
|
|
2680
|
+
var APP_VERIFICATION_DEPENDENCY_CONTAINERS = {
|
|
2681
|
+
postgres: "ew-dep-postgres",
|
|
2682
|
+
redis: "ew-dep-redis",
|
|
2683
|
+
objectStorage: "ew-dep-object-storage"
|
|
2684
|
+
};
|
|
2685
|
+
|
|
2686
|
+
// src/apps/ever-id.ts
|
|
2687
|
+
var EVER_ID_REGISTRATION_PROVIDER = "ever-id";
|
|
2688
|
+
var EVER_ID_SCOPES = { APPS_READ: "apps:read", SESSION_EXCHANGE: "ever-works:session" };
|
|
2689
|
+
var EVER_ID_DEFAULT_API_AUDIENCE = "ever-works";
|
|
2690
|
+
var EVER_ID_DEFAULT_DISPLAY_NAME = "Ever ID";
|
|
2691
|
+
var EVER_ID_SIGNING_ALGS = ["RS256", "ES256", "EdDSA"];
|
|
2692
|
+
var EVER_ID_QUERY_TOKEN_PARAMS = [
|
|
2693
|
+
"access_token",
|
|
2694
|
+
"id_token",
|
|
2695
|
+
"logout_token",
|
|
2696
|
+
"token",
|
|
2697
|
+
"sessionToken",
|
|
2698
|
+
"code_verifier"
|
|
2699
|
+
];
|
|
2700
|
+
var EVER_ID_DELEGATED_SCOPES = ["apps:read"];
|
|
2701
|
+
var EVER_ID_DELEGATED_AUTH_METHOD = "ever-id-delegated";
|
|
2702
|
+
var EVER_ID_LINKED_VIA = ["sign-up", "settings"];
|
|
2703
|
+
var EVER_ID_LIMITS = {
|
|
2704
|
+
/** FR-9 — fresh random bytes per sign-in. */
|
|
2705
|
+
stateBytes: 32,
|
|
2706
|
+
/** FR-9 — fresh random bytes per sign-in. */
|
|
2707
|
+
nonceBytes: 32,
|
|
2708
|
+
/** FR-9 — the PKCE code verifier is 64 characters. */
|
|
2709
|
+
codeVerifierLength: 64,
|
|
2710
|
+
/** FR-9 — the transaction cookie lives 600 seconds. */
|
|
2711
|
+
transactionTtlSeconds: 600,
|
|
2712
|
+
/** FR-23 — a pending account creation expires after 600 seconds and is single-use. */
|
|
2713
|
+
signUpPendingTtlSeconds: 600,
|
|
2714
|
+
/** FR-26 — a pending connection expires after 300 seconds and is single-use. */
|
|
2715
|
+
connectPendingTtlSeconds: 300,
|
|
2716
|
+
/** FR-11 — `iat` may be no earlier than 600 seconds ago. */
|
|
2717
|
+
idTokenMaxAgeSeconds: 600,
|
|
2718
|
+
/** FR-25 — `auth_time` no older than 300 seconds plus the skew. */
|
|
2719
|
+
connectMaxAuthAgeSeconds: 300,
|
|
2720
|
+
/** FR-25 — connecting needs a session opened at most 12 hours ago. */
|
|
2721
|
+
connectMaxSessionAgeSeconds: 43200,
|
|
2722
|
+
/** FR-2 — the default clock-skew tolerance. */
|
|
2723
|
+
defaultClockSkewSeconds: 60,
|
|
2724
|
+
/** FR-2 — the highest clock-skew tolerance an administrator may configure. */
|
|
2725
|
+
maxClockSkewSeconds: 120,
|
|
2726
|
+
/** FR-13 — signing keys are cached for 600 seconds. */
|
|
2727
|
+
jwksCacheSeconds: 600,
|
|
2728
|
+
/** FR-13 — an unknown key id triggers at most one refresh per 30 seconds. */
|
|
2729
|
+
jwksUnknownKidCooldownSeconds: 30,
|
|
2730
|
+
/** FR-13 — cached keys stay usable for at most 21 600 seconds, then validation fails closed. */
|
|
2731
|
+
jwksMaxStaleSeconds: 21600,
|
|
2732
|
+
/** FR-14 — the discovery document is cached for 3 600 seconds. */
|
|
2733
|
+
discoveryCacheSeconds: 3600,
|
|
2734
|
+
/** FR-15 — calls to the provider time out after 5 seconds. */
|
|
2735
|
+
outboundTimeoutMs: 5e3,
|
|
2736
|
+
/** FR-33 — a sign-out notice's `iat` may be no older than 300 seconds. */
|
|
2737
|
+
logoutTokenMaxAgeSeconds: 300,
|
|
2738
|
+
/** FR-33 — a `jti` not seen in the last 600 seconds. */
|
|
2739
|
+
replayWindowSeconds: 600,
|
|
2740
|
+
/** FR-40 — an exchange token's `iat` may be no older than 300 seconds. */
|
|
2741
|
+
exchangeTokenMaxAgeSeconds: 300,
|
|
2742
|
+
/** FR-45 — a delegated token's lifetime (`exp` − `iat`) is at most 3 600 seconds. */
|
|
2743
|
+
delegatedTokenMaxLifetimeSeconds: 3600,
|
|
2744
|
+
/** FR-2 — 1–3 allowed issuers, so a provider move stays reversible (R-28). */
|
|
2745
|
+
allowedIssuersMax: 3,
|
|
2746
|
+
/** FR-2 — 0–5 local-client ids allowed to exchange for a session. */
|
|
2747
|
+
localClientsMax: 5,
|
|
2748
|
+
/** FR-31/FR-48 — at most 10 apps whose delegated reads are remembered. */
|
|
2749
|
+
delegatedClientsMax: 10,
|
|
2750
|
+
/** FR-48 — the Connected identities card lists apps seen in the last 30 days. */
|
|
2751
|
+
delegatedClientsWindowDays: 30,
|
|
2752
|
+
/** FR-5 — the availability answer is cached for 60 seconds. */
|
|
2753
|
+
availabilityCacheSeconds: 60,
|
|
2754
|
+
/** FR-31 — the names kept per delegated client. */
|
|
2755
|
+
delegatedClientNamesMax: 10,
|
|
2756
|
+
/** FR-41 — clients poll no faster than the interval the provider returns, at least 5 seconds. */
|
|
2757
|
+
devicePollMinIntervalSeconds: 5,
|
|
2758
|
+
/** FR-41 — add 5 seconds on every `slow_down`. */
|
|
2759
|
+
devicePollSlowDownStepSeconds: 5,
|
|
2760
|
+
/** FR-41 — a device code expires in at most 900 seconds. */
|
|
2761
|
+
deviceCodeMaxLifetimeSeconds: 900
|
|
2762
|
+
};
|
|
2763
|
+
function isEverIdClockSkewAllowed(seconds) {
|
|
2764
|
+
return Number.isInteger(seconds) && seconds >= 0 && seconds <= EVER_ID_LIMITS.maxClockSkewSeconds;
|
|
2765
|
+
}
|
|
2766
|
+
function isEverIdAllowedIssuerCountAllowed(count) {
|
|
2767
|
+
return Number.isInteger(count) && count >= 1 && count <= EVER_ID_LIMITS.allowedIssuersMax;
|
|
2768
|
+
}
|
|
2769
|
+
var EVER_ID_WIRE_ERROR_CODES = [
|
|
2770
|
+
"ever_id_disabled",
|
|
2771
|
+
"provider_unavailable",
|
|
2772
|
+
"transaction_invalid",
|
|
2773
|
+
"email_not_verified",
|
|
2774
|
+
"email_in_use",
|
|
2775
|
+
"sign_up_not_allowed",
|
|
2776
|
+
"subject_linked",
|
|
2777
|
+
"user_has_issuer",
|
|
2778
|
+
"reauth_required",
|
|
2779
|
+
"session_required",
|
|
2780
|
+
"last_sign_in_method",
|
|
2781
|
+
"not_connected",
|
|
2782
|
+
"account_disabled",
|
|
2783
|
+
"ever_id_signed_out",
|
|
2784
|
+
"token_in_query",
|
|
2785
|
+
"insufficient_scope"
|
|
2786
|
+
];
|
|
2787
|
+
var EVER_ID_ERROR_CODE_WIRE_VALUES = {
|
|
2788
|
+
everIdDisabled: "ever_id_disabled",
|
|
2789
|
+
providerUnavailable: "provider_unavailable",
|
|
2790
|
+
transactionInvalid: "transaction_invalid",
|
|
2791
|
+
emailNotVerified: "email_not_verified",
|
|
2792
|
+
emailInUse: "email_in_use",
|
|
2793
|
+
signUpNotAllowed: "sign_up_not_allowed",
|
|
2794
|
+
subjectLinked: "subject_linked",
|
|
2795
|
+
userHasIssuer: "user_has_issuer",
|
|
2796
|
+
reauthRequired: "reauth_required",
|
|
2797
|
+
sessionRequired: "session_required",
|
|
2798
|
+
lastSignInMethod: "last_sign_in_method",
|
|
2799
|
+
notConnected: "not_connected",
|
|
2800
|
+
accountDisabled: "account_disabled",
|
|
2801
|
+
everIdSignedOut: "ever_id_signed_out",
|
|
2802
|
+
tokenInQuery: "token_in_query",
|
|
2803
|
+
insufficientScope: "insufficient_scope"
|
|
2804
|
+
};
|
|
2805
|
+
|
|
2806
|
+
// src/apps/tenant-postgres-ddl.ts
|
|
2807
|
+
var TENANT_POSTGRES_DATABASE_PREFIX = "awd_";
|
|
2808
|
+
var TENANT_POSTGRES_ROLE_PREFIX = "awr_";
|
|
2809
|
+
var TENANT_POSTGRES_PASSWORD_PATTERN = "^[0-9a-f]{32}$";
|
|
2810
|
+
var TENANT_POSTGRES_ROLE_CONNECTION_LIMIT = APP_DEPENDENCY_MANAGED.pgRoleConnectionLimit;
|
|
2811
|
+
var TENANT_POSTGRES_DATABASE_CONNECTION_LIMIT = APP_DEPENDENCY_MANAGED.pgDatabaseConnectionLimit;
|
|
2812
|
+
var TENANT_POSTGRES_STATEMENT_TIMEOUT_MS = APP_DEPENDENCY_MANAGED.pgStatementTimeoutMs;
|
|
2813
|
+
var TENANT_POSTGRES_IDLE_IN_TRANSACTION_TIMEOUT_MS = APP_DEPENDENCY_MANAGED.pgIdleInTransactionTimeoutMs;
|
|
2814
|
+
var TENANT_POSTGRES_ROLE_ATTRIBUTES = [
|
|
2815
|
+
"LOGIN",
|
|
2816
|
+
"NOSUPERUSER",
|
|
2817
|
+
"NOCREATEDB",
|
|
2818
|
+
"NOCREATEROLE",
|
|
2819
|
+
"NOREPLICATION",
|
|
2820
|
+
"NOBYPASSRLS"
|
|
2821
|
+
];
|
|
2822
|
+
var TENANT_POSTGRES_DEFAULT_PORT = APP_DEPENDENCY_POSTGRES_DEFAULT_PORT;
|
|
2823
|
+
var TENANT_POSTGRES_DDL_REFUSALS = [
|
|
2824
|
+
"identifierInvalid",
|
|
2825
|
+
"passwordInvalid",
|
|
2826
|
+
"connectionLimitInvalid",
|
|
2827
|
+
"timeoutInvalid"
|
|
2828
|
+
];
|
|
2829
|
+
var TENANT_POSTGRES_IDENTIFIER_PATTERN = /^[a-z][a-z0-9_]{0,62}$/;
|
|
2830
|
+
function quoteTenantPostgresIdentifier(name) {
|
|
2831
|
+
return `"${name.replace(/"/g, '""')}"`;
|
|
2832
|
+
}
|
|
2833
|
+
function quoteTenantPostgresLiteral(value) {
|
|
2834
|
+
return `'${value.replace(/'/g, "''")}'`;
|
|
2835
|
+
}
|
|
2836
|
+
function buildTenantPostgresDdl(input) {
|
|
2837
|
+
if (!TENANT_POSTGRES_IDENTIFIER_PATTERN.test(input.dbName)) return { ok: false, refusal: "identifierInvalid" };
|
|
2838
|
+
if (!TENANT_POSTGRES_IDENTIFIER_PATTERN.test(input.roleName)) return { ok: false, refusal: "identifierInvalid" };
|
|
2839
|
+
if (!new RegExp(TENANT_POSTGRES_PASSWORD_PATTERN).test(input.password))
|
|
2840
|
+
return { ok: false, refusal: "passwordInvalid" };
|
|
2841
|
+
const roleLimit = input.roleConnectionLimit ?? TENANT_POSTGRES_ROLE_CONNECTION_LIMIT;
|
|
2842
|
+
const databaseLimit = input.databaseConnectionLimit ?? TENANT_POSTGRES_DATABASE_CONNECTION_LIMIT;
|
|
2843
|
+
const statementTimeoutMs = input.statementTimeoutMs ?? TENANT_POSTGRES_STATEMENT_TIMEOUT_MS;
|
|
2844
|
+
const idleTimeoutMs = input.idleInTransactionTimeoutMs ?? TENANT_POSTGRES_IDLE_IN_TRANSACTION_TIMEOUT_MS;
|
|
2845
|
+
if (!Number.isSafeInteger(roleLimit) || roleLimit < 1) return { ok: false, refusal: "connectionLimitInvalid" };
|
|
2846
|
+
if (!Number.isSafeInteger(databaseLimit) || databaseLimit < 1)
|
|
2847
|
+
return { ok: false, refusal: "connectionLimitInvalid" };
|
|
2848
|
+
if (!Number.isSafeInteger(statementTimeoutMs) || statementTimeoutMs < 1)
|
|
2849
|
+
return { ok: false, refusal: "timeoutInvalid" };
|
|
2850
|
+
if (!Number.isSafeInteger(idleTimeoutMs) || idleTimeoutMs < 1) return { ok: false, refusal: "timeoutInvalid" };
|
|
2851
|
+
const db = quoteTenantPostgresIdentifier(input.dbName);
|
|
2852
|
+
const role = quoteTenantPostgresIdentifier(input.roleName);
|
|
2853
|
+
const password = quoteTenantPostgresLiteral(input.password);
|
|
2854
|
+
const attributes = TENANT_POSTGRES_ROLE_ATTRIBUTES.join(" ");
|
|
2855
|
+
const server = [
|
|
2856
|
+
input.roleExists ? `ALTER ROLE ${role} WITH ${attributes} PASSWORD ${password} CONNECTION LIMIT ${roleLimit};` : `CREATE ROLE ${role} WITH ${attributes} PASSWORD ${password} CONNECTION LIMIT ${roleLimit};`,
|
|
2857
|
+
`ALTER ROLE ${role} SET statement_timeout = ${quoteTenantPostgresLiteral(toPostgresSeconds(statementTimeoutMs))};`,
|
|
2858
|
+
`ALTER ROLE ${role} SET idle_in_transaction_session_timeout = ${quoteTenantPostgresLiteral(
|
|
2859
|
+
toPostgresSeconds(idleTimeoutMs)
|
|
2860
|
+
)};`
|
|
2861
|
+
];
|
|
2862
|
+
if (!input.databaseExists) {
|
|
2863
|
+
server.push(`CREATE DATABASE ${db} OWNER ${role} CONNECTION LIMIT ${databaseLimit};`);
|
|
2864
|
+
}
|
|
2865
|
+
server.push(`REVOKE CONNECT, TEMPORARY ON DATABASE ${db} FROM PUBLIC;`);
|
|
2866
|
+
server.push(`GRANT CONNECT, TEMPORARY ON DATABASE ${db} TO ${role};`);
|
|
2867
|
+
const database = [`REVOKE ALL ON SCHEMA public FROM PUBLIC;`, `ALTER SCHEMA public OWNER TO ${role};`];
|
|
2868
|
+
for (const extension of input.extensions ?? []) {
|
|
2869
|
+
if (!TENANT_POSTGRES_IDENTIFIER_PATTERN.test(extension)) return { ok: false, refusal: "identifierInvalid" };
|
|
2870
|
+
database.push(`CREATE EXTENSION IF NOT EXISTS ${quoteTenantPostgresIdentifier(extension)};`);
|
|
2871
|
+
}
|
|
2872
|
+
return {
|
|
2873
|
+
ok: true,
|
|
2874
|
+
plan: {
|
|
2875
|
+
server,
|
|
2876
|
+
database,
|
|
2877
|
+
statements: [...server, ...database],
|
|
2878
|
+
createsDatabase: !input.databaseExists,
|
|
2879
|
+
altersRole: input.roleExists
|
|
2880
|
+
}
|
|
2881
|
+
};
|
|
2882
|
+
}
|
|
2883
|
+
function toPostgresSeconds(milliseconds) {
|
|
2884
|
+
return `${milliseconds / 1e3}s`;
|
|
2885
|
+
}
|
|
2886
|
+
function normaliseDataServerEndpoint(host, port) {
|
|
2887
|
+
let normalisedHost = host.trim().toLowerCase();
|
|
2888
|
+
if (normalisedHost.startsWith("[") && normalisedHost.endsWith("]")) {
|
|
2889
|
+
normalisedHost = normalisedHost.slice(1, -1);
|
|
2890
|
+
}
|
|
2891
|
+
if (normalisedHost.length === 0) return null;
|
|
2892
|
+
if (port !== void 0 && (!Number.isSafeInteger(port) || port < 1 || port > 65535)) return null;
|
|
2893
|
+
return { host: normalisedHost, port: port ?? TENANT_POSTGRES_DEFAULT_PORT };
|
|
2894
|
+
}
|
|
2895
|
+
function parseDataServerUrl(url) {
|
|
2896
|
+
const trimmed = url.trim();
|
|
2897
|
+
if (trimmed.length === 0) return null;
|
|
2898
|
+
const schemeAt = trimmed.indexOf("://");
|
|
2899
|
+
if (schemeAt >= 0) {
|
|
2900
|
+
const rest = trimmed.slice(schemeAt + 3);
|
|
2901
|
+
const authority = rest.split(/[/?#]/, 1)[0] ?? "";
|
|
2902
|
+
const withoutUserInfo = authority.includes("@") ? authority.slice(authority.lastIndexOf("@") + 1) : authority;
|
|
2903
|
+
if (withoutUserInfo.startsWith("[")) {
|
|
2904
|
+
const closing = withoutUserInfo.indexOf("]");
|
|
2905
|
+
if (closing < 0) return null;
|
|
2906
|
+
const host2 = withoutUserInfo.slice(1, closing);
|
|
2907
|
+
const tail = withoutUserInfo.slice(closing + 1);
|
|
2908
|
+
if (tail.length === 0) return normaliseDataServerEndpoint(host2);
|
|
2909
|
+
if (!tail.startsWith(":")) return null;
|
|
2910
|
+
return normaliseDataServerEndpoint(host2, Number(tail.slice(1)));
|
|
2911
|
+
}
|
|
2912
|
+
const separator2 = withoutUserInfo.lastIndexOf(":");
|
|
2913
|
+
if (separator2 < 0) return normaliseDataServerEndpoint(withoutUserInfo);
|
|
2914
|
+
const host = withoutUserInfo.slice(0, separator2);
|
|
2915
|
+
const portText = withoutUserInfo.slice(separator2 + 1);
|
|
2916
|
+
return normaliseDataServerEndpoint(host, portText.length === 0 ? void 0 : Number(portText));
|
|
2917
|
+
}
|
|
2918
|
+
if (trimmed.startsWith("[")) {
|
|
2919
|
+
const closing = trimmed.indexOf("]");
|
|
2920
|
+
if (closing < 0) return null;
|
|
2921
|
+
const host = trimmed.slice(1, closing);
|
|
2922
|
+
const tail = trimmed.slice(closing + 1);
|
|
2923
|
+
if (tail.length === 0) return normaliseDataServerEndpoint(host);
|
|
2924
|
+
if (!tail.startsWith(":")) return null;
|
|
2925
|
+
return normaliseDataServerEndpoint(host, Number(tail.slice(1)));
|
|
2926
|
+
}
|
|
2927
|
+
const separator = trimmed.lastIndexOf(":");
|
|
2928
|
+
if (separator < 0) return normaliseDataServerEndpoint(trimmed);
|
|
2929
|
+
return normaliseDataServerEndpoint(trimmed.slice(0, separator), Number(trimmed.slice(separator + 1)));
|
|
2930
|
+
}
|
|
2931
|
+
function isPlatformDataServer(candidate, platformEndpoints) {
|
|
2932
|
+
const parsed = parseDataServerUrl(candidate);
|
|
2933
|
+
if (parsed === null) return false;
|
|
2934
|
+
return platformEndpoints.some((endpoint) => {
|
|
2935
|
+
const normalised = normaliseDataServerEndpoint(endpoint.host, endpoint.port);
|
|
2936
|
+
return normalised !== null && normalised.host === parsed.host && normalised.port === parsed.port;
|
|
2937
|
+
});
|
|
2938
|
+
}
|
|
2939
|
+
function platformDataServerEndpoints(set) {
|
|
2940
|
+
return [set.platform, set.sharedWorks];
|
|
2941
|
+
}
|
|
2942
|
+
|
|
2943
|
+
// src/apps/work-app-spec.dto.ts
|
|
2944
|
+
function buildAppSpecLineLink(links, line) {
|
|
2945
|
+
const base = links.file.base;
|
|
2946
|
+
const anchor = links.lineAnchor;
|
|
2947
|
+
if (typeof line !== "number" || !Number.isInteger(line) || line < 1 || !anchor || !anchor.includes("{line}")) {
|
|
2948
|
+
return base;
|
|
2949
|
+
}
|
|
2950
|
+
return `${base}${anchor.replace("{line}", String(line))}`;
|
|
2951
|
+
}
|
|
2952
|
+
var APP_BLUEPRINT_APPLY_STATUSES = ["applying", "applied", "failed"];
|
|
2953
|
+
|
|
2954
|
+
// src/apps/app-provisioning.ts
|
|
2955
|
+
var APP_PROVISIONING_STATUSES = [
|
|
2956
|
+
"queued",
|
|
2957
|
+
"running",
|
|
2958
|
+
"needs_input",
|
|
2959
|
+
"succeeded",
|
|
2960
|
+
"merged",
|
|
2961
|
+
"failed",
|
|
2962
|
+
"cancelled"
|
|
2963
|
+
];
|
|
2964
|
+
var APP_PROVISIONING_STEPS = [
|
|
2965
|
+
"repository",
|
|
2966
|
+
"analysis",
|
|
2967
|
+
"proposal",
|
|
2968
|
+
"validate",
|
|
2969
|
+
"build",
|
|
2970
|
+
"boot",
|
|
2971
|
+
"smoke",
|
|
2972
|
+
"evidence"
|
|
2973
|
+
];
|
|
2974
|
+
var APP_PROVISIONING_STEP_STATES = ["pending", "running", "passed", "failed", "blocked", "skipped"];
|
|
2975
|
+
var APP_PROVISIONING_FAILURE_REASONS = [
|
|
2976
|
+
"no-isolated-runtime",
|
|
2977
|
+
"repository-not-ready",
|
|
2978
|
+
"repository-too-large",
|
|
2979
|
+
"not-runnable",
|
|
2980
|
+
"token-cap",
|
|
2981
|
+
"runner-minute-cap",
|
|
2982
|
+
"deadline",
|
|
2983
|
+
"could-not-verify",
|
|
2984
|
+
"no-answer",
|
|
2985
|
+
"verification-infrastructure",
|
|
2986
|
+
// Appended — see the module docstring's correction 1.
|
|
2987
|
+
"private-repository"
|
|
2988
|
+
];
|
|
2989
|
+
var APP_PROVISIONING_QUESTION_REASONS = [
|
|
2990
|
+
"attempts-spent",
|
|
2991
|
+
"repeated-failure",
|
|
2992
|
+
"missing-required-value",
|
|
2993
|
+
"runner-capacity",
|
|
2994
|
+
"token-cap",
|
|
2995
|
+
"runner-minute-cap",
|
|
2996
|
+
"multiple-apps",
|
|
2997
|
+
"agent-asked",
|
|
2998
|
+
"safety-rail"
|
|
2999
|
+
// R-17: a rail refused or held an action (grants, ladder, caps, rules)
|
|
3000
|
+
];
|
|
3001
|
+
var APP_PROVISIONING_PARK_REASONS = [
|
|
3002
|
+
"kill-switch",
|
|
3003
|
+
"agent-paused",
|
|
3004
|
+
"workspace-paused",
|
|
3005
|
+
"scope-paused"
|
|
3006
|
+
];
|
|
3007
|
+
var APP_PROVISIONING_DETECTION_SOURCES = [
|
|
3008
|
+
"app-spec",
|
|
3009
|
+
"compose",
|
|
3010
|
+
"dockerfile",
|
|
3011
|
+
"helm",
|
|
3012
|
+
"descriptor-hint",
|
|
3013
|
+
"auto"
|
|
3014
|
+
// R-13 zero-config build; the builder is the build plugin's choice
|
|
3015
|
+
];
|
|
3016
|
+
var APP_PROVISION_LIMITS = {
|
|
3017
|
+
attemptsDefault: 3,
|
|
3018
|
+
attemptsMin: 1,
|
|
3019
|
+
attemptsMax: 5,
|
|
3020
|
+
attemptsPerAnswer: 2,
|
|
3021
|
+
questionsMax: 3,
|
|
3022
|
+
attemptsCeiling: 9,
|
|
3023
|
+
optionsMax: 4,
|
|
3024
|
+
tokenCapDefault: 3e6,
|
|
3025
|
+
tokenCapMin: 5e5,
|
|
3026
|
+
tokenCapMax: 1e7,
|
|
3027
|
+
runnerMinuteCapDefault: 240,
|
|
3028
|
+
runnerMinuteCapMin: 60,
|
|
3029
|
+
runnerMinuteCapMax: 600,
|
|
3030
|
+
/** Two starts of the same App Work inside this window yield one row (§4 "Start semantics"). */
|
|
3031
|
+
startDedupeMs: 1e4,
|
|
3032
|
+
analysisRunMs: 45 * 6e4,
|
|
3033
|
+
iterateRunMs: 30 * 6e4,
|
|
3034
|
+
forkWaitMs: 30 * 6e4,
|
|
3035
|
+
activeDeadlineMs: 8 * 36e5,
|
|
3036
|
+
/**
|
|
3037
|
+
* Verification-Build reservation: `min(headSpec.build.resources.timeoutMinutes, buildMinutesMax)
|
|
3038
|
+
* + runnerBootMinutesMax` — 90 minutes at the defaults, and the number §6.4 compares against the cap.
|
|
3039
|
+
*/
|
|
3040
|
+
buildMinutesMax: 60,
|
|
3041
|
+
jobSecondsMax: 900,
|
|
3042
|
+
startupSecondsMax: 900,
|
|
3043
|
+
smokeRequestMs: 3e4,
|
|
3044
|
+
smokeTotalMs: 3e5,
|
|
3045
|
+
runnerBootMinutesMax: 30,
|
|
3046
|
+
runnerBootMemoryGiB: 12,
|
|
3047
|
+
buildMemoryGiBMax: 14,
|
|
3048
|
+
namespaceTtlMinutes: 90,
|
|
3049
|
+
repoMaxBytes: 3 * 1024 ** 3,
|
|
3050
|
+
diffMaxFiles: 12,
|
|
3051
|
+
diffMaxLines: 3e3,
|
|
3052
|
+
fileMaxBytes: 128 * 1024,
|
|
3053
|
+
outputMaxBytes: 512 * 1024,
|
|
3054
|
+
reportMaxChars: 4e4,
|
|
3055
|
+
instructionFileMaxBytes: 32 * 1024,
|
|
3056
|
+
logTailLines: 200,
|
|
3057
|
+
logTailBytes: 16 * 1024,
|
|
3058
|
+
evidenceCommentMaxChars: 6e4,
|
|
3059
|
+
chatMessagesMax: 12,
|
|
3060
|
+
questionReminderMs: 72 * 36e5,
|
|
3061
|
+
questionExpiryMs: 14 * 864e5,
|
|
3062
|
+
activePerUser: 3,
|
|
3063
|
+
activePerOrg: 10,
|
|
3064
|
+
startsPerHour: 10,
|
|
3065
|
+
pollMs: 5e3,
|
|
3066
|
+
infraRetries: 3,
|
|
3067
|
+
infraRetryWindowMs: 30 * 6e4,
|
|
3068
|
+
suggestionsPer30Days: 5,
|
|
3069
|
+
autoReprovisionPerSync: 1,
|
|
3070
|
+
autoReprovisionPer7Days: 2,
|
|
3071
|
+
clusterProbeMs: 1e4,
|
|
3072
|
+
podPendingInfraMs: 10 * 6e4
|
|
3073
|
+
};
|
|
3074
|
+
var APP_PROVISION_WRITABLE_PATHS = [".works/works.yml", ".works/overlay/**"];
|
|
3075
|
+
var APP_PROVISION_PRESERVED_SPEC_FIELDS = [
|
|
3076
|
+
"source",
|
|
3077
|
+
"blueprint",
|
|
3078
|
+
"license",
|
|
3079
|
+
"display.protectedPaths",
|
|
3080
|
+
"upstreamSync",
|
|
3081
|
+
"upstreamPullRequests",
|
|
3082
|
+
"provisioning"
|
|
3083
|
+
];
|
|
3084
|
+
var APP_PROVISIONING_QUESTION_REASON_I18N_KEY = {
|
|
3085
|
+
"attempts-spent": "attemptsSpent",
|
|
3086
|
+
"repeated-failure": "repeatedFailure",
|
|
3087
|
+
"missing-required-value": "missingRequiredValue",
|
|
3088
|
+
"runner-capacity": "runnerCapacity",
|
|
3089
|
+
"token-cap": "tokenCap",
|
|
3090
|
+
"runner-minute-cap": "runnerMinuteCap",
|
|
3091
|
+
"multiple-apps": "multipleApps",
|
|
3092
|
+
"agent-asked": "agentAsked",
|
|
3093
|
+
"safety-rail": "safetyRail"
|
|
3094
|
+
};
|
|
3095
|
+
var APP_PROVISIONING_FAILURE_REASON_I18N_KEY = {
|
|
3096
|
+
"no-isolated-runtime": "noIsolatedRuntime",
|
|
3097
|
+
"repository-not-ready": "repositoryNotReady",
|
|
3098
|
+
"repository-too-large": "repositoryTooLarge",
|
|
3099
|
+
"not-runnable": "notRunnable",
|
|
3100
|
+
"token-cap": "tokenCap",
|
|
3101
|
+
"runner-minute-cap": "runnerMinuteCap",
|
|
3102
|
+
deadline: "deadline",
|
|
3103
|
+
"could-not-verify": "couldNotVerify",
|
|
3104
|
+
"no-answer": "noAnswer",
|
|
3105
|
+
"verification-infrastructure": "verificationInfrastructure",
|
|
3106
|
+
"private-repository": "privateRepository"
|
|
3107
|
+
};
|
|
3108
|
+
var APP_PROVISIONING_QUEUED_REASON_I18N_KEY = {
|
|
3109
|
+
"user-limit": "userLimit",
|
|
3110
|
+
"org-limit": "orgLimit"
|
|
3111
|
+
};
|
|
3112
|
+
var APP_PROVISIONING_OPTION_I18N_KEY = {
|
|
3113
|
+
retry: "retry",
|
|
3114
|
+
optional: "optional",
|
|
3115
|
+
"verify-on-cluster": "verifyOnCluster",
|
|
3116
|
+
"accept-build-only": "acceptBuildOnly",
|
|
3117
|
+
"raise-cap": "raiseCap",
|
|
3118
|
+
choose: "choose",
|
|
3119
|
+
stop: "stop",
|
|
3120
|
+
"retry-after-setting": "retryAfterSetting"
|
|
3121
|
+
};
|
|
3122
|
+
|
|
3123
|
+
// src/apps/app-provisioning-copy.ts
|
|
3124
|
+
var APP_PROVISION_COPY_PARAMS = [
|
|
3125
|
+
"repo",
|
|
3126
|
+
"attempts",
|
|
3127
|
+
"variable",
|
|
3128
|
+
"step",
|
|
3129
|
+
"reason",
|
|
3130
|
+
"candidate",
|
|
3131
|
+
"candidates",
|
|
3132
|
+
"pr",
|
|
3133
|
+
"n",
|
|
3134
|
+
"budget",
|
|
3135
|
+
"detail",
|
|
3136
|
+
"tokens",
|
|
3137
|
+
"minutes"
|
|
3138
|
+
];
|
|
3139
|
+
var APP_PROVISION_REASON_TEXT_NO_ISOLATED_RUNTIME = "no isolated sandbox is available.";
|
|
3140
|
+
var APP_PROVISION_REASON_TEXT_REPOSITORY_NOT_READY = "the repository was not ready after 30 minutes.";
|
|
3141
|
+
var APP_PROVISION_REASON_TEXT_REPOSITORY_TOO_LARGE = "the repository is larger than 3 GiB.";
|
|
3142
|
+
var APP_PROVISION_REASON_TEXT_NOT_RUNNABLE = "this repository is not something that can run as a service.";
|
|
3143
|
+
var APP_PROVISION_REASON_TEXT_TOKEN_CAP = "the token cap was reached.";
|
|
3144
|
+
var APP_PROVISION_REASON_TEXT_RUNNER_MINUTE_CAP = "the runner-minute cap was reached.";
|
|
3145
|
+
var APP_PROVISION_REASON_TEXT_DEADLINE = "it ran for more than 8 hours.";
|
|
3146
|
+
var APP_PROVISION_REASON_TEXT_COULD_NOT_VERIFY = "it could not be verified after {attempts} attempts.";
|
|
3147
|
+
var APP_PROVISION_REASON_TEXT_NO_ANSWER = "the question went unanswered for 14 days.";
|
|
3148
|
+
var APP_PROVISION_REASON_TEXT_VERIFICATION_INFRASTRUCTURE = "builds are not available for this repository.";
|
|
3149
|
+
var APP_PROVISION_REASON_TEXT_PRIVATE_REPOSITORY = "private repositories can't be provisioned yet.";
|
|
3150
|
+
var APP_PROVISION_REASON_TEXTS = {
|
|
3151
|
+
"no-isolated-runtime": APP_PROVISION_REASON_TEXT_NO_ISOLATED_RUNTIME,
|
|
3152
|
+
"repository-not-ready": APP_PROVISION_REASON_TEXT_REPOSITORY_NOT_READY,
|
|
3153
|
+
"repository-too-large": APP_PROVISION_REASON_TEXT_REPOSITORY_TOO_LARGE,
|
|
3154
|
+
"not-runnable": APP_PROVISION_REASON_TEXT_NOT_RUNNABLE,
|
|
3155
|
+
"token-cap": APP_PROVISION_REASON_TEXT_TOKEN_CAP,
|
|
3156
|
+
"runner-minute-cap": APP_PROVISION_REASON_TEXT_RUNNER_MINUTE_CAP,
|
|
3157
|
+
deadline: APP_PROVISION_REASON_TEXT_DEADLINE,
|
|
3158
|
+
"could-not-verify": APP_PROVISION_REASON_TEXT_COULD_NOT_VERIFY,
|
|
3159
|
+
"no-answer": APP_PROVISION_REASON_TEXT_NO_ANSWER,
|
|
3160
|
+
"verification-infrastructure": APP_PROVISION_REASON_TEXT_VERIFICATION_INFRASTRUCTURE,
|
|
3161
|
+
"private-repository": APP_PROVISION_REASON_TEXT_PRIVATE_REPOSITORY
|
|
3162
|
+
};
|
|
3163
|
+
var APP_PROVISION_QUESTION_SUBJECT_PREFIX = "Provisioning {repo}: ";
|
|
3164
|
+
var APP_PROVISION_QUESTION_SUBJECT_ATTEMPTS_SPENT = "the app could not be verified in {attempts} attempts.";
|
|
3165
|
+
var APP_PROVISION_QUESTION_SUBJECT_REPEATED_FAILURE = "the same failure happened twice.";
|
|
3166
|
+
var APP_PROVISION_QUESTION_SUBJECT_MISSING_REQUIRED_VALUE = "the app will not start without {variable}.";
|
|
3167
|
+
var APP_PROVISION_QUESTION_SUBJECT_RUNNER_CAPACITY = "this app cannot boot in the build runner.";
|
|
3168
|
+
var APP_PROVISION_QUESTION_SUBJECT_TOKEN_CAP = "the token cap was reached.";
|
|
3169
|
+
var APP_PROVISION_QUESTION_SUBJECT_RUNNER_MINUTE_CAP = "the runner-minute cap was reached.";
|
|
3170
|
+
var APP_PROVISION_QUESTION_SUBJECT_MULTIPLE_APPS = "this repository has more than one app.";
|
|
3171
|
+
var APP_PROVISION_QUESTION_SUBJECT_AGENT_ASKED = "the agent needs a decision.";
|
|
3172
|
+
var APP_PROVISION_QUESTION_SUBJECT_SAFETY_RAIL = "a safety rule stopped the run: {reason}.";
|
|
3173
|
+
var APP_PROVISION_QUESTION_SUBJECTS = {
|
|
3174
|
+
"attempts-spent": APP_PROVISION_QUESTION_SUBJECT_ATTEMPTS_SPENT,
|
|
3175
|
+
"repeated-failure": APP_PROVISION_QUESTION_SUBJECT_REPEATED_FAILURE,
|
|
3176
|
+
"missing-required-value": APP_PROVISION_QUESTION_SUBJECT_MISSING_REQUIRED_VALUE,
|
|
3177
|
+
"runner-capacity": APP_PROVISION_QUESTION_SUBJECT_RUNNER_CAPACITY,
|
|
3178
|
+
"token-cap": APP_PROVISION_QUESTION_SUBJECT_TOKEN_CAP,
|
|
3179
|
+
"runner-minute-cap": APP_PROVISION_QUESTION_SUBJECT_RUNNER_MINUTE_CAP,
|
|
3180
|
+
"multiple-apps": APP_PROVISION_QUESTION_SUBJECT_MULTIPLE_APPS,
|
|
3181
|
+
"agent-asked": APP_PROVISION_QUESTION_SUBJECT_AGENT_ASKED,
|
|
3182
|
+
"safety-rail": APP_PROVISION_QUESTION_SUBJECT_SAFETY_RAIL
|
|
3183
|
+
};
|
|
3184
|
+
var APP_PROVISION_OPTION_RETRY = "Try again";
|
|
3185
|
+
var APP_PROVISION_OPTION_RETRY_AFTER_SETTING = "I set it on the App env page \u2014 try again";
|
|
3186
|
+
var APP_PROVISION_OPTION_OPTIONAL = "Treat it as optional";
|
|
3187
|
+
var APP_PROVISION_OPTION_VERIFY_ON_CLUSTER = "Verify on my cluster instead";
|
|
3188
|
+
var APP_PROVISION_OPTION_ACCEPT_BUILD_ONLY = "Build and check only";
|
|
3189
|
+
var APP_PROVISION_OPTION_RAISE_CAP_TOKENS = "Raise the cap by 1,000,000 tokens";
|
|
3190
|
+
var APP_PROVISION_OPTION_RAISE_CAP_MINUTES = "Raise the cap by 60 runner minutes";
|
|
3191
|
+
var APP_PROVISION_OPTION_CHOOSE = "Use {candidate}";
|
|
3192
|
+
var APP_PROVISION_OPTION_STOP = "Stop provisioning";
|
|
3193
|
+
var APP_PROVISION_OPTION_LABELS = {
|
|
3194
|
+
retry: APP_PROVISION_OPTION_RETRY,
|
|
3195
|
+
"retry-after-setting": APP_PROVISION_OPTION_RETRY_AFTER_SETTING,
|
|
3196
|
+
optional: APP_PROVISION_OPTION_OPTIONAL,
|
|
3197
|
+
"verify-on-cluster": APP_PROVISION_OPTION_VERIFY_ON_CLUSTER,
|
|
3198
|
+
"accept-build-only": APP_PROVISION_OPTION_ACCEPT_BUILD_ONLY,
|
|
3199
|
+
choose: APP_PROVISION_OPTION_CHOOSE,
|
|
3200
|
+
stop: APP_PROVISION_OPTION_STOP
|
|
3201
|
+
};
|
|
3202
|
+
var APP_PROVISION_RAISE_CAP_LABELS = {
|
|
3203
|
+
"token-cap": APP_PROVISION_OPTION_RAISE_CAP_TOKENS,
|
|
3204
|
+
"runner-minute-cap": APP_PROVISION_OPTION_RAISE_CAP_MINUTES
|
|
3205
|
+
};
|
|
3206
|
+
var APP_PROVISION_CHAT_STARTED = "Started provisioning {repo}. I'll post here at each milestone.";
|
|
3207
|
+
var APP_PROVISION_CHAT_PROPOSED = "Opened pull request #{pr} with the App spec. Verifying now.";
|
|
3208
|
+
var APP_PROVISION_CHAT_ATTEMPT_RED = "Attempt {n} of {budget} failed at {step}: {detail}. Fixing it.";
|
|
3209
|
+
var APP_PROVISION_CHAT_SUCCEEDED = "Verified. Review and merge pull request #{pr}.";
|
|
3210
|
+
var APP_PROVISION_CHAT_NEEDS_INPUT = "I need a decision from you \u2014 it's in My Decisions.";
|
|
3211
|
+
var APP_PROVISION_CHAT_FAILED = "Provisioning stopped: {reason}.";
|
|
3212
|
+
var APP_PROVISION_CHAT_TEMPLATES = {
|
|
3213
|
+
started: APP_PROVISION_CHAT_STARTED,
|
|
3214
|
+
proposed: APP_PROVISION_CHAT_PROPOSED,
|
|
3215
|
+
attemptRed: APP_PROVISION_CHAT_ATTEMPT_RED,
|
|
3216
|
+
succeeded: APP_PROVISION_CHAT_SUCCEEDED,
|
|
3217
|
+
needsInput: APP_PROVISION_CHAT_NEEDS_INPUT,
|
|
3218
|
+
failed: APP_PROVISION_CHAT_FAILED
|
|
3219
|
+
};
|
|
3220
|
+
var APP_PROVISION_EVIDENCE_ATTEMPT = "Attempt";
|
|
3221
|
+
var APP_PROVISION_EVIDENCE_STEP = "Step";
|
|
3222
|
+
var APP_PROVISION_EVIDENCE_VERDICT = "Verdict";
|
|
3223
|
+
var APP_PROVISION_EVIDENCE_DURATION = "Duration";
|
|
3224
|
+
var APP_PROVISION_EVIDENCE_BUILD_LOG = "Build log";
|
|
3225
|
+
var APP_PROVISION_EVIDENCE_IMAGE_DIGEST = "Image digest";
|
|
3226
|
+
var APP_PROVISION_EVIDENCE_TARGET = "Target";
|
|
3227
|
+
var APP_PROVISION_EVIDENCE_SMOKE = "Smoke tests";
|
|
3228
|
+
var APP_PROVISION_EVIDENCE_SPEND = "Spend";
|
|
3229
|
+
var APP_PROVISION_EVIDENCE_HEADINGS = {
|
|
3230
|
+
attempt: APP_PROVISION_EVIDENCE_ATTEMPT,
|
|
3231
|
+
step: APP_PROVISION_EVIDENCE_STEP,
|
|
3232
|
+
verdict: APP_PROVISION_EVIDENCE_VERDICT,
|
|
3233
|
+
duration: APP_PROVISION_EVIDENCE_DURATION,
|
|
3234
|
+
buildLog: APP_PROVISION_EVIDENCE_BUILD_LOG,
|
|
3235
|
+
imageDigest: APP_PROVISION_EVIDENCE_IMAGE_DIGEST,
|
|
3236
|
+
target: APP_PROVISION_EVIDENCE_TARGET,
|
|
3237
|
+
smoke: APP_PROVISION_EVIDENCE_SMOKE,
|
|
3238
|
+
spend: APP_PROVISION_EVIDENCE_SPEND
|
|
3239
|
+
};
|
|
3240
|
+
var APP_PROVISION_QUEUED_REASON_USER_LIMIT = "you already have 3 provisionings running.";
|
|
3241
|
+
var APP_PROVISION_QUEUED_REASON_ORG_LIMIT = "this workspace already has 10 provisionings running.";
|
|
3242
|
+
var APP_PROVISION_QUEUED_REASON_TEXTS = {
|
|
3243
|
+
"user-limit": APP_PROVISION_QUEUED_REASON_USER_LIMIT,
|
|
3244
|
+
"org-limit": APP_PROVISION_QUEUED_REASON_ORG_LIMIT
|
|
3245
|
+
};
|
|
3246
|
+
var APP_PROVISION_REMINDER_TITLE = "Still waiting on your answer";
|
|
3247
|
+
var APP_PROVISION_REMINDER_BODY = "Still waiting on your answer about {repo}. The provisioning keeps waiting and fails after 14 days without an answer.";
|
|
3248
|
+
var APP_PROVISION_COPY_TEMPLATES = [
|
|
3249
|
+
{
|
|
3250
|
+
name: "APP_PROVISION_REASON_TEXT_NO_ISOLATED_RUNTIME",
|
|
3251
|
+
value: APP_PROVISION_REASON_TEXT_NO_ISOLATED_RUNTIME,
|
|
3252
|
+
params: []
|
|
3253
|
+
},
|
|
3254
|
+
{
|
|
3255
|
+
name: "APP_PROVISION_REASON_TEXT_REPOSITORY_NOT_READY",
|
|
3256
|
+
value: APP_PROVISION_REASON_TEXT_REPOSITORY_NOT_READY,
|
|
3257
|
+
params: []
|
|
3258
|
+
},
|
|
3259
|
+
{
|
|
3260
|
+
name: "APP_PROVISION_REASON_TEXT_REPOSITORY_TOO_LARGE",
|
|
3261
|
+
value: APP_PROVISION_REASON_TEXT_REPOSITORY_TOO_LARGE,
|
|
3262
|
+
params: []
|
|
3263
|
+
},
|
|
3264
|
+
{ name: "APP_PROVISION_REASON_TEXT_NOT_RUNNABLE", value: APP_PROVISION_REASON_TEXT_NOT_RUNNABLE, params: [] },
|
|
3265
|
+
{ name: "APP_PROVISION_REASON_TEXT_TOKEN_CAP", value: APP_PROVISION_REASON_TEXT_TOKEN_CAP, params: [] },
|
|
3266
|
+
{
|
|
3267
|
+
name: "APP_PROVISION_REASON_TEXT_RUNNER_MINUTE_CAP",
|
|
3268
|
+
value: APP_PROVISION_REASON_TEXT_RUNNER_MINUTE_CAP,
|
|
3269
|
+
params: []
|
|
3270
|
+
},
|
|
3271
|
+
{ name: "APP_PROVISION_REASON_TEXT_DEADLINE", value: APP_PROVISION_REASON_TEXT_DEADLINE, params: [] },
|
|
3272
|
+
{
|
|
3273
|
+
name: "APP_PROVISION_REASON_TEXT_COULD_NOT_VERIFY",
|
|
3274
|
+
value: APP_PROVISION_REASON_TEXT_COULD_NOT_VERIFY,
|
|
3275
|
+
params: ["attempts"]
|
|
3276
|
+
},
|
|
3277
|
+
{ name: "APP_PROVISION_REASON_TEXT_NO_ANSWER", value: APP_PROVISION_REASON_TEXT_NO_ANSWER, params: ["attempts"] },
|
|
3278
|
+
{
|
|
3279
|
+
name: "APP_PROVISION_REASON_TEXT_VERIFICATION_INFRASTRUCTURE",
|
|
3280
|
+
value: APP_PROVISION_REASON_TEXT_VERIFICATION_INFRASTRUCTURE,
|
|
3281
|
+
params: []
|
|
3282
|
+
},
|
|
3283
|
+
{
|
|
3284
|
+
name: "APP_PROVISION_REASON_TEXT_PRIVATE_REPOSITORY",
|
|
3285
|
+
value: APP_PROVISION_REASON_TEXT_PRIVATE_REPOSITORY,
|
|
3286
|
+
params: []
|
|
3287
|
+
},
|
|
3288
|
+
{ name: "APP_PROVISION_QUESTION_SUBJECT_PREFIX", value: APP_PROVISION_QUESTION_SUBJECT_PREFIX, params: ["repo"] },
|
|
3289
|
+
{
|
|
3290
|
+
name: "APP_PROVISION_QUESTION_SUBJECT_ATTEMPTS_SPENT",
|
|
3291
|
+
value: APP_PROVISION_QUESTION_SUBJECT_ATTEMPTS_SPENT,
|
|
3292
|
+
params: ["attempts"]
|
|
3293
|
+
},
|
|
3294
|
+
{
|
|
3295
|
+
name: "APP_PROVISION_QUESTION_SUBJECT_REPEATED_FAILURE",
|
|
3296
|
+
value: APP_PROVISION_QUESTION_SUBJECT_REPEATED_FAILURE,
|
|
3297
|
+
params: []
|
|
3298
|
+
},
|
|
3299
|
+
{
|
|
3300
|
+
name: "APP_PROVISION_QUESTION_SUBJECT_MISSING_REQUIRED_VALUE",
|
|
3301
|
+
value: APP_PROVISION_QUESTION_SUBJECT_MISSING_REQUIRED_VALUE,
|
|
3302
|
+
params: ["variable"]
|
|
3303
|
+
},
|
|
3304
|
+
{
|
|
3305
|
+
name: "APP_PROVISION_QUESTION_SUBJECT_RUNNER_CAPACITY",
|
|
3306
|
+
value: APP_PROVISION_QUESTION_SUBJECT_RUNNER_CAPACITY,
|
|
3307
|
+
params: []
|
|
3308
|
+
},
|
|
3309
|
+
{ name: "APP_PROVISION_QUESTION_SUBJECT_TOKEN_CAP", value: APP_PROVISION_QUESTION_SUBJECT_TOKEN_CAP, params: [] },
|
|
3310
|
+
{
|
|
3311
|
+
name: "APP_PROVISION_QUESTION_SUBJECT_RUNNER_MINUTE_CAP",
|
|
3312
|
+
value: APP_PROVISION_QUESTION_SUBJECT_RUNNER_MINUTE_CAP,
|
|
3313
|
+
params: []
|
|
3314
|
+
},
|
|
3315
|
+
{
|
|
3316
|
+
name: "APP_PROVISION_QUESTION_SUBJECT_MULTIPLE_APPS",
|
|
3317
|
+
value: APP_PROVISION_QUESTION_SUBJECT_MULTIPLE_APPS,
|
|
3318
|
+
params: []
|
|
3319
|
+
},
|
|
3320
|
+
{
|
|
3321
|
+
name: "APP_PROVISION_QUESTION_SUBJECT_AGENT_ASKED",
|
|
3322
|
+
value: APP_PROVISION_QUESTION_SUBJECT_AGENT_ASKED,
|
|
3323
|
+
params: []
|
|
3324
|
+
},
|
|
3325
|
+
{
|
|
3326
|
+
name: "APP_PROVISION_QUESTION_SUBJECT_SAFETY_RAIL",
|
|
3327
|
+
value: APP_PROVISION_QUESTION_SUBJECT_SAFETY_RAIL,
|
|
3328
|
+
params: ["reason"]
|
|
3329
|
+
},
|
|
3330
|
+
{ name: "APP_PROVISION_OPTION_RETRY", value: APP_PROVISION_OPTION_RETRY, params: [] },
|
|
3331
|
+
{ name: "APP_PROVISION_OPTION_RETRY_AFTER_SETTING", value: APP_PROVISION_OPTION_RETRY_AFTER_SETTING, params: [] },
|
|
3332
|
+
{ name: "APP_PROVISION_OPTION_OPTIONAL", value: APP_PROVISION_OPTION_OPTIONAL, params: [] },
|
|
3333
|
+
{ name: "APP_PROVISION_OPTION_VERIFY_ON_CLUSTER", value: APP_PROVISION_OPTION_VERIFY_ON_CLUSTER, params: [] },
|
|
3334
|
+
{ name: "APP_PROVISION_OPTION_ACCEPT_BUILD_ONLY", value: APP_PROVISION_OPTION_ACCEPT_BUILD_ONLY, params: [] },
|
|
3335
|
+
{ name: "APP_PROVISION_OPTION_RAISE_CAP_TOKENS", value: APP_PROVISION_OPTION_RAISE_CAP_TOKENS, params: [] },
|
|
3336
|
+
{ name: "APP_PROVISION_OPTION_RAISE_CAP_MINUTES", value: APP_PROVISION_OPTION_RAISE_CAP_MINUTES, params: [] },
|
|
3337
|
+
{ name: "APP_PROVISION_OPTION_CHOOSE", value: APP_PROVISION_OPTION_CHOOSE, params: ["candidate"] },
|
|
3338
|
+
{ name: "APP_PROVISION_OPTION_STOP", value: APP_PROVISION_OPTION_STOP, params: [] },
|
|
3339
|
+
{ name: "APP_PROVISION_CHAT_STARTED", value: APP_PROVISION_CHAT_STARTED, params: ["repo"] },
|
|
3340
|
+
{ name: "APP_PROVISION_CHAT_PROPOSED", value: APP_PROVISION_CHAT_PROPOSED, params: ["pr"] },
|
|
3341
|
+
{
|
|
3342
|
+
name: "APP_PROVISION_CHAT_ATTEMPT_RED",
|
|
3343
|
+
value: APP_PROVISION_CHAT_ATTEMPT_RED,
|
|
3344
|
+
params: ["n", "budget", "step", "detail"]
|
|
3345
|
+
},
|
|
3346
|
+
{ name: "APP_PROVISION_CHAT_SUCCEEDED", value: APP_PROVISION_CHAT_SUCCEEDED, params: ["pr"] },
|
|
3347
|
+
{ name: "APP_PROVISION_CHAT_NEEDS_INPUT", value: APP_PROVISION_CHAT_NEEDS_INPUT, params: [] },
|
|
3348
|
+
{ name: "APP_PROVISION_CHAT_FAILED", value: APP_PROVISION_CHAT_FAILED, params: ["reason"] },
|
|
3349
|
+
{ name: "APP_PROVISION_EVIDENCE_ATTEMPT", value: APP_PROVISION_EVIDENCE_ATTEMPT, params: [] },
|
|
3350
|
+
{ name: "APP_PROVISION_EVIDENCE_STEP", value: APP_PROVISION_EVIDENCE_STEP, params: [] },
|
|
3351
|
+
{ name: "APP_PROVISION_EVIDENCE_VERDICT", value: APP_PROVISION_EVIDENCE_VERDICT, params: [] },
|
|
3352
|
+
{ name: "APP_PROVISION_EVIDENCE_DURATION", value: APP_PROVISION_EVIDENCE_DURATION, params: [] },
|
|
3353
|
+
{ name: "APP_PROVISION_EVIDENCE_BUILD_LOG", value: APP_PROVISION_EVIDENCE_BUILD_LOG, params: [] },
|
|
3354
|
+
{ name: "APP_PROVISION_EVIDENCE_IMAGE_DIGEST", value: APP_PROVISION_EVIDENCE_IMAGE_DIGEST, params: [] },
|
|
3355
|
+
{ name: "APP_PROVISION_EVIDENCE_TARGET", value: APP_PROVISION_EVIDENCE_TARGET, params: [] },
|
|
3356
|
+
{ name: "APP_PROVISION_EVIDENCE_SMOKE", value: APP_PROVISION_EVIDENCE_SMOKE, params: [] },
|
|
3357
|
+
{ name: "APP_PROVISION_EVIDENCE_SPEND", value: APP_PROVISION_EVIDENCE_SPEND, params: [] },
|
|
3358
|
+
{ name: "APP_PROVISION_QUEUED_REASON_USER_LIMIT", value: APP_PROVISION_QUEUED_REASON_USER_LIMIT, params: [] },
|
|
3359
|
+
{ name: "APP_PROVISION_QUEUED_REASON_ORG_LIMIT", value: APP_PROVISION_QUEUED_REASON_ORG_LIMIT, params: [] },
|
|
3360
|
+
{ name: "APP_PROVISION_REMINDER_TITLE", value: APP_PROVISION_REMINDER_TITLE, params: [] },
|
|
3361
|
+
{ name: "APP_PROVISION_REMINDER_BODY", value: APP_PROVISION_REMINDER_BODY, params: ["repo"] }
|
|
3362
|
+
];
|
|
3363
|
+
var PLACEHOLDER = /\{([a-zA-Z][a-zA-Z0-9]*)\}/g;
|
|
3364
|
+
function resolveAppProvisionCopy(template, values = {}) {
|
|
3365
|
+
return template.replace(PLACEHOLDER, (placeholder, name) => {
|
|
3366
|
+
const value = values[name];
|
|
3367
|
+
return value === void 0 ? placeholder : String(value);
|
|
3368
|
+
});
|
|
3369
|
+
}
|
|
3370
|
+
function appProvisionCopyPlaceholders(template) {
|
|
3371
|
+
return [...template.matchAll(PLACEHOLDER)].map((match) => match[1]);
|
|
3372
|
+
}
|
|
3373
|
+
var OPTION_ORDER = {
|
|
3374
|
+
"attempts-spent": ["retry", "stop"],
|
|
3375
|
+
"repeated-failure": ["retry", "stop"],
|
|
3376
|
+
"missing-required-value": ["retry-after-setting", "optional", "stop"],
|
|
3377
|
+
"runner-capacity": ["verify-on-cluster", "accept-build-only", "stop"],
|
|
3378
|
+
"token-cap": ["raise-cap", "stop"],
|
|
3379
|
+
"runner-minute-cap": ["raise-cap", "stop"],
|
|
3380
|
+
"multiple-apps": ["stop"],
|
|
3381
|
+
"agent-asked": ["retry", "stop"],
|
|
3382
|
+
"safety-rail": ["retry", "stop"]
|
|
3383
|
+
};
|
|
3384
|
+
var MAX_CANDIDATE_OPTIONS = APP_PROVISION_LIMITS.optionsMax - 1;
|
|
3385
|
+
function optionLabel(reason, id) {
|
|
3386
|
+
if (id === "raise-cap") {
|
|
3387
|
+
return reason === "runner-minute-cap" ? APP_PROVISION_OPTION_RAISE_CAP_MINUTES : APP_PROVISION_OPTION_RAISE_CAP_TOKENS;
|
|
3388
|
+
}
|
|
3389
|
+
return APP_PROVISION_OPTION_LABELS[id];
|
|
3390
|
+
}
|
|
3391
|
+
var appProvisionCopy = {
|
|
3392
|
+
/**
|
|
3393
|
+
* The composed Inbox subject: `Provisioning <repo>: <fragment>`
|
|
3394
|
+
* (spec §6:511). `repo` and every fragment param travel in `values`.
|
|
3395
|
+
*/
|
|
3396
|
+
questionSubject(reason, values = {}) {
|
|
3397
|
+
return resolveAppProvisionCopy(
|
|
3398
|
+
APP_PROVISION_QUESTION_SUBJECT_PREFIX + APP_PROVISION_QUESTION_SUBJECTS[reason],
|
|
3399
|
+
values
|
|
3400
|
+
);
|
|
3401
|
+
},
|
|
3402
|
+
/**
|
|
3403
|
+
* The options for one question, in order, always ending with `stop`.
|
|
3404
|
+
*
|
|
3405
|
+
* `multiple-apps` offers one `choose:<n>` per candidate in
|
|
3406
|
+
* `values.candidates` (a comma-separated list of names), capped so the total
|
|
3407
|
+
* never exceeds `APP_PROVISION_LIMITS.optionsMax`.
|
|
3408
|
+
*/
|
|
3409
|
+
questionOptions(reason, values = {}) {
|
|
3410
|
+
const options = [];
|
|
3411
|
+
if (reason === "multiple-apps") {
|
|
3412
|
+
const candidates = String(values.candidates ?? "").split(",").map((candidate) => candidate.trim()).filter((candidate) => candidate.length > 0).slice(0, MAX_CANDIDATE_OPTIONS);
|
|
3413
|
+
candidates.forEach((candidate, index) => {
|
|
3414
|
+
options.push({
|
|
3415
|
+
id: `choose:${index + 1}`,
|
|
3416
|
+
i18nKey: APP_PROVISIONING_OPTION_I18N_KEY.choose,
|
|
3417
|
+
label: resolveAppProvisionCopy(APP_PROVISION_OPTION_CHOOSE, { candidate }),
|
|
3418
|
+
candidate: index + 1
|
|
3419
|
+
});
|
|
3420
|
+
});
|
|
3421
|
+
}
|
|
3422
|
+
for (const id of OPTION_ORDER[reason]) {
|
|
3423
|
+
options.push({
|
|
3424
|
+
id,
|
|
3425
|
+
i18nKey: APP_PROVISIONING_OPTION_I18N_KEY[id],
|
|
3426
|
+
label: resolveAppProvisionCopy(optionLabel(reason, id), values)
|
|
3427
|
+
});
|
|
3428
|
+
}
|
|
3429
|
+
return options;
|
|
3430
|
+
},
|
|
3431
|
+
/** The failure text for the card's `Failed` headline (spec §6:485). */
|
|
3432
|
+
reasonText(failureReason, values = {}) {
|
|
3433
|
+
return resolveAppProvisionCopy(APP_PROVISION_REASON_TEXTS[failureReason], values);
|
|
3434
|
+
},
|
|
3435
|
+
/** The queued headline's reason clause, per `AppProvisioningView.queuedReason`. */
|
|
3436
|
+
queuedReason(queuedReason) {
|
|
3437
|
+
return APP_PROVISION_QUEUED_REASON_TEXTS[queuedReason];
|
|
3438
|
+
},
|
|
3439
|
+
/** The six chat milestones, resolved on call. */
|
|
3440
|
+
chat: {
|
|
3441
|
+
started: (values = {}) => resolveAppProvisionCopy(APP_PROVISION_CHAT_STARTED, values),
|
|
3442
|
+
proposed: (values = {}) => resolveAppProvisionCopy(APP_PROVISION_CHAT_PROPOSED, values),
|
|
3443
|
+
attemptRed: (values = {}) => resolveAppProvisionCopy(APP_PROVISION_CHAT_ATTEMPT_RED, values),
|
|
3444
|
+
succeeded: (values = {}) => resolveAppProvisionCopy(APP_PROVISION_CHAT_SUCCEEDED, values),
|
|
3445
|
+
needsInput: (values = {}) => resolveAppProvisionCopy(APP_PROVISION_CHAT_NEEDS_INPUT, values),
|
|
3446
|
+
failed: (values = {}) => resolveAppProvisionCopy(APP_PROVISION_CHAT_FAILED, values)
|
|
3447
|
+
},
|
|
3448
|
+
/** The nine evidence-comment headings, by leaf. */
|
|
3449
|
+
evidence: {
|
|
3450
|
+
attempt: APP_PROVISION_EVIDENCE_ATTEMPT,
|
|
3451
|
+
step: APP_PROVISION_EVIDENCE_STEP,
|
|
3452
|
+
verdict: APP_PROVISION_EVIDENCE_VERDICT,
|
|
3453
|
+
duration: APP_PROVISION_EVIDENCE_DURATION,
|
|
3454
|
+
buildLog: APP_PROVISION_EVIDENCE_BUILD_LOG,
|
|
3455
|
+
imageDigest: APP_PROVISION_EVIDENCE_IMAGE_DIGEST,
|
|
3456
|
+
target: APP_PROVISION_EVIDENCE_TARGET,
|
|
3457
|
+
smoke: APP_PROVISION_EVIDENCE_SMOKE,
|
|
3458
|
+
spend: APP_PROVISION_EVIDENCE_SPEND
|
|
3459
|
+
},
|
|
3460
|
+
/** The 72-hour reminder (S20): title and body. */
|
|
3461
|
+
reminder: {
|
|
3462
|
+
title: APP_PROVISION_REMINDER_TITLE,
|
|
3463
|
+
body: (values = {}) => resolveAppProvisionCopy(APP_PROVISION_REMINDER_BODY, values)
|
|
3464
|
+
},
|
|
3465
|
+
/**
|
|
3466
|
+
* The i18n leaf for a question reason — the same lookup the card makes, so
|
|
3467
|
+
* the server's English and the viewer's locale cannot diverge on WHICH
|
|
3468
|
+
* string they mean.
|
|
3469
|
+
*/
|
|
3470
|
+
reasonI18nKey(reason) {
|
|
3471
|
+
return APP_PROVISIONING_QUESTION_REASON_I18N_KEY[reason];
|
|
3472
|
+
},
|
|
3473
|
+
/** The i18n leaf for a failure reason. */
|
|
3474
|
+
failureI18nKey(failureReason) {
|
|
3475
|
+
return APP_PROVISIONING_FAILURE_REASON_I18N_KEY[failureReason];
|
|
3476
|
+
},
|
|
3477
|
+
/** The i18n leaf for a queued reason. */
|
|
3478
|
+
queuedI18nKey(queuedReason) {
|
|
3479
|
+
return APP_PROVISIONING_QUEUED_REASON_I18N_KEY[queuedReason];
|
|
3480
|
+
}
|
|
3481
|
+
};
|
|
3482
|
+
|
|
319
3483
|
// src/github/index.ts
|
|
320
3484
|
function parseGitHubRepositoryUrl(input) {
|
|
321
3485
|
try {
|
|
@@ -5441,7 +8605,7 @@ var DEFAULT_CREDIT_SETTLEMENT_MODE = "provider_cost";
|
|
|
5441
8605
|
function isCreditSettlementMode(value) {
|
|
5442
8606
|
return typeof value === "string" && CREDIT_SETTLEMENT_MODES.includes(value);
|
|
5443
8607
|
}
|
|
5444
|
-
var CREDIT_PRICE_GROUPS = ["research", "data", "tools", "models"];
|
|
8608
|
+
var CREDIT_PRICE_GROUPS = ["research", "data", "tools", "models", "hosting"];
|
|
5445
8609
|
|
|
5446
8610
|
// src/notifications/attention.types.ts
|
|
5447
8611
|
var ATTENTION_TARGET_CLASSES = ["email", "channel"];
|
|
@@ -6018,6 +9182,113 @@ var SAFETY_CANCEL_WRITES_PER_MINUTE = 5;
|
|
|
6018
9182
|
var UNCLASSIFIED_ACTION_POLICY = "warn";
|
|
6019
9183
|
var SHIPPED_DEFAULT_RUNG_POLICY = "display";
|
|
6020
9184
|
|
|
9185
|
+
// src/ever-platform/stats.ts
|
|
9186
|
+
var EVER_STATS_V1_SCHEMA_ID = "ever.stats.v1";
|
|
9187
|
+
var EVER_STATS_REPORTS_PATH = "/v1/stats/reports";
|
|
9188
|
+
var EVER_PLATFORM_DEFAULT_API_URL = "https://api.ever.co";
|
|
9189
|
+
var EVER_STATS_KEY_HEADER = "Ever-Stats-Key";
|
|
9190
|
+
var EVER_STATS_SIGNATURE_HEADER = "Ever-Stats-Signature";
|
|
9191
|
+
var EVER_STATS_KEY_ID_HEADER = "Ever-Stats-Key-Id";
|
|
9192
|
+
var EVER_STATS_SIGNATURE_PREFIX = "ed25519=";
|
|
9193
|
+
var EVER_STATS_MAX_BODY_BYTES = 16384;
|
|
9194
|
+
var EVER_STATS_V1_SOURCE = {
|
|
9195
|
+
repository: "https://github.com/ever-co/ever-connect-sdk",
|
|
9196
|
+
commit: "2fd74dad9357a18471292f38012a5f5e4e6d2938",
|
|
9197
|
+
path: "contracts/schemas/ever.stats.v1.json",
|
|
9198
|
+
sha256: "0cd746f7dec75117a6b812b7a832f9ceca4c97a6ecf65d22d6967a6475efc6e5"
|
|
9199
|
+
};
|
|
9200
|
+
function isPrivateStatsHost(hostname) {
|
|
9201
|
+
const host = hostname.toLowerCase().replace(/^\[|\]$/g, "");
|
|
9202
|
+
if (host === "localhost" || host.endsWith(".localhost")) return true;
|
|
9203
|
+
if (host === "::1") return true;
|
|
9204
|
+
if (/^f[cd][0-9a-f]{2}:/.test(host)) return true;
|
|
9205
|
+
const ipv4 = host.match(/^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/);
|
|
9206
|
+
if (ipv4) {
|
|
9207
|
+
const a = Number(ipv4[1]);
|
|
9208
|
+
const b = Number(ipv4[2]);
|
|
9209
|
+
return a === 127 || a === 10 || a === 172 && b >= 16 && b <= 31 || a === 192 && b === 168;
|
|
9210
|
+
}
|
|
9211
|
+
return host.length > 0 && !host.includes(".") && !host.includes(":");
|
|
9212
|
+
}
|
|
9213
|
+
function normaliseStatsBaseUrl(raw) {
|
|
9214
|
+
let url;
|
|
9215
|
+
try {
|
|
9216
|
+
url = new URL(raw.trim());
|
|
9217
|
+
} catch {
|
|
9218
|
+
return null;
|
|
9219
|
+
}
|
|
9220
|
+
if (url.username || url.password || url.search || url.hash) return null;
|
|
9221
|
+
if (url.protocol === "http:") {
|
|
9222
|
+
if (!isPrivateStatsHost(url.hostname)) return null;
|
|
9223
|
+
} else if (url.protocol !== "https:") {
|
|
9224
|
+
return null;
|
|
9225
|
+
}
|
|
9226
|
+
return `${url.origin}${url.pathname}`.replace(/\/+$/, "");
|
|
9227
|
+
}
|
|
9228
|
+
var EVER_STATS_PRODUCTS = ["gauzy", "teams", "works", "rec", "traduora"];
|
|
9229
|
+
var EVER_STATS_CHANNELS = ["stable", "rc", "beta", "dev", "custom"];
|
|
9230
|
+
var WORKS_STATS_WORK_KIND_KEYS = [
|
|
9231
|
+
"website",
|
|
9232
|
+
"landing_page",
|
|
9233
|
+
"blog",
|
|
9234
|
+
"directory",
|
|
9235
|
+
"awesome_repo",
|
|
9236
|
+
"repo",
|
|
9237
|
+
"company",
|
|
9238
|
+
"campaign",
|
|
9239
|
+
"default",
|
|
9240
|
+
"app",
|
|
9241
|
+
"other"
|
|
9242
|
+
];
|
|
9243
|
+
var WORKS_STATS_DEPLOYMENT_PROVIDER_KEYS = [
|
|
9244
|
+
"ever_works",
|
|
9245
|
+
"vercel",
|
|
9246
|
+
"k8s",
|
|
9247
|
+
"your_cluster",
|
|
9248
|
+
"ever_works_apps",
|
|
9249
|
+
"other"
|
|
9250
|
+
];
|
|
9251
|
+
var WORKS_STATS_FEATURE_KEYS = [
|
|
9252
|
+
"app_works_enabled",
|
|
9253
|
+
"app_launcher_enabled",
|
|
9254
|
+
"dynamic_plugins",
|
|
9255
|
+
"deploy_ever_works_enabled",
|
|
9256
|
+
"subscriptions_enabled",
|
|
9257
|
+
"mcp_enabled"
|
|
9258
|
+
];
|
|
9259
|
+
var STATS_SEND_ERROR_CODES = [
|
|
9260
|
+
"schema_violation",
|
|
9261
|
+
"key_mismatch",
|
|
9262
|
+
"too_large",
|
|
9263
|
+
"signature_invalid",
|
|
9264
|
+
"validation_failed",
|
|
9265
|
+
"unsupported_media_type",
|
|
9266
|
+
"rate_limited",
|
|
9267
|
+
"server_error",
|
|
9268
|
+
"http_error",
|
|
9269
|
+
"network",
|
|
9270
|
+
"timeout",
|
|
9271
|
+
"invalid_url",
|
|
9272
|
+
"redirect",
|
|
9273
|
+
"sink_unavailable",
|
|
9274
|
+
"build_failed",
|
|
9275
|
+
"key_unreadable"
|
|
9276
|
+
];
|
|
9277
|
+
function isInstanceStatsOperatorStatus(status) {
|
|
9278
|
+
return status.operator === true;
|
|
9279
|
+
}
|
|
9280
|
+
/**
|
|
9281
|
+
* One header finding of the licence scan (plan §2.6:324-325, FR-54): the
|
|
9282
|
+
* `SPDX-License-Identifier:` / `@license` tag a file declares in its first
|
|
9283
|
+
* `LICENSE_HEADER_SCAN_BYTES` bytes.
|
|
9284
|
+
*
|
|
9285
|
+
* **Gap, named rather than guessed:** plan §3.1:437 writes the column's third
|
|
9286
|
+
* field as `headerFindings: …` without a shape. `path` is certain — it is the
|
|
9287
|
+
* first field of the scan's input — and the detected identifier is the second
|
|
9288
|
+
* fact the scan produces, so both are declared; anything further an
|
|
9289
|
+
* implementation adds is additive.
|
|
9290
|
+
*/
|
|
9291
|
+
|
|
6021
9292
|
exports.ACTION_CATEGORIES = ACTION_CATEGORIES;
|
|
6022
9293
|
exports.ACTION_CATEGORY_CEILING = ACTION_CATEGORY_CEILING;
|
|
6023
9294
|
exports.ACTION_CATEGORY_DEFAULT = ACTION_CATEGORY_DEFAULT;
|
|
@@ -6047,7 +9318,579 @@ exports.AGENT_STATUS_BATCH_MAX = AGENT_STATUS_BATCH_MAX;
|
|
|
6047
9318
|
exports.AGENT_STATUS_DOT = AGENT_STATUS_DOT;
|
|
6048
9319
|
exports.AGENT_STATUS_POLL_INTERVAL_MS = AGENT_STATUS_POLL_INTERVAL_MS;
|
|
6049
9320
|
exports.AGENT_STATUS_REASONS = AGENT_STATUS_REASONS;
|
|
9321
|
+
exports.APPS_CATALOG_CACHE_TTL_MS = APPS_CATALOG_CACHE_TTL_MS;
|
|
9322
|
+
exports.APPS_CATALOG_CATEGORIES = APPS_CATALOG_CATEGORIES;
|
|
9323
|
+
exports.APPS_CATALOG_ENTRY_LICENSE_CLASSES = APPS_CATALOG_ENTRY_LICENSE_CLASSES;
|
|
9324
|
+
exports.APPS_CATALOG_ENTRY_STATUSES = APPS_CATALOG_ENTRY_STATUSES;
|
|
9325
|
+
exports.APPS_CATALOG_FAILURE_TTL_MS = APPS_CATALOG_FAILURE_TTL_MS;
|
|
9326
|
+
exports.APPS_CATALOG_FANOUT_PER_RUN = APPS_CATALOG_FANOUT_PER_RUN;
|
|
9327
|
+
exports.APPS_CATALOG_FETCH_TIMEOUT_MS = APPS_CATALOG_FETCH_TIMEOUT_MS;
|
|
9328
|
+
exports.APPS_CATALOG_LAST_GOOD_REGISTRY_MS = APPS_CATALOG_LAST_GOOD_REGISTRY_MS;
|
|
9329
|
+
exports.APPS_CATALOG_MANIFEST_MAX_BYTES = APPS_CATALOG_MANIFEST_MAX_BYTES;
|
|
9330
|
+
exports.APPS_CATALOG_MAX_ENTRIES = APPS_CATALOG_MAX_ENTRIES;
|
|
9331
|
+
exports.APPS_CATALOG_PAGE_SIZE = APPS_CATALOG_PAGE_SIZE;
|
|
9332
|
+
exports.APPS_CATALOG_PAGE_SIZE_MAX = APPS_CATALOG_PAGE_SIZE_MAX;
|
|
9333
|
+
exports.APPS_CATALOG_PUBLIC_PER_MIN = APPS_CATALOG_PUBLIC_PER_MIN;
|
|
9334
|
+
exports.APPS_CATALOG_README_MAX_BYTES = APPS_CATALOG_README_MAX_BYTES;
|
|
9335
|
+
exports.APPS_CATALOG_REFRESH_CRON = APPS_CATALOG_REFRESH_CRON;
|
|
9336
|
+
exports.APPS_CATALOG_REGISTRY_MAX_BYTES = APPS_CATALOG_REGISTRY_MAX_BYTES;
|
|
9337
|
+
exports.APPS_CATALOG_SEARCH_MIN_CHARS = APPS_CATALOG_SEARCH_MIN_CHARS;
|
|
9338
|
+
exports.APPS_CATALOG_VERIFICATION_STATUSES = APPS_CATALOG_VERIFICATION_STATUSES;
|
|
9339
|
+
exports.APPS_MANAGED_REQUIRES_VERIFIED = APPS_MANAGED_REQUIRES_VERIFIED;
|
|
9340
|
+
exports.APPS_TIER_ACTIVITY_ACTION_TYPE = APPS_TIER_ACTIVITY_ACTION_TYPE;
|
|
9341
|
+
exports.APPS_TIER_ALLOWED_HOSTS_ANNOTATION = APPS_TIER_ALLOWED_HOSTS_ANNOTATION;
|
|
9342
|
+
exports.APPS_TIER_API_GROUP = APPS_TIER_API_GROUP;
|
|
9343
|
+
exports.APPS_TIER_API_VERSION = APPS_TIER_API_VERSION;
|
|
9344
|
+
exports.APPS_TIER_ATTESTATION_EVIDENCE_MAX_CHARS = APPS_TIER_ATTESTATION_EVIDENCE_MAX_CHARS;
|
|
9345
|
+
exports.APPS_TIER_ATTESTATION_EVIDENCE_MIN_CHARS = APPS_TIER_ATTESTATION_EVIDENCE_MIN_CHARS;
|
|
9346
|
+
exports.APPS_TIER_ATTESTATION_EVIDENCE_REFERENCE_MAX_CHARS = APPS_TIER_ATTESTATION_EVIDENCE_REFERENCE_MAX_CHARS;
|
|
9347
|
+
exports.APPS_TIER_AUTO_REOPENABLE_REASON_CODES = APPS_TIER_AUTO_REOPENABLE_REASON_CODES;
|
|
9348
|
+
exports.APPS_TIER_BILLING_GRACE_DAYS = APPS_TIER_BILLING_GRACE_DAYS;
|
|
9349
|
+
exports.APPS_TIER_BILLING_QUARANTINE_CATEGORY = APPS_TIER_BILLING_QUARANTINE_CATEGORY;
|
|
9350
|
+
exports.APPS_TIER_CLOSED_REASON_CODES = APPS_TIER_CLOSED_REASON_CODES;
|
|
9351
|
+
exports.APPS_TIER_COMPONENT_ROLES = APPS_TIER_COMPONENT_ROLES;
|
|
9352
|
+
exports.APPS_TIER_CONTROLLER_MIN_VERSION_ENV_VAR = APPS_TIER_CONTROLLER_MIN_VERSION_ENV_VAR;
|
|
9353
|
+
exports.APPS_TIER_CONTROL_KUBECONFIG_ENV_VAR = APPS_TIER_CONTROL_KUBECONFIG_ENV_VAR;
|
|
9354
|
+
exports.APPS_TIER_CONTROL_NAMESPACE_DEFAULT = APPS_TIER_CONTROL_NAMESPACE_DEFAULT;
|
|
9355
|
+
exports.APPS_TIER_DAILY_RECEIPTS_CRON = APPS_TIER_DAILY_RECEIPTS_CRON;
|
|
9356
|
+
exports.APPS_TIER_DEPENDENCY_PHASES = APPS_TIER_DEPENDENCY_PHASES;
|
|
9357
|
+
exports.APPS_TIER_DEPLOY_PHASES = APPS_TIER_DEPLOY_PHASES;
|
|
9358
|
+
exports.APPS_TIER_EDGE_TLS_MODE = APPS_TIER_EDGE_TLS_MODE;
|
|
9359
|
+
exports.APPS_TIER_EGRESS_NOTICE_SHARE = APPS_TIER_EGRESS_NOTICE_SHARE;
|
|
9360
|
+
exports.APPS_TIER_EGRESS_THROTTLE_MBPS = APPS_TIER_EGRESS_THROTTLE_MBPS;
|
|
9361
|
+
exports.APPS_TIER_ELIGIBILITY_DISABLED_REASONS = APPS_TIER_ELIGIBILITY_DISABLED_REASONS;
|
|
9362
|
+
exports.APPS_TIER_ELIGIBILITY_REASONS = APPS_TIER_ELIGIBILITY_REASONS;
|
|
9363
|
+
exports.APPS_TIER_EVENT_NAMES = APPS_TIER_EVENT_NAMES;
|
|
9364
|
+
exports.APPS_TIER_GATE_MAX_AGE_HOURS_ENV_VAR = APPS_TIER_GATE_MAX_AGE_HOURS_ENV_VAR;
|
|
9365
|
+
exports.APPS_TIER_HEARTBEAT_STALE_MS = APPS_TIER_HEARTBEAT_STALE_MS;
|
|
9366
|
+
exports.APPS_TIER_JOB_PHASES = APPS_TIER_JOB_PHASES;
|
|
9367
|
+
exports.APPS_TIER_JOB_STATUSES = APPS_TIER_JOB_STATUSES;
|
|
9368
|
+
exports.APPS_TIER_MAIL_REFUSED_ATTEMPTS_PER_HOUR = APPS_TIER_MAIL_REFUSED_ATTEMPTS_PER_HOUR;
|
|
9369
|
+
exports.APPS_TIER_MANAGED_ENABLED_ENV_VAR = APPS_TIER_MANAGED_ENABLED_ENV_VAR;
|
|
9370
|
+
exports.APPS_TIER_MAX_COMPONENTS = APPS_TIER_MAX_COMPONENTS;
|
|
9371
|
+
exports.APPS_TIER_MAX_COMPONENT_REPLICAS = APPS_TIER_MAX_COMPONENT_REPLICAS;
|
|
9372
|
+
exports.APPS_TIER_MAX_COMPONENT_VOLUMES = APPS_TIER_MAX_COMPONENT_VOLUMES;
|
|
9373
|
+
exports.APPS_TIER_MAX_CRON = APPS_TIER_MAX_CRON;
|
|
9374
|
+
exports.APPS_TIER_MAX_ENV_NAMES = APPS_TIER_MAX_ENV_NAMES;
|
|
9375
|
+
exports.APPS_TIER_MAX_HOSTS = APPS_TIER_MAX_HOSTS;
|
|
9376
|
+
exports.APPS_TIER_MAX_IMAGES = APPS_TIER_MAX_IMAGES;
|
|
9377
|
+
exports.APPS_TIER_MAX_JOBS = APPS_TIER_MAX_JOBS;
|
|
9378
|
+
exports.APPS_TIER_MAX_JOB_TIMEOUT_SECONDS = APPS_TIER_MAX_JOB_TIMEOUT_SECONDS;
|
|
9379
|
+
exports.APPS_TIER_MAX_PER_USER_ENV_VAR = APPS_TIER_MAX_PER_USER_ENV_VAR;
|
|
9380
|
+
exports.APPS_TIER_MAX_PULL_CREDENTIAL_BYTES = APPS_TIER_MAX_PULL_CREDENTIAL_BYTES;
|
|
9381
|
+
exports.APPS_TIER_MAX_SCOPE_ENV_VAR = APPS_TIER_MAX_SCOPE_ENV_VAR;
|
|
9382
|
+
exports.APPS_TIER_MAX_SEALED_ENV_BYTES = APPS_TIER_MAX_SEALED_ENV_BYTES;
|
|
9383
|
+
exports.APPS_TIER_MAX_SMOKE = APPS_TIER_MAX_SMOKE;
|
|
9384
|
+
exports.APPS_TIER_MAX_WORK_BYTES = APPS_TIER_MAX_WORK_BYTES;
|
|
9385
|
+
exports.APPS_TIER_METERING_IMPORT_CRON = APPS_TIER_METERING_IMPORT_CRON;
|
|
9386
|
+
exports.APPS_TIER_MINING_CPU_SHARE = APPS_TIER_MINING_CPU_SHARE;
|
|
9387
|
+
exports.APPS_TIER_MINING_CPU_WINDOW_MS = APPS_TIER_MINING_CPU_WINDOW_MS;
|
|
9388
|
+
exports.APPS_TIER_MINING_MEDIUM_WINDOW_MS = APPS_TIER_MINING_MEDIUM_WINDOW_MS;
|
|
9389
|
+
exports.APPS_TIER_MINING_REFUSED_CONNECTIONS = APPS_TIER_MINING_REFUSED_CONNECTIONS;
|
|
9390
|
+
exports.APPS_TIER_MIN_CRON_INTERVAL_MS = APPS_TIER_MIN_CRON_INTERVAL_MS;
|
|
9391
|
+
exports.APPS_TIER_NOTIFICATION_IDS = APPS_TIER_NOTIFICATION_IDS;
|
|
9392
|
+
exports.APPS_TIER_OPEN_REFUSED_CODE = APPS_TIER_OPEN_REFUSED_CODE;
|
|
9393
|
+
exports.APPS_TIER_PAUSE_ALL_CATEGORY = APPS_TIER_PAUSE_ALL_CATEGORY;
|
|
9394
|
+
exports.APPS_TIER_PAUSE_ALL_CONFIRMATION = APPS_TIER_PAUSE_ALL_CONFIRMATION;
|
|
9395
|
+
exports.APPS_TIER_POLICY_DEFAULT_SCOPE = APPS_TIER_POLICY_DEFAULT_SCOPE;
|
|
9396
|
+
exports.APPS_TIER_PRICEBOOK_VERSION = APPS_TIER_PRICEBOOK_VERSION;
|
|
9397
|
+
exports.APPS_TIER_PRICE_GROUP = APPS_TIER_PRICE_GROUP;
|
|
9398
|
+
exports.APPS_TIER_PRICE_KEYS = APPS_TIER_PRICE_KEYS;
|
|
9399
|
+
exports.APPS_TIER_PRICE_UNITS = APPS_TIER_PRICE_UNITS;
|
|
9400
|
+
exports.APPS_TIER_PROBE_REASON_CODES = APPS_TIER_PROBE_REASON_CODES;
|
|
9401
|
+
exports.APPS_TIER_PUBLIC_KEY_CONFIG_MAP = APPS_TIER_PUBLIC_KEY_CONFIG_MAP;
|
|
9402
|
+
exports.APPS_TIER_QUARANTINED_LABEL = APPS_TIER_QUARANTINED_LABEL;
|
|
9403
|
+
exports.APPS_TIER_QUARANTINE_CATEGORIES = APPS_TIER_QUARANTINE_CATEGORIES;
|
|
9404
|
+
exports.APPS_TIER_QUARANTINE_REASON_MIN_CHARS = APPS_TIER_QUARANTINE_REASON_MIN_CHARS;
|
|
9405
|
+
exports.APPS_TIER_QUARANTINE_SOURCES = APPS_TIER_QUARANTINE_SOURCES;
|
|
9406
|
+
exports.APPS_TIER_QUOTA_CEILINGS = APPS_TIER_QUOTA_CEILINGS;
|
|
9407
|
+
exports.APPS_TIER_QUOTA_CEILING_EXCEEDED_CODE = APPS_TIER_QUOTA_CEILING_EXCEEDED_CODE;
|
|
9408
|
+
exports.APPS_TIER_QUOTA_PROFILES = APPS_TIER_QUOTA_PROFILES;
|
|
9409
|
+
exports.APPS_TIER_QUOTA_PROFILE_NAMES = APPS_TIER_QUOTA_PROFILE_NAMES;
|
|
9410
|
+
exports.APPS_TIER_RETAINED_UNTIL_LABEL = APPS_TIER_RETAINED_UNTIL_LABEL;
|
|
9411
|
+
exports.APPS_TIER_RUN_JOB_ANNOTATION = APPS_TIER_RUN_JOB_ANNOTATION;
|
|
9412
|
+
exports.APPS_TIER_SCOPES = APPS_TIER_SCOPES;
|
|
9413
|
+
exports.APPS_TIER_SEAL_AAD_PREFIX = APPS_TIER_SEAL_AAD_PREFIX;
|
|
9414
|
+
exports.APPS_TIER_SELF_CHECK_RUN_RETENTION_COUNT = APPS_TIER_SELF_CHECK_RUN_RETENTION_COUNT;
|
|
9415
|
+
exports.APPS_TIER_SELF_CHECK_RUN_RETENTION_DAYS = APPS_TIER_SELF_CHECK_RUN_RETENTION_DAYS;
|
|
9416
|
+
exports.APPS_TIER_SIGNAL_KINDS = APPS_TIER_SIGNAL_KINDS;
|
|
9417
|
+
exports.APPS_TIER_SIGNAL_SEVERITIES = APPS_TIER_SIGNAL_SEVERITIES;
|
|
9418
|
+
exports.APPS_TIER_SIGNAL_SUMMARY_MAX_CHARS = APPS_TIER_SIGNAL_SUMMARY_MAX_CHARS;
|
|
9419
|
+
exports.APPS_TIER_SMOKE_SCOPES = APPS_TIER_SMOKE_SCOPES;
|
|
9420
|
+
exports.APPS_TIER_SMOKE_STATUSES = APPS_TIER_SMOKE_STATUSES;
|
|
9421
|
+
exports.APPS_TIER_STATES = APPS_TIER_STATES;
|
|
9422
|
+
exports.APPS_TIER_TENANT_LABEL = APPS_TIER_TENANT_LABEL;
|
|
9423
|
+
exports.APPS_TIER_TENANT_NAMESPACE_PREFIX = APPS_TIER_TENANT_NAMESPACE_PREFIX;
|
|
9424
|
+
exports.APPS_TIER_USAGE_FRESHNESS_MS = APPS_TIER_USAGE_FRESHNESS_MS;
|
|
9425
|
+
exports.APPS_TIER_USAGE_UNITS = APPS_TIER_USAGE_UNITS;
|
|
9426
|
+
exports.APPS_TIER_WORK_CANARY_LABEL = APPS_TIER_WORK_CANARY_LABEL;
|
|
9427
|
+
exports.APPS_TIER_WORK_DEGRADED_REASONS = APPS_TIER_WORK_DEGRADED_REASONS;
|
|
9428
|
+
exports.APPS_TIER_WORK_DESIRED_STATES = APPS_TIER_WORK_DESIRED_STATES;
|
|
9429
|
+
exports.APPS_TIER_WORK_ID_LABEL = APPS_TIER_WORK_ID_LABEL;
|
|
9430
|
+
exports.APPS_TIER_WORK_NAME_PREFIX = APPS_TIER_WORK_NAME_PREFIX;
|
|
9431
|
+
exports.APPS_TIER_WORK_OWNER_LABEL = APPS_TIER_WORK_OWNER_LABEL;
|
|
9432
|
+
exports.APPS_TIER_WORK_PHASES = APPS_TIER_WORK_PHASES;
|
|
9433
|
+
exports.APPS_TIER_WORK_REFUSAL_CODES = APPS_TIER_WORK_REFUSAL_CODES;
|
|
9434
|
+
exports.APPS_TIER_ZONE_AUDIT_RETENTION_DAYS = APPS_TIER_ZONE_AUDIT_RETENTION_DAYS;
|
|
9435
|
+
exports.APPS_TIER_ZONE_INFO_CONFIG_MAP = APPS_TIER_ZONE_INFO_CONFIG_MAP;
|
|
9436
|
+
exports.APP_ACTIONS_HYGIENE_MAX_WORKFLOWS = APP_ACTIONS_HYGIENE_MAX_WORKFLOWS;
|
|
9437
|
+
exports.APP_ACTIONS_STATES = APP_ACTIONS_STATES;
|
|
9438
|
+
exports.APP_BEHIND_EVENT_STEP = APP_BEHIND_EVENT_STEP;
|
|
9439
|
+
exports.APP_BLUEPRINT_APPLY_STATUSES = APP_BLUEPRINT_APPLY_STATUSES;
|
|
9440
|
+
exports.APP_BUILD_ACTIVITY_ACTION_TYPE = APP_BUILD_ACTIVITY_ACTION_TYPE;
|
|
9441
|
+
exports.APP_BUILD_ADOPT_WINDOW_MS = APP_BUILD_ADOPT_WINDOW_MS;
|
|
9442
|
+
exports.APP_BUILD_BLOCKED_ACTIONS = APP_BUILD_BLOCKED_ACTIONS;
|
|
9443
|
+
exports.APP_BUILD_BLOCKED_REASONS = APP_BUILD_BLOCKED_REASONS;
|
|
9444
|
+
exports.APP_BUILD_BLOCKED_REASON_ACTIONS = APP_BUILD_BLOCKED_REASON_ACTIONS;
|
|
9445
|
+
exports.APP_BUILD_BRANCH_SLUG_MAX_CHARS = APP_BUILD_BRANCH_SLUG_MAX_CHARS;
|
|
9446
|
+
exports.APP_BUILD_CANCEL_REASONS = APP_BUILD_CANCEL_REASONS;
|
|
9447
|
+
exports.APP_BUILD_CHECKS_JOB_ID = APP_BUILD_CHECKS_JOB_ID;
|
|
9448
|
+
exports.APP_BUILD_CHECKS_MAX = APP_BUILD_CHECKS_MAX;
|
|
9449
|
+
exports.APP_BUILD_CHECKS_MAX_PARALLEL = APP_BUILD_CHECKS_MAX_PARALLEL;
|
|
9450
|
+
exports.APP_BUILD_CHECK_NAME_PREFIX = APP_BUILD_CHECK_NAME_PREFIX;
|
|
9451
|
+
exports.APP_BUILD_DEPLOYABLE_TRIGGERS = APP_BUILD_DEPLOYABLE_TRIGGERS;
|
|
9452
|
+
exports.APP_BUILD_ENV_SYNC_SLA_MS = APP_BUILD_ENV_SYNC_SLA_MS;
|
|
9453
|
+
exports.APP_BUILD_EVENT_NAMES = APP_BUILD_EVENT_NAMES;
|
|
9454
|
+
exports.APP_BUILD_EXCERPT_MAX_LINES = APP_BUILD_EXCERPT_MAX_LINES;
|
|
9455
|
+
exports.APP_BUILD_EXCERPT_MAX_LINE_CHARS = APP_BUILD_EXCERPT_MAX_LINE_CHARS;
|
|
9456
|
+
exports.APP_BUILD_FAILURE_CLASSES = APP_BUILD_FAILURE_CLASSES;
|
|
9457
|
+
exports.APP_BUILD_FAILURE_COPY_EN = APP_BUILD_FAILURE_COPY_EN;
|
|
9458
|
+
exports.APP_BUILD_GENERATOR_VERSION = APP_BUILD_GENERATOR_VERSION;
|
|
9459
|
+
exports.APP_BUILD_IMAGE_NAME = APP_BUILD_IMAGE_NAME;
|
|
9460
|
+
exports.APP_BUILD_KINDS = APP_BUILD_KINDS;
|
|
9461
|
+
exports.APP_BUILD_LIST_MAX_PAGE_SIZE = APP_BUILD_LIST_MAX_PAGE_SIZE;
|
|
9462
|
+
exports.APP_BUILD_LIST_PAGE_SIZE = APP_BUILD_LIST_PAGE_SIZE;
|
|
9463
|
+
exports.APP_BUILD_LOG_TAIL_BYTES = APP_BUILD_LOG_TAIL_BYTES;
|
|
9464
|
+
exports.APP_BUILD_LOST_GRACE_MINUTES = APP_BUILD_LOST_GRACE_MINUTES;
|
|
9465
|
+
exports.APP_BUILD_MANAGED_CONCURRENCY = APP_BUILD_MANAGED_CONCURRENCY;
|
|
9466
|
+
exports.APP_BUILD_MANAGED_DEFAULTS = APP_BUILD_MANAGED_DEFAULTS;
|
|
9467
|
+
exports.APP_BUILD_MANAGED_MAXIMUMS = APP_BUILD_MANAGED_MAXIMUMS;
|
|
9468
|
+
exports.APP_BUILD_MAX_VALUES = APP_BUILD_MAX_VALUES;
|
|
9469
|
+
exports.APP_BUILD_NOT_DEPLOYABLE_REASONS = APP_BUILD_NOT_DEPLOYABLE_REASONS;
|
|
9470
|
+
exports.APP_BUILD_POLL_AFTER_SILENCE_MS = APP_BUILD_POLL_AFTER_SILENCE_MS;
|
|
9471
|
+
exports.APP_BUILD_PREPARE_WORKFLOW_STATES = APP_BUILD_PREPARE_WORKFLOW_STATES;
|
|
9472
|
+
exports.APP_BUILD_PULL_TOKEN_EXPIRY_WARN_DAYS = APP_BUILD_PULL_TOKEN_EXPIRY_WARN_DAYS;
|
|
9473
|
+
exports.APP_BUILD_REBUILDS_PER_HOUR = APP_BUILD_REBUILDS_PER_HOUR;
|
|
9474
|
+
exports.APP_BUILD_REBUILD_DEDUPE_MS = APP_BUILD_REBUILD_DEDUPE_MS;
|
|
9475
|
+
exports.APP_BUILD_RESTRICTED_VALUE_LITERAL = APP_BUILD_RESTRICTED_VALUE_LITERAL;
|
|
9476
|
+
exports.APP_BUILD_RESULT_ARTIFACT_FILE = APP_BUILD_RESULT_ARTIFACT_FILE;
|
|
9477
|
+
exports.APP_BUILD_RESULT_ARTIFACT_NAME = APP_BUILD_RESULT_ARTIFACT_NAME;
|
|
9478
|
+
exports.APP_BUILD_RESULT_ARTIFACT_RETENTION_DAYS = APP_BUILD_RESULT_ARTIFACT_RETENTION_DAYS;
|
|
9479
|
+
exports.APP_BUILD_RESULT_MAX_BYTES = APP_BUILD_RESULT_MAX_BYTES;
|
|
9480
|
+
exports.APP_BUILD_RUNNERS = APP_BUILD_RUNNERS;
|
|
9481
|
+
exports.APP_BUILD_RUNNER_CLASSES = APP_BUILD_RUNNER_CLASSES;
|
|
9482
|
+
exports.APP_BUILD_RUNNER_HEADROOM_GIB = APP_BUILD_RUNNER_HEADROOM_GIB;
|
|
9483
|
+
exports.APP_BUILD_RUN_DISCOVERY_BATCH = APP_BUILD_RUN_DISCOVERY_BATCH;
|
|
9484
|
+
exports.APP_BUILD_RUN_DISCOVERY_PER_PAGE = APP_BUILD_RUN_DISCOVERY_PER_PAGE;
|
|
9485
|
+
exports.APP_BUILD_RUN_SOURCES = APP_BUILD_RUN_SOURCES;
|
|
9486
|
+
exports.APP_BUILD_SECRET_CHECK_MIN_CHARS = APP_BUILD_SECRET_CHECK_MIN_CHARS;
|
|
9487
|
+
exports.APP_BUILD_SECRET_CHECK_RESULTS = APP_BUILD_SECRET_CHECK_RESULTS;
|
|
9488
|
+
exports.APP_BUILD_SECRET_MAX_BYTES = APP_BUILD_SECRET_MAX_BYTES;
|
|
9489
|
+
exports.APP_BUILD_SECRET_PREFIX = APP_BUILD_SECRET_PREFIX;
|
|
9490
|
+
exports.APP_BUILD_SETTING_ALLOW_VALUES_ON_PULL_REQUESTS = APP_BUILD_SETTING_ALLOW_VALUES_ON_PULL_REQUESTS;
|
|
9491
|
+
exports.APP_BUILD_SETTING_ATTESTATIONS = APP_BUILD_SETTING_ATTESTATIONS;
|
|
9492
|
+
exports.APP_BUILD_SETTING_RECLAIM_DISK = APP_BUILD_SETTING_RECLAIM_DISK;
|
|
9493
|
+
exports.APP_BUILD_SETTING_VERIFICATION_PROMPTED_REQUIRES_APPROVAL = APP_BUILD_SETTING_VERIFICATION_PROMPTED_REQUIRES_APPROVAL;
|
|
9494
|
+
exports.APP_BUILD_SIGNATURE_STATES = APP_BUILD_SIGNATURE_STATES;
|
|
9495
|
+
exports.APP_BUILD_STATUSES = APP_BUILD_STATUSES;
|
|
9496
|
+
exports.APP_BUILD_STATUS_EVENT_MAP = APP_BUILD_STATUS_EVENT_MAP;
|
|
9497
|
+
exports.APP_BUILD_STRATEGIES = APP_BUILD_STRATEGIES;
|
|
9498
|
+
exports.APP_BUILD_SWEEP_BATCH = APP_BUILD_SWEEP_BATCH;
|
|
9499
|
+
exports.APP_BUILD_SWEEP_CRON = APP_BUILD_SWEEP_CRON;
|
|
9500
|
+
exports.APP_BUILD_SYNC_ORIGINS = APP_BUILD_SYNC_ORIGINS;
|
|
9501
|
+
exports.APP_BUILD_TRIGGERS = APP_BUILD_TRIGGERS;
|
|
9502
|
+
exports.APP_BUILD_VERIFICATION_RESULT_MAX_SMOKE = APP_BUILD_VERIFICATION_RESULT_MAX_SMOKE;
|
|
9503
|
+
exports.APP_BUILD_VERIFY_MEMORY_GIB = APP_BUILD_VERIFY_MEMORY_GIB;
|
|
9504
|
+
exports.APP_BUILD_VERIFY_PLAN_INPUT = APP_BUILD_VERIFY_PLAN_INPUT;
|
|
9505
|
+
exports.APP_BUILD_VERIFY_PLAN_MAX_CHARS = APP_BUILD_VERIFY_PLAN_MAX_CHARS;
|
|
9506
|
+
exports.APP_BUILD_VERIFY_PLAN_MAX_COMPONENTS = APP_BUILD_VERIFY_PLAN_MAX_COMPONENTS;
|
|
9507
|
+
exports.APP_BUILD_VERIFY_PLAN_MAX_DEPENDENCIES = APP_BUILD_VERIFY_PLAN_MAX_DEPENDENCIES;
|
|
9508
|
+
exports.APP_BUILD_VERIFY_PLAN_MAX_ENV_ENTRIES = APP_BUILD_VERIFY_PLAN_MAX_ENV_ENTRIES;
|
|
9509
|
+
exports.APP_BUILD_VERIFY_PLAN_MAX_JOBS = APP_BUILD_VERIFY_PLAN_MAX_JOBS;
|
|
9510
|
+
exports.APP_BUILD_VERIFY_PLAN_MAX_SMOKE = APP_BUILD_VERIFY_PLAN_MAX_SMOKE;
|
|
9511
|
+
exports.APP_BUILD_VERIFY_PROMPTED_SECRET = APP_BUILD_VERIFY_PROMPTED_SECRET;
|
|
9512
|
+
exports.APP_BUILD_VERIFY_TIMEOUT_MINUTES = APP_BUILD_VERIFY_TIMEOUT_MINUTES;
|
|
9513
|
+
exports.APP_BUILD_WEBHOOK_EVENT = APP_BUILD_WEBHOOK_EVENT;
|
|
9514
|
+
exports.APP_BUILD_WEBHOOK_STATES = APP_BUILD_WEBHOOK_STATES;
|
|
9515
|
+
exports.APP_BUILD_WORKFLOW_BRANCH = APP_BUILD_WORKFLOW_BRANCH;
|
|
9516
|
+
exports.APP_BUILD_WORKFLOW_PATH = APP_BUILD_WORKFLOW_PATH;
|
|
9517
|
+
exports.APP_BUILD_WORKFLOW_STATES = APP_BUILD_WORKFLOW_STATES;
|
|
9518
|
+
exports.APP_CANCEL_REASONS = APP_CANCEL_REASONS;
|
|
9519
|
+
exports.APP_CERT_NOTIFY_AFTER_MIN = APP_CERT_NOTIFY_AFTER_MIN;
|
|
9520
|
+
exports.APP_CLUSTER_CHECK_TIMEOUT_S = APP_CLUSTER_CHECK_TIMEOUT_S;
|
|
9521
|
+
exports.APP_CLUSTER_DIAL_TIMEOUT_S = APP_CLUSTER_DIAL_TIMEOUT_S;
|
|
9522
|
+
exports.APP_CREATE_IDEMPOTENCY_WINDOW_MS = APP_CREATE_IDEMPOTENCY_WINDOW_MS;
|
|
9523
|
+
exports.APP_CREATE_LOCK_TTL_MS = APP_CREATE_LOCK_TTL_MS;
|
|
9524
|
+
exports.APP_CREATE_RESPONSE_BUDGET_MS = APP_CREATE_RESPONSE_BUDGET_MS;
|
|
9525
|
+
exports.APP_DEPENDENCY_BACKUP_OVERDUE_MS = APP_DEPENDENCY_BACKUP_OVERDUE_MS;
|
|
9526
|
+
exports.APP_DEPENDENCY_BACKUP_POLICIES = APP_DEPENDENCY_BACKUP_POLICIES;
|
|
9527
|
+
exports.APP_DEPENDENCY_BACKUP_STATES = APP_DEPENDENCY_BACKUP_STATES;
|
|
9528
|
+
exports.APP_DEPENDENCY_BACKUP_STATE_MESSAGE_KEY_PREFIX = APP_DEPENDENCY_BACKUP_STATE_MESSAGE_KEY_PREFIX;
|
|
9529
|
+
exports.APP_DEPENDENCY_BACKUP_STATE_MESSAGE_LEAVES = APP_DEPENDENCY_BACKUP_STATE_MESSAGE_LEAVES;
|
|
9530
|
+
exports.APP_DEPENDENCY_BUCKET_OUTPUT_PATTERN = APP_DEPENDENCY_BUCKET_OUTPUT_PATTERN;
|
|
9531
|
+
exports.APP_DEPENDENCY_BUCKET_OUTPUT_PREFIX = APP_DEPENDENCY_BUCKET_OUTPUT_PREFIX;
|
|
9532
|
+
exports.APP_DEPENDENCY_DEFAULT_SIZE_GIB = APP_DEPENDENCY_DEFAULT_SIZE_GIB;
|
|
9533
|
+
exports.APP_DEPENDENCY_ENV_VARS = APP_DEPENDENCY_ENV_VARS;
|
|
9534
|
+
exports.APP_DEPENDENCY_ERROR_CODES = APP_DEPENDENCY_ERROR_CODES;
|
|
9535
|
+
exports.APP_DEPENDENCY_EXTERNAL_TEST_MS = APP_DEPENDENCY_EXTERNAL_TEST_MS;
|
|
9536
|
+
exports.APP_DEPENDENCY_INACTIVE_STATUSES = APP_DEPENDENCY_INACTIVE_STATUSES;
|
|
9537
|
+
exports.APP_DEPENDENCY_KINDS = APP_DEPENDENCY_KINDS;
|
|
9538
|
+
exports.APP_DEPENDENCY_MANAGED = APP_DEPENDENCY_MANAGED;
|
|
9539
|
+
exports.APP_DEPENDENCY_OUTPUTS = APP_DEPENDENCY_OUTPUTS;
|
|
9540
|
+
exports.APP_DEPENDENCY_OUTPUT_NAMES = APP_DEPENDENCY_OUTPUT_NAMES;
|
|
9541
|
+
exports.APP_DEPENDENCY_POSTGRES_DEFAULT_PORT = APP_DEPENDENCY_POSTGRES_DEFAULT_PORT;
|
|
9542
|
+
exports.APP_DEPENDENCY_PROVIDER_IDS = APP_DEPENDENCY_PROVIDER_IDS;
|
|
9543
|
+
exports.APP_DEPENDENCY_READY_DEADLINE_MS = APP_DEPENDENCY_READY_DEADLINE_MS;
|
|
9544
|
+
exports.APP_DEPENDENCY_REASONS = APP_DEPENDENCY_REASONS;
|
|
9545
|
+
exports.APP_DEPENDENCY_REASON_MESSAGE_KEY_PREFIX = APP_DEPENDENCY_REASON_MESSAGE_KEY_PREFIX;
|
|
9546
|
+
exports.APP_DEPENDENCY_REASON_MESSAGE_LEAVES = APP_DEPENDENCY_REASON_MESSAGE_LEAVES;
|
|
9547
|
+
exports.APP_DEPENDENCY_REFRESH_AFTER_MS = APP_DEPENDENCY_REFRESH_AFTER_MS;
|
|
9548
|
+
exports.APP_DEPENDENCY_RELAY_DAILY_LIMIT = APP_DEPENDENCY_RELAY_DAILY_LIMIT;
|
|
9549
|
+
exports.APP_DEPENDENCY_RELAY_LIMITS = APP_DEPENDENCY_RELAY_LIMITS;
|
|
9550
|
+
exports.APP_DEPENDENCY_RETRY_DELAY_MS = APP_DEPENDENCY_RETRY_DELAY_MS;
|
|
9551
|
+
exports.APP_DEPENDENCY_STATUSES = APP_DEPENDENCY_STATUSES;
|
|
9552
|
+
exports.APP_DEPENDENCY_STATUS_MESSAGE_KEY_PREFIX = APP_DEPENDENCY_STATUS_MESSAGE_KEY_PREFIX;
|
|
9553
|
+
exports.APP_DEPENDENCY_STATUS_MESSAGE_LEAVES = APP_DEPENDENCY_STATUS_MESSAGE_LEAVES;
|
|
9554
|
+
exports.APP_DEPENDENCY_STATUS_REASONS = APP_DEPENDENCY_STATUS_REASONS;
|
|
9555
|
+
exports.APP_DEPENDENCY_TARGETS = APP_DEPENDENCY_TARGETS;
|
|
9556
|
+
exports.APP_DEPENDENCY_TOKEN_SCHEME = APP_DEPENDENCY_TOKEN_SCHEME;
|
|
9557
|
+
exports.APP_DEPENDENCY_TOKEN_UNKNOWN_CODE = APP_DEPENDENCY_TOKEN_UNKNOWN_CODE;
|
|
9558
|
+
exports.APP_DEPENDENCY_TRANSIENT_ATTEMPTS = APP_DEPENDENCY_TRANSIENT_ATTEMPTS;
|
|
9559
|
+
exports.APP_DEPENDENCY_ZONE_BUCKET_NAME_SHAPE = APP_DEPENDENCY_ZONE_BUCKET_NAME_SHAPE;
|
|
9560
|
+
exports.APP_DEPENDENCY_ZONE_BUCKET_PREFIX = APP_DEPENDENCY_ZONE_BUCKET_PREFIX;
|
|
9561
|
+
exports.APP_DEPENDENCY_ZONE_REDIS_MAX_MEMORY_MIB = APP_DEPENDENCY_ZONE_REDIS_MAX_MEMORY_MIB;
|
|
9562
|
+
exports.APP_DEPLOYMENT_DISPLAY_STATES = APP_DEPLOYMENT_DISPLAY_STATES;
|
|
9563
|
+
exports.APP_DEPLOYMENT_STATES = APP_DEPLOYMENT_STATES;
|
|
9564
|
+
exports.APP_DEPLOYMENT_TERMINAL_STATES = APP_DEPLOYMENT_TERMINAL_STATES;
|
|
9565
|
+
exports.APP_DEPLOY_LOCK_STALE_S = APP_DEPLOY_LOCK_STALE_S;
|
|
9566
|
+
exports.APP_DEPLOY_MAX_DURATION_S = APP_DEPLOY_MAX_DURATION_S;
|
|
9567
|
+
exports.APP_DEPLOY_OUTCOMES = APP_DEPLOY_OUTCOMES;
|
|
9568
|
+
exports.APP_DEPLOY_PHASES = APP_DEPLOY_PHASES;
|
|
9569
|
+
exports.APP_DEPLOY_PURPOSES = APP_DEPLOY_PURPOSES;
|
|
9570
|
+
exports.APP_DEPLOY_REQUEST_BUDGET_MS = APP_DEPLOY_REQUEST_BUDGET_MS;
|
|
9571
|
+
exports.APP_DEPLOY_TARGETS = APP_DEPLOY_TARGETS;
|
|
9572
|
+
exports.APP_DEPLOY_TARGET_CHOICES = APP_DEPLOY_TARGET_CHOICES;
|
|
9573
|
+
exports.APP_DIVERGENCE_DAILY_MS = APP_DIVERGENCE_DAILY_MS;
|
|
9574
|
+
exports.APP_DIVERGENCE_TTL_MS = APP_DIVERGENCE_TTL_MS;
|
|
9575
|
+
exports.APP_DOMAIN_RECONCILE_S = APP_DOMAIN_RECONCILE_S;
|
|
9576
|
+
exports.APP_ENV_ALPHABETS = APP_ENV_ALPHABETS;
|
|
9577
|
+
exports.APP_ENV_API_ERROR_CODES = APP_ENV_API_ERROR_CODES;
|
|
9578
|
+
exports.APP_ENV_BASE64_MAX_BYTES = APP_ENV_BASE64_MAX_BYTES;
|
|
9579
|
+
exports.APP_ENV_BASE64_MIN_BYTES = APP_ENV_BASE64_MIN_BYTES;
|
|
9580
|
+
exports.APP_ENV_BUILD_SERVICE_OBJECT_STORAGE_REGION = APP_ENV_BUILD_SERVICE_OBJECT_STORAGE_REGION;
|
|
9581
|
+
exports.APP_ENV_BUILD_SERVICE_OUTPUTS = APP_ENV_BUILD_SERVICE_OUTPUTS;
|
|
9582
|
+
exports.APP_ENV_BUILD_SERVICE_SMTP_FROM = APP_ENV_BUILD_SERVICE_SMTP_FROM;
|
|
9583
|
+
exports.APP_ENV_BUILD_SERVICE_VALUE_FLAG = APP_ENV_BUILD_SERVICE_VALUE_FLAG;
|
|
9584
|
+
exports.APP_ENV_CHARS_MAX_LENGTH = APP_ENV_CHARS_MAX_LENGTH;
|
|
9585
|
+
exports.APP_ENV_CHARS_MIN_LENGTH = APP_ENV_CHARS_MIN_LENGTH;
|
|
9586
|
+
exports.APP_ENV_DECLARED_SOURCES = APP_ENV_DECLARED_SOURCES;
|
|
9587
|
+
exports.APP_ENV_DEP_PASSWORD_TOKEN_PREFIX = APP_ENV_DEP_PASSWORD_TOKEN_PREFIX;
|
|
9588
|
+
exports.APP_ENV_DEP_PASSWORD_TOKEN_SUFFIX = APP_ENV_DEP_PASSWORD_TOKEN_SUFFIX;
|
|
9589
|
+
exports.APP_ENV_DOTENV_MAX_BYTES = APP_ENV_DOTENV_MAX_BYTES;
|
|
9590
|
+
exports.APP_ENV_DOTENV_MAX_LINES = APP_ENV_DOTENV_MAX_LINES;
|
|
9591
|
+
exports.APP_ENV_ERROR_CODES = APP_ENV_ERROR_CODES;
|
|
9592
|
+
exports.APP_ENV_ERROR_MESSAGE_KEY_PREFIX = APP_ENV_ERROR_MESSAGE_KEY_PREFIX;
|
|
9593
|
+
exports.APP_ENV_ERROR_MESSAGE_LEAVES = APP_ENV_ERROR_MESSAGE_LEAVES;
|
|
9594
|
+
exports.APP_ENV_GENERATE_SLA_MS = APP_ENV_GENERATE_SLA_MS;
|
|
9595
|
+
exports.APP_ENV_GENERATOR_KINDS = APP_ENV_GENERATOR_KINDS;
|
|
9596
|
+
exports.APP_ENV_IMPORT_OUTCOMES = APP_ENV_IMPORT_OUTCOMES;
|
|
9597
|
+
exports.APP_ENV_KEYPAIR_DEFAULT_FORMAT = APP_ENV_KEYPAIR_DEFAULT_FORMAT;
|
|
9598
|
+
exports.APP_ENV_KEYPAIR_FORMATS = APP_ENV_KEYPAIR_FORMATS;
|
|
9599
|
+
exports.APP_ENV_KEYPAIR_RAW_TYPES = APP_ENV_KEYPAIR_RAW_TYPES;
|
|
9600
|
+
exports.APP_ENV_KEYPAIR_TYPES = APP_ENV_KEYPAIR_TYPES;
|
|
9601
|
+
exports.APP_ENV_MAX_STORED = APP_ENV_MAX_STORED;
|
|
9602
|
+
exports.APP_ENV_NAME_PATTERN = APP_ENV_NAME_PATTERN;
|
|
9603
|
+
exports.APP_ENV_ORIGINS = APP_ENV_ORIGINS;
|
|
9604
|
+
exports.APP_ENV_PATTERN_BUDGET_MS = APP_ENV_PATTERN_BUDGET_MS;
|
|
9605
|
+
exports.APP_ENV_PHASES = APP_ENV_PHASES;
|
|
9606
|
+
exports.APP_ENV_PUBLIC_HALF_MAX_BYTES = APP_ENV_PUBLIC_HALF_MAX_BYTES;
|
|
9607
|
+
exports.APP_ENV_PUBLIC_HALF_SUFFIX = APP_ENV_PUBLIC_HALF_SUFFIX;
|
|
9608
|
+
exports.APP_ENV_PUBLIC_PREFIXES = APP_ENV_PUBLIC_PREFIXES;
|
|
9609
|
+
exports.APP_ENV_PUTS_PER_MINUTE = APP_ENV_PUTS_PER_MINUTE;
|
|
9610
|
+
exports.APP_ENV_RECIPE_SOURCES = APP_ENV_RECIPE_SOURCES;
|
|
9611
|
+
exports.APP_ENV_RECIPE_TOKEN_KINDS = APP_ENV_RECIPE_TOKEN_KINDS;
|
|
9612
|
+
exports.APP_ENV_REDACT_MIN_CHARS = APP_ENV_REDACT_MIN_CHARS;
|
|
9613
|
+
exports.APP_ENV_RESERVED_PREFIX = APP_ENV_RESERVED_PREFIX;
|
|
9614
|
+
exports.APP_ENV_RESOLUTION_TARGETS = APP_ENV_RESOLUTION_TARGETS;
|
|
9615
|
+
exports.APP_ENV_ROTATE_MODES = APP_ENV_ROTATE_MODES;
|
|
9616
|
+
exports.APP_ENV_ROTATIONS_PER_HOUR = APP_ENV_ROTATIONS_PER_HOUR;
|
|
9617
|
+
exports.APP_ENV_RUNNER_RECIPE_ENDPOINTS = APP_ENV_RUNNER_RECIPE_ENDPOINTS;
|
|
9618
|
+
exports.APP_ENV_SECRETS_KEPT = APP_ENV_SECRETS_KEPT;
|
|
9619
|
+
exports.APP_ENV_STORED_ORIGINS = APP_ENV_STORED_ORIGINS;
|
|
9620
|
+
exports.APP_ENV_TEMPLATE_MAX_DEPTH = APP_ENV_TEMPLATE_MAX_DEPTH;
|
|
9621
|
+
exports.APP_ENV_TOTAL_MAX_BYTES = APP_ENV_TOTAL_MAX_BYTES;
|
|
9622
|
+
exports.APP_ENV_UNRESOLVED_REASONS = APP_ENV_UNRESOLVED_REASONS;
|
|
9623
|
+
exports.APP_ENV_UUID_LENGTH = APP_ENV_UUID_LENGTH;
|
|
9624
|
+
exports.APP_ENV_VALIDATION_REFUSAL_CODES = APP_ENV_VALIDATION_REFUSAL_CODES;
|
|
9625
|
+
exports.APP_ENV_VALUE_MAX_BYTES = APP_ENV_VALUE_MAX_BYTES;
|
|
9626
|
+
exports.APP_FAILURE_CODES = APP_FAILURE_CODES;
|
|
9627
|
+
exports.APP_FAILURE_CODES_WITHOUT_MESSAGE_LEAF = APP_FAILURE_CODES_WITHOUT_MESSAGE_LEAF;
|
|
9628
|
+
exports.APP_FAILURE_LEAVES_WITHOUT_FAILURE_CODE = APP_FAILURE_LEAVES_WITHOUT_FAILURE_CODE;
|
|
9629
|
+
exports.APP_FAILURE_MESSAGE_LEAVES = APP_FAILURE_MESSAGE_LEAVES;
|
|
9630
|
+
exports.APP_FORK_READINESS_IDLE_MS = APP_FORK_READINESS_IDLE_MS;
|
|
9631
|
+
exports.APP_FORK_READINESS_MANUAL_RETRIES_PER_HOUR = APP_FORK_READINESS_MANUAL_RETRIES_PER_HOUR;
|
|
9632
|
+
exports.APP_FORK_READINESS_MAX_REDISPATCH = APP_FORK_READINESS_MAX_REDISPATCH;
|
|
9633
|
+
exports.APP_FORK_READINESS_POLL_DELAYS_MS = APP_FORK_READINESS_POLL_DELAYS_MS;
|
|
9634
|
+
exports.APP_FORK_READINESS_POLL_INTERVAL_MS = APP_FORK_READINESS_POLL_INTERVAL_MS;
|
|
9635
|
+
exports.APP_FORK_READINESS_READY_LATENCY_MS = APP_FORK_READINESS_READY_LATENCY_MS;
|
|
9636
|
+
exports.APP_FORK_READINESS_REASONS = APP_FORK_READINESS_REASONS;
|
|
9637
|
+
exports.APP_FORK_READINESS_TIMEOUT_ENV = APP_FORK_READINESS_TIMEOUT_ENV;
|
|
9638
|
+
exports.APP_FORK_READINESS_TIMEOUT_MS = APP_FORK_READINESS_TIMEOUT_MS;
|
|
9639
|
+
exports.APP_FORK_READINESS_TIMEOUT_OVERRIDE_MIN_MS = APP_FORK_READINESS_TIMEOUT_OVERRIDE_MIN_MS;
|
|
9640
|
+
exports.APP_HEALTH_BATCH = APP_HEALTH_BATCH;
|
|
9641
|
+
exports.APP_HEALTH_CLUSTER_CONCURRENCY = APP_HEALTH_CLUSTER_CONCURRENCY;
|
|
9642
|
+
exports.APP_HEALTH_FAILS_TO_NOTIFY = APP_HEALTH_FAILS_TO_NOTIFY;
|
|
9643
|
+
exports.APP_HEALTH_NOTIFY_DEDUPE_H = APP_HEALTH_NOTIFY_DEDUPE_H;
|
|
9644
|
+
exports.APP_HEALTH_PASSES_TO_RECOVER = APP_HEALTH_PASSES_TO_RECOVER;
|
|
9645
|
+
exports.APP_HEALTH_POLL_S = APP_HEALTH_POLL_S;
|
|
9646
|
+
exports.APP_HEALTH_POLL_TIMEOUT_S = APP_HEALTH_POLL_TIMEOUT_S;
|
|
9647
|
+
exports.APP_HEALTH_UNREACHABLE_POLLS = APP_HEALTH_UNREACHABLE_POLLS;
|
|
9648
|
+
exports.APP_HTTP_AUTH_SCHEMES = APP_HTTP_AUTH_SCHEMES;
|
|
9649
|
+
exports.APP_INSPECT_CACHE_TTL_MS = APP_INSPECT_CACHE_TTL_MS;
|
|
9650
|
+
exports.APP_INSPECT_FIXED_PROVIDER_CALLS = APP_INSPECT_FIXED_PROVIDER_CALLS;
|
|
9651
|
+
exports.APP_INSPECT_MAX_PROVIDER_CALLS = APP_INSPECT_MAX_PROVIDER_CALLS;
|
|
9652
|
+
exports.APP_INSPECT_OWNER_MIN_CALLS_REMAINING = APP_INSPECT_OWNER_MIN_CALLS_REMAINING;
|
|
9653
|
+
exports.APP_INSPECT_P95_BUDGET_MS = APP_INSPECT_P95_BUDGET_MS;
|
|
9654
|
+
exports.APP_INSPECT_RATE_LIMIT_PER_MINUTE = APP_INSPECT_RATE_LIMIT_PER_MINUTE;
|
|
9655
|
+
exports.APP_ISOLATION_PROBE_TIMEOUT_S = APP_ISOLATION_PROBE_TIMEOUT_S;
|
|
9656
|
+
exports.APP_JOB_RUNS_KEPT = APP_JOB_RUNS_KEPT;
|
|
9657
|
+
exports.APP_JOB_TIMEOUT_DEFAULT_S = APP_JOB_TIMEOUT_DEFAULT_S;
|
|
9658
|
+
exports.APP_JOB_TTL_S = APP_JOB_TTL_S;
|
|
9659
|
+
exports.APP_LAUNCHER_CATALOG_MAX_ENTRIES = APP_LAUNCHER_CATALOG_MAX_ENTRIES;
|
|
9660
|
+
exports.APP_LAUNCHER_CLIENT_CACHE_MS = APP_LAUNCHER_CLIENT_CACHE_MS;
|
|
9661
|
+
exports.APP_LAUNCHER_DESCRIPTION_MAX_LENGTH = APP_LAUNCHER_DESCRIPTION_MAX_LENGTH;
|
|
9662
|
+
exports.APP_LAUNCHER_EMPTY_ACTIONS = APP_LAUNCHER_EMPTY_ACTIONS;
|
|
9663
|
+
exports.APP_LAUNCHER_ENVIRONMENTS = APP_LAUNCHER_ENVIRONMENTS;
|
|
9664
|
+
exports.APP_LAUNCHER_FILTER_MAX_LENGTH = APP_LAUNCHER_FILTER_MAX_LENGTH;
|
|
9665
|
+
exports.APP_LAUNCHER_ICON_MAX_BYTES = APP_LAUNCHER_ICON_MAX_BYTES;
|
|
9666
|
+
exports.APP_LAUNCHER_ITEM_KINDS = APP_LAUNCHER_ITEM_KINDS;
|
|
9667
|
+
exports.APP_LAUNCHER_MANAGE_STATES = APP_LAUNCHER_MANAGE_STATES;
|
|
9668
|
+
exports.APP_LAUNCHER_MAX_CHANGES_PER_SAVE = APP_LAUNCHER_MAX_CHANGES_PER_SAVE;
|
|
9669
|
+
exports.APP_LAUNCHER_MAX_ITEMS_RESPONSE = APP_LAUNCHER_MAX_ITEMS_RESPONSE;
|
|
9670
|
+
exports.APP_LAUNCHER_MAX_PREFERENCE_ROWS = APP_LAUNCHER_MAX_PREFERENCE_ROWS;
|
|
9671
|
+
exports.APP_LAUNCHER_NAME_MAX_LENGTH = APP_LAUNCHER_NAME_MAX_LENGTH;
|
|
9672
|
+
exports.APP_LAUNCHER_ORIGIN_NOT_ALLOWED = APP_LAUNCHER_ORIGIN_NOT_ALLOWED;
|
|
9673
|
+
exports.APP_LAUNCHER_PANEL_PLATFORMS_MAX = APP_LAUNCHER_PANEL_PLATFORMS_MAX;
|
|
9674
|
+
exports.APP_LAUNCHER_PANEL_WORKS_MAX = APP_LAUNCHER_PANEL_WORKS_MAX;
|
|
9675
|
+
exports.APP_LAUNCHER_PIN_LIMIT = APP_LAUNCHER_PIN_LIMIT;
|
|
9676
|
+
exports.APP_LAUNCHER_PLATFORM_STATUSES = APP_LAUNCHER_PLATFORM_STATUSES;
|
|
9677
|
+
exports.APP_LAUNCHER_REJECTION_REASONS = APP_LAUNCHER_REJECTION_REASONS;
|
|
9678
|
+
exports.APP_LAUNCHER_SECTIONS = APP_LAUNCHER_SECTIONS;
|
|
9679
|
+
exports.APP_LAUNCHER_WORK_CHIPS = APP_LAUNCHER_WORK_CHIPS;
|
|
9680
|
+
exports.APP_LICENSE_EVALUATION_REASONS = APP_LICENSE_EVALUATION_REASONS;
|
|
9681
|
+
exports.APP_LOG_BYTES_MAX = APP_LOG_BYTES_MAX;
|
|
9682
|
+
exports.APP_LOG_CACHE_S = APP_LOG_CACHE_S;
|
|
9683
|
+
exports.APP_LOG_LINES_DEFAULT = APP_LOG_LINES_DEFAULT;
|
|
9684
|
+
exports.APP_LOG_LINES_MAX = APP_LOG_LINES_MAX;
|
|
9685
|
+
exports.APP_LOG_REDACT_MIN_CHARS = APP_LOG_REDACT_MIN_CHARS;
|
|
9686
|
+
exports.APP_MANAGED_CRON_MIN_INTERVAL_MIN = APP_MANAGED_CRON_MIN_INTERVAL_MIN;
|
|
9687
|
+
exports.APP_MANAGED_MAX_PER_USER_DEFAULT = APP_MANAGED_MAX_PER_USER_DEFAULT;
|
|
9688
|
+
exports.APP_MANIFEST_JOB_PHASES = APP_MANIFEST_JOB_PHASES;
|
|
9689
|
+
exports.APP_PAUSE_TIMEOUT_S = APP_PAUSE_TIMEOUT_S;
|
|
9690
|
+
exports.APP_PRECONDITION_CODES = APP_PRECONDITION_CODES;
|
|
9691
|
+
exports.APP_PRECONDITION_MESSAGE_LEAVES = APP_PRECONDITION_MESSAGE_LEAVES;
|
|
9692
|
+
exports.APP_PRECONDITION_STATES = APP_PRECONDITION_STATES;
|
|
9693
|
+
exports.APP_PREPARE_TIMEOUT_S = APP_PREPARE_TIMEOUT_S;
|
|
9694
|
+
exports.APP_PREVIEWS_MAX = APP_PREVIEWS_MAX;
|
|
9695
|
+
exports.APP_PREVIEW_CLOSE_REMOVE_MIN = APP_PREVIEW_CLOSE_REMOVE_MIN;
|
|
9696
|
+
exports.APP_PREVIEW_IDLE_H = APP_PREVIEW_IDLE_H;
|
|
9697
|
+
exports.APP_PRIVATE_COPY_MAX_SIZE_KB = APP_PRIVATE_COPY_MAX_SIZE_KB;
|
|
9698
|
+
exports.APP_PRIVATE_COPY_NAME_ATTEMPTS = APP_PRIVATE_COPY_NAME_ATTEMPTS;
|
|
9699
|
+
exports.APP_PROVISIONING_DETECTION_SOURCES = APP_PROVISIONING_DETECTION_SOURCES;
|
|
9700
|
+
exports.APP_PROVISIONING_FAILURE_REASONS = APP_PROVISIONING_FAILURE_REASONS;
|
|
9701
|
+
exports.APP_PROVISIONING_FAILURE_REASON_I18N_KEY = APP_PROVISIONING_FAILURE_REASON_I18N_KEY;
|
|
9702
|
+
exports.APP_PROVISIONING_OPTION_I18N_KEY = APP_PROVISIONING_OPTION_I18N_KEY;
|
|
9703
|
+
exports.APP_PROVISIONING_PARK_REASONS = APP_PROVISIONING_PARK_REASONS;
|
|
9704
|
+
exports.APP_PROVISIONING_QUESTION_REASONS = APP_PROVISIONING_QUESTION_REASONS;
|
|
9705
|
+
exports.APP_PROVISIONING_QUESTION_REASON_I18N_KEY = APP_PROVISIONING_QUESTION_REASON_I18N_KEY;
|
|
9706
|
+
exports.APP_PROVISIONING_QUEUED_REASON_I18N_KEY = APP_PROVISIONING_QUEUED_REASON_I18N_KEY;
|
|
9707
|
+
exports.APP_PROVISIONING_STATUSES = APP_PROVISIONING_STATUSES;
|
|
9708
|
+
exports.APP_PROVISIONING_STEPS = APP_PROVISIONING_STEPS;
|
|
9709
|
+
exports.APP_PROVISIONING_STEP_STATES = APP_PROVISIONING_STEP_STATES;
|
|
9710
|
+
exports.APP_PROVISION_CHAT_ATTEMPT_RED = APP_PROVISION_CHAT_ATTEMPT_RED;
|
|
9711
|
+
exports.APP_PROVISION_CHAT_FAILED = APP_PROVISION_CHAT_FAILED;
|
|
9712
|
+
exports.APP_PROVISION_CHAT_NEEDS_INPUT = APP_PROVISION_CHAT_NEEDS_INPUT;
|
|
9713
|
+
exports.APP_PROVISION_CHAT_PROPOSED = APP_PROVISION_CHAT_PROPOSED;
|
|
9714
|
+
exports.APP_PROVISION_CHAT_STARTED = APP_PROVISION_CHAT_STARTED;
|
|
9715
|
+
exports.APP_PROVISION_CHAT_SUCCEEDED = APP_PROVISION_CHAT_SUCCEEDED;
|
|
9716
|
+
exports.APP_PROVISION_CHAT_TEMPLATES = APP_PROVISION_CHAT_TEMPLATES;
|
|
9717
|
+
exports.APP_PROVISION_COPY_PARAMS = APP_PROVISION_COPY_PARAMS;
|
|
9718
|
+
exports.APP_PROVISION_COPY_TEMPLATES = APP_PROVISION_COPY_TEMPLATES;
|
|
9719
|
+
exports.APP_PROVISION_EVIDENCE_ATTEMPT = APP_PROVISION_EVIDENCE_ATTEMPT;
|
|
9720
|
+
exports.APP_PROVISION_EVIDENCE_BUILD_LOG = APP_PROVISION_EVIDENCE_BUILD_LOG;
|
|
9721
|
+
exports.APP_PROVISION_EVIDENCE_DURATION = APP_PROVISION_EVIDENCE_DURATION;
|
|
9722
|
+
exports.APP_PROVISION_EVIDENCE_HEADINGS = APP_PROVISION_EVIDENCE_HEADINGS;
|
|
9723
|
+
exports.APP_PROVISION_EVIDENCE_IMAGE_DIGEST = APP_PROVISION_EVIDENCE_IMAGE_DIGEST;
|
|
9724
|
+
exports.APP_PROVISION_EVIDENCE_SMOKE = APP_PROVISION_EVIDENCE_SMOKE;
|
|
9725
|
+
exports.APP_PROVISION_EVIDENCE_SPEND = APP_PROVISION_EVIDENCE_SPEND;
|
|
9726
|
+
exports.APP_PROVISION_EVIDENCE_STEP = APP_PROVISION_EVIDENCE_STEP;
|
|
9727
|
+
exports.APP_PROVISION_EVIDENCE_TARGET = APP_PROVISION_EVIDENCE_TARGET;
|
|
9728
|
+
exports.APP_PROVISION_EVIDENCE_VERDICT = APP_PROVISION_EVIDENCE_VERDICT;
|
|
9729
|
+
exports.APP_PROVISION_LIMITS = APP_PROVISION_LIMITS;
|
|
9730
|
+
exports.APP_PROVISION_OPTION_ACCEPT_BUILD_ONLY = APP_PROVISION_OPTION_ACCEPT_BUILD_ONLY;
|
|
9731
|
+
exports.APP_PROVISION_OPTION_CHOOSE = APP_PROVISION_OPTION_CHOOSE;
|
|
9732
|
+
exports.APP_PROVISION_OPTION_LABELS = APP_PROVISION_OPTION_LABELS;
|
|
9733
|
+
exports.APP_PROVISION_OPTION_OPTIONAL = APP_PROVISION_OPTION_OPTIONAL;
|
|
9734
|
+
exports.APP_PROVISION_OPTION_RAISE_CAP_MINUTES = APP_PROVISION_OPTION_RAISE_CAP_MINUTES;
|
|
9735
|
+
exports.APP_PROVISION_OPTION_RAISE_CAP_TOKENS = APP_PROVISION_OPTION_RAISE_CAP_TOKENS;
|
|
9736
|
+
exports.APP_PROVISION_OPTION_RETRY = APP_PROVISION_OPTION_RETRY;
|
|
9737
|
+
exports.APP_PROVISION_OPTION_RETRY_AFTER_SETTING = APP_PROVISION_OPTION_RETRY_AFTER_SETTING;
|
|
9738
|
+
exports.APP_PROVISION_OPTION_STOP = APP_PROVISION_OPTION_STOP;
|
|
9739
|
+
exports.APP_PROVISION_OPTION_VERIFY_ON_CLUSTER = APP_PROVISION_OPTION_VERIFY_ON_CLUSTER;
|
|
9740
|
+
exports.APP_PROVISION_PRESERVED_SPEC_FIELDS = APP_PROVISION_PRESERVED_SPEC_FIELDS;
|
|
9741
|
+
exports.APP_PROVISION_QUESTION_SUBJECTS = APP_PROVISION_QUESTION_SUBJECTS;
|
|
9742
|
+
exports.APP_PROVISION_QUESTION_SUBJECT_AGENT_ASKED = APP_PROVISION_QUESTION_SUBJECT_AGENT_ASKED;
|
|
9743
|
+
exports.APP_PROVISION_QUESTION_SUBJECT_ATTEMPTS_SPENT = APP_PROVISION_QUESTION_SUBJECT_ATTEMPTS_SPENT;
|
|
9744
|
+
exports.APP_PROVISION_QUESTION_SUBJECT_MISSING_REQUIRED_VALUE = APP_PROVISION_QUESTION_SUBJECT_MISSING_REQUIRED_VALUE;
|
|
9745
|
+
exports.APP_PROVISION_QUESTION_SUBJECT_MULTIPLE_APPS = APP_PROVISION_QUESTION_SUBJECT_MULTIPLE_APPS;
|
|
9746
|
+
exports.APP_PROVISION_QUESTION_SUBJECT_PREFIX = APP_PROVISION_QUESTION_SUBJECT_PREFIX;
|
|
9747
|
+
exports.APP_PROVISION_QUESTION_SUBJECT_REPEATED_FAILURE = APP_PROVISION_QUESTION_SUBJECT_REPEATED_FAILURE;
|
|
9748
|
+
exports.APP_PROVISION_QUESTION_SUBJECT_RUNNER_CAPACITY = APP_PROVISION_QUESTION_SUBJECT_RUNNER_CAPACITY;
|
|
9749
|
+
exports.APP_PROVISION_QUESTION_SUBJECT_RUNNER_MINUTE_CAP = APP_PROVISION_QUESTION_SUBJECT_RUNNER_MINUTE_CAP;
|
|
9750
|
+
exports.APP_PROVISION_QUESTION_SUBJECT_SAFETY_RAIL = APP_PROVISION_QUESTION_SUBJECT_SAFETY_RAIL;
|
|
9751
|
+
exports.APP_PROVISION_QUESTION_SUBJECT_TOKEN_CAP = APP_PROVISION_QUESTION_SUBJECT_TOKEN_CAP;
|
|
9752
|
+
exports.APP_PROVISION_QUEUED_REASON_ORG_LIMIT = APP_PROVISION_QUEUED_REASON_ORG_LIMIT;
|
|
9753
|
+
exports.APP_PROVISION_QUEUED_REASON_TEXTS = APP_PROVISION_QUEUED_REASON_TEXTS;
|
|
9754
|
+
exports.APP_PROVISION_QUEUED_REASON_USER_LIMIT = APP_PROVISION_QUEUED_REASON_USER_LIMIT;
|
|
9755
|
+
exports.APP_PROVISION_RAISE_CAP_LABELS = APP_PROVISION_RAISE_CAP_LABELS;
|
|
9756
|
+
exports.APP_PROVISION_REASON_TEXTS = APP_PROVISION_REASON_TEXTS;
|
|
9757
|
+
exports.APP_PROVISION_REASON_TEXT_COULD_NOT_VERIFY = APP_PROVISION_REASON_TEXT_COULD_NOT_VERIFY;
|
|
9758
|
+
exports.APP_PROVISION_REASON_TEXT_DEADLINE = APP_PROVISION_REASON_TEXT_DEADLINE;
|
|
9759
|
+
exports.APP_PROVISION_REASON_TEXT_NOT_RUNNABLE = APP_PROVISION_REASON_TEXT_NOT_RUNNABLE;
|
|
9760
|
+
exports.APP_PROVISION_REASON_TEXT_NO_ANSWER = APP_PROVISION_REASON_TEXT_NO_ANSWER;
|
|
9761
|
+
exports.APP_PROVISION_REASON_TEXT_NO_ISOLATED_RUNTIME = APP_PROVISION_REASON_TEXT_NO_ISOLATED_RUNTIME;
|
|
9762
|
+
exports.APP_PROVISION_REASON_TEXT_PRIVATE_REPOSITORY = APP_PROVISION_REASON_TEXT_PRIVATE_REPOSITORY;
|
|
9763
|
+
exports.APP_PROVISION_REASON_TEXT_REPOSITORY_NOT_READY = APP_PROVISION_REASON_TEXT_REPOSITORY_NOT_READY;
|
|
9764
|
+
exports.APP_PROVISION_REASON_TEXT_REPOSITORY_TOO_LARGE = APP_PROVISION_REASON_TEXT_REPOSITORY_TOO_LARGE;
|
|
9765
|
+
exports.APP_PROVISION_REASON_TEXT_RUNNER_MINUTE_CAP = APP_PROVISION_REASON_TEXT_RUNNER_MINUTE_CAP;
|
|
9766
|
+
exports.APP_PROVISION_REASON_TEXT_TOKEN_CAP = APP_PROVISION_REASON_TEXT_TOKEN_CAP;
|
|
9767
|
+
exports.APP_PROVISION_REASON_TEXT_VERIFICATION_INFRASTRUCTURE = APP_PROVISION_REASON_TEXT_VERIFICATION_INFRASTRUCTURE;
|
|
9768
|
+
exports.APP_PROVISION_REMINDER_BODY = APP_PROVISION_REMINDER_BODY;
|
|
9769
|
+
exports.APP_PROVISION_REMINDER_TITLE = APP_PROVISION_REMINDER_TITLE;
|
|
9770
|
+
exports.APP_PROVISION_WRITABLE_PATHS = APP_PROVISION_WRITABLE_PATHS;
|
|
9771
|
+
exports.APP_PUBLISH_TIMEOUT_S = APP_PUBLISH_TIMEOUT_S;
|
|
9772
|
+
exports.APP_QUOTA_SCOPES = APP_QUOTA_SCOPES;
|
|
9773
|
+
exports.APP_RATE_LIMITED_PERSISTENT_AFTER = APP_RATE_LIMITED_PERSISTENT_AFTER;
|
|
9774
|
+
exports.APP_RATE_LIMIT_BACKOFF_BASE_MS = APP_RATE_LIMIT_BACKOFF_BASE_MS;
|
|
9775
|
+
exports.APP_RATE_LIMIT_BACKOFF_MAX_MS = APP_RATE_LIMIT_BACKOFF_MAX_MS;
|
|
9776
|
+
exports.APP_RATE_LIMIT_MIN_REMAINING = APP_RATE_LIMIT_MIN_REMAINING;
|
|
9777
|
+
exports.APP_RATE_LIMIT_RESET_GRACE_MS = APP_RATE_LIMIT_RESET_GRACE_MS;
|
|
9778
|
+
exports.APP_READINESS_FAILURE_REASONS = APP_READINESS_FAILURE_REASONS;
|
|
9779
|
+
exports.APP_READINESS_STATES = APP_READINESS_STATES;
|
|
9780
|
+
exports.APP_REMOVE_TIMEOUT_S = APP_REMOVE_TIMEOUT_S;
|
|
9781
|
+
exports.APP_REPOSITORY_MODES = APP_REPOSITORY_MODES;
|
|
9782
|
+
exports.APP_REPOSITORY_STAGES = APP_REPOSITORY_STAGES;
|
|
9783
|
+
exports.APP_REPOSITORY_STAGES_WITHOUT_SPEC_LIMIT = APP_REPOSITORY_STAGES_WITHOUT_SPEC_LIMIT;
|
|
9784
|
+
exports.APP_REPOSITORY_STAGE_LIMITS = APP_REPOSITORY_STAGE_LIMITS;
|
|
9785
|
+
exports.APP_REPOSITORY_STAGE_REFUSAL_CODES = APP_REPOSITORY_STAGE_REFUSAL_CODES;
|
|
9786
|
+
exports.APP_REPOSITORY_URL_MAX_LENGTH = APP_REPOSITORY_URL_MAX_LENGTH;
|
|
9787
|
+
exports.APP_ROLLBACK_CANDIDATES = APP_ROLLBACK_CANDIDATES;
|
|
9788
|
+
exports.APP_ROLLOUT_EXTRA_S = APP_ROLLOUT_EXTRA_S;
|
|
9789
|
+
exports.APP_ROLLOUT_MAX_S = APP_ROLLOUT_MAX_S;
|
|
9790
|
+
exports.APP_ROLLOUT_MIN_S = APP_ROLLOUT_MIN_S;
|
|
9791
|
+
exports.APP_ROLLOUT_POLL_S = APP_ROLLOUT_POLL_S;
|
|
9792
|
+
exports.APP_ROLLOUT_RESTARTS_FAIL = APP_ROLLOUT_RESTARTS_FAIL;
|
|
9793
|
+
exports.APP_ROLLOUT_STUCK_POD_S = APP_ROLLOUT_STUCK_POD_S;
|
|
9794
|
+
exports.APP_RUNTIME_HEALTH = APP_RUNTIME_HEALTH;
|
|
9795
|
+
exports.APP_RUNTIME_STATES = APP_RUNTIME_STATES;
|
|
9796
|
+
exports.APP_SETUP_PR_CHECK_BATCH = APP_SETUP_PR_CHECK_BATCH;
|
|
9797
|
+
exports.APP_SETUP_PR_CHECK_ON_VIEW_MIN_INTERVAL_MS = APP_SETUP_PR_CHECK_ON_VIEW_MIN_INTERVAL_MS;
|
|
9798
|
+
exports.APP_SMOKE_BODY_BYTES = APP_SMOKE_BODY_BYTES;
|
|
9799
|
+
exports.APP_SMOKE_FOUND_CHARS = APP_SMOKE_FOUND_CHARS;
|
|
9800
|
+
exports.APP_SMOKE_IN_CLUSTER_WINDOW_S = APP_SMOKE_IN_CLUSTER_WINDOW_S;
|
|
9801
|
+
exports.APP_SMOKE_PUBLIC_FIRST_WINDOW_S = APP_SMOKE_PUBLIC_FIRST_WINDOW_S;
|
|
9802
|
+
exports.APP_SMOKE_PUBLIC_WINDOW_S = APP_SMOKE_PUBLIC_WINDOW_S;
|
|
9803
|
+
exports.APP_SMOKE_RETRY_S = APP_SMOKE_RETRY_S;
|
|
9804
|
+
exports.APP_SOURCE_BLUEPRINT_MATCH_SOURCES = APP_SOURCE_BLUEPRINT_MATCH_SOURCES;
|
|
9805
|
+
exports.APP_SOURCE_BLUEPRINT_STATUSES = APP_SOURCE_BLUEPRINT_STATUSES;
|
|
9806
|
+
exports.APP_SOURCE_LICENSE_CLASSES = APP_SOURCE_LICENSE_CLASSES;
|
|
9807
|
+
exports.APP_SOURCE_LICENSE_SOURCES = APP_SOURCE_LICENSE_SOURCES;
|
|
9808
|
+
exports.APP_SOURCE_REASON_CODES = APP_SOURCE_REASON_CODES;
|
|
9809
|
+
exports.APP_SOURCE_REPOSITORY_NAME_SUFFIXES = APP_SOURCE_REPOSITORY_NAME_SUFFIXES;
|
|
9810
|
+
exports.APP_SOURCE_REPOSITORY_TYPES = APP_SOURCE_REPOSITORY_TYPES;
|
|
9811
|
+
exports.APP_SOURCE_REPOSITORY_TYPE_BY_MODE = APP_SOURCE_REPOSITORY_TYPE_BY_MODE;
|
|
9812
|
+
exports.APP_SOURCE_SPEC_FILE = APP_SOURCE_SPEC_FILE;
|
|
9813
|
+
exports.APP_SOURCE_SPEC_KIND = APP_SOURCE_SPEC_KIND;
|
|
9814
|
+
exports.APP_SOURCE_SPEC_VERSION = APP_SOURCE_SPEC_VERSION;
|
|
9815
|
+
exports.APP_SPEC_BLOCK_DEFAULTS = APP_SPEC_BLOCK_DEFAULTS;
|
|
9816
|
+
exports.APP_SPEC_BUILD_STRATEGIES = APP_SPEC_BUILD_STRATEGIES;
|
|
9817
|
+
exports.APP_SPEC_COMPONENT_ROLES = APP_SPEC_COMPONENT_ROLES;
|
|
9818
|
+
exports.APP_SPEC_CRON_CONCURRENCIES = APP_SPEC_CRON_CONCURRENCIES;
|
|
9819
|
+
exports.APP_SPEC_DOMAIN_CHANGES = APP_SPEC_DOMAIN_CHANGES;
|
|
9820
|
+
exports.APP_SPEC_DRAFT_VALIDATE_PER_MIN = APP_SPEC_DRAFT_VALIDATE_PER_MIN;
|
|
9821
|
+
exports.APP_SPEC_ENV_PHASES = APP_SPEC_ENV_PHASES;
|
|
9822
|
+
exports.APP_SPEC_EVALUATE_COALESCE_MS = APP_SPEC_EVALUATE_COALESCE_MS;
|
|
9823
|
+
exports.APP_SPEC_EVALUATION_TRIGGERS = APP_SPEC_EVALUATION_TRIGGERS;
|
|
9824
|
+
exports.APP_SPEC_EXTENSION_KEY_PREFIX = APP_SPEC_EXTENSION_KEY_PREFIX;
|
|
9825
|
+
exports.APP_SPEC_FILE_MAX_BYTES = APP_SPEC_FILE_MAX_BYTES;
|
|
9826
|
+
exports.APP_SPEC_GENERATE_ALPHABETS = APP_SPEC_GENERATE_ALPHABETS;
|
|
9827
|
+
exports.APP_SPEC_GENERATE_KINDS = APP_SPEC_GENERATE_KINDS;
|
|
9828
|
+
exports.APP_SPEC_GENERATE_ROTATIONS = APP_SPEC_GENERATE_ROTATIONS;
|
|
9829
|
+
exports.APP_SPEC_HTTP_AUTH_SCHEMES = APP_SPEC_HTTP_AUTH_SCHEMES;
|
|
9830
|
+
exports.APP_SPEC_HTTP_METHODS = APP_SPEC_HTTP_METHODS;
|
|
9831
|
+
exports.APP_SPEC_ISSUE_CODES = APP_SPEC_ISSUE_CODES;
|
|
9832
|
+
exports.APP_SPEC_JOB_WHENS = APP_SPEC_JOB_WHENS;
|
|
9833
|
+
exports.APP_SPEC_KEYPAIR_FORMATS = APP_SPEC_KEYPAIR_FORMATS;
|
|
9834
|
+
exports.APP_SPEC_KEYPAIR_TYPES = APP_SPEC_KEYPAIR_TYPES;
|
|
9835
|
+
exports.APP_SPEC_LAZY_HEAD_CHECK_MS = APP_SPEC_LAZY_HEAD_CHECK_MS;
|
|
9836
|
+
exports.APP_SPEC_MAX_DEPTH = APP_SPEC_MAX_DEPTH;
|
|
9837
|
+
exports.APP_SPEC_MAX_ISSUES = APP_SPEC_MAX_ISSUES;
|
|
9838
|
+
exports.APP_SPEC_MAX_PROTECTED_PATHS = APP_SPEC_MAX_PROTECTED_PATHS;
|
|
9839
|
+
exports.APP_SPEC_MAX_REQUIRE_HUMAN_MERGE_PATHS = APP_SPEC_MAX_REQUIRE_HUMAN_MERGE_PATHS;
|
|
9840
|
+
exports.APP_SPEC_POSTGRES_VERSIONS = APP_SPEC_POSTGRES_VERSIONS;
|
|
9841
|
+
exports.APP_SPEC_PROBE_KINDS = APP_SPEC_PROBE_KINDS;
|
|
9842
|
+
exports.APP_SPEC_PUBLIC_KEY_SUFFIX = APP_SPEC_PUBLIC_KEY_SUFFIX;
|
|
9843
|
+
exports.APP_SPEC_REDIS_MAXMEMORY_POLICIES = APP_SPEC_REDIS_MAXMEMORY_POLICIES;
|
|
9844
|
+
exports.APP_SPEC_REDIS_VERSIONS = APP_SPEC_REDIS_VERSIONS;
|
|
9845
|
+
exports.APP_SPEC_REFRESH_PER_MIN = APP_SPEC_REFRESH_PER_MIN;
|
|
9846
|
+
exports.APP_SPEC_SEVERITIES = APP_SPEC_SEVERITIES;
|
|
9847
|
+
exports.APP_SPEC_SMOKE_HTTP_METHODS = APP_SPEC_SMOKE_HTTP_METHODS;
|
|
9848
|
+
exports.APP_SPEC_SMOKE_WHENS = APP_SPEC_SMOKE_WHENS;
|
|
9849
|
+
exports.APP_SPEC_SOURCE_ONLY_KEYS = APP_SPEC_SOURCE_ONLY_KEYS;
|
|
9850
|
+
exports.APP_SPEC_SOURCE_RELATIONS = APP_SPEC_SOURCE_RELATIONS;
|
|
9851
|
+
exports.APP_SPEC_SUGGESTION_MAX_DISTANCE = APP_SPEC_SUGGESTION_MAX_DISTANCE;
|
|
9852
|
+
exports.APP_SPEC_UPSTREAM_SYNC_MODES = APP_SPEC_UPSTREAM_SYNC_MODES;
|
|
9853
|
+
exports.APP_SPEC_VALIDATION_MODES = APP_SPEC_VALIDATION_MODES;
|
|
9854
|
+
exports.APP_SPEC_VALIDATION_STATUSES = APP_SPEC_VALIDATION_STATUSES;
|
|
9855
|
+
exports.APP_SPEC_VERSION = APP_SPEC_VERSION;
|
|
9856
|
+
exports.APP_SPEC_YAML_MAX_ALIASES = APP_SPEC_YAML_MAX_ALIASES;
|
|
9857
|
+
exports.APP_STATUS_REFRESH_MIN_S = APP_STATUS_REFRESH_MIN_S;
|
|
9858
|
+
exports.APP_STATUS_STALE_S = APP_STATUS_STALE_S;
|
|
9859
|
+
exports.APP_SUBDOMAIN_LABEL_MIN = APP_SUBDOMAIN_LABEL_MIN;
|
|
9860
|
+
exports.APP_SYNC_REASONS = APP_SYNC_REASONS;
|
|
9861
|
+
exports.APP_SYNC_RESULTS = APP_SYNC_RESULTS;
|
|
9862
|
+
exports.APP_TARGET_OWNER_SCAN_LIMIT_P1 = APP_TARGET_OWNER_SCAN_LIMIT_P1;
|
|
9863
|
+
exports.APP_TARGET_OWNER_SCAN_LIMIT_P2 = APP_TARGET_OWNER_SCAN_LIMIT_P2;
|
|
9864
|
+
exports.APP_TMP_SIZE_MI = APP_TMP_SIZE_MI;
|
|
9865
|
+
exports.APP_UPSTREAM_CONFLICT_LABEL_PREFIX = APP_UPSTREAM_CONFLICT_LABEL_PREFIX;
|
|
9866
|
+
exports.APP_UPSTREAM_CONFLICT_MAX_PATHS = APP_UPSTREAM_CONFLICT_MAX_PATHS;
|
|
9867
|
+
exports.APP_UPSTREAM_STATUSES = APP_UPSTREAM_STATUSES;
|
|
9868
|
+
exports.APP_UPSTREAM_SYNC_ACK_BUDGET_MS = APP_UPSTREAM_SYNC_ACK_BUDGET_MS;
|
|
9869
|
+
exports.APP_UPSTREAM_SYNC_BRANCH = APP_UPSTREAM_SYNC_BRANCH;
|
|
9870
|
+
exports.APP_UPSTREAM_SYNC_DEFAULT_SCHEDULE = APP_UPSTREAM_SYNC_DEFAULT_SCHEDULE;
|
|
9871
|
+
exports.APP_UPSTREAM_SYNC_DISPATCH_BATCH = APP_UPSTREAM_SYNC_DISPATCH_BATCH;
|
|
9872
|
+
exports.APP_UPSTREAM_SYNC_DISPATCH_CRON = APP_UPSTREAM_SYNC_DISPATCH_CRON;
|
|
9873
|
+
exports.APP_UPSTREAM_SYNC_JITTER_MAX_MS = APP_UPSTREAM_SYNC_JITTER_MAX_MS;
|
|
9874
|
+
exports.APP_UPSTREAM_SYNC_LOCK_TTL_MS = APP_UPSTREAM_SYNC_LOCK_TTL_MS;
|
|
9875
|
+
exports.APP_UPSTREAM_SYNC_MANUAL_PER_HOUR = APP_UPSTREAM_SYNC_MANUAL_PER_HOUR;
|
|
9876
|
+
exports.APP_UPSTREAM_SYNC_MAX_PROVIDER_CALLS = APP_UPSTREAM_SYNC_MAX_PROVIDER_CALLS;
|
|
9877
|
+
exports.APP_UPSTREAM_SYNC_MIN_INTERVAL_MS = APP_UPSTREAM_SYNC_MIN_INTERVAL_MS;
|
|
9878
|
+
exports.APP_UPSTREAM_UNAVAILABLE_RECHECK_MS = APP_UPSTREAM_UNAVAILABLE_RECHECK_MS;
|
|
9879
|
+
exports.APP_UPSTREAM_WARNING_CODES = APP_UPSTREAM_WARNING_CODES;
|
|
9880
|
+
exports.APP_VERIFICATION_COMPONENT_ROLES = APP_VERIFICATION_COMPONENT_ROLES;
|
|
9881
|
+
exports.APP_VERIFICATION_DEPENDENCY_CONTAINERS = APP_VERIFICATION_DEPENDENCY_CONTAINERS;
|
|
9882
|
+
exports.APP_VERIFICATION_DEPENDENCY_KINDS = APP_VERIFICATION_DEPENDENCY_KINDS;
|
|
9883
|
+
exports.APP_VERIFICATION_HTTP_METHODS = APP_VERIFICATION_HTTP_METHODS;
|
|
9884
|
+
exports.APP_VERIFICATION_JOB_PHASES = APP_VERIFICATION_JOB_PHASES;
|
|
9885
|
+
exports.APP_VERIFICATION_PLAN_VERSION = APP_VERIFICATION_PLAN_VERSION;
|
|
9886
|
+
exports.APP_VERIFICATION_PROBE_KINDS = APP_VERIFICATION_PROBE_KINDS;
|
|
9887
|
+
exports.APP_VERIFICATION_SMOKE_WHENS = APP_VERIFICATION_SMOKE_WHENS;
|
|
9888
|
+
exports.APP_WORKER_STABLE_S = APP_WORKER_STABLE_S;
|
|
9889
|
+
exports.APP_WORK_QUOTA_CAPS = APP_WORK_QUOTA_CAPS;
|
|
9890
|
+
exports.APP_WORK_REPOSITORY_ROLE = APP_WORK_REPOSITORY_ROLE;
|
|
6050
9891
|
exports.ATTENTION_TARGET_CLASSES = ATTENTION_TARGET_CLASSES;
|
|
9892
|
+
exports.ATTESTATION_NOTICE_DAYS = ATTESTATION_NOTICE_DAYS;
|
|
9893
|
+
exports.ATTESTATION_TTL_DAYS = ATTESTATION_TTL_DAYS;
|
|
6051
9894
|
exports.AUTONOMY_GRANT_SCOPE_PRECEDENCE = AUTONOMY_GRANT_SCOPE_PRECEDENCE;
|
|
6052
9895
|
exports.AUTO_RECHARGE_MAX_CONSECUTIVE_FAILURES = AUTO_RECHARGE_MAX_CONSECUTIVE_FAILURES;
|
|
6053
9896
|
exports.AUTO_RECHARGE_MONTHLY_CAP_DEFAULT_CENTS = AUTO_RECHARGE_MONTHLY_CAP_DEFAULT_CENTS;
|
|
@@ -6063,8 +9906,23 @@ exports.BACKUP_FORMAT_VERSION = BACKUP_FORMAT_VERSION;
|
|
|
6063
9906
|
exports.BACKUP_FULL_HISTORY_CEILING_DAYS = BACKUP_FULL_HISTORY_CEILING_DAYS;
|
|
6064
9907
|
exports.BACKUP_MANIFEST_SENTINEL_FIELDS = BACKUP_MANIFEST_SENTINEL_FIELDS;
|
|
6065
9908
|
exports.BACKUP_TRIM_POLICIES = BACKUP_TRIM_POLICIES;
|
|
9909
|
+
exports.BLUEPRINT_ALTERNATIVES_MAX = BLUEPRINT_ALTERNATIVES_MAX;
|
|
9910
|
+
exports.BLUEPRINT_APPLY_PER_HOUR = BLUEPRINT_APPLY_PER_HOUR;
|
|
9911
|
+
exports.BLUEPRINT_APPLY_RETRIES = BLUEPRINT_APPLY_RETRIES;
|
|
9912
|
+
exports.BLUEPRINT_MATCH_SOURCES = BLUEPRINT_MATCH_SOURCES;
|
|
9913
|
+
exports.BLUEPRINT_OVERLAY_FILE_MAX_BYTES = BLUEPRINT_OVERLAY_FILE_MAX_BYTES;
|
|
9914
|
+
exports.BLUEPRINT_OVERLAY_MAX_FILES = BLUEPRINT_OVERLAY_MAX_FILES;
|
|
9915
|
+
exports.BLUEPRINT_OVERLAY_TOTAL_MAX_BYTES = BLUEPRINT_OVERLAY_TOTAL_MAX_BYTES;
|
|
9916
|
+
exports.BLUEPRINT_PROBE_MAX_READS = BLUEPRINT_PROBE_MAX_READS;
|
|
9917
|
+
exports.BLUEPRINT_RESOLUTION_REASONS = BLUEPRINT_RESOLUTION_REASONS;
|
|
9918
|
+
exports.BLUEPRINT_RESOLVE_HIT_TTL_MS = BLUEPRINT_RESOLVE_HIT_TTL_MS;
|
|
9919
|
+
exports.BLUEPRINT_RESOLVE_MISS_TTL_MS = BLUEPRINT_RESOLVE_MISS_TTL_MS;
|
|
6066
9920
|
exports.BREAKDOWN_EVERYTHING_ELSE_KEY = BREAKDOWN_EVERYTHING_ELSE_KEY;
|
|
6067
9921
|
exports.BREAKDOWN_TOP_N = BREAKDOWN_TOP_N;
|
|
9922
|
+
exports.BUILD_SERVICE_DEFAULTS = BUILD_SERVICE_DEFAULTS;
|
|
9923
|
+
exports.BUILD_SERVICE_HEALTH_KINDS = BUILD_SERVICE_HEALTH_KINDS;
|
|
9924
|
+
exports.BUILD_SERVICE_HOST = BUILD_SERVICE_HOST;
|
|
9925
|
+
exports.BUILD_SERVICE_KINDS = BUILD_SERVICE_KINDS;
|
|
6068
9926
|
exports.CATALOG_SEARCH_MIN_CHARS = CATALOG_SEARCH_MIN_CHARS;
|
|
6069
9927
|
exports.COMPUTER_AUTO_REFRESH_AFTER_MS = COMPUTER_AUTO_REFRESH_AFTER_MS;
|
|
6070
9928
|
exports.COMPUTER_BLOCKED_SHORTCUTS = COMPUTER_BLOCKED_SHORTCUTS;
|
|
@@ -6156,6 +10014,7 @@ exports.DEFAULT_GOAL_KIND = DEFAULT_GOAL_KIND;
|
|
|
6156
10014
|
exports.DEFAULT_REASONING_EFFORT = DEFAULT_REASONING_EFFORT;
|
|
6157
10015
|
exports.DEFAULT_TASK_CHECK_PHASE = DEFAULT_TASK_CHECK_PHASE;
|
|
6158
10016
|
exports.DEFAULT_WORK_REPO_DECLARED_COMMAND_POLICY = DEFAULT_WORK_REPO_DECLARED_COMMAND_POLICY;
|
|
10017
|
+
exports.DETECTOR_QUARANTINE_MS = DETECTOR_QUARANTINE_MS;
|
|
6159
10018
|
exports.DRAFTABLE_CATEGORIES = DRAFTABLE_CATEGORIES;
|
|
6160
10019
|
exports.DomainType = DomainType;
|
|
6161
10020
|
exports.EMAIL_ADDRESS_ALIAS_GRACE_DAYS = EMAIL_ADDRESS_ALIAS_GRACE_DAYS;
|
|
@@ -6196,6 +10055,29 @@ exports.EMAIL_SEND_ORIGINS = EMAIL_SEND_ORIGINS;
|
|
|
6196
10055
|
exports.EMAIL_SEND_UNDO_GRACE_MS = EMAIL_SEND_UNDO_GRACE_MS;
|
|
6197
10056
|
exports.EMAIL_WORKSPACE_DAILY_CAP = EMAIL_WORKSPACE_DAILY_CAP;
|
|
6198
10057
|
exports.EMAIL_WORKSPACE_MONTHLY_CAP = EMAIL_WORKSPACE_MONTHLY_CAP;
|
|
10058
|
+
exports.EVER_ID_DEFAULT_API_AUDIENCE = EVER_ID_DEFAULT_API_AUDIENCE;
|
|
10059
|
+
exports.EVER_ID_DEFAULT_DISPLAY_NAME = EVER_ID_DEFAULT_DISPLAY_NAME;
|
|
10060
|
+
exports.EVER_ID_DELEGATED_AUTH_METHOD = EVER_ID_DELEGATED_AUTH_METHOD;
|
|
10061
|
+
exports.EVER_ID_DELEGATED_SCOPES = EVER_ID_DELEGATED_SCOPES;
|
|
10062
|
+
exports.EVER_ID_ERROR_CODE_WIRE_VALUES = EVER_ID_ERROR_CODE_WIRE_VALUES;
|
|
10063
|
+
exports.EVER_ID_LIMITS = EVER_ID_LIMITS;
|
|
10064
|
+
exports.EVER_ID_LINKED_VIA = EVER_ID_LINKED_VIA;
|
|
10065
|
+
exports.EVER_ID_QUERY_TOKEN_PARAMS = EVER_ID_QUERY_TOKEN_PARAMS;
|
|
10066
|
+
exports.EVER_ID_REGISTRATION_PROVIDER = EVER_ID_REGISTRATION_PROVIDER;
|
|
10067
|
+
exports.EVER_ID_SCOPES = EVER_ID_SCOPES;
|
|
10068
|
+
exports.EVER_ID_SIGNING_ALGS = EVER_ID_SIGNING_ALGS;
|
|
10069
|
+
exports.EVER_ID_WIRE_ERROR_CODES = EVER_ID_WIRE_ERROR_CODES;
|
|
10070
|
+
exports.EVER_PLATFORM_DEFAULT_API_URL = EVER_PLATFORM_DEFAULT_API_URL;
|
|
10071
|
+
exports.EVER_STATS_CHANNELS = EVER_STATS_CHANNELS;
|
|
10072
|
+
exports.EVER_STATS_KEY_HEADER = EVER_STATS_KEY_HEADER;
|
|
10073
|
+
exports.EVER_STATS_KEY_ID_HEADER = EVER_STATS_KEY_ID_HEADER;
|
|
10074
|
+
exports.EVER_STATS_MAX_BODY_BYTES = EVER_STATS_MAX_BODY_BYTES;
|
|
10075
|
+
exports.EVER_STATS_PRODUCTS = EVER_STATS_PRODUCTS;
|
|
10076
|
+
exports.EVER_STATS_REPORTS_PATH = EVER_STATS_REPORTS_PATH;
|
|
10077
|
+
exports.EVER_STATS_SIGNATURE_HEADER = EVER_STATS_SIGNATURE_HEADER;
|
|
10078
|
+
exports.EVER_STATS_SIGNATURE_PREFIX = EVER_STATS_SIGNATURE_PREFIX;
|
|
10079
|
+
exports.EVER_STATS_V1_SCHEMA_ID = EVER_STATS_V1_SCHEMA_ID;
|
|
10080
|
+
exports.EVER_STATS_V1_SOURCE = EVER_STATS_V1_SOURCE;
|
|
6199
10081
|
exports.FEED_ACTORS_WINDOW_HOURS_DEFAULT = FEED_ACTORS_WINDOW_HOURS_DEFAULT;
|
|
6200
10082
|
exports.FEED_ACTORS_WINDOW_HOURS_MAX = FEED_ACTORS_WINDOW_HOURS_MAX;
|
|
6201
10083
|
exports.FEED_ACTOR_KINDS = FEED_ACTOR_KINDS;
|
|
@@ -6346,11 +10228,14 @@ exports.GATE_JUDGE_MAX_REASON_CHARS = GATE_JUDGE_MAX_REASON_CHARS;
|
|
|
6346
10228
|
exports.GATE_JUDGE_MAX_UNMET_CHARS = GATE_JUDGE_MAX_UNMET_CHARS;
|
|
6347
10229
|
exports.GATE_JUDGE_MAX_UNMET_ENTRIES = GATE_JUDGE_MAX_UNMET_ENTRIES;
|
|
6348
10230
|
exports.GATE_JUDGE_VERDICTS = GATE_JUDGE_VERDICTS;
|
|
10231
|
+
exports.GATE_MAX_AGE_HOURS = GATE_MAX_AGE_HOURS;
|
|
6349
10232
|
exports.GATE_VERDICTS = GATE_VERDICTS;
|
|
10233
|
+
exports.GATE_WATCH_INTERVAL_MIN = GATE_WATCH_INTERVAL_MIN;
|
|
6350
10234
|
exports.GOAL_KINDS = GOAL_KINDS;
|
|
6351
10235
|
exports.GTM_SKILLS = GTM_SKILLS;
|
|
6352
10236
|
exports.GTM_SKILL_SLUGS = GTM_SKILL_SLUGS;
|
|
6353
10237
|
exports.GTM_SKILL_STAGES = GTM_SKILL_STAGES;
|
|
10238
|
+
exports.HEARTBEAT_MAX_AGE_MS = HEARTBEAT_MAX_AGE_MS;
|
|
6354
10239
|
exports.HELD_ACTION_EXPIRY_DAYS = HELD_ACTION_EXPIRY_DAYS;
|
|
6355
10240
|
exports.HELD_ACTION_WARN_DAYS = HELD_ACTION_WARN_DAYS;
|
|
6356
10241
|
exports.HITL_MAX_CONTEXT_CHARS = HITL_MAX_CONTEXT_CHARS;
|
|
@@ -6391,6 +10276,7 @@ exports.HOME_TODAY_DUE_MAX = HOME_TODAY_DUE_MAX;
|
|
|
6391
10276
|
exports.HOME_TODAY_RAN_MAX = HOME_TODAY_RAN_MAX;
|
|
6392
10277
|
exports.HOME_WAITING_WARN_HOURS = HOME_WAITING_WARN_HOURS;
|
|
6393
10278
|
exports.HOME_WORKING_NOW_MAX = HOME_WORKING_NOW_MAX;
|
|
10279
|
+
exports.IMAGE_ALLOWANCE_MAX_DAYS = IMAGE_ALLOWANCE_MAX_DAYS;
|
|
6394
10280
|
exports.INBOX_DECISION_DORMANT_AFTER_DAYS = INBOX_DECISION_DORMANT_AFTER_DAYS;
|
|
6395
10281
|
exports.INBOX_DECISION_KINDS = INBOX_DECISION_KINDS;
|
|
6396
10282
|
exports.INBOX_DECISION_MAX_LIMIT = INBOX_DECISION_MAX_LIMIT;
|
|
@@ -6452,6 +10338,26 @@ exports.KB_SYNTHESIS_PATH_PREFIX = KB_SYNTHESIS_PATH_PREFIX;
|
|
|
6452
10338
|
exports.KB_SYNTHESIS_TAG = KB_SYNTHESIS_TAG;
|
|
6453
10339
|
exports.KB_UPLOAD_EXTRACTION_STATUSES = KB_UPLOAD_EXTRACTION_STATUSES;
|
|
6454
10340
|
exports.LADDERED_CATEGORIES = LADDERED_CATEGORIES;
|
|
10341
|
+
exports.LAUNCH_GATE_ITEMS = LAUNCH_GATE_ITEMS;
|
|
10342
|
+
exports.LAUNCH_GATE_ITEM_IDS = LAUNCH_GATE_ITEM_IDS;
|
|
10343
|
+
exports.LAUNCH_GATE_KINDS = LAUNCH_GATE_KINDS;
|
|
10344
|
+
exports.LAUNCH_GATE_OUTCOMES = LAUNCH_GATE_OUTCOMES;
|
|
10345
|
+
exports.LAUNCH_GATE_PHASES = LAUNCH_GATE_PHASES;
|
|
10346
|
+
exports.LICENSE_ATTEST_PER_MIN = LICENSE_ATTEST_PER_MIN;
|
|
10347
|
+
exports.LICENSE_CLASSES = LICENSE_CLASSES;
|
|
10348
|
+
exports.LICENSE_CLASS_RANK = LICENSE_CLASS_RANK;
|
|
10349
|
+
exports.LICENSE_EVIDENCE_MAX = LICENSE_EVIDENCE_MAX;
|
|
10350
|
+
exports.LICENSE_HEADER_SCAN_BYTES = LICENSE_HEADER_SCAN_BYTES;
|
|
10351
|
+
exports.LICENSE_HOSTING_DECISIONS = LICENSE_HOSTING_DECISIONS;
|
|
10352
|
+
exports.LICENSE_MAX_FILE_READS = LICENSE_MAX_FILE_READS;
|
|
10353
|
+
exports.LICENSE_MIXED_DIR_NAMES = LICENSE_MIXED_DIR_NAMES;
|
|
10354
|
+
exports.LICENSE_MIXED_MAX_DEPTH = LICENSE_MIXED_MAX_DEPTH;
|
|
10355
|
+
exports.LICENSE_REGISTRY_SOURCES = LICENSE_REGISTRY_SOURCES;
|
|
10356
|
+
exports.LICENSE_SOURCES = LICENSE_SOURCES;
|
|
10357
|
+
exports.LICENSE_TEXT_MATCH_THRESHOLD = LICENSE_TEXT_MATCH_THRESHOLD;
|
|
10358
|
+
exports.LICENSE_TREE_MAX_ENTRIES = LICENSE_TREE_MAX_ENTRIES;
|
|
10359
|
+
exports.MANAGED_HOSTING_AVAILABILITIES = MANAGED_HOSTING_AVAILABILITIES;
|
|
10360
|
+
exports.MANAGED_HOSTING_REASONS = MANAGED_HOSTING_REASONS;
|
|
6455
10361
|
exports.MAX_ALWAYS_LOADED_WORKSPACE_FILES = MAX_ALWAYS_LOADED_WORKSPACE_FILES;
|
|
6456
10362
|
exports.MAX_ATTACHMENTS_PER_MESSAGE = MAX_ATTACHMENTS_PER_MESSAGE;
|
|
6457
10363
|
exports.MAX_BROADCAST_AGENTS = MAX_BROADCAST_AGENTS;
|
|
@@ -6522,6 +10428,8 @@ exports.PLAYBOOK_SLUG_PATTERN = PLAYBOOK_SLUG_PATTERN;
|
|
|
6522
10428
|
exports.PLAYBOOK_TEXT_LIMITS = PLAYBOOK_TEXT_LIMITS;
|
|
6523
10429
|
exports.PLAYBOOK_TRIGGER_KINDS = PLAYBOOK_TRIGGER_KINDS;
|
|
6524
10430
|
exports.PLAYBOOK_VERSION_PATTERN = PLAYBOOK_VERSION_PATTERN;
|
|
10431
|
+
exports.PROBE_ATTEMPTS = PROBE_ATTEMPTS;
|
|
10432
|
+
exports.PROBE_CONNECT_TIMEOUT_MS = PROBE_CONNECT_TIMEOUT_MS;
|
|
6525
10433
|
exports.PROMOTION_CARRY_DAYS = PROMOTION_CARRY_DAYS;
|
|
6526
10434
|
exports.PROMOTION_CARRY_MESSAGES = PROMOTION_CARRY_MESSAGES;
|
|
6527
10435
|
exports.PROMOTION_GATE_DECISION_GRACE_MS = PROMOTION_GATE_DECISION_GRACE_MS;
|
|
@@ -6532,6 +10440,10 @@ exports.PROMOTION_LANE_OPEN = PROMOTION_LANE_OPEN;
|
|
|
6532
10440
|
exports.PROMOTION_RUNGS = PROMOTION_RUNGS;
|
|
6533
10441
|
exports.PROMOTION_STATES = PROMOTION_STATES;
|
|
6534
10442
|
exports.PROMOTION_TASK_LABEL = PROMOTION_TASK_LABEL;
|
|
10443
|
+
exports.PULL_CREDENTIAL_MAX_MS = PULL_CREDENTIAL_MAX_MS;
|
|
10444
|
+
exports.QUARANTINE_EDGE_MS = QUARANTINE_EDGE_MS;
|
|
10445
|
+
exports.QUARANTINE_ISOLATE_MS = QUARANTINE_ISOLATE_MS;
|
|
10446
|
+
exports.QUARANTINE_SCALE_MS = QUARANTINE_SCALE_MS;
|
|
6535
10447
|
exports.QUEUED_REASON_WAITING_FOR_RUNNER = QUEUED_REASON_WAITING_FOR_RUNNER;
|
|
6536
10448
|
exports.RAIL_REFUSAL_COLLAPSE_THRESHOLD = RAIL_REFUSAL_COLLAPSE_THRESHOLD;
|
|
6537
10449
|
exports.RAIL_REFUSAL_PAGE_SIZE = RAIL_REFUSAL_PAGE_SIZE;
|
|
@@ -6547,6 +10459,7 @@ exports.READINESS_WINDOW_DAYS = READINESS_WINDOW_DAYS;
|
|
|
6547
10459
|
exports.REASONING_EFFORTS = REASONING_EFFORTS;
|
|
6548
10460
|
exports.RELEASE_BRANCH_MAX_LENGTH = RELEASE_BRANCH_MAX_LENGTH;
|
|
6549
10461
|
exports.RELEASE_ENVIRONMENTS = RELEASE_ENVIRONMENTS;
|
|
10462
|
+
exports.RELEASE_RESTORE_MS = RELEASE_RESTORE_MS;
|
|
6550
10463
|
exports.RELEASE_REVERT_TASK_LABEL = RELEASE_REVERT_TASK_LABEL;
|
|
6551
10464
|
exports.RELEASE_VERIFY_ATTEMPT_INTERVAL_MS = RELEASE_VERIFY_ATTEMPT_INTERVAL_MS;
|
|
6552
10465
|
exports.RELEASE_VERIFY_BUDGET_MS = RELEASE_VERIFY_BUDGET_MS;
|
|
@@ -6559,6 +10472,7 @@ exports.RELEASE_VERIFY_ROLLOUT_CONFIRMATIONS = RELEASE_VERIFY_ROLLOUT_CONFIRMATI
|
|
|
6559
10472
|
exports.RELEASE_VERIFY_SHA_EXPECT_LENGTH = RELEASE_VERIFY_SHA_EXPECT_LENGTH;
|
|
6560
10473
|
exports.RELEASE_VERIFY_STATES = RELEASE_VERIFY_STATES;
|
|
6561
10474
|
exports.RELEASE_VERIFY_URL_MAX_LENGTH = RELEASE_VERIFY_URL_MAX_LENGTH;
|
|
10475
|
+
exports.REMOVED_DATA_RETENTION_DAYS = REMOVED_DATA_RETENTION_DAYS;
|
|
6562
10476
|
exports.REPO_DECLARED_COMMANDS_MAX = REPO_DECLARED_COMMANDS_MAX;
|
|
6563
10477
|
exports.REPO_DECLARED_COMMAND_ID_PREFIX = REPO_DECLARED_COMMAND_ID_PREFIX;
|
|
6564
10478
|
exports.REQUIRE_HTTPS_FOR_CREDENTIALS_SETTING = REQUIRE_HTTPS_FOR_CREDENTIALS_SETTING;
|
|
@@ -6585,6 +10499,8 @@ exports.SAFETY_PAUSE_WRITES_PER_MINUTE = SAFETY_PAUSE_WRITES_PER_MINUTE;
|
|
|
6585
10499
|
exports.SAFETY_RAIL_ORDER = SAFETY_RAIL_ORDER;
|
|
6586
10500
|
exports.SAFETY_REASON_CODES = SAFETY_REASON_CODES;
|
|
6587
10501
|
exports.SAFETY_RUNG_WRITES_PER_MINUTE = SAFETY_RUNG_WRITES_PER_MINUTE;
|
|
10502
|
+
exports.SELF_CHECK_BUDGET_MS = SELF_CHECK_BUDGET_MS;
|
|
10503
|
+
exports.SELF_CHECK_INTERVAL_HOURS = SELF_CHECK_INTERVAL_HOURS;
|
|
6588
10504
|
exports.SHIPPED_DEFAULT_RUNG_POLICY = SHIPPED_DEFAULT_RUNG_POLICY;
|
|
6589
10505
|
exports.SKILL_CAPTURE_BODY_MAX_CHARS = SKILL_CAPTURE_BODY_MAX_CHARS;
|
|
6590
10506
|
exports.SKILL_CAPTURE_BODY_MIN_CHARS = SKILL_CAPTURE_BODY_MIN_CHARS;
|
|
@@ -6618,6 +10534,7 @@ exports.SPEND_CAP_MIN_CENTS = SPEND_CAP_MIN_CENTS;
|
|
|
6618
10534
|
exports.SPEND_CAP_PROPAGATION_MS = SPEND_CAP_PROPAGATION_MS;
|
|
6619
10535
|
exports.SPEND_CAP_THRESHOLDS = SPEND_CAP_THRESHOLDS;
|
|
6620
10536
|
exports.STALE_PRICE_DELTA = STALE_PRICE_DELTA;
|
|
10537
|
+
exports.STATS_SEND_ERROR_CODES = STATS_SEND_ERROR_CODES;
|
|
6621
10538
|
exports.SUB_AGENT_DELEGATION_REFUSAL_CODES = SUB_AGENT_DELEGATION_REFUSAL_CODES;
|
|
6622
10539
|
exports.SUB_AGENT_DELEGATION_STATUSES = SUB_AGENT_DELEGATION_STATUSES;
|
|
6623
10540
|
exports.SUB_AGENT_MAX_DELEGATION_DEPTH = SUB_AGENT_MAX_DELEGATION_DEPTH;
|
|
@@ -6647,6 +10564,16 @@ exports.TASK_MAX_EXTRA_REPOS = TASK_MAX_EXTRA_REPOS;
|
|
|
6647
10564
|
exports.TASK_PROVENANCE_PRECEDENCE = TASK_PROVENANCE_PRECEDENCE;
|
|
6648
10565
|
exports.TASK_PROVENANCE_VISIBLE_CHIPS = TASK_PROVENANCE_VISIBLE_CHIPS;
|
|
6649
10566
|
exports.TASK_RUN_FINISHED_STATUSES = TASK_RUN_FINISHED_STATUSES;
|
|
10567
|
+
exports.TENANT_POSTGRES_DATABASE_CONNECTION_LIMIT = TENANT_POSTGRES_DATABASE_CONNECTION_LIMIT;
|
|
10568
|
+
exports.TENANT_POSTGRES_DATABASE_PREFIX = TENANT_POSTGRES_DATABASE_PREFIX;
|
|
10569
|
+
exports.TENANT_POSTGRES_DDL_REFUSALS = TENANT_POSTGRES_DDL_REFUSALS;
|
|
10570
|
+
exports.TENANT_POSTGRES_DEFAULT_PORT = TENANT_POSTGRES_DEFAULT_PORT;
|
|
10571
|
+
exports.TENANT_POSTGRES_IDLE_IN_TRANSACTION_TIMEOUT_MS = TENANT_POSTGRES_IDLE_IN_TRANSACTION_TIMEOUT_MS;
|
|
10572
|
+
exports.TENANT_POSTGRES_PASSWORD_PATTERN = TENANT_POSTGRES_PASSWORD_PATTERN;
|
|
10573
|
+
exports.TENANT_POSTGRES_ROLE_ATTRIBUTES = TENANT_POSTGRES_ROLE_ATTRIBUTES;
|
|
10574
|
+
exports.TENANT_POSTGRES_ROLE_CONNECTION_LIMIT = TENANT_POSTGRES_ROLE_CONNECTION_LIMIT;
|
|
10575
|
+
exports.TENANT_POSTGRES_ROLE_PREFIX = TENANT_POSTGRES_ROLE_PREFIX;
|
|
10576
|
+
exports.TENANT_POSTGRES_STATEMENT_TIMEOUT_MS = TENANT_POSTGRES_STATEMENT_TIMEOUT_MS;
|
|
6650
10577
|
exports.TERMINAL_CLIENT_TO_SERVER_KINDS = TERMINAL_CLIENT_TO_SERVER_KINDS;
|
|
6651
10578
|
exports.TERMINAL_EXIT_REASONS = TERMINAL_EXIT_REASONS;
|
|
6652
10579
|
exports.TERMINAL_MAX_AUTH_TOKEN_LENGTH = TERMINAL_MAX_AUTH_TOKEN_LENGTH;
|
|
@@ -6677,6 +10604,9 @@ exports.WORKSPACE_CONTEXT_FILE_SLUGS = WORKSPACE_CONTEXT_FILE_SLUGS;
|
|
|
6677
10604
|
exports.WORKSPACE_PAUSED_UNVERIFIED = WORKSPACE_PAUSED_UNVERIFIED;
|
|
6678
10605
|
exports.WORKSPACE_PAUSE_REASON_MAX = WORKSPACE_PAUSE_REASON_MAX;
|
|
6679
10606
|
exports.WORKSPACE_RUNNING = WORKSPACE_RUNNING;
|
|
10607
|
+
exports.WORKS_STATS_DEPLOYMENT_PROVIDER_KEYS = WORKS_STATS_DEPLOYMENT_PROVIDER_KEYS;
|
|
10608
|
+
exports.WORKS_STATS_FEATURE_KEYS = WORKS_STATS_FEATURE_KEYS;
|
|
10609
|
+
exports.WORKS_STATS_WORK_KIND_KEYS = WORKS_STATS_WORK_KIND_KEYS;
|
|
6680
10610
|
exports.WORK_CHECKS_POLICIES = WORK_CHECKS_POLICIES;
|
|
6681
10611
|
exports.WORK_EXTERNAL_REFS_MAX_PER_KIND = WORK_EXTERNAL_REFS_MAX_PER_KIND;
|
|
6682
10612
|
exports.WORK_EXTERNAL_REF_KINDS = WORK_EXTERNAL_REF_KINDS;
|
|
@@ -6688,12 +10618,46 @@ exports.WORK_REPO_DECLARED_COMMAND_MAX_ALLOW = WORK_REPO_DECLARED_COMMAND_MAX_AL
|
|
|
6688
10618
|
exports.WORK_REPO_DECLARED_COMMAND_MAX_LENGTH = WORK_REPO_DECLARED_COMMAND_MAX_LENGTH;
|
|
6689
10619
|
exports.WORK_REPO_DECLARED_COMMAND_MODES = WORK_REPO_DECLARED_COMMAND_MODES;
|
|
6690
10620
|
exports.acceptPlaybookEntry = acceptPlaybookEntry;
|
|
10621
|
+
exports.appBuildCheckName = appBuildCheckName;
|
|
10622
|
+
exports.appBuildEventNameForStatus = appBuildEventNameForStatus;
|
|
10623
|
+
exports.appBuildRunnerCapacity = appBuildRunnerCapacity;
|
|
10624
|
+
exports.appComponentDeadlineSeconds = appComponentDeadlineSeconds;
|
|
10625
|
+
exports.appDependencyBackupStateMessageKey = appDependencyBackupStateMessageKey;
|
|
10626
|
+
exports.appDependencyBlocksDeploy = appDependencyBlocksDeploy;
|
|
10627
|
+
exports.appDependencyDefaultSizeGiB = appDependencyDefaultSizeGiB;
|
|
10628
|
+
exports.appDependencyOutputNames = appDependencyOutputNames;
|
|
10629
|
+
exports.appDependencyReadyDeadlineMs = appDependencyReadyDeadlineMs;
|
|
10630
|
+
exports.appDependencyReasonMessageKey = appDependencyReasonMessageKey;
|
|
10631
|
+
exports.appDependencyStatusMessageKey = appDependencyStatusMessageKey;
|
|
10632
|
+
exports.appDependencyToken = appDependencyToken;
|
|
10633
|
+
exports.appEnvDependencyFingerprint = appEnvDependencyFingerprint;
|
|
10634
|
+
exports.appEnvDependencyPasswordToken = appEnvDependencyPasswordToken;
|
|
10635
|
+
exports.appEnvErrorMessageKey = appEnvErrorMessageKey;
|
|
10636
|
+
exports.appEnvGeneratorFingerprint = appEnvGeneratorFingerprint;
|
|
10637
|
+
exports.appEnvKeypairFormatSupported = appEnvKeypairFormatSupported;
|
|
10638
|
+
exports.appEnvPublicHalfName = appEnvPublicHalfName;
|
|
10639
|
+
exports.appEnvStoredFingerprint = appEnvStoredFingerprint;
|
|
10640
|
+
exports.appEnvTemplateFingerprint = appEnvTemplateFingerprint;
|
|
10641
|
+
exports.appLauncherPinLimitExceeded = appLauncherPinLimitExceeded;
|
|
10642
|
+
exports.appManualSyncAllowed = appManualSyncAllowed;
|
|
10643
|
+
exports.appProvisionCopy = appProvisionCopy;
|
|
10644
|
+
exports.appProvisionCopyPlaceholders = appProvisionCopyPlaceholders;
|
|
10645
|
+
exports.appRateLimitAllowsSync = appRateLimitAllowsSync;
|
|
10646
|
+
exports.appRepositoryUrlLengthExceeded = appRepositoryUrlLengthExceeded;
|
|
10647
|
+
exports.appWorkQuotaAllows = appWorkQuotaAllows;
|
|
6691
10648
|
exports.applyConnectionScopePresetToToolGrant = applyConnectionScopePresetToToolGrant;
|
|
6692
10649
|
exports.applyConnectionScopePresetWithOwnership = applyConnectionScopePresetWithOwnership;
|
|
6693
10650
|
exports.applyWorkflowInputMapping = applyWorkflowInputMapping;
|
|
10651
|
+
exports.appsTierReceiptIdempotencyKey = appsTierReceiptIdempotencyKey;
|
|
6694
10652
|
exports.assessCredentialTransport = assessCredentialTransport;
|
|
10653
|
+
exports.buildAppSpecLineLink = buildAppSpecLineLink;
|
|
6695
10654
|
exports.buildBackupArchiveFilename = buildBackupArchiveFilename;
|
|
10655
|
+
exports.buildFailureExcerpt = buildFailureExcerpt;
|
|
10656
|
+
exports.buildTenantPostgresDdl = buildTenantPostgresDdl;
|
|
10657
|
+
exports.canDeleteAppDependencyData = canDeleteAppDependencyData;
|
|
10658
|
+
exports.canStartTargetOwnerScan = canStartTargetOwnerScan;
|
|
6696
10659
|
exports.catalogSearchRank = catalogSearchRank;
|
|
10660
|
+
exports.clampAppsTierQuotaProfile = clampAppsTierQuotaProfile;
|
|
6697
10661
|
exports.clampEscalationConfidence = clampEscalationConfidence;
|
|
6698
10662
|
exports.clampLeaseTtlSec = clampLeaseTtlSec;
|
|
6699
10663
|
exports.clampMaxAttempts = clampMaxAttempts;
|
|
@@ -6706,6 +10670,7 @@ exports.comparePlaybookVersions = comparePlaybookVersions;
|
|
|
6706
10670
|
exports.compareRung = compareRung;
|
|
6707
10671
|
exports.compareTaskBoardCards = compareTaskBoardCards;
|
|
6708
10672
|
exports.composeFleetPushCommitMessage = composeFleetPushCommitMessage;
|
|
10673
|
+
exports.computeBuildInputsHash = computeBuildInputsHash;
|
|
6709
10674
|
exports.computeEmailCapRetryAfterSeconds = computeEmailCapRetryAfterSeconds;
|
|
6710
10675
|
exports.computerStallStateForAge = computerStallStateForAge;
|
|
6711
10676
|
exports.connectionHealthIsWarning = connectionHealthIsWarning;
|
|
@@ -6737,12 +10702,17 @@ exports.effectiveModelAccountHealth = effectiveModelAccountHealth;
|
|
|
6737
10702
|
exports.emailSendCapWindowsInForce = emailSendCapWindowsInForce;
|
|
6738
10703
|
exports.encodeComputerFrame = encodeComputerFrame;
|
|
6739
10704
|
exports.encodeTerminalFrame = encodeTerminalFrame;
|
|
10705
|
+
exports.evaluateAppsTierPolicyState = evaluateAppsTierPolicyState;
|
|
10706
|
+
exports.evaluateBuildDeployability = evaluateBuildDeployability;
|
|
10707
|
+
exports.evaluateBuildRunnerFit = evaluateBuildRunnerFit;
|
|
10708
|
+
exports.evaluateBuildServicePort = evaluateBuildServicePort;
|
|
6740
10709
|
exports.evaluateCollaboratorDelegation = evaluateCollaboratorDelegation;
|
|
6741
10710
|
exports.evaluateEmailSendCaps = evaluateEmailSendCaps;
|
|
6742
10711
|
exports.evaluateWorkflowCondition = evaluateWorkflowCondition;
|
|
6743
10712
|
exports.filterToolNamesBySubAgentScope = filterToolNamesBySubAgentScope;
|
|
6744
10713
|
exports.findConversationDocumentReferences = findConversationDocumentReferences;
|
|
6745
10714
|
exports.findTaskBoardColumn = findTaskBoardColumn;
|
|
10715
|
+
exports.firstRefusingRepositoryStage = firstRefusingRepositoryStage;
|
|
6746
10716
|
exports.fleetAgentExecutionProviderSupportsMountGrants = fleetAgentExecutionProviderSupportsMountGrants;
|
|
6747
10717
|
exports.fleetModelCostUsdToCents = fleetModelCostUsdToCents;
|
|
6748
10718
|
exports.fleetModelPluginId = fleetModelPluginId;
|
|
@@ -6753,6 +10723,7 @@ exports.getBackupDomain = getBackupDomain;
|
|
|
6753
10723
|
exports.getGtmSkill = getGtmSkill;
|
|
6754
10724
|
exports.getWorkCapabilities = getWorkCapabilities;
|
|
6755
10725
|
exports.getWorkMetricDefinition = getWorkMetricDefinition;
|
|
10726
|
+
exports.hasAppEnvPublicPrefix = hasAppEnvPublicPrefix;
|
|
6756
10727
|
exports.homeCapTone = homeCapTone;
|
|
6757
10728
|
exports.homeRunChip = homeRunChip;
|
|
6758
10729
|
exports.homeWaitingTone = homeWaitingTone;
|
|
@@ -6760,6 +10731,14 @@ exports.inboxDecisionNeedsReason = inboxDecisionNeedsReason;
|
|
|
6760
10731
|
exports.isActionCategory = isActionCategory;
|
|
6761
10732
|
exports.isAgentRunTimelineInsertionOrderTieBreak = isAgentRunTimelineInsertionOrderTieBreak;
|
|
6762
10733
|
exports.isAllowedTerminalWsUrl = isAllowedTerminalWsUrl;
|
|
10734
|
+
exports.isAppBuildCheckJobName = isAppBuildCheckJobName;
|
|
10735
|
+
exports.isAppDependencyBackupOverdue = isAppDependencyBackupOverdue;
|
|
10736
|
+
exports.isAppDependencyOutputSecret = isAppDependencyOutputSecret;
|
|
10737
|
+
exports.isAppDependencyReason = isAppDependencyReason;
|
|
10738
|
+
exports.isAppDependencySizeChangeAllowed = isAppDependencySizeChangeAllowed;
|
|
10739
|
+
exports.isAppLauncherEnvironment = isAppLauncherEnvironment;
|
|
10740
|
+
exports.isAppSourceReasonCode = isAppSourceReasonCode;
|
|
10741
|
+
exports.isAppWorkKind = isAppWorkKind;
|
|
6763
10742
|
exports.isAutonomyGrantScopeType = isAutonomyGrantScopeType;
|
|
6764
10743
|
exports.isComputerChannel = isComputerChannel;
|
|
6765
10744
|
exports.isComputerClientToServerFrame = isComputerClientToServerFrame;
|
|
@@ -6789,6 +10768,8 @@ exports.isCredentialKey = isCredentialKey;
|
|
|
6789
10768
|
exports.isCreditSettlementMode = isCreditSettlementMode;
|
|
6790
10769
|
exports.isDeliveryGoalKind = isDeliveryGoalKind;
|
|
6791
10770
|
exports.isDraftableCategory = isDraftableCategory;
|
|
10771
|
+
exports.isEverIdAllowedIssuerCountAllowed = isEverIdAllowedIssuerCountAllowed;
|
|
10772
|
+
exports.isEverIdClockSkewAllowed = isEverIdClockSkewAllowed;
|
|
6792
10773
|
exports.isFleetAgentExecutionEffort = isFleetAgentExecutionEffort;
|
|
6793
10774
|
exports.isFleetAgentExecutionMode = isFleetAgentExecutionMode;
|
|
6794
10775
|
exports.isFleetAgentExecutionPermissionMode = isFleetAgentExecutionPermissionMode;
|
|
@@ -6809,6 +10790,7 @@ exports.isHomeBlockId = isHomeBlockId;
|
|
|
6809
10790
|
exports.isHomeDecisionOverdue = isHomeDecisionOverdue;
|
|
6810
10791
|
exports.isHomeTimezone = isHomeTimezone;
|
|
6811
10792
|
exports.isInboxDecisionKind = isInboxDecisionKind;
|
|
10793
|
+
exports.isInstanceStatsOperatorStatus = isInstanceStatsOperatorStatus;
|
|
6812
10794
|
exports.isLadderedCategory = isLadderedCategory;
|
|
6813
10795
|
exports.isLocalExecutionMode = isLocalExecutionMode;
|
|
6814
10796
|
exports.isMemoryFactScope = isMemoryFactScope;
|
|
@@ -6818,6 +10800,8 @@ exports.isNarrowerConnectionScopePreset = isNarrowerConnectionScopePreset;
|
|
|
6818
10800
|
exports.isNodeBusy = isNodeBusy;
|
|
6819
10801
|
exports.isOverLinkLimits = isOverLinkLimits;
|
|
6820
10802
|
exports.isPersonallyDeletableConversationKind = isPersonallyDeletableConversationKind;
|
|
10803
|
+
exports.isPlatformDataServer = isPlatformDataServer;
|
|
10804
|
+
exports.isPrivateStatsHost = isPrivateStatsHost;
|
|
6821
10805
|
exports.isPromotionGateDecided = isPromotionGateDecided;
|
|
6822
10806
|
exports.isPromotionGateDecisionOverdue = isPromotionGateDecisionOverdue;
|
|
6823
10807
|
exports.isPromotionGateOverridden = isPromotionGateOverridden;
|
|
@@ -6838,8 +10822,10 @@ exports.isReservedMountDir = isReservedMountDir;
|
|
|
6838
10822
|
exports.isRunLedgerCalendarDate = isRunLedgerCalendarDate;
|
|
6839
10823
|
exports.isSafetyRailId = isSafetyRailId;
|
|
6840
10824
|
exports.isSafetyReasonCode = isSafetyReasonCode;
|
|
10825
|
+
exports.isSemverLessThan = isSemverLessThan;
|
|
6841
10826
|
exports.isSkillCardState = isSkillCardState;
|
|
6842
10827
|
exports.isSkillReadinessState = isSkillReadinessState;
|
|
10828
|
+
exports.isSourceOnlyAppSpec = isSourceOnlyAppSpec;
|
|
6843
10829
|
exports.isSubAgentDelegationSuccessful = isSubAgentDelegationSuccessful;
|
|
6844
10830
|
exports.isSubAgentScopeSubset = isSubAgentScopeSubset;
|
|
6845
10831
|
exports.isTaskBoardLayout = isTaskBoardLayout;
|
|
@@ -6855,6 +10841,7 @@ exports.isValidFleetRunEnvFilePath = isValidFleetRunEnvFilePath;
|
|
|
6855
10841
|
exports.isValidTerminalRunId = isValidTerminalRunId;
|
|
6856
10842
|
exports.isWorkflowEdgeKind = isWorkflowEdgeKind;
|
|
6857
10843
|
exports.isWorkspaceContextFileSlug = isWorkspaceContextFileSlug;
|
|
10844
|
+
exports.launchGateItemsForPhase = launchGateItemsForPhase;
|
|
6858
10845
|
exports.listGtmSkills = listGtmSkills;
|
|
6859
10846
|
exports.listGtmSkillsForStage = listGtmSkillsForStage;
|
|
6860
10847
|
exports.lowerComputerQuality = lowerComputerQuality;
|
|
@@ -6871,6 +10858,8 @@ exports.moreRestrictiveCategory = moreRestrictiveCategory;
|
|
|
6871
10858
|
exports.narrowSubAgentScope = narrowSubAgentScope;
|
|
6872
10859
|
exports.nextRungUp = nextRungUp;
|
|
6873
10860
|
exports.nodeSatisfiesCapabilities = nodeSatisfiesCapabilities;
|
|
10861
|
+
exports.normaliseDataServerEndpoint = normaliseDataServerEndpoint;
|
|
10862
|
+
exports.normaliseStatsBaseUrl = normaliseStatsBaseUrl;
|
|
6874
10863
|
exports.normalizeCommitSha = normalizeCommitSha;
|
|
6875
10864
|
exports.normalizeComputerFrame = normalizeComputerFrame;
|
|
6876
10865
|
exports.normalizeConnectionScopePresetOwnership = normalizeConnectionScopePresetOwnership;
|
|
@@ -6901,13 +10890,16 @@ exports.onFailureEdgeCatches = onFailureEdgeCatches;
|
|
|
6901
10890
|
exports.orderTaskProvenance = orderTaskProvenance;
|
|
6902
10891
|
exports.organizationRequiresHttpsForCredentials = organizationRequiresHttpsForCredentials;
|
|
6903
10892
|
exports.outgoingWorkflowEdges = outgoingWorkflowEdges;
|
|
10893
|
+
exports.parseAppDependencyToken = parseAppDependencyToken;
|
|
6904
10894
|
exports.parseConversationMentions = parseConversationMentions;
|
|
10895
|
+
exports.parseDataServerUrl = parseDataServerUrl;
|
|
6905
10896
|
exports.parseFleetAgentTaskQuestionMarkdown = parseFleetAgentTaskQuestionMarkdown;
|
|
6906
10897
|
exports.parseGitHubRepositoryUrl = parseGitHubRepositoryUrl;
|
|
6907
10898
|
exports.parseHitlAnswer = parseHitlAnswer;
|
|
6908
10899
|
exports.parseHitlQuestion = parseHitlQuestion;
|
|
6909
10900
|
exports.parseHomeBlockIds = parseHomeBlockIds;
|
|
6910
10901
|
exports.parseModelPolicyScheduleKey = parseModelPolicyScheduleKey;
|
|
10902
|
+
exports.platformDataServerEndpoints = platformDataServerEndpoints;
|
|
6911
10903
|
exports.playbookSearchFields = playbookSearchFields;
|
|
6912
10904
|
exports.promotionGateVerdictFromRun = promotionGateVerdictFromRun;
|
|
6913
10905
|
exports.promotionLaneKey = promotionLaneKey;
|
|
@@ -6915,6 +10907,7 @@ exports.promotionRungFromLabels = promotionRungFromLabels;
|
|
|
6915
10907
|
exports.promotionRungLabel = promotionRungLabel;
|
|
6916
10908
|
exports.promotionTaskLabels = promotionTaskLabels;
|
|
6917
10909
|
exports.pruneConnectionScopePresetOwnership = pruneConnectionScopePresetOwnership;
|
|
10910
|
+
exports.quoteTenantPostgresIdentifier = quoteTenantPostgresIdentifier;
|
|
6918
10911
|
exports.readKbConnectorSource = readKbConnectorSource;
|
|
6919
10912
|
exports.redactSecrets = redactSecrets;
|
|
6920
10913
|
exports.refuseSubAgentDelegation = refuseSubAgentDelegation;
|
|
@@ -6926,6 +10919,12 @@ exports.releaseVerificationProbe = releaseVerificationProbe;
|
|
|
6926
10919
|
exports.releaseVerifyAppProof = releaseVerifyAppProof;
|
|
6927
10920
|
exports.releaseVerifyIdempotencyKey = releaseVerifyIdempotencyKey;
|
|
6928
10921
|
exports.repoDeclaredCommandId = repoDeclaredCommandId;
|
|
10922
|
+
exports.resolveAppProvisionCopy = resolveAppProvisionCopy;
|
|
10923
|
+
exports.resolveAppRepositoryModes = resolveAppRepositoryModes;
|
|
10924
|
+
exports.resolveAppsTierQuotaProfile = resolveAppsTierQuotaProfile;
|
|
10925
|
+
exports.resolveBuildServiceEnv = resolveBuildServiceEnv;
|
|
10926
|
+
exports.resolveBuildServiceKind = resolveBuildServiceKind;
|
|
10927
|
+
exports.resolveBuildServicePort = resolveBuildServicePort;
|
|
6929
10928
|
exports.resolveEffectiveConnectionScopePreset = resolveEffectiveConnectionScopePreset;
|
|
6930
10929
|
exports.resolveEmailSendCaps = resolveEmailSendCaps;
|
|
6931
10930
|
exports.resolveExclusiveAgentCredentials = resolveExclusiveAgentCredentials;
|
|
@@ -6950,6 +10949,7 @@ exports.sanitizeToolGrantOverride = sanitizeToolGrantOverride;
|
|
|
6950
10949
|
exports.scanForSecrets = scanForSecrets;
|
|
6951
10950
|
exports.serializeHitlAnswer = serializeHitlAnswer;
|
|
6952
10951
|
exports.serializeHitlQuestion = serializeHitlQuestion;
|
|
10952
|
+
exports.sha256Hex = sha256Hex;
|
|
6953
10953
|
exports.shouldDegrade = shouldDegrade;
|
|
6954
10954
|
exports.shouldRecover = shouldRecover;
|
|
6955
10955
|
exports.skillCardStateNeedsAttention = skillCardStateNeedsAttention;
|