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