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

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 (92) hide show
  1. package/.env.example +29 -0
  2. package/README.md +126 -11
  3. package/dist/agent.d.ts +4 -2
  4. package/dist/agent.js +116 -15
  5. package/dist/agent.js.map +1 -1
  6. package/dist/ask-user.d.ts +20 -0
  7. package/dist/ask-user.js +388 -0
  8. package/dist/ask-user.js.map +1 -0
  9. package/dist/canonical-data.d.ts +1 -0
  10. package/dist/canonical-data.js +1 -0
  11. package/dist/canonical-data.js.map +1 -1
  12. package/dist/cli.js +29 -10
  13. package/dist/cli.js.map +1 -1
  14. package/dist/code-cli.d.ts +2 -0
  15. package/dist/code-cli.js +12 -0
  16. package/dist/code-cli.js.map +1 -0
  17. package/dist/code-tools.d.ts +73 -0
  18. package/dist/code-tools.js +2106 -0
  19. package/dist/code-tools.js.map +1 -0
  20. package/dist/config.d.ts +12 -1
  21. package/dist/config.js +66 -3
  22. package/dist/config.js.map +1 -1
  23. package/dist/document-reader.js +9 -0
  24. package/dist/document-reader.js.map +1 -1
  25. package/dist/fetch-page.d.ts +2 -0
  26. package/dist/fetch-page.js +50 -21
  27. package/dist/fetch-page.js.map +1 -1
  28. package/dist/history.d.ts +3 -0
  29. package/dist/history.js +4 -0
  30. package/dist/history.js.map +1 -1
  31. package/dist/mode.d.ts +6 -0
  32. package/dist/mode.js +33 -0
  33. package/dist/mode.js.map +1 -0
  34. package/dist/model-capabilities.d.ts +20 -0
  35. package/dist/model-capabilities.js +98 -0
  36. package/dist/model-capabilities.js.map +1 -0
  37. package/dist/model-diagnostics.d.ts +32 -0
  38. package/dist/model-diagnostics.js +365 -0
  39. package/dist/model-diagnostics.js.map +1 -0
  40. package/dist/provider.d.ts +16 -0
  41. package/dist/provider.js +328 -37
  42. package/dist/provider.js.map +1 -1
  43. package/dist/sdk.d.ts +26 -1
  44. package/dist/sdk.js +1 -0
  45. package/dist/sdk.js.map +1 -1
  46. package/dist/server.d.ts +2 -0
  47. package/dist/server.js +11 -2
  48. package/dist/server.js.map +1 -1
  49. package/dist/spec.d.ts +11 -8
  50. package/dist/spec.js +105 -13
  51. package/dist/spec.js.map +1 -1
  52. package/dist/tools.d.ts +11 -28
  53. package/dist/tools.js +60 -11
  54. package/dist/tools.js.map +1 -1
  55. package/dist/tui.d.ts +2 -0
  56. package/dist/tui.js +8 -2
  57. package/dist/tui.js.map +1 -1
  58. package/dist/types.d.ts +6 -1
  59. package/dist/workspace.d.ts +12 -0
  60. package/dist/workspace.js +165 -0
  61. package/dist/workspace.js.map +1 -0
  62. package/docs/BINARY_DISTRIBUTION.md +225 -0
  63. package/docs/MODES_AND_RELEASES.md +119 -0
  64. package/modes/code-arena/full-stack/system-prompt.txt +77 -0
  65. package/modes/code-arena/full-stack/template/.env +1 -0
  66. package/modes/code-arena/full-stack/template/drizzle.config.json +7 -0
  67. package/modes/code-arena/full-stack/template/eslint.config.mjs +9 -0
  68. package/modes/code-arena/full-stack/template/next.config.ts +5 -0
  69. package/modes/code-arena/full-stack/template/package.json +32 -0
  70. package/modes/code-arena/full-stack/template/postcss.config.mjs +7 -0
  71. package/modes/code-arena/full-stack/template/src/app/api/health/route.ts +13 -0
  72. package/modes/code-arena/full-stack/template/src/app/globals.css +1 -0
  73. package/modes/code-arena/full-stack/template/src/app/layout.tsx +16 -0
  74. package/modes/code-arena/full-stack/template/src/app/page.tsx +22 -0
  75. package/modes/code-arena/full-stack/template/src/db/index.ts +24 -0
  76. package/modes/code-arena/full-stack/template/src/db/schema.ts +3 -0
  77. package/modes/code-arena/full-stack/template/tsconfig.json +24 -0
  78. package/modes/code-arena/full-stack/tools.json +446 -0
  79. package/modes/code-arena/html/system-prompt.txt +36 -0
  80. package/modes/code-arena/html/tools.json +284 -0
  81. package/modes/code-arena/model.json +10 -0
  82. package/modes/code-arena/react/system-prompt.txt +33 -0
  83. package/modes/code-arena/react/template/index.html +12 -0
  84. package/modes/code-arena/react/template/package.json +28 -0
  85. package/modes/code-arena/react/template/src/App.tsx +28 -0
  86. package/modes/code-arena/react/template/src/index.css +1 -0
  87. package/modes/code-arena/react/template/src/main.tsx +10 -0
  88. package/modes/code-arena/react/template/src/utils/cn.ts +6 -0
  89. package/modes/code-arena/react/template/tsconfig.json +25 -0
  90. package/modes/code-arena/react/template/vite.config.ts +18 -0
  91. package/modes/code-arena/react/tools.json +410 -0
  92. package/package.json +18 -3
