grok-cli-to-openai-compatible 1.6.1 → 1.7.1

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 (84) hide show
  1. package/.env.example +2 -1
  2. package/README-ZH.md +37 -17
  3. package/README.md +28 -14
  4. package/dist/cli/commands/doctor.d.ts.map +1 -1
  5. package/dist/cli/commands/doctor.js +12 -0
  6. package/dist/cli/commands/doctor.js.map +1 -1
  7. package/dist/cli/commands/restart.d.ts.map +1 -1
  8. package/dist/cli/commands/restart.js +8 -2
  9. package/dist/cli/commands/restart.js.map +1 -1
  10. package/dist/cli/lib/db-keys.d.ts.map +1 -1
  11. package/dist/cli/lib/db-keys.js +8 -0
  12. package/dist/cli/lib/db-keys.js.map +1 -1
  13. package/dist/cli/lib/env-file.js +2 -2
  14. package/dist/cli/lib/env-file.js.map +1 -1
  15. package/dist/config/cors.d.ts.map +1 -1
  16. package/dist/config/cors.js +9 -1
  17. package/dist/config/cors.js.map +1 -1
  18. package/dist/config/env.d.ts.map +1 -1
  19. package/dist/config/env.js +8 -4
  20. package/dist/config/env.js.map +1 -1
  21. package/dist/controllers/admin/auth.handlers.d.ts.map +1 -1
  22. package/dist/controllers/admin/auth.handlers.js +20 -12
  23. package/dist/controllers/admin/auth.handlers.js.map +1 -1
  24. package/dist/interfaces/api-features.type.d.ts.map +1 -1
  25. package/dist/interfaces/api-features.type.js +6 -3
  26. package/dist/interfaces/api-features.type.js.map +1 -1
  27. package/dist/middlewares/rate-limit.middleware.d.ts +1 -0
  28. package/dist/middlewares/rate-limit.middleware.d.ts.map +1 -1
  29. package/dist/middlewares/rate-limit.middleware.js +19 -0
  30. package/dist/middlewares/rate-limit.middleware.js.map +1 -1
  31. package/dist/routes/admin.routes.d.ts.map +1 -1
  32. package/dist/routes/admin.routes.js +1 -0
  33. package/dist/routes/admin.routes.js.map +1 -1
  34. package/dist/services/admin-auth.service.d.ts.map +1 -1
  35. package/dist/services/admin-auth.service.js +7 -3
  36. package/dist/services/admin-auth.service.js.map +1 -1
  37. package/dist/services/api-key.service.d.ts.map +1 -1
  38. package/dist/services/api-key.service.js +22 -0
  39. package/dist/services/api-key.service.js.map +1 -1
  40. package/dist/services/chat.service.d.ts.map +1 -1
  41. package/dist/services/chat.service.js +16 -10
  42. package/dist/services/chat.service.js.map +1 -1
  43. package/dist/services/grok-cli.service.d.ts +2 -1
  44. package/dist/services/grok-cli.service.d.ts.map +1 -1
  45. package/dist/services/grok-cli.service.js +39 -2
  46. package/dist/services/grok-cli.service.js.map +1 -1
  47. package/dist/services/grok-request-builder.service.d.ts.map +1 -1
  48. package/dist/services/grok-request-builder.service.js +15 -12
  49. package/dist/services/grok-request-builder.service.js.map +1 -1
  50. package/dist/services/grok-sessions.service.d.ts.map +1 -1
  51. package/dist/services/grok-sessions.service.js +2 -1
  52. package/dist/services/grok-sessions.service.js.map +1 -1
  53. package/dist/services/media/media-jobs.service.d.ts.map +1 -1
  54. package/dist/services/media/media-jobs.service.js +5 -22
  55. package/dist/services/media/media-jobs.service.js.map +1 -1
  56. package/dist/services/update.service.d.ts.map +1 -1
  57. package/dist/services/update.service.js +30 -14
  58. package/dist/services/update.service.js.map +1 -1
  59. package/dist/utils/api-key-id.d.ts.map +1 -1
  60. package/dist/utils/api-key-id.js +1 -8
  61. package/dist/utils/api-key-id.js.map +1 -1
  62. package/dist/utils/client-ip.d.ts.map +1 -1
  63. package/dist/utils/client-ip.js +5 -2
  64. package/dist/utils/client-ip.js.map +1 -1
  65. package/dist/utils/logger.d.ts.map +1 -1
  66. package/dist/utils/logger.js +4 -0
  67. package/dist/utils/logger.js.map +1 -1
  68. package/dist/utils/path-safe.d.ts.map +1 -1
  69. package/dist/utils/path-safe.js +14 -2
  70. package/dist/utils/path-safe.js.map +1 -1
  71. package/dist/utils/ssrf.d.ts +11 -0
  72. package/dist/utils/ssrf.d.ts.map +1 -0
  73. package/dist/utils/ssrf.js +114 -0
  74. package/dist/utils/ssrf.js.map +1 -0
  75. package/dist/utils/vision-remote.d.ts +3 -0
  76. package/dist/utils/vision-remote.d.ts.map +1 -1
  77. package/dist/utils/vision-remote.js +81 -5
  78. package/dist/utils/vision-remote.js.map +1 -1
  79. package/package.json +1 -1
  80. package/prisma/seed.ts +6 -14
  81. package/public/admin/boot.js +389 -313
  82. package/public/admin/boot.js.map +1 -1
  83. package/public/admin/i18n.js +8 -8
  84. package/public/admin/styles.css +720 -12
package/.env.example CHANGED
@@ -18,7 +18,8 @@ ENCRYPTION_KEY=
18
18
 
19
19
  GROK_BIN=grok
20
20
  GROK_DEFAULT_MODEL=grok-4.6
21
- GROK_DEFAULT_CWD=.
21
+ # Empty = <STORAGE_DIR>/workspaces/default (never the gateway repo / .env dir)
22
+ GROK_DEFAULT_CWD=
22
23
  # Comma-separated absolute paths allowed for --cwd (empty = only GROK_DEFAULT_CWD)
23
24
  GROK_CWD_ALLOWLIST=
24
25
  GROK_TIMEOUT_MS=600000
package/README-ZH.md CHANGED
@@ -24,10 +24,10 @@
24
24
  - 每把 key 的 **safe** / **agent** 政策 + 全域安全覆寫
25
25
  - AES-256-GCM 加密 + 完整 chat 稽核
26
26
  - **Admin Panel** — OTP 登入(`gctoac admin otp`)、儀表板、對話、金鑰、文件、稽核、用量、**媒體庫**、**對話佇列**、**DDoS 中心**、安全設定、**API 能力**、PM2、系統更新;各頁統一 **KPI + 分 tab** 版面
27
- - **媒體庫** — 工作室(生成/編輯/圖生影片)、資產與工作列表、瀏覽器預覽 lightbox(圖/片/聲/PDF/文字)
27
+ - **媒體庫** — 工作室(生成/編輯/**圖生影片 1–15 秒**/**reference-to-video + 預設配音**)、資產與工作列表、瀏覽器預覽 lightbox(圖/片/聲/PDF/文字)
28
28
  - **持久化對話佇列** — 每個對話先入隊(租約認領)再由進程內 worker 消費;Admin 可暫停/排空/取消/死信;可選 `Idempotency-Key`;無 live Response 時離線收集串流結果
29
29
  - **DDoS/防濫用** — 可配置限流、多規則自動封鎖、反向代理真實客戶端 IP(nginx / Cloudflare)
30
- - 控制 CLI:生命週期 + **settings / api features / queue / ddos / keys / docs / chats / stats / models / admin sessions**(與 Admin 對齊,見下方 CLI 表)
30
+ - 控制 CLI:生命週期 + **settings / api features / queue / ddos / keys / docs / chats / stats / models / admin sessions / grok inspect / grok sessions**(與 Admin 對齊,見下方 CLI 表)
31
31
  - **API features**(Admin 分 tab + `gctoac api features`):協議與 Grok 能力閘(tools / vision / schema / effort…)
32
32
 
33
33
  ### Grok CLI 能力對齊(產品「100%」定義)
@@ -38,12 +38,13 @@
38
38
  | Vision / 圖片 | ✅ | ✅ | ✅ | `vision` |
39
39
  | Images `/v1/images/generations` + `/edits` | ✅ | — | — | `imagesApi` + agent key |
