@caelo-cms/provisioning 0.1.0 → 0.2.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.
Files changed (96) hide show
  1. package/dist/adapter.d.ts +95 -0
  2. package/dist/adapter.d.ts.map +1 -0
  3. package/dist/adapter.js +3 -0
  4. package/dist/adapter.js.map +1 -0
  5. package/dist/bootstrap-token.d.ts +11 -0
  6. package/dist/bootstrap-token.d.ts.map +1 -0
  7. package/dist/bootstrap-token.js +9 -0
  8. package/dist/bootstrap-token.js.map +1 -0
  9. package/dist/caddy.d.ts +34 -0
  10. package/dist/caddy.d.ts.map +1 -0
  11. package/dist/caddy.js +53 -0
  12. package/dist/caddy.js.map +1 -0
  13. package/{src/cdn-copy.ts → dist/cdn-copy.d.ts} +11 -42
  14. package/dist/cdn-copy.d.ts.map +1 -0
  15. package/dist/cdn-copy.js +48 -0
  16. package/dist/cdn-copy.js.map +1 -0
  17. package/dist/cli.d.ts +3 -0
  18. package/dist/cli.d.ts.map +1 -0
  19. package/dist/cli.js +670 -0
  20. package/dist/cli.js.map +1 -0
  21. package/dist/compose.d.ts +27 -0
  22. package/dist/compose.d.ts.map +1 -0
  23. package/{src/compose.ts → dist/compose.js} +15 -35
  24. package/dist/compose.js.map +1 -0
  25. package/dist/dns/cloudflare.d.ts +9 -0
  26. package/dist/dns/cloudflare.d.ts.map +1 -0
  27. package/dist/dns/cloudflare.js +160 -0
  28. package/dist/dns/cloudflare.js.map +1 -0
  29. package/dist/dns/index.d.ts +12 -0
  30. package/dist/dns/index.d.ts.map +1 -0
  31. package/dist/dns/index.js +42 -0
  32. package/dist/dns/index.js.map +1 -0
  33. package/dist/dns/manual.d.ts +5 -0
  34. package/dist/dns/manual.d.ts.map +1 -0
  35. package/dist/dns/manual.js +96 -0
  36. package/dist/dns/manual.js.map +1 -0
  37. package/dist/dns/types.d.ts +23 -0
  38. package/dist/dns/types.d.ts.map +1 -0
  39. package/dist/dns/types.js +3 -0
  40. package/dist/dns/types.js.map +1 -0
  41. package/dist/gcloud.d.ts +42 -0
  42. package/dist/gcloud.d.ts.map +1 -0
  43. package/dist/gcloud.js +187 -0
  44. package/dist/gcloud.js.map +1 -0
  45. package/dist/index.d.ts +22 -0
  46. package/dist/index.d.ts.map +1 -0
  47. package/dist/index.js +7 -0
  48. package/dist/index.js.map +1 -0
  49. package/dist/install-state.d.ts +54 -0
  50. package/dist/install-state.d.ts.map +1 -0
  51. package/dist/install-state.js +118 -0
  52. package/dist/install-state.js.map +1 -0
  53. package/dist/lifecycle.d.ts +19 -0
  54. package/dist/lifecycle.d.ts.map +1 -0
  55. package/dist/lifecycle.js +589 -0
  56. package/dist/lifecycle.js.map +1 -0
  57. package/dist/migration-runner.d.ts +15 -0
  58. package/dist/migration-runner.d.ts.map +1 -0
  59. package/dist/migration-runner.js +174 -0
  60. package/dist/migration-runner.js.map +1 -0
  61. package/dist/redirects-emit.d.ts +65 -0
  62. package/dist/redirects-emit.d.ts.map +1 -0
  63. package/dist/redirects-emit.js +92 -0
  64. package/dist/redirects-emit.js.map +1 -0
  65. package/dist/wizard.d.ts +35 -0
  66. package/dist/wizard.d.ts.map +1 -0
  67. package/dist/wizard.js +160 -0
  68. package/dist/wizard.js.map +1 -0
  69. package/dist/wizards/gcp-cost.d.ts +27 -0
  70. package/dist/wizards/gcp-cost.d.ts.map +1 -0
  71. package/dist/wizards/gcp-cost.js +77 -0
  72. package/dist/wizards/gcp-cost.js.map +1 -0
  73. package/dist/wizards/gcp-pulumi.d.ts +37 -0
  74. package/dist/wizards/gcp-pulumi.d.ts.map +1 -0
  75. package/dist/wizards/gcp-pulumi.js +100 -0
  76. package/dist/wizards/gcp-pulumi.js.map +1 -0
  77. package/dist/wizards/gcp.d.ts +9 -0
  78. package/dist/wizards/gcp.d.ts.map +1 -0
  79. package/dist/wizards/gcp.js +895 -0
  80. package/dist/wizards/gcp.js.map +1 -0
  81. package/package.json +34 -7
  82. package/stacks/aws/index.ts +6 -7
  83. package/stacks/azure/index.ts +11 -11
  84. package/stacks/gcp/Pulumi.production.yaml +16 -0
  85. package/stacks/gcp/Pulumi.yaml +52 -6
  86. package/stacks/gcp/index.ts +569 -188
  87. package/stacks/self-hosted/index.ts +3 -3
  88. package/static/welcome.html +155 -0
  89. package/src/adapter.ts +0 -103
  90. package/src/bootstrap-token.ts +0 -20
  91. package/src/caddy.ts +0 -93
  92. package/src/cli.ts +0 -674
  93. package/src/index.test.ts +0 -246
  94. package/src/index.ts +0 -52
  95. package/src/redirects-emit.ts +0 -166
  96. package/tsconfig.json +0 -16
