@qwen-code/arena-agent 0.0.9-dev.2 → 0.0.9-dev.20
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 +41 -2
- package/README.md +143 -16
- package/dist/agent.d.ts +3 -1
- package/dist/agent.js +61 -15
- package/dist/agent.js.map +1 -1
- package/dist/anthropic.js +3 -1
- package/dist/anthropic.js.map +1 -1
- package/dist/ask-user.d.ts +20 -0
- package/dist/ask-user.js +388 -0
- package/dist/ask-user.js.map +1 -0
- package/dist/attachments.d.ts +1 -1
- package/dist/attachments.js +16 -4
- package/dist/attachments.js.map +1 -1
- package/dist/brave-search.d.ts +6 -0
- package/dist/brave-search.js +193 -0
- package/dist/brave-search.js.map +1 -0
- package/dist/canonical-data.d.ts +1 -0
- package/dist/canonical-data.js +1 -0
- package/dist/canonical-data.js.map +1 -1
- package/dist/cli.js +43 -11
- package/dist/cli.js.map +1 -1
- package/dist/code-cli.d.ts +2 -0
- package/dist/code-cli.js +12 -0
- package/dist/code-cli.js.map +1 -0
- package/dist/code-tools.d.ts +68 -0
- package/dist/code-tools.js +1925 -0
- package/dist/code-tools.js.map +1 -0
- package/dist/config.d.ts +12 -1
- package/dist/config.js +51 -3
- package/dist/config.js.map +1 -1
- package/dist/document-reader.js +9 -0
- package/dist/document-reader.js.map +1 -1
- package/dist/fetch-page.d.ts +2 -0
- package/dist/fetch-page.js +50 -21
- package/dist/fetch-page.js.map +1 -1
- package/dist/history.d.ts +2 -0
- package/dist/history.js +1 -0
- package/dist/history.js.map +1 -1
- package/dist/image.d.ts +14 -0
- package/dist/image.js +299 -0
- package/dist/image.js.map +1 -0
- package/dist/mock.d.ts +1 -0
- package/dist/mock.js +38 -0
- package/dist/mock.js.map +1 -1
- package/dist/mode.d.ts +6 -0
- package/dist/mode.js +33 -0
- package/dist/mode.js.map +1 -0
- package/dist/model-diagnostics.js +5 -2
- package/dist/model-diagnostics.js.map +1 -1
- package/dist/provider.js +14 -5
- package/dist/provider.js.map +1 -1
- package/dist/routify-web-fetch.d.ts +11 -0
- package/dist/routify-web-fetch.js +130 -0
- package/dist/routify-web-fetch.js.map +1 -0
- package/dist/sdk.d.ts +35 -3
- package/dist/sdk.js +6 -2
- package/dist/sdk.js.map +1 -1
- package/dist/server.d.ts +3 -0
- package/dist/server.js +86 -5
- package/dist/server.js.map +1 -1
- package/dist/spec.d.ts +11 -8
- package/dist/spec.js +105 -13
- package/dist/spec.js.map +1 -1
- package/dist/tools.d.ts +10 -27
- package/dist/tools.js +64 -59
- package/dist/tools.js.map +1 -1
- package/dist/tui.d.ts +3 -0
- package/dist/tui.js +11 -2
- package/dist/tui.js.map +1 -1
- package/dist/types.d.ts +9 -2
- package/dist/web/app.js +59 -6
- package/dist/web/app.js.map +1 -1
- package/dist/workspace.d.ts +12 -0
- package/dist/workspace.js +165 -0
- package/dist/workspace.js.map +1 -0
- package/docs/BINARY_DISTRIBUTION.md +231 -0
- package/docs/MODES_AND_RELEASES.md +123 -0
- package/docs/SDK.md +24 -1
- package/modes/code-arena/full-stack/system-prompt.txt +77 -0
- package/modes/code-arena/full-stack/template/.env +1 -0
- package/modes/code-arena/full-stack/template/drizzle.config.json +7 -0
- package/modes/code-arena/full-stack/template/eslint.config.mjs +9 -0
- package/modes/code-arena/full-stack/template/next.config.ts +5 -0
- package/modes/code-arena/full-stack/template/package.json +32 -0
- package/modes/code-arena/full-stack/template/postcss.config.mjs +7 -0
- package/modes/code-arena/full-stack/template/src/app/api/health/route.ts +13 -0
- package/modes/code-arena/full-stack/template/src/app/globals.css +1 -0
- package/modes/code-arena/full-stack/template/src/app/layout.tsx +16 -0
- package/modes/code-arena/full-stack/template/src/app/page.tsx +22 -0
- package/modes/code-arena/full-stack/template/src/db/index.ts +24 -0
- package/modes/code-arena/full-stack/template/src/db/schema.ts +3 -0
- package/modes/code-arena/full-stack/template/tsconfig.json +24 -0
- package/modes/code-arena/full-stack/tools.json +446 -0
- package/modes/code-arena/html/system-prompt.txt +36 -0
- package/modes/code-arena/html/tools.json +284 -0
- package/modes/code-arena/model.json +10 -0
- package/modes/code-arena/react/system-prompt.txt +33 -0
- package/modes/code-arena/react/template/index.html +12 -0
- package/modes/code-arena/react/template/package.json +28 -0
- package/modes/code-arena/react/template/src/App.tsx +28 -0
- package/modes/code-arena/react/template/src/index.css +1 -0
- package/modes/code-arena/react/template/src/main.tsx +10 -0
- package/modes/code-arena/react/template/src/utils/cn.ts +6 -0
- package/modes/code-arena/react/template/tsconfig.json +25 -0
- package/modes/code-arena/react/template/vite.config.ts +18 -0
- package/modes/code-arena/react/tools.json +410 -0
- package/package.json +33 -5
- package/web/styles.css +22 -7
package/dist/spec.js
CHANGED
|
@@ -1,10 +1,15 @@
|
|
|
1
1
|
import { fileURLToPath } from "node:url";
|
|
2
2
|
import path from "node:path";
|
|
3
|
-
import { messageFixtureJson, modelSpecJson } from "./canonical-data.js";
|
|
3
|
+
import { codeArenaModeDataJson, messageFixtureJson, modelSpecJson, } from "./canonical-data.js";
|
|
4
|
+
import { defaultStepLimit, isCodeArenaMode, } from "./mode.js";
|
|
4
5
|
import { repoAgentSystemPromptTemplate } from "./prompts.js";
|
|
5
|
-
|
|
6
|
+
import { isSingleExecutable } from "./runtime-assets.js";
|
|
7
|
+
const packageRoot = path.resolve(isSingleExecutable()
|
|
8
|
+
? path.dirname(process.execPath)
|
|
9
|
+
: path.dirname(fileURLToPath(import.meta.url)), "..");
|
|
6
10
|
let cachedMessageFixture;
|
|
7
11
|
let cachedModelSpec;
|
|
12
|
+
let cachedCodeArenaModeData;
|
|
8
13
|
const locationAbsentLine = "The user's approximate location was not provided by the client.";
|
|
9
14
|
const clientContextPattern = /Today's date is [^\n]*\nThe user's approximate location (?:is:[^\n]*|was not provided by the client\.)/;
|
|
10
15
|
const workspaceGuidancePattern = /Many of the tools are for the workspace;[\s\S]*?Turn-end snapshots are best-effort capped around 128 MB or 10,000 files\.\n\n/;
|
|
@@ -13,14 +18,36 @@ export const userInterruptionNotice = "<arena-system-message>\n" +
|
|
|
13
18
|
"The previous assistant response was stopped by the user before it completed. " +
|
|
14
19
|
"Treat that response as partial and do not assume any unfinished text or tool calls completed.\n" +
|
|
15
20
|
"</arena-system-message>";
|
|
21
|
+
export const codeArenaUserInterruptionNotice = "<code-harness-system-message>\n" +
|
|
22
|
+
"The previous assistant response was stopped by the user before it completed. " +
|
|
23
|
+
"Treat that response as partial and do not assume any unfinished text or tool calls completed.\n" +
|
|
24
|
+
"</code-harness-system-message>";
|
|
25
|
+
export function userInterruptionNoticeForMode(mode) {
|
|
26
|
+
return isCodeArenaMode(mode)
|
|
27
|
+
? codeArenaUserInterruptionNotice
|
|
28
|
+
: userInterruptionNotice;
|
|
29
|
+
}
|
|
16
30
|
export function projectRoot() {
|
|
17
31
|
return packageRoot;
|
|
18
32
|
}
|
|
19
|
-
|
|
33
|
+
function codeArenaModeData(mode) {
|
|
34
|
+
cachedCodeArenaModeData ??= JSON.parse(codeArenaModeDataJson);
|
|
35
|
+
return cachedCodeArenaModeData[mode];
|
|
36
|
+
}
|
|
37
|
+
export function messageFixture(mode = "arena") {
|
|
38
|
+
if (isCodeArenaMode(mode)) {
|
|
39
|
+
return {
|
|
40
|
+
messages: [
|
|
41
|
+
{ role: "system", content: codeArenaModeData(mode).systemPrompt },
|
|
42
|
+
],
|
|
43
|
+
};
|
|
44
|
+
}
|
|
20
45
|
cachedMessageFixture ??= JSON.parse(messageFixtureJson);
|
|
21
46
|
return cachedMessageFixture;
|
|
22
47
|
}
|
|
23
|
-
export function modelSpec() {
|
|
48
|
+
export function modelSpec(mode = "arena") {
|
|
49
|
+
if (isCodeArenaMode(mode))
|
|
50
|
+
return codeArenaModeData(mode).modelSpec;
|
|
24
51
|
cachedModelSpec ??= JSON.parse(modelSpecJson);
|
|
25
52
|
return cachedModelSpec;
|
|
26
53
|
}
|
|
@@ -104,7 +131,33 @@ function applyWorkspaceContext(message, workspaceContext) {
|
|
|
104
131
|
}
|
|
105
132
|
return message;
|
|
106
133
|
}
|
|
107
|
-
|
|
134
|
+
function codeArenaPromptForStepLimit(mode, stepLimit = defaultStepLimit(mode)) {
|
|
135
|
+
const content = codeArenaModeData(mode).systemPrompt;
|
|
136
|
+
if (!stepLimit)
|
|
137
|
+
return content;
|
|
138
|
+
return content.replace(/maximum of \d+ sequential tool-calling steps/, `maximum of ${stepLimit} sequential tool-calling steps`);
|
|
139
|
+
}
|
|
140
|
+
function applyCodeArenaWorkspaceContext(content, workspaceContext) {
|
|
141
|
+
if (!workspaceContext)
|
|
142
|
+
return content;
|
|
143
|
+
const root = path.resolve(workspaceContext.root);
|
|
144
|
+
const cwd = path.resolve(workspaceContext.cwd);
|
|
145
|
+
const rootLine = root === cwd ? "" : `\nThe workspace root is \`${root}\`.`;
|
|
146
|
+
return (`${content.trimEnd()}\n\n` +
|
|
147
|
+
"## Local Workspace\n\n" +
|
|
148
|
+
`The current project root and default working directory is \`${cwd}\`.` +
|
|
149
|
+
rootLine +
|
|
150
|
+
" Relative paths resolve from the current project root. When an absolute " +
|
|
151
|
+
"path is needed, use this real local path. Do not use virtual sandbox " +
|
|
152
|
+
"aliases such as `/app` or `/home/user`.\n");
|
|
153
|
+
}
|
|
154
|
+
export function systemMessage(context, workspaceContext, mode = "arena", stepLimit) {
|
|
155
|
+
if (isCodeArenaMode(mode)) {
|
|
156
|
+
return {
|
|
157
|
+
role: "system",
|
|
158
|
+
content: applyCodeArenaWorkspaceContext(codeArenaPromptForStepLimit(mode, stepLimit), workspaceContext),
|
|
159
|
+
};
|
|
160
|
+
}
|
|
108
161
|
const fixture = messageFixture().messages;
|
|
109
162
|
const canonical = structuredClone(fixture[0]);
|
|
110
163
|
const currentDate = cleanContextValue(context.currentDate);
|
|
@@ -118,7 +171,10 @@ export function systemMessage(context, workspaceContext) {
|
|
|
118
171
|
canonical.content = canonical.content.replace(clientContextPattern, dynamicContext);
|
|
119
172
|
return applyWorkspaceContext(canonical, workspaceContext);
|
|
120
173
|
}
|
|
121
|
-
export function repoSystemMessage(context, repo) {
|
|
174
|
+
export function repoSystemMessage(context, repo, mode = "arena", workspaceContext, stepLimit) {
|
|
175
|
+
if (isCodeArenaMode(mode)) {
|
|
176
|
+
return systemMessage(context, workspaceContext, mode, stepLimit);
|
|
177
|
+
}
|
|
122
178
|
return {
|
|
123
179
|
role: "system",
|
|
124
180
|
content: renderTemplate(repoAgentSystemPromptTemplate, {
|
|
@@ -148,27 +204,34 @@ export function repoContextFromSystemMessage(message) {
|
|
|
148
204
|
baseBranch: branch[3],
|
|
149
205
|
};
|
|
150
206
|
}
|
|
151
|
-
export function isCanonicalSystemMessage(message, expectedOrWorkspace) {
|
|
207
|
+
export function isCanonicalSystemMessage(message, expectedOrWorkspace, mode = "arena", stepLimit) {
|
|
152
208
|
if (message?.role !== "system" ||
|
|
153
209
|
typeof message.content !== "string" ||
|
|
154
210
|
!message.content) {
|
|
155
211
|
return false;
|
|
156
212
|
}
|
|
213
|
+
if (isCodeArenaMode(mode)) {
|
|
214
|
+
const normalize = (content) => content.replace(/maximum of \d+ sequential tool-calling steps/, "maximum of <steps> sequential tool-calling steps");
|
|
215
|
+
const expected = expectedOrWorkspace && "role" in expectedOrWorkspace
|
|
216
|
+
? expectedOrWorkspace.content
|
|
217
|
+
: applyCodeArenaWorkspaceContext(codeArenaPromptForStepLimit(mode, stepLimit), expectedOrWorkspace);
|
|
218
|
+
return normalize(message.content) === normalize(expected);
|
|
219
|
+
}
|
|
157
220
|
const canonical = expectedOrWorkspace && "role" in expectedOrWorkspace
|
|
158
221
|
? expectedOrWorkspace
|
|
159
222
|
: systemMessage(defaultClientContext(), expectedOrWorkspace);
|
|
160
223
|
return (message.content.replace(clientContextPattern, "<client-context>") ===
|
|
161
224
|
canonical.content.replace(clientContextPattern, "<client-context>"));
|
|
162
225
|
}
|
|
163
|
-
export function initialMessages(prompt, context = defaultClientContext(), workspaceContext, repo) {
|
|
226
|
+
export function initialMessages(prompt, context = defaultClientContext(), workspaceContext, repo, mode = "arena", stepLimit) {
|
|
164
227
|
return [
|
|
165
228
|
repo
|
|
166
|
-
? repoSystemMessage(context, repo)
|
|
167
|
-
: systemMessage(context, workspaceContext),
|
|
229
|
+
? repoSystemMessage(context, repo, mode, workspaceContext, stepLimit)
|
|
230
|
+
: systemMessage(context, workspaceContext, mode, stepLimit),
|
|
168
231
|
{ role: "user", content: prompt },
|
|
169
232
|
];
|
|
170
233
|
}
|
|
171
|
-
export function interruptedUserMessage(promptOrMessage) {
|
|
234
|
+
export function interruptedUserMessage(promptOrMessage, mode = "arena") {
|
|
172
235
|
const content = typeof promptOrMessage === "string"
|
|
173
236
|
? [{ text: promptOrMessage }]
|
|
174
237
|
: typeof promptOrMessage.content === "string"
|
|
@@ -177,7 +240,7 @@ export function interruptedUserMessage(promptOrMessage) {
|
|
|
177
240
|
return {
|
|
178
241
|
role: "user",
|
|
179
242
|
content: [
|
|
180
|
-
{ text:
|
|
243
|
+
{ text: userInterruptionNoticeForMode(mode) },
|
|
181
244
|
...content,
|
|
182
245
|
],
|
|
183
246
|
};
|
|
@@ -192,7 +255,36 @@ function parameterProperty(definition, name) {
|
|
|
192
255
|
}
|
|
193
256
|
return property;
|
|
194
257
|
}
|
|
195
|
-
|
|
258
|
+
function codeArenaToolDefinitions(mode, workspaceContext) {
|
|
259
|
+
const definitions = structuredClone(modelSpec(mode).tools);
|
|
260
|
+
if (!workspaceContext || mode !== "full-stack")
|
|
261
|
+
return definitions;
|
|
262
|
+
const cwd = path.resolve(workspaceContext.cwd);
|
|
263
|
+
const bash = definitions.find((definition) => definition.function.name === "bash");
|
|
264
|
+
if (!bash)
|
|
265
|
+
return definitions;
|
|
266
|
+
bash.function.description =
|
|
267
|
+
`Execute a bash command directly in the local workspace at \`${cwd}\`. ` +
|
|
268
|
+
"Node.js and common CLI tools are available. Commands and output use real " +
|
|
269
|
+
"local paths; there is no `/app` virtual-path alias.\n\n" +
|
|
270
|
+
"Guidelines:\n" +
|
|
271
|
+
`- Use \`.\` for the project root (\`${cwd}\`) or pass a relative ` +
|
|
272
|
+
"subdirectory as `workdir`. Never pass a path outside the workspace.\n" +
|
|
273
|
+
"- Prefer specialized tools (create_file, edit_file, read_file) for file operations when possible.\n" +
|
|
274
|
+
"- Include a short `description` summarizing what the command does in 5-10 words.\n" +
|
|
275
|
+
"- The command runs with `/bin/bash -c` and captures both stdout and stderr.\n";
|
|
276
|
+
const properties = bash.function.parameters.properties;
|
|
277
|
+
if (properties?.workdir) {
|
|
278
|
+
properties.workdir.description =
|
|
279
|
+
`Working directory relative to the real project root \`${cwd}\` ` +
|
|
280
|
+
"(use `.` for the project root)";
|
|
281
|
+
}
|
|
282
|
+
return definitions;
|
|
283
|
+
}
|
|
284
|
+
export function toolDefinitions(workspaceContext, mode = "arena") {
|
|
285
|
+
if (isCodeArenaMode(mode)) {
|
|
286
|
+
return codeArenaToolDefinitions(mode, workspaceContext);
|
|
287
|
+
}
|
|
196
288
|
const definitions = structuredClone(modelSpec().tools);
|
|
197
289
|
if (!workspaceContext)
|
|
198
290
|
return definitions;
|
package/dist/spec.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spec.js","sourceRoot":"","sources":["../src/spec.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"spec.js","sourceRoot":"","sources":["../src/spec.ts"],"names":[],"mappings":"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"}
|
package/dist/tools.d.ts
CHANGED
|
@@ -1,39 +1,22 @@
|
|
|
1
1
|
import { type ArenaConfig } from "./config.js";
|
|
2
|
-
import type { AskUserHandler, MultimodalUserMessage, ToolCall, ToolDefinition, ToolMessage, WorkspaceContext } from "./types.js";
|
|
2
|
+
import type { AskUserHandler, AskUserContext, MultimodalUserMessage, ToolCall, ToolDefinition, ToolMessage, WorkspaceContext } from "./types.js";
|
|
3
3
|
interface ToolExecutorOptions {
|
|
4
4
|
askUserHandler?: AskUserHandler;
|
|
5
5
|
signal?: AbortSignal;
|
|
6
6
|
workspaceContext?: WorkspaceContext;
|
|
7
7
|
}
|
|
8
|
+
/**
|
|
9
|
+
* Mode-aware tool facade. The Arena executor stays byte-compatible with the
|
|
10
|
+
* existing harness, while the three Code Arena modes use their captured tool
|
|
11
|
+
* contracts and implementations behind the same agent-loop interface.
|
|
12
|
+
*/
|
|
8
13
|
export declare class ToolExecutor {
|
|
9
|
-
private readonly
|
|
10
|
-
readonly workspace: string;
|
|
11
|
-
private readonly workspaceReal;
|
|
12
|
-
private readonly validators;
|
|
13
|
-
private readonly pendingVisualContent;
|
|
14
|
-
private readonly askUserHandler?;
|
|
15
|
-
private readonly signal?;
|
|
16
|
-
private readonly workspaceContext?;
|
|
17
|
-
private readonly pageReader;
|
|
18
|
-
private readonly ajv;
|
|
19
|
-
readonly askUserEnabled: boolean;
|
|
14
|
+
private readonly implementation;
|
|
20
15
|
constructor(config: ArenaConfig, options?: ToolExecutorOptions);
|
|
16
|
+
get workspace(): string;
|
|
17
|
+
get askUserEnabled(): boolean;
|
|
21
18
|
availableTools(): ToolDefinition[];
|
|
22
|
-
execute(call: ToolCall): Promise<ToolMessage>;
|
|
19
|
+
execute(call: ToolCall, context?: AskUserContext): Promise<ToolMessage>;
|
|
23
20
|
takeVisualMessage(toolCallIds: string[]): MultimodalUserMessage | undefined;
|
|
24
|
-
private dispatch;
|
|
25
|
-
private confinedPath;
|
|
26
|
-
private relativePath;
|
|
27
|
-
private virtualizeBashOutput;
|
|
28
|
-
private bash;
|
|
29
|
-
private askUser;
|
|
30
|
-
private editFile;
|
|
31
|
-
private readWorkspaceFile;
|
|
32
|
-
private writeWorkspaceFile;
|
|
33
|
-
private webSearch;
|
|
34
|
-
private imageSearch;
|
|
35
|
-
private presentFile;
|
|
36
|
-
private generateImage;
|
|
37
|
-
private generateSpeech;
|
|
38
21
|
}
|
|
39
22
|
export {};
|
package/dist/tools.js
CHANGED
|
@@ -8,9 +8,14 @@ import addFormats from "ajv-formats";
|
|
|
8
8
|
import { detect as detectEncoding } from "chardet";
|
|
9
9
|
import iconv from "iconv-lite";
|
|
10
10
|
import mime from "mime/lite";
|
|
11
|
+
import { AskUserHandlerError } from "./ask-user.js";
|
|
12
|
+
import { executeBraveWebSearch } from "./brave-search.js";
|
|
13
|
+
import { CodeToolExecutor } from "./code-tools.js";
|
|
11
14
|
import { supportsImageInput } from "./config.js";
|
|
12
15
|
import { extractStructuredDocument, isStructuredDocument, } from "./document-reader.js";
|
|
13
16
|
import { FetchPageReader } from "./fetch-page.js";
|
|
17
|
+
import { prepareImageForModel } from "./image.js";
|
|
18
|
+
import { isCodeArenaMode } from "./mode.js";
|
|
14
19
|
import { toolDefinitions } from "./spec.js";
|
|
15
20
|
const knownTextApplicationMimeTypes = new Set([
|
|
16
21
|
"application/ecmascript",
|
|
@@ -412,7 +417,7 @@ async function responseBytes(response, limit = 4 * 1024 * 1024) {
|
|
|
412
417
|
}
|
|
413
418
|
return bytes;
|
|
414
419
|
}
|
|
415
|
-
|
|
420
|
+
class ArenaToolExecutor {
|
|
416
421
|
config;
|
|
417
422
|
workspace;
|
|
418
423
|
workspaceReal;
|
|
@@ -423,9 +428,9 @@ export class ToolExecutor {
|
|
|
423
428
|
workspaceContext;
|
|
424
429
|
pageReader;
|
|
425
430
|
ajv = new Ajv({ allErrors: true, strict: false });
|
|
426
|
-
// ask_user needs
|
|
427
|
-
//
|
|
428
|
-
//
|
|
431
|
+
// ask_user needs a handler: TUI/WebUI collect real user input, while
|
|
432
|
+
// headless `-p` may delegate to a configured remote User Agent. Without a
|
|
433
|
+
// handler the tool is withheld rather than dead-ending on needs_input.
|
|
429
434
|
askUserEnabled;
|
|
430
435
|
constructor(config, options = {}) {
|
|
431
436
|
this.config = config;
|
|
@@ -444,7 +449,7 @@ export class ToolExecutor {
|
|
|
444
449
|
}
|
|
445
450
|
// The tool schemas offered to the model for this session. Identical to the
|
|
446
451
|
// canonical trace set, adjusted for the selected workspace runtime and minus
|
|
447
|
-
// ask_user when no
|
|
452
|
+
// ask_user when no handler is wired.
|
|
448
453
|
availableTools() {
|
|
449
454
|
let definitions = toolDefinitions(this.workspaceContext);
|
|
450
455
|
if (!this.askUserEnabled) {
|
|
@@ -453,7 +458,7 @@ export class ToolExecutor {
|
|
|
453
458
|
const disallowed = new Set(this.config.disallowedTools || []);
|
|
454
459
|
return definitions.filter((definition) => !disallowed.has(definition.function.name));
|
|
455
460
|
}
|
|
456
|
-
async execute(call) {
|
|
461
|
+
async execute(call, context) {
|
|
457
462
|
const callId = String(call.id || "");
|
|
458
463
|
const name = String(call.function?.name || "");
|
|
459
464
|
this.pendingVisualContent.delete(callId);
|
|
@@ -476,7 +481,7 @@ export class ToolExecutor {
|
|
|
476
481
|
.join("; ");
|
|
477
482
|
throw new Error(`invalid arguments: ${errors}`);
|
|
478
483
|
}
|
|
479
|
-
const result = await this.dispatch(name, argumentsValue, callId);
|
|
484
|
+
const result = await this.dispatch(name, argumentsValue, callId, context);
|
|
480
485
|
const content = typeof result === "string" ? result : json(result);
|
|
481
486
|
if (content.length > toolResultCharacterLimit) {
|
|
482
487
|
return {
|
|
@@ -497,6 +502,13 @@ export class ToolExecutor {
|
|
|
497
502
|
};
|
|
498
503
|
}
|
|
499
504
|
catch (error) {
|
|
505
|
+
if (error instanceof AskUserHandlerError) {
|
|
506
|
+
return {
|
|
507
|
+
role: "tool",
|
|
508
|
+
tool_call_id: callId,
|
|
509
|
+
content: json({ status: "error", message: error.message }),
|
|
510
|
+
};
|
|
511
|
+
}
|
|
500
512
|
return {
|
|
501
513
|
role: "tool",
|
|
502
514
|
tool_call_id: callId,
|
|
@@ -524,7 +536,7 @@ export class ToolExecutor {
|
|
|
524
536
|
content: [{ text: visualIntroText }, ...images],
|
|
525
537
|
};
|
|
526
538
|
}
|
|
527
|
-
async dispatch(name, values, toolCallId) {
|
|
539
|
+
async dispatch(name, values, toolCallId, context) {
|
|
528
540
|
switch (name) {
|
|
529
541
|
case "bash":
|
|
530
542
|
return this.bash(String(values.command), String(values.cwd ||
|
|
@@ -532,7 +544,7 @@ export class ToolExecutor {
|
|
|
532
544
|
? path.resolve(this.workspaceContext.cwd)
|
|
533
545
|
: "/home/user")), Number(values.timeout || 30));
|
|
534
546
|
case "ask_user":
|
|
535
|
-
return this.askUser(values.questions, toolCallId);
|
|
547
|
+
return this.askUser(values.questions, toolCallId, context);
|
|
536
548
|
case "edit_file":
|
|
537
549
|
return this.editFile(String(values.path), String(values.old_text), String(values.new_text));
|
|
538
550
|
case "read_file":
|
|
@@ -623,7 +635,6 @@ export class ToolExecutor {
|
|
|
623
635
|
return new Promise((resolve, reject) => {
|
|
624
636
|
const env = {
|
|
625
637
|
...process.env,
|
|
626
|
-
HOME: this.workspace,
|
|
627
638
|
ARENA_WORKSPACE: this.workspace,
|
|
628
639
|
// 生产 sandbox 是 C collation(参考 find|sort 为逐字节序),宿主
|
|
629
640
|
// 常见 en_US.UTF-8 会翻转大小写次序;统一成 C.UTF-8 对齐生产。
|
|
@@ -741,9 +752,12 @@ export class ToolExecutor {
|
|
|
741
752
|
child.once("close", (code) => finish(code));
|
|
742
753
|
});
|
|
743
754
|
}
|
|
744
|
-
async askUser(questions, toolCallId) {
|
|
755
|
+
async askUser(questions, toolCallId, context) {
|
|
745
756
|
if (this.askUserHandler) {
|
|
746
|
-
return this.askUserHandler(toolCallId, questions
|
|
757
|
+
return this.askUserHandler(toolCallId, questions, context ? {
|
|
758
|
+
...context,
|
|
759
|
+
signal: this.signal || context.signal,
|
|
760
|
+
} : undefined);
|
|
747
761
|
}
|
|
748
762
|
// ask_user is not offered in non-interactive sessions; if the model still
|
|
749
763
|
// emits it (e.g. resumed history or a hallucinated call), report an error
|
|
@@ -864,9 +878,17 @@ export class ToolExecutor {
|
|
|
864
878
|
mimeTypes[extension] ||
|
|
865
879
|
"application/octet-stream";
|
|
866
880
|
if (kind === "image") {
|
|
881
|
+
const prepared = await prepareImageForModel(data, mimeType);
|
|
882
|
+
if (!prepared.dataUri) {
|
|
883
|
+
return {
|
|
884
|
+
status: "error",
|
|
885
|
+
message: `Image could not be provided to the model: ${rawPath} ` +
|
|
886
|
+
`(${prepared.omittedReason || "exceeds the inline image limits"}).`,
|
|
887
|
+
};
|
|
888
|
+
}
|
|
867
889
|
this.pendingVisualContent.set(toolCallId, [
|
|
868
890
|
{
|
|
869
|
-
image:
|
|
891
|
+
image: prepared.dataUri,
|
|
870
892
|
},
|
|
871
893
|
]);
|
|
872
894
|
return [{ type: "text", text: imageResultPlaceholder }];
|
|
@@ -885,52 +907,7 @@ export class ToolExecutor {
|
|
|
885
907
|
return { status: "success" };
|
|
886
908
|
}
|
|
887
909
|
async webSearch(query, depth) {
|
|
888
|
-
|
|
889
|
-
const searchStrategy = depth === "1" ? "turbo" : "max";
|
|
890
|
-
const payload = await dashScopeJson("api", "/services/aigc/text-generation/generation", {
|
|
891
|
-
method: "POST",
|
|
892
|
-
headers: { "content-type": "application/json" },
|
|
893
|
-
body: JSON.stringify({
|
|
894
|
-
model,
|
|
895
|
-
input: {
|
|
896
|
-
messages: [{ role: "user", content: query }],
|
|
897
|
-
},
|
|
898
|
-
parameters: {
|
|
899
|
-
enable_search: true,
|
|
900
|
-
result_format: "message",
|
|
901
|
-
search_options: {
|
|
902
|
-
forced_search: true,
|
|
903
|
-
enable_source: true,
|
|
904
|
-
enable_citation: true,
|
|
905
|
-
citation_format: "[<number>]",
|
|
906
|
-
search_strategy: searchStrategy,
|
|
907
|
-
},
|
|
908
|
-
},
|
|
909
|
-
}),
|
|
910
|
-
signal: this.signal,
|
|
911
|
-
}, "web_search");
|
|
912
|
-
const output = record(payload.output);
|
|
913
|
-
const searchInfo = record(output.search_info);
|
|
914
|
-
const searchResults = Array.isArray(searchInfo.search_results)
|
|
915
|
-
? searchInfo.search_results
|
|
916
|
-
: [];
|
|
917
|
-
const limit = { "1": 3, "2": 5, "3": 8 }[depth] || 5;
|
|
918
|
-
// 参考轨迹条目:{id, url, title, description[, pageAge]};
|
|
919
|
-
// DashScope 无 pageAge,按可选键省略。
|
|
920
|
-
return {
|
|
921
|
-
status: "success",
|
|
922
|
-
results: searchResults.slice(0, limit).map((value, index) => {
|
|
923
|
-
const item = record(value);
|
|
924
|
-
return {
|
|
925
|
-
id: Number(item.index) || index + 1,
|
|
926
|
-
url: stringValue(item.url),
|
|
927
|
-
title: stringValue(item.title),
|
|
928
|
-
description: stringValue(item.content) ||
|
|
929
|
-
stringValue(item.snippet) ||
|
|
930
|
-
stringValue(item.summary),
|
|
931
|
-
};
|
|
932
|
-
}),
|
|
933
|
-
};
|
|
910
|
+
return executeBraveWebSearch(query, depth, { signal: this.signal });
|
|
934
911
|
}
|
|
935
912
|
async imageSearch(query, count) {
|
|
936
913
|
const model = process.env.ARENA_IMAGE_SEARCH_MODEL || "qwen3.7-plus";
|
|
@@ -1199,4 +1176,32 @@ export class ToolExecutor {
|
|
|
1199
1176
|
};
|
|
1200
1177
|
}
|
|
1201
1178
|
}
|
|
1179
|
+
/**
|
|
1180
|
+
* Mode-aware tool facade. The Arena executor stays byte-compatible with the
|
|
1181
|
+
* existing harness, while the three Code Arena modes use their captured tool
|
|
1182
|
+
* contracts and implementations behind the same agent-loop interface.
|
|
1183
|
+
*/
|
|
1184
|
+
export class ToolExecutor {
|
|
1185
|
+
implementation;
|
|
1186
|
+
constructor(config, options = {}) {
|
|
1187
|
+
this.implementation = isCodeArenaMode(config.mode)
|
|
1188
|
+
? new CodeToolExecutor(config, options)
|
|
1189
|
+
: new ArenaToolExecutor(config, options);
|
|
1190
|
+
}
|
|
1191
|
+
get workspace() {
|
|
1192
|
+
return this.implementation.workspace;
|
|
1193
|
+
}
|
|
1194
|
+
get askUserEnabled() {
|
|
1195
|
+
return this.implementation.askUserEnabled;
|
|
1196
|
+
}
|
|
1197
|
+
availableTools() {
|
|
1198
|
+
return this.implementation.availableTools();
|
|
1199
|
+
}
|
|
1200
|
+
execute(call, context) {
|
|
1201
|
+
return this.implementation.execute(call, context);
|
|
1202
|
+
}
|
|
1203
|
+
takeVisualMessage(toolCallIds) {
|
|
1204
|
+
return this.implementation.takeVisualMessage(toolCallIds);
|
|
1205
|
+
}
|
|
1206
|
+
}
|
|
1202
1207
|
//# sourceMappingURL=tools.js.map
|