create-ragen-app 0.2.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 +90 -7
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +218 -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/node-version.d.ts +54 -0
- package/dist/node-version.d.ts.map +1 -0
- package/dist/node-version.js +81 -0
- package/dist/node-version.js.map +1 -0
- 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
|
@@ -24,12 +24,27 @@ npm run web:dev # apps/web — http://localhost:3000
|
|
|
24
24
|
sidebar and notifications to it (ADR-21), so running only the web app gets you
|
|
25
25
|
a panel that loads and a chat that cannot open a thread.
|
|
26
26
|
|
|
27
|
+
## Node version
|
|
28
|
+
|
|
29
|
+
A Ragen installation needs Node 24, and the wizard refuses to create one on
|
|
30
|
+
anything older *before* it clones. Not because the CLI needs it — it does not,
|
|
31
|
+
and 0.2.0 was published and verified on Node 22 by accident — but because the
|
|
32
|
+
setup it runs for you (`npm install` across the monorepo, `prisma generate`,
|
|
33
|
+
`migrate deploy`, the seed) runs under the caller's Node and leaves a tree
|
|
34
|
+
that fails much later, nowhere near the cause. npm's `EBADENGINE` does warn,
|
|
35
|
+
as one line inside a wall of install output that does not say what breaks.
|
|
36
|
+
|
|
37
|
+
`--skip-install` turns the refusal into a warning, because then the wizard
|
|
38
|
+
runs nothing itself: scaffold here, run the setup on a supported Node. `--yes`
|
|
39
|
+
does not bypass it — that flag means "accept the defaults", not "ignore a
|
|
40
|
+
requirement".
|
|
41
|
+
|
|
27
42
|
## Keep this in sync with the app
|
|
28
43
|
|
|
29
44
|
This package is the only thing that exercises the first-run path.
|
|
30
45
|
`.github/workflows/installer.yml` runs it on pushes to `main` and on pull
|
|
31
46
|
requests from this repository: it packs the package, installs the tarball,
|
|
32
|
-
scaffolds from the
|
|
47
|
+
scaffolds from the commit under review and asserts the result is configured.
|
|
33
48
|
That catches a broken installer, but only for the cases the assertions cover —
|
|
34
49
|
`AGENTS.md`'s Post-Task Workflow still asks for an update here in the same PR,
|
|
35
50
|
and for the PR description to say so.
|
|
@@ -40,6 +55,7 @@ What counts as install-affecting:
|
|
|
40
55
|
| --- | --- |
|
|
41
56
|
| A new or renamed env var that a fresh install must set | `src/manifest.ts` (generated secret or corrected default) |
|
|
42
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 |
|
|
43
59
|
| An app the web app can no longer run without | the outro in `src/cli.ts`, which tells people what to start |
|
|
44
60
|
| A new first-run step (migration, seed, generate) | `src/tasks.ts` and `maybeRunFirstTimeSetup` |
|
|
45
61
|
| A `docker-compose.yml` service, port or name change | `src/tasks.ts`, and the collision check in `ragenStackVolumeExists` |
|
|
@@ -54,7 +70,7 @@ about — has no textual signal, which is why the rule above is a rule.
|
|
|
54
70
|
|
|
55
71
|
| Flag | Effect |
|
|
56
72
|
| ----------------- | --------------------------------------------------- |
|
|
57
|
-
| `--ref=<
|
|
73
|
+
| `--ref=<ref>` | Clone a branch, tag or commit SHA other than `main` |
|
|
58
74
|
| `--skip-docker` | Write the `.env.local` files but don't start Docker |
|
|
59
75
|
| `--skip-install` | Skip `npm install` / Prisma / seed |
|
|
60
76
|
| `--yes` | Accept every default without prompting |
|
|
@@ -92,15 +108,36 @@ independent).
|
|
|
92
108
|
registry:
|
|
93
109
|
|
|
94
110
|
```bash
|
|
95
|
-
|
|
96
|
-
|
|
111
|
+
pack=$(mktemp -d)
|
|
112
|
+
npm pack --workspace=create-ragen-app --pack-destination="$pack"
|
|
113
|
+
npm install --prefix "$pack" "$pack"/create-ragen-app-*.tgz
|
|
114
|
+
"$pack"/node_modules/.bin/create-ragen-app /tmp/try-ragen \
|
|
97
115
|
--ref=my-branch --provider=openai --skip-docker --skip-install
|
|
98
116
|
```
|
|
99
117
|
|
|
118
|
+
Three details, each of which this file previously got wrong:
|
|
119
|
+
|
|
120
|
+
- **Install the tarball, do not hand it to `npx`.** `npx ./thing.tgz` does not
|
|
121
|
+
install and run a local package — it tries to *execute* the file, and fails
|
|
122
|
+
with `Permission denied`. `.github/workflows/installer.yml` installs it,
|
|
123
|
+
which is why CI passed while the command written here never ran.
|
|
124
|
+
- **Glob the filename.** `npm pack` names the tarball after the version in
|
|
125
|
+
`package.json`, so writing one here goes stale at the next release.
|
|
126
|
+
- **Pack into an empty directory.** That is what keeps the glob honest: a
|
|
127
|
+
shared `/tmp` accumulates one tarball per version ever built, the glob then
|
|
128
|
+
expands to several paths, and `npm install` would be handed all of them.
|
|
129
|
+
|
|
100
130
|
`--ref` is the part people forget: the CLI clones the repository from GitHub,
|
|
101
131
|
so testing a change to the *app* needs that branch pushed. Without it you are
|
|
102
132
|
testing new installer code against old repository content.
|
|
103
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
|
+
|
|
104
141
|
`prepare` runs `clean` before `build` deliberately. `files` publishes `dist`
|
|
105
142
|
wholesale and `tsc` does not remove the output of a source file that no
|
|
106
143
|
longer exists, so without the clean a renamed or deleted module ships as a
|
|
@@ -108,11 +145,57 @@ stale `.js` that nothing in the repo can explain.
|
|
|
108
145
|
|
|
109
146
|
## Publishing (manual for now)
|
|
110
147
|
|
|
111
|
-
There is no
|
|
112
|
-
|
|
148
|
+
There is no publish job in CI (see the project plan's non-goals), so this is a
|
|
149
|
+
checklist rather than one command:
|
|
113
150
|
|
|
114
151
|
```bash
|
|
115
152
|
npm version <patch|minor|major> --workspace=create-ragen-app
|
|
116
|
-
npm
|
|
153
|
+
npm install --package-lock-only
|
|
154
|
+
git add packages/create-ragen-app/package.json package-lock.json
|
|
155
|
+
git commit -m "chore(release): create-ragen-app <version>"
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
**Land that on `main` before publishing.** `main` is protected, so it goes
|
|
159
|
+
through a pull request like anything else — and publishing first is precisely
|
|
160
|
+
how the registry ended up ahead of the repository last time. npm versions are
|
|
161
|
+
immutable: once `0.2.0` exists, a repository that still says `0.1.0` cannot be
|
|
162
|
+
corrected by re-publishing, only by pushing the commit that should have gone
|
|
163
|
+
first.
|
|
164
|
+
|
|
165
|
+
```bash
|
|
166
|
+
git checkout main && git pull
|
|
117
167
|
npm publish --workspace=create-ragen-app
|
|
118
168
|
```
|
|
169
|
+
|
|
170
|
+
Publishing from a merged `main` also means the tarball is built from the tree
|
|
171
|
+
everyone else can see, rather than from whatever happens to be in the working
|
|
172
|
+
directory.
|
|
173
|
+
|
|
174
|
+
The two middle lines of the first block are there because of what `npm
|
|
175
|
+
version` does *not* do for a workspace. Both have already cost this package a
|
|
176
|
+
release:
|
|
177
|
+
|
|
178
|
+
- **It does not commit, and does not tag.** In a single-package repository it
|
|
179
|
+
does both; with `--workspace` it rewrites `package.json` and leaves the
|
|
180
|
+
change unstaged, printing only the new version. 0.2.0 went to npm from a
|
|
181
|
+
bump that then sat uncommitted on a laptop, so the registry served 0.2.0
|
|
182
|
+
while `main` still said 0.1.0 — and `npm publish` from `main` would have
|
|
183
|
+
been rejected as an existing version.
|
|
184
|
+
- **It does not touch `package-lock.json`.** The lockfile keeps its own copy
|
|
185
|
+
of every workspace's version, so it stayed on `0.1.0`. That is why
|
|
186
|
+
`git add package-lock.json` staged nothing in that release commit: there was
|
|
187
|
+
nothing to stage. `npm install --package-lock-only` fixes it and leaves
|
|
188
|
+
`node_modules` alone.
|
|
189
|
+
|
|
190
|
+
`npm run build` is deliberately absent: `prepare` already runs `clean &&
|
|
191
|
+
build` on publish, and it has to clean — `files` publishes `dist` wholesale
|
|
192
|
+
and `tsc` does not remove the output of a source file that no longer exists.
|
|
193
|
+
|
|
194
|
+
Then exercise what was actually published, not just what was packed — from
|
|
195
|
+
the repository root:
|
|
196
|
+
|
|
197
|
+
```bash
|
|
198
|
+
OPENAI_API_KEY=dummy npx create-ragen-app@latest /tmp/verify-release \
|
|
199
|
+
--provider=openai --skip-docker --skip-install
|
|
200
|
+
node scripts/ci/assert-scaffolded-install.mjs /tmp/verify-release
|
|
201
|
+
```
|
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,12 +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");
|
|
49
|
+
const node_version_1 = require("./node-version");
|
|
46
50
|
const llm_provider_1 = require("./llm-provider");
|
|
47
51
|
const manifest_1 = require("./manifest");
|
|
48
52
|
const secrets_1 = require("./secrets");
|
|
53
|
+
const storage_provider_1 = require("./storage-provider");
|
|
49
54
|
const tasks_1 = require("./tasks");
|
|
50
55
|
/** Written into the new install whenever a model still has to be wired by hand. */
|
|
51
56
|
const MANUAL_SETUP_FILENAME = 'SETUP-LLM.md';
|
|
@@ -63,6 +68,19 @@ const ENV_PATHS = {
|
|
|
63
68
|
async function run(argv) {
|
|
64
69
|
const args = (0, args_1.parseArgs)(argv);
|
|
65
70
|
clack.intro('create-ragen-app');
|
|
71
|
+
// Before the target directory, and well before the clone: the point of the
|
|
72
|
+
// check is to cost nothing when it fails.
|
|
73
|
+
const nodeVersion = (0, node_version_1.checkNodeVersion)({
|
|
74
|
+
version: process.version,
|
|
75
|
+
willRunSetup: !args.skipInstall,
|
|
76
|
+
});
|
|
77
|
+
if (nodeVersion.kind === 'refuse') {
|
|
78
|
+
clack.cancel(nodeVersion.message);
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
if (nodeVersion.kind === 'warn') {
|
|
82
|
+
clack.log.warn(nodeVersion.message);
|
|
83
|
+
}
|
|
66
84
|
const targetDir = await resolveTargetDir(args.targetDir, args.yes);
|
|
67
85
|
if (!targetDir) {
|
|
68
86
|
return false;
|
|
@@ -90,6 +108,23 @@ async function run(argv) {
|
|
|
90
108
|
if (llmChoice) {
|
|
91
109
|
Object.assign(rootOverrides, llmChoice.envUpdates);
|
|
92
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);
|
|
93
128
|
const rootWrite = writeEnvFile(targetDir, 'root', rootOverrides);
|
|
94
129
|
const adminWrite = writeEnvFile(targetDir, 'admin', adminOverrides);
|
|
95
130
|
const missingKeys = [...rootWrite.missingKeys, ...adminWrite.missingKeys];
|
|
@@ -100,7 +135,35 @@ async function run(argv) {
|
|
|
100
135
|
].join('\n'));
|
|
101
136
|
return false;
|
|
102
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
|
+
}
|
|
103
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);
|
|
104
167
|
patchLiteLLMConfig(targetDir, llmChoice.liteLLMEntries);
|
|
105
168
|
if (!llmChoice.embeddingsConfigured) {
|
|
106
169
|
clack.log.warn([
|
|
@@ -119,11 +182,15 @@ async function run(argv) {
|
|
|
119
182
|
clack.note([
|
|
120
183
|
'No LLM provider configured, so chat and the knowledge base are off.',
|
|
121
184
|
'',
|
|
122
|
-
'
|
|
185
|
+
'This path leaves LLM_GATEWAY=litellm, so configure the proxy —',
|
|
186
|
+
'two files to edit, then `docker compose restart litellm`:',
|
|
123
187
|
' .env.local — your key, DEFAULT_MODEL, REPHRASE_MODEL,',
|
|
124
188
|
' EMBEDDINGS_MODEL, VECTOR_SIZE',
|
|
125
189
|
' infra/litellm/config.yaml — a model_list entry per model',
|
|
126
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
|
+
'',
|
|
127
194
|
`Exact values for OpenAI and Anthropic are written to ${guidePath}.`,
|
|
128
195
|
].join('\n'), 'Configure a model later');
|
|
129
196
|
}
|
|
@@ -227,6 +294,156 @@ function writeEnvFile(targetDir, target, overrides) {
|
|
|
227
294
|
(0, node_fs_1.writeFileSync)(localPath, content, { mode: 0o600 });
|
|
228
295
|
return { content, missingKeys };
|
|
229
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
|
+
}
|
|
230
447
|
/**
|
|
231
448
|
* Three ways to arrive at a provider, in precedence order: named on the
|
|
232
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":"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"}
|
|
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"}
|