hatchkit 0.1.40 → 0.1.42

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 (127) hide show
  1. package/dist/adopt.d.ts.map +1 -1
  2. package/dist/adopt.js +663 -82
  3. package/dist/adopt.js.map +1 -1
  4. package/dist/config.d.ts +32 -10
  5. package/dist/config.d.ts.map +1 -1
  6. package/dist/config.js +91 -38
  7. package/dist/config.js.map +1 -1
  8. package/dist/deploy/coolify-app.d.ts.map +1 -1
  9. package/dist/deploy/coolify-app.js +0 -7
  10. package/dist/deploy/coolify-app.js.map +1 -1
  11. package/dist/deploy/coolify.d.ts.map +1 -1
  12. package/dist/deploy/coolify.js +20 -1
  13. package/dist/deploy/coolify.js.map +1 -1
  14. package/dist/deploy/ghcr.d.ts +4 -2
  15. package/dist/deploy/ghcr.d.ts.map +1 -1
  16. package/dist/deploy/ghcr.js +1 -1
  17. package/dist/deploy/ghcr.js.map +1 -1
  18. package/dist/deploy/github.d.ts +4 -3
  19. package/dist/deploy/github.d.ts.map +1 -1
  20. package/dist/deploy/github.js +5 -2
  21. package/dist/deploy/github.js.map +1 -1
  22. package/dist/deploy/pages.d.ts +41 -0
  23. package/dist/deploy/pages.d.ts.map +1 -1
  24. package/dist/deploy/pages.js +363 -22
  25. package/dist/deploy/pages.js.map +1 -1
  26. package/dist/deploy/regen-infra.d.ts.map +1 -1
  27. package/dist/deploy/regen-infra.js +5 -11
  28. package/dist/deploy/regen-infra.js.map +1 -1
  29. package/dist/deploy/rollback.d.ts.map +1 -1
  30. package/dist/deploy/rollback.js +44 -6
  31. package/dist/deploy/rollback.js.map +1 -1
  32. package/dist/deploy/terraform.d.ts.map +1 -1
  33. package/dist/deploy/terraform.js +20 -37
  34. package/dist/deploy/terraform.js.map +1 -1
  35. package/dist/dns.d.ts.map +1 -1
  36. package/dist/dns.js +4 -5
  37. package/dist/dns.js.map +1 -1
  38. package/dist/doctor.d.ts +15 -0
  39. package/dist/doctor.d.ts.map +1 -1
  40. package/dist/doctor.js +110 -36
  41. package/dist/doctor.js.map +1 -1
  42. package/dist/email/index.d.ts +31 -0
  43. package/dist/email/index.d.ts.map +1 -0
  44. package/dist/email/index.js +251 -0
  45. package/dist/email/index.js.map +1 -0
  46. package/dist/email/presets.d.ts +14 -0
  47. package/dist/email/presets.d.ts.map +1 -0
  48. package/dist/email/presets.js +33 -0
  49. package/dist/email/presets.js.map +1 -0
  50. package/dist/email/setup.d.ts +93 -0
  51. package/dist/email/setup.d.ts.map +1 -0
  52. package/dist/email/setup.js +263 -0
  53. package/dist/email/setup.js.map +1 -0
  54. package/dist/email/spf.d.ts +56 -0
  55. package/dist/email/spf.d.ts.map +1 -0
  56. package/dist/email/spf.js +102 -0
  57. package/dist/email/spf.js.map +1 -0
  58. package/dist/index.js +306 -22
  59. package/dist/index.js.map +1 -1
  60. package/dist/inventory.d.ts +37 -0
  61. package/dist/inventory.d.ts.map +1 -1
  62. package/dist/inventory.js +536 -55
  63. package/dist/inventory.js.map +1 -1
  64. package/dist/overview.d.ts +101 -0
  65. package/dist/overview.d.ts.map +1 -0
  66. package/dist/overview.js +880 -0
  67. package/dist/overview.js.map +1 -0
  68. package/dist/prompts.d.ts +27 -0
  69. package/dist/prompts.d.ts.map +1 -1
  70. package/dist/prompts.js +262 -34
  71. package/dist/prompts.js.map +1 -1
  72. package/dist/provision/index.d.ts +20 -1
  73. package/dist/provision/index.d.ts.map +1 -1
  74. package/dist/provision/index.js +115 -0
  75. package/dist/provision/index.js.map +1 -1
  76. package/dist/provision/s3-buckets.js +1 -1
  77. package/dist/provision/s3-buckets.js.map +1 -1
  78. package/dist/scaffold/app.d.ts.map +1 -1
  79. package/dist/scaffold/app.js +15 -7
  80. package/dist/scaffold/app.js.map +1 -1
  81. package/dist/scaffold/build-pipeline.d.ts +16 -0
  82. package/dist/scaffold/build-pipeline.d.ts.map +1 -1
  83. package/dist/scaffold/build-pipeline.js +47 -4
  84. package/dist/scaffold/build-pipeline.js.map +1 -1
  85. package/dist/scaffold/infra.d.ts +4 -5
  86. package/dist/scaffold/infra.d.ts.map +1 -1
  87. package/dist/scaffold/infra.js +18 -57
  88. package/dist/scaffold/infra.js.map +1 -1
  89. package/dist/scaffold/manifest.d.ts +6 -0
  90. package/dist/scaffold/manifest.d.ts.map +1 -1
  91. package/dist/scaffold/manifest.js +2 -0
  92. package/dist/scaffold/manifest.js.map +1 -1
  93. package/dist/scaffold/pages-heuristics.d.ts +17 -0
  94. package/dist/scaffold/pages-heuristics.d.ts.map +1 -0
  95. package/dist/scaffold/pages-heuristics.js +344 -0
  96. package/dist/scaffold/pages-heuristics.js.map +1 -0
  97. package/dist/scaffold/pages-mode.d.ts +10 -0
  98. package/dist/scaffold/pages-mode.d.ts.map +1 -0
  99. package/dist/scaffold/pages-mode.js +107 -0
  100. package/dist/scaffold/pages-mode.js.map +1 -0
  101. package/dist/scaffold/pkg-json.d.ts +4 -0
  102. package/dist/scaffold/pkg-json.d.ts.map +1 -1
  103. package/dist/scaffold/pkg-json.js +17 -0
  104. package/dist/scaffold/pkg-json.js.map +1 -1
  105. package/dist/scaffold/surfaces.d.ts.map +1 -1
  106. package/dist/scaffold/surfaces.js +12 -1
  107. package/dist/scaffold/surfaces.js.map +1 -1
  108. package/dist/scaffold/update.js +1 -1
  109. package/dist/scaffold/update.js.map +1 -1
  110. package/dist/templates/build-pipeline/Dockerfile.nextjs.hbs +103 -0
  111. package/dist/templates/build-pipeline/docker-compose.yml.hbs +23 -6
  112. package/dist/utils/cloudflare-api.d.ts +158 -13
  113. package/dist/utils/cloudflare-api.d.ts.map +1 -1
  114. package/dist/utils/cloudflare-api.js +219 -11
  115. package/dist/utils/cloudflare-api.js.map +1 -1
  116. package/dist/utils/coolify-api.d.ts +9 -0
  117. package/dist/utils/coolify-api.d.ts.map +1 -1
  118. package/dist/utils/coolify-api.js +26 -0
  119. package/dist/utils/coolify-api.js.map +1 -1
  120. package/dist/utils/run-ledger.d.ts +42 -1
  121. package/dist/utils/run-ledger.d.ts.map +1 -1
  122. package/dist/utils/run-ledger.js.map +1 -1
  123. package/dist/utils/s3-admin.d.ts +9 -0
  124. package/dist/utils/s3-admin.d.ts.map +1 -0
  125. package/dist/utils/s3-admin.js +46 -0
  126. package/dist/utils/s3-admin.js.map +1 -0
  127. package/package.json +1 -1
