@qwen-code/arena-agent 0.0.10-dev.1 → 0.0.10-dev.10
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/.env.example +57 -14
- package/CHANGELOG.md +228 -0
- package/README.md +228 -50
- package/dist/agent.d.ts +28 -2
- package/dist/agent.js +341 -106
- package/dist/agent.js.map +1 -1
- package/dist/anthropic.js +23 -22
- package/dist/anthropic.js.map +1 -1
- package/dist/ask-user.js +2 -0
- package/dist/ask-user.js.map +1 -1
- package/dist/attachments.js +4 -3
- package/dist/attachments.js.map +1 -1
- package/dist/brave-search.js +1 -3
- package/dist/brave-search.js.map +1 -1
- package/dist/canonical-data.js +2 -2
- package/dist/canonical-data.js.map +1 -1
- package/dist/cli.js +184 -36
- package/dist/cli.js.map +1 -1
- package/dist/code-tools.d.ts +8 -2
- package/dist/code-tools.js +709 -117
- package/dist/code-tools.js.map +1 -1
- package/dist/compaction.d.ts +49 -3
- package/dist/compaction.js +382 -186
- package/dist/compaction.js.map +1 -1
- package/dist/config.d.ts +17 -2
- package/dist/config.js +47 -5
- package/dist/config.js.map +1 -1
- package/dist/fetch-page.js +9 -33
- package/dist/fetch-page.js.map +1 -1
- package/dist/file-edit.d.ts +8 -0
- package/dist/file-edit.js +63 -0
- package/dist/file-edit.js.map +1 -0
- package/dist/history.d.ts +16 -3
- package/dist/history.js +117 -19
- package/dist/history.js.map +1 -1
- package/dist/legacy-compaction.d.ts +20 -0
- package/dist/legacy-compaction.js +209 -0
- package/dist/legacy-compaction.js.map +1 -0
- package/dist/midturn-checkpoint-hook.d.ts +31 -0
- package/dist/midturn-checkpoint-hook.js +38 -0
- package/dist/midturn-checkpoint-hook.js.map +1 -0
- package/dist/mock.js +5 -0
- package/dist/mock.js.map +1 -1
- package/dist/mode.js +4 -2
- package/dist/mode.js.map +1 -1
- package/dist/model-router-media.d.ts +1 -0
- package/dist/model-router-media.js +71 -1
- package/dist/model-router-media.js.map +1 -1
- package/dist/openai-responses.js +2 -0
- package/dist/openai-responses.js.map +1 -1
- package/dist/process-manager.js +2 -1
- package/dist/process-manager.js.map +1 -1
- package/dist/prompts.d.ts +2 -0
- package/dist/prompts.js +6 -2
- package/dist/prompts.js.map +1 -1
- package/dist/protocol.d.ts +5 -1
- package/dist/protocol.js +24 -2
- package/dist/protocol.js.map +1 -1
- package/dist/provider.d.ts +12 -5
- package/dist/provider.js +60 -52
- package/dist/provider.js.map +1 -1
- package/dist/repetitive-output.d.ts +12 -0
- package/dist/repetitive-output.js +80 -0
- package/dist/repetitive-output.js.map +1 -0
- package/dist/replay-responses.d.ts +17 -0
- package/dist/replay-responses.js +100 -0
- package/dist/replay-responses.js.map +1 -0
- package/dist/routify-web-fetch.js +20 -7
- package/dist/routify-web-fetch.js.map +1 -1
- package/dist/sandbox-file-write.d.ts +10 -0
- package/dist/sandbox-file-write.js +58 -0
- package/dist/sandbox-file-write.js.map +1 -0
- package/dist/server.js +17 -5
- package/dist/server.js.map +1 -1
- package/dist/session-memory-prompts.d.ts +5 -0
- package/dist/session-memory-prompts.js +7 -0
- package/dist/session-memory-prompts.js.map +1 -0
- package/dist/snapshot-client.d.ts +10 -0
- package/dist/snapshot-client.js +39 -0
- package/dist/snapshot-client.js.map +1 -0
- package/dist/spec.js +18 -10
- package/dist/spec.js.map +1 -1
- package/dist/speech-audio.d.ts +9 -0
- package/dist/speech-audio.js +130 -0
- package/dist/speech-audio.js.map +1 -0
- package/dist/speech-model.d.ts +3 -0
- package/dist/speech-model.js +8 -0
- package/dist/speech-model.js.map +1 -0
- package/dist/tools.d.ts +5 -0
- package/dist/tools.js +378 -132
- package/dist/tools.js.map +1 -1
- package/dist/tui.js +13 -10
- package/dist/tui.js.map +1 -1
- package/dist/types.d.ts +28 -3
- package/dist/voice-registry.d.ts +2 -0
- package/dist/voice-registry.js +10 -2
- package/dist/voice-registry.js.map +1 -1
- package/dist/web-fetch-output.d.ts +9 -0
- package/dist/web-fetch-output.js +38 -0
- package/dist/web-fetch-output.js.map +1 -0
- package/dist/workspace.d.ts +2 -0
- package/dist/workspace.js +11 -6
- package/dist/workspace.js.map +1 -1
- package/docs/BINARY_DISTRIBUTION.md +27 -16
- package/docs/MODES_AND_RELEASES.md +28 -5
- package/docs/SDK.md +5 -0
- package/modes/code-arena/capture-provenance.json +57 -0
- package/modes/code-arena/full-stack/system-prompt.txt +1 -1
- package/modes/code-arena/full-stack/template/eslint.config.mjs +3 -4
- package/modes/code-arena/full-stack/template/postcss.config.mjs +2 -2
- package/modes/code-arena/full-stack/tools.json +186 -186
- package/modes/code-arena/html/system-prompt.txt +1 -1
- package/modes/code-arena/html/tools.json +123 -123
- package/modes/code-arena/react/system-prompt.txt +4 -3
- package/modes/code-arena/react/template/package.json +4 -4
- package/modes/code-arena/react/template/src/App.tsx +1 -1
- package/modes/code-arena/react/template/src/main.tsx +1 -1
- package/modes/code-arena/react/template/tsconfig.json +6 -0
- package/modes/code-arena/react/template/vite.config.ts +1 -0
- package/modes/code-arena/react/tools.json +178 -184
- package/package.json +14 -4
- package/scripts/README.md +62 -0
- package/scripts/check-changelog.mjs +66 -0
- package/vendor/audio/darwin-arm64/FFmpeg.LICENSE +502 -0
- package/vendor/audio/darwin-arm64/LAME.LICENSE +481 -0
- package/vendor/audio/darwin-arm64/Opus.LICENSE +44 -0
- package/vendor/audio/darwin-arm64/ffmpeg.gz +0 -0
- package/vendor/audio/darwin-arm64/manifest.json +39 -0
- package/vendor/audio/darwin-x64/FFmpeg.LICENSE +502 -0
- package/vendor/audio/darwin-x64/LAME.LICENSE +481 -0
- package/vendor/audio/darwin-x64/Opus.LICENSE +44 -0
- package/vendor/audio/darwin-x64/ffmpeg.gz +0 -0
- package/vendor/audio/darwin-x64/manifest.json +39 -0
- package/vendor/audio/linux-arm64/FFmpeg.LICENSE +502 -0
- package/vendor/audio/linux-arm64/LAME.LICENSE +481 -0
- package/vendor/audio/linux-arm64/Opus.LICENSE +44 -0
- package/vendor/audio/linux-arm64/ffmpeg.gz +0 -0
- package/vendor/audio/linux-arm64/manifest.json +39 -0
- package/vendor/audio/linux-x64/FFmpeg.LICENSE +502 -0
- package/vendor/audio/linux-x64/LAME.LICENSE +481 -0
- package/vendor/audio/linux-x64/Opus.LICENSE +44 -0
- package/vendor/audio/linux-x64/ffmpeg.gz +0 -0
- package/vendor/audio/linux-x64/manifest.json +39 -0
- package/vendor/audio/sources/build-audio-encoder.sh +76 -0
- package/vendor/audio/sources/ffmpeg-7.0.2.tar.xz +0 -0
- package/vendor/audio/sources/lame-3.100.tar.gz +0 -0
- package/vendor/audio/sources/opus-1.5.2.tar.gz +0 -0
- package/vendor/audio/sources/pkgconf-2.3.0.tar.xz +0 -0
- package/vendor/audio/sources/sources.lock.json +30 -0
- package/vendor/audio/win32-x64/FFmpeg.LICENSE +502 -0
- package/vendor/audio/win32-x64/LAME.LICENSE +481 -0
- package/vendor/audio/win32-x64/Opus.LICENSE +44 -0
- package/vendor/audio/win32-x64/ffmpeg.gz +0 -0
- package/vendor/audio/win32-x64/manifest.json +39 -0
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { spawn } from "node:child_process";
|
|
2
|
+
import { createHash } from "node:crypto";
|
|
3
|
+
import { mkdtemp, readFile, writeFile, rm } from "node:fs/promises";
|
|
4
|
+
import { tmpdir } from "node:os";
|
|
5
|
+
import path from "node:path";
|
|
6
|
+
import { gunzip } from "node:zlib";
|
|
7
|
+
import { promisify } from "node:util";
|
|
8
|
+
import { fileURLToPath } from "node:url";
|
|
9
|
+
import { embeddedAsset, isSingleExecutable } from "./runtime-assets.js";
|
|
10
|
+
const unzip = promisify(gunzip);
|
|
11
|
+
const maximumBytes = 25 * 1024 * 1024;
|
|
12
|
+
export function validatePcm(pcm) {
|
|
13
|
+
if (!Number.isInteger(pcm.sampleRate) || pcm.sampleRate < 8000 || pcm.sampleRate > 96000 ||
|
|
14
|
+
![1, 2].includes(pcm.channels) || !pcm.bytes.length ||
|
|
15
|
+
pcm.bytes.length > maximumBytes || pcm.bytes.length % (2 * pcm.channels) !== 0) {
|
|
16
|
+
throw new Error("Invalid or oversized 16-bit speech PCM response");
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export function pcmToWav(pcm) {
|
|
20
|
+
validatePcm(pcm);
|
|
21
|
+
const header = Buffer.alloc(44);
|
|
22
|
+
header.write("RIFF", 0);
|
|
23
|
+
header.writeUInt32LE(36 + pcm.bytes.length, 4);
|
|
24
|
+
header.write("WAVEfmt ", 8);
|
|
25
|
+
header.writeUInt32LE(16, 16);
|
|
26
|
+
header.writeUInt16LE(1, 20);
|
|
27
|
+
header.writeUInt16LE(pcm.channels, 22);
|
|
28
|
+
header.writeUInt32LE(pcm.sampleRate, 24);
|
|
29
|
+
header.writeUInt32LE(pcm.sampleRate * pcm.channels * 2, 28);
|
|
30
|
+
header.writeUInt16LE(pcm.channels * 2, 32);
|
|
31
|
+
header.writeUInt16LE(16, 34);
|
|
32
|
+
header.write("data", 36);
|
|
33
|
+
header.writeUInt32LE(pcm.bytes.length, 40);
|
|
34
|
+
return Buffer.concat([header, pcm.bytes]);
|
|
35
|
+
}
|
|
36
|
+
async function audioAsset(name) {
|
|
37
|
+
if (isSingleExecutable()) {
|
|
38
|
+
const bytes = embeddedAsset(`audio/${name}`);
|
|
39
|
+
if (bytes)
|
|
40
|
+
return bytes;
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
// Both src/ and dist/ live one directory below the package root.
|
|
44
|
+
const root = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
|
|
45
|
+
const target = `${process.platform}-${process.arch}`;
|
|
46
|
+
try {
|
|
47
|
+
return await readFile(path.join(root, "vendor", "audio", target, name));
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
throw new Error(`Bundled speech encoder asset missing for ${target}: ${name}. Reinstall the complete Arena package.`, { cause: error });
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
throw new Error(`Bundled speech encoder asset missing: ${name}`);
|
|
54
|
+
}
|
|
55
|
+
function checksum(bytes) {
|
|
56
|
+
return createHash("sha256").update(bytes).digest("hex");
|
|
57
|
+
}
|
|
58
|
+
async function extractEncoder(directory) {
|
|
59
|
+
const metadata = JSON.parse((await audioAsset("manifest.json")).toString("utf8"));
|
|
60
|
+
if (metadata.target !== `${process.platform}-${process.arch}` ||
|
|
61
|
+
!Number.isSafeInteger(metadata.binaryBytes) || metadata.binaryBytes <= 0 || metadata.binaryBytes > 128 * 1024 * 1024) {
|
|
62
|
+
throw new Error("Bundled speech encoder metadata does not match this platform");
|
|
63
|
+
}
|
|
64
|
+
const compressed = await audioAsset("ffmpeg.gz");
|
|
65
|
+
if (checksum(compressed) !== metadata.compressedSha256)
|
|
66
|
+
throw new Error("Bundled speech encoder checksum mismatch");
|
|
67
|
+
const binary = await unzip(compressed, { maxOutputLength: metadata.binaryBytes });
|
|
68
|
+
if (binary.length !== metadata.binaryBytes || checksum(binary) !== metadata.binarySha256) {
|
|
69
|
+
throw new Error("Bundled speech encoder binary checksum mismatch");
|
|
70
|
+
}
|
|
71
|
+
const executable = path.join(directory, process.platform === "win32" ? "ffmpeg.exe" : "ffmpeg");
|
|
72
|
+
await writeFile(executable, binary, { flag: "wx", mode: 0o700 });
|
|
73
|
+
return executable;
|
|
74
|
+
}
|
|
75
|
+
function executeEncoder(executable, args, signal) {
|
|
76
|
+
signal?.throwIfAborted();
|
|
77
|
+
return new Promise((resolve, reject) => {
|
|
78
|
+
// Never invoke a shell, search PATH, download a binary, or fall back to host tools.
|
|
79
|
+
const child = spawn(executable, args, { stdio: ["ignore", "ignore", "pipe"], windowsHide: true });
|
|
80
|
+
let diagnostic = "";
|
|
81
|
+
let failure;
|
|
82
|
+
const stop = (error) => { failure ||= error; child.kill("SIGKILL"); };
|
|
83
|
+
const abort = () => stop(new Error("Speech encoding aborted", { cause: signal?.reason }));
|
|
84
|
+
const timer = setTimeout(() => stop(new Error("Bundled speech encoder exceeded 60 seconds")), 60000);
|
|
85
|
+
signal?.addEventListener("abort", abort, { once: true });
|
|
86
|
+
if (signal?.aborted)
|
|
87
|
+
abort();
|
|
88
|
+
child.stderr.on("data", (chunk) => { diagnostic = (diagnostic + chunk.toString("utf8")).slice(-4096); });
|
|
89
|
+
child.on("error", (error) => { failure ||= error; });
|
|
90
|
+
child.on("close", (code) => {
|
|
91
|
+
clearTimeout(timer);
|
|
92
|
+
signal?.removeEventListener("abort", abort);
|
|
93
|
+
if (failure)
|
|
94
|
+
reject(failure);
|
|
95
|
+
else if (code !== 0)
|
|
96
|
+
reject(new Error(`Bundled speech encoder failed (${code}): ${diagnostic}`));
|
|
97
|
+
else
|
|
98
|
+
resolve();
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
export async function encodeSpeechPcm(pcm, format, signal) {
|
|
103
|
+
signal?.throwIfAborted();
|
|
104
|
+
validatePcm(pcm);
|
|
105
|
+
if (format === "wav")
|
|
106
|
+
return pcmToWav(pcm);
|
|
107
|
+
if (format !== "mp3" && format !== "opus")
|
|
108
|
+
throw new Error(`Unsupported speech format: ${format}`);
|
|
109
|
+
const directory = await mkdtemp(path.join(tmpdir(), "arena-speech-"));
|
|
110
|
+
try {
|
|
111
|
+
const executable = await extractEncoder(directory);
|
|
112
|
+
signal?.throwIfAborted();
|
|
113
|
+
const input = path.join(directory, "input.pcm");
|
|
114
|
+
const output = path.join(directory, `output.${format}`);
|
|
115
|
+
await writeFile(input, pcm.bytes, { mode: 0o600 });
|
|
116
|
+
await executeEncoder(executable, ["-hide_banner", "-loglevel", "error", "-nostdin", "-y",
|
|
117
|
+
"-f", "s16le", "-ar", String(pcm.sampleRate), "-ac", String(pcm.channels), "-i", input,
|
|
118
|
+
"-c:a", format === "mp3" ? "libmp3lame" : "libopus", "-b:a", format === "mp3" ? "128k" : "64k",
|
|
119
|
+
"-fs", String(maximumBytes), "-f", format === "mp3" ? "mp3" : "ogg", output], signal);
|
|
120
|
+
signal?.throwIfAborted();
|
|
121
|
+
const bytes = await readFile(output);
|
|
122
|
+
if (!bytes.length || bytes.length >= maximumBytes)
|
|
123
|
+
throw new Error("Generated speech exceeded the output size limit");
|
|
124
|
+
return bytes;
|
|
125
|
+
}
|
|
126
|
+
finally {
|
|
127
|
+
await rm(directory, { recursive: true, force: true });
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=speech-audio.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"speech-audio.js","sourceRoot":"","sources":["../src/speech-audio.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export const defaultSpeechModel = "gemini-3.1-flash-tts-preview";
|
|
2
|
+
export function speechModel() {
|
|
3
|
+
return process.env.ARENA_SPEECH_MODEL || defaultSpeechModel;
|
|
4
|
+
}
|
|
5
|
+
export function isGeminiSpeechModel(model) {
|
|
6
|
+
return /^gemini-.*-tts(?:-|$)/.test(model);
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=speech-model.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"speech-model.js","sourceRoot":"","sources":["../src/speech-model.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,kBAAkB,GAAG,8BAA8B,CAAC;AAEjE,MAAM,UAAU,WAAW;IACzB,OAAO,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,kBAAkB,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,OAAO,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAC7C,CAAC"}
|
package/dist/tools.d.ts
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
import { type ArenaConfig } from "./config.js";
|
|
2
|
+
import { type ModelConnectionOptions } from "./provider.js";
|
|
3
|
+
import type { CheckpointHookToolCall } from "./midturn-checkpoint-hook.js";
|
|
2
4
|
import type { AskUserHandler, AskUserContext, MultimodalUserMessage, ModelClient, ToolCall, ToolDefinition, ToolMessage, WorkspaceContext } from "./types.js";
|
|
3
5
|
interface ToolExecutorOptions {
|
|
4
6
|
askUserHandler?: AskUserHandler;
|
|
5
7
|
modelClient?: ModelClient;
|
|
8
|
+
imageInputFallbackClient?: ModelClient;
|
|
6
9
|
signal?: AbortSignal;
|
|
7
10
|
workspaceContext?: WorkspaceContext;
|
|
8
11
|
}
|
|
12
|
+
export declare function imageInputFallbackConnection(config: ArenaConfig): ModelConnectionOptions | undefined;
|
|
9
13
|
/**
|
|
10
14
|
* Mode-aware tool facade. The Arena executor stays byte-compatible with the
|
|
11
15
|
* existing harness, while the three Code Arena modes use their captured tool
|
|
@@ -17,6 +21,7 @@ export declare class ToolExecutor {
|
|
|
17
21
|
get workspace(): string;
|
|
18
22
|
get askUserEnabled(): boolean;
|
|
19
23
|
availableTools(): ToolDefinition[];
|
|
24
|
+
inspect(call: ToolCall): CheckpointHookToolCall;
|
|
20
25
|
execute(call: ToolCall, context?: AskUserContext): Promise<ToolMessage>;
|
|
21
26
|
takeVisualMessage(toolCallIds: string[]): MultimodalUserMessage | undefined;
|
|
22
27
|
}
|