hatchkit 0.1.26 → 0.1.27

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.
@@ -1,21 +1,39 @@
1
1
  /*
2
- * `hatchkit keys` subcommands — retrieve + push the per-project
3
- * dotenvx private key that lives in the OS keychain.
2
+ * `hatchkit keys` subcommands — manage the per-project dotenvx private
3
+ * key stored in the OS keychain. The same key lives in three places:
4
4
  *
5
- * keys show <project> Print the DOTENV_PRIVATE_KEY_PRODUCTION for
6
- * the named project so the user can paste it
7
- * into Coolify / a CI secret / etc.
5
+ * · OS keychain (canonical read by `hatchkit keys show <p>`)
6
+ * · `.env.keys` (on disk in the project, gitignored read by
7
+ * `dotenvx run` for local prod-like execution)
8
+ * · Deploy target (Coolify env var or GH Actions secret —
9
+ * DOTENV_PRIVATE_KEY_PRODUCTION at runtime)
8
10
  *
9
- * keys push <project> Upsert DOTENV_PRIVATE_KEY_PRODUCTION as an
10
- * env var on the project's Coolify
11
- * application. Requires Coolify to already be
12
- * configured and the application to exist.
11
+ * After `dotenvx rotate`, only `.env.keys` updates. The keychain copy
12
+ * and the deploy target keep the OLD key. `keys set` and `keys rotate`
13
+ * fix that asymmetry.
14
+ *
15
+ * keys show <project> Print DOTENV_PRIVATE_KEY_PRODUCTION
16
+ * from the keychain.
17
+ * keys set <project> [--key=…] Upsert the key into the keychain.
18
+ * Source priority: --key flag, stdin,
19
+ * `./.env.keys` autoread.
20
+ * keys rotate <project> Run `dotenvx rotate -f <prodEnv>`
21
+ * in the project, then `keys set`,
22
+ * then optionally fan out.
23
+ * keys push <project> [--target=] Mirror the keychain copy to one or
24
+ * both deploy targets (coolify/gh).
25
+ *
26
+ * The fan-out flags (--push-coolify, --push-gh, --target) are uniform
27
+ * across the subcommands so muscle memory transfers.
13
28
  */
29
+ import { existsSync, readFileSync } from "node:fs";
30
+ import { join } from "node:path";
14
31
  import chalk from "chalk";
15
32
  import ora from "ora";
16
33
  import { getCoolifyConfig } from "../config.js";
17
34
  import { CoolifyApi } from "../utils/coolify-api.js";
18
- import { SECRET_KEYS, getSecret } from "../utils/secrets.js";
35
+ import { exec } from "../utils/exec.js";
36
+ import { SECRET_KEYS, getSecret, setSecret } from "../utils/secrets.js";
19
37
  /** Print the private key for a project to stdout. `--json` emits a
20
38
  * structured `{ project, key, found }` object so agents can parse
21
39
  * without scraping. */
@@ -43,6 +61,122 @@ export async function showProjectKey(projectName, opts = {}) {
43
61
  // when redirected.
44
62
  process.stdout.write(`${key}\n`);
45
63
  }
