grok-cli-to-openai-compatible 1.2.3 → 1.2.4
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/dist/cli/commands/migrate.js +3 -4
- package/dist/cli/commands/migrate.js.map +1 -1
- package/dist/cli/commands/seed.d.ts.map +1 -1
- package/dist/cli/commands/seed.js +6 -22
- package/dist/cli/commands/seed.js.map +1 -1
- package/dist/cli/commands/setup.d.ts.map +1 -1
- package/dist/cli/commands/setup.js +19 -34
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/lib/run-prisma.d.ts +13 -0
- package/dist/cli/lib/run-prisma.d.ts.map +1 -0
- package/dist/cli/lib/run-prisma.js +99 -0
- package/dist/cli/lib/run-prisma.js.map +1 -0
- package/dist/cli/lib/seed-admin.d.ts +17 -0
- package/dist/cli/lib/seed-admin.d.ts.map +1 -0
- package/dist/cli/lib/seed-admin.js +87 -0
- package/dist/cli/lib/seed-admin.js.map +1 -0
- package/package.json +2 -2
- package/scripts/prepare.cjs +17 -12
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.cmdMigrate = cmdMigrate;
|
|
4
|
-
const node_child_process_1 = require("node:child_process");
|
|
5
4
|
const paths_1 = require("../lib/paths");
|
|
6
5
|
const env_file_1 = require("../lib/env-file");
|
|
6
|
+
const run_prisma_1 = require("../lib/run-prisma");
|
|
7
7
|
const print_1 = require("../lib/print");
|
|
8
8
|
async function cmdMigrate(opts) {
|
|
9
9
|
const paths = (0, paths_1.resolveRuntimePaths)({
|
|
@@ -12,10 +12,9 @@ async function cmdMigrate(opts) {
|
|
|
12
12
|
});
|
|
13
13
|
const env = (0, env_file_1.ensureEnvFile)(paths);
|
|
14
14
|
(0, env_file_1.loadEnvIntoProcess)(paths.envFile);
|
|
15
|
-
|
|
16
|
-
(0, node_child_process_1.execSync)('npx --yes prisma@6.5.0 migrate deploy', {
|
|
15
|
+
(0, run_prisma_1.runPrisma)(['migrate', 'deploy'], {
|
|
17
16
|
cwd: paths.packageRoot,
|
|
18
|
-
|
|
17
|
+
packageRoot: paths.packageRoot,
|
|
19
18
|
env: {
|
|
20
19
|
...process.env,
|
|
21
20
|
DATABASE_URL: env.DATABASE_URL || paths.databaseUrl,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../src/cli/commands/migrate.ts"],"names":[],"mappings":";;AAKA,gCAoBC;AAzBD,
|
|
1
|
+
{"version":3,"file":"migrate.js","sourceRoot":"","sources":["../../../src/cli/commands/migrate.ts"],"names":[],"mappings":";;AAKA,gCAoBC;AAzBD,wCAAmD;AACnD,8CAAoE;AACpE,kDAA8C;AAC9C,wCAAkC;AAE3B,KAAK,UAAU,UAAU,CAAC,IAGhC;IACC,MAAM,KAAK,GAAG,IAAA,2BAAmB,EAAC;QAChC,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;KAChD,CAAC,CAAC;IACH,MAAM,GAAG,GAAG,IAAA,wBAAa,EAAC,KAAK,CAAC,CAAC;IACjC,IAAA,6BAAkB,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAElC,IAAA,sBAAS,EAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE;QAC/B,GAAG,EAAE,KAAK,CAAC,WAAW;QACtB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,GAAG,EAAE;YACH,GAAG,OAAO,CAAC,GAAG;YACd,YAAY,EAAE,GAAG,CAAC,YAAY,IAAI,KAAK,CAAC,WAAW;SACpD;KACF,CAAC,CAAC;IACH,IAAA,UAAE,EAAC,kBAAkB,CAAC,CAAC;AACzB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/seed.ts"],"names":[],"mappings":"AAKA,wBAAsB,OAAO,CAAC,IAAI,EAAE;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,GAAG,OAAO,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/seed.ts"],"names":[],"mappings":"AAKA,wBAAsB,OAAO,CAAC,IAAI,EAAE;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,GAAG,OAAO,CAAC,IAAI,CAAC,CAchB"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.cmdSeed = cmdSeed;
|
|
4
|
-
const node_child_process_1 = require("node:child_process");
|
|
5
4
|
const paths_1 = require("../lib/paths");
|
|
6
5
|
const env_file_1 = require("../lib/env-file");
|
|
6
|
+
const seed_admin_1 = require("../lib/seed-admin");
|
|
7
7
|
const print_1 = require("../lib/print");
|
|
8
8
|
async function cmdSeed(opts) {
|
|
9
9
|
const paths = (0, paths_1.resolveRuntimePaths)({
|
|
@@ -12,27 +12,11 @@ async function cmdSeed(opts) {
|
|
|
12
12
|
});
|
|
13
13
|
const env = (0, env_file_1.ensureEnvFile)(paths);
|
|
14
14
|
(0, env_file_1.loadEnvIntoProcess)(paths.envFile);
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
};
|
|
21
|
-
try {
|
|
22
|
-
(0, node_child_process_1.execSync)('npx tsx prisma/seed.ts', {
|
|
23
|
-
cwd: paths.packageRoot,
|
|
24
|
-
stdio: 'inherit',
|
|
25
|
-
env: runEnv,
|
|
26
|
-
});
|
|
27
|
-
}
|
|
28
|
-
catch {
|
|
29
|
-
(0, print_1.warn)('tsx seed failed, trying prisma db seed…');
|
|
30
|
-
(0, node_child_process_1.execSync)('npx prisma db seed', {
|
|
31
|
-
cwd: paths.packageRoot,
|
|
32
|
-
stdio: 'inherit',
|
|
33
|
-
env: runEnv,
|
|
34
|
-
});
|
|
35
|
-
}
|
|
15
|
+
await (0, seed_admin_1.seedAdmin)({
|
|
16
|
+
databaseUrl: env.DATABASE_URL || paths.databaseUrl,
|
|
17
|
+
bootstrapKey: env.ADMIN_BOOTSTRAP_KEY,
|
|
18
|
+
port: env.PORT,
|
|
19
|
+
});
|
|
36
20
|
(0, print_1.ok)('Seed complete');
|
|
37
21
|
}
|
|
38
22
|
//# sourceMappingURL=seed.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seed.js","sourceRoot":"","sources":["../../../src/cli/commands/seed.ts"],"names":[],"mappings":";;AAKA,
|
|
1
|
+
{"version":3,"file":"seed.js","sourceRoot":"","sources":["../../../src/cli/commands/seed.ts"],"names":[],"mappings":";;AAKA,0BAiBC;AAtBD,wCAAmD;AACnD,8CAAoE;AACpE,kDAA8C;AAC9C,wCAAkC;AAE3B,KAAK,UAAU,OAAO,CAAC,IAG7B;IACC,MAAM,KAAK,GAAG,IAAA,2BAAmB,EAAC;QAChC,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;KAChD,CAAC,CAAC;IACH,MAAM,GAAG,GAAG,IAAA,wBAAa,EAAC,KAAK,CAAC,CAAC;IACjC,IAAA,6BAAkB,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAElC,MAAM,IAAA,sBAAS,EAAC;QACd,WAAW,EAAE,GAAG,CAAC,YAAY,IAAI,KAAK,CAAC,WAAW;QAClD,YAAY,EAAE,GAAG,CAAC,mBAAmB;QACrC,IAAI,EAAE,GAAG,CAAC,IAAI;KACf,CAAC,CAAC;IACH,IAAA,UAAE,EAAC,eAAe,CAAC,CAAC;AACtB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":"AAWA,wBAAsB,QAAQ,CAAC,IAAI,EAAE;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgDhB"}
|
|
@@ -4,10 +4,11 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.cmdSetup = cmdSetup;
|
|
7
|
-
const node_child_process_1 = require("node:child_process");
|
|
8
7
|
const node_path_1 = __importDefault(require("node:path"));
|
|
9
8
|
const paths_1 = require("../lib/paths");
|
|
10
9
|
const env_file_1 = require("../lib/env-file");
|
|
10
|
+
const run_prisma_1 = require("../lib/run-prisma");
|
|
11
|
+
const seed_admin_1 = require("../lib/seed-admin");
|
|
11
12
|
const print_1 = require("../lib/print");
|
|
12
13
|
async function cmdSetup(opts) {
|
|
13
14
|
const port = opts.port ?? paths_1.DEFAULT_PORT;
|
|
@@ -19,46 +20,30 @@ async function cmdSetup(opts) {
|
|
|
19
20
|
(0, print_1.info)(`Home: ${paths.home}`);
|
|
20
21
|
(0, paths_1.ensureHomeDirs)(paths);
|
|
21
22
|
const env = (0, env_file_1.ensureEnvFile)(paths, port);
|
|
23
|
+
const databaseUrl = env.DATABASE_URL || paths.databaseUrl;
|
|
24
|
+
const runEnv = {
|
|
25
|
+
...process.env,
|
|
26
|
+
DATABASE_URL: databaseUrl,
|
|
27
|
+
ENCRYPTION_KEY: env.ENCRYPTION_KEY,
|
|
28
|
+
PORT: env.PORT || String(port),
|
|
29
|
+
};
|
|
22
30
|
(0, print_1.info)('Running prisma migrate deploy…');
|
|
23
|
-
(0,
|
|
31
|
+
(0, run_prisma_1.runPrisma)(['migrate', 'deploy'], {
|
|
24
32
|
cwd: paths.packageRoot,
|
|
25
|
-
|
|
26
|
-
env:
|
|
27
|
-
...process.env,
|
|
28
|
-
DATABASE_URL: env.DATABASE_URL || paths.databaseUrl,
|
|
29
|
-
ENCRYPTION_KEY: env.ENCRYPTION_KEY,
|
|
30
|
-
},
|
|
33
|
+
packageRoot: paths.packageRoot,
|
|
34
|
+
env: runEnv,
|
|
31
35
|
});
|
|
32
36
|
(0, print_1.info)('Running seed…');
|
|
33
37
|
try {
|
|
34
|
-
(0,
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
...process.env,
|
|
39
|
-
DATABASE_URL: env.DATABASE_URL || paths.databaseUrl,
|
|
40
|
-
ENCRYPTION_KEY: env.ENCRYPTION_KEY,
|
|
41
|
-
PORT: env.PORT || String(port),
|
|
42
|
-
},
|
|
38
|
+
await (0, seed_admin_1.seedAdmin)({
|
|
39
|
+
databaseUrl,
|
|
40
|
+
bootstrapKey: env.ADMIN_BOOTSTRAP_KEY,
|
|
41
|
+
port: env.PORT || port,
|
|
43
42
|
});
|
|
44
43
|
}
|
|
45
|
-
catch {
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
(0, node_child_process_1.execSync)('node --import tsx prisma/seed.ts', {
|
|
49
|
-
cwd: paths.packageRoot,
|
|
50
|
-
stdio: 'inherit',
|
|
51
|
-
env: {
|
|
52
|
-
...process.env,
|
|
53
|
-
DATABASE_URL: env.DATABASE_URL || paths.databaseUrl,
|
|
54
|
-
ENCRYPTION_KEY: env.ENCRYPTION_KEY,
|
|
55
|
-
PORT: env.PORT || String(port),
|
|
56
|
-
},
|
|
57
|
-
});
|
|
58
|
-
}
|
|
59
|
-
catch {
|
|
60
|
-
(0, print_1.warn)('Seed failed — run: gctoac seed');
|
|
61
|
-
}
|
|
44
|
+
catch (err) {
|
|
45
|
+
(0, print_1.warn)(`Seed failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
46
|
+
(0, print_1.warn)('Retry with: gctoac seed');
|
|
62
47
|
}
|
|
63
48
|
const urls = (0, print_1.baseUrls)(Number(env.PORT || port));
|
|
64
49
|
(0, print_1.ok)('Setup complete');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../../src/cli/commands/setup.ts"],"names":[],"mappings":";;;;;AAWA,4BAoDC;AA/DD,0DAA6B;AAC7B,wCAIsB;AACtB,8CAAgD;AAChD,kDAA8C;AAC9C,kDAA8C;AAC9C,wCAAwD;AAEjD,KAAK,UAAU,QAAQ,CAAC,IAI9B;IACC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,oBAAY,CAAC;IACvC,MAAM,KAAK,GAAG,IAAA,2BAAmB,EAAC;QAChC,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;KAChD,CAAC,CAAC;IAEH,IAAA,YAAI,EAAC,SAAS,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5B,IAAA,YAAI,EAAC,SAAS,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAC5B,IAAA,sBAAc,EAAC,KAAK,CAAC,CAAC;IACtB,MAAM,GAAG,GAAG,IAAA,wBAAa,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAEvC,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY,IAAI,KAAK,CAAC,WAAW,CAAC;IAC1D,MAAM,MAAM,GAAG;QACb,GAAG,OAAO,CAAC,GAAG;QACd,YAAY,EAAE,WAAW;QACzB,cAAc,EAAE,GAAG,CAAC,cAAc;QAClC,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC;KAC/B,CAAC;IAEF,IAAA,YAAI,EAAC,gCAAgC,CAAC,CAAC;IACvC,IAAA,sBAAS,EAAC,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE;QAC/B,GAAG,EAAE,KAAK,CAAC,WAAW;QACtB,WAAW,EAAE,KAAK,CAAC,WAAW;QAC9B,GAAG,EAAE,MAAM;KACZ,CAAC,CAAC;IAEH,IAAA,YAAI,EAAC,eAAe,CAAC,CAAC;IACtB,IAAI,CAAC;QACH,MAAM,IAAA,sBAAS,EAAC;YACd,WAAW;YACX,YAAY,EAAE,GAAG,CAAC,mBAAmB;YACrC,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,IAAI;SACvB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAA,YAAI,EAAC,gBAAgB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACzE,IAAA,YAAI,EAAC,yBAAyB,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,IAAI,GAAG,IAAA,gBAAQ,EAAC,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;IAChD,IAAA,UAAE,EAAC,gBAAgB,CAAC,CAAC;IACrB,IAAA,YAAI,EAAC,EAAE,CAAC,CAAC;IACT,IAAA,YAAI,EAAC,YAAY,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7B,IAAA,YAAI,EAAC,YAAY,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;IAC/B,IAAA,YAAI,EAAC,YAAY,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAClC,IAAA,YAAI,EAAC,YAAY,mBAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC;IAC3D,IAAA,YAAI,EAAC,EAAE,CAAC,CAAC;IACT,IAAA,YAAI,EAAC,oBAAoB,CAAC,CAAC;AAC7B,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** Keep in sync with package.json prisma / @prisma/client version */
|
|
2
|
+
export declare const PRISMA_VERSION = "6.5.0";
|
|
3
|
+
/**
|
|
4
|
+
* Resolve the prisma CLI entry (node script), preferring local installs over npx.
|
|
5
|
+
* Order: packageRoot → cwd → require from this CLI package → null (caller may fall back).
|
|
6
|
+
*/
|
|
7
|
+
export declare function resolvePrismaEntry(packageRoot: string, cwd?: string): string | null;
|
|
8
|
+
export declare function runPrisma(args: string[], options: {
|
|
9
|
+
cwd: string;
|
|
10
|
+
packageRoot: string;
|
|
11
|
+
env?: NodeJS.ProcessEnv;
|
|
12
|
+
}): void;
|
|
13
|
+
//# sourceMappingURL=run-prisma.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-prisma.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/run-prisma.ts"],"names":[],"mappings":"AAKA,qEAAqE;AACrE,eAAO,MAAM,cAAc,UAAU,CAAC;AAkBtC;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,GAAG,SAAgB,GAAG,MAAM,GAAG,IAAI,CAa1F;AAcD,wBAAgB,SAAS,CACvB,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE;IACP,GAAG,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CACzB,GACA,IAAI,CA0CN"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.PRISMA_VERSION = void 0;
|
|
7
|
+
exports.resolvePrismaEntry = resolvePrismaEntry;
|
|
8
|
+
exports.runPrisma = runPrisma;
|
|
9
|
+
const node_child_process_1 = require("node:child_process");
|
|
10
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
11
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
12
|
+
const node_module_1 = require("node:module");
|
|
13
|
+
/** Keep in sync with package.json prisma / @prisma/client version */
|
|
14
|
+
exports.PRISMA_VERSION = '6.5.0';
|
|
15
|
+
const requireFromHere = (0, node_module_1.createRequire)(__filename);
|
|
16
|
+
function prismaEntryFromRoot(root) {
|
|
17
|
+
const direct = node_path_1.default.join(root, 'node_modules', 'prisma', 'build', 'index.js');
|
|
18
|
+
if (node_fs_1.default.existsSync(direct))
|
|
19
|
+
return direct;
|
|
20
|
+
try {
|
|
21
|
+
const req = (0, node_module_1.createRequire)(node_path_1.default.join(root, 'package.json'));
|
|
22
|
+
const pkgJson = req.resolve('prisma/package.json');
|
|
23
|
+
const entry = node_path_1.default.join(node_path_1.default.dirname(pkgJson), 'build', 'index.js');
|
|
24
|
+
if (node_fs_1.default.existsSync(entry))
|
|
25
|
+
return entry;
|
|
26
|
+
}
|
|
27
|
+
catch {
|
|
28
|
+
/* not installed under this root */
|
|
29
|
+
}
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Resolve the prisma CLI entry (node script), preferring local installs over npx.
|
|
34
|
+
* Order: packageRoot → cwd → require from this CLI package → null (caller may fall back).
|
|
35
|
+
*/
|
|
36
|
+
function resolvePrismaEntry(packageRoot, cwd = process.cwd()) {
|
|
37
|
+
for (const root of [packageRoot, cwd]) {
|
|
38
|
+
const entry = prismaEntryFromRoot(root);
|
|
39
|
+
if (entry)
|
|
40
|
+
return entry;
|
|
41
|
+
}
|
|
42
|
+
try {
|
|
43
|
+
const pkgJson = requireFromHere.resolve('prisma/package.json');
|
|
44
|
+
const entry = node_path_1.default.join(node_path_1.default.dirname(pkgJson), 'build', 'index.js');
|
|
45
|
+
if (node_fs_1.default.existsSync(entry))
|
|
46
|
+
return entry;
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
/* prisma not a dependency of the running CLI */
|
|
50
|
+
}
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
function which(cmd) {
|
|
54
|
+
const paths = (process.env.PATH || '').split(node_path_1.default.delimiter);
|
|
55
|
+
const exts = process.platform === 'win32' ? ['.cmd', '.exe', '.bat', ''] : [''];
|
|
56
|
+
for (const dir of paths) {
|
|
57
|
+
for (const ext of exts) {
|
|
58
|
+
const p = node_path_1.default.join(dir, cmd + ext);
|
|
59
|
+
if (node_fs_1.default.existsSync(p))
|
|
60
|
+
return p;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return null;
|
|
64
|
+
}
|
|
65
|
+
function runPrisma(args, options) {
|
|
66
|
+
const env = { ...process.env, ...options.env };
|
|
67
|
+
const entry = resolvePrismaEntry(options.packageRoot, options.cwd);
|
|
68
|
+
if (entry) {
|
|
69
|
+
(0, node_child_process_1.execFileSync)(process.execPath, [entry, ...args], {
|
|
70
|
+
cwd: options.cwd,
|
|
71
|
+
stdio: 'inherit',
|
|
72
|
+
env,
|
|
73
|
+
});
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
// Fallbacks when prisma is not installed locally (older global installs)
|
|
77
|
+
const npmBin = which('npm');
|
|
78
|
+
if (npmBin) {
|
|
79
|
+
try {
|
|
80
|
+
(0, node_child_process_1.execFileSync)(npmBin, ['exec', '--yes', `--package=prisma@${exports.PRISMA_VERSION}`, '--', 'prisma', ...args], { cwd: options.cwd, stdio: 'inherit', env });
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
catch {
|
|
84
|
+
/* try npx next */
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
const npxBin = which('npx');
|
|
88
|
+
if (npxBin) {
|
|
89
|
+
(0, node_child_process_1.execFileSync)(npxBin, ['--yes', `prisma@${exports.PRISMA_VERSION}`, ...args], {
|
|
90
|
+
cwd: options.cwd,
|
|
91
|
+
stdio: 'inherit',
|
|
92
|
+
env,
|
|
93
|
+
});
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
throw new Error(`Prisma CLI not found. Reinstall: npm install -g grok-cli-to-openai-compatible\n` +
|
|
97
|
+
`Or in this project: npm install && npx prisma@${exports.PRISMA_VERSION} ${args.join(' ')}`);
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=run-prisma.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-prisma.js","sourceRoot":"","sources":["../../../src/cli/lib/run-prisma.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface SeedAdminResult {
|
|
2
|
+
created: boolean;
|
|
3
|
+
id: string;
|
|
4
|
+
name: string;
|
|
5
|
+
keyPrefix: string;
|
|
6
|
+
/** Plaintext only when a new key was created */
|
|
7
|
+
rawKey?: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Seed bootstrap admin API key using PrismaClient directly (no tsx / npx).
|
|
11
|
+
*/
|
|
12
|
+
export declare function seedAdmin(options?: {
|
|
13
|
+
databaseUrl?: string;
|
|
14
|
+
bootstrapKey?: string;
|
|
15
|
+
port?: string | number;
|
|
16
|
+
}): Promise<SeedAdminResult>;
|
|
17
|
+
//# sourceMappingURL=seed-admin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seed-admin.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/seed-admin.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,OAAO,CAAC,EAAE;IACxC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CACxB,GAAG,OAAO,CAAC,eAAe,CAAC,CA6E3B"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.seedAdmin = seedAdmin;
|
|
4
|
+
const node_crypto_1 = require("node:crypto");
|
|
5
|
+
const client_1 = require("@prisma/client");
|
|
6
|
+
function createApiKeySecret() {
|
|
7
|
+
return `gk_live_${(0, node_crypto_1.randomBytes)(24).toString('base64url')}`;
|
|
8
|
+
}
|
|
9
|
+
function hashApiKey(rawKey) {
|
|
10
|
+
return (0, node_crypto_1.createHash)('sha256').update(rawKey, 'utf8').digest('hex');
|
|
11
|
+
}
|
|
12
|
+
function apiKeyPrefix(rawKey) {
|
|
13
|
+
return rawKey.slice(0, 16);
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Seed bootstrap admin API key using PrismaClient directly (no tsx / npx).
|
|
17
|
+
*/
|
|
18
|
+
async function seedAdmin(options) {
|
|
19
|
+
const databaseUrl = options?.databaseUrl || process.env.DATABASE_URL;
|
|
20
|
+
if (!databaseUrl) {
|
|
21
|
+
throw new Error('DATABASE_URL is required for seed');
|
|
22
|
+
}
|
|
23
|
+
const prisma = new client_1.PrismaClient({
|
|
24
|
+
datasources: { db: { url: databaseUrl } },
|
|
25
|
+
});
|
|
26
|
+
try {
|
|
27
|
+
const existingAdmin = await prisma.apiKey.findFirst({
|
|
28
|
+
where: { role: 'admin', isActive: true },
|
|
29
|
+
});
|
|
30
|
+
if (existingAdmin) {
|
|
31
|
+
await prisma.apiKey.update({
|
|
32
|
+
where: { id: existingAdmin.id },
|
|
33
|
+
data: { mode: 'agent' },
|
|
34
|
+
});
|
|
35
|
+
const port = String(options?.port ?? process.env.PORT ?? '3847');
|
|
36
|
+
console.log('Admin API key already exists:');
|
|
37
|
+
console.log(` id: ${existingAdmin.id}`);
|
|
38
|
+
console.log(` name: ${existingAdmin.name}`);
|
|
39
|
+
console.log(` prefix: ${existingAdmin.keyPrefix}`);
|
|
40
|
+
console.log(' mode: agent (ensured)');
|
|
41
|
+
console.log(`Admin panel: http://127.0.0.1:${port}/admin/`);
|
|
42
|
+
console.log('Plaintext key is not recoverable. Create a new admin key via API if needed.');
|
|
43
|
+
return {
|
|
44
|
+
created: false,
|
|
45
|
+
id: existingAdmin.id,
|
|
46
|
+
name: existingAdmin.name,
|
|
47
|
+
keyPrefix: existingAdmin.keyPrefix,
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
const rawKey = options?.bootstrapKey?.trim() ||
|
|
51
|
+
process.env.ADMIN_BOOTSTRAP_KEY?.trim() ||
|
|
52
|
+
createApiKeySecret();
|
|
53
|
+
const keyHash = hashApiKey(rawKey);
|
|
54
|
+
const prefix = apiKeyPrefix(rawKey);
|
|
55
|
+
const created = await prisma.apiKey.create({
|
|
56
|
+
data: {
|
|
57
|
+
id: (0, node_crypto_1.randomUUID)(),
|
|
58
|
+
name: 'bootstrap-admin',
|
|
59
|
+
keyPrefix: prefix,
|
|
60
|
+
keyHash,
|
|
61
|
+
role: 'admin',
|
|
62
|
+
mode: 'agent',
|
|
63
|
+
rateLimit: 120,
|
|
64
|
+
},
|
|
65
|
+
});
|
|
66
|
+
const port = String(options?.port ?? process.env.PORT ?? '3847');
|
|
67
|
+
console.log('Created bootstrap admin API key (store it securely — shown once):');
|
|
68
|
+
console.log(` id: ${created.id}`);
|
|
69
|
+
console.log(` key: ${rawKey}`);
|
|
70
|
+
console.log('');
|
|
71
|
+
console.log(`Admin panel: http://127.0.0.1:${port}/admin/`);
|
|
72
|
+
console.log('CLI: gctoac start | gctoac status | gctoac open');
|
|
73
|
+
console.log('API example:');
|
|
74
|
+
console.log(` curl -s http://127.0.0.1:${port}/admin/api/me -H "Authorization: Bearer ${rawKey}"`);
|
|
75
|
+
return {
|
|
76
|
+
created: true,
|
|
77
|
+
id: created.id,
|
|
78
|
+
name: created.name,
|
|
79
|
+
keyPrefix: created.keyPrefix,
|
|
80
|
+
rawKey,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
finally {
|
|
84
|
+
await prisma.$disconnect();
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=seed-admin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seed-admin.js","sourceRoot":"","sources":["../../../src/cli/lib/seed-admin.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "grok-cli-to-openai-compatible",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.4",
|
|
4
4
|
"description": "OpenAI-compatible API gateway for Grok CLI — with Admin panel, safe mode, and gctoac CLI",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"grok",
|
|
@@ -70,6 +70,7 @@
|
|
|
70
70
|
"multer": "^1.4.5-lts.1",
|
|
71
71
|
"pino": "^9.6.0",
|
|
72
72
|
"pino-http": "^10.4.0",
|
|
73
|
+
"prisma": "6.5.0",
|
|
73
74
|
"zod": "^3.24.2"
|
|
74
75
|
},
|
|
75
76
|
"devDependencies": {
|
|
@@ -79,7 +80,6 @@
|
|
|
79
80
|
"@types/node": "^22.13.10",
|
|
80
81
|
"@vitest/coverage-v8": "^3.0.9",
|
|
81
82
|
"pino-pretty": "^13.0.0",
|
|
82
|
-
"prisma": "6.5.0",
|
|
83
83
|
"tsx": "^4.19.3",
|
|
84
84
|
"typescript": "^5.8.2",
|
|
85
85
|
"vitest": "^3.0.9"
|
package/scripts/prepare.cjs
CHANGED
|
@@ -72,20 +72,25 @@ const schema = path.join(root, 'prisma', 'schema.prisma');
|
|
|
72
72
|
if (fs.existsSync(schema)) {
|
|
73
73
|
log('Generating Prisma client for this platform…');
|
|
74
74
|
try {
|
|
75
|
-
const
|
|
76
|
-
if (
|
|
77
|
-
|
|
78
|
-
run(npmBin, [
|
|
79
|
-
'exec',
|
|
80
|
-
'--yes',
|
|
81
|
-
'--package=prisma@6.5.0',
|
|
82
|
-
'--',
|
|
83
|
-
'prisma',
|
|
84
|
-
'generate',
|
|
85
|
-
]);
|
|
75
|
+
const localPrisma = path.join(root, 'node_modules', 'prisma', 'build', 'index.js');
|
|
76
|
+
if (fs.existsSync(localPrisma)) {
|
|
77
|
+
run(process.execPath, [localPrisma, 'generate']);
|
|
86
78
|
log('Prisma client ready');
|
|
87
79
|
} else {
|
|
88
|
-
|
|
80
|
+
const npmBin = which('npm');
|
|
81
|
+
if (npmBin) {
|
|
82
|
+
run(npmBin, [
|
|
83
|
+
'exec',
|
|
84
|
+
'--yes',
|
|
85
|
+
'--package=prisma@6.5.0',
|
|
86
|
+
'--',
|
|
87
|
+
'prisma',
|
|
88
|
+
'generate',
|
|
89
|
+
]);
|
|
90
|
+
log('Prisma client ready');
|
|
91
|
+
} else {
|
|
92
|
+
warn('prisma CLI not found — skip generate (run: npm install)');
|
|
93
|
+
}
|
|
89
94
|
}
|
|
90
95
|
} catch (e) {
|
|
91
96
|
warn(`prisma generate failed: ${e instanceof Error ? e.message : e}`);
|