40
40
  | Files `/v1/files` | ✅ | — | — | `filesOpenAiAlias` |
41
- | Videos `/v1/videos`(async job) | ✅ mock | — | — | `videoApi` |
41
+ | Videos `/v1/videos` | ✅ Grok `image_to_video`(1–15 秒)/`reference_to_video` + voices | — | — | `videoApi` |
42
42
  | Audio speech / transcriptions | ✅ mock 或 503 | — | — | `audioApi` + provider env |
43
43
  | Tools | ✅ | ✅ | ✅(含 `tool_use`/`tool_result`) | `tools` |
44
44
  | 回應 tool_calls | ✅* | 文字 | ✅ `tool_use` | `tools` |
45
45
  | JSON schema | ✅ | ✅ | 可透傳 | `structuredOutput` |
46
46
  | Reasoning effort | ✅ | ✅ | thinking→effort | `reasoningEffort` |
47
+ | Session resume / fork | ✅ | — | — | `sessionResume` |
47
48
  | Assistants-lite | — | — | — | `assistantsEmulation` |
48
49
  | temperature 等採樣 | 接受† | 接受† | 接受† | `strictSampling` |
49
50
 
@@ -76,7 +77,7 @@ Client (OpenAI SDK / curl / Open WebUI)
76
77
  ### 1. 前置要求
77
78
 
78
79
  - **Node.js** ≥ 20
79
- - 已安裝並登入 **Grok CLI**:
80
+ - **Grok CLI**(Grok Build **1.0+**)已安裝並登入:
80
81
 
81
82
  ```bash
82
83
  curl -fsSL https://x.ai/cli/install.sh | bash
@@ -179,6 +180,8 @@ gctoac update --check # 只檢查
179
180
  gctoac update --no-restart
180
181
  ```
181
182
 
183
+ Git 工作目錄:update 會跑 `npm install --include=dev` 再 `npm run build`(避免 `.env` 的 `NODE_ENV=production` 令 tsc 缺 `@types`)。compile 失敗仍會執行 `gctoac migrate`。
184
+
182
185
  亦可在 Admin → **系統狀態** → 一鍵更新。
183
186
 
184
187
  ---
@@ -276,6 +279,9 @@ PORT=4000
276
279
  | 指令 | 說明 |
277
280
  |------|------|
278
281
  | `gctoac stats` | 儀表板式摘要 |
282
+ | `gctoac grok inspect` | 本機 Grok Build 快照(version、models、skills、MCP) |
283
+ | `gctoac grok sessions` | 列出本機 Grok CLI sessions |
284
+ | `gctoac grok sessions delete <id> --yes` | 永久刪除一個 Grok session |
279
285
  | `gctoac models [--refresh]` | 本機 Grok 模型列表 |
280
286
  | `gctoac docs list\|show\|delete` | 文件(delete 需 `--yes`) |
281
287
  | `gctoac chats list\|show` | API 對話請求(meta) |
@@ -308,12 +314,12 @@ gctoac logs clear
308
314
  | 加密 | AES-256-GCM 加密 prompt、response、檔案 |
309
315
  | 對話歷史 | 多輪對話、上下文模式(full / summary / recent) |
310
316
  | Admin Panel | OTP session 登入;**分 tab** 頁面(佇列/媒體/系統/PM2/DDoS/API 能力);精簡 EN/繁中文案 |
311
- | 媒體庫 | 工作室(生成/編輯/影片)、資產與工作、多格式預覽 lightbox(`blob:` CSP 安全) |
317
+ | 媒體庫 | 工作室(生成/編輯/**1–15 秒影片**/配音)、資產與工作、多格式預覽 lightbox(`blob:` CSP 安全) |
312
318
  | 對話佇列 | 持久化 SQLite 工作、公平輪詢、暫停/排空、死信、Idempotency-Key、`QUEUE_BACKEND`、離線串流 fallback |
313
319
  | DDoS 中心 | 即時連線、黑名單、自動封鎖、可配置策略與預設檔(分 tab) |
314
320
  | 反向代理 | 信任層數 + CF / nginx / X-Forwarded-For 真實 IP |
315
321
  | 認證 | API key:**scrypt** hash(舊 SHA-256 登入時自動升級);Admin SPA:OTP → session |
316
- | CLI | 生命週期、preferred runner、日誌、自我更新、`admin otp` |
322
+ | CLI | 生命週期、preferred runner、日誌、自我更新、`admin otp`、`grok inspect`、`grok sessions` |
317
323
  | 運維 | SQLite、PM2、日誌自動裁剪(>5 MB)、GitHub Actions CI |
318
324
 
319
325
  ---
@@ -381,7 +387,14 @@ console.log(res.choices[0].message.content);
381
387
  | `include_reasoning` | 預設 `true`;Grok `thought` → `reasoning_content` |
382
388
  | `cwd` | 僅 **agent**(allowlist 內);**safe** 強制 sandbox |
383
389
  | `session_id` | 按 API key 映射成 Grok UUID:第一次 `-s`,之後 `--resume`(Grok 1.0+) |
390
+ | `resume` | Grok session UUID(`--resume`)。Admin playground Resume 欄。 |
391
+ | `fork_session` | 由該 session 分支出去。 |
392
+ | `reasoning_effort` / `effort` | Grok `--reasoning-effort`(`none`…`max`)。閘:`reasoningEffort`。 |
393
+ | `experimental_memory` / `no_memory` | Grok memory。閘:`memory`。 |
394
+ | `no_plan` | 關閉 plan mode。閘:`planMode`。 |
395
+ | `permission_mode` | `default` / `acceptEdits` / `auto` / `dontAsk` / `bypassPermissions` / `plan`。閘:`permissionMode`。 |
384
396
  | `document_ids` | 注入已解密文件內容 |
397
+ | `tools` / `functions` | **`tools`** 開啟時映射到 Grok(否則 400) |
385
398
 
386
399
  ### Thinking 對應
387
400
 
@@ -389,6 +402,8 @@ console.log(res.choices[0].message.content);
389
402
  |-----------|------------------------|------|
390
403
  | `thought` | `reasoning_content` / `delta.reasoning_content` | `thought` 別名 |
391
404
  | `text` | `content` / `delta.content` | — |
405
+ | `tool_call` / `tool_call_update` / `plan` | chunk 上的 `grok_event` | OpenAI SDK 會忽略未知欄位 |
406
+ | `usage` / `cost` | `usage`(Grok 有回 cache/cost 就帶上) | — |
392
407
  | `end` | `finish_reason` | `grok.sessionId`、`grok.stopReason` |
393
408
 
394
409
  ### 持久化對話佇列
@@ -411,7 +426,7 @@ Stream 預覽:
411
426
  ```text
412
427
  data: {"object":"gog.queue","status":"queued","job_id":"…","position":2}
413
428
  data: {"object":"gog.queue","status":"queued","job_id":"…","position":1}
414
- data: {"id":"chatcmpl-…","object":"chat.completion.chunk",…}
429
+ data: {"id":"chatcmpl-…","object":"chat.completion.chunk","grok_event":{"type":"tool_call",…},…}
415
430
  ```
416
431
 
417
432
  Admin 操作(OTP **session** token 或 admin API key):
@@ -437,6 +452,10 @@ POST /admin/api/queue/purge-dead
437
452
  | POST | `/v1/chat/completions` | OpenAI Chat(佇列;可選 `Idempotency-Key`) |
438
453
  | POST | `/v1/responses` | OpenAI Responses 文字子集 |
439
454
  | POST | `/v1/messages` | Anthropic Messages(Bearer 或 `x-api-key`) |
455
+ | POST | `/v1/videos` | Grok 影片 job(`seconds` 1–15;`voices[]` → `reference_to_video`) |
456
+ | GET | `/v1/videos/:id` | 查影片 job |
457
+ | GET | `/admin/api/grok/inspect` | 本機 `grok inspect --json` 快照 |
458
+ | GET/DELETE | `/admin/api/grok/sessions`… | 列出/刪除 `~/.grok/sessions` |
440
459
  | POST | `/v1/documents` | 上傳(欄位 `file`) |
441
460
  | GET/DELETE | `/v1/documents`… | 列表 / 軟刪除 |
442
461
  | POST/GET/DELETE | `/v1/api-keys`… | Admin 管理 key |
@@ -485,19 +504,20 @@ Admin **JSON API**(`/admin/api/*`)可用:
485
504
  | 頁面 | 功能 |
486
505
  |------|------|
