@snagset/server 0.0.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 (105) hide show
  1. package/README.md +83 -0
  2. package/dist/app.js +453 -0
  3. package/dist/app.js.map +1 -0
  4. package/dist/bin.js +951 -0
  5. package/dist/bin.js.map +1 -0
  6. package/dist/boot.js +321 -0
  7. package/dist/boot.js.map +1 -0
  8. package/dist/config.generated.js +116 -0
  9. package/dist/config.generated.js.map +1 -0
  10. package/dist/config.js +180 -0
  11. package/dist/config.js.map +1 -0
  12. package/dist/crypto.js +26 -0
  13. package/dist/crypto.js.map +1 -0
  14. package/dist/db/connect.js +49 -0
  15. package/dist/db/connect.js.map +1 -0
  16. package/dist/db/migrate.js +210 -0
  17. package/dist/db/migrate.js.map +1 -0
  18. package/dist/db/migrations/0001_init.sql +1060 -0
  19. package/dist/db/migrations/0002_maintenance_claim.sql +109 -0
  20. package/dist/db/migrations/0003_email_provider.sql +35 -0
  21. package/dist/db/migrations/0004_unsubscribe.sql +24 -0
  22. package/dist/db/rls.js +58 -0
  23. package/dist/db/rls.js.map +1 -0
  24. package/dist/jobs/index.js +171 -0
  25. package/dist/jobs/index.js.map +1 -0
  26. package/dist/jobs/reaper.js +182 -0
  27. package/dist/jobs/reaper.js.map +1 -0
  28. package/dist/keys.js +77 -0
  29. package/dist/keys.js.map +1 -0
  30. package/dist/mail/index.js +75 -0
  31. package/dist/mail/index.js.map +1 -0
  32. package/dist/mail/mailer.js +27 -0
  33. package/dist/mail/mailer.js.map +1 -0
  34. package/dist/mail/notify.js +405 -0
  35. package/dist/mail/notify.js.map +1 -0
  36. package/dist/mail/resend.js +95 -0
  37. package/dist/mail/resend.js.map +1 -0
  38. package/dist/mail/smtp.js +315 -0
  39. package/dist/mail/smtp.js.map +1 -0
  40. package/dist/mail/unsubscribe.js +134 -0
  41. package/dist/mail/unsubscribe.js.map +1 -0
  42. package/dist/projectCache.js +50 -0
  43. package/dist/projectCache.js.map +1 -0
  44. package/dist/projects.js +101 -0
  45. package/dist/projects.js.map +1 -0
  46. package/dist/routes/attachments.js +159 -0
  47. package/dist/routes/attachments.js.map +1 -0
  48. package/dist/routes/auth.js +55 -0
  49. package/dist/routes/auth.js.map +1 -0
  50. package/dist/routes/commentEdit.js +201 -0
  51. package/dist/routes/commentEdit.js.map +1 -0
  52. package/dist/routes/comments.js +313 -0
  53. package/dist/routes/comments.js.map +1 -0
  54. package/dist/routes/cors.js +174 -0
  55. package/dist/routes/cors.js.map +1 -0
  56. package/dist/routes/jobs.js +56 -0
  57. package/dist/routes/jobs.js.map +1 -0
  58. package/dist/routes/mcpAuth.js +187 -0
  59. package/dist/routes/mcpAuth.js.map +1 -0
  60. package/dist/routes/mcpToken.js +94 -0
  61. package/dist/routes/mcpToken.js.map +1 -0
  62. package/dist/routes/owner.js +288 -0
  63. package/dist/routes/owner.js.map +1 -0
  64. package/dist/routes/reviewLinks.js +169 -0
  65. package/dist/routes/reviewLinks.js.map +1 -0
  66. package/dist/routes/rounds.js +137 -0
  67. package/dist/routes/rounds.js.map +1 -0
  68. package/dist/routes/sessions.js +349 -0
  69. package/dist/routes/sessions.js.map +1 -0
  70. package/dist/routes/sites.js +192 -0
  71. package/dist/routes/sites.js.map +1 -0
  72. package/dist/routes/threads.js +1080 -0
  73. package/dist/routes/threads.js.map +1 -0
  74. package/dist/routes/widget.js +132 -0
  75. package/dist/routes/widget.js.map +1 -0
  76. package/dist/serverless.js +97 -0
  77. package/dist/serverless.js.map +1 -0
  78. package/dist/session.js +152 -0
  79. package/dist/session.js.map +1 -0
  80. package/dist/storage/bucket.js +116 -0
  81. package/dist/storage/bucket.js.map +1 -0
  82. package/dist/storage/settings.js +132 -0
  83. package/dist/storage/settings.js.map +1 -0
  84. package/dist/vendor/adapters/index.js +1 -0
  85. package/dist/vendor/adapters/outbound/fence.js +44 -0
  86. package/dist/vendor/adapters/outbound/sanitise.js +233 -0
  87. package/dist/vendor/types/index.js +4 -0
  88. package/dist/vendor/types/names.js +254 -0
  89. package/dist/vendor/widget/object.js +38 -0
  90. package/dist/vendor/widget/predicates.js +377 -0
  91. package/package.json +53 -0
  92. package/static/dashboard/assets/index-CaPfKhFP.css +1 -0
  93. package/static/dashboard/assets/index-DfTNjHCK.js +1 -0
  94. package/static/dashboard/index.html +14 -0
  95. package/static/widget/snag.anchor-ext.js +1 -0
  96. package/static/widget/snag.anchor-fuzzy.js +1 -0
  97. package/static/widget/snag.capture.js +4 -0
  98. package/static/widget/snag.crumbs.js +4 -0
  99. package/static/widget/snag.dock.js +5 -0
  100. package/static/widget/snag.js +5 -0
  101. package/static/widget/snag.panels.js +2 -0
  102. package/static/widget/snag.runtime.js +2 -0
  103. package/static/widget/snag.screenshot.js +1 -0
  104. package/static/widget/snag.text.js +2 -0
  105. package/vercel.json +6 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
