sponson 0.9.0 → 0.9.2

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/render.d.ts CHANGED
@@ -12,17 +12,32 @@ export interface RenderOptions {
12
12
  */
13
13
  export declare const PLAN_SYMBOL: Record<PlanLineStatus, string>;
14
14
  export declare const LINE_SYMBOL: Record<LineStatus, string>;
15
- /** One side of a diff as text; undefined when there is nothing to show (absent). */
15
+ /**
16
+ * One side of a diff as text; undefined when there is nothing to show (absent). Labels follow what the value is in
17
+ * the plan (the engine sets the side from the param, `describeInput`): `secret` only for a `{ secret }` reference,
18
+ * `value hidden` for a sensitive value that is not one (a `{ from }` output, a live value the provider hides), and a
19
+ * literal as itself. The PR comment (markdown.ts) uses the same words.
20
+ */
16
21
  export declare function sideText(s: DiffSide | undefined): string | undefined;
17
22
  /**
18
23
  * One resource's diff as text. The value is left out where it says nothing the label does not (a Neon branch whose
19
24
  * label already ends in its name), and a change between two hidden values says what changed instead of
20
- * `(secret) → (secret)`: `drifted` marks a resource changed outside Sponson since the last apply.
25
+ * `(value hidden) → (value hidden)`. `drift` is what happened to the resource outside Sponson since the last apply
26
+ * (`changed outside Sponson`), said here once: the line's error and the drift section leave it out.
21
27
  */
22
- export declare function diffText(d: ResourceDiff, drifted?: boolean): string;
28
+ export declare function diffText(d: ResourceDiff, drift?: string): string;
23
29
  export declare function planSummary(lines: PlanLine[]): string;
24
30
  export declare function renderPlan(result: PlanResult, opts: RenderOptions): string;
25
- export declare function finalLine(summary: ApplyResultSummary): string;
31
+ /**
32
+ * The run's outcome in one line. `brief`: under the table, whose row already says what went wrong and the fix, a
33
+ * failure names the line and its code only; alone (the MCP summary) it says it all.
34
+ */
35
+ export declare function finalLine(summary: ApplyResultSummary, brief?: boolean): string;
36
+ /**
37
+ * The apply (or destroy) report. Outputs are listed for what exists after the run: a destroy deleted what they
38
+ * describe, so it lists none (the receipt keeps them). A drift the refused line's error already states (its
39
+ * resource named in the message) is not repeated in the drift section.
40
+ */
26
41
  export declare function renderApply(summary: ApplyResultSummary, opts: RenderOptions): string;
27
42
  export declare function planJson(result: PlanResult, ok: boolean): {
28
43
  ok: boolean;
@@ -53,4 +68,5 @@ export declare function applyJson(summary: ApplyResultSummary, code: number): {
53
68
  receipt: import("@sponson/core").Receipt;
54
69
  drift: Drift[];
55
70
  warnings: string[];
71
+ inputs: Record<string, Record<string, DiffSide>>;
56
72
  };
package/dist/render.js CHANGED
@@ -1,4 +1,4 @@
1
- import { cliHint } from "./output.js";
1
+ import { DRIFT_REPLACED_HINT, cliHint } from "./output.js";
2
2
  /**
3
3
  * One glyph per status. `-` means something is (or was) removed, so it is kept for that alone: a line that is held
4
4
  * back (refused, or waiting on a refused line) is `x`, which reads as "not done", never as a delete.
@@ -21,19 +21,25 @@ function paint(symbol, text, color) {
21
21
  const code = ANSI[symbol];
22
22
  return color && code ? `\u001b[${code}m${text}\u001b[0m` : text;
23
23
  }
24
- /** One side of a diff as text; undefined when there is nothing to show (absent). */
24
+ /**
25
+ * One side of a diff as text; undefined when there is nothing to show (absent). Labels follow what the value is in
26
+ * the plan (the engine sets the side from the param, `describeInput`): `secret` only for a `{ secret }` reference,
27
+ * `value hidden` for a sensitive value that is not one (a `{ from }` output, a live value the provider hides), and a
28
+ * literal as itself. The PR comment (markdown.ts) uses the same words.
29
+ */
25
30
  export function sideText(s) {
26
31
  if (!s)
27
32
  return undefined;
33
+ const from = s.ref ? ` ← ${s.ref}` : "";
28
34
  switch (s.state) {
29
35
  case "literal":
30
36
  return s.value ?? "";
31
37
  case "sensitive":
32
- return "(secret)";
38
+ return `(value hidden${from})`;
33
39
  case "pending":
34
- return s.ref ? `(pending ← ${s.ref})` : "(pending)";
40
+ return `(pending${from})`;
35
41
  case "secret":
36
- return s.ref ? `(secret ← ${s.ref})` : "(secret)";
42
+ return `(secret${from})`;
37
43
  case "absent":
38
44
  return undefined;
39
45
  }
@@ -41,31 +47,42 @@ export function sideText(s) {
41
47
  /**
42
48
  * One resource's diff as text. The value is left out where it says nothing the label does not (a Neon branch whose
43
49
  * label already ends in its name), and a change between two hidden values says what changed instead of
44
- * `(secret) → (secret)`: `drifted` marks a resource changed outside Sponson since the last apply.
50
+ * `(value hidden) → (value hidden)`. `drift` is what happened to the resource outside Sponson since the last apply
51
+ * (`changed outside Sponson`), said here once: the line's error and the drift section leave it out.
45
52
  */
46
- export function diffText(d, drifted = false) {
53
+ export function diffText(d, drift) {
47
54
  const after = sideText(d.after);
48
55
  if (after === undefined)
49
- return d.label;
56
+ return drift ? `${d.label} ${drift}` : d.label;
50
57
  const before = sideText(d.before);
51
58
  if (before === undefined && d.after?.state === "literal" && (d.label === after || d.label.endsWith(` ${after}`)))
52
59
  return d.label;
53
- if (before !== undefined && before === after && hidden(d.before) && hidden(d.after)) {
54
- return `${d.label} ${drifted ? "changed outside Sponson" : "changes"} (value hidden)`;
55
- }
56
- return `${d.label} ${before !== undefined ? `${before} → ` : ""}${after}`;
60
+ if (before !== undefined && hidden(d.before) && hidden(d.after))
61
+ return `${d.label} ${drift ?? "changes"} ${after}`;
62
+ return `${d.label} ${drift ? `${drift}: ` : ""}${before !== undefined ? `${before} → ` : ""}${after}`;
57
63
  }
58
64
  function hidden(s) {
59
65
  return s?.state === "sensitive" || s?.state === "secret";
60
66
  }
61
- /** Line errors in text output carry the same CLI remedy the JSON envelope does (from core's ERROR_CODES). */
62
- function errorText(error, code) {
67
+ /**
68
+ * Line errors in text output carry the same CLI remedy the JSON envelope does (from core's ERROR_CODES). `replaced`:
69
+ * the line's drift is a replacement, whose reconcile adopts rather than overwrites; said for DRIFT_CHANGED only then.
70
+ */
71
+ function errorText(error, code, replaced = false) {
63
72
  if (!error)
64
73
  return code ?? "";
65
- const hint = cliHint(code);
74
+ const hint = hintText(code, replaced);
66
75
  const text = hint ? `${error} ${hint}` : error;
67
76
  return code ? `${code}: ${text}` : text;
68
77
  }
78
+ function hintText(code, replaced) {
79
+ const hint = cliHint(code);
80
+ return code === "DRIFT_CHANGED" && replaced ? `${hint} ${DRIFT_REPLACED_HINT}` : hint;
81
+ }
82
+ /** The lines whose drift is a replacement (`replaced: true`). */
83
+ function replacedLines(drift) {
84
+ return new Set(drift.flatMap((d) => (d.kind === "changed" && d.replaced && d.line ? [d.line] : [])));
85
+ }
69
86
  function table(rows, color) {
70
87
  const idW = Math.max(...rows.map((r) => r.id.length));
71
88
  const opW = Math.max(...rows.map((r) => r.op.length));
@@ -79,12 +96,14 @@ function table(rows, color) {
79
96
  }
80
97
  return out.join("\n");
81
98
  }
82
- function driftSection(drift) {
83
- if (drift.length === 0)
99
+ /** Drift not already said on a line of the table (`shown`: whether that line says it). */
100
+ function driftSection(drift, shown = () => false) {
101
+ const rest = drift.filter((d) => !shown(d));
102
+ if (rest.length === 0)
84
103
  return "";
85
- const kindW = Math.max(...drift.map((d) => d.kind.length));
86
- const adW = Math.max(...drift.map((d) => d.adapter.length));
87
- return "\ndrift\n" + drift.map((d) => ` ${d.kind.padEnd(kindW)} ${d.adapter.padEnd(adW)} ${d.message}`).join("\n") + "\n";
104
+ const kindW = Math.max(...rest.map((d) => d.kind.length));
105
+ const adW = Math.max(...rest.map((d) => d.adapter.length));
106
+ return "\ndrift\n" + rest.map((d) => ` ${d.kind.padEnd(kindW)} ${d.adapter.padEnd(adW)} ${d.message}`).join("\n") + "\n";
88
107
  }
89
108
  function warningsSection(warnings) {
90
109
  if (warnings.length === 0)
@@ -94,17 +113,31 @@ function warningsSection(warnings) {
94
113
  // ---------------------------------------------------------------------------
95
114
  // plan
96
115
  // ---------------------------------------------------------------------------
97
- /** `drifted` holds `line\0resourceKey` of every resource changed outside Sponson (from the plan's drift). */
98
- function planRow(l, drifted) {
116
+ /** What happened outside Sponson to each resource a line manages, by `line\0resourceKey`, from the plan's drift. */
117
+ function driftByResource(drift) {
118
+ const out = new Map();
119
+ for (const d of drift) {
120
+ if (d.kind === "changed" && d.line)
121
+ out.set(`${d.line}\u0000${d.resource.key}`, d.replaced ? "deleted and re-created outside Sponson" : "changed outside Sponson");
122
+ }
123
+ return out;
124
+ }
125
+ /**
126
+ * A plan line as a row. The resource identity is said once per line: a drifted resource says what happened to it on
127
+ * its own sub-row, so the refused line's detail keeps only the code and the remedy.
128
+ */
129
+ function planRow(l, drifted, replaced) {
99
130
  const row = { symbol: PLAN_SYMBOL[l.status], id: l.id, op: `${l.adapter}.${l.op}`, status: l.status, detail: "", sub: [] };
100
- const text = (d) => diffText(d, drifted.has(`${l.id}\u0000${d.key}`));
131
+ const driftOf = (d) => drifted.get(`${l.id}\u0000${d.key}`);
132
+ const text = (d) => diffText(d, driftOf(d));
101
133
  const diffRows = () => l.diffs.map((d) => `${PLAN_SYMBOL[d.kind]} ${text(d)}`);
102
134
  if (l.status === "pending") {
103
135
  row.detail = l.waitingOn ? `waiting on \`${l.waitingOn}\`${l.waitingFor ? ` (${l.waitingFor})` : ""}` : `waiting${l.waitingFor ? ` on ${l.waitingFor}` : ""}`;
104
136
  row.sub = diffRows();
105
137
  }
106
138
  else if (l.status === "error" || l.status === "blocked") {
107
- row.detail = errorText(l.error, l.errorCode);
139
+ const saidBelow = l.status === "blocked" && l.errorCode === "DRIFT_CHANGED" && l.diffs.some(driftOf);
140
+ row.detail = saidBelow ? `DRIFT_CHANGED: ${hintText("DRIFT_CHANGED", replaced.has(l.id))}` : errorText(l.error, l.errorCode, replaced.has(l.id));
108
141
  if (l.status === "blocked")
109
142
  row.sub = diffRows();
110
143
  }
@@ -120,6 +153,10 @@ function planRow(l, drifted) {
120
153
  }
121
154
  return row;
122
155
  }
156
+ /** Whether a line of the plan's table shows the drifted resource (its diff), so the drift section need not. */
157
+ function shownInPlan(lines) {
158
+ return (d) => d.kind === "changed" && lines.some((l) => l.id === d.line && l.status !== "error" && !l.manual && l.diffs.some((x) => x.key === d.resource.key));
159
+ }
123
160
  export function planSummary(lines) {
124
161
  const counts = new Map();
125
162
  for (const l of lines)
@@ -136,9 +173,10 @@ export function renderPlan(result, opts) {
136
173
  if (result.requiresApproval)
137
174
  notes.push("! apply needs approval: it writes to production (--approved-by <who>, from a human)");
138
175
  const noteText = notes.length ? `\n${notes.join("\n")}\n` : "";
139
- const drifted = new Set(result.drift.filter((d) => d.kind === "changed" && d.line).map((d) => `${d.line}\u0000${d.resource.key}`));
140
- const body = result.lines.length ? table(result.lines.map((l) => planRow(l, drifted)), opts.color) : "(no lines for this environment)";
141
- return `${header}\n${noteText}\n${body}\n${driftSection(result.drift)}${warningsSection(result.warnings)}\n${planSummary(result.lines)}\n`;
176
+ const drifted = driftByResource(result.drift);
177
+ const replaced = replacedLines(result.drift);
178
+ const body = result.lines.length ? table(result.lines.map((l) => planRow(l, drifted, replaced)), opts.color) : "(no lines for this environment)";
179
+ return `${header}\n${noteText}\n${body}\n${driftSection(result.drift, shownInPlan(result.lines))}${warningsSection(result.warnings)}\n${planSummary(result.lines)}\n`;
142
180
  }
143
181
  /**
144
182
  * A manual step for the person who must do it (ADR 0021): its instructions as written, then how to say it is done.
@@ -159,19 +197,35 @@ function manualSection(todos) {
159
197
  // ---------------------------------------------------------------------------
160
198
  // apply
161
199
  // ---------------------------------------------------------------------------
162
- function receiptRow(l) {
200
+ function receiptRow(l, replaced) {
163
201
  const row = { symbol: LINE_SYMBOL[l.status], id: l.id, op: `${l.adapter}.${l.op}`, status: l.status, detail: "", sub: [] };
164
202
  if (l.orphan)
165
203
  row.detail = "(removed from the plan; left alone)";
166
204
  else if (l.status === "waiting")
167
205
  row.detail = `waiting on ${l.waitingFor ?? "external event"}`;
168
206
  else if (l.error || l.errorCode)
169
- row.detail = errorText(l.error, l.errorCode);
207
+ row.detail = errorText(l.error, l.errorCode, replaced.has(l.id));
170
208
  else
171
209
  row.detail = l.resources.map((r) => r.label ?? r.key).join(", ");
172
210
  return row;
173
211
  }
174
- export function finalLine(summary) {
212
+ /** What a partial run waits on, by event ("callback waits for the deploy"), and which lines are blocked. */
213
+ function partialParts(lines) {
214
+ const byEvent = new Map();
215
+ for (const l of lines)
216
+ if (l.status === "waiting")
217
+ byEvent.set(l.waitingFor ?? "external event", [...(byEvent.get(l.waitingFor ?? "external event") ?? []), l.id]);
218
+ const blocked = lines.filter((l) => l.status === "blocked").map((l) => l.id);
219
+ const parts = [...byEvent].map(([ev, ids]) => `${ids.join(", ")} ${ids.length === 1 ? "waits" : "wait"} for the ${ev}`);
220
+ if (blocked.length)
221
+ parts.push(`blocked: ${blocked.join(", ")}`);
222
+ return parts;
223
+ }
224
+ /**
225
+ * The run's outcome in one line. `brief`: under the table, whose row already says what went wrong and the fix, a
226
+ * failure names the line and its code only; alone (the MCP summary) it says it all.
227
+ */
228
+ export function finalLine(summary, brief = false) {
175
229
  const { receipt } = summary;
176
230
  const verb = receipt.destroy ? "destroy" : "apply";
177
231
  if (receipt.stale) {
@@ -181,29 +235,31 @@ export function finalLine(summary) {
181
235
  const lines = Object.values(receipt.lines).filter((l) => !l.orphan);
182
236
  if (receipt.status === "complete")
183
237
  return `${verb} complete`;
184
- if (receipt.status === "partial") {
185
- const byEvent = new Map();
186
- for (const l of lines)
187
- if (l.status === "waiting")
188
- byEvent.set(l.waitingFor ?? "external event", [...(byEvent.get(l.waitingFor ?? "external event") ?? []), l.id]);
189
- const blocked = lines.filter((l) => l.status === "blocked").map((l) => l.id);
190
- const parts = [...byEvent].map(([ev, ids]) => `waiting on ${ev} for lines ${ids.join(", ")}`);
191
- if (blocked.length)
192
- parts.push(`blocked: ${blocked.join(", ")}`);
193
- return `${verb} partial: ${parts.join("; ")}`;
194
- }
238
+ if (receipt.status === "partial")
239
+ return `${verb} partial: ${partialParts(lines).join("; ")}`;
195
240
  const first = lines.find((l) => ["failed", "rollback_failed", "destroy_failed", "blocked"].includes(l.status));
196
- return `${verb} failed: ${first ? `${first.id}: ${errorText(first.error, first.errorCode) || first.status}` : "unknown error"}`;
241
+ if (!first)
242
+ return `${verb} failed: unknown error`;
243
+ if (brief)
244
+ return `${verb} failed: ${first.id} (${first.errorCode ?? first.status}, above)`;
245
+ return `${verb} failed: ${first.id}: ${errorText(first.error, first.errorCode, replacedLines(summary.drift).has(first.id)) || first.status}`;
197
246
  }
247
+ /**
248
+ * The apply (or destroy) report. Outputs are listed for what exists after the run: a destroy deleted what they
249
+ * describe, so it lists none (the receipt keeps them). A drift the refused line's error already states (its
250
+ * resource named in the message) is not repeated in the drift section.
251
+ */
198
252
  export function renderApply(summary, opts) {
199
253
  const { receipt } = summary;
200
254
  const approval = receipt.approvedBy ? ` · approved by ${receipt.approvedBy}` : "";
201
255
  const header = `sponson ${receipt.destroy ? "apply --destroy" : "apply"} · ${receipt.environment} · ${receipt.scope} · run ${receipt.runId}${approval}`;
202
256
  const lines = Object.values(receipt.lines);
203
- const body = lines.length ? table(lines.map(receiptRow), opts.color) : "(nothing to do)";
204
- const outputs = lines.flatMap((l) => Object.entries(l.outputs).map(([k, v]) => ` ${l.id}.${k} = ${String(v)}`));
257
+ const replaced = replacedLines(summary.drift);
258
+ const body = lines.length ? table(lines.map((l) => receiptRow(l, replaced)), opts.color) : "(nothing to do)";
259
+ const outputs = receipt.destroy ? [] : lines.flatMap((l) => Object.entries(l.outputs).map(([k, v]) => ` ${l.id}.${k} = ${String(v)}`));
205
260
  const outputSection = outputs.length ? `\noutputs\n${outputs.join("\n")}\n` : "";
206
- return `${header}\n\n${body}\n${outputSection}${manualSection(summary.manual)}${driftSection(summary.drift)}${warningsSection(summary.warnings)}\n${finalLine(summary)}\n`;
261
+ const saidOnLine = (d) => d.kind === "changed" && lines.some((l) => l.id === d.line && l.errorCode === "DRIFT_CHANGED" && (l.error ?? "").includes(d.resource.label ?? d.resource.key));
262
+ return `${header}\n\n${body}\n${outputSection}${manualSection(summary.manual)}${driftSection(summary.drift, saidOnLine)}${warningsSection(summary.warnings)}\n${finalLine(summary, true)}\n`;
207
263
  }
208
264
  // ---------------------------------------------------------------------------
209
265
  // JSON envelopes: engine data passed through, nothing added for display.
@@ -234,6 +290,7 @@ export function applyJson(summary, code) {
234
290
  receipt: summary.receipt,
235
291
  drift: summary.drift,
236
292
  warnings: summary.warnings,
293
+ inputs: summary.inputs ?? {},
237
294
  ...(manual ? { manual } : {}),
238
295
  ...(manual && summary.receipt.status !== "failed" ? { error: manualError(manual) } : {}),
239
296
  };
@@ -1 +1 @@
1
- {"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render.js","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
package/dist/setup.d.ts CHANGED
@@ -6,8 +6,13 @@ import { type Todo } from "./starter.js";
6
6
  export type CredentialStatus =
7
7
  /** Checked: the provider accepted it (and it reaches the project the plan names, when it names one). */
8
8
  "ok"
9
- /** Accepted as a credential, but without the permission or the project the plan needs (403, or 404 on the project). */
9
+ /** Accepted as a credential, but without the permission the plan needs (403). */
10
10
  | "wrong_scope"
11
+ /**
12
+ * What the plan names (a project, a site) was not found (404): its id is wrong, or, with an API that hides what a
13
+ * credential cannot see behind a 404, out of the credential's reach. `message` says which the provider can tell.
14
+ */
15
+ | "not_found"
11
16
  /** Rejected (401): mistyped, revoked or expired. */
12
17
  | "unauthorized"
13
18
  /** The check could not tell (the provider unreachable, the plan incomplete): see `message`. */
@@ -30,6 +35,12 @@ export interface SetupCredential {
30
35
  /** Where the credential is created, and the least it needs; null when the provider declares neither. */
31
36
  url: string | null;
32
37
  scope: string | null;
38
+ /**
39
+ * What the credential is for, in one sentence: Sponson calls the provider with it, and it is not the app's own
40
+ * variable (naming the app's differently named ones for the provider, from the `.env*` names init read). Null for
41
+ * the plan's own `env://` values.
42
+ */
43
+ purpose: string | null;
33
44
  status: CredentialStatus;
34
45
  /** The read-only request that checked it (`GET /v2/user`), and what it proved the credential reaches. */
35
46
  checked: string | null;
@@ -54,10 +65,21 @@ export interface SetupReport {
54
65
  tag: string;
55
66
  commit: string | null;
56
67
  };
57
- /** The plan has no TODO left, and every credential is ok, unchecked or a login (none missing): the plan can run. */
68
+ /**
69
+ * The plan has no TODO left, and every credential is ok, unchecked or a login (none missing): the plan can run.
70
+ * Defaults to check (`checks`) never count against it.
71
+ */
58
72
  ready: boolean;
59
- /** What to do next, with the command: `sponson plan` when ready, otherwise what to fix first. */
60
- next: string;
73
+ /**
74
+ * What to do next. `command`: the command to run, as a person or an agent types it (`sponson plan` when ready,
75
+ * `sponson init --setup` to type a missing token), or null when the next step is not a command (filling in the
76
+ * plan's TODOs, making a new token). `why`: one sentence on what to do and why.
77
+ */
78
+ next: SetupNext;
79
+ }
80
+ export interface SetupNext {
81
+ command: string | null;
82
+ why: string;
61
83
  }
62
84
  export interface SetupOpts {
63
85
  /** Accept every offer (store each secret, write the workflow) without asking: for scripted use. */
@@ -74,6 +96,10 @@ interface Need {
74
96
  scope?: string;
75
97
  /** The read-only check, given an adapter context whose `env` carries the values. */
76
98
  verify?: (actx: AdapterContext) => Promise<CredentialCheck>;
99
+ /** A 404 from the check means what the plan names does not exist (`AdapterAbout.notFoundMeansMissing`). */
100
+ notFoundMeansMissing?: boolean;
101
+ /** The variable names that say an app uses the provider (`detect.env`): the app's own variables for it. */
102
+ appEnv?: readonly string[];
77
103
  }
78
104
  /** What setup runs with. */
79
105
  export interface SetupContext {
@@ -89,6 +115,10 @@ export interface SetupContext {
89
115
  }>;
90
116
  /** The TODOs the plan still has (`planTodos`): listed first, and no workflow is offered while there are any. */
91
117
  todos?: Todo[];
118
+ /** Defaults the plan runs with that a person should check (`planChecks`): listed as "please check", never blocking. */
119
+ checks?: Todo[];
120
+ /** The variable names the repository's `.env*` files declare (detection's `envNames`; never a value). */
121
+ envNames?: string[];
92
122
  }
93
123
  /** Where setup's progress goes: each argument one line. */
94
124
  export type Say = (...lines: string[]) => void;
@@ -104,7 +134,21 @@ export declare function gatherNeeds(planPath: string, registry: Registry, detect
104
134
  id: string;
105
135
  via?: "adapter" | "recipe";
106
136
  }>): Promise<Need[]>;
137
+ /**
138
+ * One sentence on what the credential is for, from names only: Sponson calls the provider with it, and it is not the
139
+ * app's own variable. An app that names the provider's variables differently (`STRIPE_KEY` beside Sponson's
140
+ * `STRIPE_SECRET_KEY`) has them named; one that uses the very same name is told the two are read apart.
141
+ */
142
+ export declare function purposeOf(need: Pick<Need, "provider" | "title" | "variables" | "appEnv">, envNames: readonly string[]): string | null;
107
143
  type CheckResult = Pick<SetupCredential, "status" | "checked" | "reaches" | "message">;
108
- /** A failed check, by what the HTTP client classified: 401 rejected, 403 or a 404 on the project out of scope. */
109
- export declare function classify(e: unknown): CheckResult;
144
+ /** What `classify` says a 404 means: the plan file whose id to check, and whether the API tells missing from unreachable. */
145
+ export interface ClassifyOpts {
146
+ plan?: string;
147
+ notFoundMeansMissing?: boolean;
148
+ }
149
+ /**
150
+ * A failed check, by what the HTTP client classified: 401 rejected, 403 wrong scope, 404 not found. A 404 is a wrong id
151
+ * where the API answers 403 for what a credential cannot reach (`notFoundMeansMissing`); elsewhere it may be either.
152
+ */
153
+ export declare function classify(e: unknown, o?: ClassifyOpts): CheckResult;
110
154
  export {};