64
+ /** Upsert the dotenvx private key into the OS keychain. Idempotent —
65
+ * noop when the keychain already holds the same value, but always
66
+ * reports the resolved source so callers can log meaningfully. */
67
+ export async function setProjectKey(projectName, opts = {}) {
68
+ const account = SECRET_KEYS.dotenvxPrivateKey(projectName);
69
+ const projectDir = opts.projectDir ?? process.cwd();
70
+ let value;
71
+ let source;
72
+ let envKeysPath;
73
+ if (opts.key !== undefined && opts.key !== "") {
74
+ value = opts.key.trim();
75
+ source = "flag";
76
+ }
77
+ else if (opts.fromStdin) {
78
+ const raw = await readStdin();
79
+ if (raw.trim() === "") {
80
+ throw new Error("Stdin was empty — pipe the private key, e.g. `cat key.txt | hatchkit keys set …`.");
81
+ }
82
+ // Allow a `DOTENV_PRIVATE_KEY_PRODUCTION="abc…"` line on stdin too
83
+ // — handy when the user just copies a chunk of `.env.keys`.
84
+ value = parsePrivateKeyValue(raw) ?? raw.trim();
85
+ source = "stdin";
86
+ }
87
+ else {
88
+ envKeysPath = locateEnvKeysFile(projectDir);
89
+ if (!envKeysPath) {
90
+ throw new Error(`Couldn't find .env.keys under ${projectDir}. Pass --key=… or pipe the value on stdin.`);
91
+ }
92
+ const parsed = parsePrivateKeyValue(readFileSync(envKeysPath, "utf-8"));
93
+ if (!parsed) {
94
+ throw new Error(`${envKeysPath} doesn't contain a DOTENV_PRIVATE_KEY_PRODUCTION line.`);
95
+ }
96
+ value = parsed;
97
+ source = "env-keys";
98
+ }
99
+ if (!isPlausiblePrivateKey(value)) {
100
+ throw new Error("Resolved key doesn't look like a dotenvx private key (expected hex string ≥ 32 chars).");
101
+ }
102
+ const existing = await getSecret(account);
103
+ const changed = existing !== value;
104
+ if (opts.dryRun) {
105
+ return { source, envKeysPath, account, changed, written: false };
106
+ }
107
+ if (changed) {
108
+ await setSecret(account, value);
109
+ }
110
+ return { source, envKeysPath, account, changed, written: changed };
111
+ }
112
+ /** Rotate the dotenvx keypair end-to-end:
113
+ * 1. `dotenvx rotate -f <env-production>` in the project.
114
+ * 2. Mirror the new private key into the OS keychain.
115
+ * 3. Optionally push to Coolify and/or a GH Actions secret. */
116
+ export async function rotateProjectKey(projectName, opts = {}) {
117
+ const projectDir = opts.projectDir ?? process.cwd();
118
+ const envProductionPath = locateEnvProductionFile(projectDir);
119
+ if (!envProductionPath) {
120
+ throw new Error(`Couldn't find .env.production under ${projectDir}. Is this a hatchkit-managed project root?`);
121
+ }
122
+ if (opts.dryRun) {
123
+ const envKeysPath = locateEnvKeysFile(projectDir) ?? envProductionPath.replace(/production$/, "keys");
124
+ return {
125
+ envProductionPath,
126
+ envKeysPath,
127
+ rotated: false,
128
+ set: {
129
+ source: "env-keys",
130
+ envKeysPath,
131
+ account: SECRET_KEYS.dotenvxPrivateKey(projectName),
132
+ changed: true,
133
+ written: false,
134
+ },
135
+ pushedCoolify: opts.pushCoolify ? { uuid: "<would-resolve>" } : undefined,
136
+ pushedGh: opts.pushGh ? { repo: opts.pushGh } : undefined,
137
+ };
138
+ }
139
+ // Run dotenvx rotate inline. The `dotenvx` JS API doesn't expose a
140
+ // rotate helper today; shell out to the CLI we already depend on.
141
+ // We use `npx --yes @dotenvx/dotenvx rotate -f <path>` so the user's
142
+ // PATH doesn't have to be set up — the package is already in the
143
+ // monorepo's node_modules at dev time, and `npx --yes` covers the
144
+ // installed-globally case too.
145
+ const relProd = envProductionPath.startsWith(projectDir)
146
+ ? envProductionPath.slice(projectDir.length + 1)
147
+ : envProductionPath;
148
+ const spinner = ora(`Rotating dotenvx keypair (${relProd})`).start();
149
+ try {
150
+ const res = await exec("npx", ["--yes", "@dotenvx/dotenvx", "rotate", "-f", relProd], {
151
+ cwd: projectDir,
152
+ silent: true,
153
+ });
154
+ if (res.exitCode !== 0) {
155
+ throw new Error(`dotenvx rotate exited ${res.exitCode}: ${res.stderr.trim() || res.stdout.trim()}`);
156
+ }
157
+ spinner.succeed(`Rotated keypair for ${relProd}`);
158
+ }
159
+ catch (err) {
160
+ if (spinner.isSpinning)
161
+ spinner.fail();
162
+ throw err;
163
+ }
164
+ const envKeysPath = locateEnvKeysFile(projectDir);
165
+ if (!envKeysPath) {
166
+ throw new Error(`dotenvx rotate completed but no .env.keys was produced under ${projectDir}.`);
167
+ }
168
+ const set = await setProjectKey(projectName, { projectDir });
169
+ let pushedCoolify;
170
+ if (opts.pushCoolify) {
171
+ pushedCoolify = await pushProjectKeyToCoolify(projectName);
172
+ }
173
+ let pushedGh;
174
+ if (opts.pushGh) {
175
+ await pushProjectKeyToGh(projectName, opts.pushGh);
176
+ pushedGh = { repo: opts.pushGh };
177
+ }
178
+ return { envProductionPath, envKeysPath, rotated: true, set, pushedCoolify, pushedGh };
179
+ }
46
180
  /** Push DOTENV_PRIVATE_KEY_PRODUCTION onto a Coolify application.
47
181
  * Resolves the application by name, defaulting to `<project>-web`
48
182
  * which matches scaffoldInfra's naming convention. */