package/dist/boot.js ADDED
@@ -0,0 +1,321 @@
1
+ import { randomBytes, createHash, randomUUID } from "node:crypto";
2
+ import { mkdirSync, writeFileSync, existsSync, readFileSync } from "node:fs";
3
+ import { join } from "node:path";
4
+ import { rlsStatus } from "./db/rls.js";
5
+ import { ID_PREFIX } from "./vendor/types/names.js";
6
+ import { slugify } from "./app.js";
7
+ import { createProject, validateOrigins } from "./projects.js";
8
+ import { hashPassword } from "./routes/owner.js";
9
+ import { selectMailer } from "./mail/index.js";
10
+ import { envBucketConfig } from "./storage/settings.js";
11
+ import { createBucket } from "./storage/bucket.js";
12
+ /** 08 §3.4 step 4: 32 random bytes, base64url; only sha256(token) is stored. */
13
+ const mintToken = () => randomBytes(32).toString("base64url");
14
+ const hash = (t) => createHash("sha256").update(t).digest();
15
+ /**
16
+ * The banner. Reproduced from §3.4 rather than paraphrased — an operator who
17
+ * has read the spec should see the thing the spec showed them, and this is the
18
+ * one screen of output the entire self-host install depends on being noticed.
19
+ */
20
+ export function claimBanner(url) {
21
+ const lines = [
22
+ "Snagset is running but not yet claimed.",
23
+ "Open this URL within 24 hours to create the first owner:",
24
+ "",
25
+ url,
26
+ "",
27
+ "Lost it? npx snagset bootstrap",
28
+ ];
29
+ const w = Math.max(...lines.map((l) => l.length)) + 2;
30
+ const pad = (l) => `│ ${l.padEnd(w)} │`;
31
+ return ["┌" + "─".repeat(w + 2) + "┐", ...lines.map(pad), "└" + "─".repeat(w + 2) + "┘"].join("\n");
32
+ }
33
+ /**
34
+ * `SNAGSET_SECRET_KEY`, or one generated to `<data>/secret.key` at mode 0600.
35
+ *
36
+ * §4.2: *"Bin only: absent ⇒ generated on first boot and written to
37
+ * `<data>/secret.key`, mode 0600, with a WARN telling the operator to back it
38
+ * up."* — and on serverless it is a required variable instead, because the
39
+ * filesystem is ephemeral and a key regenerated on every cold start means
40
+ * every session dies and every stored integration credential becomes
41
+ * unreadable ciphertext.
42
+ */
43
+ export function resolveSecretKey(cfg, dataDir, log) {
44
+ const file = cfg.get("SNAGSET_SECRET_KEY_FILE");
45
+ // §4 rule 4: where both are set, `_FILE` wins and a WARN is logged. A PEM or
46
+ // a key in an environment variable ends up in platform config dashboards, in
47
+ // crash dumps and in the process table.
48
+ if (file) {
49
+ if (cfg.get("SNAGSET_SECRET_KEY")) {
50
+ log("warn", "both SNAGSET_SECRET_KEY and SNAGSET_SECRET_KEY_FILE are set — the _FILE form wins (08 §4)");
51
+ }
52
+ return readFileSync(file, "utf8").trim();
53
+ }
54
+ const inline = cfg.get("SNAGSET_SECRET_KEY");
55
+ if (inline)
56
+ return inline;
57
+ if (!dataDir) {
58
+ throw new Error("SNAGSET_SECRET_KEY is required on serverless: the filesystem is ephemeral, so a key " +
59
+ "generated at boot would be a different key on every cold start — every reviewer " +
60
+ "session dead and every stored integration credential unreadable. See 08 §4.2.");
61
+ }
62
+ const path = join(dataDir, "secret.key");
63
+ if (existsSync(path))
64
+ return readFileSync(path, "utf8").trim();
65
+ const key = randomBytes(32).toString("base64url");
66
+ mkdirSync(dataDir, { recursive: true, mode: 0o700 });
67
+ writeFileSync(path, key + "\n", { mode: 0o600 });
68
+ log("warn", `generated a new signing key at ${path} (mode 0600). BACK THIS UP and treat it as a password: ` +
69
+ `without it, integration credentials and identity secrets are unrecoverable ciphertext and ` +
70
+ `every outstanding reviewer session is dead (08 §4.7).`);
71
+ return key;
72
+ }
73
+ /**
74
+ * `snagset bootstrap` — 08 §3.4 step 7: *"mints on demand without a restart"*.
75
+ *
76
+ * It exists because the token is stored as a HASH, so a claim URL cannot be
77
+ * re-printed — only replaced. An operator who scrolled past the banner, or
78
+ * whose service manager swallowed stdout, has no other way back in, and the
79
+ * banner promises this command by name.
80
+ *
81
+ * Minting invalidates any outstanding token, which is the right trade: two
82
+ * live keys to an unclaimed instance is strictly worse than one.
83
+ */
84
+ export async function mintClaim(sql, cfg, dataDir, now = () => new Date()) {
85
+ const token = mintToken();
86
+ let projectUid = "";
87
+ await sql.begin(async (tx) => {
88
+ await tx `DELETE FROM setup_tokens WHERE consumed_at IS NULL`;
89
+ await tx `
90
+ INSERT INTO setup_tokens (id, token_hash, expires_at)
91
+ VALUES (${randomUUID()}, ${hash(token)}, ${new Date(now().getTime() + 24 * 60 * 60 * 1000)})
92
+ `;
93
+ });
94
+ const base = cfg.required("SNAGSET_BASE_URL").replace(/\/+$/, "");
95
+ const url = `${base}/setup?claim=${token}`;
96
+ if (dataDir) {
97
+ mkdirSync(dataDir, { recursive: true, mode: 0o700 });
98
+ writeFileSync(join(dataDir, "bootstrap.txt"), claimBanner(url) + "\n", { mode: 0o600 });
99
+ }
100
+ return url;
101
+ }
102
+ export async function boot(sql, cfg, opts = {}) {
103
+ const writable = opts.writable ?? true;
104
+ const log = opts.log ?? ((level, msg) => console[level === "error" ? "error" : "log"](`${level}: ${msg}`));
105
+ const now = opts.now ?? (() => new Date());
106
+ const dataDir = writable ? cfg.required("SNAGSET_DATA_DIR") : null;
107
+ // Reported before anything else that could be mistaken for a green light.
108
+ // D50: on Neon the policies are correct and the role bypasses them, and an
109
+ // operator learning that during an incident is the outcome this prevents.
110
+ const rls = await rlsStatus(sql);
111
+ if (rls.warning)
112
+ log("warn", rls.warning);
113
+ resolveSecretKey(cfg, dataDir, log);
114
+ /**
115
+ * The mail transport, said out loud at boot (08 §4.8).
116
+ *
117
+ * "Off and say so, rather than silently queueing" is a promise about the
118
+ * OPERATOR's knowledge, and a promise nobody is told about is not kept. One
119
+ * line is the whole of it: which transport is live, or why none is. `info`
120
+ * rather than `warn` for the absent case — running without email is a
121
+ * supported configuration, not a fault.
122
+ *
123
+ * There is no "both are set" warning any more, because with one variable
124
+ * selected by its scheme there is no second transport to conflict with. That
125
+ * whole class of misconfiguration was designed out rather than reported.
126
+ */
127
+ const mail = selectMailer(cfg);
128
+ log("info", mail.kind === "none" ? mail.reason : `mail: ${mail.kind} transport, from ${mail.from}`);
129
+ /**
130
+ * The bucket, and — when it comes from the environment — a real PROBE.
131
+ *
132
+ * This is the half of LOCK L2 worth keeping. Its point was never that a
133
+ * dashboard is a nicer place to type than a `.env`; it was that credentials
134
+ * which are merely well-formed are the ones that fail on the first
135
+ * screenshot, in front of a reviewer, an hour later. The runtime connect
136
+ * path has always probed before saving. D60 made the environment the primary
137
+ * path, so the probe has to run here too or the guarantee quietly became "we
138
+ * check the ones typed in the UI".
139
+ *
140
+ * A failed probe is a WARNING and not a boot failure: the instance still
141
+ * serves comments, which is a complete product (annotation mode, A9b), and
142
+ * refusing to start over a misconfigured bucket would take the whole review
143
+ * down for a feature that degrades cleanly. It is loud, and it names the
144
+ * step that failed.
145
+ */
146
+ const envBucket = envBucketConfig(process.env);
147
+ if (envBucket) {
148
+ const probe = await createBucket(envBucket.config, envBucket.creds).probe();
149
+ if (probe.ok) {
150
+ log("info", `storage: ${envBucket.config.bucket} at ${envBucket.config.endpoint} (from the environment)`);
151
+ }
152
+ else {
153
+ log("warn", `storage: the bucket configured in SNAGSET_STORAGE_S3_* failed its ${probe.step} probe — ` +
154
+ `${probe.detail} Screenshots and uploads are OFF until this is fixed; comments still work.`);
155
+ }
156
+ }
157
+ // Step 2. The whole state machine turns on this one count.
158
+ const counted = await sql `SELECT count(*)::int AS n FROM orgs`;
159
+ if ((counted[0]?.n ?? 0) > 0) {
160
+ return { state: "READY", claimUrl: null, rls, dataDir };
161
+ }
162
+ // Step 3 — the non-interactive claim, from the environment (D61).
163
+ //
164
+ // This is the branch that lets a developer bring an instance up with no
165
+ // browser in the loop at all: set four variables, deploy, and the thing is
166
+ // claimed, has a project and knows which origins may talk to it. It was
167
+ // registered in 08 §4.6 and left unbuilt through the walking skeleton
168
+ // because a claim URL was enough for one person on one laptop. It stops
169
+ // being enough the moment the target is a platform, which is where LOCK L5
170
+ // puts v1: there is no shell to run a command in and nobody watching the
171
+ // logs for a URL to click.
172
+ const bootstrapped = await bootstrapFromEnv(sql, cfg, log);
173
+ if (bootstrapped)
174
+ return { state: "READY", claimUrl: null, rls, dataDir };
175
+ // Step 4 — mint, store the HASH only, print. Reached only when step 3 had
176
+ // nothing to act on, which is the interactive install.
177
+ //
178
+ // An unexpired unclaimed token is REUSED rather than replaced — step 7 says a
179
+ // new one is minted when the old has expired, and a boot loop that minted a
180
+ // fresh token every restart would invalidate the URL the operator is at that
181
+ // moment copying out of the logs.
182
+ const live = await sql `
183
+ SELECT id FROM setup_tokens
184
+ WHERE consumed_at IS NULL AND (expires_at IS NULL OR expires_at > now())
185
+ LIMIT 1
186
+ `;
187
+ if (live.length) {
188
+ log("info", "an unclaimed setup token is still valid — not minting another. " +
189
+ "Run `npx snagset bootstrap` to mint a fresh one.");
190
+ return { state: "CLAIMABLE", claimUrl: null, rls, dataDir };
191
+ }
192
+ const token = mintToken();
193
+ const expires = new Date(now().getTime() + 24 * 60 * 60 * 1000);
194
+ await sql `
195
+ INSERT INTO setup_tokens (id, token_hash, expires_at)
196
+ VALUES (${randomUUID()}, ${hash(token)}, ${expires})
197
+ `;
198
+ const base = cfg.required("SNAGSET_BASE_URL").replace(/\/+$/, "");
199
+ const claimUrl = `${base}/setup?claim=${token}`;
200
+ log("info", "\n" + claimBanner(claimUrl));
201
+ if (dataDir) {
202
+ // §3.4 step 4: stdout AND `<data>/bootstrap.txt`. Logs scroll, and on a box
203
+ // started by a service manager the operator may never see stdout at all.
204
+ mkdirSync(dataDir, { recursive: true, mode: 0o700 });
205
+ writeFileSync(join(dataDir, "bootstrap.txt"), claimBanner(claimUrl) + "\n", { mode: 0o600 });
206
+ }
207
+ return { state: "CLAIMABLE", claimUrl, rls, dataDir };
208
+ }
209
+ /** Constant-time compare of a presented claim token against the stored hash. */
210
+ export function tokenHash(token) {
211
+ return hash(token);
212
+ }
213
+ /**
214
+ * 08 §4.6 / §3.4 step 3 — claim the instance from environment variables.
215
+ *
216
+ * Returns `true` when it created an org, `false` when there was nothing to do.
217
+ * Only ever runs with **zero orgs**: the caller checks, and §4.6 says these are
218
+ * "ignored once an org exists", which is what makes it safe to leave the
219
+ * variables set on a running instance forever. An IaC file that redeploys does
220
+ * not want a second owner, and a variable that only works on the very first
221
+ * boot is one somebody will remove and be surprised by.
222
+ *
223
+ * ── THE PASSWORD COMES FROM A FILE, NEVER INLINE ──
224
+ *
225
+ * `SNAGSET_BOOTSTRAP_OWNER_PASSWORD_FILE` is a path, and 08 §4.6 says "file,
226
+ * never inline" for a reason worth restating where it is enforced: an
227
+ * environment variable is visible in `/proc`, in `docker inspect`, in a
228
+ * platform's own dashboard and in any crash report that dumps the environment.
229
+ * A file can be a mounted secret with its own lifetime and permissions. Every
230
+ * platform that has a secrets story can mount one; the ones that cannot still
231
+ * have the claim URL.
232
+ *
233
+ * Both the email and the password file must be present. One without the other
234
+ * is a **boot failure** rather than a fall-through to the claim URL, because
235
+ * an operator who set one of two variables has stated an intent that is not
236
+ * being honoured, and silently printing a claim URL instead answers nothing.
237
+ */
238
+ /**
239
+ * Exported so `snagset bootstrap` can run it too — see that command for why.
240
+ * It is idempotent by construction: every path returns false once an org
241
+ * exists, so calling it from two places cannot claim an instance twice.
242
+ */
243
+ export async function bootstrapFromEnv(sql, cfg, log) {
244
+ const email = cfg.get("SNAGSET_BOOTSTRAP_OWNER_EMAIL");
245
+ const passwordFile = cfg.get("SNAGSET_BOOTSTRAP_OWNER_PASSWORD_FILE");
246
+ if (!email && !passwordFile)
247
+ return false;
248
+ if (!email || !passwordFile) {
249
+ throw new Error(`non-interactive bootstrap is half-configured: ${email ? "SNAGSET_BOOTSTRAP_OWNER_PASSWORD_FILE" : "SNAGSET_BOOTSTRAP_OWNER_EMAIL"} is missing. ` +
250
+ "Set both, or neither and claim the instance from the URL in the logs.");
251
+ }
252
+ let password;
253
+ try {
254
+ password = readFileSync(passwordFile, "utf8").trim();
255
+ }
256
+ catch (e) {
257
+ throw new Error(`could not read SNAGSET_BOOTSTRAP_OWNER_PASSWORD_FILE at ${passwordFile}: ` +
258
+ `${e instanceof Error ? e.message : String(e)}`);
259
+ }
260
+ // The same floor the interactive claim enforces. A bootstrap that quietly
261
+ // accepted a weaker password than the form would is a back door with a
262
+ // configuration file in front of it.
263
+ if (password.length < 12) {
264
+ throw new Error(`the password in ${passwordFile} is ${password.length} characters; 12 is the minimum. ` +
265
+ "Note the file is read and TRIMMED, so a trailing newline is not padding.");
266
+ }
267
+ const orgId = randomUUID();
268
+ const userId = randomUUID();
269
+ const projectName = cfg.get("SNAGSET_BOOTSTRAP_PROJECT_NAME") || "First project";
270
+ const origins = (cfg.get("SNAGSET_BOOTSTRAP_PROJECT_ORIGINS") ?? "")
271
+ .split(",")
272
+ .map((o) => o.trim())
273
+ .filter(Boolean);
274
+ // Validated BEFORE the transaction, so a typo in one origin does not leave a
275
+ // half-claimed instance — and through `validateOrigins`, which is the same
276
+ // check the create route runs, so the two cannot disagree about what an
277
+ // origin is. Only the error is re-wrapped: here the operator set an
278
+ // environment variable and needs to be told WHICH one, which a shared
279
+ // validator cannot know.
280
+ try {
281
+ validateOrigins(origins);
282
+ }
283
+ catch (e) {
284
+ throw new Error(`SNAGSET_BOOTSTRAP_PROJECT_ORIGINS: ${e instanceof Error ? e.message : String(e)} ` +
285
+ "Scheme is mandatory and the port is part of it: " +
286
+ "https://staging.acme.com, http://localhost:3000, https://*.acme.com");
287
+ }
288
+ const graceHours = cfg.int("SNAGSET_WRITE_MODE_GRACE_HOURS");
289
+ let projectUid = "";
290
+ await sql.begin(async (tx) => {
291
+ // Set FIRST and to the org about to be created: the policies apply to
292
+ // INSERT through their WITH CHECK, so on a correctly-secured deployment
293
+ // the very first insert fails without it. Identical to the claim route's
294
+ // reasoning, and identically load-bearing.
295
+ await tx `SELECT set_config('app.org_id', ${orgId}, true)`;
296
+ await tx `INSERT INTO orgs (id, name, slug) VALUES (${orgId}, ${projectName}, ${slugify(projectName)})`;
297
+ await tx `
298
+ INSERT INTO users (id, org_id, email, name, password_hash, email_verified)
299
+ VALUES (${userId}, ${orgId}, ${email}, ${projectName}, ${hashPassword(password)}, true)
300
+ `;
301
+ await tx `INSERT INTO memberships (org_id, user_id, role) VALUES (${orgId}, ${userId}, 'owner')`;
302
+ projectUid = (await createProject(tx, {
303
+ orgId,
304
+ name: projectName,
305
+ createdBy: userId,
306
+ origins,
307
+ graceHours,
308
+ })).uid;
309
+ // Any claim URL minted on an earlier boot is now a key to a door that has
310
+ // been opened.
311
+ await tx `DELETE FROM setup_tokens WHERE consumed_at IS NULL`;
312
+ });
313
+ log("info", `claimed non-interactively from the environment — owner ${email}, project ${projectUid}`);
314
+ if (origins.length)
315
+ log("info", `origins allowed: ${origins.join(", ")}`);
316
+ else
317
+ log("warn", "no SNAGSET_BOOTSTRAP_PROJECT_ORIGINS set, so no site may talk to this instance yet. " +
318
+ "Add them there, or with `snagset allow-origin ${uid} <origin>`.");
319
+ return true;
320
+ }
321
+ //# sourceMappingURL=boot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boot.js","sourceRoot":"","sources":["../src/boot.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAClE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,SAAS,EAAkB,MAAM,aAAa,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AACnC,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAqCnD,gFAAgF;AAChF,MAAM,SAAS,GAAG,GAAW,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;AACtE,MAAM,IAAI,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;AAE5E;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,MAAM,KAAK,GAAG;QACZ,yCAAyC;QACzC,0DAA0D;QAC1D,EAAE;QACF,GAAG;QACH,EAAE;QACF,iCAAiC;KAClC,CAAC;IACF,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC;IACtD,MAAM,GAAG,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IACxD,OAAO,CAAC,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACtG,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,gBAAgB,CAC9B,GAAW,EACX,OAAsB,EACtB,GAAkD;IAElD,MAAM,IAAI,GAAG,GAAG,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;IAChD,6EAA6E;IAC7E,6EAA6E;IAC7E,wCAAwC;IACxC,IAAI,IAAI,EAAE,CAAC;QACT,IAAI,GAAG,CAAC,GAAG,CAAC,oBAAoB,CAAC,EAAE,CAAC;YAClC,GAAG,CAAC,MAAM,EAAE,2FAA2F,CAAC,CAAC;QAC3G,CAAC;QACD,OAAO,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3C,CAAC;IACD,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IAC7C,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CACb,sFAAsF;YACpF,kFAAkF;YAClF,+EAA+E,CAClF,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;IACzC,IAAI,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IAE/D,MAAM,GAAG,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;IAClD,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACrD,aAAa,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IACjD,GAAG,CACD,MAAM,EACN,kCAAkC,IAAI,yDAAyD;QAC7F,4FAA4F;QAC5F,uDAAuD,CAC1D,CAAC;IACF,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,GAAiB,EACjB,GAAW,EACX,OAAsB,EACtB,MAAkB,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE;IAElC,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;IAC1B,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,MAAM,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;QAC3B,MAAM,EAAE,CAAA,oDAAoD,CAAC;QAC7D,MAAM,EAAE,CAAA;;gBAEI,UAAU,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;KAC3F,CAAC;IACJ,CAAC,CAAC,CAAC;IACH,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAClE,MAAM,GAAG,GAAG,GAAG,IAAI,gBAAgB,KAAK,EAAE,CAAC;IAC3C,IAAI,OAAO,EAAE,CAAC;QACZ,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACrD,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC1F,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAUD,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,GAAiB,EAAE,GAAW,EAAE,OAAoB,EAAE;IAC/E,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC;IACvC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,KAAK,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC;IAC3G,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAC3C,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEnE,0EAA0E;IAC1E,2EAA2E;IAC3E,0EAA0E;IAC1E,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,GAAG,CAAC,OAAO;QAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;IAE1C,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;IAEpC;;;;;;;;;;;;OAYG;IACH,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAC/B,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,IAAI,oBAAoB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IAEpG;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,SAAS,GAAG,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/C,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QAC5E,IAAI,KAAK,CAAC,EAAE,EAAE,CAAC;YACb,GAAG,CAAC,MAAM,EAAE,YAAY,SAAS,CAAC,MAAM,CAAC,MAAM,OAAO,SAAS,CAAC,MAAM,CAAC,QAAQ,yBAAyB,CAAC,CAAC;QAC5G,CAAC;aAAM,CAAC;YACN,GAAG,CACD,MAAM,EACN,qEAAqE,KAAK,CAAC,IAAI,WAAW;gBACxF,GAAG,KAAK,CAAC,MAAM,4EAA4E,CAC9F,CAAC;QACJ,CAAC;IACH,CAAC;IAED,2DAA2D;IAC3D,MAAM,OAAO,GAAG,MAAM,GAAG,CAAiB,qCAAqC,CAAC;IAChF,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;IAC1D,CAAC;IAED,kEAAkE;IAClE,EAAE;IACF,wEAAwE;IACxE,2EAA2E;IAC3E,wEAAwE;IACxE,sEAAsE;IACtE,wEAAwE;IACxE,2EAA2E;IAC3E,yEAAyE;IACzE,2BAA2B;IAC3B,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC3D,IAAI,YAAY;QAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;IAE1E,0EAA0E;IAC1E,uDAAuD;IACvD,EAAE;IACF,8EAA8E;IAC9E,4EAA4E;IAC5E,6EAA6E;IAC7E,kCAAkC;IAClC,MAAM,IAAI,GAAG,MAAM,GAAG,CAAkB;;;;GAIvC,CAAC;IACF,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,GAAG,CACD,MAAM,EACN,iEAAiE;YAC/D,kDAAkD,CACrD,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;IAC9D,CAAC;IAED,MAAM,KAAK,GAAG,SAAS,EAAE,CAAC;IAC1B,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAChE,MAAM,GAAG,CAAA;;cAEG,UAAU,EAAE,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,OAAO;GACnD,CAAC;IAEF,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,GAAG,IAAI,gBAAgB,KAAK,EAAE,CAAC;IAChD,GAAG,CAAC,MAAM,EAAE,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;IAE1C,IAAI,OAAO,EAAE,CAAC;QACZ,4EAA4E;QAC5E,yEAAyE;QACzE,SAAS,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACrD,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,eAAe,CAAC,EAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/F,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;AACxD,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,SAAS,CAAC,KAAa;IACrC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;AACrB,CAAC;AAGD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,GAAiB,EACjB,GAAW,EACX,GAA4D;IAE5D,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;IACvD,MAAM,YAAY,GAAG,GAAG,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;IACtE,IAAI,CAAC,KAAK,IAAI,CAAC,YAAY;QAAE,OAAO,KAAK,CAAC;IAE1C,IAAI,CAAC,KAAK,IAAI,CAAC,YAAY,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,iDAAiD,KAAK,CAAC,CAAC,CAAC,uCAAuC,CAAC,CAAC,CAAC,+BAA+B,eAAe;YAC/I,uEAAuE,CAC1E,CAAC;IACJ,CAAC;IAED,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC;QACH,QAAQ,GAAG,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;IACvD,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,2DAA2D,YAAY,IAAI;YACzE,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAClD,CAAC;IACJ,CAAC;IACD,0EAA0E;IAC1E,uEAAuE;IACvE,qCAAqC;IACrC,IAAI,QAAQ,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,mBAAmB,YAAY,OAAO,QAAQ,CAAC,MAAM,kCAAkC;YACrF,0EAA0E,CAC7E,CAAC;IACJ,CAAC;IAED,MAAM,KAAK,GAAG,UAAU,EAAE,CAAC;IAC3B,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC;IAC5B,MAAM,WAAW,GAAG,GAAG,CAAC,GAAG,CAAC,gCAAgC,CAAC,IAAI,eAAe,CAAC;IACjF,MAAM,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,mCAAmC,CAAC,IAAI,EAAE,CAAC;SACjE,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpB,MAAM,CAAC,OAAO,CAAC,CAAC;IAEnB,6EAA6E;IAC7E,2EAA2E;IAC3E,wEAAwE;IACxE,oEAAoE;IACpE,sEAAsE;IACtE,yBAAyB;IACzB,IAAI,CAAC;QACH,eAAe,CAAC,OAAO,CAAC,CAAC;IAC3B,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,sCAAsC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG;YACjF,kDAAkD;YAClD,qEAAqE,CACxE,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;IAC7D,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,MAAM,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE;QAC3B,sEAAsE;QACtE,wEAAwE;QACxE,yEAAyE;QACzE,2CAA2C;QAC3C,MAAM,EAAE,CAAA,mCAAmC,KAAK,SAAS,CAAC;QAC1D,MAAM,EAAE,CAAA,6CAA6C,KAAK,KAAK,WAAW,KAAK,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC;QACvG,MAAM,EAAE,CAAA;;gBAEI,MAAM,KAAK,KAAK,KAAK,KAAK,KAAK,WAAW,KAAK,YAAY,CAAC,QAAQ,CAAC;KAChF,CAAC;QACF,MAAM,EAAE,CAAA,2DAA2D,KAAK,KAAK,MAAM,YAAY,CAAC;QAChG,UAAU,GAAG,CACX,MAAM,aAAa,CAAC,EAAE,EAAE;YACtB,KAAK;YACL,IAAI,EAAE,WAAW;YACjB,SAAS,EAAE,MAAM;YACjB,OAAO;YACP,UAAU;SACX,CAAC,CACH,CAAC,GAAG,CAAC;QACN,0EAA0E;QAC1E,eAAe;QACf,MAAM,EAAE,CAAA,oDAAoD,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,MAAM,EAAE,0DAA0D,KAAK,aAAa,UAAU,EAAE,CAAC,CAAC;IACtG,IAAI,OAAO,CAAC,MAAM;QAAE,GAAG,CAAC,MAAM,EAAE,oBAAoB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;;QAExE,GAAG,CACD,MAAM,EACN,sFAAsF;YACpF,iEAAiE,CACpE,CAAC;IACJ,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -0,0 +1,116 @@
1
+ // ─────────────────────────────────────────────────────────────────────────────
2
+ // GENERATED FILE — DO NOT EDIT BY HAND.
3
+ // Source of truth: specs/08-deployment.md §4 (the sole registry).
4
+ // Regenerate: pnpm gen:config (CI runs `pnpm gen:config:check`)
5
+ //
6
+ // 08 §4.1 rule 3: "The boot validator is generated from this section; it is
7
+ // not hand-maintained." A hand-kept copy of an 85-row table is a copy that
8
+ // is wrong by the second edit — draft 3 proved it, five variables at once.
9
+ // ─────────────────────────────────────────────────────────────────────────────
10
+ /** 76 variables, parsed from §4.2–§4.10. */
11
+ export const REGISTRY = [
12
+ { name: "SNAGSET_BASE_URL", type: "url", default: "http://localhost:8080", required: false, oneOf: null, secret: false, section: "4.2" },
13
+ { name: "SNAGSET_PORT", type: "int", default: "8080", required: false, oneOf: null, secret: false, section: "4.2" },
14
+ { name: "SNAGSET_BIND_ADDRESS", type: "string", default: "0.0.0.0", required: false, oneOf: null, secret: false, section: "4.2" },
15
+ { name: "DATABASE_URL", type: "url", default: null, required: true, oneOf: null, secret: false, section: "4.2" },
16
+ { name: "SNAGSET_DATABASE_POOL_MAX", type: "int", default: "10", required: false, oneOf: null, secret: false, section: "4.2" },
17
+ { name: "SNAGSET_DATABASE_SSL", type: "enum", default: "auto", required: false, oneOf: ["auto", "require", "disable"], secret: false, section: "4.2" },
18
+ { name: "SNAGSET_DATA_DIR", type: "string", default: "./.snagset", required: false, oneOf: null, secret: false, section: "4.2" },
19
+ { name: "SNAGSET_SECRET_KEY", type: "string", default: null, required: false, oneOf: null, secret: true, section: "4.2" },
20
+ { name: "SNAGSET_SECRET_KEY_FILE", type: "string", default: null, required: false, oneOf: null, secret: false, section: "4.2" },
21
+ { name: "SNAGSET_SECRET_KEY_PREVIOUS", type: "string", default: null, required: false, oneOf: null, secret: false, section: "4.2" },
22
+ { name: "SNAGSET_TRUST_PROXY", type: "int", default: "0", required: false, oneOf: null, secret: false, section: "4.2" },
23
+ { name: "SNAGSET_ALLOW_INSECURE_BASE_URL", type: "bool", default: "false", required: false, oneOf: null, secret: false, section: "4.2" },
24
+ { name: "SNAGSET_LOG_LEVEL", type: "enum", default: "info", required: false, oneOf: ["error", "warn", "info", "debug"], secret: false, section: "4.2" },
25
+ { name: "SNAGSET_LOG_FORMAT", type: "enum", default: "json", required: false, oneOf: ["json", "pretty"], secret: false, section: "4.2" },
26
+ { name: "SNAGSET_METRICS_TOKEN", type: "string", default: null, required: false, oneOf: null, secret: false, section: "4.2" },
27
+ { name: "SNAGSET_READ_ONLY", type: "bool", default: "false", required: false, oneOf: null, secret: false, section: "4.2" },
28
+ { name: "SNAGSET_TELEMETRY", type: "enum", default: "off", required: false, oneOf: ["off"], secret: false, section: "4.2" },
29
+ { name: "SNAGSET_CLOUD", type: "string", default: null, required: false, oneOf: null, secret: false, section: "4.2" },
30
+ { name: "SNAGSET_SESSION_TTL_S", type: "int", default: "900", required: false, oneOf: null, secret: false, section: "4.3" },
31
+ { name: "SNAGSET_SESSION_ABSOLUTE_TTL_S", type: "int", default: "43200", required: false, oneOf: null, secret: false, section: "4.3" },
32
+ { name: "SNAGSET_REVIEW_LINK_TTL_DAYS", type: "int", default: "14", required: false, oneOf: null, secret: false, section: "4.3" },
33
+ { name: "SNAGSET_REVIEW_LINK_MAX_TTL_DAYS", type: "int", default: "90", required: false, oneOf: null, secret: false, section: "4.3" },
34
+ { name: "SNAGSET_WRITE_MODE_GRACE_HOURS", type: "int", default: "24", required: false, oneOf: null, secret: false, section: "4.3" },
35
+ { name: "SNAGSET_STORAGE_S3_ENDPOINT", type: "url", default: null, required: false, oneOf: null, secret: false, section: "4.4" },
36
+ { name: "SNAGSET_STORAGE_S3_BUCKET", type: "string", default: null, required: false, oneOf: null, secret: false, section: "4.4" },
37
+ { name: "SNAGSET_STORAGE_S3_REGION", type: "string", default: "auto", required: false, oneOf: null, secret: false, section: "4.4" },
38
+ { name: "SNAGSET_STORAGE_S3_ACCESS_KEY_ID", type: "string", default: null, required: false, oneOf: null, secret: false, section: "4.4" },
39
+ { name: "SNAGSET_STORAGE_S3_SECRET_ACCESS_KEY", type: "string", default: null, required: false, oneOf: null, secret: true, section: "4.4" },
40
+ { name: "SNAGSET_STORAGE_S3_FORCE_PATH_STYLE", type: "bool", default: "false", required: false, oneOf: null, secret: false, section: "4.4" },
41
+ { name: "SNAGSET_STORAGE_S3_PUBLIC_BASE_URL", type: "url", default: null, required: false, oneOf: null, secret: false, section: "4.4" },
42
+ { name: "SNAGSET_ATTACHMENT_ORIGIN", type: "url", default: null, required: false, oneOf: null, secret: false, section: "4.4" },
43
+ { name: "SNAGSET_STORAGE_MAX_IMAGE_BYTES", type: "int", default: "262144", required: false, oneOf: null, secret: false, section: "4.4" },
44
+ { name: "SNAGSET_STORAGE_MAX_FILE_BYTES", type: "int", default: "104857600", required: false, oneOf: null, secret: false, section: "4.4" },
45
+ { name: "SNAGSET_MAX_BODY_BYTES", type: "int", default: "1048576", required: false, oneOf: null, secret: false, section: "4.4" },
46
+ { name: "SNAGSET_STORAGE_PROJECT_QUOTA_BYTES", type: "int", default: "268435456", required: false, oneOf: null, secret: false, section: "4.4" },
47
+ { name: "SNAGSET_STORAGE_RETENTION_DAYS", type: "int", default: "0", required: false, oneOf: null, secret: false, section: "4.5" },
48
+ { name: "SNAGSET_EVENT_RETENTION_DAYS", type: "int", default: "90", required: false, oneOf: null, secret: false, section: "4.5" },
49
+ { name: "SNAGSET_ANCHOR_EVENT_RETENTION_DAYS", type: "int", default: "30", required: false, oneOf: null, secret: false, section: "4.5" },
50
+ { name: "SNAGSET_WEBHOOK_DELIVERY_RETENTION_DAYS", type: "int", default: "30", required: false, oneOf: null, secret: false, section: "4.5" },
51
+ { name: "SNAGSET_BOOTSTRAP_OWNER_EMAIL", type: "email", default: null, required: false, oneOf: null, secret: false, section: "4.6" },
52
+ { name: "SNAGSET_BOOTSTRAP_OWNER_PASSWORD_FILE", type: "string", default: null, required: false, oneOf: null, secret: true, section: "4.6" },
53
+ { name: "SNAGSET_BOOTSTRAP_PROJECT_NAME", type: "string", default: null, required: false, oneOf: null, secret: false, section: "4.6" },
54
+ { name: "SNAGSET_BOOTSTRAP_PROJECT_ORIGINS", type: "string", default: null, required: false, oneOf: null, secret: false, section: "4.6" },
55
+ { name: "SNAGSET_WIDGET_CDN_URL", type: "url", default: null, required: false, oneOf: null, secret: false, section: "4.6" },
56
+ { name: "SNAGSET_SIGNUP_OPEN", type: "bool", default: "false", required: false, oneOf: null, secret: false, section: "4.6" },
57
+ { name: "SNAGSET_RATE_LIMIT_ENABLED", type: "bool", default: "true", required: false, oneOf: null, secret: false, section: "4.7" },
58
+ { name: "SNAGSET_RATE_LIMIT_STORE", type: "enum", default: "memory", required: false, oneOf: ["memory", "postgres"], secret: false, section: "4.7" },
59
+ { name: "SNAGSET_RATE_LIMIT_WRITE_PER_MIN", type: "int", default: "60", required: false, oneOf: null, secret: false, section: "4.7" },
60
+ { name: "SNAGSET_RATE_LIMIT_IP_PER_MIN", type: "int", default: "120", required: false, oneOf: null, secret: false, section: "4.7" },
61
+ { name: "SNAGSET_RATE_LIMIT_UPLOAD_PER_HOUR", type: "int", default: "60", required: false, oneOf: null, secret: false, section: "4.7" },
62
+ { name: "SNAGSET_RATE_LIMIT_UPLOAD_BYTES_PER_HOUR", type: "int", default: "26214400", required: false, oneOf: null, secret: false, section: "4.7" },
63
+ { name: "SNAGSET_RATE_LIMIT_ANCHOR_REPORTS_PER_MIN", type: "int", default: "20", required: false, oneOf: null, secret: false, section: "4.7" },
64
+ { name: "SNAGSET_MAIL_URL", type: "string", default: null, required: false, oneOf: null, secret: true, section: "4.8" },
65
+ { name: "SNAGSET_MAIL_FROM", type: "email", default: null, required: false, oneOf: null, secret: false, section: "4.8" },
66
+ { name: "SNAGSET_OAUTH_GITHUB_CLIENT_ID", type: "string", default: null, required: false, oneOf: null, secret: false, section: "4.8" },
67
+ { name: "SNAGSET_OAUTH_GITHUB_CLIENT_SECRET", type: "string", default: null, required: false, oneOf: null, secret: true, section: "4.8" },
68
+ { name: "SNAGSET_OAUTH_GOOGLE_CLIENT_ID", type: "string", default: null, required: false, oneOf: null, secret: false, section: "4.8" },
69
+ { name: "SNAGSET_OAUTH_GOOGLE_CLIENT_SECRET", type: "string", default: null, required: false, oneOf: null, secret: true, section: "4.8" },
70
+ { name: "SNAGSET_GITHUB_APP_ID", type: "string", default: null, required: false, oneOf: null, secret: false, section: "4.9" },
71
+ { name: "SNAGSET_GITHUB_APP_PRIVATE_KEY_FILE", type: "string", default: null, required: false, oneOf: null, secret: false, section: "4.9" },
72
+ { name: "SNAGSET_GITHUB_WEBHOOK_SECRET", type: "string", default: null, required: false, oneOf: null, secret: true, section: "4.9" },
73
+ { name: "SNAGSET_GITHUB_CLIENT_ID", type: "string", default: null, required: false, oneOf: null, secret: false, section: "4.9" },
74
+ { name: "SNAGSET_GITHUB_CLIENT_SECRET", type: "string", default: null, required: false, oneOf: null, secret: true, section: "4.9" },
75
+ { name: "SNAGSET_SLACK_CLIENT_ID", type: "string", default: null, required: false, oneOf: null, secret: false, section: "4.9" },
76
+ { name: "SNAGSET_SLACK_CLIENT_SECRET", type: "string", default: null, required: false, oneOf: null, secret: true, section: "4.9" },
77
+ { name: "SNAGSET_SLACK_SIGNING_SECRET", type: "string", default: null, required: false, oneOf: null, secret: true, section: "4.9" },
78
+ { name: "SNAGSET_WEBHOOK_EGRESS_ALLOW_PRIVATE", type: "bool", default: "false", required: false, oneOf: null, secret: false, section: "4.9" },
79
+ { name: "SNAGSET_WEBHOOKS_ALLOW_HTTP", type: "bool", default: "false", required: false, oneOf: null, secret: false, section: "4.9" },
80
+ { name: "SNAGSET_RELAY_URL", type: "url", default: null, required: false, oneOf: null, secret: false, section: "4.9" },
81
+ { name: "SNAGSET_RELAY_ENABLED", type: "bool", default: "false", required: false, oneOf: null, secret: false, section: "4.9" },
82
+ { name: "SNAGSET_MCP_HTTP_ENABLED", type: "bool", default: "false", required: false, oneOf: null, secret: false, section: "4.9" },
83
+ { name: "SNAGSET_LINEAR_CLIENT_ID", type: "string", default: null, required: false, oneOf: null, secret: false, section: "4.9" },
84
+ { name: "SNAGSET_LINEAR_CLIENT_SECRET", type: "string", default: null, required: false, oneOf: null, secret: true, section: "4.9" },
85
+ { name: "SNAGSET_LINEAR_WEBHOOK_SECRET", type: "string", default: null, required: false, oneOf: null, secret: true, section: "4.9" },
86
+ { name: "SNAGSET_MCP_TOKEN", type: "string", default: null, required: false, oneOf: null, secret: false, section: "4.9" },
87
+ { name: "SNAGSET_MCP_HOST", type: "string", default: null, required: false, oneOf: null, secret: false, section: "4.9" },
88
+ ];
89
+ /** §4.11 — so an upgrading operator is told what a name BECAME, not that it
90
+ * is unknown. `to: null` means deleted outright with no replacement. */
91
+ export const DELETED = [
92
+ { name: "SNAGSET_REDIS_URL", to: "SNAGSET_RATE_LIMIT_STORE" },
93
+ { name: "SNAGSET_PUBLIC_URL", to: "SNAGSET_BASE_URL" },
94
+ { name: "SNAGSET_DATABASE_URL", to: "DATABASE_URL" },
95
+ { name: "SNAGSET_BLOB_DRIVER", to: null },
96
+ { name: "SNAGSET_STORAGE_BACKEND", to: null },
97
+ { name: "SNAGSET_STORAGE_FS_PATH", to: null },
98
+ { name: "SNAGSET_STORAGE_MAX_UPLOAD_BYTES", to: "SNAGSET_STORAGE_MAX_IMAGE_BYTES" },
99
+ { name: "SNAGSET_BLOB_PUBLIC_BASE", to: "SNAGSET_STORAGE_S3_PUBLIC_BASE_URL" },
100
+ { name: "SNAGSET_TRUSTED_PROXY_HOPS", to: "SNAGSET_TRUST_PROXY" },
101
+ { name: "SNAGSET_SMTP_URL", to: "SNAGSET_MAIL_URL" },
102
+ { name: "SNAGSET_SMTP_FROM", to: "SNAGSET_MAIL_FROM" },
103
+ { name: "SNAGSET_RESEND_API_KEY", to: "SNAGSET_MAIL_URL" },
104
+ { name: "SNAGSET_ENCRYPTION_KEY", to: null },
105
+ { name: "SNAGSET_SESSION_SECRET", to: null },
106
+ { name: "SNAGSET_PANIC", to: "SNAGSET_READ_ONLY" },
107
+ { name: "SNAGSET_PURGE_AFTER_DAYS", to: "SNAGSET_STORAGE_RETENTION_DAYS" },
108
+ { name: "SNAGSET_INTEGRATION_IMAGE_REF_TTL_DAYS", to: "SNAGSET_ATTACHMENT_SHARE_TTL_DAYS" },
109
+ { name: "SNAGSET_GITHUB_APP_PRIVATE_KEY", to: "SNAGSET_GITHUB_APP_PRIVATE_KEY_FILE" },
110
+ { name: "SNAGSET_DEFAULT_HOST", to: null },
111
+ { name: "SNAGSET_PRODUCTION_TOKEN_MODE", to: null },
112
+ { name: "SNAGSET_ORIGINAL", to: "SYM_ORIGINAL" },
113
+ { name: "SNAGSET_WRAPPED", to: "SYM_ORIGINAL" },
114
+ { name: "SNAGSET_MIGRATE_ON_BOOT", to: null },
115
+ ];
116
+ //# sourceMappingURL=config.generated.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.generated.js","sourceRoot":"","sources":["../src/config.generated.ts"],"names":[],"mappings":"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"}