487
506
  | **儀表板** | 24h KPI、成功率、**佇列深度**、防護摘要、模型用量、運行狀態(port/加密) |
488
- | **對話** | 多輪 playground、歷史、上下文模式、附件(佇列啟用時同樣先入隊) |
507
+ | **對話** | 多輪 playground:effort、resume/fork UUID、memory/no-plan/permission、tool chip + cost、歷史、上下文模式、附件(佇列啟用時同樣先入隊) |
489
508
  | **對話記錄** | 搜尋/篩選/分頁;**完整解密** prompt/reasoning/response |
490
509
  | **API 金鑰** | 建立/編輯 mode/role/限流/IP 白名單;撤銷 |
491
510
  | **文件** | 搜尋/篩選/分頁;預覽、下載、刪除;DB 與檔案系統儲存 |
492
511
  | **稽核日誌** | 搜尋/篩選/分頁;可讀動作標籤 |
493
512
  | **用量與防護** | 24h 統計、按模型/按金鑰分 tab、限流摘要 |
494
- | **媒體庫** | **分 tab:** 工作室 · 資產 · 工作。KPI 條。工作室模式:生成/編輯/圖生影片(Grok 長寬比)。素材庫選取 + 拖放來源。預覽 lightbox(圖/片/聲/PDF/文字) |
513
+ | **媒體庫** | **分 tab:** 工作室 · 資產 · 工作。KPI 條。工作室:生成/編輯/**圖生影片(1–15 秒)**/**配音**(`ara` `eve` `leo` `rex` `sal` `mio` → `reference_to_video`)。素材庫選取 + 拖放。預覽 lightbox |
495
514
  | **佇列** | **分 tab:** 總覽 · 工作列表 · 政策。KPI 條(自動 soft-refresh)。暫停/排空、死信篩選、取消/重新入隊/優先級/清理、併發與公平預設 |
496
515
  | **DDoS 中心** | **分 tab:** 政策 · 流量 · 黑名單 · 事件。KPI 條。即時連線、最近請求、自動封鎖事件、熱門 IP、**運行時防護策略**(寬鬆/均衡/嚴格/自訂)、反向代理 IP |
497
516
  | **安全設定** | 全域 safe、工具/turns/timeout、預設模型、精簡預設方案、關閉 Admin 面板(只能用 CLI 重開) |
498
517
  | **API 能力** | **分 tab:** 協議 · 媒體 · 能力 · 模擬。KPI 啟用計數。預設:開放/鎖定/開發 |
499
518
  | **PM2** | **分 tab:** 運行方式 · 連接埠 · 設定 · 日誌。KPI 進程條。Runner 切換(gctoac ↔ PM2)、監聽 port(預設 3847)、設定、清除日誌 + 自動裁剪 |
500
- | **系統狀態** | **分 tab:** 軟件 · 套件 · 環境。KPI 運行條(DB/Grok CLI/併發/加密)。一鍵更新並重啟 |
519
+ | **系統狀態** | **分 tab:** 軟件 · 套件 · 環境 · **Grok sessions**。Software tab 有 **Grok inspect** 卡(version/channel/models/skills/MCP)。Sessions tab 列出 `~/.grok/sessions`(搜尋 + 刪除)。一鍵更新並重啟 |
520
+ | **支持** | 捐助/GitHub Sponsors/Linktree/加密地址、YSK Limited 服務、**email@ysk.hk** |
501
521
 
502
522
  Admin 共用 UX:分段 tab + 頂部 KPI 卡片、精簡正式 EN/繁中文案、table 操作按鈕置中;僅需運維刷新的頁面保留右上角 **重新整理**(儀表板/用量/DDoS/PM2)。
503
523
 
@@ -553,8 +573,8 @@ proxy_set_header X-Forwarded-Proto $scheme;
553
573
  | `ENCRYPTION_KEY` | 32-byte key:`openssl rand -base64 32` |
554
574
  | `ADMIN_BOOTSTRAP_KEY` | 可選;首次 setup 用此字串作 admin key |
555
575
  | `GROK_BIN` | 預設 `grok` |
556
- | `GROK_DEFAULT_MODEL` | 預設模型 |
557
- | `GROK_DEFAULT_CWD` / `GROK_CWD_ALLOWLIST` | Agent cwd 政策 |
576
+ | `GROK_DEFAULT_MODEL` | 預設模型(`grok-4.6`) |
577
+ | `GROK_DEFAULT_CWD` / `GROK_CWD_ALLOWLIST` | Agent 工作目錄(空白預設為 `<STORAGE_DIR>/workspaces/default`,不會使用 gateway 原始碼目錄) |
558
578
  | `GROK_TIMEOUT_MS` | Agent 預設 timeout(ms) |
559
579
  | `GROK_ALWAYS_APPROVE` | 只對 agent;safe 一律關閉 |
560
580
  | `GROK_SAFE_MODE` | 強制全部 key 用 safe |
@@ -661,8 +681,8 @@ npm publish --access public --otp=<2FA六位碼>
661
681
  - Chat prompt/response、文件與 **佇列 job payload** 以 **AES-256-GCM** 靜態加密
662
682
  - 對外 client 請用 **`safe`** mode
663
683
  - **Admin SPA:** 只用 OTP(`gctoac admin otp`)→ 短時 session 存 `sessionStorage`(XSS = 在 session 有效期內完全接管)
664
- - **客戶端 IP:** 只有 **可信代理列表** 內的 TCP peer(預設 `127.0.0.1`)先會採信 `CF-Connecting-IP`/`X-Real-IP`/`XFF`。直連客戶**無法偽造 header** 繞過限流或 ban 他人。遠端 nginx 請把其 IP 加進 Admin → DDoS → 可信代理。
665
- - Admin 只應開喺本機/VPN
684
+ - **客戶端 IP:** 只有 **可信代理列表** 內的 TCP peer(預設 `127.0.0.1`)才會採信 `CF-Connecting-IP`/`X-Real-IP`/`XFF`。直連客戶**無法偽造 header** 繞過限流或封鎖他人。遠端 nginx 請把其 IP 加入 Admin → DDoS → 可信代理。
685
+ - Admin 只應在本機/VPN 開啟
666
686
  - 不要 commit `.env`,不要外洩 admin key/OTP
667
687
  - 可完全關閉 Admin:`gctoac admin off`(只能用 `gctoac admin on` 重開)
668
688
  - 一鍵更新/PM2/改 port 需 admin(視 admin key/OTP session 為 root)
@@ -677,9 +697,9 @@ npm publish --access public --otp=<2FA六位碼>
677
697
 
678
698
  ### ☕ 支持 / 打賞
679
699
 
680
- 如果呢個 Grok → OpenAI Gateway 對你有幫助,歡迎請我飲杯咖啡!
700
+ 若本 Grok → OpenAI Gateway 對你有幫助,歡迎請我喝杯咖啡!
681
701
 
682
- | 網路 | 地址 |
702
+ | 網絡 | 地址 |
683
703
  | --- | --- |
684
704
  | **EVM** (ETH/BSC/AVAX) | `yanshekki.eth` |
685
705
  | **NEAR** | `yanshekki.near` |
@@ -693,4 +713,4 @@ MIT — 見 [LICENSE](./LICENSE)。
693
713
 
694
714
  ## 免責聲明
695
715
 