@@ -83,5 +217,73 @@ export async function pushProjectKeyToCoolify(projectName, options = {}) {
83
217
  pushSpinner.fail("Coolify env update failed");
84
218
  throw err;
85
219
  }
220
+ return { uuid };
221
+ }
222
+ /** Push DOTENV_PRIVATE_KEY_PRODUCTION as a GitHub Actions secret on
223
+ * the named repo. Uses `gh secret set --body` (idempotent — gh upserts).
224
+ * Requires `gh` to be installed and authenticated for that repo. */
225
+ export async function pushProjectKeyToGh(projectName, repoSlug) {
226
+ const key = await getSecret(SECRET_KEYS.dotenvxPrivateKey(projectName));
227
+ if (!key) {
228
+ throw new Error(`No dotenvx key in keychain for project "${projectName}". Was it scaffolded with dotenvx integration?`);
229
+ }
230
+ const spinner = ora(`GitHub: setting DOTENV_PRIVATE_KEY_PRODUCTION on ${repoSlug}`).start();
231
+ try {
232
+ const res = await exec("gh", ["secret", "set", "DOTENV_PRIVATE_KEY_PRODUCTION", "--repo", repoSlug, "--body", key], { silent: true });
233
+ if (res.exitCode !== 0) {
234
+ throw new Error(`gh secret set exited ${res.exitCode}: ${res.stderr.trim()}`);
235
+ }
236
+ spinner.succeed(`GitHub secret set on ${repoSlug}`);
237
+ }
238
+ catch (err) {
239
+ if (spinner.isSpinning)
240
+ spinner.fail();
241
+ throw err;
242
+ }
243
+ }
244
+ /** Locate `.env.keys` for a hatchkit project. Mirrors the precedence
245
+ * adopt's `dotenvxRootFor` uses (server, then client, then root) so
246
+ * `keys set` / `keys rotate` see the same file the next deploy will. */
247
+ export function locateEnvKeysFile(projectDir) {
248
+ return locateDotenvxFile(projectDir, ".env.keys");
249
+ }
250
+ export function locateEnvProductionFile(projectDir) {
251
+ return locateDotenvxFile(projectDir, ".env.production");
252
+ }
253
+ function locateDotenvxFile(projectDir, name) {
254
+ const candidates = [
255
+ join(projectDir, "packages/server", name),
256
+ join(projectDir, "apps/server", name),
257
+ join(projectDir, "packages/client", name),
258
+ join(projectDir, "apps/client", name),
259
+ join(projectDir, name),
260
+ ];
261
+ return candidates.find((p) => existsSync(p));
262
+ }
263
+ /** Pull the value out of a `DOTENV_PRIVATE_KEY_PRODUCTION="…"` line
264
+ * (or unquoted variant). Returns undefined if not present.
265
+ *
266
+ * After `dotenvx rotate`, the value is a comma-joined list of hex
267
+ * keys (`old,new`) so the runtime can decrypt both pre- and
268
+ * post-rotation ciphertext during the cutover. The full list is
269
+ * what we want to mirror to the deploy target, so we capture all
270
+ * hex+comma characters until the closing quote / EOL. */
271
+ export function parsePrivateKeyValue(content) {
272
+ const m = content.match(/^DOTENV_PRIVATE_KEY_PRODUCTION\s*=\s*"?([0-9a-fA-F,]+)"?\s*$/m);
273
+ return m ? m[1] : undefined;
274
+ }
275
+ /** Cheap sanity check — dotenvx ECIES private keys are 64-char hex
276
+ * (or a comma-joined list of them after `rotate`). Anything that
277
+ * isn't at least one ≥32-char hex run is almost certainly a mis-paste. */
278
+ function isPlausiblePrivateKey(v) {
279
+ return v.split(",").every((part) => /^[0-9a-fA-F]{32,}$/.test(part));
280
+ }
281
+ /** Read all of stdin as a UTF-8 string. */
282
+ async function readStdin() {
283
+ let raw = "";
284
+ for await (const chunk of process.stdin) {
285
+ raw += typeof chunk === "string" ? chunk : chunk.toString("utf-8");
286
+ }
287
+ return raw;
86
288
  }