@@ -0,0 +1,365 @@
1
+ import crypto from "node:crypto";
2
+ import { appendFile, mkdir } from "node:fs/promises";
3
+ import path from "node:path";
4
+ export class JsonlModelCallDiagnostics {
5
+ filePath;
6
+ pending = Promise.resolve();
7
+ constructor(filePath) {
8
+ this.filePath = filePath;
9
+ }
10
+ record(event) {
11
+ const line = `${JSON.stringify(event)}\n`;
12
+ const write = this.pending.then(async () => {
13
+ await mkdir(path.dirname(this.filePath), { recursive: true });
14
+ await appendFile(this.filePath, line, { encoding: "utf8", mode: 0o600 });
15
+ });
16
+ // Diagnostics must never turn a successful model call into an agent
17
+ // failure. Keep writes ordered, but make a filesystem failure best-effort.
18
+ this.pending = write.catch(() => undefined);
19
+ return this.pending;
20
+ }
21
+ }
22
+ function sha256(value) {
23
+ return crypto.createHash("sha256").update(value).digest("hex");
24
+ }
25
+ function stableJson(value) {
26
+ if (Array.isArray(value)) {
27
+ return `[${value.map((item) => stableJson(item)).join(",")}]`;
28
+ }
29
+ if (value && typeof value === "object") {
30
+ const record = value;
31
+ return `{${Object.keys(record)
32
+ .sort()
33
+ .map((key) => `${JSON.stringify(key)}:${stableJson(record[key])}`)
34
+ .join(",")}}`;
35
+ }
36
+ return JSON.stringify(value);
37
+ }
38
+ function stringSummary(value) {
39
+ return { chars: value.length, sha256: sha256(value) };
40
+ }
41
+ export function redactSensitiveText(value) {
42
+ return value
43
+ .replace(/\bsk-[A-Za-z0-9_-]{8,}\b/g, "sk-***")
44
+ .replace(/(authorization\s*["']?\s*[:=]\s*["']?)(?:bearer\s+)?[^\s,;"'}]+/gi, "$1***")
45
+ .replace(/((?:api[_-]?key|access[_-]?token|refresh[_-]?token|password|secret)\s*["']?\s*[:=]\s*["']?)[^\s,;"'}]+/gi, "$1***");
46
+ }
47
+ export function rawDiagnosticValue(value, _key = "", _depth = 0) {
48
+ // Request bodies and aggregated response values are already JSON-compatible.
49
+ // Raw mode deliberately preserves them byte-for-byte at the string/value
50
+ // level, including prompts, tool output, and media Base64. HTTP auth headers
51
+ // are never passed to this function and therefore never enter the log.
52
+ return value;
53
+ }
54
+ function loggedTextSummary(value) {
55
+ const maximumChars = 16_384;
56
+ const redacted = redactSensitiveText(value);
57
+ return {
58
+ ...stringSummary(value),
59
+ text: redacted.slice(0, maximumChars),
60
+ ...(redacted.length > maximumChars ? { truncated: true } : {}),
61
+ };
62
+ }
63
+ function dataUrlSummary(value) {
64
+ const match = value.match(/^data:([^;,]+)?(?:;[^,]*)?,(.*)$/s);
65
+ if (!match)
66
+ return undefined;
67
+ return {
68
+ kind: "data_url",
69
+ media_type: match[1] || "application/octet-stream",
70
+ encoded_chars: match[2]?.length || 0,
71
+ sha256: sha256(value),
72
+ };
73
+ }
74
+ function mediaReferenceSummary(value) {
75
+ if (typeof value === "string") {
76
+ const data = dataUrlSummary(value);
77
+ if (data)
78
+ return data;
79
+ try {
80
+ const url = new URL(value);
81
+ return {
82
+ kind: "url",
83
+ protocol: url.protocol,
84
+ host: url.host,
85
+ path_chars: url.pathname.length,
86
+ has_query: Boolean(url.search),
87
+ sha256: sha256(value),
88
+ };
89
+ }
90
+ catch {
91
+ return { kind: "string", ...stringSummary(value) };
92
+ }
93
+ }
94
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
95
+ return diagnosticValue(value);
96
+ }
97
+ const record = value;
98
+ return {
99
+ keys: Object.keys(record).sort(),
100
+ ...(record.url !== undefined
101
+ ? { url: mediaReferenceSummary(record.url) }
102
+ : {}),
103
+ ...(record.data !== undefined
104
+ ? { data: mediaReferenceSummary(record.data) }
105
+ : {}),
106
+ ...Object.fromEntries(Object.entries(record)
107
+ .filter(([key]) => key !== "url" && key !== "data")
108
+ .map(([key, item]) => [key, diagnosticValue(item, key)])),
109
+ };
110
+ }
111
+ const sensitiveKey = /(?:api.?key|authorization|bearer|credential|password|secret|token)$/i;
112
+ export function diagnosticValue(value, key = "", depth = 0) {
113
+ if (sensitiveKey.test(key))
114
+ return "***";
115
+ if (depth >= 8)
116
+ return { truncated: true, type: typeof value };
117
+ if (typeof value === "string") {
118
+ const data = dataUrlSummary(value);
119
+ if (data)
120
+ return data;
121
+ if (value.length > 4096)
122
+ return stringSummary(value);
123
+ return value;
124
+ }
125
+ if (value === null ||
126
+ value === undefined ||
127
+ typeof value === "number" ||
128
+ typeof value === "boolean") {
129
+ return value;
130
+ }
131
+ if (Array.isArray(value)) {
132
+ return value
133
+ .slice(0, 256)
134
+ .map((item) => diagnosticValue(item, "", depth + 1));
135
+ }
136
+ if (typeof value === "object") {
137
+ return Object.fromEntries(Object.entries(value).map(([name, item]) => [
138
+ name,
139
+ diagnosticValue(item, name, depth + 1),
140
+ ]));
141
+ }
142
+ return String(value);
143
+ }
144
+ function contentPartSummary(value, index, includeText) {
145
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
146
+ return { index, value: diagnosticValue(value) };
147
+ }
148
+ const part = value;
149
+ const omitted = new Set([
150
+ "text",
151
+ "image",
152
+ "image_url",
153
+ "video",
154
+ "video_url",
155
+ "source",
156
+ ]);
157
+ return {
158
+ index,
159
+ keys: Object.keys(part).sort(),
160
+ type: typeof part.type === "string" ? part.type : null,
161
+ ...(typeof part.text === "string"
162
+ ? {
163
+ text: includeText
164
+ ? loggedTextSummary(part.text)
165
+ : stringSummary(part.text),
166
+ }
167
+ : {}),
168
+ ...(part.image !== undefined
169
+ ? { image: mediaReferenceSummary(part.image) }
170
+ : {}),
171
+ ...(part.image_url !== undefined
172
+ ? { image_url: mediaReferenceSummary(part.image_url) }
173
+ : {}),
174
+ ...(part.video !== undefined
175
+ ? { video: mediaReferenceSummary(part.video) }
176
+ : {}),
177
+ ...(part.video_url !== undefined
178
+ ? { video_url: mediaReferenceSummary(part.video_url) }
179
+ : {}),
180
+ ...(part.source !== undefined
181
+ ? { source: mediaReferenceSummary(part.source) }
182
+ : {}),
183
+ ...Object.fromEntries(Object.entries(part)
184
+ .filter(([name]) => name !== "type" && !omitted.has(name))
185
+ .map(([name, item]) => [name, diagnosticValue(item, name)])),
186
+ };
187
+ }
188
+ function messageSummary(value, index) {
189
+ if (!value || typeof value !== "object" || Array.isArray(value)) {
190
+ return { index, value: diagnosticValue(value) };
191
+ }
192
+ const message = value;
193
+ const role = typeof message.role === "string" ? message.role : null;
194
+ const includeText = role === "system" || role === "user";
195
+ const content = message.content;
196
+ return {
197
+ index,
198
+ role,
199
+ keys: Object.keys(message).sort(),
200
+ content: typeof content === "string"
201
+ ? {
202
+ kind: "string",
203
+ ...(includeText
204
+ ? loggedTextSummary(content)
205
+ : stringSummary(content)),
206
+ }
207
+ : Array.isArray(content)
208
+ ? {
209
+ kind: "array",
210
+ parts: content.map((part, partIndex) => contentPartSummary(part, partIndex, includeText)),
211
+ }
212
+ : { kind: typeof content, value: diagnosticValue(content) },
213
+ ...(typeof message.tool_call_id === "string"
214
+ ? { tool_call_id: message.tool_call_id }
215
+ : {}),
216
+ ...(Array.isArray(message.tool_calls)
217
+ ? {
218
+ tool_calls: message.tool_calls.map((call) => {
219
+ const record = call && typeof call === "object"
220
+ ? call
221
+ : {};
222
+ const fn = record.function && typeof record.function === "object"
223
+ ? record.function
224
+ : {};
225
+ return {
226
+ id: record.id,
227
+ type: record.type,
228
+ function: {
229
+ name: fn.name,
230
+ arguments: typeof fn.arguments === "string"
231
+ ? stringSummary(fn.arguments)
232
+ : diagnosticValue(fn.arguments),
233
+ },
234
+ };
235
+ }),
236
+ }
237
+ : {}),
238
+ ...(typeof message.reasoning_content === "string"
239
+ ? { reasoning_content: stringSummary(message.reasoning_content) }
240
+ : {}),
241
+ };
242
+ }
243
+ export function contentPartMediaTypes(value) {
244
+ if (!value || typeof value !== "object" || Array.isArray(value))
245
+ return [];
246
+ const record = value;
247
+ const type = String(record.type || "").toLowerCase();
248
+ const result = new Set();
249
+ if (["image", "image_url", "input_image"].includes(type) ||
250
+ record.image !== undefined ||
251
+ record.image_url !== undefined) {
252
+ result.add("image");
253
+ }
254
+ if (["video", "video_url", "input_video"].includes(type) ||
255
+ record.video !== undefined ||
256
+ record.video_url !== undefined) {
257
+ result.add("video");
258
+ }
259
+ if (["audio", "audio_url", "input_audio"].includes(type) ||
260
+ record.audio !== undefined ||
261
+ record.audio_url !== undefined ||
262
+ record.input_audio !== undefined) {
263
+ result.add("audio");
264
+ }
265
+ if (["file", "file_url", "input_file"].includes(type) ||
266
+ record.file !== undefined ||
267
+ record.file_url !== undefined) {
268
+ result.add("file");
269
+ }
270
+ return [...result];
271
+ }
272
+ export function requestMediaTypes(body) {
273
+ const messages = Array.isArray(body.messages) ? body.messages : [];
274
+ const result = new Set();
275
+ for (const message of messages) {
276
+ if (!message || typeof message !== "object" || Array.isArray(message)) {
277
+ continue;
278
+ }
279
+ const content = message.content;
280
+ if (!Array.isArray(content))
281
+ continue;
282
+ for (const part of content) {
283
+ for (const mediaType of contentPartMediaTypes(part))
284
+ result.add(mediaType);
285
+ }
286
+ }
287
+ return [...result];
288
+ }
289
+ export function requestContainsImage(body) {
290
+ return requestMediaTypes(body).includes("image");
291
+ }
292
+ export function requestDiagnosticSummary(body) {
293
+ const messages = Array.isArray(body.messages) ? body.messages : [];
294
+ const tools = Array.isArray(body.tools) ? body.tools : [];
295
+ const summarizedMessages = messages.map((message, index) => messageSummary(message, index));
296
+ const parameters = Object.fromEntries(Object.entries(body)
297
+ .filter(([key]) => key !== "messages" && key !== "tools" && key !== "model")
298
+ .map(([key, value]) => [key, diagnosticValue(value, key)]));
299
+ return {
300
+ body_keys: Object.keys(body).sort(),
301
+ parameters,
302
+ messages: summarizedMessages,
303
+ messages_sha256: sha256(stableJson(messages)),
304
+ tools: {
305
+ count: tools.length,
306
+ names: tools.map((tool) => {
307
+ const record = tool && typeof tool === "object"
308
+ ? tool
309
+ : {};
310
+ const fn = record.function && typeof record.function === "object"
311
+ ? record.function
312
+ : {};
313
+ return fn.name ?? record.name ?? null;
314
+ }),
315
+ sha256: sha256(stableJson(tools)),
316
+ },
317
+ contains_image: requestContainsImage(body),
318
+ media_types: requestMediaTypes(body),
319
+ };
320
+ }
321
+ export function safeEndpoint(value) {
322
+ try {
323
+ const url = new URL(value);
324
+ url.username = "";
325
+ url.password = "";
326
+ url.search = "";
327
+ url.hash = "";
328
+ return url.toString();
329
+ }
330
+ catch {
331
+ return value.split(/[?#]/, 1)[0] || value;
332
+ }
333
+ }
334
+ export function responseRequestIds(response) {
335
+ const result = {};
336
+ for (const name of [
337
+ "x-request-id",
338
+ "request-id",
339
+ "x-dashscope-request-id",
340
+ "x-litellm-call-id",
341
+ ]) {
342
+ const value = response.headers.get(name);
343
+ if (value)
344
+ result[name] = value;
345
+ }
346
+ return result;
347
+ }
348
+ export function diagnosticError(error) {
349
+ const direct = error;
350
+ const cause = direct?.cause && typeof direct.cause === "object"
351
+ ? direct.cause
352
+ : undefined;
353
+ return {
354
+ name: typeof direct?.name === "string" ? direct.name : typeof error,
355
+ message: typeof direct?.message === "string"
356
+ ? redactSensitiveText(direct.message.slice(0, 4000))
357
+ : redactSensitiveText(String(error)),
358
+ ...((typeof direct?.code === "string" || typeof direct?.code === "number")
359
+ ? { code: direct.code }
360
+ : typeof cause?.code === "string"
361
+ ? { code: cause.code }
362
+ : {}),
363
+ };
364
+ }
365
+ //# sourceMappingURL=model-diagnostics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-diagnostics.js","sourceRoot":"","sources":["../src/model-diagnostics.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,18 @@
1
1
  import type { ArenaConfig } from "./config.js";
2
+ import { type ModelCallDiagnosticSink } from "./model-diagnostics.js";
2
3
  import type { ModelChunk, ModelClient, ModelRequest } from "./types.js";
3
4
  interface HttpModelClientOptions {
4
5
  fetch?: typeof globalThis.fetch;
5
6
  sleep?: (milliseconds: number, signal?: AbortSignal) => Promise<void>;
6
7
  random?: () => number;
7
8
  now?: () => number;
9
+ diagnostics?: ModelCallDiagnosticSink;
10
+ }
11
+ export declare class ModelCapabilityError extends Error {
12
+ readonly capabilityHint: string;
13
+ readonly mediaTypes: string[];
14
+ readonly code = "ARENA_MULTIMODAL_CONTENT_UNSUPPORTED";
15
+ constructor(capabilityHint: string, cause: Error, mediaTypes?: string[]);
8
16
  }
9
17
  export interface ApiConnection {
10
18
  baseUrl: string;
@@ -23,8 +31,16 @@ export declare class HttpModelClient implements ModelClient {
23
31
  private readonly sleep;
24
32
  private readonly random;
25
33
  private readonly now;
34
+ private readonly diagnostics?;
35
+ private readonly recordedToolSchemas;
26
36
  private anthropicBearerAuth;
27
37
  constructor(config: ArenaConfig, options?: HttpModelClientOptions);
38
+ private recordDiagnostic;
39
+ private recordRequest;
40
+ private recordResponseHeaders;
41
+ private recordCompletion;
42
+ private recordCallError;
43
+ private recordAggregatedResponse;
28
44
  private retryDelay;
29
45
  private fetchWithHeadersTimeout;
30
46
  private completionResponse;