696
- 本 gateway 會 spawn **Grok CLI**,視政策可能使用檔案系統、shell、網路等 tools。認證、暴露範圍、key 模式由你負責。作者不對濫用或資料損失負責。
716
+ 本 gateway 會啟動 **Grok CLI**,視政策可能使用檔案系統、shell、網絡等工具。認證、暴露範圍、key 模式由你負責。作者不對濫用或資料損失負責。
package/README.md CHANGED
@@ -24,10 +24,10 @@ Production OpenAI-compatible HTTP gateway for local **[Grok CLI](https://x.ai)**
24
24
  - Per-key **safe** / **agent** policy + global safety overrides
25
25
  - AES-256-GCM encryption + full chat audit
26
26
  - **Admin Panel** — OTP login (`gctoac admin otp`), dashboard, chats, keys, documents, audit, usage, **media library**, **chat queue**, **DDoS center**, Safety settings, **API features**, PM2, system update — pages use a consistent **KPI + segmented tabs** layout
27
- - **Media library** — studio (generate / edit / image-to-video), assets & jobs tabs, browser preview lightbox (image / video / audio / PDF / text)
27
+ - **Media library** — studio (generate / edit / **image-to-video 1–15s** / **reference-to-video + preset voices**), assets & jobs tabs, browser preview lightbox (image / video / audio / PDF / text)
28
28
  - **Durable chat queue** — every conversation is enqueued with leases, then consumed by an in-process worker; Admin pause / drain / cancel / DLQ; optional `Idempotency-Key`; offline stream collect when no live Response
29
29
  - **DDoS / abuse protection** — configurable rate limits, multi-rule auto-ban, reverse-proxy client IP (nginx / Cloudflare)
30
- - Control CLI: lifecycle + **settings / api features / queue / ddos / keys / docs / chats / stats / models / admin sessions**
30
+ - Control CLI: lifecycle + **settings / api features / queue / ddos / keys / docs / chats / stats / models / admin sessions / grok inspect / grok sessions**
31
31
  - **API features** (Admin tabs + `gctoac api features`): protocol + Grok CLI capability gates (tools, vision, json-schema, effort, …)
32
32
 
33
33
  ### Capability parity (Grok CLI–backed “100%”)
@@ -38,7 +38,7 @@ Production OpenAI-compatible HTTP gateway for local **[Grok CLI](https://x.ai)**
38
38
  | Vision / image parts | ✅ | ✅ | ✅ | `vision` |
39
39
  | **Images** `/v1/images/generations` + `/edits` | ✅ OpenAI-shaped | — | — | `imagesApi` + agent key |
40
40
  | **Files** `/v1/files` (docs alias) | ✅ | — | — | `filesOpenAiAlias` |
41
- | **Videos** `/v1/videos` (async job) | ✅ mock / poll | — | — | `videoApi` |
41
+ | **Videos** `/v1/videos` | ✅ Grok `image_to_video` (1–15s) / `reference_to_video` + voices | — | — | `videoApi` |
42
42
  | **Audio** `/v1/audio/speech` + `/transcriptions` | ✅ mock or 503 | — | — | `audioApi` + provider env |
43
43
  | Tools (allowlist → Grok) | ✅ | ✅ | ✅ (incl. `tool_use`/`tool_result`) | `tools` |
44
44
  | tool_calls in response | ✅* | text+meta | ✅ `tool_use` blocks | `tools` |
@@ -182,6 +182,8 @@ gctoac update --check # check only
182
182
  gctoac update --no-restart
183
183
  ```
184
184
 
185
+ Git checkouts: update runs `npm install --include=dev` then `npm run build` (so `NODE_ENV=production` in `.env` does not strip TypeScript types). Always runs `gctoac migrate`, including if compile fails.
186
+
185
187
  Or Admin → **System** → one-click update.
186
188
 
187
189
  ---
@@ -314,12 +316,12 @@ gctoac logs clear
314
316
  | Encryption | AES-256-GCM for prompts, responses, files |
315
317
  | Chat history | Multi-turn conversations, context modes (full / summary / recent) |
316
318
  | Admin Panel | OTP session login; **tabbed** pages (queue / media / system / PM2 / DDoS / API features); compact EN/ZH copy |
317
- | Media library | Studio (gen/edit/video), assets & jobs, multi-format preview lightbox (`blob:` CSP-safe) |
319
+ | Media library | Studio (gen/edit/**1–15s video**/voices), assets & jobs, multi-format preview lightbox (`blob:` CSP-safe) |
318
320
  | Chat queue | Durable SQLite jobs, fair RR, pause/drain, DLQ, Idempotency-Key, `QUEUE_BACKEND`, offline stream fallback |
319
321
  | DDoS center | Live connections, blacklist, auto-ban rules, presets, runtime policy (tabbed) |
320
322
  | Reverse proxy | Trust hops + CF / nginx / X-Forwarded-For client IP |
321
323
  | Auth | API keys: **scrypt** hashes (legacy SHA-256 auto-migrates); Admin SPA: OTP → session token |
322
- | CLI | Full control plane: lifecycle, settings, queue, DDoS, keys, docs, chats, stats, `admin otp` |
324
+ | CLI | Full control plane: lifecycle, settings, queue, DDoS, keys, docs, chats, stats, `admin otp`, `grok inspect`, `grok sessions` |
323
325
  | Ops | SQLite, PM2, log auto-trim (>5 MB), GitHub Actions CI |
324
326
 
325
327
  ---
@@ -407,8 +409,7 @@ curl -s http://127.0.0.1:3847/v1/messages \
407
409
  ```
408
410
 
409
411
  Also accepts `Authorization: Bearer $API_KEY`.
410
- Supported: text `system` + user/assistant messages, stream SSE (`message_start` … `message_stop`).
411
- Not supported: image blocks, `tool_use` / `tool_result`.
412
+ Supported: text `system` + user/assistant messages, **image blocks** (ACP `--prompt-json`), `tool_use` / `tool_result`, stream SSE (`message_start` … `message_stop`).
412
413
 
413
414
  ### API compatibility matrix
414
415
 
@@ -444,9 +445,15 @@ Not supported: image blocks, `tool_use` / `tool_result`.
444
445
  | `include_reasoning` | Default `true`. Maps Grok `thought` → `reasoning_content` |
445
446
  | `cwd` | **agent** only (allowlist); **safe** forces sandbox |
446
447
  | `session_id` | Mapped to a per-key Grok UUID: first call uses `-s`, later calls `--resume` (Grok 1.0+). |
448
+ | `resume` | Grok session UUID (`--resume`). Admin playground Resume field. |
449
+ | `fork_session` | Fork that session instead of continuing it. |
450
+ | `reasoning_effort` / `effort` | Grok `--reasoning-effort` (`none`…`max`). Gate: `reasoningEffort`. |
451
+ | `experimental_memory` / `no_memory` | Grok memory flags. Gate: `memory`. |
452
+ | `no_plan` | Disable plan mode. Gate: `planMode`. |
453
+ | `permission_mode` | `default` / `acceptEdits` / `auto` / `dontAsk` / `bypassPermissions` / `plan`. Gate: `permissionMode`. |
447
454
  | `document_ids` | Inject decrypted documents as context |
448
455
  | `temperature`, `top_p`, `stop`, `user` | Accepted for SDK compatibility; **not applied** by Grok CLI |
449
- | `tools` / `functions` | Rejected with 400 |
456
+ | `tools` / `functions` | Mapped to Grok when **`tools`** is enabled (otherwise 400) |
450
457
  | `response_format: json_object` | Best-effort system hint only |
451
458
 
452
459
  ### Thinking mapping
@@ -455,6 +462,8 @@ Not supported: image blocks, `tool_use` / `tool_result`.
455
462
  |------------|-------------------------|--------|
456
463
  | `thought` | `reasoning_content` / `delta.reasoning_content` | `thought` alias |
457
464
  | `text` | `content` / `delta.content` | — |
465
+ | `tool_call` / `tool_call_update` / `plan` | extra `grok_event` on the chunk | OpenAI SDK ignores unknown fields |
466
+ | `usage` / `cost` | `usage` (+ cache / cost when Grok sends them) | — |
458
467
  | `end` | `finish_reason` | `grok.sessionId`, `grok.stopReason` |
459
468
 
460
469
  ### Durable chat queue
@@ -477,7 +486,7 @@ Stream preview:
477
486
  ```text
478
487
  data: {"object":"gog.queue","status":"queued","job_id":"…","position":2}
479
488
  data: {"object":"gog.queue","status":"queued","job_id":"…","position":1}
480
- data: {"id":"chatcmpl-…","object":"chat.completion.chunk",…}
489
+ data: {"id":"chatcmpl-…","object":"chat.completion.chunk","grok_event":{"type":"tool_call",…},…}
481
490
  ```
482
491
 
483
492
  Admin ops (OTP **session** token or admin API key):
@@ -504,6 +513,10 @@ POST /admin/api/queue/purge-dead
504
513
  | POST | `/v1/responses` | OpenAI Responses (text + store) |
505
514
  | GET/DELETE | `/v1/responses/:id` | Retrieve / soft-delete stored response |
506
515
  | POST | `/v1/messages` | Anthropic Messages (Bearer or `x-api-key`) |
516
+ | POST | `/v1/videos` | Grok video job (`seconds` 1–15; `voices[]` → `reference_to_video`) |
517
+ | GET | `/v1/videos/:id` | Poll video job |
518
+ | GET | `/admin/api/grok/inspect` | Local `grok inspect --json` snapshot |
519
+ | GET/DELETE | `/admin/api/grok/sessions`… | List / delete `~/.grok/sessions` |
507
520
  | POST/GET/DELETE | `/v1/assistants`… | Assistants-lite (feature `assistantsEmulation`) |
508
521
  | POST/GET | `/v1/threads`… | Threads + messages + runs (Assistants-lite) |
509
522
  | POST | `/v1/documents` | Upload (`file` field) |
@@ -554,19 +567,20 @@ Admin **JSON API** (`/admin/api/*`) accepts either:
554
567
  | Page | Features |
555
568
  |------|----------|
556
569
  | **Dashboard** | 24h KPIs, success rate, **queue depth**, protection snapshot, models, runtime (port / encryption) |
557
- | **Chat** | Multi-turn playground, history, context modes, attachments (also goes through the durable queue when enabled) |
570
+ | **Chat** | Multi-turn playground: effort, resume/fork UUID, memory / no-plan / permission, tool chips + cost, history, context modes, attachments (queued when enabled) |
558
571
  | **Chat logs** | Search / filter / pager; full **decrypted** prompt / reasoning / response |
559
572
  | **API Keys** | Create / edit mode / role / rate limit / IP whitelist; revoke |
560
573
  | **Documents** | Search / filter / pager; preview, download, delete; storage DB vs filesystem |
561
574
  | **Audit Logs** | Search / filter / pager; human-readable actions |
562
575
  | **Usage & limits** | 24h stats, by-model / by-key tabs, gateway limit summary |
563
- | **Media** | **Tabs:** Studio · Assets · Jobs. KPI strip. Studio modes: generate / edit / image-to-video (Grok aspect ratios). Library picker + drag-drop source. Preview lightbox (image/video/audio/PDF/text) |
576
+ | **Media** | **Tabs:** Studio · Assets · Jobs. KPI strip. Studio: generate / edit / **image-to-video (1–15s)** / **voice** (`ara` `eve` `leo` `rex` `sal` `mio` → `reference_to_video`). Library picker + drag-drop. Preview lightbox |
564
577
  | **Queue** | **Tabs:** Overview · Jobs · Policy. KPI strip (auto soft-refresh). Pause/drain, DLQ filter, cancel/requeue/priority/purge, concurrency & fairness presets |
565
578
  | **DDoS center** | **Tabs:** Policy · Traffic · Blacklist · Events. KPI strip. Live connections, recent requests, auto-ban events, top IPs, **runtime protection policy** (relaxed / balanced / strict / custom), reverse-proxy IP |
566
579
  | **Safety settings** | Global safe mode, tools / turns / timeout, default model, concise presets, disable Admin panel (re-enable only via CLI) |
567
580
  | **API features** | **Tabs:** Protocols · Media · Capabilities · Emulation. KPI enabled counts. Presets: open / locked / dev |
568
581
  | **PM2** | **Tabs:** Runner · Port · Config · Logs. KPI process strip. Runner switch (gctoac ↔ PM2), listen port (default 3847), config, clear logs + auto-trim |
569
- | **System** | **Tabs:** Software · Package · Environment. KPI runtime strip (DB / Grok CLI / concurrency / encryption). One-click update & restart |
582
+ | **System** | **Tabs:** Software · Package · Environment · **Grok sessions**. Software tab has a **Grok inspect** card (version / channel / models / skills / MCP). Sessions tab lists `~/.grok/sessions` (search + delete). One-click update & restart |
583
+ | **Support** | Donate / GitHub Sponsors / Linktree / crypto addresses, YSK Limited services, **email@ysk.hk** |
570
584
 
571
585
  Shared Admin UX: segmented tabs + top KPI cards, compact formal EN/ZH strings, table action buttons centered; only operational pages keep a top-right **Refresh** (dashboard / usage / DDoS / PM2).
572
586
 
@@ -622,8 +636,8 @@ See [`.env.example`](./.env.example). Fresh `gctoac setup` writes **`NODE_ENV=pr
622
636
  | `ENCRYPTION_KEY` | 32-byte key: `openssl rand -base64 32` |
623
637
  | `ADMIN_BOOTSTRAP_KEY` | Optional seed admin key on first setup |
624
638
  | `GROK_BIN` | Default `grok` |
625
- | `GROK_DEFAULT_MODEL` | Default model id |
626
- | `GROK_DEFAULT_CWD` / `GROK_CWD_ALLOWLIST` | Agent cwd policy |
639
+ | `GROK_DEFAULT_MODEL` | Default model id (`grok-4.6`) |
640
+ | `GROK_DEFAULT_CWD` / `GROK_CWD_ALLOWLIST` | Agent cwd (empty default = `<STORAGE_DIR>/workspaces/default`, not the gateway repo) |
627
641
  | `GROK_TIMEOUT_MS` | Default agent timeout (ms) |
628
642
  | `GROK_ALWAYS_APPROVE` | Agent only; off in safe mode |
629
643
  | `GROK_SAFE_MODE` | Force all keys to safe |
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"AAYA,wBAAsB,SAAS,CAAC,IAAI,EAAE;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC,IAAI,CAAC,CAoJhB"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"AAYA,wBAAsB,SAAS,CAAC,IAAI,EAAE;IACpC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,GAAG,OAAO,CAAC,IAAI,CAAC,CAyKhB"}
@@ -71,6 +71,18 @@ async function cmdDoctor(opts) {
71
71
  else {
72
72
  (0, print_1.ok)('NODE_ENV=production (or production default)');
73
73
  }
74
+ const cwd = env.GROK_DEFAULT_CWD || '(storage/workspaces/default)';
75
+ const allow = env.GROK_CWD_ALLOWLIST || cwd;
76
+ (0, print_1.info)(`GROK_DEFAULT_CWD: ${cwd}`);
77
+ const envDir = node_path_1.default.dirname(paths.envFile);
78
+ const roots = String(allow)
79
+ .split(',')
80
+ .map((s) => s.trim())
81
+ .filter(Boolean);
82
+ const dangerous = [paths.packageRoot, envDir];
83
+ if (roots.some((r) => dangerous.some((d) => r === d || r.startsWith(`${d}${node_path_1.default.sep}`) || d.startsWith(`${r}${node_path_1.default.sep}`)))) {
84
+ (0, print_1.warn)('GROK_CWD_ALLOWLIST / GROK_DEFAULT_CWD includes the gateway root or .env directory — agent keys can read ENCRYPTION_KEY');
85
+ }
74
86
  // Proxy / reverse proxy
75
87
  const trust = env.TRUST_PROXY ?? '1';
76
88
  const src = env.PROXY_IP_SOURCE || 'auto';
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../../src/cli/commands/doctor.ts"],"names":[],"mappings":";;;;;AAYA,8BA6KC;AAzLD,sDAAyB;AACzB,0DAA6B;AAC7B,2DAA8C;AAC9C,wCAGsB;AACtB,8CAA6D;AAC7D,oDAAoD;AACpD,oDAAkD;AAClD,wCAAoD;AAE7C,KAAK,UAAU,SAAS,CAAC,IAI/B;IACC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,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,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IACjC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC;QACrD,IAAA,YAAI,EAAC,qBAAqB,CAAC,CAAC;QAC5B,MAAM,IAAI,CAAC,CAAC;IACd,CAAC;SAAM,CAAC;QACN,IAAA,UAAE,EAAC,iBAAiB,CAAC,CAAC;IACxB,CAAC;IAED,IAAA,YAAI,EAAC,iBAAiB,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IAC3C,IAAA,YAAI,EAAC,SAAS,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAE5C,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAA,6BAAQ,EAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAClE,MAAM,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACnC,IAAA,UAAE,EAAC,aAAa,IAAI,EAAE,CAAC,CAAC;QACxB,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QAC9C,IAAI,GAAG,EAAE,CAAC;YACR,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACd,IAAA,YAAI,EACF,YAAY,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,oGAAoG,CAC3I,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,IAAA,YAAI,EAAC,mDAAmD,CAAC,CAAC;QAC1D,MAAM,IAAI,CAAC,CAAC;IACd,CAAC;IAED,IAAI,CAAC,iBAAE,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAClC,yEAAyE;QACzE,iEAAiE;QACjE,IAAA,YAAI,EAAC,kCAAkC,CAAC,CAAC;QACzC,MAAM,IAAI,CAAC,CAAC;IACd,CAAC;SAAM,CAAC;QACN,IAAA,UAAE,EAAC,eAAe,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACnC,iEAAiE;QACjE,IAAA,wBAAa,EAAC,KAAK,EAAE,IAAI,CAAC,IAAI,IAAI,oBAAY,CAAC,CAAC;QAChD,MAAM,GAAG,GAAG,IAAA,sBAAW,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEvC,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;YACxB,IAAA,YAAI,EAAC,gCAAgC,CAAC,CAAC;YACvC,MAAM,IAAI,CAAC,CAAC;QACd,CAAC;aAAM,CAAC;YACN,IAAA,UAAE,EAAC,oBAAoB,CAAC,CAAC;QAC3B,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,oBAAY,CAAC,CAAC;QAC3D,IAAA,YAAI,EAAC,SAAS,IAAI,aAAa,oBAAY,GAAG,CAAC,CAAC;QAChD,IAAA,YAAI,EAAC,aAAa,GAAG,CAAC,QAAQ,IAAI,8BAA8B,EAAE,CAAC,CAAC;QACpE,IAAI,GAAG,CAAC,QAAQ,KAAK,aAAa,EAAE,CAAC;YACnC,IAAA,YAAI,EACF,2FAA2F,CAC5F,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,IAAA,UAAE,EAAC,6CAA6C,CAAC,CAAC;QACpD,CAAC;QAED,MAAM,GAAG,GAAG,GAAG,CAAC,gBAAgB,IAAI,8BAA8B,CAAC;QACnE,MAAM,KAAK,GAAG,GAAG,CAAC,kBAAkB,IAAI,GAAG,CAAC;QAC5C,IAAA,YAAI,EAAC,qBAAqB,GAAG,EAAE,CAAC,CAAC;QACjC,MAAM,MAAM,GAAG,mBAAI,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;aACxB,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,OAAO,CAAC,CAAC;QACnB,MAAM,SAAS,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC9C,IACE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CACf,SAAS,CAAC,IAAI,CACZ,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,mBAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,mBAAI,CAAC,GAAG,EAAE,CAAC,CACrF,CACF,EACD,CAAC;YACD,IAAA,YAAI,EACF,wHAAwH,CACzH,CAAC;QACJ,CAAC;QAED,wBAAwB;QACxB,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC;QACrC,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,IAAI,MAAM,CAAC;QAC1C,IAAA,UAAE,EAAC,qBAAqB,KAAK,yBAAyB,GAAG,EAAE,CAAC,CAAC;QAC7D,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YACvC,IAAA,YAAI,EACF,2FAA2F,CAC5F,CAAC;QACJ,CAAC;QAED,qCAAqC;QACrC,IAAA,YAAI,EACF,oBAAoB,GAAG,CAAC,cAAc,IAAI,KAAK,aAAa,GAAG,CAAC,iBAAiB,IAAI,IAAI,YAAY,GAAG,CAAC,cAAc,IAAI,IAAI,EAAE,CAClI,CAAC;QACF,IAAA,YAAI,EACF,+DAA+D,CAChE,CAAC;QAEF,8BAA8B;QAC9B,MAAM,GAAG,GAAG,IAAA,0BAAY,EAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACtC,IAAA,YAAI,EAAC,WAAW,GAAG,CAAC,MAAM,gBAAgB,GAAG,CAAC,SAAS,IAAI,GAAG,EAAE,CAAC,CAAC;QAClE,IAAI,GAAG,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC;YAC3B,IAAA,YAAI,EAAC,mFAAmF,CAAC,CAAC;YAC1F,MAAM,IAAI,CAAC,CAAC;QACd,CAAC;aAAM,IAAI,GAAG,CAAC,aAAa,EAAE,CAAC;YAC7B,IAAA,UAAE,EAAC,uBAAuB,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC;QAC9C,CAAC;aAAM,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;YAC1B,IAAA,UAAE,EAAC,eAAe,GAAG,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;QACxD,CAAC;aAAM,CAAC;YACN,IAAA,YAAI,EAAC,oBAAoB,CAAC,CAAC;QAC7B,CAAC;QAED,MAAM,IAAI,GAAG,IAAA,4BAAc,EAAC,IAAI,CAAC,CAAC;QAClC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,IAAA,YAAI,EAAC,0BAA0B,IAAI,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YAC7E,MAAM,IAAI,CAAC,CAAC;QACd,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YACtD,IAAA,YAAI,EAAC,QAAQ,IAAI,gBAAgB,IAAI,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC;QACtE,CAAC;QAED,YAAY;QACZ,MAAM,QAAQ,GAAG;YACf,mBAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,eAAe,CAAC;YACzC,mBAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,aAAa,CAAC;YACvC,mBAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,gBAAgB,CAAC;YAC1C,mBAAI,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,gBAAgB,CAAC;SAC3C,CAAC;QACF,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;YACzB,IAAI,CAAC;gBACH,IAAI,iBAAE,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC;oBACrB,MAAM,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;oBAClD,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC;wBAClB,IAAA,YAAI,EAAC,aAAa,mBAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,oDAAoD,CAAC,CAAC;oBACjG,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,mBAAI,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACnE,IAAI,iBAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,IAAA,UAAE,EAAC,sBAAsB,CAAC,CAAC;IAC7B,CAAC;SAAM,CAAC;QACN,IAAA,YAAI,EAAC,4CAA4C,CAAC,CAAC;QACnD,MAAM,IAAI,CAAC,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAA,6BAAQ,EAAC,WAAW,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACjE,IAAA,UAAE,EAAC,QAAQ,KAAK,EAAE,CAAC,CAAC;IACtB,CAAC;IAAC,MAAM,CAAC;QACP,IAAA,YAAI,EAAC,sEAAsE,CAAC,CAAC;QAC7E,IAAA,YAAI,EAAC,yCAAyC,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;QACjB,IAAA,UAAE,EAAC,2BAA2B,CAAC,CAAC;IAClC,CAAC;SAAM,CAAC;QACN,IAAA,YAAI,EAAC,WAAW,MAAM,WAAW,CAAC,CAAC;QACnC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"restart.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/restart.ts"],"names":[],"mappings":"AAMA,wBAAsB,UAAU,CAAC,IAAI,EAAE;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBhB"}
1
+ {"version":3,"file":"restart.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/restart.ts"],"names":[],"mappings":"AAMA,wBAAsB,UAAU,CAAC,IAAI,EAAE;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,GAAG,OAAO,CAAC,IAAI,CAAC,CA2BhB"}
@@ -21,8 +21,14 @@ async function cmdRestart(opts) {
21
21
  });
22
22
  const preferred = (0, runner_info_1.readPreferredRunner)(paths.packageRoot);
23
23
  if (preferred === 'pm2') {
24
- pm2 = true;
25
- (0, print_1.info)('Preferred runner is PM2 — restarting under PM2');
24
+ if ((0, runner_info_1.pm2AppStatus)(paths.packageRoot).available) {
25
+ pm2 = true;
26
+ (0, print_1.info)('Preferred runner is PM2 — restarting under PM2');
27
+ }
28
+ else {
29
+ (0, print_1.warn)('Preferred runner is PM2 but pm2 is not on PATH — starting with gctoac');
30
+ pm2 = false;
31
+ }
26
32
  }
27
33
  }
28
34
  await (0, start_1.cmdStart)({ ...opts, pm2 });
@@ -1 +1 @@
1
- {"version":3,"file":"restart.js","sourceRoot":"","sources":["../../../src/cli/commands/restart.ts"],"names":[],"mappings":";;AAMA,gCA4BC;AAlCD,mCAAmC;AACnC,iCAAiC;AACjC,wCAAmD;AACnD,oDAAyD;AACzD,wCAAoC;AAE7B,KAAK,UAAU,UAAU,CAAC,IAMhC;IACC,0EAA0E;IAC1E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACrB,MAAM,IAAA,cAAO,EAAC,EAAE,GAAG,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC3E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACrB,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAE7C,2EAA2E;IAC3E,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IACnB,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,IAAA,2BAAmB,EAAC;YAChC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;SAChD,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,IAAA,iCAAmB,EAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACzD,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;YACxB,GAAG,GAAG,IAAI,CAAC;YACX,IAAA,YAAI,EAAC,gDAAgD,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED,MAAM,IAAA,gBAAQ,EAAC,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"restart.js","sourceRoot":"","sources":["../../../src/cli/commands/restart.ts"],"names":[],"mappings":";;AAMA,gCAiCC;AAvCD,mCAAmC;AACnC,iCAAiC;AACjC,wCAAmD;AACnD,oDAAuE;AACvE,wCAA0C;AAEnC,KAAK,UAAU,UAAU,CAAC,IAMhC;IACC,0EAA0E;IAC1E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACrB,MAAM,IAAA,cAAO,EAAC,EAAE,GAAG,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;IAC3E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACrB,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAE7C,2EAA2E;IAC3E,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;IACnB,IAAI,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;QACpC,MAAM,KAAK,GAAG,IAAA,2BAAmB,EAAC;YAChC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,SAAS,EAAE,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;SAChD,CAAC,CAAC;QACH,MAAM,SAAS,GAAG,IAAA,iCAAmB,EAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACzD,IAAI,SAAS,KAAK,KAAK,EAAE,CAAC;YACxB,IAAI,IAAA,0BAAY,EAAC,KAAK,CAAC,WAAW,CAAC,CAAC,SAAS,EAAE,CAAC;gBAC9C,GAAG,GAAG,IAAI,CAAC;gBACX,IAAA,YAAI,EAAC,gDAAgD,CAAC,CAAC;YACzD,CAAC;iBAAM,CAAC;gBACN,IAAA,YAAI,EAAC,uEAAuE,CAAC,CAAC;gBAC9E,GAAG,GAAG,KAAK,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,IAAA,gBAAQ,EAAC,EAAE,GAAG,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;AACnC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"db-keys.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/db-keys.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAM/D,OAAO,EAEL,mBAAmB,EACpB,MAAM,4BAA4B,CAAC;AAEpC,oEAAoE;AACpE,eAAO,MAAM,gBAAgB,4BAAsB,CAAC;AAEpD,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;AAEvC,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,UAAU,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,IAAI,CAAC;IAChB,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;CACzB;AAQD,wBAAsB,SAAS,CAAC,OAAO,EAAE;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;IAC3B,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,UAAU,CAAC,CAkDtB;AAED,wBAAsB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAoBxE;AAED,wBAAsB,SAAS,CAC7B,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,OAAO,CAAC,CAalB;AAED,wBAAsB,MAAM,CAC1B,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAoB3B;AAED,wBAAsB,SAAS,CAC7B,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE;IACL,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;IAC3B,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,GACA,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAuD3B;AAED,wBAAsB,WAAW,CAC/B,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,OAAO,CAAC,CAalB"}
1
+ {"version":3,"file":"db-keys.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/db-keys.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAM/D,OAAO,EAEL,mBAAmB,EACpB,MAAM,4BAA4B,CAAC;AAEpC,oEAAoE;AACpE,eAAO,MAAM,gBAAgB,4BAAsB,CAAC;AAEpD,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC;AAEvC,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,CAAC;IACjB,IAAI,EAAE,UAAU,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,IAAI,CAAC;IAChB,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;CACzB;AAQD,wBAAsB,SAAS,CAAC,OAAO,EAAE;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;IAC3B,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,UAAU,CAAC,CAkDtB;AAED,wBAAsB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAoBxE;AAED,wBAAsB,SAAS,CAC7B,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,OAAO,CAAC,CAqBlB;AAED,wBAAsB,MAAM,CAC1B,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAoB3B;AAED,wBAAsB,SAAS,CAC7B,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,MAAM,EACV,KAAK,EAAE;IACL,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,UAAU,GAAG,MAAM,CAAC;IAC3B,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B,GACA,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAuD3B;AAED,wBAAsB,WAAW,CAC/B,WAAW,EAAE,MAAM,EACnB,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,OAAO,CAAC,CAalB"}
@@ -93,6 +93,14 @@ async function revokeKey(databaseUrl, id) {
93
93
  const row = await prisma.apiKey.findUnique({ where: { id } });
94
94
  if (!row)
95
95
  return false;
96
+ if (row.isActive && row.role === 'admin') {
97
+ const others = await prisma.apiKey.count({
98
+ where: { isActive: true, role: 'admin', id: { not: id } },
99
+ });
100
+ if (others === 0) {
101
+ throw new Error('Cannot revoke the last active admin API key');
102
+ }
103
+ }
96
104
  await prisma.apiKey.update({
97
105
  where: { id },
98
106
  data: { isActive: false },
@@ -1 +1 @@
1
- {"version":3,"file":"db-keys.js","sourceRoot":"","sources":["../../../src/cli/lib/db-keys.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"db-keys.js","sourceRoot":"","sources":["../../../src/cli/lib/db-keys.ts"],"names":[],"mappings":"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"}
@@ -106,8 +106,8 @@ function ensureEnvFile(paths, port = paths_1.DEFAULT_PORT) {
106
106
  ENCRYPTION_KEY: encryptionKey,
107
107
  GROK_BIN: 'grok',
108
108
  GROK_DEFAULT_MODEL: 'grok-4.6',
109
- GROK_DEFAULT_CWD: paths.home,
110
- GROK_CWD_ALLOWLIST: paths.home,
109
+ GROK_DEFAULT_CWD: `${paths.home.replace(/\\/g, '/')}/workspaces/default`,
110
+ GROK_CWD_ALLOWLIST: `${paths.home.replace(/\\/g, '/')}/workspaces`,
111
111
  GROK_TIMEOUT_MS: '600000',
112
112
  GROK_MAX_CONCURRENT: '4',
113
113
  GROK_ALWAYS_APPROVE: 'true',
@@ -1 +1 @@
1
- {"version":3,"file":"env-file.js","sourceRoot":"","sources":["../../../src/cli/lib/env-file.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"env-file.js","sourceRoot":"","sources":["../../../src/cli/lib/env-file.ts"],"names":[],"mappings":";;;;;AAMA,kCAmBC;AAED,oCASC;AAED,sCAQC;AAiCD,sCA0CC;AAGD,gCAmBC;AAED,gDAOC;AAxJD,sDAAyB;AACzB,0DAA6B;AAC7B,6CAA0C;AAE1C,mCAAuC;AAEvC,SAAgB,WAAW,CAAC,QAAgB;IAC1C,IAAI,CAAC,iBAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,EAAE,CAAC;IACxC,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,IAAI,IAAI,iBAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACjE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAClD,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChC,IAAI,EAAE,IAAI,CAAC;YAAE,SAAS;QACtB,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACxC,IAAI,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACvC,IACE,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAC1C,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,EAC1C,CAAC;YACD,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACjB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAgB,YAAY,CAAC,QAAgB,EAAE,IAA4B;IACzE,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE;QAChD,MAAM,UAAU,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC1D,OAAO,UAAU;YACf,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG;YAC3D,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;IAClB,CAAC,CAAC,CAAC;IACH,iBAAE,CAAC,SAAS,CAAC,mBAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,iBAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;AACvE,CAAC;AAED,SAAgB,aAAa,CAC3B,QAAgB,EAChB,OAA+B;IAE/B,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,EAAE,GAAG,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;IACxC,YAAY,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC7B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,iFAAiF;AACjF,SAAS,iBAAiB,CAAC,IAAY;IACrC,OAAO;QACL,yEAAyE;QACzE,QAAQ,EAAE,YAAY;QACtB,IAAI,EAAE,SAAS;QACf,oBAAoB,EAAE,OAAO;QAC7B,cAAc,EAAE,KAAK;QACrB,iBAAiB,EAAE,IAAI;QACvB,cAAc,EAAE,IAAI;QACpB,2BAA2B,EAAE,IAAI;QACjC,2BAA2B,EAAE,QAAQ;QACrC,iBAAiB,EAAE,QAAQ;QAC3B,UAAU,EAAE,KAAK;QACjB,gBAAgB,EAAE,UAAU;QAC5B,qBAAqB,EAAE,SAAS;QAChC,SAAS,EAAE,MAAM;QACjB,oFAAoF;QACpF,WAAW,EAAE,GAAG;QAChB,eAAe,EAAE,MAAM;QACvB,iBAAiB,EAAE,MAAM;QACzB,mBAAmB,EAAE,MAAM;QAC3B,YAAY,EAAE,oBAAoB,IAAI,qBAAqB,IAAI,EAAE;KAClE,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAgB,aAAa,CAC3B,KAAmB,EACnB,IAAI,GAAG,oBAAY;IAEnB,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,CAAC,cAAc,EAAE,CAAC;QAChE,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC;QAChD,MAAM,IAAI,GAA2B,EAAE,CAAC;QACxC,MAAM,QAAQ,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;QACtC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC9C,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,SAAS,IAAI,QAAQ,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;gBACpD,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACd,CAAC;QACH,CAAC;QACD,uCAAuC;QACvC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,WAAW,CAAC;QACtC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,UAAU,CAAC;QACpC,IAAI,CAAC,QAAQ,CAAC,IAAI;YAAE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7C,OAAO,aAAa,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,aAAa,GAAG,IAAA,yBAAW,EAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACzD,MAAM,IAAI,GAA2B;QACnC,QAAQ,EAAE,YAAY;QACtB,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC;QAClB,YAAY,EAAE,KAAK,CAAC,WAAW;QAC/B,cAAc,EAAE,aAAa;QAC7B,QAAQ,EAAE,MAAM;QAChB,kBAAkB,EAAE,UAAU;QAC9B,gBAAgB,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,qBAAqB;QACxE,kBAAkB,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,aAAa;QAClE,eAAe,EAAE,QAAQ;QACzB,mBAAmB,EAAE,GAAG;QACxB,mBAAmB,EAAE,MAAM;QAC3B,cAAc,EAAE,OAAO;QACvB,mBAAmB,EAAE,GAAG;QACxB,oBAAoB,EAAE,QAAQ;QAC9B,WAAW,EAAE,KAAK,CAAC,UAAU;QAC7B,GAAG,iBAAiB,CAAC,IAAI,CAAC;KAC3B,CAAC;IACF,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAClC,OAAO,IAAI,CAAC;AACd,CAAC;AAED,6DAA6D;AAC7D,SAAgB,UAAU,CACxB,QAAgB,EAChB,IAAY;IAEZ,MAAM,GAAG,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IAClC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,IAAI,oBAAY,CAAC,IAAI,oBAAY,CAAC;IAClE,MAAM,OAAO,GAA2B,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;IAC/D,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;QACrB,OAAO,CAAC,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC,OAAO,CAC7C,IAAI,MAAM,CACR,4CAA4C,QAAQ,KAAK,EACzD,GAAG,CACJ,EACD,MAAM,IAAI,EAAE,CACb,CAAC;IACJ,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,YAAY,GAAG,oBAAoB,IAAI,qBAAqB,IAAI,EAAE,CAAC;IAC7E,CAAC;IACD,OAAO,aAAa,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED,SAAgB,kBAAkB,CAAC,QAAgB;IACjD,MAAM,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACnC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1C,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"cors.d.ts","sourceRoot":"","sources":["../../src/config/cors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAGxC,eAAO,MAAM,WAAW,EAAE,WAgBzB,CAAC"}
1
+ {"version":3,"file":"cors.d.ts","sourceRoot":"","sources":["../../src/config/cors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAGxC,eAAO,MAAM,WAAW,EAAE,WAwBzB,CAAC"}
@@ -8,7 +8,15 @@ exports.corsOptions = {
8
8
  callback(null, true);
9
9
  return;
10
10
  }
11
- if (env_1.env.corsOrigins.includes('*') || env_1.env.corsOrigins.includes(origin)) {
11
+ if (env_1.env.corsOrigins.includes('*')) {
12
+ if (env_1.env.isProd) {
13
+ callback(new Error('CORS origin * is not allowed in production'));
14
+ return;
15
+ }
16
+ callback(null, true);
17
+ return;
18
+ }
19
+ if (env_1.env.corsOrigins.includes(origin)) {
12
20
  callback(null, true);
13
21
  return;
14
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cors.js","sourceRoot":"","sources":["../../src/config/cors.ts"],"names":[],"mappings":";;;AACA,+BAA4B;AAEf,QAAA,WAAW,GAAgB;IACtC,MAAM,CAAC,MAAM,EAAE,QAAQ;QACrB,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,IAAI,SAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,SAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACtE,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,QAAQ,CAAC,IAAI,KAAK,CAAC,4BAA4B,MAAM,EAAE,CAAC,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC;IAC7D,cAAc,EAAE,CAAC,cAAc,EAAE,eAAe,EAAE,cAAc,CAAC;IACjE,cAAc,EAAE,CAAC,cAAc,CAAC;IAChC,MAAM,EAAE,GAAG;CACZ,CAAC"}
1
+ {"version":3,"file":"cors.js","sourceRoot":"","sources":["../../src/config/cors.ts"],"names":[],"mappings":";;;AACA,+BAA4B;AAEf,QAAA,WAAW,GAAgB;IACtC,MAAM,CAAC,MAAM,EAAE,QAAQ;QACrB,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,IAAI,SAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAClC,IAAI,SAAG,CAAC,MAAM,EAAE,CAAC;gBACf,QAAQ,CAAC,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC,CAAC;gBAClE,OAAO;YACT,CAAC;YACD,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,IAAI,SAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YACrC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QACD,QAAQ,CAAC,IAAI,KAAK,CAAC,4BAA4B,MAAM,EAAE,CAAC,CAAC,CAAC;IAC5D,CAAC;IACD,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,CAAC;IAC7D,cAAc,EAAE,CAAC,cAAc,EAAE,eAAe,EAAE,cAAc,CAAC;IACjE,cAAc,EAAE,CAAC,cAAc,CAAC;IAChC,MAAM,EAAE,GAAG;CACZ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"AA+HA,eAAO,MAAM,GAAG;;;;;;;;IAWd,sDAAsD;;IAEtD,2EAA2E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAE5E,CAAC;AAEF,MAAM,MAAM,GAAG,GAAG,OAAO,GAAG,CAAC"}
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"AAoIA,eAAO,MAAM,GAAG;;;;;;;;IAWd,sDAAsD;;IAEtD,2EAA2E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAE5E,CAAC;AAEF,MAAM,MAAM,GAAG,GAAG,OAAO,GAAG,CAAC"}
@@ -19,7 +19,7 @@ const envSchema = zod_1.z.object({
19
19
  GCTOAC_HOME: zod_1.z.string().optional(),
20
20
  GROK_BIN: zod_1.z.string().default('grok'),
21
21
  GROK_DEFAULT_MODEL: zod_1.z.string().default('grok-4.6'),
22
- GROK_DEFAULT_CWD: zod_1.z.string().default('.'),
22
+ GROK_DEFAULT_CWD: zod_1.z.string().default(''),
23
23
  GROK_CWD_ALLOWLIST: zod_1.z.string().default(''),
24
24
  GROK_TIMEOUT_MS: zod_1.z.coerce.number().int().positive().default(600_000),
25
25
  GROK_MAX_CONCURRENT: zod_1.z.coerce.number().int().positive().default(4),
@@ -118,12 +118,16 @@ if (!parsed.success) {
118
118
  }
119
119
  const data = parsed.data;
120
120
  const encryptionKey = parseEncryptionKey(data.ENCRYPTION_KEY);
121
+ const storageDir = node_path_1.default.resolve(data.STORAGE_DIR);
122
+ const defaultCwd = data.GROK_DEFAULT_CWD.trim()
123
+ ? node_path_1.default.resolve(data.GROK_DEFAULT_CWD)
124
+ : node_path_1.default.join(storageDir, 'workspaces', 'default');
121
125
  const cwdAllowlist = data.GROK_CWD_ALLOWLIST
122
126
  ? data.GROK_CWD_ALLOWLIST.split(',')
123
127
  .map((s) => s.trim())
124
128
  .filter(Boolean)
125
129
  .map((p) => node_path_1.default.resolve(p))
126
- : [node_path_1.default.resolve(data.GROK_DEFAULT_CWD)];
130
+ : [defaultCwd];
127
131
  exports.env = {
128
132
  ...data,
129
133
  encryptionKey,
@@ -131,8 +135,8 @@ exports.env = {
131
135
  .map((s) => s.trim())
132
136
  .filter(Boolean),
133
137
  cwdAllowlist,
134
- storageDir: node_path_1.default.resolve(data.STORAGE_DIR),
135
- defaultCwd: node_path_1.default.resolve(data.GROK_DEFAULT_CWD),
138
+ storageDir,
139
+ defaultCwd,
136
140
  isProd: data.NODE_ENV === 'production',
137
141
  isDev: data.NODE_ENV === 'development',
138
142
  /** Number of trusted reverse-proxy hops (0 = off). */