@caelo-cms/provisioning 0.11.9 → 0.11.11
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/adapter.d.ts +6 -0
- package/dist/adapter.d.ts.map +1 -1
- package/dist/admin-domain.d.ts +10 -1
- package/dist/admin-domain.d.ts.map +1 -1
- package/dist/admin-domain.js +13 -3
- package/dist/admin-domain.js.map +1 -1
- package/dist/adopt-existing.d.ts +12 -3
- package/dist/adopt-existing.d.ts.map +1 -1
- package/dist/adopt-existing.js +143 -0
- package/dist/adopt-existing.js.map +1 -1
- package/dist/agent/command.d.ts +23 -0
- package/dist/agent/command.d.ts.map +1 -1
- package/dist/agent/command.js +32 -9
- package/dist/agent/command.js.map +1 -1
- package/dist/agent/run.d.ts +2 -0
- package/dist/agent/run.d.ts.map +1 -1
- package/dist/agent/run.js +5 -1
- package/dist/agent/run.js.map +1 -1
- package/dist/agent-db.js +69 -10
- package/dist/aws-task-roles.d.ts +4 -2
- package/dist/aws-task-roles.d.ts.map +1 -1
- package/dist/aws-task-roles.js +4 -1
- package/dist/aws-task-roles.js.map +1 -1
- package/dist/caddy.d.ts +21 -4
- package/dist/caddy.d.ts.map +1 -1
- package/dist/caddy.js +27 -3
- package/dist/caddy.js.map +1 -1
- package/dist/cli-routing.js +1 -1
- package/dist/cli-routing.js.map +1 -1
- package/dist/cli.js +68 -7
- package/dist/cli.js.map +1 -1
- package/dist/cloudsql-tls.d.ts +93 -0
- package/dist/cloudsql-tls.d.ts.map +1 -0
- package/dist/cloudsql-tls.js +295 -0
- package/dist/cloudsql-tls.js.map +1 -0
- package/dist/compose.d.ts +43 -6
- package/dist/compose.d.ts.map +1 -1
- package/dist/compose.js +148 -23
- package/dist/compose.js.map +1 -1
- package/dist/converge-checkpoint.d.ts +1 -0
- package/dist/converge-checkpoint.d.ts.map +1 -1
- package/dist/converge-checkpoint.js +8 -1
- package/dist/converge-checkpoint.js.map +1 -1
- package/dist/converge-db-trust.d.ts +44 -0
- package/dist/converge-db-trust.d.ts.map +1 -0
- package/dist/converge-db-trust.js +158 -0
- package/dist/converge-db-trust.js.map +1 -0
- package/dist/converge-job-gcp.d.ts +5 -2
- package/dist/converge-job-gcp.d.ts.map +1 -1
- package/dist/converge-job-gcp.js +11 -13
- package/dist/converge-job-gcp.js.map +1 -1
- package/dist/converge-job-preflight.d.ts.map +1 -1
- package/dist/converge-job-preflight.js +8 -0
- package/dist/converge-job-preflight.js.map +1 -1
- package/dist/converge-job.d.ts +17 -0
- package/dist/converge-job.d.ts.map +1 -1
- package/dist/converge-job.js +12 -0
- package/dist/converge-job.js.map +1 -1
- package/dist/deployed-release.d.ts +4 -1
- package/dist/deployed-release.d.ts.map +1 -1
- package/dist/deployed-release.js +18 -8
- package/dist/deployed-release.js.map +1 -1
- package/dist/gcp-names.d.ts +34 -0
- package/dist/gcp-names.d.ts.map +1 -1
- package/dist/gcp-names.js +45 -0
- package/dist/gcp-names.js.map +1 -1
- package/dist/gcp-url-map.d.ts.map +1 -1
- package/dist/gcp-url-map.js +6 -2
- package/dist/gcp-url-map.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/infra-contract.d.ts +1 -1
- package/dist/infra-contract.d.ts.map +1 -1
- package/dist/infra-contract.js +45 -1
- package/dist/infra-contract.js.map +1 -1
- package/dist/install-job.d.ts +4 -2
- package/dist/install-job.d.ts.map +1 -1
- package/dist/install-job.js +4 -1
- package/dist/install-job.js.map +1 -1
- package/dist/install-state.d.ts +13 -0
- package/dist/install-state.d.ts.map +1 -1
- package/dist/install-state.js +17 -4
- package/dist/install-state.js.map +1 -1
- package/dist/lifecycle.d.ts.map +1 -1
- package/dist/lifecycle.js +20 -8
- package/dist/lifecycle.js.map +1 -1
- package/dist/mcp-auth-proxy-setup.d.ts +48 -0
- package/dist/mcp-auth-proxy-setup.d.ts.map +1 -0
- package/dist/mcp-auth-proxy-setup.js +280 -0
- package/dist/mcp-auth-proxy-setup.js.map +1 -0
- package/dist/migration-runner.d.ts.map +1 -1
- package/dist/migration-runner.js +8 -3
- package/dist/migration-runner.js.map +1 -1
- package/dist/migration-targets.d.ts +11 -0
- package/dist/migration-targets.d.ts.map +1 -0
- package/dist/migration-targets.js +12 -0
- package/dist/migration-targets.js.map +1 -0
- package/dist/operator-access.d.ts +10 -0
- package/dist/operator-access.d.ts.map +1 -1
- package/dist/operator-access.js +5 -0
- package/dist/operator-access.js.map +1 -1
- package/dist/pool-budget-stack.d.ts +13 -1
- package/dist/pool-budget-stack.d.ts.map +1 -1
- package/dist/pool-budget-stack.js +11 -1
- package/dist/pool-budget-stack.js.map +1 -1
- package/dist/public-role-isolation.d.ts +7 -3
- package/dist/public-role-isolation.d.ts.map +1 -1
- package/dist/public-role-isolation.js +25 -13
- package/dist/public-role-isolation.js.map +1 -1
- package/dist/release-contract.d.ts.map +1 -1
- package/dist/release-contract.js +3 -0
- package/dist/release-contract.js.map +1 -1
- package/dist/release-manifest.d.ts +25 -1
- package/dist/release-manifest.d.ts.map +1 -1
- package/dist/release-manifest.js +36 -3
- package/dist/release-manifest.js.map +1 -1
- package/dist/remote-mcp.d.ts +55 -18
- package/dist/remote-mcp.d.ts.map +1 -1
- package/dist/remote-mcp.js +307 -77
- package/dist/remote-mcp.js.map +1 -1
- package/dist/runtime-secrets.d.ts +11 -0
- package/dist/runtime-secrets.d.ts.map +1 -1
- package/dist/runtime-secrets.js +40 -25
- package/dist/runtime-secrets.js.map +1 -1
- package/dist/scheduler-setup.d.ts +75 -0
- package/dist/scheduler-setup.d.ts.map +1 -0
- package/dist/scheduler-setup.js +331 -0
- package/dist/scheduler-setup.js.map +1 -0
- package/dist/seal-key-rotation.d.ts +7 -7
- package/dist/seal-key-rotation.d.ts.map +1 -1
- package/dist/seal-key-rotation.js +22 -22
- package/dist/seal-key-rotation.js.map +1 -1
- package/dist/self-hosted-db-tls.d.ts +37 -0
- package/dist/self-hosted-db-tls.d.ts.map +1 -0
- package/dist/self-hosted-db-tls.js +220 -0
- package/dist/self-hosted-db-tls.js.map +1 -0
- package/dist/self-hosted-release.d.ts +3 -1
- package/dist/self-hosted-release.d.ts.map +1 -1
- package/dist/self-hosted-release.js +33 -9
- package/dist/self-hosted-release.js.map +1 -1
- package/dist/self-hosted-roles.d.ts +43 -2
- package/dist/self-hosted-roles.d.ts.map +1 -1
- package/dist/self-hosted-roles.js +87 -1
- package/dist/self-hosted-roles.js.map +1 -1
- package/dist/self-hosted-scheduler-interval.d.ts +21 -0
- package/dist/self-hosted-scheduler-interval.d.ts.map +1 -0
- package/dist/self-hosted-scheduler-interval.js +68 -0
- package/dist/self-hosted-scheduler-interval.js.map +1 -0
- package/dist/self-hosted-start.d.ts +0 -21
- package/dist/self-hosted-start.d.ts.map +1 -1
- package/dist/self-hosted-start.js +39 -1
- package/dist/self-hosted-start.js.map +1 -1
- package/dist/self-hosted-upgrade.d.ts +19 -7
- package/dist/self-hosted-upgrade.d.ts.map +1 -1
- package/dist/self-hosted-upgrade.js +78 -25
- package/dist/self-hosted-upgrade.js.map +1 -1
- package/dist/stack-contract.d.ts +234 -28
- package/dist/stack-contract.d.ts.map +1 -1
- package/dist/stack-contract.js +397 -39
- package/dist/stack-contract.js.map +1 -1
- package/dist/stack-converge.d.ts +31 -0
- package/dist/stack-converge.d.ts.map +1 -1
- package/dist/stack-converge.js +71 -30
- package/dist/stack-converge.js.map +1 -1
- package/dist/staging-database.d.ts +22 -0
- package/dist/staging-database.d.ts.map +1 -0
- package/dist/staging-database.js +117 -0
- package/dist/staging-database.js.map +1 -0
- package/dist/upgrade/app-roll.d.ts +25 -4
- package/dist/upgrade/app-roll.d.ts.map +1 -1
- package/dist/upgrade/app-roll.js +63 -17
- package/dist/upgrade/app-roll.js.map +1 -1
- package/dist/upgrade/converge.d.ts +5 -0
- package/dist/upgrade/converge.d.ts.map +1 -1
- package/dist/upgrade/converge.js +207 -20
- package/dist/upgrade/converge.js.map +1 -1
- package/dist/upgrade/health.d.ts +31 -7
- package/dist/upgrade/health.d.ts.map +1 -1
- package/dist/upgrade/health.js +41 -17
- package/dist/upgrade/health.js.map +1 -1
- package/dist/upgrade/image-forms.d.ts +1 -1
- package/dist/upgrade/image-forms.d.ts.map +1 -1
- package/dist/upgrade/image-forms.js +24 -7
- package/dist/upgrade/image-forms.js.map +1 -1
- package/dist/upgrade/release-images.d.ts +12 -3
- package/dist/upgrade/release-images.d.ts.map +1 -1
- package/dist/upgrade/release-images.js +13 -4
- package/dist/upgrade/release-images.js.map +1 -1
- package/dist/upgrade/upgrade.d.ts +19 -3
- package/dist/upgrade/upgrade.d.ts.map +1 -1
- package/dist/upgrade/upgrade.js +37 -2
- package/dist/upgrade/upgrade.js.map +1 -1
- package/dist/upgrader-gcp.d.ts +13 -0
- package/dist/upgrader-gcp.d.ts.map +1 -1
- package/dist/upgrader-gcp.js +50 -1
- package/dist/upgrader-gcp.js.map +1 -1
- package/dist/upgrader-iam-preflight.d.ts.map +1 -1
- package/dist/upgrader-iam-preflight.js +6 -1
- package/dist/upgrader-iam-preflight.js.map +1 -1
- package/dist/upgrader-job.d.ts +1 -1
- package/dist/upgrader-job.d.ts.map +1 -1
- package/dist/upgrader-job.js +20 -14
- package/dist/upgrader-job.js.map +1 -1
- package/dist/upgrader-records.d.ts +1 -1
- package/dist/upgrader-records.d.ts.map +1 -1
- package/dist/upgrader-records.js +26 -7
- package/dist/upgrader-records.js.map +1 -1
- package/dist/upgrader-setup.d.ts.map +1 -1
- package/dist/upgrader-setup.js +10 -5
- package/dist/upgrader-setup.js.map +1 -1
- package/dist/wizard.d.ts +7 -0
- package/dist/wizard.d.ts.map +1 -1
- package/dist/wizard.js +11 -0
- package/dist/wizard.js.map +1 -1
- package/dist/wizards/gcp-cost.d.ts +31 -0
- package/dist/wizards/gcp-cost.d.ts.map +1 -1
- package/dist/wizards/gcp-cost.js +103 -18
- package/dist/wizards/gcp-cost.js.map +1 -1
- package/dist/wizards/gcp.d.ts.map +1 -1
- package/dist/wizards/gcp.js +129 -27
- package/dist/wizards/gcp.js.map +1 -1
- package/package.json +2 -2
- package/src/adapter.ts +6 -0
- package/src/admin-domain.test.ts +9 -8
- package/src/admin-domain.ts +13 -3
- package/src/admin-memory.test.ts +2 -1
- package/src/adopt-existing.test.ts +85 -0
- package/src/adopt-existing.ts +141 -3
- package/src/agent/command.test.ts +49 -1
- package/src/agent/command.ts +39 -9
- package/src/agent/run.test.ts +19 -0
- package/src/agent/run.ts +11 -2
- package/src/aws-task-roles.ts +5 -2
- package/src/caddy-redirects.docker.test.ts +2 -0
- package/src/caddy-redirects.test.ts +4 -1
- package/src/caddy-validate.test.ts +7 -1
- package/src/caddy.test.ts +39 -1
- package/src/caddy.ts +36 -4
- package/src/checkpoint-secrets.test.ts +14 -6
- package/src/cli-routing.test.ts +1 -1
- package/src/cli-routing.ts +1 -1
- package/src/cli.ts +71 -5
- package/src/cloudsql-tls.test.ts +255 -0
- package/src/cloudsql-tls.ts +359 -0
- package/src/compose.ts +193 -24
- package/src/converge-checkpoint.ts +8 -1
- package/src/converge-db-trust.test.ts +237 -0
- package/src/converge-db-trust.ts +212 -0
- package/src/converge-job-gcp.ts +11 -12
- package/src/converge-job-preflight.test.ts +5 -0
- package/src/converge-job-preflight.ts +8 -0
- package/src/converge-job.test.ts +70 -0
- package/src/converge-job.ts +32 -0
- package/src/database-tls-builders.test.ts +56 -0
- package/src/deployed-release.test.ts +107 -40
- package/src/deployed-release.ts +30 -9
- package/src/gateway-env-isolation.test.ts +50 -12
- package/src/gcp-names.ts +56 -0
- package/src/gcp-url-map.test.ts +6 -8
- package/src/gcp-url-map.ts +6 -2
- package/src/index.test.ts +10 -4
- package/src/index.ts +7 -0
- package/src/infra-contract.test.ts +7 -3
- package/src/infra-contract.ts +45 -1
- package/src/install-job.ts +4 -1
- package/src/install-state.ts +33 -4
- package/src/lifecycle.ts +23 -11
- package/src/mcp-auth-proxy-setup.test.ts +305 -0
- package/src/mcp-auth-proxy-setup.ts +374 -0
- package/src/mcp-iap-stacks.test.ts +1 -1
- package/src/media-volume.test.ts +1 -1
- package/src/migration-runner.ts +14 -9
- package/src/migration-targets.ts +12 -0
- package/src/operator-access-stacks.test.ts +1 -1
- package/src/operator-access.test.ts +20 -4
- package/src/operator-access.ts +14 -0
- package/src/pool-budget-stack.ts +15 -0
- package/src/pool-budget-stacks.test.ts +39 -14
- package/src/public-role-isolation.test.ts +18 -8
- package/src/public-role-isolation.ts +31 -17
- package/src/release-contract.ts +3 -0
- package/src/release-manifest.test.ts +25 -0
- package/src/release-manifest.ts +59 -4
- package/src/remote-mcp-stack-config.test.ts +19 -9
- package/src/remote-mcp.test.ts +252 -57
- package/src/remote-mcp.ts +336 -77
- package/src/runtime-secrets.test.ts +37 -14
- package/src/runtime-secrets.ts +87 -27
- package/src/scheduler-setup.test.ts +201 -0
- package/src/scheduler-setup.ts +375 -0
- package/src/seal-key-rotation.test.ts +2 -2
- package/src/seal-key-rotation.ts +25 -25
- package/src/self-hosted-backup.test.ts +1 -0
- package/src/self-hosted-compose.test.ts +180 -6
- package/src/self-hosted-db-tls.test.ts +111 -0
- package/src/self-hosted-db-tls.ts +287 -0
- package/src/self-hosted-release-resolve.test.ts +71 -0
- package/src/self-hosted-release.ts +41 -11
- package/src/self-hosted-roles.integration.test.ts +2 -0
- package/src/self-hosted-roles.test.ts +87 -3
- package/src/self-hosted-roles.ts +101 -3
- package/src/self-hosted-scheduler-interval.test.ts +66 -0
- package/src/self-hosted-scheduler-interval.ts +79 -0
- package/src/self-hosted-start.test.ts +35 -2
- package/src/self-hosted-start.ts +20 -2
- package/src/self-hosted-upgrade.test.ts +104 -14
- package/src/self-hosted-upgrade.ts +123 -31
- package/src/stack-contract-parity.test.ts +79 -12
- package/src/stack-contract.test.ts +199 -31
- package/src/stack-contract.ts +472 -45
- package/src/stack-converge-secrets.test.ts +28 -13
- package/src/stack-converge.test.ts +203 -28
- package/src/stack-converge.ts +92 -30
- package/src/staging-database.test.ts +114 -0
- package/src/staging-database.ts +148 -0
- package/src/state-store.test.ts +2 -1
- package/src/upgrade/app-roll.ts +97 -19
- package/src/upgrade/converge.ts +249 -19
- package/src/upgrade/health.test.ts +63 -25
- package/src/upgrade/health.ts +54 -22
- package/src/upgrade/image-forms.test.ts +34 -0
- package/src/upgrade/image-forms.ts +23 -8
- package/src/upgrade/release-images.test.ts +5 -1
- package/src/upgrade/release-images.ts +22 -6
- package/src/upgrade/upgrade.test.ts +438 -46
- package/src/upgrade/upgrade.ts +64 -6
- package/src/upgrader-gcp.ts +66 -3
- package/src/upgrader-iam-preflight.test.ts +19 -0
- package/src/upgrader-iam-preflight.ts +6 -0
- package/src/upgrader-job.test.ts +101 -27
- package/src/upgrader-job.ts +27 -14
- package/src/upgrader-records.test.ts +97 -12
- package/src/upgrader-records.ts +28 -11
- package/src/upgrader-setup.test.ts +2 -0
- package/src/upgrader-setup.ts +10 -4
- package/src/wizard.ts +19 -0
- package/src/wizards/gcp-cost.test.ts +103 -0
- package/src/wizards/gcp-cost.ts +125 -18
- package/src/wizards/gcp.ts +164 -22
- package/stacks/aws/Pulumi.yaml +1 -1
- package/stacks/aws/index.ts +72 -14
- package/stacks/azure/index.ts +108 -21
- package/stacks/gcp/Pulumi.yaml +1 -1
- package/stacks/gcp/README.md +1 -0
- package/stacks/gcp/index.ts +133 -24
- package/stacks/gcp-firebase/Pulumi.yaml +1 -1
- package/stacks/gcp-firebase/index.ts +212 -34
- package/stacks/self-hosted/Pulumi.yaml +3 -0
- package/stacks/self-hosted/README.md +6 -1
- package/stacks/self-hosted/index.ts +40 -5
package/dist/agent/run.js
CHANGED
|
@@ -153,7 +153,11 @@ export async function runAgentOnce(deps) {
|
|
|
153
153
|
requestId: request.id,
|
|
154
154
|
targetVersion: m.version,
|
|
155
155
|
trigger: request.trigger,
|
|
156
|
-
digests: {
|
|
156
|
+
digests: {
|
|
157
|
+
admin: m.digests.admin,
|
|
158
|
+
gateway: m.digests.gateway,
|
|
159
|
+
...(m.digests["mcp-auth-proxy"] ? { "mcp-auth-proxy": m.digests["mcp-auth-proxy"] } : {}),
|
|
160
|
+
},
|
|
157
161
|
cliPath: cli.cliPath,
|
|
158
162
|
});
|
|
159
163
|
}
|
package/dist/agent/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/agent/run.ts"],"names":[],"mappings":"AAAA,mCAAmC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,EAAE,kCAAkC,EAA8B,MAAM,mBAAmB,CAAC;AAGnG,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE7D,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAe,MAAM,yBAAyB,CAAC;AAErE,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/agent/run.ts"],"names":[],"mappings":"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"}
|
package/dist/agent-db.js
CHANGED
|
@@ -7746,6 +7746,9 @@ var updatePolicySchema = object({
|
|
|
7746
7746
|
var AUTO_UPDATE_BASES = ["security", "patch", "minor"];
|
|
7747
7747
|
// ../shared/src/base-css.ts
|
|
7748
7748
|
var BASE_TECHNICAL_CSS = "*,*::before,*::after{box-sizing:border-box}" + "body{margin:0}" + "img,picture,video,canvas,svg{display:block;max-width:100%}" + "input,button,textarea,select{font:inherit}" + "body{font-family:var(--font-body,system-ui,sans-serif)}";
|
|
7749
|
+
// ../shared/src/body-cap.ts
|
|
7750
|
+
var DEFAULT_MAX_BODY_BYTES = 64 * 1024;
|
|
7751
|
+
var HARD_MAX_BODY_BYTES = 1024 * 1024;
|
|
7749
7752
|
// ../shared/src/bug-intake.ts
|
|
7750
7753
|
var BUG_INTAKE_PROTOCOL_VERSION = 1;
|
|
7751
7754
|
var BUG_INTAKE_MAX_CLOCK_SKEW_MS = 5 * 60 * 1000;
|
|
@@ -8100,6 +8103,11 @@ var JOURNALED_TABLES = {
|
|
|
8100
8103
|
};
|
|
8101
8104
|
// ../shared/src/css-scope-scan.ts
|
|
8102
8105
|
var GROUPING_AT_RULES = new Set(["media", "supports", "layer", "container", "document"]);
|
|
8106
|
+
// ../shared/src/database-tls.ts
|
|
8107
|
+
var DATABASE_CA_DIR = "/etc/caelo/db-ca";
|
|
8108
|
+
var CLOUD_SQL_CA_BUNDLE = `${DATABASE_CA_DIR}/cloudsql-global.pem`;
|
|
8109
|
+
var AWS_RDS_CA_BUNDLE = `${DATABASE_CA_DIR}/aws-rds-global.pem`;
|
|
8110
|
+
var SELF_HOSTED_CA_FILE = `${DATABASE_CA_DIR}/self-hosted-ca.pem`;
|
|
8103
8111
|
// ../shared/src/interactions.ts
|
|
8104
8112
|
var MOBILE_NAV_CSS = ".caelo-nav-menu .caelo-nav-toggle{display:none;background:none;border:0;cursor:pointer;padding:0.5rem;color:inherit;font:inherit}" + ".caelo-nav-menu .caelo-nav-toggle .caelo-nav-bar{display:block;width:1.25em;height:2px;background:currentColor;margin:0.25em 0}" + "@media (max-width: 720px){" + ".caelo-nav-menu .caelo-nav-toggle{display:inline-block}" + ".caelo-nav-menu > ul{display:none}" + '.caelo-nav-menu[data-nav-open="true"] > ul{display:block}' + "}";
|
|
8105
8113
|
var MOBILE_NAV_JS = "(function(){" + `var S='[data-caelo-ui="mobile-nav"]';` + "function set(nav,open){nav.setAttribute('data-nav-open',String(open));" + "var b=nav.querySelector('.caelo-nav-toggle');if(b)b.setAttribute('aria-expanded',String(open));return b;}" + "document.addEventListener('click',function(e){" + "var t=e.target;if(!(t instanceof Element))return;" + "var b=t.closest('.caelo-nav-toggle');if(!b)return;var nav=b.closest(S);if(!nav)return;" + "set(nav,nav.getAttribute('data-nav-open')!=='true');});" + "document.addEventListener('keydown',function(e){" + "if(e.key!=='Escape')return;var t=e.target;if(!(t instanceof Element))return;" + `var nav=t.closest(S+'[data-nav-open="true"]');if(!nav)return;` + "var b=set(nav,false);if(b)b.focus();});" + "})();";
|
|
@@ -9296,6 +9304,17 @@ var PROPOSAL_STATUSES = ["pending", "applied", "rejected", "superseded"];
|
|
|
9296
9304
|
var proposalStatus = _enum(PROPOSAL_STATUSES);
|
|
9297
9305
|
// ../shared/src/redirect-emit-cloudfront.ts
|
|
9298
9306
|
var CLOUDFRONT_KVS_MAX_TOTAL_BYTES = 5 * 1024 * 1024;
|
|
9307
|
+
// ../shared/src/redirect-emit-gcp.ts
|
|
9308
|
+
var GCP_GATEWAY_PATHS = ["/api/*"];
|
|
9309
|
+
var GCP_MCP_AUTH_PROXY_PATHS = [
|
|
9310
|
+
"/api/mcp/*",
|
|
9311
|
+
"/.well-known/oauth-protected-resource/*",
|
|
9312
|
+
"/.well-known/oauth-authorization-server/*"
|
|
9313
|
+
];
|
|
9314
|
+
var GCP_PUBLIC_BASE_PATHS = [
|
|
9315
|
+
...GCP_GATEWAY_PATHS,
|
|
9316
|
+
...GCP_MCP_AUTH_PROXY_PATHS
|
|
9317
|
+
];
|
|
9299
9318
|
// ../shared/src/redirect-plan.ts
|
|
9300
9319
|
var REDIRECT_STATUSES = new Set([301, 302, 307, 308]);
|
|
9301
9320
|
// ../shared/src/release-manifest.ts
|
|
@@ -9309,8 +9328,18 @@ var ReleaseManifestSchema = object({
|
|
|
9309
9328
|
manifestVersion: literal(1),
|
|
9310
9329
|
version: string2().regex(SEMVER2, "expected a SemVer version without a leading v"),
|
|
9311
9330
|
channel: _enum(RELEASE_CHANNELS),
|
|
9312
|
-
digests: object({
|
|
9313
|
-
|
|
9331
|
+
digests: object({
|
|
9332
|
+
admin: digest,
|
|
9333
|
+
gateway: digest,
|
|
9334
|
+
ops: digest,
|
|
9335
|
+
"mcp-auth-proxy": digest.optional()
|
|
9336
|
+
}),
|
|
9337
|
+
platformDigests: object({
|
|
9338
|
+
admin: digest,
|
|
9339
|
+
gateway: digest,
|
|
9340
|
+
ops: digest,
|
|
9341
|
+
"mcp-auth-proxy": digest.optional()
|
|
9342
|
+
}).optional(),
|
|
9314
9343
|
minFromVersion: string2().regex(SEMVER2),
|
|
9315
9344
|
infraContractVersion: number2().int().positive(),
|
|
9316
9345
|
migrations: object({
|
|
@@ -9344,6 +9373,13 @@ function err(error) {
|
|
|
9344
9373
|
function isErr(result) {
|
|
9345
9374
|
return !result.ok;
|
|
9346
9375
|
}
|
|
9376
|
+
// ../shared/src/session-cookie.ts
|
|
9377
|
+
var SESSION_ENTRY = {
|
|
9378
|
+
visitorId: "vid",
|
|
9379
|
+
login: "login",
|
|
9380
|
+
staging: "staging"
|
|
9381
|
+
};
|
|
9382
|
+
var KNOWN_KEYS = new Set(Object.values(SESSION_ENTRY));
|
|
9347
9383
|
// ../shared/src/skills.ts
|
|
9348
9384
|
var skillAutoEngagementHints = object({
|
|
9349
9385
|
keywords: array(string2().min(1).max(80)).default([]),
|
|
@@ -9414,6 +9450,12 @@ var stageStatusRunSchema = object({
|
|
|
9414
9450
|
// ../shared/src/staging-gate.ts
|
|
9415
9451
|
var STAGING_SESSION_TTL_SECONDS = 12 * 60 * 60;
|
|
9416
9452
|
var ENCODER = new TextEncoder;
|
|
9453
|
+
// ../shared/src/staging-plugin-stub.ts
|
|
9454
|
+
var STAGING_PREVIEW_ERROR_KIND = "StagingPreview";
|
|
9455
|
+
var STAGING_PLUGIN_STUB_BODY = JSON.stringify({
|
|
9456
|
+
ok: false,
|
|
9457
|
+
error: { kind: STAGING_PREVIEW_ERROR_KIND }
|
|
9458
|
+
});
|
|
9417
9459
|
// ../shared/src/static-cache-policy.ts
|
|
9418
9460
|
var PINNED_FONT_SLICE_FILE_PATTERN = "[0-9a-f]{64}\\.[0-9a-f]{12}\\.[a-z]+(?:-[a-z]+)?\\.[0-9a-f]{12}\\.woff2";
|
|
9419
9461
|
var PINNED_FONT_SLICE_FILE_RE = new RegExp(`^${PINNED_FONT_SLICE_FILE_PATTERN}$`);
|
|
@@ -19325,12 +19367,14 @@ class DatabaseAdapter {
|
|
|
19325
19367
|
#adminRaw;
|
|
19326
19368
|
#publicRaw;
|
|
19327
19369
|
#adminUrl;
|
|
19370
|
+
#tls;
|
|
19328
19371
|
#publicUrl;
|
|
19329
19372
|
#listeners = new Map;
|
|
19330
19373
|
#listenLost = new Map;
|
|
19331
19374
|
#listenersClosing = false;
|
|
19332
19375
|
#skipVerify;
|
|
19333
19376
|
#roles;
|
|
19377
|
+
#publicDatabase;
|
|
19334
19378
|
#acquireTimeoutMs;
|
|
19335
19379
|
#guard = new PoolGuard;
|
|
19336
19380
|
#verifyPromise = null;
|
|
@@ -19339,6 +19383,7 @@ class DatabaseAdapter {
|
|
|
19339
19383
|
#drizzleOptions;
|
|
19340
19384
|
constructor(config) {
|
|
19341
19385
|
this.#roles = config.expectedRoles ?? DEFAULT_ROLES;
|
|
19386
|
+
this.#publicDatabase = config.publicDatabase ?? "cms_public";
|
|
19342
19387
|
if (config.adminDatabaseUrl === null !== (this.#roles.admin === null)) {
|
|
19343
19388
|
throw new Error("DatabaseAdapter: a public-only adapter (adminDatabaseUrl: null) must expect no admin role, and an adapter with an admin URL must expect one");
|
|
19344
19389
|
}
|
|
@@ -19346,7 +19391,9 @@ class DatabaseAdapter {
|
|
|
19346
19391
|
const poolMax = resolvePoolMax(config.poolMax);
|
|
19347
19392
|
const publicPoolMax = resolvePublicPoolMax(config.publicPoolMax, config.poolMax);
|
|
19348
19393
|
const idleTimeout = config.poolIdleTimeoutSeconds ?? POOL_IDLE_TIMEOUT_SECONDS;
|
|
19349
|
-
|
|
19394
|
+
this.#tls = config.tls ?? null;
|
|
19395
|
+
const tls = this.#tls ? { tls: this.#tls } : {};
|
|
19396
|
+
const open = (url, max) => new SQL3(url, max === undefined ? { idleTimeout, ...tls } : { max, idleTimeout, ...tls });
|
|
19350
19397
|
this.#adminRaw = config.adminDatabaseUrl === null ? null : open(config.adminDatabaseUrl, poolMax);
|
|
19351
19398
|
this.#publicRaw = open(config.publicDatabaseUrl, publicPoolMax);
|
|
19352
19399
|
this.#adminUrl = config.adminDatabaseUrl;
|
|
@@ -19478,8 +19525,8 @@ class DatabaseAdapter {
|
|
|
19478
19525
|
}
|
|
19479
19526
|
return;
|
|
19480
19527
|
}
|
|
19481
|
-
if (id.database !==
|
|
19482
|
-
throw new Error(`DatabaseAdapter public pool expected database
|
|
19528
|
+
if (id.database !== this.#publicDatabase) {
|
|
19529
|
+
throw new Error(`DatabaseAdapter public pool expected database ${this.#publicDatabase} but connected to ${id.database}. Check ${this.#publicDatabase === "cms_public" ? "PUBLIC_DATABASE_URL / PUBLIC_ADMIN_DATABASE_URL" : "PUBLIC_DATABASE_URL / PUBLIC_STAGING_ADMIN_DATABASE_URL"}.`);
|
|
19483
19530
|
}
|
|
19484
19531
|
if (!this.#roles.public.includes(id.user)) {
|
|
19485
19532
|
throw new Error(`DatabaseAdapter public pool expected user ${this.#roles.public.join(" or ")}, got ${id.user}.`);
|
|
@@ -19668,6 +19715,7 @@ class DatabaseAdapter {
|
|
|
19668
19715
|
if (!conn) {
|
|
19669
19716
|
conn = new SQL3(url, {
|
|
19670
19717
|
max: LISTEN_CONNECTIONS_PER_INSTANCE,
|
|
19718
|
+
...this.#tls ? { tls: this.#tls } : {},
|
|
19671
19719
|
onclose: (cause) => {
|
|
19672
19720
|
if (this.#listenersClosing)
|
|
19673
19721
|
return;
|
|
@@ -19833,12 +19881,23 @@ class DatabaseAdapter {
|
|
|
19833
19881
|
const outcome = await this.#transaction("public", "provisionPluginPublicSchema", async (tx) => {
|
|
19834
19882
|
return provisionPluginSchemaInTx(tx, "provisionPluginPublicSchema", opts);
|
|
19835
19883
|
});
|
|
19836
|
-
|
|
19837
|
-
|
|
19838
|
-
|
|
19839
|
-
|
|
19840
|
-
|
|
19884
|
+
const result = {
|
|
19885
|
+
database: this.#publicDatabase,
|
|
19886
|
+
schemaName: outcome.schemaName,
|
|
19887
|
+
droppedColumns: outcome.droppedColumns
|
|
19888
|
+
};
|
|
19889
|
+
if (outcome.droppedColumns.length > 0 && this.#adminRaw !== null) {
|
|
19890
|
+
await this.auditPluginSchemaDrop(opts.pluginId, result);
|
|
19841
19891
|
}
|
|
19892
|
+
return result;
|
|
19893
|
+
}
|
|
19894
|
+
async auditPluginSchemaDrop(pluginId, outcome) {
|
|
19895
|
+
if (outcome.droppedColumns.length === 0)
|
|
19896
|
+
return;
|
|
19897
|
+
await this.#transaction("admin", "provisionPluginPublicSchema", async (tx) => {
|
|
19898
|
+
await tx.execute(sql.raw("SELECT set_config('caelo.actor_kind', 'system', true)"));
|
|
19899
|
+
await auditDroppedColumns(tx, outcome.database, pluginId, outcome);
|
|
19900
|
+
});
|
|
19842
19901
|
}
|
|
19843
19902
|
async provisionPluginAdminSchema(opts) {
|
|
19844
19903
|
if (!/^[0-9a-f-]{36}$/i.test(opts.pluginId)) {
|
package/dist/aws-task-roles.d.ts
CHANGED
|
@@ -10,11 +10,13 @@
|
|
|
10
10
|
/** The Secrets Manager entries the AWS stack creates (`caelo-<env>-<name>`). */
|
|
11
11
|
export type AwsSecret = "postgres-password" | "public-role-password" | "csrf-secret" | "cookie-secret" | "anthropic-api-key" | "resend-api-key";
|
|
12
12
|
/** A service with its own ECS task role. */
|
|
13
|
-
export type AwsTaskService = "admin" | "gateway";
|
|
13
|
+
export type AwsTaskService = "admin" | "gateway" | "mcp-auth-proxy";
|
|
14
14
|
/**
|
|
15
15
|
* The secrets each service's task role may read. The admin side (admin and
|
|
16
16
|
* its in-process workers) reads all of them; the gateway reads only
|
|
17
|
-
* public_role's password — its one database login
|
|
17
|
+
* public_role's password — its one database login; the MCP-Auth-Proxy
|
|
18
|
+
* (#1328) reads none: remote MCP is not available on AWS, so it holds
|
|
19
|
+
* neither a database login nor the broker's keys.
|
|
18
20
|
*/
|
|
19
21
|
export declare const AWS_SERVICE_SECRETS: Readonly<Record<AwsTaskService, readonly AwsSecret[]>>;
|
|
20
22
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aws-task-roles.d.ts","sourceRoot":"","sources":["../src/aws-task-roles.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AAEH,gFAAgF;AAChF,MAAM,MAAM,SAAS,GACjB,mBAAmB,GACnB,sBAAsB,GACtB,aAAa,GACb,eAAe,GACf,mBAAmB,GACnB,gBAAgB,CAAC;AAErB,4CAA4C;AAC5C,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"aws-task-roles.d.ts","sourceRoot":"","sources":["../src/aws-task-roles.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AAEH,gFAAgF;AAChF,MAAM,MAAM,SAAS,GACjB,mBAAmB,GACnB,sBAAsB,GACtB,aAAa,GACb,eAAe,GACf,mBAAmB,GACnB,gBAAgB,CAAC;AAErB,4CAA4C;AAC5C,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,SAAS,GAAG,gBAAgB,CAAC;AAEpE;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,EAAE,QAAQ,CAAC,MAAM,CAAC,cAAc,EAAE,SAAS,SAAS,EAAE,CAAC,CAWtF,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,CAQvE"}
|
package/dist/aws-task-roles.js
CHANGED
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* The secrets each service's task role may read. The admin side (admin and
|
|
4
4
|
* its in-process workers) reads all of them; the gateway reads only
|
|
5
|
-
* public_role's password — its one database login
|
|
5
|
+
* public_role's password — its one database login; the MCP-Auth-Proxy
|
|
6
|
+
* (#1328) reads none: remote MCP is not available on AWS, so it holds
|
|
7
|
+
* neither a database login nor the broker's keys.
|
|
6
8
|
*/
|
|
7
9
|
export const AWS_SERVICE_SECRETS = {
|
|
8
10
|
admin: [
|
|
@@ -14,6 +16,7 @@ export const AWS_SERVICE_SECRETS = {
|
|
|
14
16
|
"resend-api-key",
|
|
15
17
|
],
|
|
16
18
|
gateway: ["public-role-password"],
|
|
19
|
+
"mcp-auth-proxy": [],
|
|
17
20
|
};
|
|
18
21
|
/**
|
|
19
22
|
* The IAM policy document letting a task role read exactly `secretArns`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aws-task-roles.js","sourceRoot":"","sources":["../src/aws-task-roles.ts"],"names":[],"mappings":"AAAA,mCAAmC;AAwBnC
|
|
1
|
+
{"version":3,"file":"aws-task-roles.js","sourceRoot":"","sources":["../src/aws-task-roles.ts"],"names":[],"mappings":"AAAA,mCAAmC;AAwBnC;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAA2D;IACzF,KAAK,EAAE;QACL,mBAAmB;QACnB,sBAAsB;QACtB,aAAa;QACb,eAAe;QACf,mBAAmB;QACnB,gBAAgB;KACjB;IACD,OAAO,EAAE,CAAC,sBAAsB,CAAC;IACjC,gBAAgB,EAAE,EAAE;CACrB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,UAA6B;IAC7D,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,mCAAmC,CAAC,CAAC;IAClF,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,OAAO,EAAE,YAAY;QACrB,SAAS,EAAE;YACT,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,+BAA+B,EAAE,QAAQ,EAAE,CAAC,GAAG,UAAU,CAAC,EAAE;SACxF;KACF,CAAC,CAAC;AACL,CAAC"}
|
package/dist/caddy.d.ts
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
export interface CaddyDomainSpec {
|
|
2
2
|
readonly hostname: string;
|
|
3
|
-
|
|
3
|
+
/**
|
|
4
|
+
* `mcp` (#1328) is the MCP-Auth-Proxy's own host: remote MCP's sign-in
|
|
5
|
+
* pages and its forwarder must never share an origin with the site, whose
|
|
6
|
+
* module JS could otherwise read them same-origin or toss their cookies.
|
|
7
|
+
*/
|
|
8
|
+
readonly kind: "admin" | "public" | "mcp";
|
|
4
9
|
readonly env: "production" | "staging";
|
|
5
10
|
}
|
|
6
11
|
/**
|
|
@@ -19,16 +24,28 @@ export interface CaddyfileSpec {
|
|
|
19
24
|
readonly adminUpstream: string;
|
|
20
25
|
/** `host:port` of the API gateway as Caddy reaches it (Compose: `caelo-gateway:8090`). */
|
|
21
26
|
readonly gatewayUpstream: string;
|
|
27
|
+
/** `host:port` of the MCP-Auth-Proxy as Caddy reaches it (Compose: `caelo-mcp-auth-proxy:8095`). */
|
|
28
|
+
readonly mcpAuthProxyUpstream: string;
|
|
22
29
|
readonly domains: ReadonlyArray<CaddyDomainSpec>;
|
|
23
30
|
}
|
|
24
31
|
/** The host the admin of a self-hosted install answers on (same convention as GCP). */
|
|
25
32
|
export declare function selfHostedAdminHost(domain: string): string;
|
|
33
|
+
/** #1328 — the host the MCP-Auth-Proxy of a self-hosted install answers on. */
|
|
34
|
+
export declare function selfHostedMcpHost(domain: string): string;
|
|
26
35
|
/**
|
|
27
36
|
* The vhosts every self-hosted install serves before an Owner adds domains
|
|
28
37
|
* in the admin: the admin on `admin.<domain>`, the live site on `<domain>`,
|
|
29
|
-
* the staging site on its own host. The admin needs its own host — it
|
|
30
|
-
*
|
|
31
|
-
*
|
|
38
|
+
* the staging site on its own host. The admin needs its own host — it routes
|
|
39
|
+
* from `/` (`/setup`, `/login`, …), so it cannot share one with the public
|
|
40
|
+
* site, and Caddy refuses two site blocks for the same address.
|
|
41
|
+
*
|
|
42
|
+
* #1328 — the MCP-Auth-Proxy's vhost (`mcp.<domain>`, kind `mcp`) is not
|
|
43
|
+
* seeded: remote MCP needs an identity proxy in front of the admin (§11.B),
|
|
44
|
+
* which a self-hosted install does not have yet, so the proxy runs
|
|
45
|
+
* unexposed on the Compose network (E14 a: provisioned, fixed 404) — the
|
|
46
|
+
* same honest refusal as on aws and azure. Seeding it would make Caddy
|
|
47
|
+
* fetch and retry an ACME certificate for a host nobody has a DNS record
|
|
48
|
+
* for. The vhost comes with remote MCP on self-hosted.
|
|
32
49
|
*/
|
|
33
50
|
export declare function selfHostedSeedDomains(domain: string, stagingDomain: string): CaddyDomainSpec[];
|
|
34
51
|
/**
|
package/dist/caddy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"caddy.d.ts","sourceRoot":"","sources":["../src/caddy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"caddy.d.ts","sourceRoot":"","sources":["../src/caddy.ts"],"names":[],"mappings":"AAsEA,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,KAAK,CAAC;IAC1C,QAAQ,CAAC,GAAG,EAAE,YAAY,GAAG,SAAS,CAAC;CACxC;AAED;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,UAAU,CAAC;AAE/C,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,GAAG,EAAE,YAAY,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,kFAAkF;IAClF,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,0FAA0F;IAC1F,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,oGAAoG;IACpG,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC,eAAe,CAAC,CAAC;CAClD;AAED,uFAAuF;AACvF,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE1D;AAED,+EAA+E;AAC/E,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,eAAe,EAAE,CAM9F;AAYD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,IAAI,CAOzF;AAWD,iFAAiF;AACjF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CA6C7D"}
|
package/dist/caddy.js
CHANGED
|
@@ -10,6 +10,8 @@
|
|
|
10
10
|
* Per-vhost shape:
|
|
11
11
|
* <hostname> {
|
|
12
12
|
* # admin → reverse_proxy <adminUpstream>
|
|
13
|
+
* # mcp → reverse_proxy <mcpAuthProxyUpstream> (#1328: the
|
|
14
|
+
* # MCP-Auth-Proxy on its own host, never the site's origin)
|
|
13
15
|
* # public → /api/* → <gatewayUpstream>; everything else is the
|
|
14
16
|
* # static site (try_files + file_server, 404 → /404.html)
|
|
15
17
|
* }
|
|
@@ -61,12 +63,24 @@ import { CONTENT_HASHED_PATH_PATTERN, caddyRedirectsImport, IMMUTABLE_CACHE_CONT
|
|
|
61
63
|
export function selfHostedAdminHost(domain) {
|
|
62
64
|
return `admin.${domain}`;
|
|
63
65
|
}
|
|
66
|
+
/** #1328 — the host the MCP-Auth-Proxy of a self-hosted install answers on. */
|
|
67
|
+
export function selfHostedMcpHost(domain) {
|
|
68
|
+
return `mcp.${domain}`;
|
|
69
|
+
}
|
|
64
70
|
/**
|
|
65
71
|
* The vhosts every self-hosted install serves before an Owner adds domains
|
|
66
72
|
* in the admin: the admin on `admin.<domain>`, the live site on `<domain>`,
|
|
67
|
-
* the staging site on its own host. The admin needs its own host — it
|
|
68
|
-
*
|
|
69
|
-
*
|
|
73
|
+
* the staging site on its own host. The admin needs its own host — it routes
|
|
74
|
+
* from `/` (`/setup`, `/login`, …), so it cannot share one with the public
|
|
75
|
+
* site, and Caddy refuses two site blocks for the same address.
|
|
76
|
+
*
|
|
77
|
+
* #1328 — the MCP-Auth-Proxy's vhost (`mcp.<domain>`, kind `mcp`) is not
|
|
78
|
+
* seeded: remote MCP needs an identity proxy in front of the admin (§11.B),
|
|
79
|
+
* which a self-hosted install does not have yet, so the proxy runs
|
|
80
|
+
* unexposed on the Compose network (E14 a: provisioned, fixed 404) — the
|
|
81
|
+
* same honest refusal as on aws and azure. Seeding it would make Caddy
|
|
82
|
+
* fetch and retry an ACME certificate for a host nobody has a DNS record
|
|
83
|
+
* for. The vhost comes with remote MCP on self-hosted.
|
|
70
84
|
*/
|
|
71
85
|
export function selfHostedSeedDomains(domain, stagingDomain) {
|
|
72
86
|
return [
|
|
@@ -113,6 +127,7 @@ export function generateCaddyfile(spec) {
|
|
|
113
127
|
assertSafeCaddyToken("stagingSiteRoot", spec.stagingSiteRoot, "token");
|
|
114
128
|
assertSafeCaddyToken("adminUpstream", spec.adminUpstream, "token");
|
|
115
129
|
assertSafeCaddyToken("gatewayUpstream", spec.gatewayUpstream, "token");
|
|
130
|
+
assertSafeCaddyToken("mcpAuthProxyUpstream", spec.mcpAuthProxyUpstream, "token");
|
|
116
131
|
const hostnames = new Set();
|
|
117
132
|
for (const d of spec.domains) {
|
|
118
133
|
assertSafeCaddyToken("hostname", d.hostname, "address");
|
|
@@ -150,6 +165,15 @@ function vhost(d, spec) {
|
|
|
150
165
|
return `${d.hostname} {${noindex}
|
|
151
166
|
reverse_proxy ${spec.adminUpstream}
|
|
152
167
|
}
|
|
168
|
+
`;
|
|
169
|
+
}
|
|
170
|
+
if (d.kind === "mcp") {
|
|
171
|
+
// Everything on this host goes to the proxy: it answers its own 404s.
|
|
172
|
+
return `${d.hostname} {
|
|
173
|
+
header X-Robots-Tag "noindex"
|
|
174
|
+
header X-Content-Type-Options "${NOSNIFF}"
|
|
175
|
+
reverse_proxy ${spec.mcpAuthProxyUpstream}
|
|
176
|
+
}
|
|
153
177
|
`;
|
|
154
178
|
}
|
|
155
179
|
// public — API routes go to the gateway, the rest is the static site.
|
package/dist/caddy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"caddy.js","sourceRoot":"","sources":["../src/caddy.ts"],"names":[],"mappings":"AAAA,mCAAmC;AAEnC
|
|
1
|
+
{"version":3,"file":"caddy.js","sourceRoot":"","sources":["../src/caddy.ts"],"names":[],"mappings":"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"}
|
package/dist/cli-routing.js
CHANGED
|
@@ -136,7 +136,7 @@ export const CLI_COMMANDS = [
|
|
|
136
136
|
];
|
|
137
137
|
/** The text `cms-provision --help` prints, built from {@link CLI_COMMANDS}. */
|
|
138
138
|
export function cliUsage() {
|
|
139
|
-
return (`Usage: cms-provision [wizard] [--provider <name> --domain <d> [--staging-domain <host>] --owner-email <e> --region <r>] [--local|--install-job] | <${CLI_COMMANDS.map((c) => c.name).join("|")}> [options]\n` +
|
|
139
|
+
return (`Usage: cms-provision [wizard] [--provider <name> --domain <d> [--staging-domain <host>] --owner-email <e> --region <r> [--scheduler-interval-minutes 1-15]] [--local|--install-job] | <${CLI_COMMANDS.map((c) => c.name).join("|")}> [options]\n` +
|
|
140
140
|
"With several installs on this machine, pick one with --install <install-id or domain> (status, upgrade and backup also take --install all); in a terminal you are asked otherwise.\n" +
|
|
141
141
|
"Pass --no-wizard with no sub-command to print this usage instead of the wizard.");
|
|
142
142
|
}
|
package/dist/cli-routing.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-routing.js","sourceRoot":"","sources":["../src/cli-routing.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cli-routing.js","sourceRoot":"","sources":["../src/cli-routing.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -41,12 +41,14 @@ import { generateBootstrapToken } from "./bootstrap-token.js";
|
|
|
41
41
|
import { caddyTokenProblem, generateCaddyfile, selfHostedAdminHost, selfHostedSeedDomains, } from "./caddy.js";
|
|
42
42
|
import { redactCredentials } from "./checkpoint-secrets.js";
|
|
43
43
|
import { cliUsage, initDelegatesToWizard, resolveCliRoute } from "./cli-routing.js";
|
|
44
|
-
import { BOOTSTRAP_DIR, COMPOSE_ADMIN_UPSTREAM, COMPOSE_GATEWAY_UPSTREAM, composeProjectName, generateDockerCompose, isPublishablePort, MEDIA_DIR, SITE_OUTPUT_ROOT, selfHostedSiteUrl, } from "./compose.js";
|
|
44
|
+
import { BOOTSTRAP_DIR, COMPOSE_ADMIN_UPSTREAM, COMPOSE_GATEWAY_UPSTREAM, COMPOSE_MCP_AUTH_PROXY_UPSTREAM, composeProjectName, generateDockerCompose, isPublishablePort, MEDIA_DIR, SITE_OUTPUT_ROOT, selfHostedSiteUrl, } from "./compose.js";
|
|
45
45
|
import { tightenPrivateTree, writePrivateFile } from "./private-file.js";
|
|
46
46
|
import { selfCommand } from "./self-command.js";
|
|
47
|
+
import { ensureSelfHostedDbTls, selfHostedDbTlsServerCertSha256 } from "./self-hosted-db-tls.js";
|
|
47
48
|
import { ensureInternalSecret, writeInternalSecret } from "./self-hosted-internal-secret.js";
|
|
48
49
|
import { bunHostRunner, readRelease, recordRelease, releaseImages, resolveVerifiedRelease, } from "./self-hosted-release.js";
|
|
49
|
-
import { convergeSelfHostedRoles, decideUp, selfHostedBootstrapScript, } from "./self-hosted-roles.js";
|
|
50
|
+
import { applyPreMigrationRoles, convergeSelfHostedRoles, decideUp, selfHostedBootstrapScript, } from "./self-hosted-roles.js";
|
|
51
|
+
import { parseSchedulerIntervalMinutes } from "./stack-contract.js";
|
|
50
52
|
const REPO_ROOT = resolve(import.meta.dir, "../../..");
|
|
51
53
|
/**
|
|
52
54
|
* Whether this CLI runs from a Caelo source checkout (contributor) rather
|
|
@@ -138,6 +140,15 @@ function loadConfig() {
|
|
|
138
140
|
cfg.composeProject ??= "caelo";
|
|
139
141
|
saveConfig(cfg);
|
|
140
142
|
}
|
|
143
|
+
// #1329 — the staging gateway's login came with the staging database. An
|
|
144
|
+
// install from before gets its own password now; the next `up` or
|
|
145
|
+
// upgrade creates the role with it (self-hosted-roles.ts) before anything
|
|
146
|
+
// uses it, so the roles count as not converged until then.
|
|
147
|
+
if (cfg.rolePasswords && !cfg.rolePasswords.publicStaging) {
|
|
148
|
+
cfg.rolePasswords = { ...cfg.rolePasswords, publicStaging: randomSecret(32) };
|
|
149
|
+
cfg.rolesConverged = false;
|
|
150
|
+
saveConfig(cfg);
|
|
151
|
+
}
|
|
141
152
|
return cfg;
|
|
142
153
|
}
|
|
143
154
|
function saveConfig(c) {
|
|
@@ -151,9 +162,9 @@ function arg(name) {
|
|
|
151
162
|
return undefined;
|
|
152
163
|
return process.argv[idx + 1];
|
|
153
164
|
}
|
|
154
|
-
/** Fresh passwords for the
|
|
165
|
+
/** Fresh passwords for the application roles. */
|
|
155
166
|
function newRolePasswords() {
|
|
156
|
-
return { admin: randomSecret(32), public: randomSecret(32) };
|
|
167
|
+
return { admin: randomSecret(32), public: randomSecret(32), publicStaging: randomSecret(32) };
|
|
157
168
|
}
|
|
158
169
|
function emitConfig(cfg, extraDomains = []) {
|
|
159
170
|
// Back-fill caeloSecretKek for installs created before P18. Persists
|
|
@@ -189,6 +200,7 @@ function writeCaddyfile(cfg, extraDomains) {
|
|
|
189
200
|
// localhost (#707).
|
|
190
201
|
adminUpstream: COMPOSE_ADMIN_UPSTREAM,
|
|
191
202
|
gatewayUpstream: COMPOSE_GATEWAY_UPSTREAM,
|
|
203
|
+
mcpAuthProxyUpstream: COMPOSE_MCP_AUTH_PROXY_UPSTREAM,
|
|
192
204
|
domains: dedupeDomains([
|
|
193
205
|
...selfHostedSeedDomains(cfg.domain, cfg.stagingDomain),
|
|
194
206
|
...extraDomains,
|
|
@@ -222,6 +234,10 @@ function renderCompose(cfg, images) {
|
|
|
222
234
|
if (!cfg.ports || !cfg.composeProject) {
|
|
223
235
|
throw new Error("config has no ports / composeProject — they are back-filled on load; this is a bug");
|
|
224
236
|
}
|
|
237
|
+
// #1338 — the install's database CA + server certificate the Compose file
|
|
238
|
+
// mounts (created once, the server certificate renewed when due).
|
|
239
|
+
for (const line of ensureSelfHostedDbTls(CAELO_DIR))
|
|
240
|
+
console.log(` database TLS: ${line}`);
|
|
225
241
|
return generateDockerCompose({
|
|
226
242
|
domain: cfg.domain,
|
|
227
243
|
postgresPassword: cfg.postgresPassword,
|
|
@@ -229,6 +245,7 @@ function renderCompose(cfg, images) {
|
|
|
229
245
|
caeloSecretKek: cfg.caeloSecretKek,
|
|
230
246
|
// #770 — every render (up, upgrade, agent apply) hands the admin the
|
|
231
247
|
// secret host-side commands sign their /api/internal/* tokens with.
|
|
248
|
+
dbTlsServerCertSha256: selfHostedDbTlsServerCertSha256(CAELO_DIR),
|
|
232
249
|
internalSecret: ensureInternalSecret(CAELO_DIR, {
|
|
233
250
|
randomSecret: () => randomSecret(48),
|
|
234
251
|
report: (line) => console.log(line),
|
|
@@ -239,6 +256,9 @@ function renderCompose(cfg, images) {
|
|
|
239
256
|
images,
|
|
240
257
|
ports: cfg.ports,
|
|
241
258
|
project: cfg.composeProject,
|
|
259
|
+
...(cfg.schedulerIntervalMinutes !== undefined
|
|
260
|
+
? { schedulerIntervalMinutes: cfg.schedulerIntervalMinutes }
|
|
261
|
+
: {}),
|
|
242
262
|
...(activeAgent(cfg) ? { agent: activeAgent(cfg) } : {}),
|
|
243
263
|
});
|
|
244
264
|
}
|
|
@@ -275,6 +295,20 @@ function agentContext(cfg) {
|
|
|
275
295
|
...(activeAgent(cfg) ? { agentPassword: activeAgent(cfg)?.dbPassword } : {}),
|
|
276
296
|
});
|
|
277
297
|
},
|
|
298
|
+
applyPreMigrationRoles: () => {
|
|
299
|
+
if (!cfg.rolePasswords) {
|
|
300
|
+
return Promise.resolve({
|
|
301
|
+
ok: false,
|
|
302
|
+
reachable: true,
|
|
303
|
+
error: "config.json has no role passwords — run `cms-provision up` first",
|
|
304
|
+
});
|
|
305
|
+
}
|
|
306
|
+
return applyPreMigrationRoles({
|
|
307
|
+
probe: postgresIsUp,
|
|
308
|
+
psql: superuserPsql,
|
|
309
|
+
stagingPassword: cfg.rolePasswords.publicStaging,
|
|
310
|
+
});
|
|
311
|
+
},
|
|
278
312
|
renderCompose: (images) => renderCompose(cfg, images),
|
|
279
313
|
refreshCaddy: () => refreshCaddyfile(cfg),
|
|
280
314
|
randomSecret: () => randomSecret(32),
|
|
@@ -413,7 +447,7 @@ async function init() {
|
|
|
413
447
|
return;
|
|
414
448
|
}
|
|
415
449
|
if (!domain || !ownerEmail) {
|
|
416
|
-
console.error("Usage: cms-provision init [--provider self-hosted] --domain example.com [--staging-domain staging.example.com] --owner-email me@example.com [--version x.y.z] [--skip-verify] [--dev] [--tls acme|internal] [--http-port 80] [--https-port 443]\n" +
|
|
450
|
+
console.error("Usage: cms-provision init [--provider self-hosted] --domain example.com [--staging-domain staging.example.com] --owner-email me@example.com [--version x.y.z] [--skip-verify] [--dev] [--tls acme|internal] [--http-port 80] [--https-port 443] [--scheduler-interval-minutes 5]\n" +
|
|
417
451
|
"Cloud providers (gcp | gcp-firebase | aws | azure) run the wizard: cms-provision --provider <name>");
|
|
418
452
|
process.exit(2);
|
|
419
453
|
}
|
|
@@ -427,6 +461,18 @@ async function init() {
|
|
|
427
461
|
console.error("--http-port and --https-port must differ");
|
|
428
462
|
process.exit(2);
|
|
429
463
|
}
|
|
464
|
+
const schedulerArg = arg("scheduler-interval-minutes");
|
|
465
|
+
let schedulerIntervalMinutes;
|
|
466
|
+
try {
|
|
467
|
+
schedulerIntervalMinutes =
|
|
468
|
+
schedulerArg === undefined
|
|
469
|
+
? undefined
|
|
470
|
+
: parseSchedulerIntervalMinutes(schedulerArg, "--scheduler-interval-minutes");
|
|
471
|
+
}
|
|
472
|
+
catch (e) {
|
|
473
|
+
console.error(e.message);
|
|
474
|
+
process.exit(2);
|
|
475
|
+
}
|
|
430
476
|
const stagingArg = arg("staging-domain");
|
|
431
477
|
const stagingProblem = stagingArg
|
|
432
478
|
? stagingHostProblem(stagingArg, {
|
|
@@ -494,6 +540,7 @@ async function init() {
|
|
|
494
540
|
tls,
|
|
495
541
|
ports,
|
|
496
542
|
composeProject: composeProjectName(domain),
|
|
543
|
+
...(schedulerIntervalMinutes !== undefined ? { schedulerIntervalMinutes } : {}),
|
|
497
544
|
};
|
|
498
545
|
saveConfig(cfg);
|
|
499
546
|
// P15.1 — the shared HMAC secret for /api/internal/* endpoints, read by
|
|
@@ -825,7 +872,7 @@ async function upgradeSelfHostedCommand(opts) {
|
|
|
825
872
|
if (cfg.imageMode === "dev") {
|
|
826
873
|
console.error("This is a DEV MODE install: the admin + gateway run your Caelo checkout, so there are\n" +
|
|
827
874
|
"no images to upgrade. Update the checkout (git pull), then `bun packages/provisioning/src/cli.ts migrate` and\n" +
|
|
828
|
-
`\`docker compose -f ${COMPOSE_PATH} restart caelo-admin caelo-gateway\`.`);
|
|
875
|
+
`\`docker compose -f ${COMPOSE_PATH} restart caelo-admin caelo-gateway caelo-mcp-auth-proxy\`.`);
|
|
829
876
|
process.exit(2);
|
|
830
877
|
}
|
|
831
878
|
const { upgradeSelfHosted } = await import("./self-hosted-upgrade.js");
|
|
@@ -851,6 +898,7 @@ async function upgradeSelfHostedCommand(opts) {
|
|
|
851
898
|
runner: bunHostRunner,
|
|
852
899
|
renderCompose: (images) => renderCompose(cfg, images),
|
|
853
900
|
convergeRoles: agentContext(cfg).convergeRoles,
|
|
901
|
+
applyPreMigrationRoles: agentContext(cfg).applyPreMigrationRoles,
|
|
854
902
|
refreshCaddy: () => refreshCaddyfile(cfg),
|
|
855
903
|
log: {
|
|
856
904
|
step: (m) => console.log(`\n==> ${m}`),
|
|
@@ -1347,13 +1395,26 @@ async function waitForDomainMappingCert(target) {
|
|
|
1347
1395
|
* §11.C — interactive wizard. Loaded lazily so the bare-CLI startup
|
|
1348
1396
|
* cost stays small (clack + kleur are pulled in only when needed).
|
|
1349
1397
|
* Reads `--provider`, `--domain`, `--owner-email`, `--project-id`, `--region`,
|
|
1350
|
-
* `--non-interactive` and the run mode (`--local` / `--install-job`, default:
|
|
1398
|
+
* `--scheduler-interval-minutes` (#1140), `--non-interactive` and the run mode (`--local` / `--install-job`, default:
|
|
1351
1399
|
* the install job in Cloud Shell, local elsewhere — run-mode.ts) from argv.
|
|
1352
1400
|
*/
|
|
1353
1401
|
async function wizardCommand() {
|
|
1354
1402
|
const { runWizard } = await import("./wizard.js");
|
|
1355
1403
|
const { chooseRunMode } = await import("./run-mode.js");
|
|
1404
|
+
const schedulerArg = arg("scheduler-interval-minutes");
|
|
1405
|
+
let schedulerIntervalMinutes;
|
|
1406
|
+
try {
|
|
1407
|
+
schedulerIntervalMinutes =
|
|
1408
|
+
schedulerArg === undefined
|
|
1409
|
+
? undefined
|
|
1410
|
+
: parseSchedulerIntervalMinutes(schedulerArg, "--scheduler-interval-minutes");
|
|
1411
|
+
}
|
|
1412
|
+
catch (e) {
|
|
1413
|
+
console.error(e.message);
|
|
1414
|
+
process.exit(2);
|
|
1415
|
+
}
|
|
1356
1416
|
await runWizard({
|
|
1417
|
+
...(schedulerIntervalMinutes !== undefined ? { schedulerIntervalMinutes } : {}),
|
|
1357
1418
|
runMode: chooseRunMode(process.argv, process.env),
|
|
1358
1419
|
nonInteractive: process.argv.includes("--non-interactive"),
|
|
1359
1420
|
provider: arg("provider"),
|