create-ragen-app 0.3.0 → 0.4.0
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/README.md +10 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +204 -1
- package/dist/cli.js.map +1 -1
- package/dist/config-file.d.ts +14 -0
- package/dist/config-file.d.ts.map +1 -0
- package/dist/config-file.js +21 -0
- package/dist/config-file.js.map +1 -0
- package/dist/config-template.d.ts +30 -0
- package/dist/config-template.d.ts.map +1 -0
- package/dist/config-template.js +126 -0
- package/dist/config-template.js.map +1 -0
- package/dist/encryption-provider.d.ts +35 -0
- package/dist/encryption-provider.d.ts.map +1 -0
- package/dist/encryption-provider.js +63 -0
- package/dist/encryption-provider.js.map +1 -0
- package/dist/llm-provider.d.ts +17 -0
- package/dist/llm-provider.d.ts.map +1 -1
- package/dist/llm-provider.js +31 -1
- package/dist/llm-provider.js.map +1 -1
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +22 -4
- package/dist/manifest.js.map +1 -1
- package/dist/manual-setup.d.ts.map +1 -1
- package/dist/manual-setup.js +85 -16
- package/dist/manual-setup.js.map +1 -1
- package/dist/route-table.d.ts +31 -0
- package/dist/route-table.d.ts.map +1 -0
- package/dist/route-table.js +53 -0
- package/dist/route-table.js.map +1 -0
- package/dist/storage-provider.d.ts +49 -0
- package/dist/storage-provider.d.ts.map +1 -0
- package/dist/storage-provider.js +84 -0
- package/dist/storage-provider.js.map +1 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -44,7 +44,7 @@ requirement".
|
|
|
44
44
|
This package is the only thing that exercises the first-run path.
|
|
45
45
|
`.github/workflows/installer.yml` runs it on pushes to `main` and on pull
|
|
46
46
|
requests from this repository: it packs the package, installs the tarball,
|
|
47
|
-
scaffolds from the
|
|
47
|
+
scaffolds from the commit under review and asserts the result is configured.
|
|
48
48
|
That catches a broken installer, but only for the cases the assertions cover —
|
|
49
49
|
`AGENTS.md`'s Post-Task Workflow still asks for an update here in the same PR,
|
|
50
50
|
and for the PR description to say so.
|
|
@@ -55,6 +55,7 @@ What counts as install-affecting:
|
|
|
55
55
|
| --- | --- |
|
|
56
56
|
| A new or renamed env var that a fresh install must set | `src/manifest.ts` (generated secret or corrected default) |
|
|
57
57
|
| A default model, embedding model or `VECTOR_SIZE` change | `src/llm-provider.ts` — and the two must stay consistent, or Qdrant rejects every upsert |
|
|
58
|
+
| A new `@ragenai/llm-gateway` provider, or a change to route-table shape | `src/llm-provider.ts` (`gatewayProvider`, `upstreamModel`) and `src/route-table.ts` — the scaffold writes `infra/llm-gateway/routes.yaml`, which is what a scaffolded install actually reads |
|
|
58
59
|
| An app the web app can no longer run without | the outro in `src/cli.ts`, which tells people what to start |
|
|
59
60
|
| A new first-run step (migration, seed, generate) | `src/tasks.ts` and `maybeRunFirstTimeSetup` |
|
|
60
61
|
| A `docker-compose.yml` service, port or name change | `src/tasks.ts`, and the collision check in `ragenStackVolumeExists` |
|
|
@@ -69,7 +70,7 @@ about — has no textual signal, which is why the rule above is a rule.
|
|
|
69
70
|
|
|
70
71
|
| Flag | Effect |
|
|
71
72
|
| ----------------- | --------------------------------------------------- |
|
|
72
|
-
| `--ref=<
|
|
73
|
+
| `--ref=<ref>` | Clone a branch, tag or commit SHA other than `main` |
|
|
73
74
|
| `--skip-docker` | Write the `.env.local` files but don't start Docker |
|
|
74
75
|
| `--skip-install` | Skip `npm install` / Prisma / seed |
|
|
75
76
|
| `--yes` | Accept every default without prompting |
|
|
@@ -130,6 +131,13 @@ Three details, each of which this file previously got wrong:
|
|
|
130
131
|
so testing a change to the *app* needs that branch pushed. Without it you are
|
|
131
132
|
testing new installer code against old repository content.
|
|
132
133
|
|
|
134
|
+
It takes anything GitHub's tarball endpoint resolves — a branch, a tag, or a
|
|
135
|
+
full commit SHA. The `Installer` workflow passes the **commit**, because a
|
|
136
|
+
branch can be deleted by the merge while the job is still running and the
|
|
137
|
+
endpoint then 404s on a name that resolved seconds earlier. Prefer a SHA
|
|
138
|
+
anywhere the ref is chosen by a machine rather than typed by hand. See
|
|
139
|
+
[the lesson](../../docs/lessons/a-ci-job-that-clones-a-branch-races-the-merge.md).
|
|
140
|
+
|
|
133
141
|
`prepare` runs `clean` before `build` deliberately. `files` publishes `dist`
|
|
134
142
|
wholesale and `tsc` does not remove the output of a source file that no
|
|
135
143
|
longer exists, so without the clean a renamed or deleted module ships as a
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AA0EA;;;;;;GAMG;AACH,wBAAsB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CA6M1D"}
|
package/dist/cli.js
CHANGED
|
@@ -40,13 +40,17 @@ const clack = __importStar(require("@clack/prompts"));
|
|
|
40
40
|
const dotenv_1 = require("dotenv");
|
|
41
41
|
const args_1 = require("./args");
|
|
42
42
|
const clone_1 = require("./clone");
|
|
43
|
+
const config_file_1 = require("./config-file");
|
|
44
|
+
const encryption_provider_1 = require("./encryption-provider");
|
|
43
45
|
const env_file_1 = require("./env-file");
|
|
44
46
|
const litellm_config_1 = require("./litellm-config");
|
|
45
47
|
const manual_setup_1 = require("./manual-setup");
|
|
48
|
+
const route_table_1 = require("./route-table");
|
|
46
49
|
const node_version_1 = require("./node-version");
|
|
47
50
|
const llm_provider_1 = require("./llm-provider");
|
|
48
51
|
const manifest_1 = require("./manifest");
|
|
49
52
|
const secrets_1 = require("./secrets");
|
|
53
|
+
const storage_provider_1 = require("./storage-provider");
|
|
50
54
|
const tasks_1 = require("./tasks");
|
|
51
55
|
/** Written into the new install whenever a model still has to be wired by hand. */
|
|
52
56
|
const MANUAL_SETUP_FILENAME = 'SETUP-LLM.md';
|
|
@@ -104,6 +108,23 @@ async function run(argv) {
|
|
|
104
108
|
if (llmChoice) {
|
|
105
109
|
Object.assign(rootOverrides, llmChoice.envUpdates);
|
|
106
110
|
}
|
|
111
|
+
// Storage and encryption were skipped by every earlier version of this
|
|
112
|
+
// wizard, and both are worse to answer later than now: turning encryption on
|
|
113
|
+
// afterwards leaves everything already written in plaintext, because nothing
|
|
114
|
+
// re-encrypts history, and moving storage strands the files already uploaded.
|
|
115
|
+
const storagePrompt = await resolveStorage(args);
|
|
116
|
+
if (storagePrompt.cancelled) {
|
|
117
|
+
clack.cancel('Cancelled.');
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
const encryptionPrompt = await resolveEncryption(args);
|
|
121
|
+
if (encryptionPrompt.cancelled) {
|
|
122
|
+
clack.cancel('Cancelled.');
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
const storage = storagePrompt.selection;
|
|
126
|
+
const encryption = encryptionPrompt.selection;
|
|
127
|
+
Object.assign(rootOverrides, storage.envUpdates, encryption.envUpdates);
|
|
107
128
|
const rootWrite = writeEnvFile(targetDir, 'root', rootOverrides);
|
|
108
129
|
const adminWrite = writeEnvFile(targetDir, 'admin', adminOverrides);
|
|
109
130
|
const missingKeys = [...rootWrite.missingKeys, ...adminWrite.missingKeys];
|
|
@@ -114,7 +135,35 @@ async function run(argv) {
|
|
|
114
135
|
].join('\n'));
|
|
115
136
|
return false;
|
|
116
137
|
}
|
|
138
|
+
// After the env write, so a run that stops on drifted keys has not already
|
|
139
|
+
// rewritten a file in the clone.
|
|
140
|
+
try {
|
|
141
|
+
(0, config_file_1.writeRagenConfig)(targetDir, storage, encryption);
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
clack.cancel(`Could not update ragen.config.ts: ${String(error)}\n` +
|
|
145
|
+
'The environment is written and correct; only the typed config is out of date. Fix its storage/encryption block by hand.');
|
|
146
|
+
return false;
|
|
147
|
+
}
|
|
148
|
+
if (encryption.generatedKey) {
|
|
149
|
+
clack.log.info([
|
|
150
|
+
'Generated an encryption key into .env.local as ENCRYPTION_MASTER_KEY.',
|
|
151
|
+
'Back it up: messages and documents encrypted with it cannot be read',
|
|
152
|
+
'without it, and nothing can re-derive it.',
|
|
153
|
+
].join(' '));
|
|
154
|
+
}
|
|
155
|
+
if (encryption.provider === 'none') {
|
|
156
|
+
clack.log.warn([
|
|
157
|
+
'Encryption is off, so messages and documents are stored in plaintext.',
|
|
158
|
+
'Turning it on later leaves everything written before then unencrypted —',
|
|
159
|
+
'nothing re-encrypts history.',
|
|
160
|
+
].join(' '));
|
|
161
|
+
}
|
|
117
162
|
if (llmChoice) {
|
|
163
|
+
// The route table is what the install actually uses: `LLM_GATEWAY` is
|
|
164
|
+
// `native` for both providers the wizard offers. The proxy config is
|
|
165
|
+
// written too, so setting `LLM_GATEWAY=litellm` is a working rollback.
|
|
166
|
+
(0, route_table_1.writeRouteTable)(targetDir, llmChoice.routes);
|
|
118
167
|
patchLiteLLMConfig(targetDir, llmChoice.liteLLMEntries);
|
|
119
168
|
if (!llmChoice.embeddingsConfigured) {
|
|
120
169
|
clack.log.warn([
|
|
@@ -133,11 +182,15 @@ async function run(argv) {
|
|
|
133
182
|
clack.note([
|
|
134
183
|
'No LLM provider configured, so chat and the knowledge base are off.',
|
|
135
184
|
'',
|
|
136
|
-
'
|
|
185
|
+
'This path leaves LLM_GATEWAY=litellm, so configure the proxy —',
|
|
186
|
+
'two files to edit, then `docker compose restart litellm`:',
|
|
137
187
|
' .env.local — your key, DEFAULT_MODEL, REPHRASE_MODEL,',
|
|
138
188
|
' EMBEDDINGS_MODEL, VECTOR_SIZE',
|
|
139
189
|
' infra/litellm/config.yaml — a model_list entry per model',
|
|
140
190
|
'',
|
|
191
|
+
'To call providers directly instead, set LLM_GATEWAY=native and put',
|
|
192
|
+
`a route per model in ${route_table_1.ROUTE_TABLE_PATH}.`,
|
|
193
|
+
'',
|
|
141
194
|
`Exact values for OpenAI and Anthropic are written to ${guidePath}.`,
|
|
142
195
|
].join('\n'), 'Configure a model later');
|
|
143
196
|
}
|
|
@@ -241,6 +294,156 @@ function writeEnvFile(targetDir, target, overrides) {
|
|
|
241
294
|
(0, node_fs_1.writeFileSync)(localPath, content, { mode: 0o600 });
|
|
242
295
|
return { content, missingKeys };
|
|
243
296
|
}
|
|
297
|
+
/**
|
|
298
|
+
* Whether the wizard may ask anything at all.
|
|
299
|
+
*
|
|
300
|
+
* `--yes` is the obvious one. `--provider=` is the other, and it is not
|
|
301
|
+
* obvious: that flag exists so CI can run this wizard, *because CI cannot
|
|
302
|
+
* answer a prompt*. Adding a question that `--provider` does not silence would
|
|
303
|
+
* hang every automated install — the flag's whole purpose, undone by a
|
|
304
|
+
* question about buckets.
|
|
305
|
+
*
|
|
306
|
+
* A person who would rather not type an API key into a CLI, and does want to
|
|
307
|
+
* be asked about storage, omits the flag and exports the key instead.
|
|
308
|
+
*/
|
|
309
|
+
function isUnattended(args) {
|
|
310
|
+
return args.yes || args.provider !== undefined;
|
|
311
|
+
}
|
|
312
|
+
/**
|
|
313
|
+
* Unattended installs take the shipped defaults: files on disk (ADR-27) and a
|
|
314
|
+
* generated encryption key.
|
|
315
|
+
*
|
|
316
|
+
* Encryption is *on* in that path on purpose. The alternative defaults an
|
|
317
|
+
* install to plaintext, and the only cost of the key is a line in `.env.local`
|
|
318
|
+
* the wizard writes itself — where the cost of not having it is that every
|
|
319
|
+
* message written before someone thinks to turn it on stays readable forever.
|
|
320
|
+
*/
|
|
321
|
+
async function resolveStorage(args) {
|
|
322
|
+
if (isUnattended(args)) {
|
|
323
|
+
return { cancelled: false, selection: (0, storage_provider_1.resolveStorageSelection)('local') };
|
|
324
|
+
}
|
|
325
|
+
return promptStorage();
|
|
326
|
+
}
|
|
327
|
+
async function resolveEncryption(args) {
|
|
328
|
+
if (isUnattended(args)) {
|
|
329
|
+
return { cancelled: false, selection: (0, encryption_provider_1.resolveEncryptionSelection)('local') };
|
|
330
|
+
}
|
|
331
|
+
return promptEncryption();
|
|
332
|
+
}
|
|
333
|
+
async function promptStorage() {
|
|
334
|
+
const choice = await clack.select({
|
|
335
|
+
message: 'Where should uploaded documents be stored?',
|
|
336
|
+
options: ['local', 's3'].map((value) => ({
|
|
337
|
+
value,
|
|
338
|
+
label: storage_provider_1.STORAGE_LABELS[value],
|
|
339
|
+
})),
|
|
340
|
+
});
|
|
341
|
+
if (clack.isCancel(choice)) {
|
|
342
|
+
return { cancelled: true };
|
|
343
|
+
}
|
|
344
|
+
if (choice === 'local') {
|
|
345
|
+
return { cancelled: false, selection: (0, storage_provider_1.resolveStorageSelection)('local') };
|
|
346
|
+
}
|
|
347
|
+
const bucket = await clack.text({
|
|
348
|
+
message: 'Bucket name',
|
|
349
|
+
validate: (value) => (value.trim() ? undefined : 'Required for S3.'),
|
|
350
|
+
});
|
|
351
|
+
if (clack.isCancel(bucket)) {
|
|
352
|
+
return { cancelled: true };
|
|
353
|
+
}
|
|
354
|
+
const region = await clack.text({
|
|
355
|
+
message: 'Region',
|
|
356
|
+
placeholder: 'fr-par, us-east-1, auto',
|
|
357
|
+
validate: (value) => (value.trim() ? undefined : 'Required for S3.'),
|
|
358
|
+
});
|
|
359
|
+
if (clack.isCancel(region)) {
|
|
360
|
+
return { cancelled: true };
|
|
361
|
+
}
|
|
362
|
+
const endpoint = await clack.text({
|
|
363
|
+
message: 'Endpoint URL (blank for AWS)',
|
|
364
|
+
placeholder: 'https://s3.fr-par.scw.cloud',
|
|
365
|
+
defaultValue: '',
|
|
366
|
+
});
|
|
367
|
+
if (clack.isCancel(endpoint)) {
|
|
368
|
+
return { cancelled: true };
|
|
369
|
+
}
|
|
370
|
+
const accessKeyId = await clack.text({
|
|
371
|
+
message: 'Access key ID',
|
|
372
|
+
validate: (value) => (value.trim() ? undefined : 'Required for S3.'),
|
|
373
|
+
});
|
|
374
|
+
if (clack.isCancel(accessKeyId)) {
|
|
375
|
+
return { cancelled: true };
|
|
376
|
+
}
|
|
377
|
+
// password, not text: this one is a secret and should not be echoed into a
|
|
378
|
+
// terminal someone may be sharing or recording.
|
|
379
|
+
const secretAccessKey = await clack.password({
|
|
380
|
+
message: 'Secret access key',
|
|
381
|
+
});
|
|
382
|
+
if (clack.isCancel(secretAccessKey)) {
|
|
383
|
+
return { cancelled: true };
|
|
384
|
+
}
|
|
385
|
+
if (!secretAccessKey.trim()) {
|
|
386
|
+
clack.log.warn('No secret key given — falling back to local storage.');
|
|
387
|
+
return { cancelled: false, selection: (0, storage_provider_1.resolveStorageSelection)('local') };
|
|
388
|
+
}
|
|
389
|
+
return {
|
|
390
|
+
cancelled: false,
|
|
391
|
+
selection: (0, storage_provider_1.resolveStorageSelection)('s3', {
|
|
392
|
+
bucket,
|
|
393
|
+
region,
|
|
394
|
+
endpoint,
|
|
395
|
+
accessKeyId,
|
|
396
|
+
secretAccessKey,
|
|
397
|
+
}),
|
|
398
|
+
};
|
|
399
|
+
}
|
|
400
|
+
async function promptEncryption() {
|
|
401
|
+
const choice = await clack.select({
|
|
402
|
+
message: 'Encrypt messages and documents at rest?',
|
|
403
|
+
options: ['local', 'scaleway', 'kms', 'none'].map((value) => ({
|
|
404
|
+
value,
|
|
405
|
+
label: encryption_provider_1.ENCRYPTION_LABELS[value],
|
|
406
|
+
})),
|
|
407
|
+
});
|
|
408
|
+
if (clack.isCancel(choice)) {
|
|
409
|
+
return { cancelled: true };
|
|
410
|
+
}
|
|
411
|
+
const provider = choice;
|
|
412
|
+
if (provider === 'none' || provider === 'local') {
|
|
413
|
+
return {
|
|
414
|
+
cancelled: false,
|
|
415
|
+
selection: (0, encryption_provider_1.resolveEncryptionSelection)(provider),
|
|
416
|
+
};
|
|
417
|
+
}
|
|
418
|
+
const keyId = await clack.text({
|
|
419
|
+
message: provider === 'kms' ? 'KMS key id or ARN' : 'Key Manager key id',
|
|
420
|
+
validate: (value) => (value.trim() ? undefined : 'Required.'),
|
|
421
|
+
});
|
|
422
|
+
if (clack.isCancel(keyId)) {
|
|
423
|
+
return { cancelled: true };
|
|
424
|
+
}
|
|
425
|
+
if (provider === 'kms') {
|
|
426
|
+
return {
|
|
427
|
+
cancelled: false,
|
|
428
|
+
selection: (0, encryption_provider_1.resolveEncryptionSelection)('kms', { keyId, apiKey: '' }),
|
|
429
|
+
};
|
|
430
|
+
}
|
|
431
|
+
// Validated rather than given a fallback, unlike the S3 secret: someone who
|
|
432
|
+
// chose Scaleway has no second choice to fall back to, and a blank key would
|
|
433
|
+
// write `SCW_API_KEY=` — a provider named with a credential that reads as
|
|
434
|
+
// unset, which the boot check then refuses.
|
|
435
|
+
const apiKey = await clack.password({
|
|
436
|
+
message: 'Scaleway API secret key',
|
|
437
|
+
validate: (value) => (value.trim() ? undefined : 'Required for Scaleway.'),
|
|
438
|
+
});
|
|
439
|
+
if (clack.isCancel(apiKey)) {
|
|
440
|
+
return { cancelled: true };
|
|
441
|
+
}
|
|
442
|
+
return {
|
|
443
|
+
cancelled: false,
|
|
444
|
+
selection: (0, encryption_provider_1.resolveEncryptionSelection)('scaleway', { keyId, apiKey }),
|
|
445
|
+
};
|
|
446
|
+
}
|
|
244
447
|
/**
|
|
245
448
|
* Three ways to arrive at a provider, in precedence order: named on the
|
|
246
449
|
* command line with the key in the environment, declined wholesale by
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoEA,kBAgJC;AApND,qCAMiB;AACjB,yCAAiC;AAEjC,sDAAwC;AACxC,mCAA8C;AAE9C,iCAAqE;AACrE,mCAAwC;AACxC,yCAA+C;AAC/C,qDAA2E;AAC3E,iDAA4D;AAC5D,iDAAkD;AAClD,iDAKwB;AACxB,yCAKoB;AACpB,uCAA2C;AAC3C,mCAQiB;AAEjB,mFAAmF;AACnF,MAAM,qBAAqB,GAAG,cAAc,CAAC;AAE7C,MAAM,SAAS,GAA0D;IACvE,IAAI,EAAE,EAAE,OAAO,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,EAAE;IACtD,KAAK,EAAE,EAAE,OAAO,EAAE,yBAAyB,EAAE,KAAK,EAAE,uBAAuB,EAAE;CAC9E,CAAC;AAcF;;;;;;GAMG;AACI,KAAK,UAAU,GAAG,CAAC,IAAc;IACtC,MAAM,IAAI,GAAG,IAAA,gBAAS,EAAC,IAAI,CAAC,CAAC;IAE7B,KAAK,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAEhC,2EAA2E;IAC3E,0CAA0C;IAC1C,MAAM,WAAW,GAAG,IAAA,+BAAgB,EAAC;QACnC,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,YAAY,EAAE,CAAC,IAAI,CAAC,WAAW;KAChC,CAAC,CAAC;IAEH,IAAI,WAAW,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAClC,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAClC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,WAAW,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAChC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IACnE,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;IACrC,YAAY,CAAC,KAAK,CAAC,sBAAsB,SAAS,EAAE,CAAC,CAAC;IACtD,IAAI,CAAC;QACH,MAAM,IAAA,qBAAa,EAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,YAAY,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,CAAC;QACtC,KAAK,CAAC,MAAM,CACV,sBAAsB,IAAI,CAAC,GAAG,+BAA+B,MAAM,CAAC,KAAK,CAAC,EAAE,CAC7E,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC;IACD,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAE7B,MAAM,cAAc,GAAG,qBAAqB,EAAE,CAAC;IAC/C,MAAM,aAAa,GAAG,kBAAkB,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IACjE,MAAM,cAAc,GAAG,kBAAkB,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IAEnE,MAAM,SAAS,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAEjD,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;QACxB,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC3B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC;IACnC,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,SAAS,CAAC,UAAU,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,SAAS,GAAG,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;IACjE,MAAM,UAAU,GAAG,YAAY,CAAC,SAAS,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;IAEpE,MAAM,WAAW,GAAG,CAAC,GAAG,SAAS,CAAC,WAAW,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IAC1E,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,KAAK,CAAC,MAAM,CACV;YACE,+FAA+F,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;YACxH,sNAAsN;SACvN,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;QACF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,SAAS,EAAE,CAAC;QACd,kBAAkB,CAAC,SAAS,EAAE,SAAS,CAAC,cAAc,CAAC,CAAC;QAExD,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,CAAC;YACpC,KAAK,CAAC,GAAG,CAAC,IAAI,CACZ;gBACE,mEAAmE;gBACnE,qDAAqD;gBACrD,GAAG,qBAAqB,wBAAwB;aACjD,CAAC,IAAI,CAAC,GAAG,CAAC,CACZ,CAAC;YACF,qBAAqB,CAAC,SAAS,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;SAAM,CAAC;QACN,+DAA+D;QAC/D,wEAAwE;QACxE,qDAAqD;QACrD,MAAM,SAAS,GAAG,qBAAqB,CAAC,SAAS,CAAC,CAAC;QACnD,KAAK,CAAC,IAAI,CACR;YACE,qEAAqE;YACrE,EAAE;YACF,2DAA2D;YAC3D,sEAAsE;YACtE,2DAA2D;YAC3D,4DAA4D;YAC5D,EAAE;YACF,wDAAwD,SAAS,GAAG;SACrE,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,yBAAyB,CAC1B,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACrB,IAAI,CAAC,CAAC,MAAM,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;YACnD,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;QACtB,qEAAqE;QACrE,8DAA8D;QAC9D,oEAAoE;QACpE,uEAAuE;QACvE,sBAAsB;QACtB,MAAM,OAAO,GAAG,IAAA,cAAW,EAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,CAAC,MAAM,sBAAsB,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC;YAClE,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK,CACT;QACE,mBAAmB;QACnB,QAAQ,SAAS,EAAE;QACnB,yCAAyC;QACzC,oCAAoC;QACpC,EAAE;QACF,qEAAqE;QACrE,uEAAuE;QACvE,oEAAoE;QACpE,UAAU;QACV,oEAAoE;QACpE,2BAA2B;QAC3B,EAAE;QACF,8BAA8B;QAC9B,8BAA8B;QAC9B,mDAAmD;QACnD,EAAE;QACF,oEAAoE;QACpE,iDAAiD;KAClD,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IAEF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,KAAyB,EACzB,GAAY;IAEZ,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,IAAI,GAAG,EAAE,CAAC;YACR,SAAS,GAAG,yBAAkB,CAAC;QACjC,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC;gBAC9B,OAAO,EAAE,gCAAgC;gBACzC,WAAW,EAAE,yBAAkB;gBAC/B,YAAY,EAAE,yBAAkB;aACjC,CAAC,CAAC;YAEH,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3B,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;gBAC3B,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,SAAS,GAAG,MAAM,IAAI,yBAAkB,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,IAAI,IAAA,oBAAU,EAAC,SAAS,CAAC,EAAE,CAAC;QAC1B,MAAM,KAAK,GAAG,IAAA,kBAAQ,EAAC,SAAS,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACzB,KAAK,CAAC,MAAM,CAAC,GAAG,SAAS,yCAAyC,CAAC,CAAC;YACpE,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,IAAI,IAAA,qBAAW,EAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtC,KAAK,CAAC,MAAM,CAAC,GAAG,SAAS,mCAAmC,CAAC,CAAC;YAC9D,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,SAAS,qBAAqB;IAC5B,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAyB,CAAC;IAClD,KAAK,MAAM,KAAK,IAAI,mBAAQ,EAAE,CAAC;QAC7B,QAAQ,CAAC,GAAG,CACV,KAAK,EACL,KAAK,CAAC,QAAQ,KAAK,iBAAiB,CAAC,CAAC,CAAC,IAAA,wBAAc,GAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CACtE,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,kBAAkB,CACzB,MAAiB,EACjB,QAAoC;IAEpC,MAAM,SAAS,GAA2B,EAAE,CAAC;IAC7C,KAAK,MAAM,KAAK,IAAI,IAAA,2BAAgB,EAAC,MAAM,CAAC,EAAE,CAAC;QAC7C,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAW,CAAC;IACvD,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAOD,SAAS,YAAY,CACnB,SAAiB,EACjB,MAAiB,EACjB,SAAiC;IAEjC,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,WAAW,GAAG,IAAA,gBAAI,EAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,IAAA,gBAAI,EAAC,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAE/C,MAAM,QAAQ,GAAG,IAAA,sBAAY,EAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACnD,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,GAAG,IAAA,4BAAiB,EAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACxE,qEAAqE;IACrE,IAAA,uBAAa,EAAC,SAAS,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAEnD,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;AAClC,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,kBAAkB,CAC/B,IAAa;IAEb,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,OAAO,uBAAuB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACb,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACjD,CAAC;IACD,OAAO,iBAAiB,EAAE,CAAC;AAC7B,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,SAAS,uBAAuB,CAC9B,MAAyB;IAEzB,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,4BAAa,CAAC,MAAM,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,CAAC;IAEjD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,KAAK,CAAC,MAAM,CACV,cAAc,MAAM,cAAc,KAAK,WAAW,YAAY,6FAA6F,CAC5J,CAAC;QACF,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC7B,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,IAAA,uCAAwB,EAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;AAChF,CAAC;AAED,KAAK,UAAU,iBAAiB;IAC9B,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC;QAChC,OAAO,EAAE,uCAAuC;QAChD,OAAO,EAAE;YACP,EAAE,KAAK,EAAE,QAAiB,EAAE,KAAK,EAAE,4BAAa,CAAC,MAAM,CAAC,KAAK,EAAE;YAC/D,EAAE,KAAK,EAAE,WAAoB,EAAE,KAAK,EAAE,4BAAa,CAAC,SAAS,CAAC,KAAK,EAAE;YACrE,EAAE,KAAK,EAAE,MAAe,EAAE,KAAK,EAAE,+BAA+B,EAAE;SACnE;KACF,CAAC,CAAC;IAEH,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC7B,CAAC;IACD,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACjD,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,QAAQ,CAAC;QAClC,OAAO,EAAE,cAAc,4BAAa,CAAC,MAA2B,CAAC,CAAC,KAAK,UAAU;KAClF,CAAC,CAAC;IAEH,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAC7B,CAAC;IACD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACjD,CAAC;IAED,OAAO;QACL,SAAS,EAAE,KAAK;QAChB,MAAM,EAAE,IAAA,uCAAwB,EAAC,MAA2B,EAAE,MAAM,CAAC;KACtE,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CACzB,SAAiB,EACjB,OAA4B;IAE5B,MAAM,UAAU,GAAG,IAAA,gBAAI,EAAC,SAAS,EAAE,2BAA2B,CAAC,CAAC;IAChE,yEAAyE;IACzE,2EAA2E;IAC3E,0EAA0E;IAC1E,2BAA2B;IAC3B,MAAM,OAAO,GAAG,CAAC,GAAG,OAAO,CAAC;SACzB,OAAO,EAAE;SACT,MAAM,CACL,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC,IAAA,gCAAe,EAAC,MAAM,EAAE,KAAK,CAAC,EACjD,IAAA,sBAAY,EAAC,UAAU,EAAE,MAAM,CAAC,CACjC,CAAC;IACJ,IAAA,uBAAa,EAAC,UAAU,EAAE,OAAO,CAAC,CAAC;AACrC,CAAC;AAED;;;;GAIG;AACH,SAAS,qBAAqB,CAAC,SAAiB;IAC9C,MAAM,IAAI,GAAG,IAAA,gBAAI,EAAC,SAAS,EAAE,qBAAqB,CAAC,CAAC;IACpD,IAAA,uBAAa,EAAC,IAAI,EAAE,IAAA,yCAA0B,GAAE,CAAC,CAAC;IAClD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,aAAa,CAAC,OAAe,EAAE,GAAY;IACxD,IAAI,GAAG,EAAE,CAAC;QACR,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAChD,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC;AAC3C,CAAC;AAED;;;;;;GAMG;AACH,KAAK,UAAU,OAAO,CACpB,OAAyC,EACzC,KAAa,EACb,cAAsB,EACtB,IAAyB;IAEzB,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACrB,IAAI,CAAC;QACH,MAAM,IAAI,EAAE,CAAC;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,GAAG,KAAK,YAAY,EAAE,CAAC,CAAC,CAAC;QACtC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAC7B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,KAAK,UAAU,gBAAgB,CAC7B,SAAiB,EACjB,GAAY;IAEZ,wEAAwE;IACxE,sEAAsE;IACtE,oCAAoC;IACpC,IAAI,MAAM,IAAA,8BAAsB,GAAE,EAAE,CAAC;QACnC,KAAK,CAAC,GAAG,CAAC,IAAI,CACZ;YACE,sEAAsE;YACtE,qEAAqE;YACrE,wEAAwE;YACxE,EAAE;YACF,yEAAyE;YACzE,mEAAmE;YACnE,uEAAuE;YACvE,yBAAyB;YACzB,EAAE;YACF,QAAQ,SAAS,KAAK;YACtB,qCAAqC;YACrC,sEAAsE;YACtE,oDAAoD;YACpD,mDAAmD;YACnD,8CAA8C;YAC9C,qEAAqE;YACrE,6BAA6B;YAC7B,EAAE;YACF,4DAA4D;YAC5D,wEAAwE;YACxE,+CAA+C;SAChD,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,aAAa,CACjC,iFAAiF,EACjF,GAAG,CACJ,CAAC;IACF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC,CAAC,MAAM,IAAA,yBAAiB,GAAE,CAAC,EAAE,CAAC;QACjC,KAAK,CAAC,GAAG,CAAC,IAAI,CACZ,0GAA0G,CAC3G,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,OAAO,CACZ,KAAK,CAAC,OAAO,EAAE,EACf,yEAAyE,EACzE,2BAA2B,EAC3B,GAAG,EAAE,CAAC,IAAA,2BAAmB,EAAC,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAC9C,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,sBAAsB,CACnC,SAAiB,EACjB,GAAY,EACZ,GAAsB;IAEtB,MAAM,OAAO,GAAG,MAAM,aAAa,CACjC,iFAAiF,EACjF,GAAG,CACJ,CAAC;IACF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;IAEhC,MAAM,KAAK,GAAiD;QAC1D;YACE,aAAa;YACb,yBAAyB;YACzB,GAAG,EAAE,CAAC,IAAA,2BAAmB,EAAC,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC;SAC9C;QACD;YACE,8BAA8B;YAC9B,0BAA0B;YAC1B,GAAG,EAAE,CAAC,IAAA,4BAAoB,EAAC,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;SACpD;QACD;YACE,8BAA8B;YAC9B,qBAAqB;YACrB,GAAG,EAAE,CAAC,IAAA,uBAAe,EAAC,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;SAC/C;QACD;YACE,sBAAsB;YACtB,kBAAkB;YAClB,GAAG,EAAE,CAAC,IAAA,oBAAY,EAAC,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAE,CAAC;SAC5C;KACF,CAAC;IAEF,KAAK,MAAM,CAAC,KAAK,EAAE,cAAc,EAAE,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;QAClD,IAAI,CAAC,CAAC,MAAM,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;YAC3D,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { CONFIG_FILENAME, renderRagenConfig } from './config-template';
|
|
2
|
+
import type { EncryptionSelection } from './encryption-provider';
|
|
3
|
+
import type { StorageSelection } from './storage-provider';
|
|
4
|
+
/**
|
|
5
|
+
* Writes the configuration the wizard was told to set up.
|
|
6
|
+
*
|
|
7
|
+
* Overwrites rather than patches. The cloned file is a generated artifact of
|
|
8
|
+
* the same template (see `config-template.ts`), so there is nothing in it
|
|
9
|
+
* worth preserving that this does not already produce — and nothing to locate,
|
|
10
|
+
* which is where every previous defect in this file lived.
|
|
11
|
+
*/
|
|
12
|
+
export declare function writeRagenConfig(targetDir: string, storage: StorageSelection, encryption: EncryptionSelection): void;
|
|
13
|
+
export { CONFIG_FILENAME, renderRagenConfig };
|
|
14
|
+
//# sourceMappingURL=config-file.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-file.d.ts","sourceRoot":"","sources":["../src/config-file.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACvE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,gBAAgB,EACzB,UAAU,EAAE,mBAAmB,GAC9B,IAAI,CAKN;AAED,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.renderRagenConfig = exports.CONFIG_FILENAME = void 0;
|
|
4
|
+
exports.writeRagenConfig = writeRagenConfig;
|
|
5
|
+
const node_fs_1 = require("node:fs");
|
|
6
|
+
const node_path_1 = require("node:path");
|
|
7
|
+
const config_template_1 = require("./config-template");
|
|
8
|
+
Object.defineProperty(exports, "CONFIG_FILENAME", { enumerable: true, get: function () { return config_template_1.CONFIG_FILENAME; } });
|
|
9
|
+
Object.defineProperty(exports, "renderRagenConfig", { enumerable: true, get: function () { return config_template_1.renderRagenConfig; } });
|
|
10
|
+
/**
|
|
11
|
+
* Writes the configuration the wizard was told to set up.
|
|
12
|
+
*
|
|
13
|
+
* Overwrites rather than patches. The cloned file is a generated artifact of
|
|
14
|
+
* the same template (see `config-template.ts`), so there is nothing in it
|
|
15
|
+
* worth preserving that this does not already produce — and nothing to locate,
|
|
16
|
+
* which is where every previous defect in this file lived.
|
|
17
|
+
*/
|
|
18
|
+
function writeRagenConfig(targetDir, storage, encryption) {
|
|
19
|
+
(0, node_fs_1.writeFileSync)((0, node_path_1.join)(targetDir, config_template_1.CONFIG_FILENAME), (0, config_template_1.renderRagenConfig)(storage, encryption));
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=config-file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-file.js","sourceRoot":"","sources":["../src/config-file.ts"],"names":[],"mappings":";;;AAeA,4CASC;AAxBD,qCAAwC;AACxC,yCAAiC;AAEjC,uDAAuE;AAuB9D,gGAvBA,iCAAe,OAuBA;AAAE,kGAvBA,mCAAiB,OAuBA;AAnB3C;;;;;;;GAOG;AACH,SAAgB,gBAAgB,CAC9B,SAAiB,EACjB,OAAyB,EACzB,UAA+B;IAE/B,IAAA,uBAAa,EACX,IAAA,gBAAI,EAAC,SAAS,EAAE,iCAAe,CAAC,EAChC,IAAA,mCAAiB,EAAC,OAAO,EAAE,UAAU,CAAC,CACvC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { EncryptionSelection } from './encryption-provider';
|
|
2
|
+
import type { StorageSelection } from './storage-provider';
|
|
3
|
+
/**
|
|
4
|
+
* The whole `ragen.config.ts`, rendered.
|
|
5
|
+
*
|
|
6
|
+
* This replaced patching a marked region in the cloned file, after that
|
|
7
|
+
* approach produced four separate defects in a day: a substring search that
|
|
8
|
+
* matched the end marker inside the start marker, a marker line that carried
|
|
9
|
+
* explanatory prose and so matched nothing once the search was tightened, and
|
|
10
|
+
* two duplicate-region layouts that each mangled the file in a different way.
|
|
11
|
+
* Every one was a case of locating a region inside arbitrary text, and the
|
|
12
|
+
* space of ways that goes wrong is not something a fixture can be trusted to
|
|
13
|
+
* explore — the third defect reached CI precisely because every fixture
|
|
14
|
+
* agreed with the others and none agreed with the file being shipped.
|
|
15
|
+
*
|
|
16
|
+
* Rendering the whole file removes the operation entirely. There is nothing
|
|
17
|
+
* to find, nothing to preserve, and no malformed input: the installer writes
|
|
18
|
+
* what it means.
|
|
19
|
+
*
|
|
20
|
+
* The cost is that this template must carry the groups the wizard never asks
|
|
21
|
+
* about, and could drift from the file the repository ships. It cannot:
|
|
22
|
+
* `ragen.config.ts` at the repository root **is generated from this function**
|
|
23
|
+
* (`npm run config:template`), and
|
|
24
|
+
* `tests/architecture/ragen-config-is-generated.test.ts` compares them. One
|
|
25
|
+
* source, one artifact, checked — the same arrangement as the published
|
|
26
|
+
* configuration reference.
|
|
27
|
+
*/
|
|
28
|
+
export declare const CONFIG_FILENAME = "ragen.config.ts";
|
|
29
|
+
export declare function renderRagenConfig(storage: StorageSelection, encryption: EncryptionSelection): string;
|
|
30
|
+
//# sourceMappingURL=config-template.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-template.d.ts","sourceRoot":"","sources":["../src/config-template.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,OAAO,KAAK,EAAe,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAExE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,eAAO,MAAM,eAAe,oBAAoB,CAAC;AA8FjD,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,gBAAgB,EACzB,UAAU,EAAE,mBAAmB,GAC9B,MAAM,CAwBR"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CONFIG_FILENAME = void 0;
|
|
4
|
+
exports.renderRagenConfig = renderRagenConfig;
|
|
5
|
+
/**
|
|
6
|
+
* The whole `ragen.config.ts`, rendered.
|
|
7
|
+
*
|
|
8
|
+
* This replaced patching a marked region in the cloned file, after that
|
|
9
|
+
* approach produced four separate defects in a day: a substring search that
|
|
10
|
+
* matched the end marker inside the start marker, a marker line that carried
|
|
11
|
+
* explanatory prose and so matched nothing once the search was tightened, and
|
|
12
|
+
* two duplicate-region layouts that each mangled the file in a different way.
|
|
13
|
+
* Every one was a case of locating a region inside arbitrary text, and the
|
|
14
|
+
* space of ways that goes wrong is not something a fixture can be trusted to
|
|
15
|
+
* explore — the third defect reached CI precisely because every fixture
|
|
16
|
+
* agreed with the others and none agreed with the file being shipped.
|
|
17
|
+
*
|
|
18
|
+
* Rendering the whole file removes the operation entirely. There is nothing
|
|
19
|
+
* to find, nothing to preserve, and no malformed input: the installer writes
|
|
20
|
+
* what it means.
|
|
21
|
+
*
|
|
22
|
+
* The cost is that this template must carry the groups the wizard never asks
|
|
23
|
+
* about, and could drift from the file the repository ships. It cannot:
|
|
24
|
+
* `ragen.config.ts` at the repository root **is generated from this function**
|
|
25
|
+
* (`npm run config:template`), and
|
|
26
|
+
* `tests/architecture/ragen-config-is-generated.test.ts` compares them. One
|
|
27
|
+
* source, one artifact, checked — the same arrangement as the published
|
|
28
|
+
* configuration reference.
|
|
29
|
+
*/
|
|
30
|
+
exports.CONFIG_FILENAME = 'ragen.config.ts';
|
|
31
|
+
/**
|
|
32
|
+
* A required field is typed `string`, so `process.env.X` alone does not
|
|
33
|
+
* compile — it is `string | undefined`. The fallback is a blank rather than a
|
|
34
|
+
* non-null assertion because a blank is *true*: the variable may genuinely be
|
|
35
|
+
* missing, and every reader in `@ragenai/env` treats blank as unset, so the
|
|
36
|
+
* boot-time check reports it instead of a `!` hiding it until something
|
|
37
|
+
* dereferences undefined.
|
|
38
|
+
*/
|
|
39
|
+
function renderField({ field, envVar, required }) {
|
|
40
|
+
const value = required
|
|
41
|
+
? `process.env.${envVar} ?? ''`
|
|
42
|
+
: `process.env.${envVar}`;
|
|
43
|
+
return ` ${field}: ${value},`;
|
|
44
|
+
}
|
|
45
|
+
function renderGroup(group, provider, fields, comment) {
|
|
46
|
+
return [
|
|
47
|
+
` ${group}: {`,
|
|
48
|
+
...(comment ? [` // ${comment}`] : []),
|
|
49
|
+
` provider: '${provider}',`,
|
|
50
|
+
...fields.map(renderField),
|
|
51
|
+
' },',
|
|
52
|
+
];
|
|
53
|
+
}
|
|
54
|
+
const HEADER = `import { defineConfig } from '@ragenai/env';
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* The configuration this deployment was created with.
|
|
58
|
+
*
|
|
59
|
+
* Generated by \`create-ragen-app\`, which writes it once when the project is
|
|
60
|
+
* scaffolded and never again — so in a scaffolded project this is yours to
|
|
61
|
+
* edit.
|
|
62
|
+
*
|
|
63
|
+
* In the Ragen repository itself it is an artifact: regenerate it with
|
|
64
|
+
* \`npm run config:template\` and make changes in
|
|
65
|
+
* \`packages/create-ragen-app/src/config-template.ts\`, or the next scaffold
|
|
66
|
+
* discards them.
|
|
67
|
+
*
|
|
68
|
+
* ADR-37 declined a \`ragen.config.ts\` the apps would *read* instead of the
|
|
69
|
+
* environment, and that still holds: a secret does not belong in git, and
|
|
70
|
+
* compose, the Dockerfiles and Railway only speak environment variables.
|
|
71
|
+
* **Nothing reads this file at runtime.** It is the structure and the
|
|
72
|
+
* defaulting, with every value still resolved from \`process.env\` — which is
|
|
73
|
+
* why a fresh clone works with the minimum \`.env.local\` AGENTS.md documents,
|
|
74
|
+
* and why the fallbacks below are the same ones the code already applies.
|
|
75
|
+
*
|
|
76
|
+
* What it is for: choosing a provider makes that provider's variables
|
|
77
|
+
* mandatory *in the editor*. \`storage: { provider: 's3' }\` with no bucket does
|
|
78
|
+
* not compile. \`npm run typecheck:config\` is what makes that real — without
|
|
79
|
+
* it this file would be checked by nothing, since the repository has no root
|
|
80
|
+
* \`tsconfig.json\`.
|
|
81
|
+
*
|
|
82
|
+
* The shapes come from \`packages/env/src/provider-seams.ts\` and
|
|
83
|
+
* \`config-groups.ts\`, the same tables the boot-time check reads.
|
|
84
|
+
*/
|
|
85
|
+
export default defineConfig({
|
|
86
|
+
database: {
|
|
87
|
+
url:
|
|
88
|
+
process.env.DATABASE_URL ??
|
|
89
|
+
'postgresql://postgres:pass123@localhost:55432/ragen',
|
|
90
|
+
},
|
|
91
|
+
|
|
92
|
+
gateway: {
|
|
93
|
+
// Every model call goes through LiteLLM (ADR-04).
|
|
94
|
+
url: process.env.LITELLM_PROXY_URL ?? 'http://localhost:4000',
|
|
95
|
+
masterKey: process.env.LITELLM_MASTER_KEY,
|
|
96
|
+
},
|
|
97
|
+
|
|
98
|
+
vectorStore: {
|
|
99
|
+
// Qdrant is the only supported vector store (ADR-31).
|
|
100
|
+
url: process.env.QDRANT_URL ?? 'http://localhost:6333',
|
|
101
|
+
apiKey: process.env.QDRANT_API_KEY,
|
|
102
|
+
},
|
|
103
|
+
|
|
104
|
+
models: {
|
|
105
|
+
chat: process.env.DEFAULT_MODEL ?? 'gemini-3-flash-preview',
|
|
106
|
+
// Do not upgrade without approval — see AGENTS.md, "Model Defaults".
|
|
107
|
+
rephrase: process.env.REPHRASE_MODEL ?? 'gemini-2.5-flash',
|
|
108
|
+
summary: process.env.SUMMARY_MODEL ?? 'gemini-2.5-flash',
|
|
109
|
+
embeddings: process.env.EMBEDDINGS_MODEL,
|
|
110
|
+
// Changing this after documents exist invalidates the collection.
|
|
111
|
+
vectorSize: process.env.VECTOR_SIZE,
|
|
112
|
+
},
|
|
113
|
+
|
|
114
|
+
`;
|
|
115
|
+
function renderRagenConfig(storage, encryption) {
|
|
116
|
+
const lines = [
|
|
117
|
+
...renderGroup('storage', storage.provider, storage.configFields, storage.provider === 'local'
|
|
118
|
+
? 'ADR-27: local by default, so a fresh clone runs without a cloud account.'
|
|
119
|
+
: undefined),
|
|
120
|
+
];
|
|
121
|
+
if (encryption.provider !== 'none') {
|
|
122
|
+
lines.push('', ...renderGroup('encryption', encryption.provider, encryption.configFields));
|
|
123
|
+
}
|
|
124
|
+
return `${HEADER}${lines.join('\n')}\n});\n`;
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=config-template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-template.js","sourceRoot":"","sources":["../src/config-template.ts"],"names":[],"mappings":";;;AA2HA,8CA2BC;AAnJD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEU,QAAA,eAAe,GAAG,iBAAiB,CAAC;AAEjD;;;;;;;GAOG;AACH,SAAS,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAe;IAC3D,MAAM,KAAK,GAAG,QAAQ;QACpB,CAAC,CAAC,eAAe,MAAM,QAAQ;QAC/B,CAAC,CAAC,eAAe,MAAM,EAAE,CAAC;IAC5B,OAAO,OAAO,KAAK,KAAK,KAAK,GAAG,CAAC;AACnC,CAAC;AAED,SAAS,WAAW,CAClB,KAAa,EACb,QAAgB,EAChB,MAAqB,EACrB,OAAgB;IAEhB,OAAO;QACL,KAAK,KAAK,KAAK;QACf,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,UAAU,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,kBAAkB,QAAQ,IAAI;QAC9B,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC;QAC1B,MAAM;KACP,CAAC;AACJ,CAAC;AAED,MAAM,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4Dd,CAAC;AAEF,SAAgB,iBAAiB,CAC/B,OAAyB,EACzB,UAA+B;IAE/B,MAAM,KAAK,GAAG;QACZ,GAAG,WAAW,CACZ,SAAS,EACT,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,YAAY,EACpB,OAAO,CAAC,QAAQ,KAAK,OAAO;YAC1B,CAAC,CAAC,0EAA0E;YAC5E,CAAC,CAAC,SAAS,CACd;KACF,CAAC;IAEF,IAAI,UAAU,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;QACnC,KAAK,CAAC,IAAI,CACR,EAAE,EACF,GAAG,WAAW,CACZ,YAAY,EACZ,UAAU,CAAC,QAAQ,EACnB,UAAU,CAAC,YAAY,CACxB,CACF,CAAC;IACJ,CAAC;IAED,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;AAC/C,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { ConfigField } from './storage-provider';
|
|
2
|
+
/**
|
|
3
|
+
* Encryption at rest for thread messages and PII (ADR-02, ADR-06).
|
|
4
|
+
*
|
|
5
|
+
* The wizard skipped this too, and the cost of skipping is asymmetric:
|
|
6
|
+
* turning encryption *on* later leaves everything written before it in
|
|
7
|
+
* plaintext, because nothing re-encrypts history. So the one moment it is
|
|
8
|
+
* free to decide is the moment the install is created.
|
|
9
|
+
*
|
|
10
|
+
* `local` is offered first because it costs the user nothing —
|
|
11
|
+
* `generateSecret()` already produces a 64-character hex string, which is
|
|
12
|
+
* exactly what `parseMasterKey` in `@ragenai/crypto` accepts. No account, no
|
|
13
|
+
* console, no copy-paste.
|
|
14
|
+
*
|
|
15
|
+
* The variable names mirror `ENCRYPTION_SEAM` in `@ragenai/env`, copied rather
|
|
16
|
+
* than imported for the reason given in `storage-provider.ts`, and held to the
|
|
17
|
+
* original by `tests/architecture/create-ragen-app-knows-the-provider-seams.test.ts`.
|
|
18
|
+
*/
|
|
19
|
+
export type EncryptionChoice = 'none' | 'local' | 'scaleway' | 'kms';
|
|
20
|
+
export declare const ENCRYPTION_LABELS: Record<EncryptionChoice, string>;
|
|
21
|
+
export interface EncryptionAnswers {
|
|
22
|
+
/** Scaleway: Key Manager key id. KMS: the key id or ARN. */
|
|
23
|
+
keyId: string;
|
|
24
|
+
/** Scaleway only. */
|
|
25
|
+
apiKey: string;
|
|
26
|
+
}
|
|
27
|
+
export interface EncryptionSelection {
|
|
28
|
+
provider: EncryptionChoice;
|
|
29
|
+
envUpdates: Record<string, string>;
|
|
30
|
+
configFields: ConfigField[];
|
|
31
|
+
/** True when the wizard minted the key, so the CLI can say where it went. */
|
|
32
|
+
generatedKey: boolean;
|
|
33
|
+
}
|
|
34
|
+
export declare function resolveEncryptionSelection(provider: EncryptionChoice, answers?: EncryptionAnswers): EncryptionSelection;
|
|
35
|
+
//# sourceMappingURL=encryption-provider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"encryption-provider.d.ts","sourceRoot":"","sources":["../src/encryption-provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD;;;;;;;;;;;;;;;;GAgBG;AAEH,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,OAAO,GAAG,UAAU,GAAG,KAAK,CAAC;AAErE,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAK9D,CAAC;AAEF,MAAM,WAAW,iBAAiB;IAChC,4DAA4D;IAC5D,KAAK,EAAE,MAAM,CAAC;IACd,qBAAqB;IACrB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACnC,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,6EAA6E;IAC7E,YAAY,EAAE,OAAO,CAAC;CACvB;AAOD,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,CAAC,EAAE,iBAAiB,GAC1B,mBAAmB,CAkDrB"}
|