87
289
  //# sourceMappingURL=keys.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/deploy/keys.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/deploy/keys.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"rollback.d.ts","sourceRoot":"","sources":["../../src/deploy/rollback.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAmB,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAGpE,UAAU,eAAe;IACvB,oEAAoE;IACpE,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAMD,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAExF;AAED;;;sDAGsD;AACtD,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAEvF;AAyDD,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAcnD;AA4DD,wBAAsB,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,GAAE,eAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgE9F"}
1
+ {"version":3,"file":"rollback.d.ts","sourceRoot":"","sources":["../../src/deploy/rollback.ts"],"names":[],"mappings":"AAwBA,OAAO,EAAmB,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAGpE,UAAU,eAAe;IACvB,oEAAoE;IACpE,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAqBD,wBAAsB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAExF;AAED;;;sDAGsD;AACtD,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAEvF;AAyDD,wBAAgB,WAAW,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAcnD;AA4DD,wBAAsB,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,GAAE,eAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAkG9F"}
@@ -24,6 +24,20 @@ import { CoolifyApi } from "../utils/coolify-api.js";
24
24
  import { exec } from "../utils/exec.js";
25
25
  import { RunLedger } from "../utils/run-ledger.js";
26
26
  import { deleteSecret } from "../utils/secrets.js";
27
+ /** Thrown by an undo step when the resource can't be auto-deleted because
28
+ * the underlying API needs the user to do something first (e.g. Coolify
29
+ * refuses to delete a project that still has apps/databases inside it).
30
+ * Surfaces as a yellow "skipped" with the hint lines, and the step stays
31
+ * in the ledger so a follow-up `hatchkit destroy` can pick it up after
32
+ * the user clears the blocker. */
33
+ class RollbackSkip extends Error {
34
+ hints;
35
+ constructor(message, hints) {
36
+ super(message);
37
+ this.name = "RollbackSkip";
38
+ this.hints = hints;
39
+ }
40
+ }
27
41
  /* ─────────────────────────────────────────────────────────────────────── */
28
42
  /* Failure handler — called from the create-flow try/catch */
29
43
  /* ─────────────────────────────────────────────────────────────────────── */