@@ -0,0 +1,77 @@
1
+ // SPDX-License-Identifier: MPL-2.0
2
+ const SQL_TIER_USD = {
3
+ // Shared-core legacy tiers, ENTERPRISE edition
4
+ "db-f1-micro": 9.5,
5
+ "db-g1-small": 30,
6
+ // Per-N tiers (ENTERPRISE_PLUS only)
7
+ "db-perf-optimized-N-2": 50,
8
+ "db-perf-optimized-N-4": 95,
9
+ "db-perf-optimized-N-8": 180,
10
+ // Custom-machine fallback (rough)
11
+ "db-custom-1-3840": 35,
12
+ "db-custom-2-7680": 65,
13
+ "db-custom-4-15360": 130,
14
+ };
15
+ export function estimateGcpCost(inputs) {
16
+ const sqlBase = SQL_TIER_USD[inputs.cloudSqlTier] ?? 30;
17
+ const sqlMultiplier = inputs.cloudSqlHa ? 2.0 : 1.0;
18
+ const sqlMonthly = Math.round(sqlBase * sqlMultiplier);
19
+ const lines = [
20
+ {
21
+ name: `Cloud SQL Postgres (${inputs.cloudSqlTier}${inputs.cloudSqlHa ? ", HA" : ""})`,
22
+ monthlyUsd: sqlMonthly,
23
+ notes: inputs.cloudSqlHa
24
+ ? "REGIONAL availability (synchronous replica)"
25
+ : "ZONAL — single zone, automated backups",
26
+ },
27
+ {
28
+ name: "Cloud Run admin",
29
+ monthlyUsd: inputs.adminMinInstances === 0 ? 1 : 1 + inputs.adminMinInstances * 15,
30
+ notes: inputs.adminMinInstances === 0
31
+ ? "scale-to-zero; ~$1/mo light editorial use"
32
+ : `${inputs.adminMinInstances} min-instance${inputs.adminMinInstances > 1 ? "s" : ""} (no cold start)`,
33
+ },
34
+ {
35
+ name: "Cloud Run gateway",
36
+ monthlyUsd: inputs.gatewayMinInstances === 0 ? 1 : 1 + inputs.gatewayMinInstances * 15,
37
+ notes: inputs.gatewayMinInstances === 0
38
+ ? "scale-to-zero; ~$1/mo light traffic"
39
+ : `${inputs.gatewayMinInstances} min-instance${inputs.gatewayMinInstances > 1 ? "s" : ""}`,
40
+ },
41
+ {
42
+ name: "Load balancer + managed SSL cert",
43
+ monthlyUsd: 18,
44
+ notes: "Global LB base fee + cert (free) — flat",
45
+ },
46
+ {
47
+ name: "Cloud Storage (static + media)",
48
+ monthlyUsd: 1,
49
+ notes: "~5 GB storage + low egress; growth roughly $0.02/GB",
50
+ },
51
+ {
52
+ name: "Cloud CDN cache",
53
+ monthlyUsd: 1,
54
+ notes: "Free egress at edge cache hits",
55
+ },
56
+ {
57
+ name: "Cloud Armor WAF",
58
+ monthlyUsd: inputs.wafAdaptiveProtection ? 5 : 0,
59
+ notes: inputs.wafAdaptiveProtection
60
+ ? "Adaptive protection (ML-based bot mitigation)"
61
+ : "Free tier — rate limit + OWASP basic rules",
62
+ },
63
+ {
64
+ name: "Secret Manager (5 secrets)",
65
+ monthlyUsd: 0,
66
+ notes: "Free tier",
67
+ },
68
+ {
69
+ name: "BigQuery edge log sink",
70
+ monthlyUsd: 0,
71
+ notes: "Free tier — pay only on >1 TB/mo query",
72
+ },
73
+ ];
74
+ const totalUsd = lines.reduce((sum, l) => sum + l.monthlyUsd, 0);
75
+ return { lines, totalUsd };
76
+ }
77
+ //# sourceMappingURL=gcp-cost.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gcp-cost.js","sourceRoot":"","sources":["../../src/wizards/gcp-cost.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ export interface PulumiUpInputs {
2
+ installId: string;
3
+ installRoot: string;
4
+ secretsDir: string;
5
+ projectId: string;
6
+ domain: string;
7
+ ownerEmail: string;
8
+ region: string;
9
+ saKeyPath: string;
10
+ pulumiPassphrase: string;
11
+ anthropicApiKey: string;
12
+ cloudSqlTier: string;
13
+ cloudSqlHa: boolean;
14
+ adminMinInstances: number;
15
+ gatewayMinInstances: number;
16
+ wafAdaptiveProtection: boolean;
17
+ iapAllowlist: string[];
18
+ /** Resolved sha256 digests per service (admin, gateway). The wizard
19
+ * pre-resolves the floating `:main` tag to a fixed digest so each
20
+ * pulumi up rolls Cloud Run to the freshest published image. */
21
+ imageDigests: Record<string, string>;
22
+ }
23
+ export interface PulumiUpResult {
24
+ outputs: Record<string, unknown>;
25
+ resourceCount: {
26
+ created: number;
27
+ updated: number;
28
+ deleted: number;
29
+ };
30
+ }
31
+ /**
32
+ * Run `pulumi up` against the GCP stack via the Automation SDK.
33
+ * Streams resource-create events to the supplied onEvent callback so
34
+ * the wizard can render a live progress bar.
35
+ */
36
+ export declare function pulumiUpGcp(inputs: PulumiUpInputs, onEvent: (kind: "resource" | "error" | "log", message: string) => void): Promise<PulumiUpResult>;
37
+ //# sourceMappingURL=gcp-pulumi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gcp-pulumi.d.ts","sourceRoot":"","sources":["../../src/wizards/gcp-pulumi.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;IACpB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,qBAAqB,EAAE,OAAO,CAAC;IAC/B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB;;qEAEiE;IACjE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,aAAa,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CACtE;AAeD;;;;GAIG;AACH,wBAAsB,WAAW,CAC/B,MAAM,EAAE,cAAc,EACtB,OAAO,EAAE,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,GAAG,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,GACrE,OAAO,CAAC,cAAc,CAAC,CAmFzB"}
@@ -0,0 +1,100 @@
1
+ // SPDX-License-Identifier: MPL-2.0
2
+ /**
3
+ * Pulumi Automation SDK wrapper for the GCP wizard. Replaces the
4
+ * shell-out `pulumi up` flow with a programmatic equivalent that
5
+ * streams progress events into the wizard's UI.
6
+ *
7
+ * Per CLAUDE.md §11.C: end-users never see `pulumi` directly. The
8
+ * wizard handles passphrase + state location + config + up; failures
9
+ * surface inline with provider errors.
10
+ */
11
+ import { join, resolve as resolvePath } from "node:path";
12
+ import * as pulumi from "@pulumi/pulumi/automation";
13
+ /**
14
+ * Resolve the GCP stack workdir relative to the installed package.
15
+ * Works whether the CLI runs from source (apps/admin/scripts/...)
16
+ * or from the published npm tarball (node_modules/@caelo-cms/...).
17
+ */
18
+ function gcpStackWorkDir() {
19
+ // The Pulumi.yaml + stacks/gcp/index.ts ship in the npm tarball
20
+ // under `stacks/gcp/`. From this file's location at runtime
21
+ // (dist/wizards/gcp-pulumi.js), the stack dir is two levels up
22
+ // + into stacks/gcp/.
23
+ return resolvePath(import.meta.dir, "../../stacks/gcp");
24
+ }
25
+ /**
26
+ * Run `pulumi up` against the GCP stack via the Automation SDK.
27
+ * Streams resource-create events to the supplied onEvent callback so
28
+ * the wizard can render a live progress bar.
29
+ */
30
+ export async function pulumiUpGcp(inputs, onEvent) {
31
+ // Pulumi's local backend reads the passphrase from
32
+ // PULUMI_CONFIG_PASSPHRASE; we set it for this process scope only.
33
+ // Same for the GOOGLE_APPLICATION_CREDENTIALS pointing at the SA key.
34
+ const env = {
35
+ ...process.env,
36
+ PULUMI_CONFIG_PASSPHRASE: inputs.pulumiPassphrase,
37
+ GOOGLE_APPLICATION_CREDENTIALS: inputs.saKeyPath,
38
+ // Pulumi local-backend state lives under the install's state dir.
39
+ PULUMI_BACKEND_URL: `file://${join(inputs.installRoot, "state")}`,
40
+ };
41
+ const stackName = "production";
42
+ const workDir = gcpStackWorkDir();
43
+ const stack = await pulumi.LocalWorkspace.createOrSelectStack({
44
+ stackName,
45
+ workDir,
46
+ }, {
47
+ envVars: env,
48
+ });
49
+ // Set every config value the stack reads. Secrets via setConfig with
50
+ // {value, secret: true}; Pulumi encrypts them in state.
51
+ await stack.setAllConfig({
52
+ "caelo-gcp:project": { value: inputs.projectId },
53
+ "caelo-gcp:domain": { value: inputs.domain },
54
+ "caelo-gcp:ownerEmail": { value: inputs.ownerEmail },
55
+ "caelo-gcp:region": { value: inputs.region },
56
+ "caelo-gcp:cloudSqlTier": { value: inputs.cloudSqlTier },
57
+ "caelo-gcp:cloudSqlHa": { value: String(inputs.cloudSqlHa) },
58
+ "caelo-gcp:adminMinInstances": { value: String(inputs.adminMinInstances) },
59
+ "caelo-gcp:gatewayMinInstances": { value: String(inputs.gatewayMinInstances) },
60
+ "caelo-gcp:wafAdaptiveProtection": { value: String(inputs.wafAdaptiveProtection) },
61
+ "caelo-gcp:iapAllowlist": { value: inputs.iapAllowlist.join(",") },
62
+ "caelo-gcp:anthropicApiKey": { value: inputs.anthropicApiKey, secret: true },
63
+ ...Object.fromEntries(Object.entries(inputs.imageDigests).map(([service, digest]) => [
64
+ `caelo-gcp:image-digest-${service}`,
65
+ { value: digest },
66
+ ])),
67
+ });
68
+ // Refresh state first to detect drift from any out-of-band changes.
69
+ await stack.refresh({ onOutput: (msg) => onEvent("log", msg) });
70
+ // Run `up`. The onEvent callback receives the same JSON-RPC events
71
+ // Pulumi prints to stdout in --json mode.
72
+ const result = await stack.up({
73
+ onOutput: (msg) => onEvent("log", msg),
74
+ onEvent: (event) => {
75
+ // We only care about resource start/finish events for the
76
+ // progress UI — diagnostics surface via onOutput already.
77
+ if (event.resOpFailedEvent) {
78
+ onEvent("error", `${event.resOpFailedEvent.metadata.urn}: ${event.resOpFailedEvent.status}`);
79
+ }
80
+ else if (event.resOutputsEvent) {
81
+ onEvent("resource", event.resOutputsEvent.metadata.urn);
82
+ }
83
+ },
84
+ });
85
+ const summary = result.summary;
86
+ const changes = summary.resourceChanges ?? {};
87
+ const outputs = {};
88
+ for (const [k, v] of Object.entries(result.outputs)) {
89
+ outputs[k] = v.value;
90
+ }
91
+ return {
92
+ outputs,
93
+ resourceCount: {
94
+ created: changes.create ?? 0,
95
+ updated: changes.update ?? 0,
96
+ deleted: changes.delete ?? 0,
97
+ },
98
+ };
99
+ }
100
+ //# sourceMappingURL=gcp-pulumi.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gcp-pulumi.js","sourceRoot":"","sources":["../../src/wizards/gcp-pulumi.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export interface GcpWizardOpts {
2
+ installId: string;
3
+ domain: string;
4
+ ownerEmail: string;
5
+ projectId: string | null;
6
+ nonInteractive: boolean;
7
+ }
8
+ export declare function runGcpWizard(opts: GcpWizardOpts): Promise<void>;
9
+ //# sourceMappingURL=gcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gcp.d.ts","sourceRoot":"","sources":["../../src/wizards/gcp.ts"],"names":[],"mappings":"AAqEA,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,cAAc,EAAE,OAAO,CAAC;CACzB;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CA2JrE"}