@syedar/seedar-cli 1.2.0-test.12 → 1.2.0-test.14
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 +17 -19
- package/dist/cli.d.ts +21 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +124 -42
- package/dist/cli.js.map +1 -1
- package/dist/commands/lifecycle.d.ts.map +1 -1
- package/dist/commands/lifecycle.js +4 -2
- package/dist/commands/lifecycle.js.map +1 -1
- package/dist/commands/logs.d.ts +1 -0
- package/dist/commands/logs.d.ts.map +1 -1
- package/dist/commands/logs.js +9 -5
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +13 -0
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/uninstall.d.ts.map +1 -1
- package/dist/commands/uninstall.js +4 -1
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/index.js +1 -5
- package/dist/index.js.map +1 -1
- package/dist/install/config.d.ts.map +1 -1
- package/dist/install/config.js +1 -0
- package/dist/install/config.js.map +1 -1
- package/dist/install/flow.d.ts +1 -0
- package/dist/install/flow.d.ts.map +1 -1
- package/dist/install/flow.js +11 -4
- package/dist/install/flow.js.map +1 -1
- package/dist/install/output.d.ts.map +1 -1
- package/dist/install/output.js +1 -0
- package/dist/install/output.js.map +1 -1
- package/dist/install/prompts.d.ts.map +1 -1
- package/dist/install/prompts.js +53 -4
- package/dist/install/prompts.js.map +1 -1
- package/dist/runtime/index.d.ts +1 -1
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +67 -10
- package/dist/runtime/index.js.map +1 -1
- package/dist/shared/constants.d.ts +10 -4
- package/dist/shared/constants.d.ts.map +1 -1
- package/dist/shared/constants.js +41 -1
- package/dist/shared/constants.js.map +1 -1
- package/dist/shared/types.d.ts +4 -1
- package/dist/shared/types.d.ts.map +1 -1
- package/package.json +3 -1
- package/dist/commands/help.d.ts +0 -2
- package/dist/commands/help.d.ts.map +0 -1
- package/dist/commands/help.js +0 -17
- package/dist/commands/help.js.map +0 -1
- package/dist/shared/args.d.ts +0 -8
- package/dist/shared/args.d.ts.map +0 -1
- package/dist/shared/args.js +0 -40
- package/dist/shared/args.js.map +0 -1
package/dist/install/flow.js
CHANGED
|
@@ -7,6 +7,7 @@ import { autoShiftConflictPort, findPortKeyByPort, getPortLabel, parseComposePor
|
|
|
7
7
|
import { printInstallDetail, printInstallStage, printInstallSuccess } from "./output.js";
|
|
8
8
|
export async function runInstallFlow(layout, env) {
|
|
9
9
|
await startMysqlWithRetry(layout, env);
|
|
10
|
+
await startPostgres(layout);
|
|
10
11
|
printInstallStage("执行数据库迁移");
|
|
11
12
|
await runDockerComposeOrThrow(layout, ["run", "--rm", "migrate"], {
|
|
12
13
|
stdio: "inherit",
|
|
@@ -14,7 +15,7 @@ export async function runInstallFlow(layout, env) {
|
|
|
14
15
|
await startServerAndWebWithRetry(layout, env);
|
|
15
16
|
}
|
|
16
17
|
export async function pullInstallImages(layout) {
|
|
17
|
-
await runDockerComposeOrThrow(layout, ["pull", "mysql", "server", "web"], {
|
|
18
|
+
await runDockerComposeOrThrow(layout, ["pull", "mysql", "postgres", "server", "web"], {
|
|
18
19
|
stdio: "inherit",
|
|
19
20
|
});
|
|
20
21
|
}
|
|
@@ -44,6 +45,12 @@ export async function startMysqlWithRetry(layout, env) {
|
|
|
44
45
|
}
|
|
45
46
|
}
|
|
46
47
|
}
|
|
48
|
+
export async function startPostgres(layout) {
|
|
49
|
+
printInstallStage("启动 PostgreSQL");
|
|
50
|
+
await runComposeCommandWithCapturedOutput(layout, ["up", "-d", "postgres"], "docker compose up -d postgres 执行失败");
|
|
51
|
+
await waitForServiceHealthy(layout, "postgres");
|
|
52
|
+
printInstallSuccess("PostgreSQL 容器已启动");
|
|
53
|
+
}
|
|
47
54
|
export async function startServerAndWebWithRetry(layout, env) {
|
|
48
55
|
while (true) {
|
|
49
56
|
printInstallStage("启动 Server 和 Web");
|
|
@@ -76,7 +83,7 @@ export async function runInstallFlowWithValidatedConfig(layout, env) {
|
|
|
76
83
|
printInstallDetail(`目标版本:${env.SEEDAR_VERSION}`);
|
|
77
84
|
printInstallDetail(`安装目录:${layout.installRoot}`);
|
|
78
85
|
printInstallStage("拉取镜像");
|
|
79
|
-
printInstallDetail("开始拉取 mysql、server、web 镜像");
|
|
86
|
+
printInstallDetail("开始拉取 mysql、postgres、server、web 镜像");
|
|
80
87
|
await pullInstallImages(layout);
|
|
81
88
|
printInstallSuccess("镜像拉取完成");
|
|
82
89
|
await runInstallFlow(layout, env);
|
|
@@ -90,7 +97,7 @@ export async function startRuntimeServices(layout, env) {
|
|
|
90
97
|
}
|
|
91
98
|
export async function stopRuntimeServices(layout) {
|
|
92
99
|
printInstallStage("停止服务");
|
|
93
|
-
const result = await runDockerCompose(layout, ["stop", "mysql", "server", "web"]);
|
|
100
|
+
const result = await runDockerCompose(layout, ["stop", "mysql", "postgres", "server", "web"]);
|
|
94
101
|
const detail = [result.stdout.trim(), result.stderr.trim()].filter(Boolean).join("\n");
|
|
95
102
|
if (detail) {
|
|
96
103
|
console.log(detail);
|
|
@@ -98,6 +105,6 @@ export async function stopRuntimeServices(layout) {
|
|
|
98
105
|
if (result.code !== 0) {
|
|
99
106
|
throw new Error(detail || "停止服务失败");
|
|
100
107
|
}
|
|
101
|
-
printInstallSuccess("mysql、server、web 已停止");
|
|
108
|
+
printInstallSuccess("mysql、postgres、server、web 已停止");
|
|
102
109
|
}
|
|
103
110
|
//# sourceMappingURL=flow.js.map
|
package/dist/install/flow.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"flow.js","sourceRoot":"","sources":["../../src/install/flow.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,mCAAmC,EAAE,MAAM,sBAAsB,CAAC;AACnG,OAAO,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,sBAAsB,CAAC;AACjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,YAAY,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAC9G,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAEzF,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAqB,EAAE,GAAc;IACxE,MAAM,mBAAmB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"flow.js","sourceRoot":"","sources":["../../src/install/flow.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/install/output.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,SAAS,GAAG,IAAI,
|
|
1
|
+
{"version":3,"file":"output.d.ts","sourceRoot":"","sources":["../../src/install/output.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAGnE,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,SAAS,GAAG,IAAI,CAQ/E;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAErD;AAED,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAExD;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEzD;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEtD"}
|
package/dist/install/output.js
CHANGED
|
@@ -5,6 +5,7 @@ export function printInstallSummary(layout, env) {
|
|
|
5
5
|
console.log(`Web: http://localhost:${env.WEB_PORT}`);
|
|
6
6
|
console.log(`Server: http://localhost:${env.SERVER_PORT}`);
|
|
7
7
|
console.log(`MySQL: localhost:${env.MYSQL_PORT}`);
|
|
8
|
+
console.log(`Checkpoint PG: postgres:5432/postgres`);
|
|
8
9
|
console.log(`版本: ${env.SEEDAR_VERSION}`);
|
|
9
10
|
}
|
|
10
11
|
export function printInstallStage(title) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/install/output.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAErF,MAAM,UAAU,mBAAmB,CAAC,MAAqB,EAAE,GAAc;IACvE,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,yBAAyB,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,4BAA4B,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;AACnC,CAAC"}
|
|
1
|
+
{"version":3,"file":"output.js","sourceRoot":"","sources":["../../src/install/output.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAErF,MAAM,UAAU,mBAAmB,CAAC,MAAqB,EAAE,GAAc;IACvE,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,SAAS,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IAC3C,OAAO,CAAC,GAAG,CAAC,yBAAyB,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,4BAA4B,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,oBAAoB,GAAG,CAAC,UAAU,EAAE,CAAC,CAAC;IAClD,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAa;IAC7C,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;AAClC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,OAAe;IAChD,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAe;IACjD,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC;AACnC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/install/prompts.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../src/install/prompts.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAkKjG,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,aAAa,EACrB,UAAU,EAAE,MAAM,GAAG,SAAS,EAC9B,KAAK,EAAE,QAAQ,GACd,OAAO,CAAC,SAAS,CAAC,CAgEpB;AAED,wBAAsB,2BAA2B,CAC/C,GAAG,EAAE,SAAS,EACd,MAAM,EAAE,kBAAkB,EAAE,EAC5B,KAAK,EAAE,QAAQ,GACd,OAAO,CAAC,SAAS,CAAC,CAYpB"}
|
package/dist/install/prompts.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { randomBytes } from "node:crypto";
|
|
2
2
|
import { readFile } from "node:fs/promises";
|
|
3
3
|
import { input } from "@inquirer/prompts";
|
|
4
|
-
import { DEFAULT_DB_NAME, DEFAULT_DB_USER, DEFAULT_PORTS, DEFAULT_VERSION, REQUIRED_ENV_KEYS, } from "../shared/constants.js";
|
|
4
|
+
import { DEFAULT_DB_NAME, DEFAULT_DB_USER, DEFAULT_PORTS, DEFAULT_VERSION, buildCheckpointPgUrl, REQUIRED_ENV_KEYS, } from "../shared/constants.js";
|
|
5
5
|
import { getAvailablePort } from "../docker/ports.js";
|
|
6
|
-
import { buildDefaultEnv, parseEnvFile, pathExists } from "../runtime/index.js";
|
|
6
|
+
import { buildDefaultEnv, extractCheckpointPgPassword, parseEnvFile, pathExists, } from "../runtime/index.js";
|
|
7
7
|
const PROMPTABLE_INSTALL_FIELDS = [
|
|
8
8
|
"MYSQL_PORT",
|
|
9
9
|
"SERVER_PORT",
|
|
@@ -12,11 +12,40 @@ const PROMPTABLE_INSTALL_FIELDS = [
|
|
|
12
12
|
"DB_USERNAME",
|
|
13
13
|
"DB_PASSWORD",
|
|
14
14
|
"MYSQL_ROOT_PASSWORD",
|
|
15
|
+
"AI_CHECKPOINT_PG_PASSWORD",
|
|
15
16
|
"AES_SECRET",
|
|
16
17
|
];
|
|
17
18
|
function createSecret(bytes = 24) {
|
|
18
19
|
return randomBytes(bytes).toString("hex");
|
|
19
20
|
}
|
|
21
|
+
function normalizeCheckpointRuntimeConfig(env) {
|
|
22
|
+
const checkpointPassword = env.AI_CHECKPOINT_PG_PASSWORD.trim();
|
|
23
|
+
const checkpointUrl = env.AI_CHECKPOINT_PG_URL.trim();
|
|
24
|
+
if (checkpointPassword) {
|
|
25
|
+
return {
|
|
26
|
+
...env,
|
|
27
|
+
AI_CHECKPOINT_PG_PASSWORD: checkpointPassword,
|
|
28
|
+
AI_CHECKPOINT_PG_URL: buildCheckpointPgUrl(checkpointPassword),
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
if (checkpointUrl) {
|
|
32
|
+
const derivedPassword = extractCheckpointPgPassword(checkpointUrl);
|
|
33
|
+
if (!derivedPassword) {
|
|
34
|
+
throw new Error("AI_CHECKPOINT_PG_URL 无法解析密码");
|
|
35
|
+
}
|
|
36
|
+
return {
|
|
37
|
+
...env,
|
|
38
|
+
AI_CHECKPOINT_PG_PASSWORD: derivedPassword,
|
|
39
|
+
AI_CHECKPOINT_PG_URL: buildCheckpointPgUrl(derivedPassword),
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
const generatedPassword = createSecret(16);
|
|
43
|
+
return {
|
|
44
|
+
...env,
|
|
45
|
+
AI_CHECKPOINT_PG_PASSWORD: generatedPassword,
|
|
46
|
+
AI_CHECKPOINT_PG_URL: buildCheckpointPgUrl(generatedPassword),
|
|
47
|
+
};
|
|
48
|
+
}
|
|
20
49
|
async function askInput(label, defaultValue) {
|
|
21
50
|
const answer = (await input({
|
|
22
51
|
message: label,
|
|
@@ -90,6 +119,12 @@ async function promptInstallFields(env, fields) {
|
|
|
90
119
|
case "MYSQL_ROOT_PASSWORD":
|
|
91
120
|
nextEnv.MYSQL_ROOT_PASSWORD = await askInput("MySQL Root 密码", nextEnv.MYSQL_ROOT_PASSWORD);
|
|
92
121
|
break;
|
|
122
|
+
case "AI_CHECKPOINT_PG_PASSWORD": {
|
|
123
|
+
const checkpointPassword = await askInput("Checkpoint PG 密码", nextEnv.AI_CHECKPOINT_PG_PASSWORD);
|
|
124
|
+
nextEnv.AI_CHECKPOINT_PG_PASSWORD = checkpointPassword;
|
|
125
|
+
nextEnv.AI_CHECKPOINT_PG_URL = buildCheckpointPgUrl(checkpointPassword);
|
|
126
|
+
break;
|
|
127
|
+
}
|
|
93
128
|
case "AES_SECRET":
|
|
94
129
|
nextEnv.AES_SECRET = assertAesSecret(await askInput("AES_SECRET", nextEnv.AES_SECRET));
|
|
95
130
|
break;
|
|
@@ -101,6 +136,7 @@ export async function collectInstallConfig(layout, versionArg, flags) {
|
|
|
101
136
|
const version = versionArg ?? DEFAULT_VERSION;
|
|
102
137
|
const defaultDbPassword = createSecret(16);
|
|
103
138
|
const defaultRootPassword = createSecret(16);
|
|
139
|
+
const defaultCheckpointPassword = createSecret(16);
|
|
104
140
|
const defaultAesSecret = createSecret(24);
|
|
105
141
|
const [mysqlPort, serverPort, webPort] = await Promise.all([
|
|
106
142
|
getAvailablePort(DEFAULT_PORTS.mysql),
|
|
@@ -121,17 +157,30 @@ export async function collectInstallConfig(layout, versionArg, flags) {
|
|
|
121
157
|
MYSQL_DATABASE: DEFAULT_DB_NAME,
|
|
122
158
|
MYSQL_USER: DEFAULT_DB_USER,
|
|
123
159
|
MYSQL_PASSWORD: defaultDbPassword,
|
|
160
|
+
AI_CHECKPOINT_PG_PASSWORD: defaultCheckpointPassword,
|
|
161
|
+
AI_CHECKPOINT_PG_URL: buildCheckpointPgUrl(defaultCheckpointPassword),
|
|
124
162
|
AES_SECRET: defaultAesSecret,
|
|
125
163
|
});
|
|
126
164
|
const existingOverrides = await loadExistingEnvOverrides(layout);
|
|
127
|
-
const
|
|
165
|
+
const existingCheckpointPassword = existingOverrides.AI_CHECKPOINT_PG_PASSWORD?.trim();
|
|
166
|
+
const existingCheckpointUrl = existingOverrides.AI_CHECKPOINT_PG_URL?.trim();
|
|
167
|
+
const derivedCheckpointPassword = existingCheckpointUrl
|
|
168
|
+
? extractCheckpointPgPassword(existingCheckpointUrl)
|
|
169
|
+
: null;
|
|
170
|
+
if (existingCheckpointUrl && !existingCheckpointPassword && !derivedCheckpointPassword) {
|
|
171
|
+
throw new Error("AI_CHECKPOINT_PG_URL 无法解析密码");
|
|
172
|
+
}
|
|
173
|
+
const checkpointPassword = existingCheckpointPassword ?? derivedCheckpointPassword ?? defaultCheckpointPassword;
|
|
174
|
+
const defaults = normalizeCheckpointRuntimeConfig({
|
|
128
175
|
...generatedDefaults,
|
|
129
176
|
...existingOverrides,
|
|
177
|
+
AI_CHECKPOINT_PG_PASSWORD: checkpointPassword,
|
|
178
|
+
AI_CHECKPOINT_PG_URL: buildCheckpointPgUrl(checkpointPassword),
|
|
130
179
|
SEEDAR_VERSION: versionArg ?? existingOverrides.SEEDAR_VERSION ?? generatedDefaults.SEEDAR_VERSION,
|
|
131
180
|
SEEDAR_INSTALL_ROOT: generatedDefaults.SEEDAR_INSTALL_ROOT,
|
|
132
181
|
SEEDAR_INSTANCE_ID: generatedDefaults.SEEDAR_INSTANCE_ID,
|
|
133
182
|
SEEDAR_PROJECT_NAME: generatedDefaults.SEEDAR_PROJECT_NAME,
|
|
134
|
-
};
|
|
183
|
+
});
|
|
135
184
|
if (!process.stdin.isTTY || flags.yes) {
|
|
136
185
|
console.log("使用默认安装参数初始化 Seedar。");
|
|
137
186
|
return defaults;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/install/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAE5C,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EACL,eAAe,EACf,eAAe,EACf,aAAa,EACb,eAAe,EACf,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,
|
|
1
|
+
{"version":3,"file":"prompts.js","sourceRoot":"","sources":["../../src/install/prompts.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime/index.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type { EnvConfig, InstallState, RuntimeLayout } from "../shared/types.js";
|
|
2
2
|
export declare function resolveInstallRoot(): string;
|
|
3
3
|
export declare function toDockerPath(targetPath: string): string;
|
|
4
|
+
export declare function extractCheckpointPgPassword(connectionString: string): string | null;
|
|
4
5
|
export declare function getRuntimeLayout(): RuntimeLayout;
|
|
5
6
|
export declare function pathExists(targetPath: string): Promise<boolean>;
|
|
6
7
|
export declare function ensureRuntimeDirectories(layout: RuntimeLayout): Promise<void>;
|
|
7
8
|
export declare function renderEnvFile(env: EnvConfig): string;
|
|
8
9
|
export declare function parseEnvFile(content: string): Record<string, string>;
|
|
9
|
-
export declare function assertEnvShape(env: Record<string, string>): EnvConfig;
|
|
10
10
|
export declare function readEnvConfig(layout: RuntimeLayout): Promise<EnvConfig>;
|
|
11
11
|
export declare function writeRuntimeFiles(layout: RuntimeLayout, env: EnvConfig): Promise<void>;
|
|
12
12
|
export declare function writeInstalledVersion(layout: RuntimeLayout, version: string): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEjF,wBAAgB,kBAAkB,IAAI,MAAM,CAO3C;AAED,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAgB,2BAA2B,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQnF;AAyDD,wBAAgB,gBAAgB,IAAI,aAAa,CAsBhD;AAED,wBAAsB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAOrE;AAED,wBAAsB,wBAAwB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAOnF;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,SAAS,GAAG,MAAM,CAcpD;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAoBpE;AAED,wBAAsB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,SAAS,CAAC,CAS7E;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,aAAa,EACrB,GAAG,EAAE,SAAS,GACb,OAAO,CAAC,IAAI,CAAC,CAIf;AAED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOxB;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,YAAY,CAAC,CAcvB;AAED,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,CAE9E;AAED,wBAAsB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAqB1E;AAED,wBAAgB,eAAe,CAC7B,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,qBAAqB,GAAG,oBAAoB,GAAG,qBAAqB,CAAC,GAC5F,SAAS,CAOX;AAED,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,IAAI,CAAC,CAaf"}
|
package/dist/runtime/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { createHash } from "node:crypto";
|
|
1
|
+
import { createHash, randomBytes } from "node:crypto";
|
|
2
2
|
import { access, copyFile, mkdir, readFile, writeFile } from "node:fs/promises";
|
|
3
3
|
import os from "node:os";
|
|
4
4
|
import path from "node:path";
|
|
5
|
-
import { COMPOSE_TEMPLATE, ENV_RENDER_ORDER, REQUIRED_ENV_KEYS, } from "../shared/constants.js";
|
|
5
|
+
import { buildCheckpointPgUrl, COMPOSE_TEMPLATE, ENV_RENDER_ORDER, REQUIRED_ENV_KEYS, } from "../shared/constants.js";
|
|
6
6
|
export function resolveInstallRoot() {
|
|
7
7
|
const override = process.env.SEEDAR_INSTALL_DIR?.trim();
|
|
8
8
|
if (override) {
|
|
@@ -13,6 +13,63 @@ export function resolveInstallRoot() {
|
|
|
13
13
|
export function toDockerPath(targetPath) {
|
|
14
14
|
return path.resolve(targetPath).replace(/\\/g, "/");
|
|
15
15
|
}
|
|
16
|
+
export function extractCheckpointPgPassword(connectionString) {
|
|
17
|
+
try {
|
|
18
|
+
const url = new URL(connectionString);
|
|
19
|
+
const password = url.password.trim();
|
|
20
|
+
return password ? decodeURIComponent(password) : null;
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function normalizeEnvConfig(env) {
|
|
27
|
+
const normalized = { ...env };
|
|
28
|
+
const missing = REQUIRED_ENV_KEYS.filter((key) => !normalized[key]);
|
|
29
|
+
const checkpointPassword = normalized.AI_CHECKPOINT_PG_PASSWORD?.trim() || "";
|
|
30
|
+
const checkpointUrl = normalized.AI_CHECKPOINT_PG_URL?.trim() || "";
|
|
31
|
+
let changed = false;
|
|
32
|
+
if (checkpointPassword) {
|
|
33
|
+
const nextUrl = buildCheckpointPgUrl(checkpointPassword);
|
|
34
|
+
if (normalized.AI_CHECKPOINT_PG_PASSWORD !== checkpointPassword) {
|
|
35
|
+
normalized.AI_CHECKPOINT_PG_PASSWORD = checkpointPassword;
|
|
36
|
+
changed = true;
|
|
37
|
+
}
|
|
38
|
+
if (normalized.AI_CHECKPOINT_PG_URL !== nextUrl) {
|
|
39
|
+
normalized.AI_CHECKPOINT_PG_URL = nextUrl;
|
|
40
|
+
changed = true;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
else if (checkpointUrl) {
|
|
44
|
+
const derivedPassword = extractCheckpointPgPassword(checkpointUrl);
|
|
45
|
+
if (!derivedPassword) {
|
|
46
|
+
throw new Error("运行时配置中的 AI_CHECKPOINT_PG_URL 无法解析密码");
|
|
47
|
+
}
|
|
48
|
+
const nextUrl = buildCheckpointPgUrl(derivedPassword);
|
|
49
|
+
if (normalized.AI_CHECKPOINT_PG_PASSWORD !== derivedPassword) {
|
|
50
|
+
normalized.AI_CHECKPOINT_PG_PASSWORD = derivedPassword;
|
|
51
|
+
changed = true;
|
|
52
|
+
}
|
|
53
|
+
if (normalized.AI_CHECKPOINT_PG_URL !== nextUrl) {
|
|
54
|
+
normalized.AI_CHECKPOINT_PG_URL = nextUrl;
|
|
55
|
+
changed = true;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
const generatedPassword = randomBytes(16).toString("hex");
|
|
60
|
+
normalized.AI_CHECKPOINT_PG_PASSWORD = generatedPassword;
|
|
61
|
+
normalized.AI_CHECKPOINT_PG_URL = buildCheckpointPgUrl(generatedPassword);
|
|
62
|
+
changed = true;
|
|
63
|
+
}
|
|
64
|
+
const remainingMissing = missing.filter((key) => key !== "AI_CHECKPOINT_PG_PASSWORD" && key !== "AI_CHECKPOINT_PG_URL");
|
|
65
|
+
if (remainingMissing.length > 0) {
|
|
66
|
+
throw new Error(`运行时配置缺少字段: ${remainingMissing.join(", ")}`);
|
|
67
|
+
}
|
|
68
|
+
return {
|
|
69
|
+
env: normalized,
|
|
70
|
+
changed,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
16
73
|
export function getRuntimeLayout() {
|
|
17
74
|
const installRoot = resolveInstallRoot();
|
|
18
75
|
const instanceId = createHash("sha256")
|
|
@@ -24,6 +81,7 @@ export function getRuntimeLayout() {
|
|
|
24
81
|
runtimeDir: path.join(installRoot, "runtime"),
|
|
25
82
|
dataDir: path.join(installRoot, "data"),
|
|
26
83
|
mysqlDataDir: path.join(installRoot, "data", "mysql"),
|
|
84
|
+
postgresDataDir: path.join(installRoot, "data", "postgres"),
|
|
27
85
|
logsDir: path.join(installRoot, "logs"),
|
|
28
86
|
backupsDir: path.join(installRoot, "backups"),
|
|
29
87
|
composePath: path.join(installRoot, "runtime", "docker-compose.yml"),
|
|
@@ -47,6 +105,7 @@ export async function ensureRuntimeDirectories(layout) {
|
|
|
47
105
|
await mkdir(layout.runtimeDir, { recursive: true });
|
|
48
106
|
await mkdir(layout.dataDir, { recursive: true });
|
|
49
107
|
await mkdir(layout.mysqlDataDir, { recursive: true });
|
|
108
|
+
await mkdir(layout.postgresDataDir, { recursive: true });
|
|
50
109
|
await mkdir(layout.logsDir, { recursive: true });
|
|
51
110
|
await mkdir(layout.backupsDir, { recursive: true });
|
|
52
111
|
}
|
|
@@ -80,16 +139,14 @@ export function parseEnvFile(content) {
|
|
|
80
139
|
}
|
|
81
140
|
return result;
|
|
82
141
|
}
|
|
83
|
-
export function assertEnvShape(env) {
|
|
84
|
-
const missing = REQUIRED_ENV_KEYS.filter((key) => !env[key]);
|
|
85
|
-
if (missing.length > 0) {
|
|
86
|
-
throw new Error(`运行时配置缺少字段: ${missing.join(", ")}`);
|
|
87
|
-
}
|
|
88
|
-
return env;
|
|
89
|
-
}
|
|
90
142
|
export async function readEnvConfig(layout) {
|
|
91
143
|
const content = await readFile(layout.envPath, "utf8");
|
|
92
|
-
|
|
144
|
+
const { env, changed } = normalizeEnvConfig(parseEnvFile(content));
|
|
145
|
+
if (changed) {
|
|
146
|
+
await ensureRuntimeDirectories(layout);
|
|
147
|
+
await writeFile(layout.envPath, renderEnvFile(env), "utf8");
|
|
148
|
+
}
|
|
149
|
+
return env;
|
|
93
150
|
}
|
|
94
151
|
export async function writeRuntimeFiles(layout, env) {
|
|
95
152
|
await ensureRuntimeDirectories(layout);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/runtime/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EACL,oBAAoB,EACpB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAGhC,MAAM,UAAU,kBAAkB;IAChC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,EAAE,CAAC;IACxD,IAAI,QAAQ,EAAE,CAAC;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,UAAkB;IAC7C,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,gBAAwB;IAClE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACtC,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACrC,OAAO,QAAQ,CAAC,CAAC,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,GAA2B;IAIrD,MAAM,UAAU,GAA2B,EAAE,GAAG,GAAG,EAAE,CAAC;IACtD,MAAM,OAAO,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;IACpE,MAAM,kBAAkB,GAAG,UAAU,CAAC,yBAAyB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC9E,MAAM,aAAa,GAAG,UAAU,CAAC,oBAAoB,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACpE,IAAI,OAAO,GAAG,KAAK,CAAC;IAEpB,IAAI,kBAAkB,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;QACzD,IAAI,UAAU,CAAC,yBAAyB,KAAK,kBAAkB,EAAE,CAAC;YAChE,UAAU,CAAC,yBAAyB,GAAG,kBAAkB,CAAC;YAC1D,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QACD,IAAI,UAAU,CAAC,oBAAoB,KAAK,OAAO,EAAE,CAAC;YAChD,UAAU,CAAC,oBAAoB,GAAG,OAAO,CAAC;YAC1C,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC;SAAM,IAAI,aAAa,EAAE,CAAC;QACzB,MAAM,eAAe,GAAG,2BAA2B,CAAC,aAAa,CAAC,CAAC;QACnE,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QAED,MAAM,OAAO,GAAG,oBAAoB,CAAC,eAAe,CAAC,CAAC;QACtD,IAAI,UAAU,CAAC,yBAAyB,KAAK,eAAe,EAAE,CAAC;YAC7D,UAAU,CAAC,yBAAyB,GAAG,eAAe,CAAC;YACvD,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;QACD,IAAI,UAAU,CAAC,oBAAoB,KAAK,OAAO,EAAE,CAAC;YAChD,UAAU,CAAC,oBAAoB,GAAG,OAAO,CAAC;YAC1C,OAAO,GAAG,IAAI,CAAC;QACjB,CAAC;IACH,CAAC;SAAM,CAAC;QACN,MAAM,iBAAiB,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC1D,UAAU,CAAC,yBAAyB,GAAG,iBAAiB,CAAC;QACzD,UAAU,CAAC,oBAAoB,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;QAC1E,OAAO,GAAG,IAAI,CAAC;IACjB,CAAC;IAED,MAAM,gBAAgB,GAAG,OAAO,CAAC,MAAM,CACrC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,2BAA2B,IAAI,GAAG,KAAK,sBAAsB,CAC/E,CAAC;IACF,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,cAAc,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO;QACL,GAAG,EAAE,UAAkC;QACvC,OAAO;KACR,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,MAAM,WAAW,GAAG,kBAAkB,EAAE,CAAC;IACzC,MAAM,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC;SACpC,MAAM,CAAC,WAAW,CAAC;SACnB,MAAM,CAAC,KAAK,CAAC;SACb,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAEf,OAAO;QACL,WAAW;QACX,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC;QAC7C,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC;QACvC,YAAY,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC;QACrD,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,EAAE,UAAU,CAAC;QAC3D,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC;QACvC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC;QAC7C,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,oBAAoB,CAAC;QACpE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,MAAM,CAAC;QAClD,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,oBAAoB,CAAC;QACpE,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,gBAAgB,CAAC;QAC9D,UAAU;QACV,WAAW,EAAE,UAAU,UAAU,EAAE;KACpC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,UAAkB;IACjD,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;QACzB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,MAAqB;IAClE,MAAM,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,MAAM,KAAK,CAAC,MAAM,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtD,MAAM,KAAK,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,MAAM,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACjD,MAAM,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAc;IAC1C,MAAM,KAAK,GAAa;QACtB,2BAA2B;QAC3B,kEAAkE;QAClE,EAAE;KACH,CAAC;IAEF,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;QACnC,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;QACvB,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;IAChC,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAe;IAC1C,MAAM,MAAM,GAA2B,EAAE,CAAC;IAE1C,KAAK,MAAM,OAAO,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YAClC,SAAS;QACX,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACjB,SAAS;QACX,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3C,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAqB;IACvD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACvD,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,kBAAkB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;IACnE,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,wBAAwB,CAAC,MAAM,CAAC,CAAC;QACvC,MAAM,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IAC9D,CAAC;IAED,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAqB,EACrB,GAAc;IAEd,MAAM,wBAAwB,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAC9D,MAAM,SAAS,CAAC,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,MAAqB,EACrB,OAAe;IAEf,MAAM,SAAS,CAAC,MAAM,CAAC,WAAW,EAAE,GAAG,OAAO,IAAI,EAAE,MAAM,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAqB;IAErB,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;QAC5C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC3D,OAAO,OAAO,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC;AAChC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAqB,EACrB,KAAmB;IAEnB,MAAM,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,KAAK,IAAI,EAAE,MAAM,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAqB;IAErB,IAAI,CAAC,CAAC,MAAM,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QAC1C,MAAM,UAAU,GACd,CAAC,MAAM,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/E,OAAO,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9C,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACzD,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAClC,IAAI,UAAU,KAAK,WAAW,IAAI,UAAU,KAAK,aAAa,EAAE,CAAC;QAC/D,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAAqB;IAC1D,OAAO,CAAC,MAAM,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AACtF,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAqB;IACvD,MAAM,wBAAwB,CAAC,MAAM,CAAC,CAAC;IAEvC,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACtD,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE5C,MAAM,KAAK,GAA4B;QACrC,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC9C,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;QAChE,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;QAChE,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;KAC3D,CAAC;IAEF,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACrC,IAAI,MAAM,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7B,MAAM,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,MAAqB,EACrB,MAA6F;IAE7F,OAAO;QACL,GAAG,MAAM;QACT,mBAAmB,EAAE,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC;QACrD,kBAAkB,EAAE,MAAM,CAAC,UAAU;QACrC,mBAAmB,EAAE,MAAM,CAAC,WAAW;KACxC,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,MAAqB,EACrB,SAAiB;IAEjB,MAAM,KAAK,GAA4B;QACrC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,EAAE,MAAM,CAAC,OAAO,CAAC;QAC9C,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC;QAChE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,oBAAoB,CAAC,EAAE,MAAM,CAAC,WAAW,CAAC;QAChE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC;KAC3D,CAAC;IAEF,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACrC,IAAI,MAAM,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7B,MAAM,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;AACH,CAAC"}
|
|
@@ -9,9 +9,15 @@ export declare const DEFAULT_DB_USER = "seedar";
|
|
|
9
9
|
export declare const DEFAULT_DOCKER_ORG = "syedarhandsome";
|
|
10
10
|
export declare const DEFAULT_SERVER_IMAGE = "syedarhandsome/seedar-server";
|
|
11
11
|
export declare const DEFAULT_WEB_IMAGE = "syedarhandsome/seedar-web";
|
|
12
|
+
export declare const DEFAULT_POSTGRES_IMAGE = "postgres:16-alpine";
|
|
13
|
+
export declare const DEFAULT_CHECKPOINT_PG_HOST = "postgres";
|
|
14
|
+
export declare const DEFAULT_CHECKPOINT_PG_PORT = 5432;
|
|
15
|
+
export declare const DEFAULT_CHECKPOINT_PG_USER = "postgres";
|
|
16
|
+
export declare const DEFAULT_CHECKPOINT_PG_DATABASE = "postgres";
|
|
12
17
|
export declare const MIN_NODE_MAJOR = 18;
|
|
13
|
-
export declare
|
|
14
|
-
export declare const
|
|
15
|
-
export declare const
|
|
16
|
-
export declare const
|
|
18
|
+
export declare function buildCheckpointPgUrl(password: string): string;
|
|
19
|
+
export declare const REQUIRED_ENV_KEYS: readonly ["SEEDAR_VERSION", "SEEDAR_INSTALL_ROOT", "SEEDAR_INSTANCE_ID", "SEEDAR_PROJECT_NAME", "MYSQL_PORT", "SERVER_PORT", "WEB_PORT", "DB_HOST", "DB_PORT", "DB_USERNAME", "DB_PASSWORD", "DB_DATABASE", "MYSQL_ROOT_PASSWORD", "MYSQL_DATABASE", "MYSQL_USER", "MYSQL_PASSWORD", "AI_CHECKPOINT_PG_PASSWORD", "AI_CHECKPOINT_PG_URL", "AES_SECRET"];
|
|
20
|
+
export declare const VALID_SERVICES: readonly ["mysql", "postgres", "server", "web", "migrate"];
|
|
21
|
+
export declare const ENV_RENDER_ORDER: readonly ["SEEDAR_VERSION", "SEEDAR_INSTALL_ROOT", "SEEDAR_INSTANCE_ID", "SEEDAR_PROJECT_NAME", "MYSQL_PORT", "SERVER_PORT", "WEB_PORT", "DB_HOST", "DB_PORT", "DB_USERNAME", "DB_PASSWORD", "DB_DATABASE", "MYSQL_ROOT_PASSWORD", "MYSQL_DATABASE", "MYSQL_USER", "MYSQL_PASSWORD", "AI_CHECKPOINT_PG_PASSWORD", "AI_CHECKPOINT_PG_URL", "AES_SECRET"];
|
|
22
|
+
export declare const COMPOSE_TEMPLATE = "name: ${SEEDAR_PROJECT_NAME}\n\nservices:\n mysql:\n image: mysql:8.4\n container_name: ${SEEDAR_PROJECT_NAME}-mysql\n restart: unless-stopped\n environment:\n TZ: Asia/Shanghai\n MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}\n MYSQL_DATABASE: ${MYSQL_DATABASE}\n MYSQL_USER: ${MYSQL_USER}\n MYSQL_PASSWORD: ${MYSQL_PASSWORD}\n ports:\n - \"${MYSQL_PORT}:3306\"\n volumes:\n - \"${SEEDAR_INSTALL_ROOT}/data/mysql:/var/lib/mysql\"\n healthcheck:\n test:\n [\n \"CMD-SHELL\",\n \"mysqladmin ping -h 127.0.0.1 -uroot -p$$MYSQL_ROOT_PASSWORD --silent\",\n ]\n interval: 10s\n timeout: 5s\n retries: 12\n start_period: 20s\n networks:\n - seedar-net\n\n postgres:\n image: postgres:16-alpine\n container_name: ${SEEDAR_PROJECT_NAME}-postgres\n restart: unless-stopped\n environment:\n TZ: Asia/Shanghai\n POSTGRES_DB: postgres\n POSTGRES_USER: postgres\n POSTGRES_PASSWORD: ${AI_CHECKPOINT_PG_PASSWORD}\n volumes:\n - \"${SEEDAR_INSTALL_ROOT}/data/postgres:/var/lib/postgresql/data\"\n healthcheck:\n test:\n [\n \"CMD-SHELL\",\n \"pg_isready -h 127.0.0.1 -U postgres -d postgres\",\n ]\n interval: 10s\n timeout: 5s\n retries: 12\n start_period: 20s\n networks:\n - seedar-net\n\n server:\n image: syedarhandsome/seedar-server:${SEEDAR_VERSION}\n container_name: ${SEEDAR_PROJECT_NAME}-server\n restart: unless-stopped\n depends_on:\n mysql:\n condition: service_healthy\n postgres:\n condition: service_healthy\n environment:\n TZ: Asia/Shanghai\n NODE_ENV: production\n DB_HOST: ${DB_HOST}\n DB_PORT: ${DB_PORT}\n DB_USERNAME: ${DB_USERNAME}\n DB_PASSWORD: ${DB_PASSWORD}\n DB_DATABASE: ${DB_DATABASE}\n AI_CHECKPOINT_PG_URL: ${AI_CHECKPOINT_PG_URL}\n AES_SECRET: ${AES_SECRET}\n PORT: 3000\n ports:\n - \"${SERVER_PORT}:3000\"\n networks:\n - seedar-net\n\n migrate:\n image: syedarhandsome/seedar-server:${SEEDAR_VERSION}\n restart: \"no\"\n depends_on:\n mysql:\n condition: service_healthy\n environment:\n TZ: Asia/Shanghai\n NODE_ENV: production\n DB_HOST: ${DB_HOST}\n DB_PORT: ${DB_PORT}\n DB_USERNAME: ${DB_USERNAME}\n DB_PASSWORD: ${DB_PASSWORD}\n DB_DATABASE: ${DB_DATABASE}\n AI_CHECKPOINT_PG_URL: ${AI_CHECKPOINT_PG_URL}\n AES_SECRET: ${AES_SECRET}\n PORT: 3000\n command:\n [\n \"node\",\n \"node_modules/typeorm/cli.js\",\n \"-d\",\n \"dist/config/typeorm.datasource.js\",\n \"migration:run\",\n ]\n networks:\n - seedar-net\n\n web:\n image: syedarhandsome/seedar-web:${SEEDAR_VERSION}\n container_name: ${SEEDAR_PROJECT_NAME}-web\n restart: unless-stopped\n depends_on:\n - server\n ports:\n - \"${WEB_PORT}:80\"\n networks:\n - seedar-net\n\nnetworks:\n seedar-net:\n driver: bridge\n";
|
|
17
23
|
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/shared/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,WAAW,CAAC;AACxC,eAAO,MAAM,aAAa;;;;CAIhB,CAAC;
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/shared/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe,WAAW,CAAC;AACxC,eAAO,MAAM,aAAa;;;;CAIhB,CAAC;AACX,eAAO,MAAM,eAAe,gBAAgB,CAAC;AAC7C,eAAO,MAAM,eAAe,WAAW,CAAC;AACxC,eAAO,MAAM,kBAAkB,mBAAmB,CAAC;AACnD,eAAO,MAAM,oBAAoB,iCAAwC,CAAC;AAC1E,eAAO,MAAM,iBAAiB,8BAAqC,CAAC;AACpE,eAAO,MAAM,sBAAsB,uBAAuB,CAAC;AAC3D,eAAO,MAAM,0BAA0B,aAAa,CAAC;AACrD,eAAO,MAAM,0BAA0B,OAAO,CAAC;AAC/C,eAAO,MAAM,0BAA0B,aAAa,CAAC;AACrD,eAAO,MAAM,8BAA8B,aAAa,CAAC;AACzD,eAAO,MAAM,cAAc,KAAK,CAAC;AAEjC,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAI7D;AAED,eAAO,MAAM,iBAAiB,yVAoBpB,CAAC;AAEX,eAAO,MAAM,cAAc,4DAA6D,CAAC;AAEzF,eAAO,MAAM,gBAAgB,yVAoBnB,CAAC;AAEX,eAAO,MAAM,gBAAgB,qiGAyH5B,CAAC"}
|
package/dist/shared/constants.js
CHANGED
|
@@ -9,7 +9,15 @@ export const DEFAULT_DB_USER = "seedar";
|
|
|
9
9
|
export const DEFAULT_DOCKER_ORG = "syedarhandsome";
|
|
10
10
|
export const DEFAULT_SERVER_IMAGE = `${DEFAULT_DOCKER_ORG}/seedar-server`;
|
|
11
11
|
export const DEFAULT_WEB_IMAGE = `${DEFAULT_DOCKER_ORG}/seedar-web`;
|
|
12
|
+
export const DEFAULT_POSTGRES_IMAGE = "postgres:16-alpine";
|
|
13
|
+
export const DEFAULT_CHECKPOINT_PG_HOST = "postgres";
|
|
14
|
+
export const DEFAULT_CHECKPOINT_PG_PORT = 5432;
|
|
15
|
+
export const DEFAULT_CHECKPOINT_PG_USER = "postgres";
|
|
16
|
+
export const DEFAULT_CHECKPOINT_PG_DATABASE = "postgres";
|
|
12
17
|
export const MIN_NODE_MAJOR = 18;
|
|
18
|
+
export function buildCheckpointPgUrl(password) {
|
|
19
|
+
return `postgresql://${encodeURIComponent(DEFAULT_CHECKPOINT_PG_USER)}:${encodeURIComponent(password)}@${DEFAULT_CHECKPOINT_PG_HOST}:${DEFAULT_CHECKPOINT_PG_PORT}/${DEFAULT_CHECKPOINT_PG_DATABASE}`;
|
|
20
|
+
}
|
|
13
21
|
export const REQUIRED_ENV_KEYS = [
|
|
14
22
|
"SEEDAR_VERSION",
|
|
15
23
|
"SEEDAR_INSTALL_ROOT",
|
|
@@ -27,9 +35,11 @@ export const REQUIRED_ENV_KEYS = [
|
|
|
27
35
|
"MYSQL_DATABASE",
|
|
28
36
|
"MYSQL_USER",
|
|
29
37
|
"MYSQL_PASSWORD",
|
|
38
|
+
"AI_CHECKPOINT_PG_PASSWORD",
|
|
39
|
+
"AI_CHECKPOINT_PG_URL",
|
|
30
40
|
"AES_SECRET",
|
|
31
41
|
];
|
|
32
|
-
export const VALID_SERVICES = ["mysql", "server", "web", "migrate"];
|
|
42
|
+
export const VALID_SERVICES = ["mysql", "postgres", "server", "web", "migrate"];
|
|
33
43
|
export const ENV_RENDER_ORDER = [
|
|
34
44
|
"SEEDAR_VERSION",
|
|
35
45
|
"SEEDAR_INSTALL_ROOT",
|
|
@@ -47,6 +57,8 @@ export const ENV_RENDER_ORDER = [
|
|
|
47
57
|
"MYSQL_DATABASE",
|
|
48
58
|
"MYSQL_USER",
|
|
49
59
|
"MYSQL_PASSWORD",
|
|
60
|
+
"AI_CHECKPOINT_PG_PASSWORD",
|
|
61
|
+
"AI_CHECKPOINT_PG_URL",
|
|
50
62
|
"AES_SECRET",
|
|
51
63
|
];
|
|
52
64
|
export const COMPOSE_TEMPLATE = `name: \${SEEDAR_PROJECT_NAME}
|
|
@@ -79,6 +91,30 @@ services:
|
|
|
79
91
|
networks:
|
|
80
92
|
- seedar-net
|
|
81
93
|
|
|
94
|
+
postgres:
|
|
95
|
+
image: ${DEFAULT_POSTGRES_IMAGE}
|
|
96
|
+
container_name: \${SEEDAR_PROJECT_NAME}-postgres
|
|
97
|
+
restart: unless-stopped
|
|
98
|
+
environment:
|
|
99
|
+
TZ: Asia/Shanghai
|
|
100
|
+
POSTGRES_DB: ${DEFAULT_CHECKPOINT_PG_DATABASE}
|
|
101
|
+
POSTGRES_USER: ${DEFAULT_CHECKPOINT_PG_USER}
|
|
102
|
+
POSTGRES_PASSWORD: \${AI_CHECKPOINT_PG_PASSWORD}
|
|
103
|
+
volumes:
|
|
104
|
+
- "\${SEEDAR_INSTALL_ROOT}/data/postgres:/var/lib/postgresql/data"
|
|
105
|
+
healthcheck:
|
|
106
|
+
test:
|
|
107
|
+
[
|
|
108
|
+
"CMD-SHELL",
|
|
109
|
+
"pg_isready -h 127.0.0.1 -U postgres -d postgres",
|
|
110
|
+
]
|
|
111
|
+
interval: 10s
|
|
112
|
+
timeout: 5s
|
|
113
|
+
retries: 12
|
|
114
|
+
start_period: 20s
|
|
115
|
+
networks:
|
|
116
|
+
- seedar-net
|
|
117
|
+
|
|
82
118
|
server:
|
|
83
119
|
image: ${DEFAULT_SERVER_IMAGE}:\${SEEDAR_VERSION}
|
|
84
120
|
container_name: \${SEEDAR_PROJECT_NAME}-server
|
|
@@ -86,6 +122,8 @@ services:
|
|
|
86
122
|
depends_on:
|
|
87
123
|
mysql:
|
|
88
124
|
condition: service_healthy
|
|
125
|
+
postgres:
|
|
126
|
+
condition: service_healthy
|
|
89
127
|
environment:
|
|
90
128
|
TZ: Asia/Shanghai
|
|
91
129
|
NODE_ENV: production
|
|
@@ -94,6 +132,7 @@ services:
|
|
|
94
132
|
DB_USERNAME: \${DB_USERNAME}
|
|
95
133
|
DB_PASSWORD: \${DB_PASSWORD}
|
|
96
134
|
DB_DATABASE: \${DB_DATABASE}
|
|
135
|
+
AI_CHECKPOINT_PG_URL: \${AI_CHECKPOINT_PG_URL}
|
|
97
136
|
AES_SECRET: \${AES_SECRET}
|
|
98
137
|
PORT: 3000
|
|
99
138
|
ports:
|
|
@@ -115,6 +154,7 @@ services:
|
|
|
115
154
|
DB_USERNAME: \${DB_USERNAME}
|
|
116
155
|
DB_PASSWORD: \${DB_PASSWORD}
|
|
117
156
|
DB_DATABASE: \${DB_DATABASE}
|
|
157
|
+
AI_CHECKPOINT_PG_URL: \${AI_CHECKPOINT_PG_URL}
|
|
118
158
|
AES_SECRET: \${AES_SECRET}
|
|
119
159
|
PORT: 3000
|
|
120
160
|
command:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/shared/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAC;AACxC,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,GAAG,EAAE,IAAI;CACD,CAAC;
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/shared/constants.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAC;AACxC,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,KAAK,EAAE,IAAI;IACX,MAAM,EAAE,IAAI;IACZ,GAAG,EAAE,IAAI;CACD,CAAC;AACX,MAAM,CAAC,MAAM,eAAe,GAAG,aAAa,CAAC;AAC7C,MAAM,CAAC,MAAM,eAAe,GAAG,QAAQ,CAAC;AACxC,MAAM,CAAC,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;AACnD,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,kBAAkB,gBAAgB,CAAC;AAC1E,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAG,kBAAkB,aAAa,CAAC;AACpE,MAAM,CAAC,MAAM,sBAAsB,GAAG,oBAAoB,CAAC;AAC3D,MAAM,CAAC,MAAM,0BAA0B,GAAG,UAAU,CAAC;AACrD,MAAM,CAAC,MAAM,0BAA0B,GAAG,IAAI,CAAC;AAC/C,MAAM,CAAC,MAAM,0BAA0B,GAAG,UAAU,CAAC;AACrD,MAAM,CAAC,MAAM,8BAA8B,GAAG,UAAU,CAAC;AACzD,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,CAAC;AAEjC,MAAM,UAAU,oBAAoB,CAAC,QAAgB;IACnD,OAAO,gBAAgB,kBAAkB,CAAC,0BAA0B,CAAC,IAAI,kBAAkB,CACzF,QAAQ,CACT,IAAI,0BAA0B,IAAI,0BAA0B,IAAI,8BAA8B,EAAE,CAAC;AACpG,CAAC;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,gBAAgB;IAChB,qBAAqB;IACrB,oBAAoB;IACpB,qBAAqB;IACrB,YAAY;IACZ,aAAa;IACb,UAAU;IACV,SAAS;IACT,SAAS;IACT,aAAa;IACb,aAAa;IACb,aAAa;IACb,qBAAqB;IACrB,gBAAgB;IAChB,YAAY;IACZ,gBAAgB;IAChB,2BAA2B;IAC3B,sBAAsB;IACtB,YAAY;CACJ,CAAC;AAEX,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,CAAU,CAAC;AAEzF,MAAM,CAAC,MAAM,gBAAgB,GAAG;IAC9B,gBAAgB;IAChB,qBAAqB;IACrB,oBAAoB;IACpB,qBAAqB;IACrB,YAAY;IACZ,aAAa;IACb,UAAU;IACV,SAAS;IACT,SAAS;IACT,aAAa;IACb,aAAa;IACb,aAAa;IACb,qBAAqB;IACrB,gBAAgB;IAChB,YAAY;IACZ,gBAAgB;IAChB,2BAA2B;IAC3B,sBAAsB;IACtB,YAAY;CACJ,CAAC;AAEX,MAAM,CAAC,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aA+BnB,sBAAsB;;;;;qBAKd,8BAA8B;uBAC5B,0BAA0B;;;;;;;;;;;;;;;;;;aAkBpC,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;aAyBpB,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;aA4BpB,iBAAiB;;;;;;;;;;;;;CAa7B,CAAC"}
|
package/dist/shared/types.d.ts
CHANGED
|
@@ -3,6 +3,7 @@ export interface RuntimeLayout {
|
|
|
3
3
|
runtimeDir: string;
|
|
4
4
|
dataDir: string;
|
|
5
5
|
mysqlDataDir: string;
|
|
6
|
+
postgresDataDir: string;
|
|
6
7
|
logsDir: string;
|
|
7
8
|
backupsDir: string;
|
|
8
9
|
composePath: string;
|
|
@@ -29,9 +30,11 @@ export interface EnvConfig {
|
|
|
29
30
|
MYSQL_DATABASE: string;
|
|
30
31
|
MYSQL_USER: string;
|
|
31
32
|
MYSQL_PASSWORD: string;
|
|
33
|
+
AI_CHECKPOINT_PG_PASSWORD: string;
|
|
34
|
+
AI_CHECKPOINT_PG_URL: string;
|
|
32
35
|
AES_SECRET: string;
|
|
33
36
|
}
|
|
34
|
-
export type InstallConfigField = "SEEDAR_VERSION" | "MYSQL_PORT" | "SERVER_PORT" | "WEB_PORT" | "DB_HOST" | "DB_PORT" | "DB_USERNAME" | "DB_PASSWORD" | "DB_DATABASE" | "MYSQL_ROOT_PASSWORD" | "MYSQL_DATABASE" | "MYSQL_USER" | "MYSQL_PASSWORD" | "AES_SECRET";
|
|
37
|
+
export type InstallConfigField = "SEEDAR_VERSION" | "MYSQL_PORT" | "SERVER_PORT" | "WEB_PORT" | "DB_HOST" | "DB_PORT" | "DB_USERNAME" | "DB_PASSWORD" | "DB_DATABASE" | "MYSQL_ROOT_PASSWORD" | "MYSQL_DATABASE" | "MYSQL_USER" | "MYSQL_PASSWORD" | "AI_CHECKPOINT_PG_PASSWORD" | "AI_CHECKPOINT_PG_URL" | "AES_SECRET";
|
|
35
38
|
export interface InstallConfigIssue {
|
|
36
39
|
field: InstallConfigField;
|
|
37
40
|
message: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,kBAAkB,GAC1B,gBAAgB,GAChB,YAAY,GACZ,aAAa,GACb,UAAU,GACV,SAAS,GACT,SAAS,GACT,aAAa,GACb,aAAa,GACb,aAAa,GACb,qBAAqB,GACrB,gBAAgB,GAChB,YAAY,GACZ,gBAAgB,GAChB,YAAY,CAAC;AAEjB,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,kBAAkB,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,aAAa,GAAG,SAAS,CAAC;AAEnE,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,OAAO,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,GAAG,EAAE,OAAO,CAAC;CACd;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,SAAS;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,yBAAyB,EAAE,MAAM,CAAC;IAClC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,MAAM,kBAAkB,GAC1B,gBAAgB,GAChB,YAAY,GACZ,aAAa,GACb,UAAU,GACV,SAAS,GACT,SAAS,GACT,aAAa,GACb,aAAa,GACb,aAAa,GACb,qBAAqB,GACrB,gBAAgB,GAChB,YAAY,GACZ,gBAAgB,GAChB,2BAA2B,GAC3B,sBAAsB,GACtB,YAAY,CAAC;AAEjB,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,kBAAkB,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,YAAY,GAAG,WAAW,GAAG,aAAa,GAAG,SAAS,CAAC;AAEnE,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,OAAO,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,GAAG,EAAE,OAAO,CAAC;CACd;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@syedar/seedar-cli",
|
|
3
|
-
"version": "1.2.0-test.
|
|
3
|
+
"version": "1.2.0-test.14",
|
|
4
4
|
"description": "Seedar deployment CLI",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
"dependencies": {
|
|
17
17
|
"@inquirer/prompts": "^7.10.1",
|
|
18
18
|
"chalk": "^5.6.2",
|
|
19
|
+
"commander": "^13.1.0",
|
|
19
20
|
"ora": "^8.2.0"
|
|
20
21
|
},
|
|
21
22
|
"engines": {
|
|
@@ -24,6 +25,7 @@
|
|
|
24
25
|
"license": "MIT",
|
|
25
26
|
"scripts": {
|
|
26
27
|
"build": "tsc -p tsconfig.json",
|
|
28
|
+
"test": "pnpm run build && node --test test/cli.test.mjs",
|
|
27
29
|
"type-check": "tsc --noEmit -p tsconfig.json"
|
|
28
30
|
}
|
|
29
31
|
}
|