@qwen-code/arena-agent 0.0.5 → 0.0.7-preview.0

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 (57) hide show
  1. package/.env.example +12 -19
  2. package/README.md +26 -133
  3. package/dist/agent.d.ts +3 -9
  4. package/dist/agent.js +108 -246
  5. package/dist/agent.js.map +1 -1
  6. package/dist/cli.js +12 -41
  7. package/dist/cli.js.map +1 -1
  8. package/dist/config.d.ts +1 -6
  9. package/dist/config.js +2 -28
  10. package/dist/config.js.map +1 -1
  11. package/dist/fetch-page.js +7 -18
  12. package/dist/fetch-page.js.map +1 -1
  13. package/dist/history.d.ts +3 -3
  14. package/dist/history.js +4 -4
  15. package/dist/history.js.map +1 -1
  16. package/dist/mock.js +9 -25
  17. package/dist/mock.js.map +1 -1
  18. package/dist/prompts.d.ts +4 -0
  19. package/dist/prompts.js +57 -0
  20. package/dist/prompts.js.map +1 -0
  21. package/dist/protocol.d.ts +2 -4
  22. package/dist/protocol.js +1 -17
  23. package/dist/protocol.js.map +1 -1
  24. package/dist/provider.d.ts +0 -4
  25. package/dist/provider.js +11 -169
  26. package/dist/provider.js.map +1 -1
  27. package/dist/repo.d.ts +4 -0
  28. package/dist/repo.js +84 -0
  29. package/dist/repo.js.map +1 -0
  30. package/dist/server.js +184 -26
  31. package/dist/server.js.map +1 -1
  32. package/dist/spec.d.ts +11 -6
  33. package/dist/spec.js +74 -123
  34. package/dist/spec.js.map +1 -1
  35. package/dist/tools.d.ts +2 -5
  36. package/dist/tools.js +237 -134
  37. package/dist/tools.js.map +1 -1
  38. package/dist/tui.js +15 -40
  39. package/dist/tui.js.map +1 -1
  40. package/dist/types.d.ts +24 -25
  41. package/dist/web/app.js +3 -2
  42. package/dist/web/app.js.map +1 -1
  43. package/docs/SDK.md +521 -0
  44. package/package.json +5 -4
  45. package/spec/tools.json +418 -0
  46. package/dist/anthropic.d.ts +0 -16
  47. package/dist/anthropic.js +0 -391
  48. package/dist/anthropic.js.map +0 -1
  49. package/dist/attachments.d.ts +0 -29
  50. package/dist/attachments.js +0 -222
  51. package/dist/attachments.js.map +0 -1
  52. package/dist/canonical-data.d.ts +0 -2
  53. package/dist/canonical-data.js +0 -4
  54. package/dist/canonical-data.js.map +0 -1
  55. package/dist/compaction.d.ts +0 -16
  56. package/dist/compaction.js +0 -182
  57. package/dist/compaction.js.map +0 -1
package/dist/spec.js CHANGED
@@ -1,12 +1,14 @@
1
+ import { readFileSync } from "node:fs";
1
2
  import { fileURLToPath } from "node:url";
2
3
  import path from "node:path";
3
- import { messageFixtureJson, modelSpecJson, } from "./canonical-data.js";
4
+ import { agentSystemPromptTemplate, repoAgentSystemPromptTemplate, } from "./prompts.js";
4
5
  const packageRoot = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "..");
5
- let cachedMessageFixture;
6
+ function readJson(relativePath) {
7
+ return JSON.parse(readFileSync(path.join(packageRoot, relativePath), "utf8"));
8
+ }
6
9
  let cachedModelSpec;
10
+ const locationAbsentLine = "The user's approximate location was not provided by the client.";
7
11
  const clientContextPattern = /Today's date is [^\n]*\nThe user's approximate location (?:is:[^\n]*|was not provided by the client\.)/;
8
- 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/;
9
- const viewerGuidancePattern = /Note, when user views a workspace file[\s\S]*?tell them it will download rather than preview\.\n\n/;
10
12
  export const userInterruptionNotice = "<arena-system-message>\n" +
11
13
  "The previous assistant response was stopped by the user before it completed. " +
12
14
  "Treat that response as partial and do not assume any unfinished text or tool calls completed.\n" +
@@ -14,14 +16,20 @@ export const userInterruptionNotice = "<arena-system-message>\n" +
14
16
  export function projectRoot() {
15
17
  return packageRoot;
16
18
  }
