grok-cli-to-openai-compatible 1.2.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/.env.example +41 -0
- package/LICENSE +21 -0
- package/README.md +484 -0
- package/dist/app.d.ts +3 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +67 -0
- package/dist/app.js.map +1 -0
- package/dist/cli/commands/doctor.d.ts +5 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -0
- package/dist/cli/commands/doctor.js +77 -0
- package/dist/cli/commands/doctor.js.map +1 -0
- package/dist/cli/commands/migrate.d.ts +5 -0
- package/dist/cli/commands/migrate.d.ts.map +1 -0
- package/dist/cli/commands/migrate.js +25 -0
- package/dist/cli/commands/migrate.js.map +1 -0
- package/dist/cli/commands/open.d.ts +6 -0
- package/dist/cli/commands/open.d.ts.map +1 -0
- package/dist/cli/commands/open.js +24 -0
- package/dist/cli/commands/open.js.map +1 -0
- package/dist/cli/commands/restart.d.ts +7 -0
- package/dist/cli/commands/restart.d.ts.map +1 -0
- package/dist/cli/commands/restart.js +12 -0
- package/dist/cli/commands/restart.js.map +1 -0
- package/dist/cli/commands/seed.d.ts +5 -0
- package/dist/cli/commands/seed.d.ts.map +1 -0
- package/dist/cli/commands/seed.js +38 -0
- package/dist/cli/commands/seed.js.map +1 -0
- package/dist/cli/commands/setup.d.ts +6 -0
- package/dist/cli/commands/setup.d.ts.map +1 -0
- package/dist/cli/commands/setup.js +73 -0
- package/dist/cli/commands/setup.js.map +1 -0
- package/dist/cli/commands/start.d.ts +7 -0
- package/dist/cli/commands/start.d.ts.map +1 -0
- package/dist/cli/commands/start.js +57 -0
- package/dist/cli/commands/start.js.map +1 -0
- package/dist/cli/commands/status.d.ts +5 -0
- package/dist/cli/commands/status.d.ts.map +1 -0
- package/dist/cli/commands/status.js +42 -0
- package/dist/cli/commands/status.js.map +1 -0
- package/dist/cli/commands/stop.d.ts +5 -0
- package/dist/cli/commands/stop.d.ts.map +1 -0
- package/dist/cli/commands/stop.js +21 -0
- package/dist/cli/commands/stop.js.map +1 -0
- package/dist/cli/commands/update.d.ts +8 -0
- package/dist/cli/commands/update.d.ts.map +1 -0
- package/dist/cli/commands/update.js +58 -0
- package/dist/cli/commands/update.js.map +1 -0
- package/dist/cli/commands/version.d.ts +2 -0
- package/dist/cli/commands/version.d.ts.map +1 -0
- package/dist/cli/commands/version.js +16 -0
- package/dist/cli/commands/version.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +128 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/lib/env-file.d.ts +7 -0
- package/dist/cli/lib/env-file.d.ts.map +1 -0
- package/dist/cli/lib/env-file.js +99 -0
- package/dist/cli/lib/env-file.js.map +1 -0
- package/dist/cli/lib/paths.d.ts +27 -0
- package/dist/cli/lib/paths.d.ts.map +1 -0
- package/dist/cli/lib/paths.js +90 -0
- package/dist/cli/lib/paths.js.map +1 -0
- package/dist/cli/lib/print.d.ts +10 -0
- package/dist/cli/lib/print.d.ts.map +1 -0
- package/dist/cli/lib/print.js +28 -0
- package/dist/cli/lib/print.js.map +1 -0
- package/dist/cli/lib/process-mgr.d.ts +8 -0
- package/dist/cli/lib/process-mgr.d.ts.map +1 -0
- package/dist/cli/lib/process-mgr.js +105 -0
- package/dist/cli/lib/process-mgr.js.map +1 -0
- package/dist/config/constants.d.ts +60 -0
- package/dist/config/constants.d.ts.map +1 -0
- package/dist/config/constants.js +127 -0
- package/dist/config/constants.js.map +1 -0
- package/dist/config/cors.d.ts +3 -0
- package/dist/config/cors.d.ts.map +1 -0
- package/dist/config/cors.js +22 -0
- package/dist/config/cors.js.map +1 -0
- package/dist/config/database.d.ts +4 -0
- package/dist/config/database.d.ts.map +1 -0
- package/dist/config/database.js +18 -0
- package/dist/config/database.js.map +1 -0
- package/dist/config/env.d.ts +38 -0
- package/dist/config/env.d.ts.map +1 -0
- package/dist/config/env.js +97 -0
- package/dist/config/env.js.map +1 -0
- package/dist/controllers/admin.controller.d.ts +21 -0
- package/dist/controllers/admin.controller.d.ts.map +1 -0
- package/dist/controllers/admin.controller.js +315 -0
- package/dist/controllers/admin.controller.js.map +1 -0
- package/dist/controllers/api-key.controller.d.ts +7 -0
- package/dist/controllers/api-key.controller.d.ts.map +1 -0
- package/dist/controllers/api-key.controller.js +48 -0
- package/dist/controllers/api-key.controller.js.map +1 -0
- package/dist/controllers/chat.controller.d.ts +5 -0
- package/dist/controllers/chat.controller.d.ts.map +1 -0
- package/dist/controllers/chat.controller.js +27 -0
- package/dist/controllers/chat.controller.js.map +1 -0
- package/dist/controllers/document.controller.d.ts +8 -0
- package/dist/controllers/document.controller.d.ts.map +1 -0
- package/dist/controllers/document.controller.js +53 -0
- package/dist/controllers/document.controller.js.map +1 -0
- package/dist/controllers/health.controller.d.ts +6 -0
- package/dist/controllers/health.controller.d.ts.map +1 -0
- package/dist/controllers/health.controller.js +39 -0
- package/dist/controllers/health.controller.js.map +1 -0
- package/dist/controllers/models.controller.d.ts +6 -0
- package/dist/controllers/models.controller.d.ts.map +1 -0
- package/dist/controllers/models.controller.js +18 -0
- package/dist/controllers/models.controller.js.map +1 -0
- package/dist/dto/admin.dto.d.ts +104 -0
- package/dist/dto/admin.dto.d.ts.map +1 -0
- package/dist/dto/admin.dto.js +45 -0
- package/dist/dto/admin.dto.js.map +1 -0
- package/dist/dto/api-key.dto.d.ts +27 -0
- package/dist/dto/api-key.dto.d.ts.map +1 -0
- package/dist/dto/api-key.dto.js +15 -0
- package/dist/dto/api-key.dto.js.map +1 -0
- package/dist/dto/chat.dto.d.ts +70 -0
- package/dist/dto/chat.dto.d.ts.map +1 -0
- package/dist/dto/chat.dto.js +49 -0
- package/dist/dto/chat.dto.js.map +1 -0
- package/dist/dto/document.dto.d.ts +21 -0
- package/dist/dto/document.dto.d.ts.map +1 -0
- package/dist/dto/document.dto.js +12 -0
- package/dist/dto/document.dto.js.map +1 -0
- package/dist/entities/api-key.entity.d.ts +33 -0
- package/dist/entities/api-key.entity.d.ts.map +1 -0
- package/dist/entities/api-key.entity.js +3 -0
- package/dist/entities/api-key.entity.js.map +1 -0
- package/dist/entities/audit-log.entity.d.ts +19 -0
- package/dist/entities/audit-log.entity.d.ts.map +1 -0
- package/dist/entities/audit-log.entity.js +3 -0
- package/dist/entities/audit-log.entity.js.map +1 -0
- package/dist/entities/chat-request.entity.d.ts +21 -0
- package/dist/entities/chat-request.entity.d.ts.map +1 -0
- package/dist/entities/chat-request.entity.js +3 -0
- package/dist/entities/chat-request.entity.js.map +1 -0
- package/dist/entities/document.entity.d.ts +22 -0
- package/dist/entities/document.entity.d.ts.map +1 -0
- package/dist/entities/document.entity.js +3 -0
- package/dist/entities/document.entity.js.map +1 -0
- package/dist/exceptions/error-codes.d.ts +18 -0
- package/dist/exceptions/error-codes.d.ts.map +1 -0
- package/dist/exceptions/error-codes.js +20 -0
- package/dist/exceptions/error-codes.js.map +1 -0
- package/dist/exceptions/exception.factory.d.ts +18 -0
- package/dist/exceptions/exception.factory.d.ts.map +1 -0
- package/dist/exceptions/exception.factory.js +50 -0
- package/dist/exceptions/exception.factory.js.map +1 -0
- package/dist/exceptions/http.exception.d.ts +18 -0
- package/dist/exceptions/http.exception.d.ts.map +1 -0
- package/dist/exceptions/http.exception.js +45 -0
- package/dist/exceptions/http.exception.js.map +1 -0
- package/dist/interfaces/auth.interface.d.ts +14 -0
- package/dist/interfaces/auth.interface.d.ts.map +1 -0
- package/dist/interfaces/auth.interface.js +3 -0
- package/dist/interfaces/auth.interface.js.map +1 -0
- package/dist/interfaces/express.interface.d.ts +11 -0
- package/dist/interfaces/express.interface.d.ts.map +1 -0
- package/dist/interfaces/express.interface.js +3 -0
- package/dist/interfaces/express.interface.js.map +1 -0
- package/dist/interfaces/grok.interface.d.ts +41 -0
- package/dist/interfaces/grok.interface.d.ts.map +1 -0
- package/dist/interfaces/grok.interface.js +3 -0
- package/dist/interfaces/grok.interface.js.map +1 -0
- package/dist/interfaces/openai.interface.d.ts +97 -0
- package/dist/interfaces/openai.interface.d.ts.map +1 -0
- package/dist/interfaces/openai.interface.js +3 -0
- package/dist/interfaces/openai.interface.js.map +1 -0
- package/dist/middlewares/auth.middleware.d.ts +5 -0
- package/dist/middlewares/auth.middleware.d.ts.map +1 -0
- package/dist/middlewares/auth.middleware.js +40 -0
- package/dist/middlewares/auth.middleware.js.map +1 -0
- package/dist/middlewares/concurrency.middleware.d.ts +6 -0
- package/dist/middlewares/concurrency.middleware.d.ts.map +1 -0
- package/dist/middlewares/concurrency.middleware.js +16 -0
- package/dist/middlewares/concurrency.middleware.js.map +1 -0
- package/dist/middlewares/error.middleware.d.ts +4 -0
- package/dist/middlewares/error.middleware.d.ts.map +1 -0
- package/dist/middlewares/error.middleware.js +38 -0
- package/dist/middlewares/error.middleware.js.map +1 -0
- package/dist/middlewares/rate-limit.middleware.d.ts +3 -0
- package/dist/middlewares/rate-limit.middleware.d.ts.map +1 -0
- package/dist/middlewares/rate-limit.middleware.js +40 -0
- package/dist/middlewares/rate-limit.middleware.js.map +1 -0
- package/dist/middlewares/request-id.middleware.d.ts +3 -0
- package/dist/middlewares/request-id.middleware.d.ts.map +1 -0
- package/dist/middlewares/request-id.middleware.js +12 -0
- package/dist/middlewares/request-id.middleware.js.map +1 -0
- package/dist/middlewares/upload.middleware.d.ts +2 -0
- package/dist/middlewares/upload.middleware.d.ts.map +1 -0
- package/dist/middlewares/upload.middleware.js +26 -0
- package/dist/middlewares/upload.middleware.js.map +1 -0
- package/dist/middlewares/validate.middleware.d.ts +6 -0
- package/dist/middlewares/validate.middleware.d.ts.map +1 -0
- package/dist/middlewares/validate.middleware.js +21 -0
- package/dist/middlewares/validate.middleware.js.map +1 -0
- package/dist/routes/admin.routes.d.ts +3 -0
- package/dist/routes/admin.routes.d.ts.map +1 -0
- package/dist/routes/admin.routes.js +44 -0
- package/dist/routes/admin.routes.js.map +1 -0
- package/dist/routes/index.d.ts +3 -0
- package/dist/routes/index.d.ts.map +1 -0
- package/dist/routes/index.js +20 -0
- package/dist/routes/index.js.map +1 -0
- package/dist/routes/v1/api-keys.routes.d.ts +3 -0
- package/dist/routes/v1/api-keys.routes.d.ts.map +1 -0
- package/dist/routes/v1/api-keys.routes.js +13 -0
- package/dist/routes/v1/api-keys.routes.js.map +1 -0
- package/dist/routes/v1/chat.routes.d.ts +3 -0
- package/dist/routes/v1/chat.routes.d.ts.map +1 -0
- package/dist/routes/v1/chat.routes.js +13 -0
- package/dist/routes/v1/chat.routes.js.map +1 -0
- package/dist/routes/v1/documents.routes.d.ts +3 -0
- package/dist/routes/v1/documents.routes.d.ts.map +1 -0
- package/dist/routes/v1/documents.routes.js +15 -0
- package/dist/routes/v1/documents.routes.js.map +1 -0
- package/dist/routes/v1/models.routes.d.ts +3 -0
- package/dist/routes/v1/models.routes.d.ts.map +1 -0
- package/dist/routes/v1/models.routes.js +10 -0
- package/dist/routes/v1/models.routes.js.map +1 -0
- package/dist/server.d.ts +2 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +42 -0
- package/dist/server.js.map +1 -0
- package/dist/services/api-key.service.d.ts +33 -0
- package/dist/services/api-key.service.d.ts.map +1 -0
- package/dist/services/api-key.service.js +168 -0
- package/dist/services/api-key.service.js.map +1 -0
- package/dist/services/audit.service.d.ts +6 -0
- package/dist/services/audit.service.d.ts.map +1 -0
- package/dist/services/audit.service.js +21 -0
- package/dist/services/audit.service.js.map +1 -0
- package/dist/services/chat-admin.service.d.ts +76 -0
- package/dist/services/chat-admin.service.d.ts.map +1 -0
- package/dist/services/chat-admin.service.js +160 -0
- package/dist/services/chat-admin.service.js.map +1 -0
- package/dist/services/chat.service.d.ts +19 -0
- package/dist/services/chat.service.d.ts.map +1 -0
- package/dist/services/chat.service.js +335 -0
- package/dist/services/chat.service.js.map +1 -0
- package/dist/services/document.service.d.ts +37 -0
- package/dist/services/document.service.d.ts.map +1 -0
- package/dist/services/document.service.js +206 -0
- package/dist/services/document.service.js.map +1 -0
- package/dist/services/encryption.service.d.ts +8 -0
- package/dist/services/encryption.service.d.ts.map +1 -0
- package/dist/services/encryption.service.js +34 -0
- package/dist/services/encryption.service.js.map +1 -0
- package/dist/services/grok-cli.service.d.ts +18 -0
- package/dist/services/grok-cli.service.d.ts.map +1 -0
- package/dist/services/grok-cli.service.js +213 -0
- package/dist/services/grok-cli.service.js.map +1 -0
- package/dist/services/models.service.d.ts +10 -0
- package/dist/services/models.service.d.ts.map +1 -0
- package/dist/services/models.service.js +43 -0
- package/dist/services/models.service.js.map +1 -0
- package/dist/services/policy.service.d.ts +20 -0
- package/dist/services/policy.service.d.ts.map +1 -0
- package/dist/services/policy.service.js +66 -0
- package/dist/services/policy.service.js.map +1 -0
- package/dist/services/settings.service.d.ts +14 -0
- package/dist/services/settings.service.d.ts.map +1 -0
- package/dist/services/settings.service.js +86 -0
- package/dist/services/settings.service.js.map +1 -0
- package/dist/services/stats.service.d.ts +35 -0
- package/dist/services/stats.service.d.ts.map +1 -0
- package/dist/services/stats.service.js +59 -0
- package/dist/services/stats.service.js.map +1 -0
- package/dist/services/update.service.d.ts +44 -0
- package/dist/services/update.service.d.ts.map +1 -0
- package/dist/services/update.service.js +278 -0
- package/dist/services/update.service.js.map +1 -0
- package/dist/utils/async-handler.d.ts +5 -0
- package/dist/utils/async-handler.d.ts.map +1 -0
- package/dist/utils/async-handler.js +9 -0
- package/dist/utils/async-handler.js.map +1 -0
- package/dist/utils/id.d.ts +6 -0
- package/dist/utils/id.d.ts.map +1 -0
- package/dist/utils/id.js +24 -0
- package/dist/utils/id.js.map +1 -0
- package/dist/utils/logger.d.ts +3 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +34 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/openai-mapper.d.ts +30 -0
- package/dist/utils/openai-mapper.d.ts.map +1 -0
- package/dist/utils/openai-mapper.js +176 -0
- package/dist/utils/openai-mapper.js.map +1 -0
- package/dist/utils/path-safe.d.ts +4 -0
- package/dist/utils/path-safe.d.ts.map +1 -0
- package/dist/utils/path-safe.js +37 -0
- package/dist/utils/path-safe.js.map +1 -0
- package/dist/utils/stream.d.ts +5 -0
- package/dist/utils/stream.d.ts.map +1 -0
- package/dist/utils/stream.js +22 -0
- package/dist/utils/stream.js.map +1 -0
- package/package.json +87 -0
- package/prisma/migrations/20260714084159_init_sqlite/migration.sql +106 -0
- package/prisma/migrations/20260714090338_safe_mode_admin/migration.sql +36 -0
- package/prisma/migrations/migration_lock.toml +3 -0
- package/prisma/schema.prisma +122 -0
- package/prisma/seed.ts +79 -0
- package/public/admin/app.js +734 -0
- package/public/admin/index.html +13 -0
- package/public/admin/styles.css +296 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
+
};
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
8
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
+
const commander_1 = require("commander");
|
|
10
|
+
const setup_1 = require("./commands/setup");
|
|
11
|
+
const start_1 = require("./commands/start");
|
|
12
|
+
const stop_1 = require("./commands/stop");
|
|
13
|
+
const restart_1 = require("./commands/restart");
|
|
14
|
+
const status_1 = require("./commands/status");
|
|
15
|
+
const migrate_1 = require("./commands/migrate");
|
|
16
|
+
const seed_1 = require("./commands/seed");
|
|
17
|
+
const doctor_1 = require("./commands/doctor");
|
|
18
|
+
const open_1 = require("./commands/open");
|
|
19
|
+
const version_1 = require("./commands/version");
|
|
20
|
+
const update_1 = require("./commands/update");
|
|
21
|
+
const paths_1 = require("./lib/paths");
|
|
22
|
+
function readPkgVersion() {
|
|
23
|
+
try {
|
|
24
|
+
const pkgPath = node_path_1.default.join(__dirname, '../../package.json');
|
|
25
|
+
const pkg = JSON.parse(node_fs_1.default.readFileSync(pkgPath, 'utf8'));
|
|
26
|
+
return pkg.version || '0.0.0';
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return '0.0.0';
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
const program = new commander_1.Command();
|
|
33
|
+
program
|
|
34
|
+
.name('gctoac')
|
|
35
|
+
.description('Grok CLI → OpenAI-compatible gateway controller (alias: gcoa)')
|
|
36
|
+
.option('--home <path>', 'Data home directory (default: ~/.gctoac or project root)')
|
|
37
|
+
.option('--port <n>', `HTTP port (default ${paths_1.DEFAULT_PORT})`, (v) => Number(v))
|
|
38
|
+
.version(readPkgVersion(), '-V, --version');
|
|
39
|
+
function globalOpts() {
|
|
40
|
+
const g = program.opts();
|
|
41
|
+
return {
|
|
42
|
+
home: g.home,
|
|
43
|
+
port: g.port,
|
|
44
|
+
forceHome: Boolean(g.home),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
program
|
|
48
|
+
.command('setup')
|
|
49
|
+
.description('Create data dirs, .env, migrate DB, seed admin key')
|
|
50
|
+
.action(async () => {
|
|
51
|
+
await (0, setup_1.cmdSetup)(globalOpts());
|
|
52
|
+
});
|
|
53
|
+
program
|
|
54
|
+
.command('start')
|
|
55
|
+
.description(`Start gateway (default port ${paths_1.DEFAULT_PORT})`)
|
|
56
|
+
.option('-f, --foreground', 'Run in foreground')
|
|
57
|
+
.action(async (opts) => {
|
|
58
|
+
await (0, start_1.cmdStart)({ ...globalOpts(), foreground: opts.foreground });
|
|
59
|
+
});
|
|
60
|
+
program
|
|
61
|
+
.command('stop')
|
|
62
|
+
.description('Stop background gateway')
|
|
63
|
+
.action(async () => {
|
|
64
|
+
await (0, stop_1.cmdStop)(globalOpts());
|
|
65
|
+
});
|
|
66
|
+
program
|
|
67
|
+
.command('restart')
|
|
68
|
+
.description('Restart gateway')
|
|
69
|
+
.option('-f, --foreground', 'Run in foreground')
|
|
70
|
+
.action(async (opts) => {
|
|
71
|
+
await (0, restart_1.cmdRestart)({ ...globalOpts(), foreground: opts.foreground });
|
|
72
|
+
});
|
|
73
|
+
program
|
|
74
|
+
.command('status')
|
|
75
|
+
.description('Show process + health status')
|
|
76
|
+
.action(async () => {
|
|
77
|
+
await (0, status_1.cmdStatus)(globalOpts());
|
|
78
|
+
});
|
|
79
|
+
program
|
|
80
|
+
.command('migrate')
|
|
81
|
+
.description('Run prisma migrate deploy')
|
|
82
|
+
.action(async () => {
|
|
83
|
+
await (0, migrate_1.cmdMigrate)(globalOpts());
|
|
84
|
+
});
|
|
85
|
+
program
|
|
86
|
+
.command('seed')
|
|
87
|
+
.description('Seed bootstrap admin API key')
|
|
88
|
+
.action(async () => {
|
|
89
|
+
await (0, seed_1.cmdSeed)(globalOpts());
|
|
90
|
+
});
|
|
91
|
+
program
|
|
92
|
+
.command('doctor')
|
|
93
|
+
.description('Check Node, Grok CLI, env, build, process')
|
|
94
|
+
.action(async () => {
|
|
95
|
+
await (0, doctor_1.cmdDoctor)(globalOpts());
|
|
96
|
+
});
|
|
97
|
+
program
|
|
98
|
+
.command('open')
|
|
99
|
+
.description('Print API / Admin URLs')
|
|
100
|
+
.option('--admin', 'Print admin URL only')
|
|
101
|
+
.action(async (opts) => {
|
|
102
|
+
await (0, open_1.cmdOpen)({ ...globalOpts(), admin: opts.admin });
|
|
103
|
+
});
|
|
104
|
+
program
|
|
105
|
+
.command('version')
|
|
106
|
+
.description('Show package version')
|
|
107
|
+
.action(() => {
|
|
108
|
+
(0, version_1.cmdVersion)();
|
|
109
|
+
});
|
|
110
|
+
program
|
|
111
|
+
.command('update')
|
|
112
|
+
.description('Self-update this package (npm / git / GitHub)')
|
|
113
|
+
.option('--check', 'Only check for updates')
|
|
114
|
+
.option('--no-restart', 'Do not restart gateway after update')
|
|
115
|
+
.option('--channel <name>', 'Force channel: auto | git | npm-global | npm-local', 'auto')
|
|
116
|
+
.action(async (opts) => {
|
|
117
|
+
await (0, update_1.cmdUpdate)({
|
|
118
|
+
...globalOpts(),
|
|
119
|
+
check: opts.check,
|
|
120
|
+
restart: opts.restart,
|
|
121
|
+
channel: opts.channel,
|
|
122
|
+
});
|
|
123
|
+
});
|
|
124
|
+
program.parseAsync(process.argv).catch((err) => {
|
|
125
|
+
console.error(err instanceof Error ? err.message : err);
|
|
126
|
+
process.exit(1);
|
|
127
|
+
});
|
|
128
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { RuntimePaths } from './paths';
|
|
2
|
+
export declare function readEnvFile(filePath: string): Record<string, string>;
|
|
3
|
+
export declare function writeEnvFile(filePath: string, vars: Record<string, string>): void;
|
|
4
|
+
export declare function upsertEnvFile(filePath: string, updates: Record<string, string>): Record<string, string>;
|
|
5
|
+
export declare function ensureEnvFile(paths: RuntimePaths, port?: number): Record<string, string>;
|
|
6
|
+
export declare function loadEnvIntoProcess(filePath: string): void;
|
|
7
|
+
//# sourceMappingURL=env-file.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-file.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/env-file.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAG5C,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAmBpE;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAOjF;AAED,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC9B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAKxB;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,SAAe,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAyC9F;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAOzD"}
|
|
@@ -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.readEnvFile = readEnvFile;
|
|
7
|
+
exports.writeEnvFile = writeEnvFile;
|
|
8
|
+
exports.upsertEnvFile = upsertEnvFile;
|
|
9
|
+
exports.ensureEnvFile = ensureEnvFile;
|
|
10
|
+
exports.loadEnvIntoProcess = loadEnvIntoProcess;
|
|
11
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
12
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
13
|
+
const node_crypto_1 = require("node:crypto");
|
|
14
|
+
const paths_1 = require("./paths");
|
|
15
|
+
function readEnvFile(filePath) {
|
|
16
|
+
if (!node_fs_1.default.existsSync(filePath))
|
|
17
|
+
return {};
|
|
18
|
+
const out = {};
|
|
19
|
+
for (const line of node_fs_1.default.readFileSync(filePath, 'utf8').split('\n')) {
|
|
20
|
+
const trimmed = line.trim();
|
|
21
|
+
if (!trimmed || trimmed.startsWith('#'))
|
|
22
|
+
continue;
|
|
23
|
+
const eq = trimmed.indexOf('=');
|
|
24
|
+
if (eq <= 0)
|
|
25
|
+
continue;
|
|
26
|
+
const key = trimmed.slice(0, eq).trim();
|
|
27
|
+
let val = trimmed.slice(eq + 1).trim();
|
|
28
|
+
if ((val.startsWith('"') && val.endsWith('"')) ||
|
|
29
|
+
(val.startsWith("'") && val.endsWith("'"))) {
|
|
30
|
+
val = val.slice(1, -1);
|
|
31
|
+
}
|
|
32
|
+
out[key] = val;
|
|
33
|
+
}
|
|
34
|
+
return out;
|
|
35
|
+
}
|
|
36
|
+
function writeEnvFile(filePath, vars) {
|
|
37
|
+
const lines = Object.entries(vars).map(([k, v]) => {
|
|
38
|
+
const needsQuote = /[\s#"'\\]/.test(v) || v.includes('=');
|
|
39
|
+
return needsQuote ? `${k}="${v.replace(/\\/g, '\\\\').replace(/"/g, '\\"')}"` : `${k}=${v}`;
|
|
40
|
+
});
|
|
41
|
+
node_fs_1.default.mkdirSync(node_path_1.default.dirname(filePath), { recursive: true });
|
|
42
|
+
node_fs_1.default.writeFileSync(filePath, lines.join('\n') + '\n', { mode: 0o600 });
|
|
43
|
+
}
|
|
44
|
+
function upsertEnvFile(filePath, updates) {
|
|
45
|
+
const current = readEnvFile(filePath);
|
|
46
|
+
const next = { ...current, ...updates };
|
|
47
|
+
writeEnvFile(filePath, next);
|
|
48
|
+
return next;
|
|
49
|
+
}
|
|
50
|
+
function ensureEnvFile(paths, port = paths_1.DEFAULT_PORT) {
|
|
51
|
+
const existing = readEnvFile(paths.envFile);
|
|
52
|
+
if (Object.keys(existing).length > 0 && existing.ENCRYPTION_KEY) {
|
|
53
|
+
// keep user config; ensure critical paths
|
|
54
|
+
return upsertEnvFile(paths.envFile, {
|
|
55
|
+
DATABASE_URL: paths.databaseUrl,
|
|
56
|
+
STORAGE_DIR: paths.storageDir,
|
|
57
|
+
PORT: existing.PORT || String(port),
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
const encryptionKey = (0, node_crypto_1.randomBytes)(32).toString('base64');
|
|
61
|
+
const vars = {
|
|
62
|
+
NODE_ENV: 'production',
|
|
63
|
+
PORT: String(port),
|
|
64
|
+
HOST: '0.0.0.0',
|
|
65
|
+
DATABASE_URL: paths.databaseUrl,
|
|
66
|
+
ENCRYPTION_KEY: encryptionKey,
|
|
67
|
+
GROK_BIN: 'grok',
|
|
68
|
+
GROK_DEFAULT_MODEL: 'grok-4.5',
|
|
69
|
+
GROK_DEFAULT_CWD: paths.home,
|
|
70
|
+
GROK_CWD_ALLOWLIST: paths.home,
|
|
71
|
+
GROK_TIMEOUT_MS: '600000',
|
|
72
|
+
GROK_MAX_CONCURRENT: '4',
|
|
73
|
+
GROK_ALWAYS_APPROVE: 'true',
|
|
74
|
+
GROK_SAFE_MODE: 'false',
|
|
75
|
+
GROK_SAFE_MAX_TURNS: '4',
|
|
76
|
+
GROK_SAFE_TIMEOUT_MS: '120000',
|
|
77
|
+
ADMIN_PANEL_ENABLED: 'true',
|
|
78
|
+
CORS_ORIGINS: `http://localhost:${port},http://127.0.0.1:${port}`,
|
|
79
|
+
RATE_LIMIT_WINDOW_MS: '60000',
|
|
80
|
+
RATE_LIMIT_MAX: '120',
|
|
81
|
+
BODY_LIMIT: '1mb',
|
|
82
|
+
UPLOAD_MAX_BYTES: '10485760',
|
|
83
|
+
DOCUMENT_DB_MAX_BYTES: '1048576',
|
|
84
|
+
STORAGE_DIR: paths.storageDir,
|
|
85
|
+
LOG_LEVEL: 'info',
|
|
86
|
+
TRUST_PROXY: 'true',
|
|
87
|
+
};
|
|
88
|
+
writeEnvFile(paths.envFile, vars);
|
|
89
|
+
return vars;
|
|
90
|
+
}
|
|
91
|
+
function loadEnvIntoProcess(filePath) {
|
|
92
|
+
const vars = readEnvFile(filePath);
|
|
93
|
+
for (const [k, v] of Object.entries(vars)) {
|
|
94
|
+
if (process.env[k] === undefined) {
|
|
95
|
+
process.env[k] = v;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=env-file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"env-file.js","sourceRoot":"","sources":["../../../src/cli/lib/env-file.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export declare const PACKAGE_NAME = "grok-cli-to-openai-compatible";
|
|
2
|
+
export declare const DEFAULT_PORT = 3847;
|
|
3
|
+
/** Installed package root (contains package.json, prisma/, dist/) */
|
|
4
|
+
export declare function getPackageRoot(): string;
|
|
5
|
+
export declare function getDefaultHome(): string;
|
|
6
|
+
export interface RuntimePaths {
|
|
7
|
+
mode: 'home' | 'project';
|
|
8
|
+
home: string;
|
|
9
|
+
packageRoot: string;
|
|
10
|
+
envFile: string;
|
|
11
|
+
dataDir: string;
|
|
12
|
+
storageDir: string;
|
|
13
|
+
logsDir: string;
|
|
14
|
+
pidFile: string;
|
|
15
|
+
databaseUrl: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Prefer project-local data when running inside this repo checkout.
|
|
19
|
+
* Otherwise use ~/.gctoac (or GCTOAC_HOME / --home).
|
|
20
|
+
*/
|
|
21
|
+
export declare function resolveRuntimePaths(options?: {
|
|
22
|
+
home?: string;
|
|
23
|
+
forceHome?: boolean;
|
|
24
|
+
}): RuntimePaths;
|
|
25
|
+
export declare function isProjectCheckout(dir: string): boolean;
|
|
26
|
+
export declare function ensureHomeDirs(paths: RuntimePaths): void;
|
|
27
|
+
//# sourceMappingURL=paths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/paths.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,YAAY,kCAAkC,CAAC;AAC5D,eAAO,MAAM,YAAY,OAAO,CAAC;AAEjC,qEAAqE;AACrE,wBAAgB,cAAc,IAAI,MAAM,CAGvC;AAED,wBAAgB,cAAc,IAAI,MAAM,CAKvC;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,CAAC,EAAE;IAC5C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,GAAG,YAAY,CAuCf;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAUtD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,YAAY,GAAG,IAAI,CAKxD"}
|
|
@@ -0,0 +1,90 @@
|
|
|
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.DEFAULT_PORT = exports.PACKAGE_NAME = void 0;
|
|
7
|
+
exports.getPackageRoot = getPackageRoot;
|
|
8
|
+
exports.getDefaultHome = getDefaultHome;
|
|
9
|
+
exports.resolveRuntimePaths = resolveRuntimePaths;
|
|
10
|
+
exports.isProjectCheckout = isProjectCheckout;
|
|
11
|
+
exports.ensureHomeDirs = ensureHomeDirs;
|
|
12
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
13
|
+
const node_os_1 = __importDefault(require("node:os"));
|
|
14
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
15
|
+
exports.PACKAGE_NAME = 'grok-cli-to-openai-compatible';
|
|
16
|
+
exports.DEFAULT_PORT = 3847;
|
|
17
|
+
/** Installed package root (contains package.json, prisma/, dist/) */
|
|
18
|
+
function getPackageRoot() {
|
|
19
|
+
// dist/cli/lib -> dist/cli -> dist -> package root
|
|
20
|
+
return node_path_1.default.resolve(__dirname, '../../..');
|
|
21
|
+
}
|
|
22
|
+
function getDefaultHome() {
|
|
23
|
+
if (process.env.GCTOAC_HOME?.trim()) {
|
|
24
|
+
return node_path_1.default.resolve(process.env.GCTOAC_HOME.trim());
|
|
25
|
+
}
|
|
26
|
+
return node_path_1.default.join(node_os_1.default.homedir(), '.gctoac');
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Prefer project-local data when running inside this repo checkout.
|
|
30
|
+
* Otherwise use ~/.gctoac (or GCTOAC_HOME / --home).
|
|
31
|
+
*/
|
|
32
|
+
function resolveRuntimePaths(options) {
|
|
33
|
+
const packageRoot = getPackageRoot();
|
|
34
|
+
const cwd = process.cwd();
|
|
35
|
+
let mode = 'home';
|
|
36
|
+
let home = options?.home
|
|
37
|
+
? node_path_1.default.resolve(options.home)
|
|
38
|
+
: getDefaultHome();
|
|
39
|
+
if (!options?.forceHome && !options?.home && isProjectCheckout(cwd)) {
|
|
40
|
+
mode = 'project';
|
|
41
|
+
home = cwd;
|
|
42
|
+
}
|
|
43
|
+
else if (options?.forceHome || options?.home || process.env.GCTOAC_HOME) {
|
|
44
|
+
mode = 'home';
|
|
45
|
+
}
|
|
46
|
+
else if (isProjectCheckout(cwd)) {
|
|
47
|
+
mode = 'project';
|
|
48
|
+
home = cwd;
|
|
49
|
+
}
|
|
50
|
+
const dataDir = node_path_1.default.join(home, 'data');
|
|
51
|
+
const storageDir = node_path_1.default.join(home, 'storage');
|
|
52
|
+
const logsDir = node_path_1.default.join(home, 'logs');
|
|
53
|
+
const envFile = node_path_1.default.join(home, '.env');
|
|
54
|
+
const pidFile = node_path_1.default.join(home, 'gctoac.pid');
|
|
55
|
+
// Absolute file URL is reliable for global install (not relative to prisma/)
|
|
56
|
+
const dbFile = node_path_1.default.resolve(dataDir, 'gateway.db');
|
|
57
|
+
const databaseUrl = `file:${dbFile}`;
|
|
58
|
+
return {
|
|
59
|
+
mode,
|
|
60
|
+
home,
|
|
61
|
+
packageRoot,
|
|
62
|
+
envFile,
|
|
63
|
+
dataDir,
|
|
64
|
+
storageDir,
|
|
65
|
+
logsDir,
|
|
66
|
+
pidFile,
|
|
67
|
+
databaseUrl,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
function isProjectCheckout(dir) {
|
|
71
|
+
try {
|
|
72
|
+
const pkgPath = node_path_1.default.join(dir, 'package.json');
|
|
73
|
+
if (!node_fs_1.default.existsSync(pkgPath))
|
|
74
|
+
return false;
|
|
75
|
+
const pkg = JSON.parse(node_fs_1.default.readFileSync(pkgPath, 'utf8'));
|
|
76
|
+
if (pkg.name !== exports.PACKAGE_NAME)
|
|
77
|
+
return false;
|
|
78
|
+
return node_fs_1.default.existsSync(node_path_1.default.join(dir, 'prisma', 'schema.prisma'));
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
function ensureHomeDirs(paths) {
|
|
85
|
+
node_fs_1.default.mkdirSync(paths.dataDir, { recursive: true });
|
|
86
|
+
node_fs_1.default.mkdirSync(paths.storageDir, { recursive: true });
|
|
87
|
+
node_fs_1.default.mkdirSync(paths.logsDir, { recursive: true });
|
|
88
|
+
node_fs_1.default.mkdirSync(node_path_1.default.join(paths.storageDir, 'sandboxes'), { recursive: true });
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../../../src/cli/lib/paths.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare function info(msg: string): void;
|
|
2
|
+
export declare function ok(msg: string): void;
|
|
3
|
+
export declare function warn(msg: string): void;
|
|
4
|
+
export declare function fail(msg: string): void;
|
|
5
|
+
export declare function baseUrls(port: number, host?: string): {
|
|
6
|
+
api: string;
|
|
7
|
+
admin: string;
|
|
8
|
+
health: string;
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=print.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"print.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/print.ts"],"names":[],"mappings":"AAAA,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEtC;AAED,wBAAgB,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEpC;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEtC;AAED,wBAAgB,IAAI,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAEtC;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,SAAc,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAOzG"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.info = info;
|
|
4
|
+
exports.ok = ok;
|
|
5
|
+
exports.warn = warn;
|
|
6
|
+
exports.fail = fail;
|
|
7
|
+
exports.baseUrls = baseUrls;
|
|
8
|
+
function info(msg) {
|
|
9
|
+
console.log(msg);
|
|
10
|
+
}
|
|
11
|
+
function ok(msg) {
|
|
12
|
+
console.log(`✓ ${msg}`);
|
|
13
|
+
}
|
|
14
|
+
function warn(msg) {
|
|
15
|
+
console.warn(`⚠ ${msg}`);
|
|
16
|
+
}
|
|
17
|
+
function fail(msg) {
|
|
18
|
+
console.error(`✗ ${msg}`);
|
|
19
|
+
}
|
|
20
|
+
function baseUrls(port, host = '127.0.0.1') {
|
|
21
|
+
const h = host === '0.0.0.0' ? '127.0.0.1' : host;
|
|
22
|
+
return {
|
|
23
|
+
api: `http://${h}:${port}/v1`,
|
|
24
|
+
admin: `http://${h}:${port}/admin/`,
|
|
25
|
+
health: `http://${h}:${port}/health`,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=print.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"print.js","sourceRoot":"","sources":["../../../src/cli/lib/print.ts"],"names":[],"mappings":";;AAAA,oBAEC;AAED,gBAEC;AAED,oBAEC;AAED,oBAEC;AAED,4BAOC;AAvBD,SAAgB,IAAI,CAAC,GAAW;IAC9B,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;AACnB,CAAC;AAED,SAAgB,EAAE,CAAC,GAAW;IAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;AAC1B,CAAC;AAED,SAAgB,IAAI,CAAC,GAAW;IAC9B,OAAO,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;AAC3B,CAAC;AAED,SAAgB,IAAI,CAAC,GAAW;IAC9B,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;AAC5B,CAAC;AAED,SAAgB,QAAQ,CAAC,IAAY,EAAE,IAAI,GAAG,WAAW;IACvD,MAAM,CAAC,GAAG,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;IAClD,OAAO;QACL,GAAG,EAAE,UAAU,CAAC,IAAI,IAAI,KAAK;QAC7B,KAAK,EAAE,UAAU,CAAC,IAAI,IAAI,SAAS;QACnC,MAAM,EAAE,UAAU,CAAC,IAAI,IAAI,SAAS;KACrC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { RuntimePaths } from './paths';
|
|
2
|
+
export declare function readPid(pidFile: string): number | null;
|
|
3
|
+
export declare function isProcessRunning(pid: number): boolean;
|
|
4
|
+
export declare function writePid(pidFile: string, pid: number): void;
|
|
5
|
+
export declare function clearPid(pidFile: string): void;
|
|
6
|
+
export declare function startDetached(paths: RuntimePaths, env: NodeJS.ProcessEnv): number;
|
|
7
|
+
export declare function stopProcess(pidFile: string, timeoutMs?: number): Promise<boolean>;
|
|
8
|
+
//# sourceMappingURL=process-mgr.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-mgr.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/process-mgr.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQtD;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAOrD;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAG3D;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAM9C;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,CAAC,UAAU,GAAG,MAAM,CA4BjF;AAED,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,CA+BvF"}
|
|
@@ -0,0 +1,105 @@
|
|
|
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.readPid = readPid;
|
|
7
|
+
exports.isProcessRunning = isProcessRunning;
|
|
8
|
+
exports.writePid = writePid;
|
|
9
|
+
exports.clearPid = clearPid;
|
|
10
|
+
exports.startDetached = startDetached;
|
|
11
|
+
exports.stopProcess = stopProcess;
|
|
12
|
+
const node_fs_1 = __importDefault(require("node:fs"));
|
|
13
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
14
|
+
const node_child_process_1 = require("node:child_process");
|
|
15
|
+
function readPid(pidFile) {
|
|
16
|
+
try {
|
|
17
|
+
if (!node_fs_1.default.existsSync(pidFile))
|
|
18
|
+
return null;
|
|
19
|
+
const n = Number(node_fs_1.default.readFileSync(pidFile, 'utf8').trim());
|
|
20
|
+
return Number.isFinite(n) && n > 0 ? n : null;
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
function isProcessRunning(pid) {
|
|
27
|
+
try {
|
|
28
|
+
process.kill(pid, 0);
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return false;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function writePid(pidFile, pid) {
|
|
36
|
+
node_fs_1.default.mkdirSync(node_path_1.default.dirname(pidFile), { recursive: true });
|
|
37
|
+
node_fs_1.default.writeFileSync(pidFile, String(pid), 'utf8');
|
|
38
|
+
}
|
|
39
|
+
function clearPid(pidFile) {
|
|
40
|
+
try {
|
|
41
|
+
node_fs_1.default.unlinkSync(pidFile);
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
/* ignore */
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function startDetached(paths, env) {
|
|
48
|
+
const serverJs = node_path_1.default.join(paths.packageRoot, 'dist', 'server.js');
|
|
49
|
+
if (!node_fs_1.default.existsSync(serverJs)) {
|
|
50
|
+
throw new Error(`Server not built: ${serverJs}. Run npm run build first.`);
|
|
51
|
+
}
|
|
52
|
+
const outLog = node_path_1.default.join(paths.logsDir, 'gctoac.out.log');
|
|
53
|
+
const errLog = node_path_1.default.join(paths.logsDir, 'gctoac.err.log');
|
|
54
|
+
const outFd = node_fs_1.default.openSync(outLog, 'a');
|
|
55
|
+
const errFd = node_fs_1.default.openSync(errLog, 'a');
|
|
56
|
+
const child = (0, node_child_process_1.spawn)(process.execPath, [serverJs], {
|
|
57
|
+
detached: true,
|
|
58
|
+
stdio: ['ignore', outFd, errFd],
|
|
59
|
+
env: {
|
|
60
|
+
...process.env,
|
|
61
|
+
...env,
|
|
62
|
+
GCTOAC_HOME: paths.home,
|
|
63
|
+
},
|
|
64
|
+
cwd: paths.packageRoot,
|
|
65
|
+
});
|
|
66
|
+
child.unref();
|
|
67
|
+
if (!child.pid) {
|
|
68
|
+
throw new Error('Failed to spawn server process');
|
|
69
|
+
}
|
|
70
|
+
writePid(paths.pidFile, child.pid);
|
|
71
|
+
return child.pid;
|
|
72
|
+
}
|
|
73
|
+
async function stopProcess(pidFile, timeoutMs = 10_000) {
|
|
74
|
+
const pid = readPid(pidFile);
|
|
75
|
+
if (!pid)
|
|
76
|
+
return false;
|
|
77
|
+
if (!isProcessRunning(pid)) {
|
|
78
|
+
clearPid(pidFile);
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
try {
|
|
82
|
+
process.kill(pid, 'SIGTERM');
|
|
83
|
+
}
|
|
84
|
+
catch {
|
|
85
|
+
clearPid(pidFile);
|
|
86
|
+
return false;
|
|
87
|
+
}
|
|
88
|
+
const start = Date.now();
|
|
89
|
+
while (Date.now() - start < timeoutMs) {
|
|
90
|
+
if (!isProcessRunning(pid)) {
|
|
91
|
+
clearPid(pidFile);
|
|
92
|
+
return true;
|
|
93
|
+
}
|
|
94
|
+
await new Promise((r) => setTimeout(r, 200));
|
|
95
|
+
}
|
|
96
|
+
try {
|
|
97
|
+
process.kill(pid, 'SIGKILL');
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
/* ignore */
|
|
101
|
+
}
|
|
102
|
+
clearPid(pidFile);
|
|
103
|
+
return true;
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=process-mgr.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"process-mgr.js","sourceRoot":"","sources":["../../../src/cli/lib/process-mgr.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
export declare const API_KEY_PREFIX = "gk_live_";
|
|
2
|
+
export declare const MAX_MESSAGES = 100;
|
|
3
|
+
export declare const MAX_MESSAGE_CHARS = 100000;
|
|
4
|
+
export declare const MAX_TOTAL_PROMPT_CHARS = 500000;
|
|
5
|
+
export declare const MAX_DOCUMENT_CONTEXT_CHARS = 200000;
|
|
6
|
+
export declare const MAX_DOCUMENTS_PER_CHAT = 10;
|
|
7
|
+
export declare const ALLOWED_UPLOAD_MIME_TYPES: Set<string>;
|
|
8
|
+
export declare const ALLOWED_UPLOAD_EXTENSIONS: Set<string>;
|
|
9
|
+
export declare const CHAT_STATUS: {
|
|
10
|
+
readonly PENDING: "pending";
|
|
11
|
+
readonly SUCCESS: "success";
|
|
12
|
+
readonly ERROR: "error";
|
|
13
|
+
readonly TIMEOUT: "timeout";
|
|
14
|
+
};
|
|
15
|
+
export declare const AUDIT_ACTIONS: {
|
|
16
|
+
readonly CHAT_CREATE: "chat.create";
|
|
17
|
+
readonly DOCUMENT_UPLOAD: "document.upload";
|
|
18
|
+
readonly DOCUMENT_DELETE: "document.delete";
|
|
19
|
+
readonly DOCUMENT_LIST: "document.list";
|
|
20
|
+
readonly DOCUMENT_READ: "document.read";
|
|
21
|
+
readonly API_KEY_CREATE: "api_key.create";
|
|
22
|
+
readonly API_KEY_UPDATE: "api_key.update";
|
|
23
|
+
readonly API_KEY_DELETE: "api_key.delete";
|
|
24
|
+
readonly API_KEY_LIST: "api_key.list";
|
|
25
|
+
readonly SETTINGS_UPDATE: "settings.update";
|
|
26
|
+
readonly CHAT_ADMIN_VIEW: "chat.admin_view";
|
|
27
|
+
readonly SYSTEM_UPDATE: "system.update";
|
|
28
|
+
readonly SYSTEM_UPDATE_CHECK: "system.update_check";
|
|
29
|
+
};
|
|
30
|
+
export declare const ROLES: {
|
|
31
|
+
readonly CLIENT: "client";
|
|
32
|
+
readonly ADMIN: "admin";
|
|
33
|
+
};
|
|
34
|
+
export declare const KEY_MODES: {
|
|
35
|
+
readonly SAFE: "safe";
|
|
36
|
+
readonly AGENT: "agent";
|
|
37
|
+
};
|
|
38
|
+
export type KeyMode = (typeof KEY_MODES)[keyof typeof KEY_MODES];
|
|
39
|
+
/** Tools stripped in safe mode (Grok CLI names may vary; denylist is best-effort). */
|
|
40
|
+
export declare const SAFE_DISALLOWED_TOOLS: string;
|
|
41
|
+
export declare const SETTING_KEYS: {
|
|
42
|
+
readonly GLOBAL_SAFE_MODE: "global_safe_mode";
|
|
43
|
+
readonly SAFE_MAX_TURNS: "safe_max_turns";
|
|
44
|
+
readonly SAFE_TIMEOUT_MS: "safe_timeout_ms";
|
|
45
|
+
readonly SAFE_TOOLS_MODE: "safe_tools_mode";
|
|
46
|
+
readonly DEFAULT_MODEL: "default_model";
|
|
47
|
+
readonly ADMIN_PANEL_ENABLED: "admin_panel_enabled";
|
|
48
|
+
};
|
|
49
|
+
export declare const SAFE_TOOLS_MODES: {
|
|
50
|
+
readonly NONE: "none";
|
|
51
|
+
readonly READONLY: "readonly";
|
|
52
|
+
};
|
|
53
|
+
export declare const SAFE_READONLY_TOOLS = "read_file,grep,list_dir";
|
|
54
|
+
export declare const STORAGE_TYPES: {
|
|
55
|
+
readonly DB: "db";
|
|
56
|
+
readonly FILESYSTEM: "filesystem";
|
|
57
|
+
};
|
|
58
|
+
/** Fallback models if `grok models` cannot be parsed */
|
|
59
|
+
export declare const DEFAULT_MODELS: readonly ["grok-4.5", "grok-composer-2.5-fast", "grok-build"];
|
|
60
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/config/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,aAAa,CAAC;AAEzC,eAAO,MAAM,YAAY,MAAM,CAAC;AAChC,eAAO,MAAM,iBAAiB,SAAU,CAAC;AACzC,eAAO,MAAM,sBAAsB,SAAU,CAAC;AAC9C,eAAO,MAAM,0BAA0B,SAAU,CAAC;AAClD,eAAO,MAAM,sBAAsB,KAAK,CAAC;AAEzC,eAAO,MAAM,yBAAyB,aAcpC,CAAC;AAEH,eAAO,MAAM,yBAAyB,aA+BpC,CAAC;AAEH,eAAO,MAAM,WAAW;;;;;CAKd,CAAC;AAEX,eAAO,MAAM,aAAa;;;;;;;;;;;;;;CAchB,CAAC;AAEX,eAAO,MAAM,KAAK;;;CAGR,CAAC;AAEX,eAAO,MAAM,SAAS;;;CAGZ,CAAC;AAEX,MAAM,MAAM,OAAO,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,MAAM,OAAO,SAAS,CAAC,CAAC;AAEjE,sFAAsF;AACtF,eAAO,MAAM,qBAAqB,QAoBvB,CAAC;AAEZ,eAAO,MAAM,YAAY;;;;;;;CAOf,CAAC;AAEX,eAAO,MAAM,gBAAgB;;;CAGnB,CAAC;AAEX,eAAO,MAAM,mBAAmB,4BAA4B,CAAC;AAE7D,eAAO,MAAM,aAAa;;;CAGhB,CAAC;AAEX,wDAAwD;AACxD,eAAO,MAAM,cAAc,+DAAgE,CAAC"}
|