@wtfalch/foundry 0.33.1 → 0.35.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/bootstrap/bootstrap.d.ts +1 -1
- package/dist/bootstrap/bootstrap.js +49 -11
- package/dist/bootstrap/declare.d.ts +12 -5
- package/dist/bootstrap/declare.js +33 -18
- package/dist/bootstrap/versions.d.ts +24 -0
- package/dist/bootstrap/versions.js +46 -0
- package/dist/calls-sfu.d.ts +10 -0
- package/dist/calls-sfu.js +44 -3
- package/dist/index.d.ts +21 -8
- package/dist/index.js +11 -4
- package/dist/migrations/0051_org_services.sql +13 -0
- package/dist/migrations/0052_platform_mail_relay.sql +8 -0
- package/dist/migrations/0053_heartbeats_provider.sql +9 -0
- package/dist/migrations/0053_org_version_pin.sql +6 -0
- package/dist/org.d.ts +76 -12
- package/dist/org.js +136 -20
- package/dist/plan/backup-gate.d.ts +93 -0
- package/dist/plan/backup-gate.js +261 -0
- package/dist/plan/broker-entries.d.ts +9 -1
- package/dist/plan/broker-entries.js +20 -3
- package/dist/plan/build-record.d.ts +56 -0
- package/dist/plan/build-record.js +109 -0
- package/dist/plan/calls-matrix.d.ts +9 -0
- package/dist/plan/calls-matrix.js +18 -1
- package/dist/plan/cloudflared-connector.d.ts +7 -1
- package/dist/plan/cloudflared-connector.js +15 -2
- package/dist/plan/company-backups.d.ts +31 -0
- package/dist/plan/company-backups.js +101 -0
- package/dist/plan/deploy-health.d.ts +12 -2
- package/dist/plan/deploy-health.js +3 -1
- package/dist/plan/destinations.d.ts +73 -0
- package/dist/plan/destinations.js +217 -0
- package/dist/plan/diff.d.ts +46 -8
- package/dist/plan/diff.js +367 -126
- package/dist/plan/edge-access.d.ts +15 -0
- package/dist/plan/edge-access.js +21 -2
- package/dist/plan/executor.d.ts +276 -5
- package/dist/plan/executor.js +1111 -109
- package/dist/plan/health-check-settings.d.ts +28 -0
- package/dist/plan/health-check-settings.js +36 -0
- package/dist/plan/health-gaps.d.ts +33 -0
- package/dist/plan/health-gaps.js +89 -0
- package/dist/plan/health-targets.d.ts +1 -3
- package/dist/plan/health-targets.js +36 -36
- package/dist/plan/held-key-refs.d.ts +15 -0
- package/dist/plan/held-key-refs.js +15 -0
- package/dist/plan/hostnames.d.ts +10 -0
- package/dist/plan/hostnames.js +14 -0
- package/dist/plan/index.d.ts +19 -6
- package/dist/plan/index.js +10 -3
- package/dist/plan/live.d.ts +11 -2
- package/dist/plan/live.js +16 -2
- package/dist/plan/locked-hostnames.d.ts +7 -3
- package/dist/plan/locked-hostnames.js +25 -4
- package/dist/plan/login-host.d.ts +61 -12
- package/dist/plan/login-host.js +99 -11
- package/dist/plan/mail-relay.d.ts +139 -0
- package/dist/plan/mail-relay.js +400 -0
- package/dist/plan/network-move.d.ts +20 -0
- package/dist/plan/network-move.js +41 -0
- package/dist/plan/oikos-ingress.d.ts +111 -0
- package/dist/plan/oikos-ingress.js +231 -0
- package/dist/plan/org-names.d.ts +30 -0
- package/dist/plan/org-names.js +108 -0
- package/dist/plan/own-diff.d.ts +170 -0
- package/dist/plan/own-diff.js +440 -0
- package/dist/plan/own-dns.d.ts +6 -0
- package/dist/plan/own-dns.js +15 -0
- package/dist/plan/own-hostnames.d.ts +27 -0
- package/dist/plan/own-hostnames.js +24 -0
- package/dist/plan/own-limits.d.ts +213 -0
- package/dist/plan/own-limits.js +232 -0
- package/dist/plan/own-services.d.ts +193 -0
- package/dist/plan/own-services.js +169 -0
- package/dist/plan/own-sfu.d.ts +69 -0
- package/dist/plan/own-sfu.js +256 -0
- package/dist/plan/plan-apply.d.ts +121 -10
- package/dist/plan/plan-apply.js +357 -18
- package/dist/plan/platform-diff.d.ts +155 -11
- package/dist/plan/platform-diff.js +271 -66
- package/dist/plan/platform-org.d.ts +107 -4
- package/dist/plan/platform-org.js +175 -3
- package/dist/plan/platform-providers.d.ts +474 -81
- package/dist/plan/platform-providers.js +1407 -560
- package/dist/plan/proxy-labels.d.ts +57 -11
- package/dist/plan/proxy-labels.js +94 -14
- package/dist/plan/run-options.d.ts +19 -0
- package/dist/plan/run-options.js +46 -0
- package/dist/plan/sign-in-org.d.ts +1 -1
- package/dist/plan/sign-in-org.js +20 -2
- package/dist/plan/zitadel-login-policy.d.ts +1 -1
- package/dist/plan/zitadel-login-policy.js +77 -9
- package/dist/plan/zitadel-system-api.d.ts +22 -1
- package/dist/plan/zitadel-system-api.js +49 -8
- package/dist/platform.d.ts +40 -0
- package/dist/platform.js +16 -0
- package/dist/provision.d.ts +2 -0
- package/dist/provision.js +3 -1
- package/dist/slug.d.ts +3 -1
- package/dist/slug.js +26 -3
- package/dist/store/postgres.js +93 -2
- package/dist/store/schema.d.ts +87 -0
- package/dist/store/schema.js +9 -0
- package/package.json +3 -3
- package/versions.digests.json +11 -0
- package/versions.json +3 -1
|
@@ -3,6 +3,8 @@ import { type Plan, type PlanNote, type UnmanagedItem, type VersionChangeItem }
|
|
|
3
3
|
import type { DeclaredPlatform } from '../platform.js';
|
|
4
4
|
import type { PlannedStep } from './diff.js';
|
|
5
5
|
import type { LiveResource } from './live.js';
|
|
6
|
+
import { type MailRoute, PLATFORM_MAIL_RELAY_KEY } from './mail-relay.js';
|
|
7
|
+
import type { OwnerFiles, OwnerSignIn, PlatformOwnerInput } from './platform-org.js';
|
|
6
8
|
/**
|
|
7
9
|
* The platform's own diff result, the {@link DeclaredPlatform} counterpart to
|
|
8
10
|
* `diff.ts`'s `PlanDetail` -- everything the same, minus the `orgId` an org's
|
|
@@ -184,11 +186,15 @@ export declare const PLATFORM_ARCHON_APPLIED_AUTH_ORG_SCOPE_KEY = "archon_applie
|
|
|
184
186
|
*/
|
|
185
187
|
export declare const PLATFORM_ARCHON_APPLIED_ROLLING_UPDATE_SCOPE_KEY = "archon_applied_rolling_update";
|
|
186
188
|
/**
|
|
187
|
-
* The sign-in
|
|
188
|
-
*
|
|
189
|
-
*
|
|
189
|
+
* The owner company's sign-in hostname Archon was last registered under, and
|
|
190
|
+
* the owner's files host (`<internalUrl>|<audience>`, or `none`) its env was
|
|
191
|
+
* last written with. `planArchon` plans the step again when either differs
|
|
192
|
+
* from the owner's current ones (a marker never recorded reads as `none`).
|
|
190
193
|
*/
|
|
191
|
-
export declare
|
|
194
|
+
export declare const PLATFORM_ARCHON_APPLIED_AUTH_HOSTNAME_SCOPE_KEY = "archon_applied_auth_hostname";
|
|
195
|
+
export declare const PLATFORM_ARCHON_APPLIED_FILES_SCOPE_KEY = "archon_applied_files";
|
|
196
|
+
/** The value {@link PLATFORM_ARCHON_APPLIED_FILES_SCOPE_KEY} records for the owner's files host. */
|
|
197
|
+
export declare function archonFilesMarker(files: OwnerFiles | null | undefined): string;
|
|
192
198
|
/**
|
|
193
199
|
* #175: set to '1' before the step points the tunnel at `http_status:404`
|
|
194
200
|
* (Access app rebuild), cleared to '' once the real ingress is written back.
|
|
@@ -432,6 +438,18 @@ export declare const PLATFORM_MAIL_APPLIED_GIT_REF_SCOPE_KEY = "mail_applied_git
|
|
|
432
438
|
* no key and creates nothing in the sign-in server.
|
|
433
439
|
*/
|
|
434
440
|
export declare const PLATFORM_MAIL_ROUTE_SCOPE_KEY = "mail_route_applied";
|
|
441
|
+
/**
|
|
442
|
+
* The host ports the platform Stalwart publishes, as the mapping string the
|
|
443
|
+
* last apply set on its app. Without the shared relay it binds SMTP port 25
|
|
444
|
+
* itself; with `mail.relay` it keeps only submission, because the relay owns
|
|
445
|
+
* port 25. A missing record means the mapping it was created with, `25:25,...`.
|
|
446
|
+
*/
|
|
447
|
+
export declare const PLATFORM_MAIL_HOST_PORTS_SCOPE_KEY = "mail_host_ports_applied";
|
|
448
|
+
export declare const PLATFORM_MAIL_HOST_PORTS_DIRECT = "25:25,465:465,587:587";
|
|
449
|
+
export declare const PLATFORM_MAIL_HOST_PORTS_RELAY = "465:465,587:587";
|
|
450
|
+
export declare function platformMailHostPorts(platform: DeclaredPlatform): string;
|
|
451
|
+
export { PLATFORM_MAIL_RELAY_KEY };
|
|
452
|
+
export { PLATFORM_MAIL_RELAY_ROUTES_SCOPE_KEY, type MailRoute, } from './mail-relay.js';
|
|
435
453
|
export declare const PLATFORM_MAIL_ROUTE_WANTED = "local-first";
|
|
436
454
|
/**
|
|
437
455
|
* #177: where the mail server answers on the Coolify network
|
|
@@ -524,8 +542,68 @@ export declare function serviceDbEnvAppliedScopeKey(service: 'chat' | 'calls-ser
|
|
|
524
542
|
* made again under a new id, is repaired once.
|
|
525
543
|
*/
|
|
526
544
|
export declare function zitadelAppIdTokenUserinfoAppliedScopeKey(appKey: string): string;
|
|
527
|
-
/**
|
|
545
|
+
/**
|
|
546
|
+
* Archon's own sign-in organisation, in the owner company's ZITADEL instance
|
|
547
|
+
* and apart from the organisation that holds the company's people (and Boule's
|
|
548
|
+
* sign-in). Made by the `zitadel:archon-org` step, which runs before
|
|
549
|
+
* `platform:archon`. The first six keys below are the step's own progress:
|
|
550
|
+
* each is recorded only after its call succeeded.
|
|
551
|
+
*/
|
|
552
|
+
export declare const PLATFORM_ARCHON_ORG_SCOPE_KEY = "zitadel_platform_archon_org";
|
|
553
|
+
/** The primary domain registered on Archon's sign-in organisation. */
|
|
554
|
+
export declare const PLATFORM_ARCHON_ORG_DOMAIN_SCOPE_KEY = "zitadel_platform_archon_org_domain";
|
|
555
|
+
/** The domain the sign-in server refused to make primary; set instead of failing, reported as blocked. */
|
|
556
|
+
export declare const PLATFORM_ARCHON_ORG_DOMAIN_BLOCKED_SCOPE_KEY = "zitadel_platform_archon_org_domain_blocked";
|
|
557
|
+
/** The Archon org id once self-registration is closed on it. */
|
|
558
|
+
export declare const PLATFORM_ARCHON_ORG_REGISTRATION_CLOSED_SCOPE_KEY = "zitadel_platform_archon_org_registration_closed";
|
|
559
|
+
/** The Archon org id once its login policy forces a second factor. */
|
|
560
|
+
export declare const PLATFORM_ARCHON_ORG_POLICY_SCOPE_KEY = "zitadel_platform_archon_org_policy";
|
|
561
|
+
/** The first person's user id in the Archon org (`none` when no owner is declared), recorded once the invite was mailed. */
|
|
562
|
+
export declare const PLATFORM_ARCHON_OWNER_INVITE_SCOPE_KEY = "zitadel_platform_archon_owner_invite";
|
|
563
|
+
/** The Archon org the recorded invite was made in. */
|
|
564
|
+
export declare const PLATFORM_ARCHON_OWNER_INVITE_ORG_SCOPE_KEY = "zitadel_platform_archon_owner_invite_org";
|
|
565
|
+
/** The name of the Archon sign-in organisation: `<owner slug>-archon`. */
|
|
566
|
+
export declare function archonOrgName(ownerSlug: string): string;
|
|
567
|
+
/** The primary domain of the Archon sign-in organisation: `archon.` before the owner's own sign-in domain. */
|
|
568
|
+
export declare function archonOrgDomain(ownerSignInDomain: string): string;
|
|
569
|
+
/**
|
|
570
|
+
* The CI organisation id the last Archon apply wrote as `CI_ORGANIZATION_ID`,
|
|
571
|
+
* and the `ARCHON_FIRST_OWNER_LINK` value it wrote (empty when none).
|
|
572
|
+
* `planArchon` plans the step again when either differs from what is wanted.
|
|
573
|
+
*/
|
|
574
|
+
export declare const PLATFORM_ARCHON_APPLIED_CI_ORG_SCOPE_KEY = "archon_applied_ci_org";
|
|
575
|
+
export declare const PLATFORM_ARCHON_APPLIED_FIRST_OWNER_LINK_SCOPE_KEY = "archon_applied_first_owner_link";
|
|
576
|
+
/**
|
|
577
|
+
* `<archonUserId>:<ciUserId>`: the first person in both organisations, which
|
|
578
|
+
* Archon seeds its link table from. Empty when either id is not known (no
|
|
579
|
+
* owner declared, or the CI-side account not recorded yet).
|
|
580
|
+
*/
|
|
581
|
+
export declare function archonFirstOwnerLink(recordedIds: Readonly<Record<string, string>>, ownerSignIn: OwnerSignIn | null): string;
|
|
582
|
+
/**
|
|
583
|
+
* The one-time-PIN provider id the Archon Access app was last made with.
|
|
584
|
+
* Drift is read against it, because a plan must not ask edge to find or make
|
|
585
|
+
* the provider.
|
|
586
|
+
*/
|
|
587
|
+
export declare const PLATFORM_ARCHON_ACCESS_PIN_SCOPE_KEY = "cloudflare_platform_archon_access_pin";
|
|
588
|
+
/**
|
|
589
|
+
* The Archon org the `AUTH_APP_KEY` in Archon's env was minted for. A key
|
|
590
|
+
* minted for another org (the CI org, before the move) is replaced by a fresh
|
|
591
|
+
* one, so the key the CI-org broker entry held stops being Archon's.
|
|
592
|
+
*/
|
|
593
|
+
export declare const PLATFORM_ARCHON_APP_KEY_ORG_SCOPE_KEY = "archon_app_key_org";
|
|
594
|
+
/**
|
|
595
|
+
* `<org>|<project>|<app>` of Archon's old sign-in client while it still waits
|
|
596
|
+
* to be deleted. Set before the new client's ids overwrite the recorded ones,
|
|
597
|
+
* cleared once the old client is gone.
|
|
598
|
+
*/
|
|
599
|
+
export declare const PLATFORM_ARCHON_RETIRED_CLIENT_SCOPE_KEY = "zitadel_platform_archon_retired_client";
|
|
600
|
+
/** The ZITADEL app id of Archon's sign-in client in the owner company's ZITADEL. */
|
|
528
601
|
export declare const PLATFORM_ARCHON_ZITADEL_APP_SCOPE_KEY = "zitadel_platform_archon_app";
|
|
602
|
+
/** The ZITADEL project id Archon's sign-in client lives in. */
|
|
603
|
+
export declare const PLATFORM_ARCHON_ZITADEL_PROJECT_SCOPE_KEY = "zitadel_platform_archon_project";
|
|
604
|
+
/** The ZITADEL project and client ids of the Access sign-in provider, in the owner company's ZITADEL. */
|
|
605
|
+
export declare const PLATFORM_ACCESS_ZITADEL_PROJECT_SCOPE_KEY = "zitadel_platform_access_project";
|
|
606
|
+
export declare const PLATFORM_ACCESS_ZITADEL_APP_SCOPE_KEY = "zitadel_platform_access_app";
|
|
529
607
|
/**
|
|
530
608
|
* The ZITADEL app id of Archon's sign-in client once "user info inside the
|
|
531
609
|
* ID token" was switched on for it. `planArchonIdTokenUserinfo` plans the
|
|
@@ -574,9 +652,8 @@ export declare function appDomainsAppliedScopeKey(entryKey: string): string;
|
|
|
574
652
|
* unknown, bare before 4b2380f and `https://` after it.
|
|
575
653
|
*/
|
|
576
654
|
export declare function appliedAppDomains(org: DeclaredOrg, recorded: Readonly<Record<string, string>>, entryKey: string): string[];
|
|
577
|
-
/** Whether the secret sources can be filled right now:
|
|
655
|
+
/** Whether the secret sources can be filled right now: a new shared secret can be held. */
|
|
578
656
|
export interface AppSecretAvailability {
|
|
579
|
-
platformMailKey: boolean;
|
|
580
657
|
sharedSecret: boolean;
|
|
581
658
|
}
|
|
582
659
|
/**
|
|
@@ -595,7 +672,7 @@ export declare function resolveAppEnv(org: DeclaredOrg, entry: HostingEntry, rec
|
|
|
595
672
|
unresolved: Array<[string, string]>;
|
|
596
673
|
secrets: Array<{
|
|
597
674
|
name: string;
|
|
598
|
-
source:
|
|
675
|
+
source: EnvSharedSecret;
|
|
599
676
|
}>;
|
|
600
677
|
unresolvedSecrets: Array<[string, string]>;
|
|
601
678
|
marker: Record<string, string>;
|
|
@@ -614,6 +691,13 @@ export declare const PLATFORM_AI_KEY = "platform:ai";
|
|
|
614
691
|
* public hostname. Holds whichever way the public-hostname decision goes.
|
|
615
692
|
*/
|
|
616
693
|
export declare const PLATFORM_AI_INTERNAL_URL_SCOPE_KEY = "ai_platform_internal_url";
|
|
694
|
+
/**
|
|
695
|
+
* The id of the tunnel that carries the AI host's public hostname. Recorded once the tunnel, its
|
|
696
|
+
* connector and the DNS record are in place; an entry is given `AI_URL` only after it.
|
|
697
|
+
*/
|
|
698
|
+
export declare const PLATFORM_AI_TUNNEL_SCOPE_KEY = "cloudflare_platform_ai_tunnel";
|
|
699
|
+
/** The one Coolify app that runs `cloudflared` for the AI tunnel. */
|
|
700
|
+
export declare const PLATFORM_AI_CONNECTOR_APP_SCOPE_KEY = "coolify_platform_ai_connector_app";
|
|
617
701
|
/**
|
|
618
702
|
* #172: the same two-key discipline as the ZITADEL admin key above, for
|
|
619
703
|
* foundry's AI management key (the bearer key `ai:organisation`, `ai:budget`
|
|
@@ -820,6 +904,18 @@ export declare const PLATFORM_HC_APPLIED_GIT_REF_SCOPE_KEY = "hc_applied_git_ref
|
|
|
820
904
|
* and that implementation is where the key is actually used.
|
|
821
905
|
*/
|
|
822
906
|
export declare const PLATFORM_HC_API_KEY_REF = "hc:platform:apiKey";
|
|
907
|
+
/**
|
|
908
|
+
* foundry#544: the held-key ref a human puts the *outside* Healthchecks
|
|
909
|
+
* account's project API key under, read only while
|
|
910
|
+
* `platform.heartbeatsProvider` is `'hosted'` -- {@link PLATFORM_HC_API_KEY_REF}'s
|
|
911
|
+
* own ref is for the self-hosted instance only, and the two are never
|
|
912
|
+
* conflated: switching provider needs its own key held under its own ref,
|
|
913
|
+
* never the other one silently reused. Same "this package never reads the
|
|
914
|
+
* value back" rule as {@link PLATFORM_HC_API_KEY_REF}'s own doc comment --
|
|
915
|
+
* whoever implements {@link HeartbeatsPort} against the outside service is
|
|
916
|
+
* the host.
|
|
917
|
+
*/
|
|
918
|
+
export declare const PLATFORM_HEARTBEATS_HOSTED_API_KEY_REF = "heartbeats:platform:hostedApiKey";
|
|
823
919
|
/**
|
|
824
920
|
* #540: the heartbeat check named after the uptime Worker (foundry#542,
|
|
825
921
|
* which is what actually pings it -- blocked today on edge#26, so nothing
|
|
@@ -971,8 +1067,19 @@ export interface PlanPlatformOptions {
|
|
|
971
1067
|
* only when the recorded fingerprint differs; absent, it always plans it.
|
|
972
1068
|
*/
|
|
973
1069
|
callsOrgSlugs?: readonly string[];
|
|
1070
|
+
/**
|
|
1071
|
+
* Which company domain goes to which company mail server. Used only when
|
|
1072
|
+
* `platform.mail.relay` is true (default `[]`).
|
|
1073
|
+
*/
|
|
1074
|
+
mailRoutes?: readonly MailRoute[];
|
|
1075
|
+
/** One line per company route left out of `mailRoutes`; each is reported blocked and the relay still plans without it. */
|
|
1076
|
+
mailRoutesBlocked?: readonly string[];
|
|
1077
|
+
/** The owner company's own sign-in and files host; Archon and the Access provider read them (default: neither applied). */
|
|
1078
|
+
owner?: PlatformOwnerInput;
|
|
974
1079
|
/** The platform's recorded resource/scope ids (default `{}`). */
|
|
975
1080
|
recordedIds?: Readonly<Record<string, string>>;
|
|
1081
|
+
/** The commit each recorded app runs now, by app name; a differing one gives a `build-drift:<name>` note (default `{}`). */
|
|
1082
|
+
liveBuilds?: Readonly<Record<string, string>>;
|
|
976
1083
|
/** Per-step block reasons the executor reports (default `{}`). */
|
|
977
1084
|
blocked?: {
|
|
978
1085
|
auth?: string;
|
|
@@ -1000,10 +1107,14 @@ export interface PlanPlatformOptions {
|
|
|
1000
1107
|
ai?: string;
|
|
1001
1108
|
archon?: string;
|
|
1002
1109
|
mail?: string;
|
|
1110
|
+
/** Why the shared mail relay cannot run: the executor lacks the mail dependencies or the base image tag floats. */
|
|
1111
|
+
relay?: string;
|
|
1003
1112
|
/** #478: why the edge host is blocked, or absent when it is not. */
|
|
1004
1113
|
edge?: string;
|
|
1005
1114
|
/** #604: why the Access sign-in provider cannot be made yet (no dependencies, or edge cannot confirm Access is ready), or absent. */
|
|
1006
1115
|
accessProvider?: string;
|
|
1116
|
+
/** Why the shared oikos.host ingress cannot be made (no dependencies, or its zone is not on edge's account), or absent. */
|
|
1117
|
+
oikosIngress?: string;
|
|
1007
1118
|
/**
|
|
1008
1119
|
* #257: true once a service's database exists but the host built the
|
|
1009
1120
|
* platform executor with no backup dependencies -- every such service's
|
|
@@ -1067,6 +1178,10 @@ export interface PlanPlatformOptions {
|
|
|
1067
1178
|
* step is not planned.
|
|
1068
1179
|
*/
|
|
1069
1180
|
authSignInPolicy?: boolean;
|
|
1181
|
+
/** Why Archon's own sign-in organisation cannot be made (no dependencies, no ZITADEL client for the instance), or absent. */
|
|
1182
|
+
archonOrg?: string;
|
|
1183
|
+
/** Why the first person cannot be invited into Archon's organisation yet (no work address, no mail port). The rest of the step still plans. */
|
|
1184
|
+
archonOrgInvite?: string;
|
|
1070
1185
|
};
|
|
1071
1186
|
/**
|
|
1072
1187
|
* Steps whose live state differs from the declared one in a way the recorded
|
|
@@ -1161,11 +1276,8 @@ export declare const JOBS_INTERNAL_URL_SCOPE_KEY = "jobs_internal_url";
|
|
|
1161
1276
|
* never a wrong step.
|
|
1162
1277
|
*/
|
|
1163
1278
|
export declare const PLATFORM_BACKUP_DATABASE_SCOPE_KEYS: {
|
|
1164
|
-
readonly jobs: "coolify_jobs_database";
|
|
1165
|
-
readonly auth: "coolify_platform_auth_database";
|
|
1166
1279
|
readonly archon: "coolify_platform_archon_database";
|
|
1167
1280
|
readonly ai: "coolify_platform_ai_database";
|
|
1168
|
-
readonly files: "coolify_platform_files_database";
|
|
1169
1281
|
readonly integrations: "coolify_integrations_database";
|
|
1170
1282
|
};
|
|
1171
1283
|
export type PlatformBackupServiceKey = keyof typeof PLATFORM_BACKUP_DATABASE_SCOPE_KEYS;
|
|
@@ -1237,3 +1349,35 @@ export declare const PLATFORM_INTEGRATIONS_KEY_ROTATION_PREVIOUS_SCOPE_KEY = "in
|
|
|
1237
1349
|
* `''`) as soon as the mint is recorded, so one request is one rotation.
|
|
1238
1350
|
*/
|
|
1239
1351
|
export declare const PLATFORM_INTEGRATIONS_KEY_ROTATION_REQUESTED_SCOPE_KEY = "integrations_management_key_rotation_requested";
|
|
1352
|
+
/**
|
|
1353
|
+
* #175: Archon (https://github.com/wtfalch/archon), the one shared console,
|
|
1354
|
+
* built fresh at `platform.archon.hostname` (`archon.<apex>`) rather than the
|
|
1355
|
+
* hand-deployed `operator` app it replaces (#165). One step,
|
|
1356
|
+
* `coolify:app` keyed {@link PLATFORM_ARCHON_KEY}, covers the app, its
|
|
1357
|
+
* database, its Cloudflare tunnel, Access app and DNS record, and its sign-in
|
|
1358
|
+
* client in the platform's own ZITADEL -- the same bundling {@link planAuth}
|
|
1359
|
+
* does, for the same reason.
|
|
1360
|
+
*
|
|
1361
|
+
* Idempotent on the recorded resource id plus the applied hostname and
|
|
1362
|
+
* `gitRef`, for the reason {@link planAuth} gives: no platform reader reports
|
|
1363
|
+
* these resources, so a live check would replan the step forever. A changed
|
|
1364
|
+
* hostname or `gitRef` plans the step again, and so does `drifted` (the Access
|
|
1365
|
+
* policy's include list is not the declared one). A re-run mints nothing.
|
|
1366
|
+
*
|
|
1367
|
+
* Blocked, not planned, while the platform's sign-in is neither recorded nor
|
|
1368
|
+
* planned in this same plan: Archon's sign-in client is created inside it, so
|
|
1369
|
+
* the step could only throw.
|
|
1370
|
+
*
|
|
1371
|
+
* #213: also puts {@link PLATFORM_ARCHON_MASTER_COOLIFY_URL_REF},
|
|
1372
|
+
* {@link PLATFORM_ARCHON_MASTER_COOLIFY_TOKEN_REF} and
|
|
1373
|
+
* {@link PLATFORM_ARCHON_MASTER_CLOUDFLARE_TOKEN_REF} as held keys, before
|
|
1374
|
+
* the app deploys -- `putArchonMasterKeys` in `platform-providers.ts`.
|
|
1375
|
+
*
|
|
1376
|
+
* #197: a recorded app with no recorded `cloudflared` connector
|
|
1377
|
+
* ({@link PLATFORM_ARCHON_CONNECTOR_APP_SCOPE_KEY}) plans the step again, as
|
|
1378
|
+
* {@link planAuth} does.
|
|
1379
|
+
*/
|
|
1380
|
+
/** Archon signs its operators in through the owner company's own sign-in; fixed text, part of the stale-plan comparison. */
|
|
1381
|
+
export declare const ARCHON_OWNER_SIGN_IN_BLOCKED = "Archon is blocked, not planned: the owner company's sign-in is not applied yet";
|
|
1382
|
+
/** Archon signs in from its own organisation, which the `zitadel:archon-org` step makes; fixed text, part of the stale-plan comparison. */
|
|
1383
|
+
export declare const ARCHON_ORG_BLOCKED = "Archon is blocked, not planned: its own sign-in organisation is not applied yet";
|