package/dist/doctor.d.ts CHANGED
@@ -34,6 +34,21 @@ export declare function checkProjectKeyState(projectDir: string): Promise<CheckR
34
34
  * · admin token / accountId not available (config gap is its own
35
35
  * check above; no need to double-fail) */
36
36
  export declare function checkProjectS3CorsState(projectDir: string): Promise<CheckResult[]>;
37
+ /** Verify the per-project R2 access/secret pair (minted by `provision s3`)
38
+ * still has the perms it claims. We do a HeadBucket against each bucket
39
+ * recorded in the manifest — cheapest GET on the S3 protocol, returns
40
+ * 200 when the token is valid AND scoped to that bucket, 403/404/etc
41
+ * otherwise. The admin token check above doesn't catch this: a user can
42
+ * revoke a per-project token from the dashboard without touching the
43
+ * global admin token, leaving CORS / deploys broken at runtime.
44
+ *
45
+ * Skipped silently when:
46
+ * · no manifest at cwd
47
+ * · manifest has no `s3Buckets.assets` (project never provisioned R2)
48
+ * · per-project access/secret aren't in the keychain (legacy project
49
+ * still on the deprecated account-wide pair — checkS3('r2') above
50
+ * already covers that case) */
51
+ export declare function checkProjectR2CredsState(projectDir: string): Promise<CheckResult[]>;
37
52
  export declare function runDoctor(opts?: {
38
53
  json?: boolean;
39
54
  }): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAuBA,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAugBD,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAoBnE;AAED;;;;;;;;;;;0CAW0C;AAC1C,wBAAsB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CA6FrF;AAED;;;;;;;;;;;;;+CAa+C;AAC/C,wBAAsB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CA6HxF;AAED,wBAAsB,SAAS,CAAC,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA8C5E"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"AAuBA,UAAU,WAAW;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;IAC/B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,oEAAoE;IACpE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAggBD,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAsBnE;AAED;;;;;;;;;;;0CAW0C;AAC1C,wBAAsB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CA6FrF;AAED;;;;;;;;;;;;;+CAa+C;AAC/C,wBAAsB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CA6HxF;AAED;;;;;;;;;;;;;oCAaoC;AACpC,wBAAsB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAsEzF;AAED,wBAAsB,SAAS,CAAC,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA8C5E"}
