@knowzai/cli 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/assets/portable/releases.json +33 -0
- package/assets/selfhosted/.env.example +40 -0
- package/assets/selfhosted/docker-compose.mssql.yml +113 -0
- package/assets/selfhosted/docker-compose.yml +104 -0
- package/assets/selfhosted/lmstudio-azure-bridge.mjs +73 -0
- package/assets/selfhosted/releases.json +59 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/commands/down.d.ts +9 -0
- package/dist/commands/down.d.ts.map +1 -1
- package/dist/commands/down.js +16 -1
- package/dist/commands/down.js.map +1 -1
- package/dist/commands/up.d.ts +3 -27
- package/dist/commands/up.d.ts.map +1 -1
- package/dist/commands/up.js +25 -11
- package/dist/commands/up.js.map +1 -1
- package/dist/lib/platform-edition.d.ts +34 -0
- package/dist/lib/platform-edition.d.ts.map +1 -0
- package/dist/lib/platform-edition.js +47 -0
- package/dist/lib/platform-edition.js.map +1 -0
- package/dist/lib/platform-frontdoor-runtime.d.ts.map +1 -1
- package/dist/lib/platform-frontdoor-runtime.js +30 -10
- package/dist/lib/platform-frontdoor-runtime.js.map +1 -1
- package/dist/lib/platform-frontdoor.d.ts +10 -2
- package/dist/lib/platform-frontdoor.d.ts.map +1 -1
- package/dist/lib/platform-frontdoor.js +222 -122
- package/dist/lib/platform-frontdoor.js.map +1 -1
- package/dist/lib/platform-onboarding.d.ts +10 -0
- package/dist/lib/platform-onboarding.d.ts.map +1 -1
- package/dist/lib/platform-onboarding.js +21 -0
- package/dist/lib/platform-onboarding.js.map +1 -1
- package/dist/lib/platform-release-manifest.d.ts +1 -1
- package/dist/lib/platform-release-manifest.d.ts.map +1 -1
- package/dist/lib/platform-release-manifest.js.map +1 -1
- package/dist/lib/selfhosted-lifecycle.d.ts +96 -0
- package/dist/lib/selfhosted-lifecycle.d.ts.map +1 -0
- package/dist/lib/selfhosted-lifecycle.js +317 -0
- package/dist/lib/selfhosted-lifecycle.js.map +1 -0
- package/dist/lib/setup-console.d.ts +3 -0
- package/dist/lib/setup-console.d.ts.map +1 -1
- package/dist/lib/setup-console.js +35 -3
- package/dist/lib/setup-console.js.map +1 -1
- package/dist/lib/setup-page.d.ts.map +1 -1
- package/dist/lib/setup-page.js +34 -17
- package/dist/lib/setup-page.js.map +1 -1
- package/dist/lib/setup-plan.d.ts +2 -0
- package/dist/lib/setup-plan.d.ts.map +1 -1
- package/dist/lib/setup-plan.js +3 -1
- package/dist/lib/setup-plan.js.map +1 -1
- package/dist/lib/setup-server.d.ts.map +1 -1
- package/dist/lib/setup-server.js +20 -1
- package/dist/lib/setup-server.js.map +1 -1
- package/dist/lib/up-result.d.ts +46 -0
- package/dist/lib/up-result.d.ts.map +1 -0
- package/dist/lib/up-result.js +25 -0
- package/dist/lib/up-result.js.map +1 -0
- package/oclif.manifest.json +1814 -1800
- package/package.json +11 -10
|
@@ -11,7 +11,7 @@ export interface PlatformRelease {
|
|
|
11
11
|
export interface PlatformReleaseManifest {
|
|
12
12
|
releases: PlatformRelease[];
|
|
13
13
|
}
|
|
14
|
-
export type SelfServeErrorCode = 'RELEASE_CATALOG_UNAVAILABLE' | 'RELEASE_CATALOG_DISABLED' | 'RELEASE_NOT_PUBLISHED' | 'CLI_UPGRADE_REQUIRED' | 'INSTALLATION_REVOKED' | 'INSTALLATION_INVALID' | 'ACTIVATION_REQUIRED' | 'DEVICE_LINK_INCOMPLETE' | 'REGISTRY_AUTH_UNREACHABLE' | 'REGISTRY_PULL_FAILED';
|
|
14
|
+
export type SelfServeErrorCode = 'RELEASE_CATALOG_UNAVAILABLE' | 'RELEASE_CATALOG_DISABLED' | 'RELEASE_NOT_PUBLISHED' | 'CLI_UPGRADE_REQUIRED' | 'INSTALLATION_REVOKED' | 'INSTALLATION_INVALID' | 'ACTIVATION_REQUIRED' | 'DEVICE_LINK_INCOMPLETE' | 'REGISTRY_AUTH_UNREACHABLE' | 'REGISTRY_PULL_FAILED' | 'LICENSE_REQUIRED';
|
|
15
15
|
export declare class PlatformReleaseCatalogHttpError extends Error {
|
|
16
16
|
readonly status: number;
|
|
17
17
|
constructor(status: number);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform-release-manifest.d.ts","sourceRoot":"","sources":["../../src/lib/platform-release-manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAEzE,MAAM,MAAM,qBAAqB,GAAG,UAAU,GAAG,cAAc,CAAC;AAEhE,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,qBAAqB,EAAE,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;CACxC;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED,MAAM,MAAM,kBAAkB,GAC1B,6BAA6B,GAC7B,0BAA0B,GAC1B,uBAAuB,GACvB,sBAAsB,GACtB,sBAAsB,GACtB,sBAAsB,GACtB,qBAAqB,GACrB,wBAAwB,GACxB,2BAA2B,GAC3B,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"platform-release-manifest.d.ts","sourceRoot":"","sources":["../../src/lib/platform-release-manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAEzE,MAAM,MAAM,qBAAqB,GAAG,UAAU,GAAG,cAAc,CAAC;AAEhE,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,qBAAqB,EAAE,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;CACxC;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,EAAE,eAAe,EAAE,CAAC;CAC7B;AAED,MAAM,MAAM,kBAAkB,GAC1B,6BAA6B,GAC7B,0BAA0B,GAC1B,uBAAuB,GACvB,sBAAsB,GACtB,sBAAsB,GACtB,sBAAsB,GACtB,qBAAqB,GACrB,wBAAwB,GACxB,2BAA2B,GAC3B,sBAAsB,GACtB,kBAAkB,CAAC;AAEvB,qBAAa,+BAAgC,SAAQ,KAAK;IACxD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,MAAM,EAAE,MAAM;CAK3B;AAED,qBAAa,wBAAyB,SAAQ,UAAU;IACtD,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;gBAGhC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,kBAAkB,EACxB,QAAQ,GAAE,aAA4B;CAMzC;AAqBD,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,OAAO,GAAG,uBAAuB,CAoCpF;AAED,2FAA2F;AAC3F,wBAAgB,qBAAqB,CACnC,QAAQ,EAAE,uBAAuB,EACjC,MAAM,EAAE,qBAAqB,GAC5B,MAAM,GAAG,SAAS,CAOpB;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC5C,cAAc,EAAE,MAAM,CAAC;IACvB,QAAQ,EAAE,uBAAuB,CAAC;IAClC,MAAM,EAAE,qBAAqB,CAAC;CAC/B,GAAG,MAAM,GAAG,SAAS,CAIrB;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC5C,QAAQ,EAAE,uBAAuB,CAAC;IAClC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,qBAAqB,CAAC;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB,GAAG;IAAE,OAAO,EAAE,eAAe,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAsD9C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"platform-release-manifest.js","sourceRoot":"","sources":["../../src/lib/platform-release-manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAsB,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"platform-release-manifest.js","sourceRoot":"","sources":["../../src/lib/platform-release-manifest.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { type PlatformState, type ProcessRunner, type OpenAiCompatibleProviderOptions } from './platform-runtime.js';
|
|
2
|
+
import type { PlatformCommandResult } from './platform-lifecycle.js';
|
|
3
|
+
export declare const STABLE_SELFHOSTED_RELEASE = "0.16.0";
|
|
4
|
+
export declare const SELFHOSTED_SECRET_KEYS: readonly ["POSTGRES_PASSWORD", "SA_PASSWORD", "JWT_SECRET", "ADMIN_PASSWORD", "MCP_SERVICE_KEY"];
|
|
5
|
+
export interface SelfHostedPaths {
|
|
6
|
+
root: string;
|
|
7
|
+
composeFile: string;
|
|
8
|
+
envFile: string;
|
|
9
|
+
stateFile: string;
|
|
10
|
+
}
|
|
11
|
+
export interface SelfHostedPlan {
|
|
12
|
+
name: string;
|
|
13
|
+
version: string;
|
|
14
|
+
composePlan: 'config-pull-up';
|
|
15
|
+
paths: SelfHostedPaths;
|
|
16
|
+
projectName: string;
|
|
17
|
+
ports: {
|
|
18
|
+
api: number;
|
|
19
|
+
web: number;
|
|
20
|
+
mcp: number;
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
export interface SelfHostedReleaseContract {
|
|
24
|
+
version: string;
|
|
25
|
+
status: 'complete';
|
|
26
|
+
runtime: {
|
|
27
|
+
database: 'postgres' | 'mssql';
|
|
28
|
+
composeAsset: string;
|
|
29
|
+
compatibleProviderAdapter?: string;
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
export interface SelfHostedState {
|
|
33
|
+
edition: 'selfhosted';
|
|
34
|
+
name: string;
|
|
35
|
+
version: string;
|
|
36
|
+
ports: {
|
|
37
|
+
api: number;
|
|
38
|
+
web: number;
|
|
39
|
+
mcp: number;
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
export declare function resolveSelfHostedPaths(name: string, configDir?: string): SelfHostedPaths;
|
|
43
|
+
export declare function resolvePackagedSelfHostedAssetsDir(): string;
|
|
44
|
+
export declare function newestSelfHostedRelease(releasesJson: string): string;
|
|
45
|
+
export declare function resolveSelfHostedReleaseContract(releasesJson: string, version: string): SelfHostedReleaseContract;
|
|
46
|
+
/**
|
|
47
|
+
* Host port for the database container, derived from the API port so two instances on one host
|
|
48
|
+
* (which must already differ on the API port) never collide on the database either.
|
|
49
|
+
* 5000 → 15432, 15016 → 25448. Wraps into the registered/dynamic range if the sum overflows.
|
|
50
|
+
*/
|
|
51
|
+
export declare function defaultDbHostPort(apiPort: number): number;
|
|
52
|
+
export declare function buildSelfHostedEnvironment(plan: Pick<SelfHostedPlan, 'version' | 'ports'>, existingEnv?: Readonly<Record<string, string>>, randomBytes?: (size: number) => Uint8Array, openAiCompatible?: OpenAiCompatibleProviderOptions, adminPassword?: string, releaseContract?: SelfHostedReleaseContract): Record<string, string>;
|
|
53
|
+
export declare function assertSelfHostedComposeKit(composeText: string, database?: 'postgres' | 'mssql'): void;
|
|
54
|
+
export declare function selfHostedStackExists(name: string, configDir?: string, exists?: (path: string) => boolean): boolean;
|
|
55
|
+
export declare function planSelfHostedDown(name: string, configDir?: string, engine?: string): {
|
|
56
|
+
command: string;
|
|
57
|
+
args: string[];
|
|
58
|
+
paths: SelfHostedPaths;
|
|
59
|
+
};
|
|
60
|
+
export declare function planSelfHostedComposeInvocations(plan: SelfHostedPlan, engine?: string): Array<{
|
|
61
|
+
command: string;
|
|
62
|
+
args: string[];
|
|
63
|
+
}>;
|
|
64
|
+
export interface ApplySelfHostedInput {
|
|
65
|
+
name: string;
|
|
66
|
+
version?: string;
|
|
67
|
+
configDir?: string;
|
|
68
|
+
ports?: {
|
|
69
|
+
api?: number;
|
|
70
|
+
web?: number;
|
|
71
|
+
mcp?: number;
|
|
72
|
+
};
|
|
73
|
+
openAiCompatible?: OpenAiCompatibleProviderOptions;
|
|
74
|
+
adminPassword?: string;
|
|
75
|
+
}
|
|
76
|
+
export interface ApplySelfHostedDeps {
|
|
77
|
+
runner?: ProcessRunner;
|
|
78
|
+
randomBytes?: (size: number) => Uint8Array;
|
|
79
|
+
packagedAssetsDir?: string;
|
|
80
|
+
readFile?: (path: string) => string;
|
|
81
|
+
writeFile?: (path: string, contents: string, mode?: number) => void;
|
|
82
|
+
mkdir?: (path: string) => void;
|
|
83
|
+
exists?: (path: string) => boolean;
|
|
84
|
+
engine?: string;
|
|
85
|
+
}
|
|
86
|
+
export declare function applySelfHosted(input: ApplySelfHostedInput, deps?: ApplySelfHostedDeps): {
|
|
87
|
+
plan: SelfHostedPlan;
|
|
88
|
+
env: Record<string, string>;
|
|
89
|
+
state: SelfHostedState;
|
|
90
|
+
invocations: Array<{
|
|
91
|
+
command: string;
|
|
92
|
+
args: string[];
|
|
93
|
+
}>;
|
|
94
|
+
};
|
|
95
|
+
export declare function selfHostedToPlatformResult(applied: ReturnType<typeof applySelfHosted>, provider: PlatformState['provider'], now?: () => Date): PlatformCommandResult;
|
|
96
|
+
//# sourceMappingURL=selfhosted-lifecycle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selfhosted-lifecycle.d.ts","sourceRoot":"","sources":["../../src/lib/selfhosted-lifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,317 @@
|
|
|
1
|
+
import { chmodSync, existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { homedir } from 'node:os';
|
|
3
|
+
import { dirname, join } from 'node:path';
|
|
4
|
+
import { fileURLToPath } from 'node:url';
|
|
5
|
+
import { randomBytes as cryptoRandomBytes } from 'node:crypto';
|
|
6
|
+
import { generateAdminPassword, parseEnv, renderEnv, } from './platform-runtime.js';
|
|
7
|
+
export const STABLE_SELFHOSTED_RELEASE = '0.16.0';
|
|
8
|
+
export const SELFHOSTED_SECRET_KEYS = [
|
|
9
|
+
'POSTGRES_PASSWORD',
|
|
10
|
+
'SA_PASSWORD',
|
|
11
|
+
'JWT_SECRET',
|
|
12
|
+
'ADMIN_PASSWORD',
|
|
13
|
+
'MCP_SERVICE_KEY',
|
|
14
|
+
];
|
|
15
|
+
const FORBIDDEN_IMAGE_SUBSTRINGS = [
|
|
16
|
+
'knowz-api',
|
|
17
|
+
'knowz-worker',
|
|
18
|
+
'knowz-public-site',
|
|
19
|
+
'pull.knowz.io',
|
|
20
|
+
];
|
|
21
|
+
export function resolveSelfHostedPaths(name, configDir) {
|
|
22
|
+
const root = join(configDir ?? join(homedir(), '.knowz'), 'selfhosted', name);
|
|
23
|
+
return {
|
|
24
|
+
root,
|
|
25
|
+
composeFile: join(root, 'docker-compose.yml'),
|
|
26
|
+
envFile: join(root, '.env'),
|
|
27
|
+
stateFile: join(root, 'state.json'),
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export function resolvePackagedSelfHostedAssetsDir() {
|
|
31
|
+
return fileURLToPath(new URL('../../assets/selfhosted', import.meta.url));
|
|
32
|
+
}
|
|
33
|
+
export function newestSelfHostedRelease(releasesJson) {
|
|
34
|
+
const parsed = JSON.parse(releasesJson);
|
|
35
|
+
const version = parsed.releases?.find((release) => release.status !== 'incomplete')?.version?.trim();
|
|
36
|
+
if (!version)
|
|
37
|
+
throw new Error('deploy/selfhosted/releases.json has no releases[0].version');
|
|
38
|
+
return version;
|
|
39
|
+
}
|
|
40
|
+
function safePackagedAssetName(value, label) {
|
|
41
|
+
if (typeof value !== 'string' || !/^[a-zA-Z0-9][a-zA-Z0-9._-]*$/.test(value)) {
|
|
42
|
+
throw new Error(`Selfhosted release catalog has an invalid ${label}.`);
|
|
43
|
+
}
|
|
44
|
+
return value;
|
|
45
|
+
}
|
|
46
|
+
export function resolveSelfHostedReleaseContract(releasesJson, version) {
|
|
47
|
+
const parsed = JSON.parse(releasesJson);
|
|
48
|
+
const release = parsed.releases?.find((candidate) => candidate.version?.trim() === version);
|
|
49
|
+
if (!release) {
|
|
50
|
+
throw new Error(`Selfhosted release ${version} is not in this CLI's compatibility catalog. ` +
|
|
51
|
+
`Choose the recommended release ${STABLE_SELFHOSTED_RELEASE} or update @knowzai/cli.`);
|
|
52
|
+
}
|
|
53
|
+
if (release.status !== 'complete') {
|
|
54
|
+
throw new Error(`Selfhosted release ${version} is incomplete and cannot be started. ` +
|
|
55
|
+
`Choose the recommended release ${STABLE_SELFHOSTED_RELEASE}.`);
|
|
56
|
+
}
|
|
57
|
+
if (release.runtime?.database !== 'postgres' && release.runtime?.database !== 'mssql') {
|
|
58
|
+
throw new Error(`Selfhosted release ${version} has no supported database runtime contract.`);
|
|
59
|
+
}
|
|
60
|
+
return {
|
|
61
|
+
version,
|
|
62
|
+
status: 'complete',
|
|
63
|
+
runtime: {
|
|
64
|
+
database: release.runtime.database,
|
|
65
|
+
composeAsset: safePackagedAssetName(release.runtime.composeAsset, 'compose asset'),
|
|
66
|
+
...(release.runtime.compatibleProviderAdapter
|
|
67
|
+
? { compatibleProviderAdapter: safePackagedAssetName(release.runtime.compatibleProviderAdapter, 'compatible-provider adapter asset') }
|
|
68
|
+
: {}),
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
function generateSecret(randomBytes) {
|
|
73
|
+
return Buffer.from(randomBytes(32)).toString('base64url');
|
|
74
|
+
}
|
|
75
|
+
function present(value) {
|
|
76
|
+
return Boolean(value?.trim());
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Host port for the database container, derived from the API port so two instances on one host
|
|
80
|
+
* (which must already differ on the API port) never collide on the database either.
|
|
81
|
+
* 5000 → 15432, 15016 → 25448. Wraps into the registered/dynamic range if the sum overflows.
|
|
82
|
+
*/
|
|
83
|
+
export function defaultDbHostPort(apiPort) {
|
|
84
|
+
const candidate = apiPort + 10432;
|
|
85
|
+
if (candidate <= 65535)
|
|
86
|
+
return candidate;
|
|
87
|
+
return 1024 + ((candidate - 1024) % (65535 - 1024));
|
|
88
|
+
}
|
|
89
|
+
export function buildSelfHostedEnvironment(plan, existingEnv = {}, randomBytes = cryptoRandomBytes, openAiCompatible, adminPassword, releaseContract) {
|
|
90
|
+
const env = { ...existingEnv };
|
|
91
|
+
env.KNOWZ_SELFHOSTED_VERSION = plan.version;
|
|
92
|
+
env.API_PORT = String(plan.ports.api);
|
|
93
|
+
env.WEB_PORT = String(plan.ports.web);
|
|
94
|
+
env.MCP_PORT = String(plan.ports.mcp);
|
|
95
|
+
// The kit publishes the database on the host loopback as `${DB_PORT:-5432}`. The bare default
|
|
96
|
+
// collides with any local Postgres or a second Knowz instance, and a failed host bind leaves the
|
|
97
|
+
// db container with no network at all (the API then cannot resolve `db`). Derive a per-instance
|
|
98
|
+
// port from the API port on first apply and keep it stable across re-apply.
|
|
99
|
+
if (!present(env.DB_PORT))
|
|
100
|
+
env.DB_PORT = String(defaultDbHostPort(plan.ports.api));
|
|
101
|
+
const existingUser = env.ADMIN_USERNAME?.trim();
|
|
102
|
+
env.ADMIN_USERNAME = existingUser && existingUser.length > 0 ? existingUser : 'admin';
|
|
103
|
+
const hadAdminPassword = present(env.ADMIN_PASSWORD);
|
|
104
|
+
const explicitAdminPassword = adminPassword?.trim();
|
|
105
|
+
if (explicitAdminPassword)
|
|
106
|
+
env.ADMIN_PASSWORD = explicitAdminPassword;
|
|
107
|
+
for (const key of SELFHOSTED_SECRET_KEYS) {
|
|
108
|
+
if (!present(env[key])) {
|
|
109
|
+
env[key] = key === 'POSTGRES_PASSWORD' || key === 'SA_PASSWORD' || key === 'ADMIN_PASSWORD'
|
|
110
|
+
? generateAdminPassword(randomBytes)
|
|
111
|
+
: generateSecret(randomBytes);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
if (explicitAdminPassword) {
|
|
115
|
+
env.ADMIN_PASSWORD_REQUIRES_CHANGE = 'false';
|
|
116
|
+
}
|
|
117
|
+
else if (!hadAdminPassword) {
|
|
118
|
+
env.ADMIN_PASSWORD_REQUIRES_CHANGE = 'true';
|
|
119
|
+
}
|
|
120
|
+
else if (env.ADMIN_PASSWORD_REQUIRES_CHANGE !== 'true') {
|
|
121
|
+
// Backward-compatible upgrades: an existing password with no provenance
|
|
122
|
+
// marker was operator-managed and must not unexpectedly lock the account.
|
|
123
|
+
env.ADMIN_PASSWORD_REQUIRES_CHANGE = 'false';
|
|
124
|
+
}
|
|
125
|
+
if (openAiCompatible) {
|
|
126
|
+
const endpoint = openAiCompatible.endpoint?.trim();
|
|
127
|
+
if (endpoint)
|
|
128
|
+
env.OPENAI_COMPAT_ENDPOINT = containerReachableEndpoint(endpoint);
|
|
129
|
+
const apiKey = openAiCompatible.apiKey?.trim();
|
|
130
|
+
if (apiKey)
|
|
131
|
+
env.OPENAI_COMPAT_APIKEY = apiKey;
|
|
132
|
+
const chatModel = openAiCompatible.chatModel?.trim();
|
|
133
|
+
if (chatModel)
|
|
134
|
+
env.OPENAI_COMPAT_CHAT_MODEL = chatModel;
|
|
135
|
+
const embeddingModel = openAiCompatible.embeddingModel?.trim();
|
|
136
|
+
if (embeddingModel) {
|
|
137
|
+
env.OPENAI_COMPAT_EMBEDDING_MODEL = embeddingModel;
|
|
138
|
+
env.EMBEDDING_MODEL_NAME = embeddingModel;
|
|
139
|
+
}
|
|
140
|
+
if (openAiCompatible.embeddingDimensions !== undefined) {
|
|
141
|
+
env.EMBEDDING_DIMENSIONS = String(openAiCompatible.embeddingDimensions);
|
|
142
|
+
}
|
|
143
|
+
if (releaseContract?.runtime.database === 'mssql') {
|
|
144
|
+
env.AZURE_OPENAI_ENDPOINT = 'http://lmstudio-bridge:12345';
|
|
145
|
+
env.AZURE_OPENAI_APIKEY = env.OPENAI_COMPAT_APIKEY?.trim() || 'local-compatible-adapter';
|
|
146
|
+
if (env.OPENAI_COMPAT_CHAT_MODEL?.trim()) {
|
|
147
|
+
env.AZURE_OPENAI_DEPLOYMENT = env.OPENAI_COMPAT_CHAT_MODEL;
|
|
148
|
+
}
|
|
149
|
+
if (env.OPENAI_COMPAT_EMBEDDING_MODEL?.trim()) {
|
|
150
|
+
env.AZURE_OPENAI_EMBEDDING = env.OPENAI_COMPAT_EMBEDDING_MODEL;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return env;
|
|
155
|
+
}
|
|
156
|
+
function containerReachableEndpoint(endpoint) {
|
|
157
|
+
const url = new URL(endpoint);
|
|
158
|
+
if (url.hostname === 'localhost' || url.hostname === '127.0.0.1' || url.hostname === '[::1]') {
|
|
159
|
+
url.hostname = 'host.docker.internal';
|
|
160
|
+
}
|
|
161
|
+
return url.toString().replace(/\/$/, '');
|
|
162
|
+
}
|
|
163
|
+
export function assertSelfHostedComposeKit(composeText, database = 'postgres') {
|
|
164
|
+
for (const needle of FORBIDDEN_IMAGE_SUBSTRINGS) {
|
|
165
|
+
if (composeText.includes(needle)) {
|
|
166
|
+
throw new Error(`Selfhosted pull kit must not mention '${needle}' (portable/private IP).`);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
for (const image of ['knowz-selfhosted-api', 'knowz-selfhosted-web', 'knowz-selfhosted-mcp']) {
|
|
170
|
+
if (!composeText.includes(`ghcr.io/knowz-io/${image}:`)) {
|
|
171
|
+
throw new Error(`Selfhosted pull kit is missing public image ${image}.`);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
if (/MCP_SERVICE_KEY:-/.test(composeText)) {
|
|
175
|
+
throw new Error('Selfhosted pull kit must be fail-closed (no default MCP secret).');
|
|
176
|
+
}
|
|
177
|
+
if (database === 'postgres') {
|
|
178
|
+
if (/POSTGRES_PASSWORD:-/.test(composeText)) {
|
|
179
|
+
throw new Error('Selfhosted Postgres kit must be fail-closed (no default database secret).');
|
|
180
|
+
}
|
|
181
|
+
if (!composeText.includes('pgvector/pgvector') || composeText.includes('mssql') || composeText.includes('SA_PASSWORD')) {
|
|
182
|
+
throw new Error('Selfhosted Postgres kit must use Postgres/pgvector, not SQL Server Express.');
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
else {
|
|
186
|
+
if (/SA_PASSWORD:-/.test(composeText)) {
|
|
187
|
+
throw new Error('Selfhosted SQL kit must be fail-closed (no default database secret).');
|
|
188
|
+
}
|
|
189
|
+
if (!composeText.includes('mcr.microsoft.com/mssql') || !composeText.includes('SA_PASSWORD')) {
|
|
190
|
+
throw new Error('Selfhosted SQL release kit must use SQL Server and SA_PASSWORD.');
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
export function selfHostedStackExists(name, configDir, exists = existsSync) {
|
|
195
|
+
return exists(resolveSelfHostedPaths(name, configDir).stateFile);
|
|
196
|
+
}
|
|
197
|
+
export function planSelfHostedDown(name, configDir, engine = 'docker') {
|
|
198
|
+
const paths = resolveSelfHostedPaths(name, configDir);
|
|
199
|
+
return {
|
|
200
|
+
command: engine,
|
|
201
|
+
args: [
|
|
202
|
+
'compose',
|
|
203
|
+
'--project-name',
|
|
204
|
+
`knowz-selfhosted-${name}`,
|
|
205
|
+
'--file',
|
|
206
|
+
paths.composeFile,
|
|
207
|
+
'--env-file',
|
|
208
|
+
paths.envFile,
|
|
209
|
+
'down',
|
|
210
|
+
],
|
|
211
|
+
paths,
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
export function planSelfHostedComposeInvocations(plan, engine = 'docker') {
|
|
215
|
+
const prefix = [
|
|
216
|
+
'compose',
|
|
217
|
+
'--project-name',
|
|
218
|
+
plan.projectName,
|
|
219
|
+
'--file',
|
|
220
|
+
plan.paths.composeFile,
|
|
221
|
+
'--env-file',
|
|
222
|
+
plan.paths.envFile,
|
|
223
|
+
];
|
|
224
|
+
return [
|
|
225
|
+
{ command: engine, args: [...prefix, 'config'] },
|
|
226
|
+
{ command: engine, args: [...prefix, 'pull'] },
|
|
227
|
+
{ command: engine, args: [...prefix, 'up', '--detach', '--remove-orphans', '--wait'] },
|
|
228
|
+
];
|
|
229
|
+
}
|
|
230
|
+
function defaultWriteFile(path, contents, mode) {
|
|
231
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
232
|
+
writeFileSync(path, contents, { encoding: 'utf8' });
|
|
233
|
+
if (mode !== undefined)
|
|
234
|
+
chmodSync(path, mode);
|
|
235
|
+
}
|
|
236
|
+
export function applySelfHosted(input, deps = {}) {
|
|
237
|
+
const version = input.version?.trim() || STABLE_SELFHOSTED_RELEASE;
|
|
238
|
+
const paths = resolveSelfHostedPaths(input.name, input.configDir);
|
|
239
|
+
const plan = {
|
|
240
|
+
name: input.name,
|
|
241
|
+
version,
|
|
242
|
+
composePlan: 'config-pull-up',
|
|
243
|
+
paths,
|
|
244
|
+
projectName: `knowz-selfhosted-${input.name}`,
|
|
245
|
+
ports: {
|
|
246
|
+
api: input.ports?.api ?? 5000,
|
|
247
|
+
web: input.ports?.web ?? 3000,
|
|
248
|
+
mcp: input.ports?.mcp ?? 3001,
|
|
249
|
+
},
|
|
250
|
+
};
|
|
251
|
+
const assetsDir = deps.packagedAssetsDir ?? resolvePackagedSelfHostedAssetsDir();
|
|
252
|
+
const readFile = deps.readFile ?? ((path) => readFileSync(path, 'utf8'));
|
|
253
|
+
const writeFile = deps.writeFile ?? defaultWriteFile;
|
|
254
|
+
const mkdir = deps.mkdir ?? ((path) => mkdirSync(path, { recursive: true }));
|
|
255
|
+
const exists = deps.exists ?? existsSync;
|
|
256
|
+
const releaseContract = resolveSelfHostedReleaseContract(readFile(join(assetsDir, 'releases.json')), version);
|
|
257
|
+
const composeText = readFile(join(assetsDir, releaseContract.runtime.composeAsset));
|
|
258
|
+
assertSelfHostedComposeKit(composeText, releaseContract.runtime.database);
|
|
259
|
+
mkdir(paths.root);
|
|
260
|
+
writeFile(paths.composeFile, composeText);
|
|
261
|
+
if (releaseContract.runtime.compatibleProviderAdapter) {
|
|
262
|
+
const adapterName = releaseContract.runtime.compatibleProviderAdapter;
|
|
263
|
+
writeFile(join(paths.root, adapterName), readFile(join(assetsDir, adapterName)));
|
|
264
|
+
}
|
|
265
|
+
const existingEnv = exists(paths.envFile) ? parseEnv(readFile(paths.envFile)) : {};
|
|
266
|
+
const env = buildSelfHostedEnvironment(plan, existingEnv, deps.randomBytes, input.openAiCompatible, input.adminPassword, releaseContract);
|
|
267
|
+
writeFile(paths.envFile, renderEnv(env), 0o600);
|
|
268
|
+
const state = {
|
|
269
|
+
edition: 'selfhosted',
|
|
270
|
+
name: plan.name,
|
|
271
|
+
version: plan.version,
|
|
272
|
+
ports: plan.ports,
|
|
273
|
+
};
|
|
274
|
+
writeFile(paths.stateFile, `${JSON.stringify(state, null, 2)}\n`);
|
|
275
|
+
const invocations = planSelfHostedComposeInvocations(plan, deps.engine ?? 'docker');
|
|
276
|
+
if (deps.runner) {
|
|
277
|
+
for (const step of invocations) {
|
|
278
|
+
deps.runner(step.command, step.args, { cwd: paths.root, shell: false });
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
return { plan, env, state, invocations };
|
|
282
|
+
}
|
|
283
|
+
export function selfHostedToPlatformResult(applied, provider, now = () => new Date()) {
|
|
284
|
+
const { plan, state } = applied;
|
|
285
|
+
const urls = {
|
|
286
|
+
api: `http://localhost:${plan.ports.api}`,
|
|
287
|
+
web: `http://localhost:${plan.ports.web}`,
|
|
288
|
+
mcp: `http://localhost:${plan.ports.mcp}`,
|
|
289
|
+
publicSite: `http://localhost:${plan.ports.web}`,
|
|
290
|
+
};
|
|
291
|
+
return {
|
|
292
|
+
paths: {
|
|
293
|
+
runtimeDir: plan.paths.root,
|
|
294
|
+
composeFile: plan.paths.composeFile,
|
|
295
|
+
envFile: plan.paths.envFile,
|
|
296
|
+
stateFile: plan.paths.stateFile,
|
|
297
|
+
postgresInitDir: plan.paths.root,
|
|
298
|
+
},
|
|
299
|
+
state: {
|
|
300
|
+
schemaVersion: 1,
|
|
301
|
+
name: state.name,
|
|
302
|
+
version: state.version,
|
|
303
|
+
provider,
|
|
304
|
+
storage: 'filesystem',
|
|
305
|
+
imageFlavor: '',
|
|
306
|
+
axes: { ai: undefined, docIntelligence: 'None', vision: 'None', transcription: 'None' },
|
|
307
|
+
ports: { api: plan.ports.api, web: plan.ports.web, mcp: plan.ports.mcp, publicSite: plan.ports.web },
|
|
308
|
+
serviceUrls: urls,
|
|
309
|
+
components: { mcp: true, publicSite: false },
|
|
310
|
+
imageMode: 'pull',
|
|
311
|
+
updatedAt: now().toISOString(),
|
|
312
|
+
},
|
|
313
|
+
output: `Using public selfhosted images (${state.version}). Portable platform requires --edition=portable and an entitled key.`,
|
|
314
|
+
processResults: [],
|
|
315
|
+
};
|
|
316
|
+
}
|
|
317
|
+
//# sourceMappingURL=selfhosted-lifecycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selfhosted-lifecycle.js","sourceRoot":"","sources":["../../src/lib/selfhosted-lifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type CredentialStore } from '@knowzai/core';
|
|
2
|
+
import { runFrontDoor } from './platform-frontdoor.js';
|
|
2
3
|
import { type PlatformState } from './platform-runtime.js';
|
|
3
4
|
import type { SetupLicenseStatus } from './setup-page.js';
|
|
4
5
|
import { createSetupApp, mintSetupToken, type SetupCompletion, type StartedSetupServer } from './setup-server.js';
|
|
@@ -30,6 +31,7 @@ export interface SetupConsoleOptions {
|
|
|
30
31
|
name: string;
|
|
31
32
|
email: string;
|
|
32
33
|
};
|
|
34
|
+
edition?: 'selfhosted' | 'portable';
|
|
33
35
|
}
|
|
34
36
|
export interface SetupConsoleDependencies {
|
|
35
37
|
mintToken?: typeof mintSetupToken;
|
|
@@ -37,6 +39,7 @@ export interface SetupConsoleDependencies {
|
|
|
37
39
|
startServer?: (app: ReturnType<typeof createSetupApp>) => Promise<StartedSetupServer>;
|
|
38
40
|
openBrowser?: (url: string) => void;
|
|
39
41
|
licenseStatus?: () => Promise<SetupLicenseStatus>;
|
|
42
|
+
runFrontDoor?: typeof runFrontDoor;
|
|
40
43
|
}
|
|
41
44
|
export declare function fetchSetupLicenseStatus(apiUrl: string, mothershipUrl: string, fetcher?: typeof globalThis.fetch): Promise<SetupLicenseStatus>;
|
|
42
45
|
/** Host one browser session over the same `runFrontDoor` core used by terminal `knowz up`. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup-console.d.ts","sourceRoot":"","sources":["../../src/lib/setup-console.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"setup-console.d.ts","sourceRoot":"","sources":["../../src/lib/setup-console.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,KAAK,eAAe,EAAE,MAAM,eAAe,CAAC;AAIrE,OAAO,EAAqD,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAI1G,OAAO,EAAqD,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC9G,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAG1D,OAAO,EACL,cAAc,EACd,cAAc,EAEd,KAAK,eAAe,EAEpB,KAAK,kBAAkB,EACxB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,eAAe,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC;IAClD,KAAK,EAAE,OAAO,CAAC;IACf,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IACrC,KAAK,CAAC,EAAE,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/E,UAAU,CAAC,EAAE,OAAO,CAAC;QAAE,GAAG,EAAE,OAAO,CAAC;QAAC,UAAU,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;IAC5D,SAAS,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,WAAW,CAAC;IAC3C,OAAO,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1C,OAAO,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;CACrC;AAED,MAAM,WAAW,wBAAwB;IACvC,SAAS,CAAC,EAAE,OAAO,cAAc,CAAC;IAClC,SAAS,CAAC,EAAE,OAAO,cAAc,CAAC;IAClC,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,UAAU,CAAC,OAAO,cAAc,CAAC,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACtF,WAAW,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAClD,YAAY,CAAC,EAAE,OAAO,YAAY,CAAC;CACpC;AAQD,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,MAAM,EACd,aAAa,EAAE,MAAM,EACrB,OAAO,GAAE,OAAO,UAAU,CAAC,KAAwB,GAClD,OAAO,CAAC,kBAAkB,CAAC,CAe7B;AAsDD,8FAA8F;AAC9F,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,mBAAmB,EAC5B,YAAY,GAAE,wBAA6B,GAC1C,OAAO,CAAC,eAAe,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC,CA+I5C"}
|
|
@@ -9,7 +9,13 @@ import { discoverKnowzCloudModels, probeModel, probeProvider } from './platform-
|
|
|
9
9
|
import { runDeviceCodeFlow } from './activate.js';
|
|
10
10
|
import { nodeProcessRunner, parseEnv, resolvePlatformPaths } from './platform-runtime.js';
|
|
11
11
|
import { deriveSetupFormSchema } from './setup-plan.js';
|
|
12
|
+
import { resolveSelfHostedPaths, STABLE_SELFHOSTED_RELEASE } from './selfhosted-lifecycle.js';
|
|
12
13
|
import { createSetupApp, mintSetupToken, startSetupServer, } from './setup-server.js';
|
|
14
|
+
function asRecord(value) {
|
|
15
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value)
|
|
16
|
+
? value
|
|
17
|
+
: undefined;
|
|
18
|
+
}
|
|
13
19
|
export async function fetchSetupLicenseStatus(apiUrl, mothershipUrl, fetcher = globalThis.fetch) {
|
|
14
20
|
const response = await fetcher(`${apiUrl.replace(/\/$/, '')}/api/info`, {
|
|
15
21
|
headers: { accept: 'application/json' },
|
|
@@ -87,7 +93,9 @@ export async function launchSetupConsole(options, dependencies = {}) {
|
|
|
87
93
|
const createApp = dependencies.createApp ?? createSetupApp;
|
|
88
94
|
const startServer = dependencies.startServer ?? startSetupServer;
|
|
89
95
|
const browser = dependencies.openBrowser ?? openBrowser;
|
|
96
|
+
const run = dependencies.runFrontDoor ?? runFrontDoor;
|
|
90
97
|
const name = options.name ?? 'knowz';
|
|
98
|
+
const edition = options.edition === 'portable' ? 'portable' : 'selfhosted';
|
|
91
99
|
const detectedState = currentState(name, options.configDir);
|
|
92
100
|
const ports = {
|
|
93
101
|
api: options.ports?.api ?? detectedState?.ports?.api ?? 5000,
|
|
@@ -102,7 +110,8 @@ export async function launchSetupConsole(options, dependencies = {}) {
|
|
|
102
110
|
const planDefaults = {
|
|
103
111
|
name,
|
|
104
112
|
configDir: options.configDir,
|
|
105
|
-
version: options.version ?? detectedState?.version ?? DEFAULT_PORTABLE_VERSION,
|
|
113
|
+
version: options.version ?? detectedState?.version ?? (edition === 'selfhosted' ? STABLE_SELFHOSTED_RELEASE : DEFAULT_PORTABLE_VERSION),
|
|
114
|
+
edition,
|
|
106
115
|
provider: options.provider ?? detectedState?.provider,
|
|
107
116
|
ports,
|
|
108
117
|
storage: detectedState?.storage,
|
|
@@ -131,7 +140,9 @@ export async function launchSetupConsole(options, dependencies = {}) {
|
|
|
131
140
|
input.versionExplicit =
|
|
132
141
|
options.versionExplicit === true ||
|
|
133
142
|
input.base.version !== planDefaults.version;
|
|
134
|
-
|
|
143
|
+
const targetPaths = resolveSelfHostedPaths(input.base.name, input.base.configDir);
|
|
144
|
+
const hadSelfHostedEnvironment = existsSync(targetPaths.envFile);
|
|
145
|
+
const result = await run(input, createPlatformFrontDoorDeps({
|
|
135
146
|
store: options.store,
|
|
136
147
|
cwd: options.cwd,
|
|
137
148
|
env: options.env,
|
|
@@ -141,6 +152,25 @@ export async function launchSetupConsole(options, dependencies = {}) {
|
|
|
141
152
|
validateProvider: true,
|
|
142
153
|
emit: emitProgress,
|
|
143
154
|
}));
|
|
155
|
+
if (input.edition !== 'portable' &&
|
|
156
|
+
!hadSelfHostedEnvironment &&
|
|
157
|
+
!input.superAdminPassphrase?.trim() &&
|
|
158
|
+
existsSync(targetPaths.envFile)) {
|
|
159
|
+
const env = parseEnv(readFileSync(targetPaths.envFile, 'utf8'));
|
|
160
|
+
const username = env.ADMIN_USERNAME?.trim();
|
|
161
|
+
const password = env.ADMIN_PASSWORD;
|
|
162
|
+
if (env.ADMIN_PASSWORD_REQUIRES_CHANGE === 'true' && username && password) {
|
|
163
|
+
registerSecret(password);
|
|
164
|
+
const record = asRecord(result);
|
|
165
|
+
if (record) {
|
|
166
|
+
return {
|
|
167
|
+
...record,
|
|
168
|
+
oneTimeCredential: { username, password, generated: true },
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
return result;
|
|
144
174
|
},
|
|
145
175
|
probeProvider: (selection) => probeProvider(selection),
|
|
146
176
|
probeModel: (selection) => probeModel(selection),
|
|
@@ -165,7 +195,9 @@ export async function launchSetupConsole(options, dependencies = {}) {
|
|
|
165
195
|
mcpUrl: `http://localhost:${ports.mcp}`,
|
|
166
196
|
publicSiteUrl: components.publicSite ? `http://localhost:${ports.publicSite}` : undefined,
|
|
167
197
|
},
|
|
168
|
-
credentialFilePath:
|
|
198
|
+
credentialFilePath: edition === 'selfhosted'
|
|
199
|
+
? resolveSelfHostedPaths(name, options.configDir).envFile
|
|
200
|
+
: resolvePlatformPaths(name, options.configDir).envFile,
|
|
169
201
|
licenseStatus: dependencies.licenseStatus ?? (() => fetchSetupLicenseStatus(`http://localhost:${ports.api}`, mothershipUrl)),
|
|
170
202
|
};
|
|
171
203
|
const app = createApp(appDeps);
|