grok-cli-to-openai-compatible 1.7.2 → 1.7.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README-ZH.md +61 -2
- package/README.md +61 -2
- package/dist/services/media/providers/grok-tools.provider.d.ts +19 -0
- package/dist/services/media/providers/grok-tools.provider.d.ts.map +1 -1
- package/dist/services/media/providers/grok-tools.provider.js +256 -20
- package/dist/services/media/providers/grok-tools.provider.js.map +1 -1
- package/package.json +1 -1
- package/public/admin/boot.js +2 -2
- package/public/admin/boot.js.map +1 -1
- package/public/admin/i18n.js +5 -4
package/README-ZH.md
CHANGED
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
|------|:----:|:---------:|:------------------:|------------|
|
|
37
37
|
| 文字 + stream | ✅ | ✅ | ✅ | 協議開關 |
|
|
38
38
|
| Vision / 圖片 | ✅ | ✅ | ✅ | `vision` |
|
|
39
|
-
| Images `/v1/images/generations` + `/edits` | ✅ | — | — | `imagesApi` + agent key |
|
|
39
|
+
| Images `/v1/images/generations` + `/edits` | ✅ OpenAI 形狀(`b64_json` / `url`) | — | — | `imagesApi` + `tools` + agent key |
|
|
40
40
|
| Files `/v1/files` | ✅ | — | — | `filesOpenAiAlias` |
|
|
41
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 |
|
|
@@ -314,7 +314,7 @@ gctoac logs clear
|
|
|
314
314
|
| 加密 | AES-256-GCM 加密 prompt、response、檔案 |
|
|
315
315
|
| 對話歷史 | 多輪對話、上下文模式(full / summary / recent) |
|
|
316
316
|
| Admin Panel | OTP session 登入;**分 tab** 頁面(佇列/媒體/系統/PM2/DDoS/API 能力);精簡 EN/繁中文案 |
|
|
317
|
-
| 媒體庫 | 工作室(生成/編輯/**1–15 秒影片**/配音)、資產與工作、多格式預覽 lightbox(`blob:` CSP
|
|
317
|
+
| 媒體庫 | 工作室(生成/編輯/**1–15 秒影片**/配音)、資產與工作、多格式預覽 lightbox(`blob:` CSP 安全)。沙箱沒有 `output.png` 時,會從今次 Imagine session 的 `images/` 收圖 |
|
|
318
318
|
| 對話佇列 | 持久化 SQLite 工作、公平輪詢、暫停/排空、死信、Idempotency-Key、`QUEUE_BACKEND`、離線串流 fallback |
|
|
319
319
|
| DDoS 中心 | 即時連線、黑名單、自動封鎖、可配置策略與預設檔(分 tab) |
|
|
320
320
|
| 反向代理 | 信任層數 + CF / nginx / X-Forwarded-For 真實 IP |
|
|
@@ -368,6 +368,61 @@ const res = await client.chat.completions.create({
|
|
|
368
368
|
console.log(res.choices[0].message.content);
|
|
369
369
|
```
|
|
370
370
|
|
|
371
|
+
### Images(OpenAI 形狀)
|
|
372
|
+
|
|
373
|
+
`POST /v1/images/generations` 與 `POST /v1/images/edits` 回傳官方 Images 物件。需要 **`imagesApi` + `tools`**,以及 **agent**(或管理員)金鑰;safe 金鑰會得 **403**。
|
|
374
|
+
|
|
375
|
+
```bash
|
|
376
|
+
curl -s http://127.0.0.1:3847/v1/images/generations \
|
|
377
|
+
-H "Authorization: Bearer $API_KEY" \
|
|
378
|
+
-H "Content-Type: application/json" \
|
|
379
|
+
-d '{
|
|
380
|
+
"prompt": "紅色方塊",
|
|
381
|
+
"n": 1,
|
|
382
|
+
"aspect_ratio": "16:9",
|
|
383
|
+
"response_format": "b64_json"
|
|
384
|
+
}'
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
```json
|
|
388
|
+
{
|
|
389
|
+
"created": 1710000000,
|
|
390
|
+
"data": [{ "b64_json": "iVBOR…" }],
|
|
391
|
+
"grok": { "provider": "grok-tools", "asset_ids": ["uuid"] }
|
|
392
|
+
}
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
| 欄位/主題 | 行為 |
|
|
396
|
+
|------------|------|
|
|
397
|
+
| `response_format` | `b64_json`(預設,與 GPT image 模型相同)或 `url` |
|
|
398
|
+
| `size` | OpenAI 像素(`1024x1024` 等)**或** Grok 比例(`16:9`) |
|
|
399
|
+
| `aspect_ratio` | Grok Imagine(`1:1`、`16:9` 等)——優先於像素尺寸 |
|
|
400
|
+
| `n` | 1–4;Grok 無批次生成,Gateway 或會循環。`n=1` 只交一張 |
|
|
401
|
+
| `data[].url` | Gateway 本機 `/v1/media/assets/:id/content`(同一把 API 金鑰),不是 OpenAI CDN |
|
|
402
|
+
| `grok` | Gateway 擴充(`provider`、`asset_ids`)。OpenAI SDK 會忽略未知欄位 |
|
|
403
|
+
|
|
404
|
+
**生成如何真正收到檔案(v1.7.4+):** Grok Imagine 永遠寫到
|
|
405
|
+
`~/.grok/sessions/<encodeURIComponent(sandbox-cwd)>/<session-uuid>/images/`
|
|
406
|
+
(例如 `1.jpg`)。media-run 沙箱**沒有 bash**,agent 無法自行 `cp` 到 `output.png`。Gateway 只把**今次 run 對應 session** 最新一張圖,在 `image_gen` 成功時(以及 Grok 結束後)複製到沙箱 `output.jpg|png|webp`。
|
|
407
|
+
|
|
408
|
+
收圖順序:
|
|
409
|
+
|
|
410
|
+
1. 沙箱根目錄 `output.png` / `output.jpg` / `output.webp` / `output.jpeg`
|
|
411
|
+
2. 遞歸掃描沙箱(realpath;不會跟隨 symlink 離開今次 run)
|
|
412
|
+
3. 只收今次 run 的 Grok session `images/`——**不會**掃描整個 `~/.grok/sessions`
|
|
413
|
+
|
|
414
|
+
優先最新一張。忽略 `input.png`、`mask.png`、`frame.png`、`ref-*.png`。只有完全找不到圖像時才會回 **502** `no_image_in_sandbox`——**不是** `imagesApi` 或 API 金鑰問題。若 Grok 其後燒盡 `maxTurns` 並以 exit `1` 結束,Gateway 仍會交已生成的圖(不會因為後續 `use_tool` 失敗而丟棄成功的 `image_gen`)。`n=1` 收到第一張圖後會停止 CLI,避免 agent 繼續呼叫 `use_tool`。編輯使用 `--tools image_edit` + `input.png`。影片收檔同樣可取今次 session 的 `videos/`/`images/` 以及沙箱 `output.mp4`。
|
|
415
|
+
|
|
416
|
+
```ts
|
|
417
|
+
const img = await client.images.generate({
|
|
418
|
+
model: 'grok-4.6',
|
|
419
|
+
prompt: '紅色方塊',
|
|
420
|
+
n: 1,
|
|
421
|
+
response_format: 'b64_json',
|
|
422
|
+
});
|
|
423
|
+
const b64 = img.data[0].b64_json;
|
|
424
|
+
```
|
|
425
|
+
|
|
371
426
|
### Chat body 擴充欄位
|
|
372
427
|
|
|
373
428
|
```json
|
|
@@ -452,6 +507,10 @@ POST /admin/api/queue/purge-dead
|
|
|
452
507
|
| POST | `/v1/chat/completions` | OpenAI Chat(佇列;可選 `Idempotency-Key`) |
|
|
453
508
|
| POST | `/v1/responses` | OpenAI Responses 文字子集 |
|
|
454
509
|
| POST | `/v1/messages` | Anthropic Messages(Bearer 或 `x-api-key`) |
|
|
510
|
+
| POST | `/v1/images/generations` | OpenAI Images 生成(`b64_json`/`url`;沙箱為空時會收今次 session `images/`) |
|
|
511
|
+
| POST | `/v1/images/edits` | OpenAI Images 編輯(multipart `image` + 可選 `mask`) |
|
|
512
|
+
| GET | `/v1/media/assets/:id` | 已存資產中繼資料 |
|
|
513
|
+
| GET | `/v1/media/assets/:id/content` | 已存資產內容(同一把 API 金鑰) |
|
|
455
514
|
| POST | `/v1/videos` | Grok 影片 job(`seconds` 1–15;`voices[]` → `reference_to_video`) |
|
|
456
515
|
| GET | `/v1/videos/:id` | 查影片 job |
|
|
457
516
|
| GET | `/admin/api/grok/inspect` | 本機 `grok inspect --json` 快照 |
|
package/README.md
CHANGED
|
@@ -36,7 +36,7 @@ Production OpenAI-compatible HTTP gateway for local **[Grok CLI](https://x.ai)**
|
|
|
36
36
|
|------------|:----:|:---------:|:------------------:|--------------|
|
|
37
37
|
| Text + stream | ✅ | ✅ | ✅ | protocol flags |
|
|
38
38
|
| Vision / image parts | ✅ | ✅ | ✅ | `vision` |
|
|
39
|
-
| **Images** `/v1/images/generations` + `/edits` | ✅ OpenAI-shaped | — | — | `imagesApi` + agent key |
|
|
39
|
+
| **Images** `/v1/images/generations` + `/edits` | ✅ OpenAI-shaped (`b64_json` / `url`) | — | — | `imagesApi` + `tools` + agent key |
|
|
40
40
|
| **Files** `/v1/files` (docs alias) | ✅ | — | — | `filesOpenAiAlias` |
|
|
41
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 |
|
|
@@ -316,7 +316,7 @@ gctoac logs clear
|
|
|
316
316
|
| Encryption | AES-256-GCM for prompts, responses, files |
|
|
317
317
|
| Chat history | Multi-turn conversations, context modes (full / summary / recent) |
|
|
318
318
|
| Admin Panel | OTP session login; **tabbed** pages (queue / media / system / PM2 / DDoS / API features); compact EN/ZH copy |
|
|
319
|
-
| Media library | Studio (gen/edit/**1–15s video**/voices), 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). Generate harvests Imagine session `images/` when sandbox `output.png` is missing |
|
|
320
320
|
| Chat queue | Durable SQLite jobs, fair RR, pause/drain, DLQ, Idempotency-Key, `QUEUE_BACKEND`, offline stream fallback |
|
|
321
321
|
| DDoS center | Live connections, blacklist, auto-ban rules, presets, runtime policy (tabbed) |
|
|
322
322
|
| Reverse proxy | Trust hops + CF / nginx / X-Forwarded-For client IP |
|
|
@@ -393,6 +393,61 @@ const r = await client.responses.create({
|
|
|
393
393
|
|
|
394
394
|
Supported: `input` string or message items (text), `instructions`, `stream`, `tools` (→ Grok tools when enabled), `previous_response_id` (context chain), `GET/DELETE /v1/responses/:id` (encrypted store).
|
|
395
395
|
|
|
396
|
+
### Images (OpenAI-shaped)
|
|
397
|
+
|
|
398
|
+
`POST /v1/images/generations` and `POST /v1/images/edits` return the official Images object. Requires **`imagesApi` + `tools`** and an **agent** (or admin) key — safe keys get **403**.
|
|
399
|
+
|
|
400
|
+
```bash
|
|
401
|
+
curl -s http://127.0.0.1:3847/v1/images/generations \
|
|
402
|
+
-H "Authorization: Bearer $API_KEY" \
|
|
403
|
+
-H "Content-Type: application/json" \
|
|
404
|
+
-d '{
|
|
405
|
+
"prompt": "a red square",
|
|
406
|
+
"n": 1,
|
|
407
|
+
"aspect_ratio": "16:9",
|
|
408
|
+
"response_format": "b64_json"
|
|
409
|
+
}'
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
```json
|
|
413
|
+
{
|
|
414
|
+
"created": 1710000000,
|
|
415
|
+
"data": [{ "b64_json": "iVBOR…" }],
|
|
416
|
+
"grok": { "provider": "grok-tools", "asset_ids": ["uuid"] }
|
|
417
|
+
}
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
| Field / topic | Behavior |
|
|
421
|
+
|---------------|----------|
|
|
422
|
+
| `response_format` | `b64_json` (default, same as GPT image models) or `url` |
|
|
423
|
+
| `size` | OpenAI pixels (`1024x1024`, …) **or** a Grok aspect (`16:9`) |
|
|
424
|
+
| `aspect_ratio` | Grok Imagine (`1:1`, `16:9`, …) — preferred over pixel sizes |
|
|
425
|
+
| `n` | 1–4; Grok has no batch generate — gateway may loop. `n=1` returns one image |
|
|
426
|
+
| `data[].url` | Gateway-local `/v1/media/assets/:id/content` (same API key). Not an OpenAI CDN |
|
|
427
|
+
| `grok` | Gateway extension (`provider`, `asset_ids`). OpenAI SDKs ignore unknown fields |
|
|
428
|
+
|
|
429
|
+
**How generate actually gets a file (v1.7.4+):** Grok Imagine always writes to
|
|
430
|
+
`~/.grok/sessions/<encodeURIComponent(sandbox-cwd)>/<session-uuid>/images/`
|
|
431
|
+
(e.g. `1.jpg`). The media-run sandbox has **no bash**, so the agent cannot `cp` that file to `output.png`. The gateway copies the newest image for **this run’s session only** into sandbox `output.jpg|png|webp` as soon as `image_gen` succeeds (and again when Grok exits).
|
|
432
|
+
|
|
433
|
+
Collect order:
|
|
434
|
+
|
|
435
|
+
1. Sandbox-root `output.png` / `output.jpg` / `output.webp` / `output.jpeg`
|
|
436
|
+
2. Recursive scan of the sandbox (realpath; never follows links out of the run dir)
|
|
437
|
+
3. This run’s Grok session `images/` only — never the rest of `~/.grok/sessions`
|
|
438
|
+
|
|
439
|
+
Prefer the newest file. Ignore `input.png`, `mask.png`, `frame.png`, `ref-*.png`. **502** `no_image_in_sandbox` only if nothing exists — that is **not** an `imagesApi` or API-key failure. If Grok then burns `maxTurns` and exits `1`, the gateway still returns the already-generated file (it does not drop a successful `image_gen`). After the first image is in hand (`n=1`), the CLI process is stopped so the agent cannot keep calling `use_tool`. Edit uses `--tools image_edit` + `input.png`. Video collect can also take this run’s session `videos/` / `images/` plus sandbox `output.mp4`.
|
|
440
|
+
|
|
441
|
+
```ts
|
|
442
|
+
const img = await client.images.generate({
|
|
443
|
+
model: 'grok-4.6',
|
|
444
|
+
prompt: 'a red square',
|
|
445
|
+
n: 1,
|
|
446
|
+
response_format: 'b64_json',
|
|
447
|
+
});
|
|
448
|
+
const b64 = img.data[0].b64_json;
|
|
449
|
+
```
|
|
450
|
+
|
|
396
451
|
### Anthropic Messages
|
|
397
452
|
|
|
398
453
|
```bash
|
|
@@ -513,6 +568,10 @@ POST /admin/api/queue/purge-dead
|
|
|
513
568
|
| POST | `/v1/responses` | OpenAI Responses (text + store) |
|
|
514
569
|
| GET/DELETE | `/v1/responses/:id` | Retrieve / soft-delete stored response |
|
|
515
570
|
| POST | `/v1/messages` | Anthropic Messages (Bearer or `x-api-key`) |
|
|
571
|
+
| POST | `/v1/images/generations` | OpenAI Images generate (`b64_json` / `url`; harvests session `images/` if sandbox is empty) |
|
|
572
|
+
| POST | `/v1/images/edits` | OpenAI Images edit (multipart `image` + optional `mask`) |
|
|
573
|
+
| GET | `/v1/media/assets/:id` | Stored asset metadata |
|
|
574
|
+
| GET | `/v1/media/assets/:id/content` | Stored asset bytes (same API key) |
|
|
516
575
|
| POST | `/v1/videos` | Grok video job (`seconds` 1–15; `voices[]` → `reference_to_video`) |
|
|
517
576
|
| GET | `/v1/videos/:id` | Poll video job |
|
|
518
577
|
| GET | `/admin/api/grok/inspect` | Local `grok inspect --json` snapshot |
|
|
@@ -40,8 +40,27 @@ export declare class GrokToolsMediaProvider implements MediaProvider {
|
|
|
40
40
|
}): Promise<MediaArtifact[]>;
|
|
41
41
|
private runGrokCollectImages;
|
|
42
42
|
private runGrokCollectMedia;
|
|
43
|
+
private toArtifacts;
|
|
43
44
|
}
|
|
44
45
|
export declare function isIgnoredMediaName(name: string): boolean;
|
|
46
|
+
export declare function eventSessionId(ev: Record<string, unknown>): string | null;
|
|
47
|
+
export declare function isSuccessfulMediaToolEvent(ev: Record<string, unknown>): boolean;
|
|
48
|
+
/** ~/.grok/sessions/<encodeURIComponent(realpath(sandbox))> */
|
|
49
|
+
export declare function grokSessionGroupDir(sandboxAbs: string, grokHome?: string): string;
|
|
50
|
+
export declare function findRunSessionDir(sandboxAbs: string, sessionId?: string | null, grokHome?: string): Promise<string | null>;
|
|
51
|
+
export declare function listRunSessionMedia(opts: {
|
|
52
|
+
sandbox: string;
|
|
53
|
+
sessionId?: string | null;
|
|
54
|
+
collect: 'image' | 'video';
|
|
55
|
+
grokHome?: string;
|
|
56
|
+
}): Promise<Set<string>>;
|
|
57
|
+
export declare function copyNewestSessionMediaToSandbox(opts: {
|
|
58
|
+
sandbox: string;
|
|
59
|
+
sessionId?: string | null;
|
|
60
|
+
collect: 'image' | 'video';
|
|
61
|
+
grokHome?: string;
|
|
62
|
+
overwrite?: boolean;
|
|
63
|
+
}): Promise<string | null>;
|
|
45
64
|
/** Recursive sandbox scan. Never follows links out of `dir` (not ~/.grok/sessions). */
|
|
46
65
|
export declare function listMediaFiles(dir: string, exts: Set<string>): Promise<Set<string>>;
|
|
47
66
|
/** Prefer root output.*, then files new this run, then newest mtime in sandbox. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grok-tools.provider.d.ts","sourceRoot":"","sources":["../../../../src/services/media/providers/grok-tools.provider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"grok-tools.provider.d.ts","sourceRoot":"","sources":["../../../../src/services/media/providers/grok-tools.provider.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,15 +5,23 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.grokToolsMediaProvider = exports.GrokToolsMediaProvider = void 0;
|
|
7
7
|
exports.isIgnoredMediaName = isIgnoredMediaName;
|
|
8
|
+
exports.eventSessionId = eventSessionId;
|
|
9
|
+
exports.isSuccessfulMediaToolEvent = isSuccessfulMediaToolEvent;
|
|
10
|
+
exports.grokSessionGroupDir = grokSessionGroupDir;
|
|
11
|
+
exports.findRunSessionDir = findRunSessionDir;
|
|
12
|
+
exports.listRunSessionMedia = listRunSessionMedia;
|
|
13
|
+
exports.copyNewestSessionMediaToSandbox = copyNewestSessionMediaToSandbox;
|
|
8
14
|
exports.listMediaFiles = listMediaFiles;
|
|
9
15
|
exports.selectCollectedMedia = selectCollectedMedia;
|
|
10
16
|
const node_fs_1 = require("node:fs");
|
|
11
17
|
const node_path_1 = __importDefault(require("node:path"));
|
|
12
18
|
const id_1 = require("../../../utils/id");
|
|
19
|
+
const grok_session_1 = require("../../../utils/grok-session");
|
|
13
20
|
const logger_1 = require("../../../utils/logger");
|
|
14
21
|
const exception_factory_1 = require("../../../exceptions/exception.factory");
|
|
15
22
|
const env_1 = require("../../../config/env");
|
|
16
23
|
const grok_cli_service_1 = require("../../grok-cli.service");
|
|
24
|
+
const grok_sessions_service_1 = require("../../grok-sessions.service");
|
|
17
25
|
const IMAGE_EXTS = new Set(['.png', '.jpg', '.jpeg', '.webp', '.gif']);
|
|
18
26
|
const VIDEO_EXTS = new Set(['.mp4', '.webm', '.mov', '.mkv']);
|
|
19
27
|
const IMAGE_OUTPUT_BASENAMES = [
|
|
@@ -188,6 +196,31 @@ class GrokToolsMediaProvider {
|
|
|
188
196
|
: env_1.env.GROK_ALWAYS_APPROVE;
|
|
189
197
|
const permissionMode = req.permissionMode ??
|
|
190
198
|
(alwaysApprove ? 'bypassPermissions' : null);
|
|
199
|
+
let sessionId;
|
|
200
|
+
const want = Math.min(req.n ?? 1, 4);
|
|
201
|
+
const harvest = async () => {
|
|
202
|
+
await copyNewestSessionMediaToSandbox({
|
|
203
|
+
sandbox,
|
|
204
|
+
sessionId,
|
|
205
|
+
collect: req.collect,
|
|
206
|
+
overwrite: false,
|
|
207
|
+
});
|
|
208
|
+
const after = await listFn(sandbox);
|
|
209
|
+
const sessionFiles = await listRunSessionMedia({
|
|
210
|
+
sandbox,
|
|
211
|
+
sessionId,
|
|
212
|
+
collect: req.collect,
|
|
213
|
+
});
|
|
214
|
+
for (const f of sessionFiles)
|
|
215
|
+
after.add(f);
|
|
216
|
+
return selectCollectedMedia({
|
|
217
|
+
sandbox,
|
|
218
|
+
before,
|
|
219
|
+
after,
|
|
220
|
+
collect: req.collect,
|
|
221
|
+
n: want,
|
|
222
|
+
});
|
|
223
|
+
};
|
|
191
224
|
try {
|
|
192
225
|
const available = await grok_cli_service_1.grokCliService.isAvailable();
|
|
193
226
|
if (!available) {
|
|
@@ -203,7 +236,8 @@ class GrokToolsMediaProvider {
|
|
|
203
236
|
collect: req.collect,
|
|
204
237
|
sandbox,
|
|
205
238
|
}, 'Media gen: spawning Grok with policy-aligned options');
|
|
206
|
-
|
|
239
|
+
let lastPoll = 0;
|
|
240
|
+
for await (const ev of grok_cli_service_1.grokCliService.stream({
|
|
207
241
|
prompt,
|
|
208
242
|
model: req.model || env_1.env.GROK_DEFAULT_MODEL,
|
|
209
243
|
cwd: sandbox,
|
|
@@ -216,32 +250,73 @@ class GrokToolsMediaProvider {
|
|
|
216
250
|
permissionMode,
|
|
217
251
|
noSubagents: true,
|
|
218
252
|
})) {
|
|
219
|
-
|
|
253
|
+
const rec = ev;
|
|
254
|
+
const sid = eventSessionId(rec);
|
|
255
|
+
if (sid)
|
|
256
|
+
sessionId = sid;
|
|
257
|
+
const toolOk = isSuccessfulMediaToolEvent(rec);
|
|
258
|
+
const now = Date.now();
|
|
259
|
+
// Poll session images/ even if streaming-json is not tool_completed.
|
|
260
|
+
// Breaking here abandons the generator → streamAttempt finally SIGTERM
|
|
261
|
+
// so the agent cannot burn maxTurns on failed use_tool copies.
|
|
262
|
+
if (toolOk || now - lastPoll >= 400) {
|
|
263
|
+
lastPoll = now;
|
|
264
|
+
const dest = await copyNewestSessionMediaToSandbox({
|
|
265
|
+
sandbox,
|
|
266
|
+
sessionId,
|
|
267
|
+
collect: req.collect,
|
|
268
|
+
overwrite: toolOk,
|
|
269
|
+
});
|
|
270
|
+
if (dest && want <= 1)
|
|
271
|
+
break;
|
|
272
|
+
}
|
|
220
273
|
}
|
|
221
274
|
}
|
|
222
275
|
catch (err) {
|
|
276
|
+
const recovered = await harvest();
|
|
277
|
+
if (recovered.length) {
|
|
278
|
+
logger_1.logger.warn({
|
|
279
|
+
err,
|
|
280
|
+
sandbox,
|
|
281
|
+
collect: req.collect,
|
|
282
|
+
recovered: recovered.length,
|
|
283
|
+
}, 'Media gen: Grok exited with an error but artifacts were recovered');
|
|
284
|
+
return this.toArtifacts(recovered, {
|
|
285
|
+
sandbox,
|
|
286
|
+
prompt,
|
|
287
|
+
timeoutMs,
|
|
288
|
+
maxTurns,
|
|
289
|
+
alwaysApprove,
|
|
290
|
+
collect: req.collect,
|
|
291
|
+
n: want,
|
|
292
|
+
});
|
|
293
|
+
}
|
|
223
294
|
logger_1.logger.warn({ err, sandbox, collect: req.collect }, 'Grok media gen failed');
|
|
224
295
|
if (err && typeof err === 'object' && 'statusCode' in err)
|
|
225
296
|
throw err;
|
|
226
297
|
throw exception_factory_1.ExceptionFactory.mediaGenerationFailed(err instanceof Error ? err.message : 'Grok media generation failed');
|
|
227
298
|
}
|
|
228
|
-
const
|
|
229
|
-
const candidates = await selectCollectedMedia({
|
|
230
|
-
sandbox,
|
|
231
|
-
before,
|
|
232
|
-
after,
|
|
233
|
-
collect: req.collect,
|
|
234
|
-
n: req.n ?? 1,
|
|
235
|
-
});
|
|
299
|
+
const candidates = await harvest();
|
|
236
300
|
if (!candidates.length) {
|
|
237
301
|
throw exception_factory_1.ExceptionFactory.mediaGenerationFailed(req.collect === 'video'
|
|
238
|
-
? 'Grok finished but no video file was found in the sandbox.'
|
|
239
|
-
: 'Grok finished but no image file was found in the sandbox
|
|
302
|
+
? 'Grok finished but no video file was found in the sandbox or this run\'s session.'
|
|
303
|
+
: 'Grok finished but no image file was found in the sandbox or this run\'s session images/.', {
|
|
240
304
|
reason: req.collect === 'video' ? 'no_video_in_sandbox' : 'no_image_in_sandbox',
|
|
241
305
|
});
|
|
242
306
|
}
|
|
307
|
+
return this.toArtifacts(candidates, {
|
|
308
|
+
sandbox,
|
|
309
|
+
prompt,
|
|
310
|
+
timeoutMs,
|
|
311
|
+
maxTurns,
|
|
312
|
+
alwaysApprove,
|
|
313
|
+
collect: req.collect,
|
|
314
|
+
n: want,
|
|
315
|
+
});
|
|
316
|
+
}
|
|
317
|
+
async toArtifacts(files, meta) {
|
|
243
318
|
const artifacts = [];
|
|
244
|
-
for (const file of
|
|
319
|
+
for (const file of files.slice(0, meta.n)) {
|
|
245
320
|
const bytes = await node_fs_1.promises.readFile(file);
|
|
246
321
|
const ext = node_path_1.default.extname(file);
|
|
247
322
|
artifacts.push({
|
|
@@ -251,19 +326,19 @@ class GrokToolsMediaProvider {
|
|
|
251
326
|
source: {
|
|
252
327
|
provider: this.id,
|
|
253
328
|
rawMeta: {
|
|
254
|
-
sandbox,
|
|
329
|
+
sandbox: meta.sandbox,
|
|
255
330
|
file,
|
|
256
|
-
prompt,
|
|
257
|
-
timeoutMs,
|
|
258
|
-
maxTurns,
|
|
259
|
-
alwaysApprove,
|
|
260
|
-
collect:
|
|
331
|
+
prompt: meta.prompt,
|
|
332
|
+
timeoutMs: meta.timeoutMs,
|
|
333
|
+
maxTurns: meta.maxTurns,
|
|
334
|
+
alwaysApprove: meta.alwaysApprove,
|
|
335
|
+
collect: meta.collect,
|
|
261
336
|
},
|
|
262
337
|
},
|
|
263
338
|
});
|
|
264
339
|
}
|
|
265
340
|
if (process.env.MEDIA_KEEP_RUNS !== '1') {
|
|
266
|
-
void node_fs_1.promises.rm(sandbox, { recursive: true, force: true }).catch(() => undefined);
|
|
341
|
+
void node_fs_1.promises.rm(meta.sandbox, { recursive: true, force: true }).catch(() => undefined);
|
|
267
342
|
}
|
|
268
343
|
return artifacts;
|
|
269
344
|
}
|
|
@@ -282,6 +357,167 @@ function isIgnoredMediaName(name) {
|
|
|
282
357
|
return true;
|
|
283
358
|
return /^ref-.*\.png$/i.test(base);
|
|
284
359
|
}
|
|
360
|
+
const MEDIA_TOOL_NAMES = new Set([
|
|
361
|
+
'image_gen',
|
|
362
|
+
'image_edit',
|
|
363
|
+
'image_to_video',
|
|
364
|
+
'reference_to_video',
|
|
365
|
+
]);
|
|
366
|
+
function eventSessionId(ev) {
|
|
367
|
+
const data = ev.data && typeof ev.data === 'object'
|
|
368
|
+
? ev.data
|
|
369
|
+
: {};
|
|
370
|
+
for (const v of [ev.sessionId, ev.session_id, data.sessionId, data.session_id]) {
|
|
371
|
+
if (typeof v === 'string' && (0, grok_session_1.isUuid)(v))
|
|
372
|
+
return v;
|
|
373
|
+
}
|
|
374
|
+
return null;
|
|
375
|
+
}
|
|
376
|
+
function isSuccessfulMediaToolEvent(ev) {
|
|
377
|
+
const data = ev.data && typeof ev.data === 'object'
|
|
378
|
+
? ev.data
|
|
379
|
+
: {};
|
|
380
|
+
const t = String(ev.type || '').toLowerCase();
|
|
381
|
+
const name = String(ev.tool_name || ev.toolName || data.tool_name || data.toolName || data.name || '').toLowerCase();
|
|
382
|
+
const outcome = String(ev.outcome || ev.status || data.outcome || data.status || '').toLowerCase();
|
|
383
|
+
if (!MEDIA_TOOL_NAMES.has(name))
|
|
384
|
+
return false;
|
|
385
|
+
if (t !== 'tool_completed' && t !== 'tool_result')
|
|
386
|
+
return false;
|
|
387
|
+
return (outcome === 'success' ||
|
|
388
|
+
outcome === 'ok' ||
|
|
389
|
+
outcome === 'completed' ||
|
|
390
|
+
outcome === '');
|
|
391
|
+
}
|
|
392
|
+
/** ~/.grok/sessions/<encodeURIComponent(realpath(sandbox))> */
|
|
393
|
+
function grokSessionGroupDir(sandboxAbs, grokHome) {
|
|
394
|
+
const home = grokHome || (0, grok_sessions_service_1.resolveGrokHome)();
|
|
395
|
+
return node_path_1.default.join(home, 'sessions', encodeURIComponent(node_path_1.default.resolve(sandboxAbs)));
|
|
396
|
+
}
|
|
397
|
+
async function findRunSessionDir(sandboxAbs, sessionId, grokHome) {
|
|
398
|
+
const home = grokHome || (0, grok_sessions_service_1.resolveGrokHome)();
|
|
399
|
+
const sessionsRoot = node_path_1.default.join(home, 'sessions');
|
|
400
|
+
let sessionsReal;
|
|
401
|
+
try {
|
|
402
|
+
sessionsReal = await node_fs_1.promises.realpath(sessionsRoot);
|
|
403
|
+
}
|
|
404
|
+
catch {
|
|
405
|
+
return null;
|
|
406
|
+
}
|
|
407
|
+
const group = grokSessionGroupDir(sandboxAbs, home);
|
|
408
|
+
const pickIfSafe = async (dir) => {
|
|
409
|
+
try {
|
|
410
|
+
const real = await node_fs_1.promises.realpath(dir);
|
|
411
|
+
if (real === sessionsReal ||
|
|
412
|
+
!real.startsWith(sessionsReal + node_path_1.default.sep)) {
|
|
413
|
+
return null;
|
|
414
|
+
}
|
|
415
|
+
return real;
|
|
416
|
+
}
|
|
417
|
+
catch {
|
|
418
|
+
return null;
|
|
419
|
+
}
|
|
420
|
+
};
|
|
421
|
+
if (sessionId && (0, grok_session_1.isUuid)(sessionId)) {
|
|
422
|
+
const hit = await pickIfSafe(node_path_1.default.join(group, sessionId));
|
|
423
|
+
if (hit)
|
|
424
|
+
return hit;
|
|
425
|
+
}
|
|
426
|
+
let names = [];
|
|
427
|
+
try {
|
|
428
|
+
names = await node_fs_1.promises.readdir(group);
|
|
429
|
+
}
|
|
430
|
+
catch {
|
|
431
|
+
return null;
|
|
432
|
+
}
|
|
433
|
+
const uuids = names.filter((n) => (0, grok_session_1.isUuid)(n));
|
|
434
|
+
if (!uuids.length)
|
|
435
|
+
return null;
|
|
436
|
+
const ranked = await rankByMtimeNewest(uuids.map((id) => node_path_1.default.join(group, id)));
|
|
437
|
+
for (const dir of ranked) {
|
|
438
|
+
const hit = await pickIfSafe(dir);
|
|
439
|
+
if (hit)
|
|
440
|
+
return hit;
|
|
441
|
+
}
|
|
442
|
+
return null;
|
|
443
|
+
}
|
|
444
|
+
async function listRunSessionMedia(opts) {
|
|
445
|
+
const out = new Set();
|
|
446
|
+
const sessionDir = await findRunSessionDir(opts.sandbox, opts.sessionId, opts.grokHome);
|
|
447
|
+
if (!sessionDir)
|
|
448
|
+
return out;
|
|
449
|
+
const exts = opts.collect === 'video' ? VIDEO_EXTS : IMAGE_EXTS;
|
|
450
|
+
const subdirs = opts.collect === 'video' ? ['videos', 'images'] : ['images'];
|
|
451
|
+
for (const sub of subdirs) {
|
|
452
|
+
const listed = await listMediaFiles(node_path_1.default.join(sessionDir, sub), exts);
|
|
453
|
+
for (const f of listed) {
|
|
454
|
+
try {
|
|
455
|
+
const real = await node_fs_1.promises.realpath(f);
|
|
456
|
+
if (real === sessionDir || real.startsWith(sessionDir + node_path_1.default.sep)) {
|
|
457
|
+
out.add(real);
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
catch {
|
|
461
|
+
/* skip unreadable / dangling */
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
return out;
|
|
466
|
+
}
|
|
467
|
+
async function copyNewestSessionMediaToSandbox(opts) {
|
|
468
|
+
if (!opts.overwrite) {
|
|
469
|
+
const existing = await preferredSandboxOutput(opts.sandbox, opts.collect);
|
|
470
|
+
if (existing)
|
|
471
|
+
return existing;
|
|
472
|
+
}
|
|
473
|
+
const files = [...(await listRunSessionMedia(opts))];
|
|
474
|
+
if (!files.length)
|
|
475
|
+
return null;
|
|
476
|
+
const newest = (await rankByMtimeNewest(files))[0];
|
|
477
|
+
if (!newest)
|
|
478
|
+
return null;
|
|
479
|
+
const ext = node_path_1.default.extname(newest).toLowerCase();
|
|
480
|
+
const destName = opts.collect === 'video'
|
|
481
|
+
? 'output.mp4'
|
|
482
|
+
: ext === '.jpg' || ext === '.jpeg'
|
|
483
|
+
? 'output.jpg'
|
|
484
|
+
: ext === '.webp'
|
|
485
|
+
? 'output.webp'
|
|
486
|
+
: 'output.png';
|
|
487
|
+
const dest = node_path_1.default.join(opts.sandbox, destName);
|
|
488
|
+
try {
|
|
489
|
+
await node_fs_1.promises.copyFile(newest, dest);
|
|
490
|
+
const others = opts.collect === 'video' ? VIDEO_OUTPUT_BASENAMES : IMAGE_OUTPUT_BASENAMES;
|
|
491
|
+
for (const name of others) {
|
|
492
|
+
if (name === destName)
|
|
493
|
+
continue;
|
|
494
|
+
await node_fs_1.promises.unlink(node_path_1.default.join(opts.sandbox, name)).catch(() => undefined);
|
|
495
|
+
}
|
|
496
|
+
logger_1.logger.info({ src: newest, dest, collect: opts.collect }, 'Media gen: copied session artifact into sandbox');
|
|
497
|
+
return dest;
|
|
498
|
+
}
|
|
499
|
+
catch (err) {
|
|
500
|
+
logger_1.logger.warn({ err, src: newest, dest }, 'Media gen: failed to copy session artifact');
|
|
501
|
+
return newest;
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
async function preferredSandboxOutput(sandbox, collect) {
|
|
505
|
+
const after = await listMediaFiles(sandbox, collect === 'video' ? VIDEO_EXTS : IMAGE_EXTS);
|
|
506
|
+
let sandboxReal;
|
|
507
|
+
try {
|
|
508
|
+
sandboxReal = await node_fs_1.promises.realpath(sandbox);
|
|
509
|
+
}
|
|
510
|
+
catch {
|
|
511
|
+
sandboxReal = node_path_1.default.resolve(sandbox);
|
|
512
|
+
}
|
|
513
|
+
const names = collect === 'video' ? VIDEO_OUTPUT_BASENAMES : IMAGE_OUTPUT_BASENAMES;
|
|
514
|
+
for (const name of names) {
|
|
515
|
+
const hit = rootOutputPath(sandboxReal, after, name);
|
|
516
|
+
if (hit)
|
|
517
|
+
return hit;
|
|
518
|
+
}
|
|
519
|
+
return null;
|
|
520
|
+
}
|
|
285
521
|
function isInsideSandbox(sandboxReal, candidateReal) {
|
|
286
522
|
return (candidateReal === sandboxReal ||
|
|
287
523
|
candidateReal.startsWith(sandboxReal + node_path_1.default.sep));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grok-tools.provider.js","sourceRoot":"","sources":["../../../../src/services/media/providers/grok-tools.provider.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"grok-tools.provider.js","sourceRoot":"","sources":["../../../../src/services/media/providers/grok-tools.provider.ts"],"names":[],"mappings":"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"}
|