17
- export function messageFixture() {
18
- cachedMessageFixture ??= JSON.parse(messageFixtureJson);
19
- return cachedMessageFixture;
20
- }
21
19
  export function modelSpec() {
22
- cachedModelSpec ??= JSON.parse(modelSpecJson);
20
+ cachedModelSpec ??= readJson("spec/tools.json");
23
21
  return cachedModelSpec;
24
22
  }
23
+ // Single pass so substituted values are never rescanned.
24
+ function renderTemplate(template, values) {
25
+ return template.replace(/\{\{(\w+)\}\}/g, (_, key) => {
26
+ const value = values[key];
27
+ if (value === undefined) {
28
+ throw new Error(`missing system prompt template value: ${key}`);
29
+ }
30
+ return value;
31
+ });
32
+ }
25
33
  function cleanContextValue(value) {
26
34
  return (value || "")
27
35
  .replace(/[\u0000-\u001f\u007f]+/g, " ")
@@ -34,7 +42,7 @@ function locationLine(location) {
34
42
  const region = cleanContextValue(location?.region);
35
43
  const country = cleanContextValue(location?.country);
36
44
  if (!city && !region && !country) {
37
- return "The user's approximate location was not provided by the client.";
45
+ return locationAbsentLine;
38
46
  }
39
47
  return ("The user's approximate location is: " +
40
48
  `city ${city || "unknown"}, ` +
@@ -55,141 +63,84 @@ export function defaultClientContext() {
55
63
  timezone,
56
64
  };
57
65
  }
58
- function applyWorkspaceContext(message, workspaceContext) {
59
- if (!workspaceContext)
60
- return message;
61
- const root = path.resolve(workspaceContext.root);
62
- const cwd = path.resolve(workspaceContext.cwd);
63
- const displayedRoot = JSON.stringify(root);
64
- const displayedCwd = JSON.stringify(cwd);
65
- const workspaceGuidance = "Many of the tools operate on a shared workspace. The workspace root is " +
66
- `${displayedRoot}, and the default working directory is ${displayedCwd}. ` +
67
- "Bash commands run with the permissions provided by the current runtime environment. " +
68
- "Files written to the workspace persist across messages in this conversation.\n\n" +
69
- "Tool path arguments resolve relative to the default working directory unless " +
70
- `an absolute path inside ${displayedRoot} is provided. Prefer relative paths, ` +
71
- "and report these actual runtime paths rather than translating them to a fixed virtual path.\n\n";
72
- const viewerGuidance = "The current client does not provide an in-app file viewer. When you create a " +
73
- "deliverable, tell the user its workspace-relative path and, when useful, " +
74
- "its resolved runtime path. Do not claim that the client opened the file, Finder, " +
75
- "or another host application.\n\n";
76
- if (!workspaceGuidancePattern.test(message.content)) {
77
- throw new Error("canonical system prompt workspace guidance was not found");
78
- }
79
- message.content = message.content.replace(workspaceGuidancePattern, workspaceGuidance);
80
- if (!workspaceContext.presentFile) {
81
- if (!viewerGuidancePattern.test(message.content)) {
82
- throw new Error("canonical system prompt viewer guidance was not found");
83
- }
84
- message.content = message.content.replace(viewerGuidancePattern, viewerGuidance);
85
- }
86
- return message;
66
+ function clientContextValues(context) {
67
+ return {
68
+ currentDate: cleanContextValue(context.currentDate),
69
+ timezone: cleanContextValue(context.timezone),
70
+ locationLine: locationLine(context.location),
71
+ };
87
72
  }
88
- export function systemMessage(context, workspaceContext) {
89
- const fixture = messageFixture().messages;
90
- const canonical = structuredClone(fixture[0]);
91
- const currentDate = cleanContextValue(context.currentDate);
92
- const timezone = cleanContextValue(context.timezone);
93
- const dynamicContext = `Today's date is ${currentDate} in the user's local timezone (${timezone}). ` +
94
- "Trust this date over any assumptions you may have from your training data; " +
95
- 'if a user\'s question references a year or relative time ("this year", ' +
96
- '"today", "the most recent X"), interpret it against today\'s date in the ' +
97
- "user's local timezone.\n" +
98
- locationLine(context.location);
99
- canonical.content = canonical.content.replace(clientContextPattern, dynamicContext);
100
- return applyWorkspaceContext(canonical, workspaceContext);
73
+ export function systemMessage(context) {
74
+ return {
75
+ role: "system",
76
+ content: renderTemplate(agentSystemPromptTemplate, clientContextValues(context)),
77
+ };
101
78
  }
102
- export function isCanonicalSystemMessage(message, workspaceContext) {
79
+ export function repoSystemMessage(context, repo) {
80
+ return {
81
+ role: "system",
82
+ content: renderTemplate(repoAgentSystemPromptTemplate, {
83
+ ...clientContextValues(context),
84
+ slug: repo.slug,
85
+ checkoutPath: repo.checkoutPath,
86
+ branch: repo.branch,
87
+ baseBranch: repo.baseBranch,
88
+ baseCommit: repo.baseCommit,
89
+ }),
90
+ };
91
+ }
92
+ /**
93
+ * Inverse of `repoSystemMessage()`. Extracts without validating; callers feed
94
+ * the result back through `repoSystemMessage()` + `isCanonicalSystemMessage()`.
95
+ */
96
+ export function repoContextFromSystemMessage(message) {
97
+ if (message?.role !== "system" || typeof message.content !== "string") {
98
+ return undefined;
99
+ }
100
+ const checkout = message.content.match(/You are working in a checkout of `([^`]+)` at `([^`]+)`/);
101
+ const branch = message.content.match(/You are on a working branch `([^`]+)`, branched from commit `([^`]+)` of `([^`]+)`\./);
102
+ if (!checkout || !branch)
103
+ return undefined;
104
+ return {
105
+ slug: checkout[1],
106
+ checkoutPath: checkout[2],
107
+ branch: branch[1],
108
+ baseCommit: branch[2],
109
+ baseBranch: branch[3],
110
+ };
111
+ }
112
+ export function isCanonicalSystemMessage(message, expected) {
103
113
  if (message?.role !== "system" ||
104
114
  typeof message.content !== "string" ||
105
115
  !message.content) {
106
116
  return false;
107
117
  }
108
- const fixture = messageFixture().messages;
109
- const fixtureSystem = fixture[0];
110
- if (fixtureSystem?.role !== "system")
111
- return false;
112
- const canonical = applyWorkspaceContext(structuredClone(fixtureSystem), workspaceContext);
113
- return (message.content.replace(clientContextPattern, "<client-context>") ===
114
- canonical.content.replace(clientContextPattern, "<client-context>"));
118
+ const canonical = expected ?? systemMessage(defaultClientContext());
119
+ return (canonical?.role === "system" &&
120
+ message.content.replace(clientContextPattern, "<client-context>") ===
121
+ canonical.content.replace(clientContextPattern, "<client-context>"));
115
122
  }
116
- export function initialMessages(prompt, context = defaultClientContext(), workspaceContext) {
123
+ export function initialMessages(prompt, context = defaultClientContext(), repo) {
117
124
  return [
118
- systemMessage(context, workspaceContext),
125
+ repo ? repoSystemMessage(context, repo) : systemMessage(context),
119
126
  { role: "user", content: prompt },
120
127
  ];
121
128
  }
122
129
  export function interruptedUserMessage(promptOrMessage) {
123
130
  const content = typeof promptOrMessage === "string"
124
- ? [{ text: promptOrMessage }]
131
+ ? [{ type: "text", text: promptOrMessage }]
125
132
  : typeof promptOrMessage.content === "string"
126
- ? [{ text: promptOrMessage.content }]
133
+ ? [{ type: "text", text: promptOrMessage.content }]
127
134
  : structuredClone(promptOrMessage.content);
128
135
  return {
129
136
  role: "user",
130
137
  content: [
131
- { text: userInterruptionNotice },
138
+ { type: "text", text: userInterruptionNotice },
132
139
  ...content,
133
140
  ],
134
141
  };
135
142
  }
136
- function parameterProperties(definition) {
137
- return definition.function.parameters.properties;
138
- }
139
- function parameterProperty(definition, name) {
140
- const property = parameterProperties(definition)[name];
141
- if (!property) {
142
- throw new Error(`canonical tool parameter not found: ${definition.function.name}.${name}`);
143
- }
144
- return property;
145
- }
146
- export function toolDefinitions(workspaceContext) {
147
- const definitions = structuredClone(modelSpec().tools);
148
- if (!workspaceContext)
149
- return definitions;
150
- const root = path.resolve(workspaceContext.root);
151
- const cwd = path.resolve(workspaceContext.cwd);
152
- const displayedRoot = JSON.stringify(root);
153
- const displayedCwd = JSON.stringify(cwd);
154
- const absoluteExample = (relativePath) => JSON.stringify(path.join(cwd, relativePath));
155
- const find = (name) => {
156
- const definition = definitions.find((candidate) => candidate.function.name === name);
157
- if (!definition)
158
- throw new Error(`canonical tool definition not found: ${name}`);
159
- return definition;
160
- };
161
- const bash = find("bash");
162
- bash.function.description =
163
- "Run a bash command in the current runtime environment, starting in the provided cwd. " +
164
- `The workspace root is ${displayedRoot}, and cwd defaults to ${displayedCwd}. ` +
165
- "Commands run without a controlling terminal and with stdin closed. " +
166
- "Working directory changes, shell variables, aliases, functions, history, " +
167
- "exported environment changes, and background process state are not preserved across calls.";
168
- const bashCwd = parameterProperty(bash, "cwd");
169
- bashCwd.description = `Working directory for this command. Defaults to ${displayedCwd}.`;
170
- bashCwd.default = cwd;
171
- const runtimePathDescription = (relativeExample, suffix = "") => `Path inside the workspace ${displayedRoot}: either an absolute path ` +
172
- `(e.g. ${absoluteExample(relativeExample)}) or a path relative to the ` +
173
- `default working directory ${displayedCwd} ` +
174
- `(e.g. ${JSON.stringify(relativeExample)}).${suffix}`;
175
- parameterProperty(find("edit_file"), "path").description =
176
- runtimePathDescription("notes.txt");
177
- parameterProperty(find("read_file"), "path").description =
178
- runtimePathDescription("images/dog.jpg");
179
- parameterProperty(find("write_file"), "path").description =
180
- runtimePathDescription("src/app.js", " Parent directories are created as needed.");
181
- const generateImage = find("generate_image");
182
- parameterProperty(generateImage, "file_path").description =
183
- runtimePathDescription("images/hero.jpg", " Parent directories are created as needed. Must end in .jpg, .jpeg, or .png.");
184
- parameterProperty(generateImage, "images").description =
185
- `Optional paths to existing images inside the workspace ${displayedRoot}, ` +
186
- `given as absolute paths or paths relative to ${displayedCwd}. ` +
187
- "Omit for text-to-image generation.";
188
- parameterProperty(find("generate_speech"), "file_path").description =
189
- runtimePathDescription("audio/narration.mp3", " Parent directories are created as needed. Must end in a supported audio " +
190
- "extension (.mp3, .wav, .ogg, .opus, .flac, .aac, .m4a, .aiff).");
191
- return workspaceContext.presentFile
192
- ? definitions
193
- : definitions.filter((definition) => definition.function.name !== "present_file");
143
+ export function toolDefinitions() {
144
+ return structuredClone(modelSpec().tools);
194
145
  }
195
146
  //# sourceMappingURL=spec.js.map
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,9 +1,8 @@
1
1
  import type { ArenaConfig } from "./config.js";
2
- import type { AskUserHandler, MultimodalUserMessage, ToolCall, ToolDefinition, ToolMessage, WorkspaceContext } from "./types.js";
2
+ import type { AskUserHandler, MultimodalUserMessage, ToolCall, ToolMessage } from "./types.js";
3
3
  interface ToolExecutorOptions {
4
4
  askUserHandler?: AskUserHandler;
5
5
  signal?: AbortSignal;
6
- workspaceContext?: WorkspaceContext;
7
6
  }
8
7
  export declare class ToolExecutor {
9
8
  private readonly config;
@@ -13,17 +12,15 @@ export declare class ToolExecutor {
13
12
  private readonly pendingVisualContent;
14
13
  private readonly askUserHandler?;
15
14
  private readonly signal?;
16
- private readonly workspaceContext?;
17
15
  private readonly pageReader;
18
16
  private readonly ajv;
19
- readonly askUserEnabled: boolean;
20
17
  constructor(config: ArenaConfig, options?: ToolExecutorOptions);
21
- availableTools(): ToolDefinition[];
22
18
  execute(call: ToolCall): Promise<ToolMessage>;
23
19
  takeVisualMessage(toolCallIds: string[]): MultimodalUserMessage | undefined;
24
20
  private dispatch;
25
21
  private confinedPath;
26
22
  private relativePath;
23
+ private virtualizeBashOutput;
27
24
  private bash;
28
25
  private askUser;
29
26
  private editFile;