package/dist/doctor.js CHANGED
@@ -103,42 +103,34 @@ async function checkHetzner() {
103
103
  }
104
104
  async function checkDns() {
105
105
  const cfg = await getDnsConfig();
106
- if (!cfg || cfg.provider === "manual")
106
+ if (!cfg)
107
107
  return { name: "DNS", status: "skip" };
108
- if (cfg.provider === "cloudflare") {
109
- return check("DNS (Cloudflare)", async () => {
110
- const res = await fetch("https://api.cloudflare.com/client/v4/user/tokens/verify", {
111
- headers: { Authorization: `Bearer ${cfg.apiToken}` },
112
- });
113
- if (!res.ok)
114
- throw new Error(`HTTP ${res.status}`);
115
- const body = (await res.json());
116
- return body.result?.status ?? "active";
117
- }, (detail) => {
118
- const code = httpCode(detail);
119
- if (code === 401) {
120
- return [
121
- "Cloudflare API token is invalid, expired, or revoked.",
122
- "Create a new one: https://dash.cloudflare.com/profile/api-tokens",
123
- "Required permissions: Zone:DNS:Edit + Zone:Zone:Read (scope to the zones you'll use).",
124
- "Then re-run: `hatchkit config add dns`",
125
- ];
126
- }
127
- if (code === 403) {
128
- return [
129
- "Token authenticates but lacks Zone:DNS:Edit + Zone:Zone:Read on the target zones.",
130
- "Edit the token at https://dash.cloudflare.com/profile/api-tokens or create a new one, then `hatchkit config add dns`.",
131
- ];
132
- }
133
- return undefined;
108
+ return check("DNS (Cloudflare)", async () => {
109
+ const res = await fetch("https://api.cloudflare.com/client/v4/user/tokens/verify", {
110
+ headers: { Authorization: `Bearer ${cfg.apiToken}` },
134
111
  });
135
- }
136
- // INWX uses XML-RPC login — skip active-verify (cheap check would require a login call).
137
- return {
138
- name: "DNS (INWX)",
139
- status: "ok",
140
- detail: "credentials stored (not test-authenticated)",
141
- };
112
+ if (!res.ok)
113
+ throw new Error(`HTTP ${res.status}`);
114
+ const body = (await res.json());
115
+ return body.result?.status ?? "active";
116
+ }, (detail) => {
117
+ const code = httpCode(detail);
118
+ if (code === 401) {
119
+ return [
120
+ "Cloudflare API token is invalid, expired, or revoked.",
121
+ "Create a new one: https://dash.cloudflare.com/profile/api-tokens",
122
+ "Required permissions: Zone:DNS:Edit + Zone:Zone:Read (scope to the zones you'll use).",
123
+ "Then re-run: `hatchkit config add dns`",
124
+ ];
125
+ }
126
+ if (code === 403) {
127
+ return [
128
+ "Token authenticates but lacks Zone:DNS:Edit + Zone:Zone:Read on the target zones.",
129
+ "Edit the token at https://dash.cloudflare.com/profile/api-tokens or create a new one, then `hatchkit config add dns`.",
130
+ ];
131
+ }
132
+ return undefined;
133
+ });
142
134
  }
143
135
  async function checkS3(provider) {
144
136
  const name = `S3 (${provider})`;
@@ -173,8 +165,9 @@ async function checkS3(provider) {
173
165
  // via POST /accounts/{id}/tokens), but is still useful during
174
166
  // migration of pre-account-tokens projects, so we probe it as a
175
167
  // non-fatal hint. Either of the required perms failing tells the
176
- // user exactly which one to add. Per-project access/secret pairs
177
- // aren't checked here; that's per-project doctor territory (TODO).
168
+ // user exactly which one to add. Per-project access/secret pairs are
169
+ // checked separately by `checkProjectR2CredsState`, which runs from
170
+ // `collectDoctorResults` when invoked inside a hatchkit project.
178
171
  const adminToken = await getSecret(SECRET_KEYS.r2AdminToken);
179
172
  if (!adminToken) {
180
173
  return {
@@ -488,6 +481,9 @@ export async function collectDoctorResults() {
488
481
  const corsChecks = await checkProjectS3CorsState(process.cwd());
489
482
  for (const r of corsChecks)
490
483
  results.push(r);
484
+ const credChecks = await checkProjectR2CredsState(process.cwd());
485
+ for (const r of credChecks)
486
+ results.push(r);
491
487
  return results;
492
488
  }
493
489
  /** Project-local key hygiene checks, gated on the presence of
@@ -718,6 +714,84 @@ export async function checkProjectS3CorsState(projectDir) {
718
714
  }
719
715
  return out;
720
716
  }
717
+ /** Verify the per-project R2 access/secret pair (minted by `provision s3`)
718
+ * still has the perms it claims. We do a HeadBucket against each bucket
719
+ * recorded in the manifest — cheapest GET on the S3 protocol, returns
720
+ * 200 when the token is valid AND scoped to that bucket, 403/404/etc
721
+ * otherwise. The admin token check above doesn't catch this: a user can
722
+ * revoke a per-project token from the dashboard without touching the
723
+ * global admin token, leaving CORS / deploys broken at runtime.
724
+ *
725
+ * Skipped silently when:
726
+ * · no manifest at cwd
727
+ * · manifest has no `s3Buckets.assets` (project never provisioned R2)
728
+ * · per-project access/secret aren't in the keychain (legacy project
729
+ * still on the deprecated account-wide pair — checkS3('r2') above
730
+ * already covers that case) */
731
+ export async function checkProjectR2CredsState(projectDir) {
732
+ const out = [];
733
+ const { existsSync, readFileSync } = await import("node:fs");
734
+ const manifestPath = `${projectDir}/.hatchkit.json`;
735
+ if (!existsSync(manifestPath))
736
+ return out;
737
+ let manifest;
738
+ try {
739
+ manifest = JSON.parse(readFileSync(manifestPath, "utf-8"));
740
+ }
741
+ catch {
742
+ return out;
743
+ }
744
+ if (!manifest.name || !manifest.s3Buckets?.accountId)
745
+ return out;
746
+ const buckets = [manifest.s3Buckets.assets?.name, manifest.s3Buckets.state?.name].filter((n) => typeof n === "string" && n.length > 0);
747
+ if (buckets.length === 0)
748
+ return out;
749
+ const accessKey = await getSecret(SECRET_KEYS.s3ProjectAccessKey("r2", manifest.name));
750
+ const secretKey = await getSecret(SECRET_KEYS.s3ProjectSecretKey("r2", manifest.name));
751
+ if (!accessKey || !secretKey) {
752
+ out.push({
753
+ name: `Project ${manifest.name} (R2 per-project creds)`,
754
+ status: "skip",
755
+ detail: "no per-project R2 access/secret in keychain — legacy project on account-wide pair",
756
+ });
757
+ return out;
758
+ }
759
+ const { HeadBucketCommand, S3Client } = await import("@aws-sdk/client-s3");
760
+ const client = new S3Client({
761
+ region: "auto",
762
+ endpoint: `https://${manifest.s3Buckets.accountId}.r2.cloudflarestorage.com`,
763
+ forcePathStyle: true,
764
+ credentials: { accessKeyId: accessKey, secretAccessKey: secretKey },
765
+ });
766
+ try {
767
+ for (const name of buckets) {
768
+ try {
769
+ await client.send(new HeadBucketCommand({ Bucket: name }));
770
+ out.push({
771
+ name: `Project ${manifest.name} (R2 ${name})`,
772
+ status: "ok",
773
+ detail: "per-project token reaches bucket",
774
+ });
775
+ }
776
+ catch (err) {
777
+ const msg = err.message.split("\n")[0];
778
+ out.push({
779
+ name: `Project ${manifest.name} (R2 ${name})`,
780
+ status: "fail",
781
+ detail: `per-project token can't reach bucket: ${msg}`,
782
+ hint: [
783
+ "Token was likely revoked in the Cloudflare dashboard.",
784
+ `Re-mint: hatchkit provision s3 (reuses ${manifest.name}'s manifest)`,
785
+ ],
786
+ });
787
+ }
788
+ }
789
+ }
790
+ finally {
791
+ client.destroy();
792
+ }
793
+ return out;
794
+ }
721
795
  export async function runDoctor(opts = {}) {
722
796
  const results = await collectDoctorResults();
723
797
  const okCount = results.filter((r) => r.status === "ok").length;
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { type EmailSetupResult } from "./setup.js";
2
+ export interface EmailCommandFlags {
3
+ domain?: string;
4
+ /** Forwarding destination override. Falls back to the saved default. */
5
+ to?: string;
6
+ /** Comma-separated local parts (e.g. "hello,rico,admin"). Skips the
7
+ * multi-select prompt when present. */
8
+ addresses?: string;
9
+ /** Skip the prompt; use every default preset. */
10
+ allDefaults?: boolean;
11
+ /** Force no catch-all (overrides the default-true). */
12
+ noCatchAll?: boolean;
13
+ /** DMARC policy override. Default "quarantine". */
14
+ dmarcPolicy?: "none" | "quarantine" | "reject";
15
+ /** Skip the resend SPF include auto-merge. */
16
+ noResendSpf?: boolean;
17
+ }
18
+ /** Shared setup runner used by both `hatchkit email setup` and the
19
+ * provision-orchestrator "email" service. Resolves DNS config, runs
20
+ * prompts that haven't been answered by flags, executes the setup,
21
+ * and prints the summary. */
22
+ export declare function runEmailSetupForDomain(flags: EmailCommandFlags, cwd?: string): Promise<EmailSetupResult>;
23
+ /** `hatchkit email status` — read-only state report for the current
24
+ * project's (or `--domain`-overridden) zone. */
25
+ export declare function runEmailStatus(flags: EmailCommandFlags, cwd?: string): Promise<void>;
26
+ /** Parse `hatchkit email …` flags from the raw argv slice. Centralised
27
+ * here so the index.ts dispatcher only deals with subcommand routing. */
28
+ export declare function parseEmailFlags(rest: string[]): EmailCommandFlags;
29
+ /** Top-level `hatchkit email <sub>` dispatcher. */
30
+ export declare function handleEmailCommand(rest: string[]): Promise<void>;
31
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/email/index.ts"],"names":[],"mappings":"AA8BA,OAAO,EAEL,KAAK,gBAAgB,EAGtB,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,iBAAiB;IAChC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,wEAAwE;IACxE,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ;4CACwC;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iDAAiD;IACjD,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,uDAAuD;IACvD,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,mDAAmD;IACnD,WAAW,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,QAAQ,CAAC;IAC/C,8CAA8C;IAC9C,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAsFD;;;8BAG8B;AAC9B,wBAAsB,sBAAsB,CAC1C,KAAK,EAAE,iBAAiB,EACxB,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC,gBAAgB,CAAC,CAwD3B;AAED;iDACiD;AACjD,wBAAsB,cAAc,CAClC,KAAK,EAAE,iBAAiB,EACxB,GAAG,GAAE,MAAsB,GAC1B,OAAO,CAAC,IAAI,CAAC,CA0Cf;AAED;0EAC0E;AAC1E,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,iBAAiB,CAmBjE;AAED,mDAAmD;AACnD,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA0BtE"}
@@ -0,0 +1,251 @@
1
+ /*
2
+ * `hatchkit email` command surface.
3
+ *
4
+ * Two entry points:
5
+ * · `hatchkit email setup` — full setup or re-run on a given domain.
6
+ * Flag-driven; missing flags get prompted (multi-select for the
7
+ * forwarding addresses, single-input for the destination).
8
+ * · `hatchkit email status` — print the current state of Email Routing
9
+ * for the project's domain. No mutations. Useful inside a project
10
+ * dir or after a setup to confirm verification went through.
11
+ *
12
+ * The same `runEmailSetupForDomain` is reused by the provision
13
+ * orchestrator's `email` service entry, so the setup logic exists in
14
+ * exactly one place — flags and prompts are the only difference.
15
+ */
16
+ import { existsSync } from "node:fs";
17
+ import { join, resolve } from "node:path";
18
+ import { confirm, input } from "@inquirer/prompts";
19
+ import chalk from "chalk";
20
+ import { ensureDefaultForwardingEmail, ensureDns, getDefaultForwardingEmail, getDnsConfig, } from "../config.js";
21
+ import { readManifest } from "../scaffold/manifest.js";
22
+ import { CloudflareApi } from "../utils/cloudflare-api.js";
23
+ import { multiselect } from "../utils/multiselect.js";
24
+ import { DEFAULT_CATCH_ALL, DEFAULT_FORWARD_PRESETS } from "./presets.js";
25
+ import { printEmailSetupSummary, runEmailSetup, } from "./setup.js";
26
+ /** Resolve a domain to set up email for. Precedence:
27
+ * 1. --domain flag
28
+ * 2. .hatchkit.json in cwd
29
+ * 3. interactive prompt
30
+ * Used by both `hatchkit email setup` and the provision-service hook. */
31
+ async function resolveDomain(flagDomain, cwd) {
32
+ if (flagDomain)
33
+ return flagDomain.trim();
34
+ const manifestPath = join(cwd, ".hatchkit.json");
35
+ if (existsSync(manifestPath)) {
36
+ const manifest = readManifest(cwd);
37
+ if (manifest?.domain) {
38
+ console.log(chalk.dim(` Using domain from .hatchkit.json: ${manifest.domain}`));
39
+ return manifest.domain;
40
+ }
41
+ }
42
+ return input({
43
+ message: "Domain to set up email for (e.g. example.com):",
44
+ validate: (v) => /^[a-z0-9][a-z0-9.-]*\.[a-z]{2,}$/i.test(v.trim()) ? true : "Looks malformed.",
45
+ });
46
+ }
47
+ /** Prompt the user for which local parts to forward — or take them
48
+ * straight from the `--addresses` flag. */
49
+ async function resolveAddresses(flags, domain) {
50
+ if (flags.addresses) {
51
+ const list = flags.addresses
52
+ .split(",")
53
+ .map((s) => s.trim().toLowerCase())
54
+ .filter(Boolean);
55
+ return { addresses: list, catchAll: !flags.noCatchAll };
56
+ }
57
+ if (flags.allDefaults) {
58
+ return {
59
+ addresses: DEFAULT_FORWARD_PRESETS.filter((p) => p.defaultChecked).map((p) => p.localPart),
60
+ catchAll: !flags.noCatchAll,
61
+ };
62
+ }
63
+ const picked = await multiselect({
64
+ message: `Which addresses on ${domain} should forward to your inbox?`,
65
+ choices: DEFAULT_FORWARD_PRESETS.map((p) => ({
66
+ name: `${p.localPart}@${domain} — ${p.description}`,
67
+ value: p.localPart,
68
+ checked: p.defaultChecked,
69
+ })),
70
+ required: false,
71
+ });
72
+ const catchAll = flags.noCatchAll
73
+ ? false
74
+ : await confirm({
75
+ message: `Also enable catch-all (*@${domain} → your inbox)?`,
76
+ default: DEFAULT_CATCH_ALL,
77
+ });
78
+ return { addresses: picked, catchAll };
79
+ }
80
+ /** Probe the zone for an existing Resend DKIM record so we can auto-add
81
+ * `_spf.resend.com` to the merged SPF when present. Returns the include
82
+ * list to merge (empty when no Resend in evidence). Cheap one-call probe;
83
+ * if it fails (token lacks read perm, zone not in account), returns []. */
84
+ async function detectExtraSpfIncludes(token, zoneId, domain) {
85
+ try {
86
+ const cf = new CloudflareApi({ token });
87
+ const includes = [];
88
+ // Resend domains add a CNAME at `resend._domainkey.<zone>` — its
89
+ // presence is the cleanest signal that the zone sends via Resend.
90
+ // One name+type lookup is much cheaper than listing the zone.
91
+ const dkim = await cf.findRecordsByName(zoneId, `resend._domainkey.${domain}`, "CNAME");
92
+ if (dkim.length > 0) {
93
+ includes.push("_spf.resend.com");
94
+ }
95
+ return includes;
96
+ }
97
+ catch {
98
+ return [];
99
+ }
100
+ }
101
+ /** Shared setup runner used by both `hatchkit email setup` and the
102
+ * provision-orchestrator "email" service. Resolves DNS config, runs
103
+ * prompts that haven't been answered by flags, executes the setup,
104
+ * and prints the summary. */
105
+ export async function runEmailSetupForDomain(flags, cwd = process.cwd()) {
106
+ // DNS config is needed for the CF Bearer token + accountId. Lazy-prompt
107
+ // when missing — same contract as every other provider in the CLI.
108
+ let dns = await getDnsConfig();
109
+ if (!dns || !dns.apiToken)
110
+ dns = await ensureDns();
111
+ if (!dns?.apiToken) {
112
+ throw new Error("Cloudflare API token not configured. Run `hatchkit config add dns`.");
113
+ }
114
+ const domain = await resolveDomain(flags.domain, cwd);
115
+ const destination = flags.to?.trim() || getDefaultForwardingEmail() || (await ensureDefaultForwardingEmail());
116
+ const { addresses, catchAll } = await resolveAddresses(flags, domain);
117
+ // We need the zone id to detect resend SPF before the main setup runs.
118
+ // The setup orchestrator will look the zone up again — cheap; one API
119
+ // call. Keeping the two lookups separate keeps the orchestrator
120
+ // dependency-free of flag-parsing concerns.
121
+ let extraSpf = [];
122
+ if (!flags.noResendSpf) {
123
+ const cf = new CloudflareApi({ token: dns.apiToken, accountId: dns.accountId });
124
+ const zone = await cf.getZoneByName(domain);
125
+ if (zone) {
126
+ extraSpf = await detectExtraSpfIncludes(dns.apiToken, zone.id, domain);
127
+ }
128
+ }
129
+ const opts = {
130
+ token: dns.apiToken,
131
+ accountId: dns.accountId,
132
+ domain,
133
+ destination,
134
+ addresses,
135
+ catchAll,
136
+ extraSpfIncludes: extraSpf,
137
+ dmarcPolicy: flags.dmarcPolicy ?? "quarantine",
138
+ };
139
+ console.log(chalk.bold(`\n hatchkit email setup`));
140
+ console.log(chalk.dim(` Domain: ${domain}`));
141
+ console.log(chalk.dim(` Destination: ${destination}`));
142
+ console.log(chalk.dim(` Addresses: ${addresses.length > 0 ? addresses.map((a) => `${a}@`).join(", ") : "(none — catch-all only)"}`));
143
+ console.log(chalk.dim(` Catch-all: ${catchAll ? "yes" : "no"}`));
144
+ console.log(chalk.dim(` DMARC: p=${opts.dmarcPolicy}`));
145
+ if (extraSpf.length > 0) {
146
+ console.log(chalk.dim(` SPF merge: ${extraSpf.join(", ")}`));
147
+ }
148
+ const result = await runEmailSetup(opts);
149
+ printEmailSetupSummary(result);
150
+ return result;
151
+ }
152
+ /** `hatchkit email status` — read-only state report for the current
153
+ * project's (or `--domain`-overridden) zone. */
154
+ export async function runEmailStatus(flags, cwd = process.cwd()) {
155
+ const dns = await getDnsConfig();
156
+ if (!dns?.apiToken) {
157
+ console.log(chalk.yellow(" DNS not configured. Run `hatchkit config add dns`."));
158
+ return;
159
+ }
160
+ const domain = await resolveDomain(flags.domain, cwd);
161
+ const cf = new CloudflareApi({ token: dns.apiToken, accountId: dns.accountId });
162
+ const zone = await cf.getZoneByName(domain);
163
+ if (!zone) {
164
+ console.log(chalk.yellow(` No zone for ${domain} in this Cloudflare account.`));
165
+ return;
166
+ }
167
+ const accountId = dns.accountId ?? zone.account?.id;
168
+ const routing = await cf.getEmailRouting(zone.id);
169
+ const rules = routing?.enabled ? await cf.listEmailRoutingRules(zone.id) : [];
170
+ const destinations = accountId ? await cf.listEmailDestinations(accountId) : [];
171
+ const mx = await cf.findRecordsByName(zone.id, domain, "MX");
172
+ const spfAndDmarc = await cf.findRecordsByName(zone.id, domain, "TXT");
173
+ const dmarc = await cf.findRecordsByName(zone.id, `_dmarc.${domain}`, "TXT");
174
+ console.log(chalk.bold(`\n ── Email status: ${domain} ───────────────────────────\n`));
175
+ console.log(` Routing: ${routing?.enabled ? chalk.green("enabled") : chalk.red("disabled")}${routing?.status ? chalk.dim(` (${routing.status})`) : ""}`);
176
+ console.log(` MX records: ${mx.length > 0 ? chalk.green(`${mx.length} (${mx.map((r) => r.content).join(", ")})`) : chalk.red("none")}`);
177
+ const spf = spfAndDmarc.find((r) => /v=spf1/i.test(r.content));
178
+ console.log(` SPF: ${spf ? chalk.green(spf.content) : chalk.red("missing")}`);
179
+ console.log(` DMARC: ${dmarc[0] ? chalk.green(dmarc[0].content) : chalk.red("missing")}`);
180
+ console.log(` Destinations: ${destinations.length} on account`);
181
+ for (const d of destinations) {
182
+ const tag = d.verified === "active" ? chalk.green("✓ verified") : chalk.yellow("· pending");
183
+ console.log(` ${tag} ${d.email}`);
184
+ }
185
+ console.log(` Rules: ${rules.length}`);
186
+ for (const r of rules) {
187
+ const to = r.matchers?.find((m) => m.field === "to")?.value;
188
+ const fwd = r.actions?.[0]?.value?.join(", ");
189
+ console.log(` ${to ?? "?"} → ${fwd ?? "?"}`);
190
+ }
191
+ }
192
+ /** Parse `hatchkit email …` flags from the raw argv slice. Centralised
193
+ * here so the index.ts dispatcher only deals with subcommand routing. */
194
+ export function parseEmailFlags(rest) {
195
+ const flags = {};
196
+ for (let i = 0; i < rest.length; i++) {
197
+ const a = rest[i];
198
+ if (a === "--domain" && rest[i + 1])
199
+ flags.domain = rest[++i];
200
+ else if (a.startsWith("--domain="))
201
+ flags.domain = a.slice("--domain=".length);
202
+ else if (a === "--to" && rest[i + 1])
203
+ flags.to = rest[++i];
204
+ else if (a.startsWith("--to="))
205
+ flags.to = a.slice("--to=".length);
206
+ else if (a === "--addresses" && rest[i + 1])
207
+ flags.addresses = rest[++i];
208
+ else if (a.startsWith("--addresses="))
209
+ flags.addresses = a.slice("--addresses=".length);
210
+ else if (a === "--all-defaults")
211
+ flags.allDefaults = true;
212
+ else if (a === "--no-catch-all")
213
+ flags.noCatchAll = true;
214
+ else if (a === "--dmarc" && rest[i + 1])
215
+ flags.dmarcPolicy = rest[++i];
216
+ else if (a.startsWith("--dmarc="))
217
+ flags.dmarcPolicy = a.slice("--dmarc=".length);
218
+ else if (a === "--no-resend-spf")
219
+ flags.noResendSpf = true;
220
+ }
221
+ return flags;
222
+ }
223
+ /** Top-level `hatchkit email <sub>` dispatcher. */
224
+ export async function handleEmailCommand(rest) {
225
+ const sub = rest[0];
226
+ const flags = parseEmailFlags(rest.slice(1));
227
+ switch (sub) {
228
+ case "setup":
229
+ await runEmailSetupForDomain(flags, resolve("."));
230
+ return;
231
+ case "status":
232
+ await runEmailStatus(flags, resolve("."));
233
+ return;
234
+ default:
235
+ console.log("Usage: hatchkit email <setup|status> [flags]");
236
+ console.log("");
237
+ console.log(" setup Configure Cloudflare Email Routing + DNS for a domain");
238
+ console.log(" status Print the current Email Routing state");
239
+ console.log("");
240
+ console.log("Flags (setup):");
241
+ console.log(" --domain <fqdn> Override the project domain");
242
+ console.log(" --to <email> Forwarding destination");
243
+ console.log(" --addresses <list> Comma-separated local parts (skips prompt)");
244
+ console.log(" --all-defaults Use every default preset; skip prompts");
245
+ console.log(" --no-catch-all Don't set the *@domain catch-all rule");
246
+ console.log(" --dmarc <none|quarantine|reject> DMARC policy (default: quarantine)");
247
+ console.log(" --no-resend-spf Skip auto-merging _spf.resend.com");
248
+ process.exit(1);
249
+ }
250
+ }
251
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/email/index.ts"],"names":[],"mappings":"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"}