@qwen-code/arena-agent 0.0.9-dev.11 → 0.0.9-dev.13

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/docs/SDK.md CHANGED
@@ -289,6 +289,10 @@ if (
289
289
  | `start` | Turn 已开始 |
290
290
  | `reasoning-start/delta/end` | reasoning 流 |
291
291
  | `text-start/delta/end` | 最终文本流 |
292
+ | `model.start` | 模型请求开始,包含 step 与实际 offered tools |
293
+ | `model.retry` | 流式模型请求正在自动重试,包含 attempt 与 error;丢弃本次请求此前的 delta |
294
+ | `model.complete` | 模型请求完成,包含 finish reason 与 usage |
295
+ | `compaction` | 上下文压缩完成;其 usage 只通过此事件上报 |
292
296
  | `tool-input-start/delta/available` | 模型正在生成工具调用 |
293
297
  | `tool-output-available` | 工具执行结果 |
294
298
  | `data-agent-status` | 当前模型或工具阶段 |
@@ -337,6 +341,16 @@ return [
337
341
  ];
338
342
  ```
339
343
 
344
+ 如果调用方选择跳过,返回结构化响应。Agent 会收到标准 skipped tool result 并
345
+ 继续当前 Turn:
346
+
347
+ ```ts
348
+ return {
349
+ answers: [],
350
+ skipped: true,
351
+ };
352
+ ```
353
+
340
354
  ### UI 手动回答
341
355
 
342
356
  不传 `onInputRequired`,收到事件后渲染自己的 UI:
@@ -354,6 +368,15 @@ for await (const event of session.stream({
354
368
  }
355
369
  ```
356
370
 
371
+ 手动 UI 也可以跳过:
372
+
373
+ ```ts
374
+ await session.respondToInput(request.requestId, {
375
+ answers: [],
376
+ skipped: true,
377
+ });
378
+ ```
379
+
357
380
  答案格式:
358
381
 
359
382
  ```ts
@@ -545,7 +568,7 @@ session.retry(options?)
545
568
  session.upload(file)
546
569
  session.download(path)
547
570
  session.workspaceUrl(path)
548
- session.respondToInput(requestId, answers)
571
+ session.respondToInput(requestId, answersOrResponse)
549
572
  session.cancel()
550
573
  session.undo()
551
574
  ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@qwen-code/arena-agent",
3
- "version": "0.0.9-dev.11",
3
+ "version": "0.0.9-dev.13",
4
4
  "description": "A four-mode TypeScript agent harness for Arena and Code Arena traces.",
5
5
  "type": "module",
6
6
  "types": "./dist/sdk.d.ts",
@@ -51,22 +51,35 @@
51
51
  "pretest": "npm run build",
52
52
  "test": "tsx --test test/*.test.ts",
53
53
  "test:tool-replay": "ARENA_TOOL_REPLAY_TESTS=1 tsx --test test/tool-replay.test.ts",
54
- "typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.web.json --noEmit"
54
+ "scaffolds:validate-inputs": "tsx scripts/validate-scaffold-inputs.ts",
55
+ "replay:tools": "tsx scripts/replay-code-tools.ts",
56
+ "experiment:behavior": "tsx scripts/run-code-behavior-experiment.ts",
57
+ "experiment:probes": "tsx scripts/run-code-behavior-probes.ts",
58
+ "typecheck:code-arena-replay": "tsc -p tsconfig.code-arena-replay.json --noEmit",
59
+ "typecheck": "tsc -p tsconfig.json --noEmit && tsc -p tsconfig.web.json --noEmit && npm run typecheck:code-arena-replay"
55
60
  },
56
61
  "dependencies": {
62
+ "@stacksjs/ts-webp": "^0.1.2",
57
63
  "ajv": "^8.20.0",
58
64
  "ajv-formats": "^3.0.1",
65
+ "bmp-js": "^0.1.0",
59
66
  "chardet": "^2.1.0",
60
67
  "defuddle": "^0.19.1",
61
68
  "dotenv": "^17.4.2",
62
69
  "fflate": "^0.8.3",
63
70
  "iconv-lite": "^0.6.3",
71
+ "jpeg-js": "^0.4.4",
64
72
  "linkedom": "^0.18.13",
65
73
  "mime": "4.0.7",
66
- "pdf-parse": "^2.4.5"
74
+ "omggif": "^1.0.10",
75
+ "pdf-parse": "^2.4.5",
76
+ "pngjs": "^7.0.0"
67
77
  },
68
78
  "devDependencies": {
79
+ "@types/bmp-js": "^0.1.2",
69
80
  "@types/node": "^24.10.0",
81
+ "@types/omggif": "^1.0.5",
82
+ "@types/pngjs": "^6.0.5",
70
83
  "esbuild": "^0.28.1",
71
84
  "postject": "^1.0.0-alpha.6",
72
85
  "tsx": "^4.23.1",
package/web/styles.css CHANGED
@@ -1261,20 +1261,35 @@ a:focus-visible {
1261
1261
  font-size: 10px;
1262
1262
  }
1263
1263
 
1264
- .user-input-submit {
1265
- display: block;
1266
- margin-left: auto;
1264
+ .user-input-actions {
1265
+ display: flex;
1266
+ justify-content: flex-end;
1267
+ gap: 7px;
1268
+ }
1269
+
1270
+ .user-input-submit,
1271
+ .user-input-skip {
1267
1272
  padding: 8px 13px;
1268
- border: 0;
1269
1273
  border-radius: 8px;
1270
- background: var(--text);
1271
- color: var(--bg);
1272
1274
  cursor: pointer;
1273
1275
  font-size: 10px;
1274
1276
  font-weight: 700;
1275
1277
  }
1276
1278
 
1277
- .user-input-submit:disabled {
1279
+ .user-input-submit {
1280
+ border: 0;
1281
+ background: var(--text);
1282
+ color: var(--bg);
1283
+ }
1284
+
1285
+ .user-input-skip {
1286
+ border: 1px solid var(--line);
1287
+ background: transparent;
1288
+ color: var(--text-soft);
1289
+ }
1290
+
1291
+ .user-input-submit:disabled,
1292
+ .user-input-skip:disabled {
1278
1293
  cursor: default;
1279
1294
  opacity: 0.5;
1280
1295
  }