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.
Files changed (308) hide show
  1. package/.env.example +41 -0
  2. package/LICENSE +21 -0
  3. package/README.md +484 -0
  4. package/dist/app.d.ts +3 -0
  5. package/dist/app.d.ts.map +1 -0
  6. package/dist/app.js +67 -0
  7. package/dist/app.js.map +1 -0
  8. package/dist/cli/commands/doctor.d.ts +5 -0
  9. package/dist/cli/commands/doctor.d.ts.map +1 -0
  10. package/dist/cli/commands/doctor.js +77 -0
  11. package/dist/cli/commands/doctor.js.map +1 -0
  12. package/dist/cli/commands/migrate.d.ts +5 -0
  13. package/dist/cli/commands/migrate.d.ts.map +1 -0
  14. package/dist/cli/commands/migrate.js +25 -0
  15. package/dist/cli/commands/migrate.js.map +1 -0
  16. package/dist/cli/commands/open.d.ts +6 -0
  17. package/dist/cli/commands/open.d.ts.map +1 -0
  18. package/dist/cli/commands/open.js +24 -0
  19. package/dist/cli/commands/open.js.map +1 -0
  20. package/dist/cli/commands/restart.d.ts +7 -0
  21. package/dist/cli/commands/restart.d.ts.map +1 -0
  22. package/dist/cli/commands/restart.js +12 -0
  23. package/dist/cli/commands/restart.js.map +1 -0
  24. package/dist/cli/commands/seed.d.ts +5 -0
  25. package/dist/cli/commands/seed.d.ts.map +1 -0
  26. package/dist/cli/commands/seed.js +38 -0
  27. package/dist/cli/commands/seed.js.map +1 -0
  28. package/dist/cli/commands/setup.d.ts +6 -0
  29. package/dist/cli/commands/setup.d.ts.map +1 -0
  30. package/dist/cli/commands/setup.js +73 -0
  31. package/dist/cli/commands/setup.js.map +1 -0
  32. package/dist/cli/commands/start.d.ts +7 -0
  33. package/dist/cli/commands/start.d.ts.map +1 -0
  34. package/dist/cli/commands/start.js +57 -0
  35. package/dist/cli/commands/start.js.map +1 -0
  36. package/dist/cli/commands/status.d.ts +5 -0
  37. package/dist/cli/commands/status.d.ts.map +1 -0
  38. package/dist/cli/commands/status.js +42 -0
  39. package/dist/cli/commands/status.js.map +1 -0
  40. package/dist/cli/commands/stop.d.ts +5 -0
  41. package/dist/cli/commands/stop.d.ts.map +1 -0
  42. package/dist/cli/commands/stop.js +21 -0
  43. package/dist/cli/commands/stop.js.map +1 -0
  44. package/dist/cli/commands/update.d.ts +8 -0
  45. package/dist/cli/commands/update.d.ts.map +1 -0
  46. package/dist/cli/commands/update.js +58 -0
  47. package/dist/cli/commands/update.js.map +1 -0
  48. package/dist/cli/commands/version.d.ts +2 -0
  49. package/dist/cli/commands/version.d.ts.map +1 -0
  50. package/dist/cli/commands/version.js +16 -0
  51. package/dist/cli/commands/version.js.map +1 -0
  52. package/dist/cli/index.d.ts +3 -0
  53. package/dist/cli/index.d.ts.map +1 -0
  54. package/dist/cli/index.js +128 -0
  55. package/dist/cli/index.js.map +1 -0
  56. package/dist/cli/lib/env-file.d.ts +7 -0
  57. package/dist/cli/lib/env-file.d.ts.map +1 -0
  58. package/dist/cli/lib/env-file.js +99 -0
  59. package/dist/cli/lib/env-file.js.map +1 -0
  60. package/dist/cli/lib/paths.d.ts +27 -0
  61. package/dist/cli/lib/paths.d.ts.map +1 -0
  62. package/dist/cli/lib/paths.js +90 -0
  63. package/dist/cli/lib/paths.js.map +1 -0
  64. package/dist/cli/lib/print.d.ts +10 -0
  65. package/dist/cli/lib/print.d.ts.map +1 -0
  66. package/dist/cli/lib/print.js +28 -0
  67. package/dist/cli/lib/print.js.map +1 -0
  68. package/dist/cli/lib/process-mgr.d.ts +8 -0
  69. package/dist/cli/lib/process-mgr.d.ts.map +1 -0
  70. package/dist/cli/lib/process-mgr.js +105 -0
  71. package/dist/cli/lib/process-mgr.js.map +1 -0
  72. package/dist/config/constants.d.ts +60 -0
  73. package/dist/config/constants.d.ts.map +1 -0
  74. package/dist/config/constants.js +127 -0
  75. package/dist/config/constants.js.map +1 -0
  76. package/dist/config/cors.d.ts +3 -0
  77. package/dist/config/cors.d.ts.map +1 -0
  78. package/dist/config/cors.js +22 -0
  79. package/dist/config/cors.js.map +1 -0
  80. package/dist/config/database.d.ts +4 -0
  81. package/dist/config/database.d.ts.map +1 -0
  82. package/dist/config/database.js +18 -0
  83. package/dist/config/database.js.map +1 -0
  84. package/dist/config/env.d.ts +38 -0
  85. package/dist/config/env.d.ts.map +1 -0
  86. package/dist/config/env.js +97 -0
  87. package/dist/config/env.js.map +1 -0
  88. package/dist/controllers/admin.controller.d.ts +21 -0
  89. package/dist/controllers/admin.controller.d.ts.map +1 -0
  90. package/dist/controllers/admin.controller.js +315 -0
  91. package/dist/controllers/admin.controller.js.map +1 -0
  92. package/dist/controllers/api-key.controller.d.ts +7 -0
  93. package/dist/controllers/api-key.controller.d.ts.map +1 -0
  94. package/dist/controllers/api-key.controller.js +48 -0
  95. package/dist/controllers/api-key.controller.js.map +1 -0
  96. package/dist/controllers/chat.controller.d.ts +5 -0
  97. package/dist/controllers/chat.controller.d.ts.map +1 -0
  98. package/dist/controllers/chat.controller.js +27 -0
  99. package/dist/controllers/chat.controller.js.map +1 -0
  100. package/dist/controllers/document.controller.d.ts +8 -0
  101. package/dist/controllers/document.controller.d.ts.map +1 -0
  102. package/dist/controllers/document.controller.js +53 -0
  103. package/dist/controllers/document.controller.js.map +1 -0
  104. package/dist/controllers/health.controller.d.ts +6 -0
  105. package/dist/controllers/health.controller.d.ts.map +1 -0
  106. package/dist/controllers/health.controller.js +39 -0
  107. package/dist/controllers/health.controller.js.map +1 -0
  108. package/dist/controllers/models.controller.d.ts +6 -0
  109. package/dist/controllers/models.controller.d.ts.map +1 -0
  110. package/dist/controllers/models.controller.js +18 -0
  111. package/dist/controllers/models.controller.js.map +1 -0
  112. package/dist/dto/admin.dto.d.ts +104 -0
  113. package/dist/dto/admin.dto.d.ts.map +1 -0
  114. package/dist/dto/admin.dto.js +45 -0
  115. package/dist/dto/admin.dto.js.map +1 -0
  116. package/dist/dto/api-key.dto.d.ts +27 -0
  117. package/dist/dto/api-key.dto.d.ts.map +1 -0
  118. package/dist/dto/api-key.dto.js +15 -0
  119. package/dist/dto/api-key.dto.js.map +1 -0
  120. package/dist/dto/chat.dto.d.ts +70 -0
  121. package/dist/dto/chat.dto.d.ts.map +1 -0
  122. package/dist/dto/chat.dto.js +49 -0
  123. package/dist/dto/chat.dto.js.map +1 -0
  124. package/dist/dto/document.dto.d.ts +21 -0
  125. package/dist/dto/document.dto.d.ts.map +1 -0
  126. package/dist/dto/document.dto.js +12 -0
  127. package/dist/dto/document.dto.js.map +1 -0
  128. package/dist/entities/api-key.entity.d.ts +33 -0
  129. package/dist/entities/api-key.entity.d.ts.map +1 -0
  130. package/dist/entities/api-key.entity.js +3 -0
  131. package/dist/entities/api-key.entity.js.map +1 -0
  132. package/dist/entities/audit-log.entity.d.ts +19 -0
  133. package/dist/entities/audit-log.entity.d.ts.map +1 -0
  134. package/dist/entities/audit-log.entity.js +3 -0
  135. package/dist/entities/audit-log.entity.js.map +1 -0
  136. package/dist/entities/chat-request.entity.d.ts +21 -0
  137. package/dist/entities/chat-request.entity.d.ts.map +1 -0
  138. package/dist/entities/chat-request.entity.js +3 -0
  139. package/dist/entities/chat-request.entity.js.map +1 -0
  140. package/dist/entities/document.entity.d.ts +22 -0
  141. package/dist/entities/document.entity.d.ts.map +1 -0
  142. package/dist/entities/document.entity.js +3 -0
  143. package/dist/entities/document.entity.js.map +1 -0
  144. package/dist/exceptions/error-codes.d.ts +18 -0
  145. package/dist/exceptions/error-codes.d.ts.map +1 -0
  146. package/dist/exceptions/error-codes.js +20 -0
  147. package/dist/exceptions/error-codes.js.map +1 -0
  148. package/dist/exceptions/exception.factory.d.ts +18 -0
  149. package/dist/exceptions/exception.factory.d.ts.map +1 -0
  150. package/dist/exceptions/exception.factory.js +50 -0
  151. package/dist/exceptions/exception.factory.js.map +1 -0
  152. package/dist/exceptions/http.exception.d.ts +18 -0
  153. package/dist/exceptions/http.exception.d.ts.map +1 -0
  154. package/dist/exceptions/http.exception.js +45 -0
  155. package/dist/exceptions/http.exception.js.map +1 -0
  156. package/dist/interfaces/auth.interface.d.ts +14 -0
  157. package/dist/interfaces/auth.interface.d.ts.map +1 -0
  158. package/dist/interfaces/auth.interface.js +3 -0
  159. package/dist/interfaces/auth.interface.js.map +1 -0
  160. package/dist/interfaces/express.interface.d.ts +11 -0
  161. package/dist/interfaces/express.interface.d.ts.map +1 -0
  162. package/dist/interfaces/express.interface.js +3 -0
  163. package/dist/interfaces/express.interface.js.map +1 -0
  164. package/dist/interfaces/grok.interface.d.ts +41 -0
  165. package/dist/interfaces/grok.interface.d.ts.map +1 -0
  166. package/dist/interfaces/grok.interface.js +3 -0
  167. package/dist/interfaces/grok.interface.js.map +1 -0
  168. package/dist/interfaces/openai.interface.d.ts +97 -0
  169. package/dist/interfaces/openai.interface.d.ts.map +1 -0
  170. package/dist/interfaces/openai.interface.js +3 -0
  171. package/dist/interfaces/openai.interface.js.map +1 -0
  172. package/dist/middlewares/auth.middleware.d.ts +5 -0
  173. package/dist/middlewares/auth.middleware.d.ts.map +1 -0
  174. package/dist/middlewares/auth.middleware.js +40 -0
  175. package/dist/middlewares/auth.middleware.js.map +1 -0
  176. package/dist/middlewares/concurrency.middleware.d.ts +6 -0
  177. package/dist/middlewares/concurrency.middleware.d.ts.map +1 -0
  178. package/dist/middlewares/concurrency.middleware.js +16 -0
  179. package/dist/middlewares/concurrency.middleware.js.map +1 -0
  180. package/dist/middlewares/error.middleware.d.ts +4 -0
  181. package/dist/middlewares/error.middleware.d.ts.map +1 -0
  182. package/dist/middlewares/error.middleware.js +38 -0
  183. package/dist/middlewares/error.middleware.js.map +1 -0
  184. package/dist/middlewares/rate-limit.middleware.d.ts +3 -0
  185. package/dist/middlewares/rate-limit.middleware.d.ts.map +1 -0
  186. package/dist/middlewares/rate-limit.middleware.js +40 -0
  187. package/dist/middlewares/rate-limit.middleware.js.map +1 -0
  188. package/dist/middlewares/request-id.middleware.d.ts +3 -0
  189. package/dist/middlewares/request-id.middleware.d.ts.map +1 -0
  190. package/dist/middlewares/request-id.middleware.js +12 -0
  191. package/dist/middlewares/request-id.middleware.js.map +1 -0
  192. package/dist/middlewares/upload.middleware.d.ts +2 -0
  193. package/dist/middlewares/upload.middleware.d.ts.map +1 -0
  194. package/dist/middlewares/upload.middleware.js +26 -0
  195. package/dist/middlewares/upload.middleware.js.map +1 -0
  196. package/dist/middlewares/validate.middleware.d.ts +6 -0
  197. package/dist/middlewares/validate.middleware.d.ts.map +1 -0
  198. package/dist/middlewares/validate.middleware.js +21 -0
  199. package/dist/middlewares/validate.middleware.js.map +1 -0
  200. package/dist/routes/admin.routes.d.ts +3 -0
  201. package/dist/routes/admin.routes.d.ts.map +1 -0
  202. package/dist/routes/admin.routes.js +44 -0
  203. package/dist/routes/admin.routes.js.map +1 -0
  204. package/dist/routes/index.d.ts +3 -0
  205. package/dist/routes/index.d.ts.map +1 -0
  206. package/dist/routes/index.js +20 -0
  207. package/dist/routes/index.js.map +1 -0
  208. package/dist/routes/v1/api-keys.routes.d.ts +3 -0
  209. package/dist/routes/v1/api-keys.routes.d.ts.map +1 -0
  210. package/dist/routes/v1/api-keys.routes.js +13 -0
  211. package/dist/routes/v1/api-keys.routes.js.map +1 -0
  212. package/dist/routes/v1/chat.routes.d.ts +3 -0
  213. package/dist/routes/v1/chat.routes.d.ts.map +1 -0
  214. package/dist/routes/v1/chat.routes.js +13 -0
  215. package/dist/routes/v1/chat.routes.js.map +1 -0
  216. package/dist/routes/v1/documents.routes.d.ts +3 -0
  217. package/dist/routes/v1/documents.routes.d.ts.map +1 -0
  218. package/dist/routes/v1/documents.routes.js +15 -0
  219. package/dist/routes/v1/documents.routes.js.map +1 -0
  220. package/dist/routes/v1/models.routes.d.ts +3 -0
  221. package/dist/routes/v1/models.routes.d.ts.map +1 -0
  222. package/dist/routes/v1/models.routes.js +10 -0
  223. package/dist/routes/v1/models.routes.js.map +1 -0
  224. package/dist/server.d.ts +2 -0
  225. package/dist/server.d.ts.map +1 -0
  226. package/dist/server.js +42 -0
  227. package/dist/server.js.map +1 -0
  228. package/dist/services/api-key.service.d.ts +33 -0
  229. package/dist/services/api-key.service.d.ts.map +1 -0
  230. package/dist/services/api-key.service.js +168 -0
  231. package/dist/services/api-key.service.js.map +1 -0
  232. package/dist/services/audit.service.d.ts +6 -0
  233. package/dist/services/audit.service.d.ts.map +1 -0
  234. package/dist/services/audit.service.js +21 -0
  235. package/dist/services/audit.service.js.map +1 -0
  236. package/dist/services/chat-admin.service.d.ts +76 -0
  237. package/dist/services/chat-admin.service.d.ts.map +1 -0
  238. package/dist/services/chat-admin.service.js +160 -0
  239. package/dist/services/chat-admin.service.js.map +1 -0
  240. package/dist/services/chat.service.d.ts +19 -0
  241. package/dist/services/chat.service.d.ts.map +1 -0
  242. package/dist/services/chat.service.js +335 -0
  243. package/dist/services/chat.service.js.map +1 -0
  244. package/dist/services/document.service.d.ts +37 -0
  245. package/dist/services/document.service.d.ts.map +1 -0
  246. package/dist/services/document.service.js +206 -0
  247. package/dist/services/document.service.js.map +1 -0
  248. package/dist/services/encryption.service.d.ts +8 -0
  249. package/dist/services/encryption.service.d.ts.map +1 -0
  250. package/dist/services/encryption.service.js +34 -0
  251. package/dist/services/encryption.service.js.map +1 -0
  252. package/dist/services/grok-cli.service.d.ts +18 -0
  253. package/dist/services/grok-cli.service.d.ts.map +1 -0
  254. package/dist/services/grok-cli.service.js +213 -0
  255. package/dist/services/grok-cli.service.js.map +1 -0
  256. package/dist/services/models.service.d.ts +10 -0
  257. package/dist/services/models.service.d.ts.map +1 -0
  258. package/dist/services/models.service.js +43 -0
  259. package/dist/services/models.service.js.map +1 -0
  260. package/dist/services/policy.service.d.ts +20 -0
  261. package/dist/services/policy.service.d.ts.map +1 -0
  262. package/dist/services/policy.service.js +66 -0
  263. package/dist/services/policy.service.js.map +1 -0
  264. package/dist/services/settings.service.d.ts +14 -0
  265. package/dist/services/settings.service.d.ts.map +1 -0
  266. package/dist/services/settings.service.js +86 -0
  267. package/dist/services/settings.service.js.map +1 -0
  268. package/dist/services/stats.service.d.ts +35 -0
  269. package/dist/services/stats.service.d.ts.map +1 -0
  270. package/dist/services/stats.service.js +59 -0
  271. package/dist/services/stats.service.js.map +1 -0
  272. package/dist/services/update.service.d.ts +44 -0
  273. package/dist/services/update.service.d.ts.map +1 -0
  274. package/dist/services/update.service.js +278 -0
  275. package/dist/services/update.service.js.map +1 -0
  276. package/dist/utils/async-handler.d.ts +5 -0
  277. package/dist/utils/async-handler.d.ts.map +1 -0
  278. package/dist/utils/async-handler.js +9 -0
  279. package/dist/utils/async-handler.js.map +1 -0
  280. package/dist/utils/id.d.ts +6 -0
  281. package/dist/utils/id.d.ts.map +1 -0
  282. package/dist/utils/id.js +24 -0
  283. package/dist/utils/id.js.map +1 -0
  284. package/dist/utils/logger.d.ts +3 -0
  285. package/dist/utils/logger.d.ts.map +1 -0
  286. package/dist/utils/logger.js +34 -0
  287. package/dist/utils/logger.js.map +1 -0
  288. package/dist/utils/openai-mapper.d.ts +30 -0
  289. package/dist/utils/openai-mapper.d.ts.map +1 -0
  290. package/dist/utils/openai-mapper.js +176 -0
  291. package/dist/utils/openai-mapper.js.map +1 -0
  292. package/dist/utils/path-safe.d.ts +4 -0
  293. package/dist/utils/path-safe.d.ts.map +1 -0
  294. package/dist/utils/path-safe.js +37 -0
  295. package/dist/utils/path-safe.js.map +1 -0
  296. package/dist/utils/stream.d.ts +5 -0
  297. package/dist/utils/stream.d.ts.map +1 -0
  298. package/dist/utils/stream.js +22 -0
  299. package/dist/utils/stream.js.map +1 -0
  300. package/package.json +87 -0
  301. package/prisma/migrations/20260714084159_init_sqlite/migration.sql +106 -0
  302. package/prisma/migrations/20260714090338_safe_mode_admin/migration.sql +36 -0
  303. package/prisma/migrations/migration_lock.toml +3 -0
  304. package/prisma/schema.prisma +122 -0
  305. package/prisma/seed.ts +79 -0
  306. package/public/admin/app.js +734 -0
  307. package/public/admin/index.html +13 -0
  308. 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":";;;;;AAKA,0BAQC;AAED,4CAOC;AAED,4BAGC;AAED,4BAMC;AAED,sCA4BC;AAED,kCA+BC;AAlGD,sDAAyB;AACzB,0DAA6B;AAC7B,2DAA2C;AAG3C,SAAgB,OAAO,CAAC,OAAe;IACrC,IAAI,CAAC;QACH,IAAI,CAAC,iBAAE,CAAC,UAAU,CAAC,OAAO,CAAC;YAAE,OAAO,IAAI,CAAC;QACzC,MAAM,CAAC,GAAG,MAAM,CAAC,iBAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1D,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAgB,gBAAgB,CAAC,GAAW;IAC1C,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAgB,QAAQ,CAAC,OAAe,EAAE,GAAW;IACnD,iBAAE,CAAC,SAAS,CAAC,mBAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzD,iBAAE,CAAC,aAAa,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;AACjD,CAAC;AAED,SAAgB,QAAQ,CAAC,OAAe;IACtC,IAAI,CAAC;QACH,iBAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,YAAY;IACd,CAAC;AACH,CAAC;AAED,SAAgB,aAAa,CAAC,KAAmB,EAAE,GAAsB;IACvE,MAAM,QAAQ,GAAG,mBAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACnE,IAAI,CAAC,iBAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,4BAA4B,CAAC,CAAC;IAC7E,CAAC;IAED,MAAM,MAAM,GAAG,mBAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,mBAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,iBAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,iBAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAEvC,MAAM,KAAK,GAAG,IAAA,0BAAK,EAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE;QAChD,QAAQ,EAAE,IAAI;QACd,KAAK,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC;QAC/B,GAAG,EAAE;YACH,GAAG,OAAO,CAAC,GAAG;YACd,GAAG,GAAG;YACN,WAAW,EAAE,KAAK,CAAC,IAAI;SACxB;QACD,GAAG,EAAE,KAAK,CAAC,WAAW;KACvB,CAAC,CAAC;IAEH,KAAK,CAAC,KAAK,EAAE,CAAC;IACd,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACpD,CAAC;IACD,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACnC,OAAO,KAAK,CAAC,GAAG,CAAC;AACnB,CAAC;AAEM,KAAK,UAAU,WAAW,CAAC,OAAe,EAAE,SAAS,GAAG,MAAM;IACnE,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7B,IAAI,CAAC,GAAG;QAAE,OAAO,KAAK,CAAC;IACvB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,QAAQ,CAAC,OAAO,CAAC,CAAC;QAClB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,QAAQ,CAAC,OAAO,CAAC,CAAC;QAClB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACzB,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,GAAG,SAAS,EAAE,CAAC;QACtC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,QAAQ,CAAC,OAAO,CAAC,CAAC;YAClB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,YAAY;IACd,CAAC;IACD,QAAQ,CAAC,OAAO,CAAC,CAAC;IAClB,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -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"}