@genfeedai/create 0.2.0 → 0.3.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 +23 -2
- package/dist/index.d.ts +2 -0
- package/dist/index.js +39 -15
- package/dist/index.js.map +1 -1
- package/dist/setup.d.ts +3 -0
- package/dist/setup.js +93 -0
- package/dist/setup.js.map +1 -0
- package/dist/wizard.d.ts +4 -0
- package/dist/wizard.js +61 -0
- package/dist/wizard.js.map +1 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -11,7 +11,10 @@ npx @genfeedai/create my-genfeed
|
|
|
11
11
|
The installer resolves the latest GitHub release, downloads its public
|
|
12
12
|
self-hosted bundle, verifies the SHA-256 checksum and release manifest, then
|
|
13
13
|
starts the exact GHCR image associated with that release. The app is available
|
|
14
|
-
at `http://localhost:3000
|
|
14
|
+
at `http://localhost:3000` by default. The wizard asks for an OpenRouter key
|
|
15
|
+
(hidden input) and a domain you own (blank for localhost). It writes the final
|
|
16
|
+
`.env` with owner-only permissions and generated encryption/session secrets
|
|
17
|
+
before starting Docker.
|
|
15
18
|
|
|
16
19
|
Install a specific release reproducibly:
|
|
17
20
|
|
|
@@ -25,10 +28,28 @@ Prepare and validate the installation without starting containers:
|
|
|
25
28
|
npx @genfeedai/create my-genfeed --release v0.5.0 --no-start
|
|
26
29
|
```
|
|
27
30
|
|
|
28
|
-
Node.js 24, Docker Compose, and `tar` must be installed. The generated directory
|
|
31
|
+
Node.js 24 (`>=24 <25`; other versions exit with an error), Docker Compose v2, and `tar` must be installed. The generated directory
|
|
29
32
|
contains the release manifest, pinned environment, Compose file, and
|
|
30
33
|
installation guide.
|
|
31
34
|
|
|
35
|
+
## First sign-up and first generation
|
|
36
|
+
|
|
37
|
+
Sign-up is enabled by default. Supply a real key from
|
|
38
|
+
[openrouter.ai/keys](https://openrouter.ai/keys) during setup: missing or
|
|
39
|
+
placeholder keys stop installation/startup. Format checks do not prove provider
|
|
40
|
+
access or available provider credit.
|
|
41
|
+
|
|
42
|
+
For automation, pass `--yes` and securely provide `OPENROUTER_API_KEY` in the
|
|
43
|
+
environment. `SELFHOSTED_DOMAIN` and the three `SELFHOSTED_*_PORT` variables
|
|
44
|
+
override the defaults; no secret CLI argument is supported. Non-terminal input
|
|
45
|
+
requires `--yes` and a key, rather than silently copying an unusable template.
|
|
46
|
+
|
|
47
|
+
A domain such as `studio.example.com` derives HTTPS app/API/auth URLs and trusted
|
|
48
|
+
origins. You must configure DNS, TLS and reverse-proxy routing separately; the
|
|
49
|
+
release bundle README describes it. Existing installs upgrading to 0.2.15 must
|
|
50
|
+
configure a key before restarting and remove conflicting localhost auth URLs
|
|
51
|
+
when setting a domain.
|
|
52
|
+
|
|
32
53
|
## License
|
|
33
54
|
|
|
34
55
|
AGPL-3.0
|
package/dist/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
interface CliOptions {
|
|
3
3
|
release?: string;
|
|
4
4
|
start: boolean;
|
|
5
|
+
yes?: boolean;
|
|
5
6
|
}
|
|
6
7
|
interface ReleaseManifest {
|
|
7
8
|
schemaVersion: number;
|
|
@@ -20,6 +21,7 @@ export declare function resolveReleaseTag(requestedRelease?: string, fetchImplem
|
|
|
20
21
|
export declare function readPackageVersion(packageJsonUrl?: URL): string;
|
|
21
22
|
export declare function verifyReleaseChecksum(archivePath: string, checksumPath: string): Promise<void>;
|
|
22
23
|
export declare function parseReleaseManifest(content: string, expectedReleaseTag: string): ReleaseManifest;
|
|
24
|
+
export declare function assertSupportedNodeVersion(nodeVersion?: string): void;
|
|
23
25
|
export declare function openBrowser(url: string): void;
|
|
24
26
|
export declare function installRelease(projectName: string, options: CliOptions, fetchImplementation?: FetchImplementation): Promise<void>;
|
|
25
27
|
export {};
|
package/dist/index.js
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { spawn, spawnSync } from 'node:child_process';
|
|
3
3
|
import { createHash } from 'node:crypto';
|
|
4
|
-
import {
|
|
5
|
-
import { access,
|
|
4
|
+
import { readFileSync, realpathSync } from 'node:fs';
|
|
5
|
+
import { access, mkdir, mkdtemp, readFile, rm, writeFile, } from 'node:fs/promises';
|
|
6
6
|
import { tmpdir } from 'node:os';
|
|
7
7
|
import { join, resolve } from 'node:path';
|
|
8
8
|
import { fileURLToPath } from 'node:url';
|
|
9
|
-
import { Command } from 'commander';
|
|
10
9
|
import { consola } from 'consola';
|
|
10
|
+
import { configureEnvironment } from './wizard.js';
|
|
11
11
|
const REPOSITORY = 'genfeedai/genfeed.ai';
|
|
12
12
|
const RELEASE_API_URL = `https://api.github.com/repos/${REPOSITORY}/releases/latest`;
|
|
13
13
|
const DEFAULT_DOWNLOAD_BASE_URL = `https://github.com/${REPOSITORY}/releases/download`;
|
|
@@ -15,8 +15,10 @@ const RELEASE_ARCHIVE_NAME = 'genfeed-selfhosted.tar.gz';
|
|
|
15
15
|
const RELEASE_CHECKSUM_NAME = `${RELEASE_ARCHIVE_NAME}.sha256`;
|
|
16
16
|
const RELEASE_MANIFEST_NAME = 'release.json';
|
|
17
17
|
const EXPECTED_IMAGE_REPOSITORY = 'ghcr.io/genfeedai/genfeed.ai';
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
// Keep in sync with "engines.node" (>=24 <25) in package.json.
|
|
19
|
+
const MIN_NODE_MAJOR = 24;
|
|
20
|
+
const MAX_NODE_MAJOR_EXCLUSIVE = 25;
|
|
21
|
+
function isNonNullObject(value) {
|
|
20
22
|
return typeof value === 'object' && value !== null;
|
|
21
23
|
}
|
|
22
24
|
export function normalizeReleaseTag(value) {
|
|
@@ -54,7 +56,7 @@ export async function resolveReleaseTag(requestedRelease, fetchImplementation =
|
|
|
54
56
|
throw new Error(`Could not resolve the latest Genfeed.ai release (HTTP ${response.status}).`);
|
|
55
57
|
}
|
|
56
58
|
const payload = await response.json();
|
|
57
|
-
if (!
|
|
59
|
+
if (!isNonNullObject(payload)) {
|
|
58
60
|
throw new Error('GitHub returned invalid latest-release metadata.');
|
|
59
61
|
}
|
|
60
62
|
const tagName = payload.tag_name;
|
|
@@ -65,7 +67,7 @@ export async function resolveReleaseTag(requestedRelease, fetchImplementation =
|
|
|
65
67
|
}
|
|
66
68
|
export function readPackageVersion(packageJsonUrl = new URL('../package.json', import.meta.url)) {
|
|
67
69
|
const manifest = JSON.parse(readFileSync(fileURLToPath(packageJsonUrl), 'utf8'));
|
|
68
|
-
if (!
|
|
70
|
+
if (!isNonNullObject(manifest) || typeof manifest.version !== 'string') {
|
|
69
71
|
throw new Error('Could not read the @genfeedai/create package version.');
|
|
70
72
|
}
|
|
71
73
|
return manifest.version;
|
|
@@ -96,7 +98,7 @@ export async function verifyReleaseChecksum(archivePath, checksumPath) {
|
|
|
96
98
|
}
|
|
97
99
|
export function parseReleaseManifest(content, expectedReleaseTag) {
|
|
98
100
|
const parsed = JSON.parse(content);
|
|
99
|
-
if (!
|
|
101
|
+
if (!isNonNullObject(parsed)) {
|
|
100
102
|
throw new Error('Release manifest is not an object.');
|
|
101
103
|
}
|
|
102
104
|
const normalizedTag = normalizeReleaseTag(expectedReleaseTag);
|
|
@@ -134,6 +136,14 @@ async function runCommand(command, args, options = {}) {
|
|
|
134
136
|
});
|
|
135
137
|
});
|
|
136
138
|
}
|
|
139
|
+
export function assertSupportedNodeVersion(nodeVersion = process.versions.node) {
|
|
140
|
+
const major = Number.parseInt(nodeVersion.split('.')[0] ?? '', 10);
|
|
141
|
+
if (!Number.isInteger(major) ||
|
|
142
|
+
major < MIN_NODE_MAJOR ||
|
|
143
|
+
major >= MAX_NODE_MAJOR_EXCLUSIVE) {
|
|
144
|
+
throw new Error(`Node.js ${MIN_NODE_MAJOR} is required (supported range: >=${MIN_NODE_MAJOR} <${MAX_NODE_MAJOR_EXCLUSIVE}); found ${nodeVersion}. Install Node.js ${MIN_NODE_MAJOR} and run again.`);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
137
147
|
function assertInstallPrerequisites() {
|
|
138
148
|
if (!commandExists('tar')) {
|
|
139
149
|
throw new Error('tar is required to extract the Genfeed.ai release bundle.');
|
|
@@ -142,11 +152,11 @@ function assertInstallPrerequisites() {
|
|
|
142
152
|
throw new Error('Docker Compose is required. Install Docker Desktop or the Docker Compose plugin.');
|
|
143
153
|
}
|
|
144
154
|
}
|
|
145
|
-
async function waitForApp(fetchImplementation, timeoutMs = 180_000) {
|
|
155
|
+
async function waitForApp(fetchImplementation, appUrl, timeoutMs = 180_000) {
|
|
146
156
|
const start = Date.now();
|
|
147
157
|
while (Date.now() - start < timeoutMs) {
|
|
148
158
|
try {
|
|
149
|
-
const response = await fetchImplementation(
|
|
159
|
+
const response = await fetchImplementation(appUrl, {
|
|
150
160
|
redirect: 'manual',
|
|
151
161
|
signal: AbortSignal.timeout(2_000),
|
|
152
162
|
});
|
|
@@ -215,7 +225,11 @@ export async function installRelease(projectName, options, fetchImplementation =
|
|
|
215
225
|
createdProjectDirectory = true;
|
|
216
226
|
await runCommand('tar', ['-xzf', archivePath, '-C', projectDirectory, '--strip-components=1'], { stdio: 'ignore' });
|
|
217
227
|
const releaseManifest = parseReleaseManifest(await readFile(join(projectDirectory, RELEASE_MANIFEST_NAME), 'utf8'), releaseTag);
|
|
218
|
-
await
|
|
228
|
+
const setup = await configureEnvironment(await readFile(join(projectDirectory, '.env.example'), 'utf8'), options.yes);
|
|
229
|
+
await writeFile(join(projectDirectory, '.env'), setup.content, {
|
|
230
|
+
flag: 'wx',
|
|
231
|
+
mode: 0o600,
|
|
232
|
+
});
|
|
219
233
|
await runCommand('docker', [
|
|
220
234
|
'compose',
|
|
221
235
|
'--env-file',
|
|
@@ -233,12 +247,12 @@ export async function installRelease(projectName, options, fetchImplementation =
|
|
|
233
247
|
startAttempted = true;
|
|
234
248
|
await runCommand('docker', ['compose', '--env-file', '.env', '-f', 'compose.yml', 'up', '-d'], { cwd: projectDirectory });
|
|
235
249
|
consola.start('Waiting for Genfeed.ai to become ready…');
|
|
236
|
-
if (await waitForApp(fetchImplementation)) {
|
|
237
|
-
consola.success(`Genfeed.ai is running at ${
|
|
238
|
-
openBrowser(
|
|
250
|
+
if (await waitForApp(fetchImplementation, setup.appUrl)) {
|
|
251
|
+
consola.success(`Genfeed.ai is running at ${setup.appUrl}`);
|
|
252
|
+
openBrowser(setup.appUrl);
|
|
239
253
|
}
|
|
240
254
|
else {
|
|
241
|
-
consola.warn(`The containers started, but ${
|
|
255
|
+
consola.warn(`The containers started, but ${setup.appUrl} is not ready yet.`);
|
|
242
256
|
}
|
|
243
257
|
}
|
|
244
258
|
catch (error) {
|
|
@@ -255,12 +269,22 @@ export async function installRelease(projectName, options, fetchImplementation =
|
|
|
255
269
|
}
|
|
256
270
|
}
|
|
257
271
|
async function main() {
|
|
272
|
+
try {
|
|
273
|
+
assertSupportedNodeVersion();
|
|
274
|
+
}
|
|
275
|
+
catch (error) {
|
|
276
|
+
consola.error(error instanceof Error ? error.message : String(error));
|
|
277
|
+
process.exitCode = 1;
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
280
|
+
const { Command } = await import('commander');
|
|
258
281
|
const program = new Command()
|
|
259
282
|
.name('genfeedai')
|
|
260
283
|
.description('Install a public Genfeed.ai Community release.')
|
|
261
284
|
.version(readPackageVersion())
|
|
262
285
|
.argument('<project-name>', 'Directory for the self-hosted installation')
|
|
263
286
|
.option('--release <tag>', 'Install an exact release (for example, v0.5.0)')
|
|
287
|
+
.option('--yes', 'Use OPENROUTER_API_KEY and optional SELFHOSTED_DOMAIN without prompts')
|
|
264
288
|
.option('--no-start', 'Prepare and verify the installation without starting it')
|
|
265
289
|
.action(async (projectName, options) => {
|
|
266
290
|
await installRelease(projectName, options);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACrD,OAAO,EACL,MAAM,EACN,KAAK,EACL,OAAO,EACP,QAAQ,EACR,EAAE,EACF,SAAS,GACV,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAEnD,MAAM,UAAU,GAAG,sBAAsB,CAAC;AAC1C,MAAM,eAAe,GAAG,gCAAgC,UAAU,kBAAkB,CAAC;AACrF,MAAM,yBAAyB,GAAG,sBAAsB,UAAU,oBAAoB,CAAC;AACvF,MAAM,oBAAoB,GAAG,2BAA2B,CAAC;AACzD,MAAM,qBAAqB,GAAG,GAAG,oBAAoB,SAAS,CAAC;AAC/D,MAAM,qBAAqB,GAAG,cAAc,CAAC;AAC7C,MAAM,yBAAyB,GAAG,8BAA8B,CAAC;AACjE,+DAA+D;AAC/D,MAAM,cAAc,GAAG,EAAE,CAAC;AAC1B,MAAM,wBAAwB,GAAG,EAAE,CAAC;AA0BpC,SAAS,eAAe,CAAC,KAAc;IACrC,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC;IAErE,IAAI,CAAC,sCAAsC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAC7D,MAAM,IAAI,KAAK,CACb,oBAAoB,KAAK,2CAA2C,CACrE,CAAC;IACJ,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,UAAkB;IACvD,OAAO,mBAAmB,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,UAAkB,EAClB,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,iCAAiC;IAC7D,yBAAyB;IAE3B,MAAM,aAAa,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAEnD,OAAO;QACL,OAAO,EAAE,GAAG,OAAO,IAAI,aAAa,IAAI,oBAAoB,EAAE;QAC9D,QAAQ,EAAE,GAAG,OAAO,IAAI,aAAa,IAAI,qBAAqB,EAAE;KACjE,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,gBAAyB,EACzB,mBAAmB,GAAwB,KAAK;IAEhD,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO,mBAAmB,CAAC,gBAAgB,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,eAAe,EAAE;QAC1D,OAAO,EAAE;YACP,MAAM,EAAE,6BAA6B;YACrC,YAAY,EAAE,mBAAmB;SAClC;QACD,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC;KACpC,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CACb,yDAAyD,QAAQ,CAAC,MAAM,IAAI,CAC7E,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAY,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC/C,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;IACjC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IAED,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,cAAc,GAAG,IAAI,GAAG,CAAC,iBAAiB,EAAE,OAAO,IAAI,CAAC,GAAG,CAAC;IAE5D,MAAM,QAAQ,GAAY,IAAI,CAAC,KAAK,CAClC,YAAY,CAAC,aAAa,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,CACpD,CAAC;IACF,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ,EAAE,CAAC;QACvE,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IAED,OAAO,QAAQ,CAAC,OAAO,CAAC;AAC1B,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,GAAW,EACX,WAAmB,EACnB,mBAAwC;IAExC,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,GAAG,EAAE;QAC9C,OAAO,EAAE,EAAE,YAAY,EAAE,mBAAmB,EAAE;QAC9C,QAAQ,EAAE,QAAQ;QAClB,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC;KACrC,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,CAAC,MAAM,MAAM,GAAG,EAAE,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,SAAS,CAAC,WAAW,EAAE,IAAI,UAAU,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,WAAmB,EACnB,YAAoB;IAEpB,MAAM,eAAe,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC7D,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAE7D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,CAAC;IAC5C,MAAM,cAAc,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1E,MAAM,gBAAgB,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;IAEhD,IAAI,cAAc,KAAK,gBAAgB,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CACb,uCAAuC,gBAAgB,cAAc,cAAc,GAAG,CACvF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,OAAe,EACf,kBAA0B;IAE1B,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,aAAa,GAAG,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;IAC9D,MAAM,aAAa,GAAG,GAAG,yBAAyB,IAAI,sBAAsB,CAAC,aAAa,CAAC,EAAE,CAAC;IAC9F,MAAM,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;IAC3C,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;IACrC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAE3B,IACE,aAAa,KAAK,CAAC;QACnB,UAAU,KAAK,aAAa;QAC5B,KAAK,KAAK,aAAa,EACvB,CAAC;QACD,MAAM,IAAI,KAAK,CACb,mCAAmC,aAAa,QAAQ,aAAa,GAAG,CACzE,CAAC;IACJ,CAAC;IAED,OAAO;QACL,KAAK;QACL,UAAU;QACV,aAAa;KACd,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CACpB,OAAe,EACf,IAAI,GAAa,CAAC,WAAW,CAAC;IAE9B,OAAO,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AACpE,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,OAAe,EACf,IAAc,EACd,OAAO,GAAsB,EAAE;IAE/B,MAAM,IAAI,OAAO,CAAO,CAAC,cAAc,EAAE,aAAa,EAAE,EAAE;QACxD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE;YACjC,GAAG,EAAE,OAAO,CAAC,GAAG;YAChB,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,SAAS;SAClC,CAAC,CAAC;QAEH,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QACnC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;YACnC,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,cAAc,EAAE,CAAC;gBACjB,OAAO;YACT,CAAC;YAED,aAAa,CACX,IAAI,KAAK,CACP,GAAG,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,gBAAgB,IAAI,IAAI,MAAM,IAAI,kBAAkB,GAAG,CACpF,CACF,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,WAAW,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI;IAEnC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAEnE,IACE,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC;QACxB,KAAK,GAAG,cAAc;QACtB,KAAK,IAAI,wBAAwB,EACjC,CAAC;QACD,MAAM,IAAI,KAAK,CACb,WAAW,cAAc,oCAAoC,cAAc,KAAK,wBAAwB,YAAY,WAAW,qBAAqB,cAAc,iBAAiB,CACpL,CAAC;IACJ,CAAC;AACH,CAAC;AAED,SAAS,0BAA0B;IACjC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CACb,2DAA2D,CAC5D,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,KAAK,CACb,kFAAkF,CACnF,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,UAAU,CACvB,mBAAwC,EACxC,MAAc,EACd,SAAS,GAAG,OAAO;IAEnB,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEzB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,SAAS,EAAE,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,mBAAmB,CAAC,MAAM,EAAE;gBACjD,QAAQ,EAAE,QAAQ;gBAClB,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC;aACnC,CAAC,CAAC;YACH,IAAI,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,EAAE,CAAC;gBACrE,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,mCAAmC;QACrC,CAAC;QAED,MAAM,IAAI,OAAO,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,UAAU,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,CAAC;IAC3E,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,IAAI,OAA2B,CAAC;IAChC,IAAI,IAAI,GAAa,EAAE,CAAC;IAExB,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClC,OAAO,GAAG,MAAM,CAAC;QACjB,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;SAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACxC,OAAO,GAAG,UAAU,CAAC;QACrB,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;SAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACxC,OAAO,GAAG,KAAK,CAAC;QAChB,IAAI,GAAG,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IACxE,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE;QACvB,yEAAyE;IAC3E,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,KAAK,EAAE,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,WAAmB,EACnB,OAAmB,EACnB,mBAAmB,GAAwB,KAAK;IAEhD,0BAA0B,EAAE,CAAC;IAE7B,MAAM,gBAAgB,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;IAC7D,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,+BAA+B,gBAAgB,EAAE,CAAC,CAAC;IACrE,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;YACtE,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,iBAAiB,CACxC,OAAO,CAAC,OAAO,EACf,mBAAmB,CACpB,CAAC;IACF,MAAM,SAAS,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAClD,MAAM,kBAAkB,GAAG,MAAM,OAAO,CACtC,IAAI,CAAC,MAAM,EAAE,EAAE,yBAAyB,CAAC,CAC1C,CAAC;IACF,MAAM,WAAW,GAAG,IAAI,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,CAAC;IACnE,MAAM,YAAY,GAAG,IAAI,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,CAAC;IACrE,IAAI,uBAAuB,GAAG,KAAK,CAAC;IACpC,IAAI,cAAc,GAAG,KAAK,CAAC;IAE3B,OAAO,CAAC,KAAK,CAAC,0BAA0B,UAAU,EAAE,CAAC,CAAC;IAEtD,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,YAAY,CAAC,SAAS,CAAC,OAAO,EAAE,WAAW,EAAE,mBAAmB,CAAC;YACjE,YAAY,CAAC,SAAS,CAAC,QAAQ,EAAE,YAAY,EAAE,mBAAmB,CAAC;SACpE,CAAC,CAAC;QACH,MAAM,qBAAqB,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;QAEvD,MAAM,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC9B,uBAAuB,GAAG,IAAI,CAAC;QAC/B,MAAM,UAAU,CACd,KAAK,EACL,CAAC,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,gBAAgB,EAAE,sBAAsB,CAAC,EACrE,EAAE,KAAK,EAAE,QAAQ,EAAE,CACpB,CAAC;QAEF,MAAM,eAAe,GAAG,oBAAoB,CAC1C,MAAM,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,EAAE,MAAM,CAAC,EACrE,UAAU,CACX,CAAC;QACF,MAAM,KAAK,GAAG,MAAM,oBAAoB,CACtC,MAAM,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,cAAc,CAAC,EAAE,MAAM,CAAC,EAC9D,OAAO,CAAC,GAAG,CACZ,CAAC;QACF,MAAM,SAAS,CAAC,IAAI,CAAC,gBAAgB,EAAE,MAAM,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE;YAC7D,IAAI,EAAE,IAAI;YACV,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;QAEH,MAAM,UAAU,CACd,QAAQ,EACR;YACE,SAAS;YACT,YAAY;YACZ,MAAM;YACN,IAAI;YACJ,aAAa;YACb,QAAQ;YACR,SAAS;SACV,EACD,EAAE,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,QAAQ,EAAE,CAC3C,CAAC;QAEF,OAAO,CAAC,OAAO,CACb,aAAa,eAAe,CAAC,UAAU,KAAK,eAAe,CAAC,KAAK,QAAQ,gBAAgB,EAAE,CAC5F,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,CACV,wBAAwB,WAAW,yDAAyD,CAC7F,CAAC;YACF,OAAO;QACT,CAAC;QAED,cAAc,GAAG,IAAI,CAAC;QACtB,MAAM,UAAU,CACd,QAAQ,EACR,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,EAClE,EAAE,GAAG,EAAE,gBAAgB,EAAE,CAC1B,CAAC;QAEF,OAAO,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;QACzD,IAAI,MAAM,UAAU,CAAC,mBAAmB,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YACxD,OAAO,CAAC,OAAO,CAAC,4BAA4B,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YAC5D,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC5B,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,IAAI,CACV,+BAA+B,KAAK,CAAC,MAAM,oBAAoB,CAChE,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,uBAAuB,IAAI,CAAC,cAAc,EAAE,CAAC;YAC/C,MAAM,EAAE,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/D,CAAC;aAAM,IAAI,cAAc,EAAE,CAAC;YAC1B,OAAO,CAAC,IAAI,CACV,wDAAwD,gBAAgB,8BAA8B,CACvG,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,kBAAkB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjE,CAAC;AACH,CAAC;AAED,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,0BAA0B,EAAE,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACtE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IAED,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE;SAC1B,IAAI,CAAC,WAAW,CAAC;SACjB,WAAW,CAAC,gDAAgD,CAAC;SAC7D,OAAO,CAAC,kBAAkB,EAAE,CAAC;SAC7B,QAAQ,CAAC,gBAAgB,EAAE,4CAA4C,CAAC;SACxE,MAAM,CAAC,iBAAiB,EAAE,gDAAgD,CAAC;SAC3E,MAAM,CACL,OAAO,EACP,uEAAuE,CACxE;SACA,MAAM,CACL,YAAY,EACZ,yDAAyD,CAC1D;SACA,MAAM,CAAC,KAAK,EAAE,WAAmB,EAAE,OAAmB,EAAE,EAAE;QACzD,MAAM,cAAc,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC,CAAC;SACD,kBAAkB,EAAE,CAAC;IAExB,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,eAAe,GACnB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAClE,OAAO,CAAC,KAAK,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACvC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,SAAS,YAAY;IACnB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,aAAa,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC;IAC1E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,IAAI,YAAY,EAAE,EAAE,CAAC;IACnB,KAAK,IAAI,EAAE,CAAC;AACd,CAAC"}
|
package/dist/setup.d.ts
ADDED
package/dist/setup.js
ADDED
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { pathToFileURL } from 'node:url';
|
|
2
|
+
function origin(value, variable, allowPath = false) {
|
|
3
|
+
try {
|
|
4
|
+
const parsed = new URL(value);
|
|
5
|
+
if (!['http:', 'https:'].includes(parsed.protocol) ||
|
|
6
|
+
parsed.username ||
|
|
7
|
+
parsed.password ||
|
|
8
|
+
/['"`$\\\r\n]/.test(value) ||
|
|
9
|
+
(parsed.pathname !== '/' && !allowPath) ||
|
|
10
|
+
parsed.search ||
|
|
11
|
+
parsed.hash)
|
|
12
|
+
throw new Error();
|
|
13
|
+
return allowPath ? parsed.href : parsed.origin;
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
throw new Error(`${variable} must be an HTTP(S) origin without credentials, path, query or fragment.`);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function isLocal(value) {
|
|
20
|
+
return ['localhost', '127.0.0.1', '[::1]'].includes(new URL(value).hostname);
|
|
21
|
+
}
|
|
22
|
+
export function resolveSetupEnvironment(input) {
|
|
23
|
+
const key = input.OPENROUTER_API_KEY ?? '';
|
|
24
|
+
if (!/^sk-or-[A-Za-z0-9_-]{8,}$/.test(key) ||
|
|
25
|
+
/placeholder|your[_-]|change[_-]?me|example|dummy/i.test(key)) {
|
|
26
|
+
throw new Error('OPENROUTER_API_KEY is required and must contain a non-placeholder OpenRouter key. Set it before starting.');
|
|
27
|
+
}
|
|
28
|
+
const domain = input.SELFHOSTED_DOMAIN?.trim() ?? '';
|
|
29
|
+
for (const name of [
|
|
30
|
+
'SELFHOSTED_APP_PORT',
|
|
31
|
+
'SELFHOSTED_API_PORT',
|
|
32
|
+
'SELFHOSTED_MCP_PORT',
|
|
33
|
+
]) {
|
|
34
|
+
const value = input[name];
|
|
35
|
+
if (value &&
|
|
36
|
+
(!/^\d+$/.test(value) || Number(value) < 1 || Number(value) > 65535))
|
|
37
|
+
throw new Error(`${name} must be a port from 1 to 65535.`);
|
|
38
|
+
}
|
|
39
|
+
const publicOrigin = domain
|
|
40
|
+
? origin(domain.includes('://') ? domain : `https://${domain}`, 'SELFHOSTED_DOMAIN')
|
|
41
|
+
: '';
|
|
42
|
+
const app = origin(input.GENFEEDAI_PUBLIC_URL ||
|
|
43
|
+
publicOrigin ||
|
|
44
|
+
`http://localhost:${input.SELFHOSTED_APP_PORT || '3000'}`, 'GENFEEDAI_PUBLIC_URL');
|
|
45
|
+
const api = origin(input.GENFEEDAI_API_PUBLIC_URL ||
|
|
46
|
+
publicOrigin ||
|
|
47
|
+
(isLocal(app)
|
|
48
|
+
? `http://localhost:${input.SELFHOSTED_API_PORT || '3010'}`
|
|
49
|
+
: app), 'GENFEEDAI_API_PUBLIC_URL');
|
|
50
|
+
const auth = origin(input.BETTER_AUTH_URL || api, 'BETTER_AUTH_URL');
|
|
51
|
+
const trusted = (input.BETTER_AUTH_TRUSTED_ORIGINS || app)
|
|
52
|
+
.split(',')
|
|
53
|
+
.map((value) => origin(value.trim(), 'BETTER_AUTH_TRUSTED_ORIGINS'));
|
|
54
|
+
if (!isLocal(app) || !isLocal(api)) {
|
|
55
|
+
const publicVariable = !isLocal(app)
|
|
56
|
+
? 'GENFEEDAI_PUBLIC_URL'
|
|
57
|
+
: 'GENFEEDAI_API_PUBLIC_URL';
|
|
58
|
+
const publicValue = !isLocal(app) ? app : api;
|
|
59
|
+
if (isLocal(auth))
|
|
60
|
+
throw new Error(`${publicVariable}=${publicValue} conflicts with BETTER_AUTH_URL=${auth}. Use the public auth origin.`);
|
|
61
|
+
if (auth !== api)
|
|
62
|
+
throw new Error('BETTER_AUTH_URL must match GENFEEDAI_API_PUBLIC_URL.');
|
|
63
|
+
if (trusted.some(isLocal) || !trusted.includes(app))
|
|
64
|
+
throw new Error(`${publicVariable}=${publicValue} conflicts with BETTER_AUTH_TRUSTED_ORIGINS=${trusted.join(',')}. Include the public app origin and remove localhost.`);
|
|
65
|
+
if (isLocal(app) || isLocal(api))
|
|
66
|
+
throw new Error('GENFEEDAI_PUBLIC_URL and GENFEEDAI_API_PUBLIC_URL must both use public origins for a domain install.');
|
|
67
|
+
}
|
|
68
|
+
return {
|
|
69
|
+
SELFHOSTED_DOMAIN: publicOrigin,
|
|
70
|
+
GENFEEDAI_PUBLIC_URL: app,
|
|
71
|
+
GENFEEDAI_API_PUBLIC_URL: api,
|
|
72
|
+
GENFEEDAI_MCP_PUBLIC_URL: origin(input.GENFEEDAI_MCP_PUBLIC_URL ||
|
|
73
|
+
(!isLocal(app)
|
|
74
|
+
? `${app}/mcp`
|
|
75
|
+
: `http://localhost:${input.SELFHOSTED_MCP_PORT || '3014'}/mcp`), 'GENFEEDAI_MCP_PUBLIC_URL', true),
|
|
76
|
+
BETTER_AUTH_URL: auth,
|
|
77
|
+
BETTER_AUTH_TRUSTED_ORIGINS: trusted.join(','),
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
if (process.argv[1] &&
|
|
81
|
+
import.meta.url === pathToFileURL(process.argv[1]).href) {
|
|
82
|
+
try {
|
|
83
|
+
const environment = resolveSetupEnvironment(process.env);
|
|
84
|
+
for (const [name, value] of Object.entries(environment)) {
|
|
85
|
+
process.stdout.write(`export ${name}='${value.replaceAll("'", "'\\''")}'\n`);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
process.stderr.write(`[entrypoint] FATAL: ${error instanceof Error ? error.message : 'Invalid self-hosted configuration'}\n`);
|
|
90
|
+
process.exitCode = 1;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
|
package/dist/wizard.d.ts
ADDED
package/dist/wizard.js
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { randomBytes } from 'node:crypto';
|
|
2
|
+
import { createInterface } from 'node:readline/promises';
|
|
3
|
+
import { Writable } from 'node:stream';
|
|
4
|
+
import { resolveSetupEnvironment } from './setup.js';
|
|
5
|
+
async function ask(question, secret = false) {
|
|
6
|
+
process.stdout.write(question);
|
|
7
|
+
const output = secret
|
|
8
|
+
? new Writable({
|
|
9
|
+
write(_chunk, _encoding, done) {
|
|
10
|
+
done();
|
|
11
|
+
},
|
|
12
|
+
})
|
|
13
|
+
: process.stdout;
|
|
14
|
+
const reader = createInterface({
|
|
15
|
+
input: process.stdin,
|
|
16
|
+
output,
|
|
17
|
+
terminal: true,
|
|
18
|
+
});
|
|
19
|
+
const cancellation = new AbortController();
|
|
20
|
+
reader.once('SIGINT', () => cancellation.abort());
|
|
21
|
+
try {
|
|
22
|
+
return await reader.question('', { signal: cancellation.signal });
|
|
23
|
+
}
|
|
24
|
+
finally {
|
|
25
|
+
reader.close();
|
|
26
|
+
if (secret)
|
|
27
|
+
process.stdout.write('\n');
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
export async function configureEnvironment(template, yes = false) {
|
|
31
|
+
const input = { ...process.env };
|
|
32
|
+
if (!yes && process.stdin.isTTY) {
|
|
33
|
+
input.OPENROUTER_API_KEY ||= await ask('OpenRouter API key (hidden): ', true);
|
|
34
|
+
if (input.SELFHOSTED_DOMAIN === undefined)
|
|
35
|
+
input.SELFHOSTED_DOMAIN = await ask('Domain you own (blank for localhost): ');
|
|
36
|
+
}
|
|
37
|
+
else if (!yes) {
|
|
38
|
+
throw new Error('Non-interactive installation requires --yes and OPENROUTER_API_KEY; SELFHOSTED_DOMAIN is optional.');
|
|
39
|
+
}
|
|
40
|
+
const resolved = resolveSetupEnvironment(input);
|
|
41
|
+
const environment = {
|
|
42
|
+
...resolved,
|
|
43
|
+
OPENROUTER_API_KEY: input.OPENROUTER_API_KEY?.trim() ?? '',
|
|
44
|
+
BETTER_AUTH_SECRET: randomBytes(48).toString('hex'),
|
|
45
|
+
TOKEN_ENCRYPTION_KEY: randomBytes(16).toString('hex'),
|
|
46
|
+
SELFHOSTED_APP_PORT: input.SELFHOSTED_APP_PORT || '3000',
|
|
47
|
+
SELFHOSTED_API_PORT: input.SELFHOSTED_API_PORT || '3010',
|
|
48
|
+
SELFHOSTED_MCP_PORT: input.SELFHOSTED_MCP_PORT || '3014',
|
|
49
|
+
};
|
|
50
|
+
const names = new Set(Object.keys(environment));
|
|
51
|
+
const retained = template
|
|
52
|
+
.split('\n')
|
|
53
|
+
.filter((line) => !names.has(line.split('=')[0]))
|
|
54
|
+
.join('\n');
|
|
55
|
+
const lines = Object.entries(environment).map(([name, value]) => `${name}='${value.replaceAll("'", "'\\''")}'`);
|
|
56
|
+
return {
|
|
57
|
+
content: `${retained.trimEnd()}\n${lines.join('\n')}\n`,
|
|
58
|
+
appUrl: resolved.GENFEEDAI_PUBLIC_URL,
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=wizard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wizard.js","sourceRoot":"","sources":["../src/wizard.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
"devDependencies": {
|
|
14
14
|
"@types/node": "24.13.3",
|
|
15
15
|
"@typescript/native": "npm:typescript@7.0.2",
|
|
16
|
-
"vitest": "
|
|
16
|
+
"vitest": "5.0.5"
|
|
17
17
|
},
|
|
18
18
|
"files": [
|
|
19
19
|
"dist"
|
|
@@ -46,5 +46,5 @@
|
|
|
46
46
|
"check": "tsc --noEmit -p tsconfig.json",
|
|
47
47
|
"test": "vitest run"
|
|
48
48
|
},
|
|
49
|
-
"version": "0.
|
|
49
|
+
"version": "0.3.0"
|
|
50
50
|
}
|