@@ -148,6 +162,20 @@ export async function runRollback(ledger, opts = {}) {
148
162
  const remaining = [];
149
163
  for (const step of [...ledger.steps].reverse()) {
150
164
  const label = describeStep(step);
165
+ // Pre-confirm warning for the GHCR registry: it's shared per-host
166
+ // across every Coolify app that pulls from `ghcr.io`. If other apps
167
+ // still exist on this Coolify install they'll lose pull access. We
168
+ // only print the warning — the standard destructive confirm below
169
+ // is what actually gates the delete.
170
+ if (step.kind === "coolifyPrivateRegistry") {
171
+ const others = await countOtherCoolifyApps(ledger);
172
+ if (others && others.count > 0) {
173
+ const list = others.sample.join(", ") +
174
+ (others.count > others.sample.length ? `, …+${others.count - others.sample.length}` : "");
175
+ console.log(chalk.yellow(` ⚠ ${others.count} other Coolify app(s) currently exist on this install (${list}).`));
176
+ console.log(chalk.yellow(` This is a shared ghcr.io credential — deleting it removes pull access for all of them.`));
177
+ }
178
+ }
151
179
  // Per-step confirmation for the irreversible ones unless --yes.
152
180
  if (!opts.yes && isDestructive(step)) {
153
181
  const ok = await confirm({
@@ -163,7 +191,7 @@ export async function runRollback(ledger, opts = {}) {
163
191
  }
164
192
  process.stdout.write(` ${label} … `);
165
193
  try {
166
- const result = await undoStep(step);
194
+ const result = await undoStep(step, ledger.name);
167
195
  if (result === "skipped") {
168
196
  console.log(chalk.dim("skipped"));
169
197
  skipped += 1;
@@ -179,9 +207,20 @@ export async function runRollback(ledger, opts = {}) {
179
207
  }
180
208
  }
181
209
  catch (err) {
182
- console.log(chalk.red(`✗ ${err.message}`));
183
- failed += 1;
184
- remaining.push(step);
210
+ if (err instanceof RollbackSkip) {
211
+ console.log(chalk.yellow(`needs manual cleanup`));
212
+ console.log(chalk.dim(` ${err.message}`));
213
+ for (const hint of err.hints) {
214
+ console.log(chalk.dim(` ${hint}`));
215
+ }
216
+ skipped += 1;
217
+ remaining.push(step);
218
+ }
219
+ else {
220
+ console.log(chalk.red(`✗ ${err.message}`));
221
+ failed += 1;
222
+ remaining.push(step);
223
+ }
185
224
  }
186
225
  }
187
226
  console.log(chalk.bold("\n ── Rollback summary ────────────────────────────────────────\n"));
@@ -219,8 +258,39 @@ function isDestructive(step) {
219
258
  step.kind === "coolifyApp" ||
220
259
  step.kind === "coolifyProject" ||
221
260
  step.kind === "coolifyDb" ||
261
+ step.kind === "coolifyPrivateRegistry" ||
222
262
  step.kind === "cloudflareDnsRecord");
223
263
  }
264
+ /** Probe Coolify for apps that DON'T belong to this run's ledger. Used
265
+ * before deleting `coolifyPrivateRegistry`: the GHCR pull-creds entry
266
+ * is shared per-host across every app on the Coolify install, so if
267
+ * there are other apps still pulling from `ghcr.io` they'll lose their
268
+ * pull access when this entry goes away.
269
+ *
270
+ * Best-effort — a probe failure (Coolify unreachable, token expired)
271
+ * resolves to `null` and the caller falls through to the standard
272
+ * destructive confirm without a count. We never block the rollback on
273
+ * this informational check. */
274
+ async function countOtherCoolifyApps(ledger) {
275
+ try {
276
+ const cfg = await getCoolifyConfig();
277
+ if (!cfg)
278
+ return null;
279
+ const api = new CoolifyApi({ url: cfg.url, token: cfg.token });
280
+ const allApps = await api.listApplications();
281
+ // Apps THIS rollback is going to delete shouldn't count toward the
282
+ // "other apps that depend on this registry" warning.
283
+ const ourAppUuids = new Set(ledger.steps.filter((s) => s.kind === "coolifyApp").map((s) => s.uuid));
284
+ const others = allApps.filter((a) => !ourAppUuids.has(a.uuid));
285
+ return {
286
+ count: others.length,
287
+ sample: others.slice(0, 3).map((a) => a.name),
288
+ };
289
+ }
290
+ catch {
291
+ return null;
292
+ }
293
+ }
224
294
  function describeStep(step) {
225
295
  switch (step.kind) {
226
296
  case "scaffold":
@@ -263,7 +333,7 @@ function describeStep(step) {
263
333
  return `delete Cloudflare ${step.type} record ${chalk.cyan(step.name)}`;
264
334
  }
265
335
  }
266
- async function undoStep(step) {
336
+ async function undoStep(step, ledgerName) {
267
337
  switch (step.kind) {
268
338
  case "scaffold": {
269
339
  if (!existsSync(step.path))
@@ -340,8 +410,28 @@ async function undoStep(step) {
340
410
  if (!cfg)
341
411
  throw new Error("Coolify config no longer present");
342
412
  const api = new CoolifyApi({ url: cfg.url, token: cfg.token });
343
- const result = await api.deleteProject(step.uuid);
344
- return result === "not-found" ? "not-found" : "done";
413
+ try {
414
+ const result = await api.deleteProject(step.uuid);
415
+ return result === "not-found" ? "not-found" : "done";
416
+ }
417
+ catch (err) {
418
+ // Coolify rejects project delete when apps/databases/services
419
+ // still live inside it. The API doesn't return the list of
420
+ // leftovers (and apps don't expose project_uuid via the public
421
+ // endpoints either), so we can't auto-cascade safely. Surface
422
+ // a yellow "needs manual cleanup" with the project URL — the
423
+ // ledger keeps this step pending so the next `hatchkit destroy`
424
+ // re-tries it after the user has emptied the project.
425
+ const msg = err.message;
426
+ if (/Project has resources|cannot be deleted/i.test(msg)) {
427
+ const projectUrl = `${cfg.url.replace(/\/$/, "")}/project/${step.uuid}`;
428
+ throw new RollbackSkip("Coolify project still has applications/databases/services inside it.", [
429
+ `Open ${projectUrl} and delete each remaining resource.`,
430
+ `Then re-run \`hatchkit destroy ${ledgerName}\` to remove the empty project.`,
431
+ ]);
432
+ }
433
+ throw err;
434
+ }
345
435
  }
346
436
  case "coolifyPrivateRegistry": {
347
437
  const cfg = await getCoolifyConfig();
@@ -1 +1 @@
1
- {"version":3,"file":"rollback.js","sourceRoot":"","sources":["../../src/deploy/rollback.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rollback.js","sourceRoot":"","sources":["../../src/deploy/rollback.ts"],"names":[],"mappings":"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"}
package/dist/doctor.d.ts CHANGED
@@ -6,6 +6,19 @@ interface CheckResult {
6
6
  hint?: string[];
7
7
  }
8
8
  export declare function collectDoctorResults(): Promise<CheckResult[]>;
9
+ /** Project-local key hygiene checks, gated on the presence of
10
+ * `.hatchkit.json` in the cwd:
11
+ *
12
+ * 1. `.env.keys` is NOT tracked by git. (If it is, the dotenvx
13
+ * private key has either already leaked or is one push away.)
14
+ * 2. The keychain copy of DOTENV_PRIVATE_KEY_PRODUCTION matches
15
+ * the value in `.env.keys`. After `dotenvx rotate` the file
16
+ * updates but the keychain doesn't — `keys set` fixes that;
17
+ * this check surfaces the drift before a deploy goes wrong.
18
+ *
19
+ * Exported so tests can invoke it directly with a fixture dir
20
+ * instead of munging `process.cwd()`. */
21
+ export declare function checkProjectKeyState(projectDir: string): Promise<CheckResult[]>;
9
22
  export declare function runDoctor(opts?: {
10
23
  json?: boolean;
11
24
  }): 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;AA2dD,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAanE;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;AA2dD,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAkBnE;AAED;;;;;;;;;;;0CAW0C;AAC1C,wBAAsB,oBAAoB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CA6FrF;AAED,wBAAsB,SAAS,CAAC,IAAI,GAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CA8C5E"}