@qwen-code/arena-agent 0.0.10-dev.8-test.0 → 0.0.10-test.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.
- package/.env.example +61 -10
- package/CHANGELOG.md +148 -17
- package/README.md +309 -46
- package/dist/agent.d.ts +20 -6
- package/dist/agent.js +353 -72
- package/dist/agent.js.map +1 -1
- package/dist/anthropic.d.ts +1 -1
- package/dist/anthropic.js +46 -57
- package/dist/anthropic.js.map +1 -1
- package/dist/arena-history.d.ts +12 -0
- package/dist/arena-history.js +119 -0
- package/dist/arena-history.js.map +1 -0
- package/dist/ask-user.js +44 -2
- package/dist/ask-user.js.map +1 -1
- package/dist/attachment-limits.d.ts +4 -0
- package/dist/attachment-limits.js +10 -0
- package/dist/attachment-limits.js.map +1 -0
- package/dist/attachments.d.ts +4 -2
- package/dist/attachments.js +9 -11
- package/dist/attachments.js.map +1 -1
- package/dist/brave-search.js +11 -7
- package/dist/brave-search.js.map +1 -1
- package/dist/canonical-data.d.ts +9 -0
- package/dist/canonical-data.js +12 -3
- package/dist/canonical-data.js.map +1 -1
- package/dist/cli.js +140 -40
- package/dist/cli.js.map +1 -1
- package/dist/code-tool-schema.d.ts +3 -0
- package/dist/code-tool-schema.js +92 -0
- package/dist/code-tool-schema.js.map +1 -0
- package/dist/code-tools.d.ts +2 -1
- package/dist/code-tools.js +103 -31
- package/dist/code-tools.js.map +1 -1
- package/dist/compaction-threshold.d.ts +3 -0
- package/dist/compaction-threshold.js +6 -0
- package/dist/compaction-threshold.js.map +1 -0
- package/dist/compaction.d.ts +24 -7
- package/dist/compaction.js +242 -66
- package/dist/compaction.js.map +1 -1
- package/dist/config.d.ts +17 -0
- package/dist/config.js +30 -5
- package/dist/config.js.map +1 -1
- package/dist/connector-errors.d.ts +16 -0
- package/dist/connector-errors.js +69 -0
- package/dist/connector-errors.js.map +1 -0
- package/dist/connector-files.d.ts +31 -0
- package/dist/connector-files.js +249 -0
- package/dist/connector-files.js.map +1 -0
- package/dist/connector-input.d.ts +10 -0
- package/dist/connector-input.js +79 -0
- package/dist/connector-input.js.map +1 -0
- package/dist/connector-mcp.d.ts +60 -0
- package/dist/connector-mcp.js +474 -0
- package/dist/connector-mcp.js.map +1 -0
- package/dist/connectors.d.ts +13 -0
- package/dist/connectors.js +69 -0
- package/dist/connectors.js.map +1 -0
- package/dist/fetch-page.js +2 -2
- package/dist/fetch-page.js.map +1 -1
- package/dist/history.d.ts +16 -5
- package/dist/history.js +73 -14
- package/dist/history.js.map +1 -1
- package/dist/image-choice.d.ts +23 -0
- package/dist/image-choice.js +190 -0
- package/dist/image-choice.js.map +1 -0
- package/dist/image-input-fallback.js +5 -0
- package/dist/image-input-fallback.js.map +1 -1
- package/dist/image-model.d.ts +6 -0
- package/dist/image-model.js +32 -0
- package/dist/image-model.js.map +1 -0
- package/dist/midturn-checkpoint-hook.d.ts +14 -1
- package/dist/midturn-checkpoint-hook.js.map +1 -1
- package/dist/mode.js +1 -1
- package/dist/mode.js.map +1 -1
- package/dist/model-capabilities.js +18 -8
- package/dist/model-capabilities.js.map +1 -1
- package/dist/model-router-media.js +55 -3
- package/dist/model-router-media.js.map +1 -1
- package/dist/model-stream.d.ts +16 -0
- package/dist/model-stream.js +129 -0
- package/dist/model-stream.js.map +1 -0
- package/dist/openai-responses.d.ts +2 -1
- package/dist/openai-responses.js +85 -88
- package/dist/openai-responses.js.map +1 -1
- package/dist/process-manager.js +9 -9
- package/dist/process-manager.js.map +1 -1
- package/dist/prompts.d.ts +0 -2
- package/dist/prompts.js +10 -60
- package/dist/prompts.js.map +1 -1
- package/dist/protocol.d.ts +5 -1
- package/dist/protocol.js +23 -2
- package/dist/protocol.js.map +1 -1
- package/dist/provider.d.ts +18 -0
- package/dist/provider.js +120 -51
- package/dist/provider.js.map +1 -1
- package/dist/repo.d.ts +1 -1
- package/dist/repo.js +26 -4
- package/dist/repo.js.map +1 -1
- package/dist/routify-web-fetch.js +2 -2
- package/dist/routify-web-fetch.js.map +1 -1
- package/dist/server.js +55 -27
- package/dist/server.js.map +1 -1
- package/dist/session-memory-prompts.d.ts +3 -1
- package/dist/session-memory-prompts.js +4 -2
- package/dist/session-memory-prompts.js.map +1 -1
- package/dist/side-query.js +5 -0
- package/dist/side-query.js.map +1 -1
- package/dist/spec.d.ts +5 -4
- package/dist/spec.js +31 -23
- package/dist/spec.js.map +1 -1
- package/dist/startup-config.d.ts +39 -0
- package/dist/startup-config.js +347 -0
- package/dist/startup-config.js.map +1 -0
- package/dist/startup-main-config.d.ts +63 -0
- package/dist/startup-main-config.js +94 -0
- package/dist/startup-main-config.js.map +1 -0
- package/dist/startup-tool-config.d.ts +8 -0
- package/dist/startup-tool-config.js +116 -0
- package/dist/startup-tool-config.js.map +1 -0
- package/dist/summary-compaction.d.ts +29 -0
- package/dist/{legacy-compaction.js → summary-compaction.js} +79 -14
- package/dist/summary-compaction.js.map +1 -0
- package/dist/tools.d.ts +5 -1
- package/dist/tools.js +195 -68
- package/dist/tools.js.map +1 -1
- package/dist/tui.js +26 -6
- package/dist/tui.js.map +1 -1
- package/dist/types.d.ts +21 -1
- package/dist/web/app.js +30 -5
- package/dist/web/app.js.map +1 -1
- package/dist/workspace.js +61 -13
- package/dist/workspace.js.map +1 -1
- package/docs/BINARY_DISTRIBUTION.md +44 -8
- package/docs/MODES_AND_RELEASES.md +79 -6
- package/docs/SDK.md +1 -0
- package/modes/code-arena/capture-provenance.json +57 -0
- package/modes/code-arena/full-stack/dependencies.lock.json +8670 -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/dependencies.lock.json +2707 -0
- package/modes/code-arena/react/system-prompt.txt +4 -3
- package/modes/code-arena/react/tools.json +178 -184
- package/package.json +7 -2
- package/scripts/README.md +23 -4
- package/web/styles.css +22 -0
- package/dist/legacy-compaction.d.ts +0 -16
- package/dist/legacy-compaction.js.map +0 -1
|
@@ -0,0 +1,347 @@
|
|
|
1
|
+
import crypto from "node:crypto";
|
|
2
|
+
import { existsSync, realpathSync } from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { agentArenaCompactionThreshold } from "./compaction-threshold.js";
|
|
5
|
+
import { modelInputCapabilities, supportsModelInput } from "./config.js";
|
|
6
|
+
import { modelCallLogPath } from "./history.js";
|
|
7
|
+
import { isCodeArenaMode } from "./mode.js";
|
|
8
|
+
import { JsonlModelCallDiagnostics, redactSensitiveText, safeEndpoint } from "./model-diagnostics.js";
|
|
9
|
+
import { modelTransport, resolveApiConnectionDetails } from "./provider.js";
|
|
10
|
+
import { privilegedFileCreationEnabled } from "./sandbox-file-write.js";
|
|
11
|
+
import { startupMainConfig, startupMainEnvironmentNames } from "./startup-main-config.js";
|
|
12
|
+
import { startupToolConfig } from "./startup-tool-config.js";
|
|
13
|
+
const sensitiveKey = /(?:api.?key|access.?key|authorization|bearer|credential|password|passwd|secret|cookie|token)(?:$|[_-])/i;
|
|
14
|
+
const contentKey = /^(?:systemPrompt|appendSystemPrompt|prompt|messages|input|instructions|tools|content|--prompt|--system-prompt|--append-system-prompt)$/i;
|
|
15
|
+
const environmentContentKey = /_(?:PROMPT|MESSAGES|INPUT|INSTRUCTIONS|CONTENT)$/i;
|
|
16
|
+
const contentNamedBoolean = /^(?:ARENA_EXCLUDE_QWEN_FROM_SYSTEM_PROMPT|ARENA_MODEL_SUPPORTS_(?:IMAGE|VIDEO|AUDIO)_INPUT)$/;
|
|
17
|
+
const relatedEnvironment = /^(?:ARENA_|CODE_HARNESS_|OPENAI_|ANTHROPIC_|GEMINI_|GOOGLE_API_KEY$|ROUTIFY_|PEXELS_|HARBOR_REMOTE_COMMAND_|https?_proxy$|no_proxy$|E2B_SANDBOX_ID$|NO_COLOR$|FORCE_COLOR$|CLICOLOR_FORCE$)/i;
|
|
18
|
+
// Aliases remain visible in inputs; config uses the primary setting name.
|
|
19
|
+
export const startupEnvironmentAliases = [
|
|
20
|
+
"ARENA_MODEL", "ARENA_API_BASE", "ARENA_API_KEY", "ARENA_MODE", "CODE_HARNESS_MODE",
|
|
21
|
+
"CODE_HARNESS_MAX_STEPS", "ARENA_MAX_AGENT_STEPS", "ARENA_CODE_STREAM_HISTORY",
|
|
22
|
+
"CODE_HARNESS_TOOL_MAX_RETRIES", "ANTHROPIC_BASE_URL", "ANTHROPIC_API_KEY",
|
|
23
|
+
"GEMINI_API_KEY", "GOOGLE_API_KEY", "http_proxy", "https_proxy", "no_proxy",
|
|
24
|
+
"FORCE_COLOR", "CLICOLOR_FORCE",
|
|
25
|
+
];
|
|
26
|
+
// Arbitrary extra-body strings may contain user content or credentials under
|
|
27
|
+
// nonstandard keys. Only ordinary generation controls are printed verbatim.
|
|
28
|
+
const extraBodyTextKey = /^(?:model|reasoning_effort|effort|type|tool_choice|result_format|verbosity|summary|service_tier)$/;
|
|
29
|
+
function contentSummary(value) {
|
|
30
|
+
const text = typeof value === "string" ? value : JSON.stringify(value);
|
|
31
|
+
return {
|
|
32
|
+
chars: text.length,
|
|
33
|
+
sha256: crypto.createHash("sha256").update(text).digest("hex"),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
function credentialState(value) {
|
|
37
|
+
return value ? "[set]" : "[unset]";
|
|
38
|
+
}
|
|
39
|
+
function safeUrl(value) {
|
|
40
|
+
try {
|
|
41
|
+
const url = new URL(value);
|
|
42
|
+
if (url.protocol !== "http:" && url.protocol !== "https:")
|
|
43
|
+
return "[invalid URL]";
|
|
44
|
+
return safeEndpoint(value);
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
// Invalid URLs can still contain credentials; never echo them verbatim.
|
|
48
|
+
return "[invalid URL]";
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
function safeConfigValue(value, key = "", extraBody = false, depth = 0) {
|
|
52
|
+
if (sensitiveKey.test(key))
|
|
53
|
+
return credentialState(value);
|
|
54
|
+
if (value === undefined)
|
|
55
|
+
return null;
|
|
56
|
+
if (key === "ARENA_EXTRA_BODY" && typeof value === "string") {
|
|
57
|
+
try {
|
|
58
|
+
return safeConfigValue(JSON.parse(value), key, true, depth);
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
return { invalidJson: true, ...contentSummary(value) };
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
if ((contentKey.test(key) || (environmentContentKey.test(key) && !contentNamedBoolean.test(key)))
|
|
65
|
+
&& value !== null)
|
|
66
|
+
return contentSummary(value);
|
|
67
|
+
if (depth >= 8)
|
|
68
|
+
return "[omitted: nested value]";
|
|
69
|
+
if (typeof value === "string") {
|
|
70
|
+
if ((extraBody && !extraBodyTextKey.test(key)) || value.length > 1024)
|
|
71
|
+
return contentSummary(value);
|
|
72
|
+
if (/(?:url|apiBase|_API_BASE|^https?_proxy)$/i.test(key) || /^https?:\/\//i.test(value))
|
|
73
|
+
return value ? safeUrl(value) : value;
|
|
74
|
+
return redactSensitiveText(value);
|
|
75
|
+
}
|
|
76
|
+
if (Array.isArray(value)) {
|
|
77
|
+
return value.length > 64 ? contentSummary(value)
|
|
78
|
+
: value.map(item => safeConfigValue(item, key, extraBody, depth + 1));
|
|
79
|
+
}
|
|
80
|
+
if (value && typeof value === "object") {
|
|
81
|
+
return Object.fromEntries(Object.entries(value).map(([name, item]) => [
|
|
82
|
+
name, safeConfigValue(item, name, extraBody || name === "extraBody" || name === "ARENA_EXTRA_BODY", depth + 1),
|
|
83
|
+
]));
|
|
84
|
+
}
|
|
85
|
+
if (typeof value === "number" && !Number.isFinite(value))
|
|
86
|
+
return `[invalid number: ${value}]`;
|
|
87
|
+
return value;
|
|
88
|
+
}
|
|
89
|
+
function connectionSummary(config, requestedModel = config.model, options) {
|
|
90
|
+
if (!options && requestedModel === config.model && requestedModel.startsWith("mock/"))
|
|
91
|
+
return { protocol: "mock" };
|
|
92
|
+
const protocol = modelTransport(config, requestedModel, options);
|
|
93
|
+
try {
|
|
94
|
+
const { connection, sources } = resolveApiConnectionDetails(config, requestedModel, options);
|
|
95
|
+
// The resolver identifies the selected slot. Map config slots back to an
|
|
96
|
+
// environment input only when it actually supplied that value.
|
|
97
|
+
const inputSource = (value, names, fallback) => {
|
|
98
|
+
const selected = names.find(name => process.env[name]);
|
|
99
|
+
return selected && process.env[selected] === value ? selected : fallback;
|
|
100
|
+
};
|
|
101
|
+
return {
|
|
102
|
+
protocol,
|
|
103
|
+
provider: connection.provider,
|
|
104
|
+
model: connection.model,
|
|
105
|
+
baseUrl: connection.baseUrl,
|
|
106
|
+
apiKey: connection.apiKey,
|
|
107
|
+
sources: {
|
|
108
|
+
baseUrl: sources.baseUrl === "config.apiBase"
|
|
109
|
+
? inputSource(config.apiBase, ["OPENAI_BASE_URL", "ARENA_API_BASE"], sources.baseUrl)
|
|
110
|
+
: sources.baseUrl === "connection.baseUrl"
|
|
111
|
+
? inputSource(options?.baseUrl, ["ARENA_IMAGE_INPUT_FALLBACK_BASE_URL"], sources.baseUrl)
|
|
112
|
+
: sources.baseUrl,
|
|
113
|
+
credential: sources.credential === "config.apiKey"
|
|
114
|
+
? inputSource(config.apiKey, ["OPENAI_API_KEY", "ARENA_API_KEY"], sources.credential)
|
|
115
|
+
: sources.credential === "connection.apiKey"
|
|
116
|
+
? inputSource(options?.apiKey, ["ARENA_IMAGE_INPUT_FALLBACK_API_KEY"], sources.credential)
|
|
117
|
+
: sources.credential,
|
|
118
|
+
},
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
// Logging must not move a missing-key failure out of the agent's normal
|
|
123
|
+
// result/error path (or require credentials for a mock run).
|
|
124
|
+
return { protocol, apiKey: null, status: "missing_api_key" };
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
function safeConnectionSummary(connection) {
|
|
128
|
+
const { sources, ...values } = connection;
|
|
129
|
+
// Sources are names produced above, never credentials or endpoint values.
|
|
130
|
+
// Keep them outside value sanitization so "credential" and "baseUrl" do
|
|
131
|
+
// not get mistaken for the corresponding sensitive values.
|
|
132
|
+
return {
|
|
133
|
+
...safeConfigValue(values),
|
|
134
|
+
...(sources ? { sources } : {}),
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
function modelInputSummary(config) {
|
|
138
|
+
const detected = modelInputCapabilities(config.model);
|
|
139
|
+
const protocol = config.model.startsWith("mock/") ? "mock" : modelTransport(config);
|
|
140
|
+
const source = (override, variable) => override !== undefined ? variable
|
|
141
|
+
: detected.known ? "model_registry" : "unknown_model_default";
|
|
142
|
+
return {
|
|
143
|
+
model: config.model,
|
|
144
|
+
normalizedModel: detected.normalizedModel,
|
|
145
|
+
registryKnown: detected.known,
|
|
146
|
+
registryRule: detected.rule ?? null,
|
|
147
|
+
transport: {
|
|
148
|
+
protocol,
|
|
149
|
+
// Model permission and wire encoding are separate: the native encoders
|
|
150
|
+
// currently convert user content to text and image blocks only.
|
|
151
|
+
userContent: protocol === "mock" ? "mock"
|
|
152
|
+
: protocol === "openai-chat-completions" ? "passthrough" : "text_and_images_only",
|
|
153
|
+
},
|
|
154
|
+
...(config.extraBody && Object.hasOwn(config.extraBody, "model")
|
|
155
|
+
? { requestModelOverride: config.extraBody.model } : {}),
|
|
156
|
+
inputAllowed: {
|
|
157
|
+
text: true,
|
|
158
|
+
image: supportsModelInput(config, "image"),
|
|
159
|
+
video: supportsModelInput(config, "video"),
|
|
160
|
+
audio: supportsModelInput(config, "audio"),
|
|
161
|
+
},
|
|
162
|
+
sources: {
|
|
163
|
+
text: "text_chat",
|
|
164
|
+
image: source(config.modelSupportsImageInput, "ARENA_MODEL_SUPPORTS_IMAGE_INPUT"),
|
|
165
|
+
video: source(config.modelSupportsVideoInput, "ARENA_MODEL_SUPPORTS_VIDEO_INPUT"),
|
|
166
|
+
audio: source(config.modelSupportsAudioInput, "ARENA_MODEL_SUPPORTS_AUDIO_INPUT"),
|
|
167
|
+
},
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
function imageFallbackSummary(config) {
|
|
171
|
+
const model = config.imageInputFallbackModel?.trim() || null;
|
|
172
|
+
const reason = isCodeArenaMode(config.mode) ? "not_used_in_code_arena"
|
|
173
|
+
: supportsModelInput(config, "image") ? "main_model_allows_images"
|
|
174
|
+
: !model ? "not_configured" : "main_model_disallows_images";
|
|
175
|
+
const enabled = reason === "main_model_disallows_images";
|
|
176
|
+
// Match the independent-client selection in Agent/ToolExecutor. A partial
|
|
177
|
+
// independent connection does not inherit the main endpoint or credential.
|
|
178
|
+
const independent = Boolean(config.imageInputFallbackBaseUrl
|
|
179
|
+
|| config.imageInputFallbackApiKey || config.imageInputFallbackProtocol);
|
|
180
|
+
const connection = !enabled ? null
|
|
181
|
+
: !independent && config.model.startsWith("mock/") ? { protocol: "mock" }
|
|
182
|
+
: connectionSummary(config, model, independent ? {
|
|
183
|
+
baseUrl: config.imageInputFallbackBaseUrl,
|
|
184
|
+
apiKey: config.imageInputFallbackApiKey,
|
|
185
|
+
protocol: config.imageInputFallbackProtocol,
|
|
186
|
+
} : undefined);
|
|
187
|
+
return {
|
|
188
|
+
model: safeConfigValue(model, "model"),
|
|
189
|
+
enabled,
|
|
190
|
+
reason,
|
|
191
|
+
scope: "read_file_images",
|
|
192
|
+
connectionMode: enabled ? independent ? "independent" : "shared_main_client" : null,
|
|
193
|
+
connection: connection ? safeConnectionSummary(connection) : null,
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
function environmentInputs(env) {
|
|
197
|
+
return Object.fromEntries(Object.entries(env)
|
|
198
|
+
.filter(([name, value]) => value !== undefined && relatedEnvironment.test(name))
|
|
199
|
+
.sort(([left], [right]) => left.localeCompare(right))
|
|
200
|
+
.map(([name, value]) => [name, safeConfigValue(value, name)]));
|
|
201
|
+
}
|
|
202
|
+
/** Static inventory used by the coverage check for environment consumers. */
|
|
203
|
+
export function startupEnvironmentNames() {
|
|
204
|
+
return new Set([
|
|
205
|
+
...startupMainEnvironmentNames,
|
|
206
|
+
...Object.keys(startupToolConfig("arena", {}, {})),
|
|
207
|
+
...startupEnvironmentAliases,
|
|
208
|
+
"ARENA_STREAM_HISTORY", "ARENA_CONFIG_LOGGING",
|
|
209
|
+
]);
|
|
210
|
+
}
|
|
211
|
+
export function startupConfigSnapshot(config, context) {
|
|
212
|
+
const modelLogFile = modelCallLogPath(config.stateRoot, config.tenantId, context.sessionId);
|
|
213
|
+
const codeArena = isCodeArenaMode(config.mode);
|
|
214
|
+
const usesHttpClient = !config.model.startsWith("mock/") || Boolean(config.imageInputFallbackModel && (config.imageInputFallbackBaseUrl
|
|
215
|
+
|| config.imageInputFallbackApiKey || config.imageInputFallbackProtocol));
|
|
216
|
+
const connection = connectionSummary(config);
|
|
217
|
+
const restoreSessionMemory = !codeArena && config.compactionMode !== "summary"
|
|
218
|
+
&& (context.restoreSessionMemory ?? config.restoreSessionMemory ?? true);
|
|
219
|
+
const compactionThresholdTokens = codeArena
|
|
220
|
+
? config.contextWindow * config.contextCompactionRatio
|
|
221
|
+
: agentArenaCompactionThreshold(config.contextWindow, config.contextCompactionRatio, config.compactionThresholdTokens);
|
|
222
|
+
let workspaceReal = config.workspace;
|
|
223
|
+
try {
|
|
224
|
+
workspaceReal = realpathSync(config.workspace);
|
|
225
|
+
}
|
|
226
|
+
catch { /* Agent validates the workspace. */ }
|
|
227
|
+
const effectiveConfig = {
|
|
228
|
+
...startupMainConfig(config),
|
|
229
|
+
...startupToolConfig(config.mode, process.env, context.hostEnvironment),
|
|
230
|
+
...(connection.protocol === "mock" ? {} : {
|
|
231
|
+
OPENAI_BASE_URL: connection.baseUrl ?? config.apiBase,
|
|
232
|
+
OPENAI_API_KEY: connection.apiKey ?? config.apiKey,
|
|
233
|
+
}),
|
|
234
|
+
ARENA_STREAM_HISTORY: context.streamHistory ?? null,
|
|
235
|
+
ARENA_RESTORE_SESSION_MEMORY: restoreSessionMemory,
|
|
236
|
+
ARENA_MODEL_SUPPORTS_IMAGE_INPUT: supportsModelInput(config, "image"),
|
|
237
|
+
ARENA_MODEL_SUPPORTS_VIDEO_INPUT: supportsModelInput(config, "video"),
|
|
238
|
+
ARENA_MODEL_SUPPORTS_AUDIO_INPUT: supportsModelInput(config, "audio"),
|
|
239
|
+
compactionThresholdTokens,
|
|
240
|
+
privilegedFileCreationEnabled: !codeArena && privilegedFileCreationEnabled({
|
|
241
|
+
platform: process.platform, workspace: workspaceReal, docker: existsSync("/.dockerenv"),
|
|
242
|
+
flag: process.env.ARENA_SANDBOX_PRIVILEGED_FILE_CREATION, uid: process.getuid?.(),
|
|
243
|
+
}),
|
|
244
|
+
...(config.mergeConnectors ? {
|
|
245
|
+
ARENA_MERGE_API_BASE: config.mergeConnectors.apiBase || "https://ah-api.merge.dev",
|
|
246
|
+
ARENA_CONNECTOR_TIMEOUT_MS: config.mergeConnectors.timeoutMs ?? 60_000,
|
|
247
|
+
} : {}),
|
|
248
|
+
};
|
|
249
|
+
return {
|
|
250
|
+
event: "startup_config",
|
|
251
|
+
version: context.version,
|
|
252
|
+
timestamp: new Date().toISOString(),
|
|
253
|
+
// These are resolved harness settings. Providers map them to their wire
|
|
254
|
+
// format and apply extraBody; this is deliberately not a request-body log.
|
|
255
|
+
config: {
|
|
256
|
+
...safeConfigValue(effectiveConfig),
|
|
257
|
+
systemPrompt: config.systemPrompt === undefined ? "default" : contentSummary(config.systemPrompt),
|
|
258
|
+
appendSystemPrompt: config.appendSystemPrompt === undefined ? null : contentSummary(config.appendSystemPrompt),
|
|
259
|
+
},
|
|
260
|
+
connection: safeConnectionSummary(connection),
|
|
261
|
+
modelInput: safeConfigValue(modelInputSummary(config)),
|
|
262
|
+
imageFallback: imageFallbackSummary(config),
|
|
263
|
+
run: {
|
|
264
|
+
sessionId: context.sessionId,
|
|
265
|
+
cwd: context.cwd ?? config.workspace,
|
|
266
|
+
output: context.output,
|
|
267
|
+
streamHistory: context.streamHistory ?? null,
|
|
268
|
+
continueFromHistory: context.continueFromHistory,
|
|
269
|
+
singleStep: context.singleStep,
|
|
270
|
+
restoreSessionMemory,
|
|
271
|
+
compactionThresholdTokens,
|
|
272
|
+
inputAllowed: {
|
|
273
|
+
image: supportsModelInput(config, "image"),
|
|
274
|
+
video: supportsModelInput(config, "video"),
|
|
275
|
+
audio: supportsModelInput(config, "audio"),
|
|
276
|
+
},
|
|
277
|
+
historyFile: context.historyFile,
|
|
278
|
+
...(context.history ? { history: context.history } : {}),
|
|
279
|
+
configLogFile: path.join(path.dirname(modelLogFile), "startup-config.jsonl"),
|
|
280
|
+
modelCallLogFile: config.modelCallLogging === false || !usesHttpClient
|
|
281
|
+
? null : modelLogFile,
|
|
282
|
+
checkpointHook: context.checkpointHook ?? null,
|
|
283
|
+
},
|
|
284
|
+
// Preserve inputs separately, including overridden .env values and aliases.
|
|
285
|
+
// Presence here does not imply a variable is recognized or consumed.
|
|
286
|
+
inputs: {
|
|
287
|
+
environment: environmentInputs(context.hostEnvironment),
|
|
288
|
+
workspaceEnv: environmentInputs(context.workspaceEnv),
|
|
289
|
+
...(context.workspaceEnvFile ? { workspaceEnvFile: context.workspaceEnvFile } : {}),
|
|
290
|
+
arguments: safeConfigValue(context.arguments ?? {}),
|
|
291
|
+
},
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
/** Summarize the body the transport actually prepared, without copying prompts or tool schemas. */
|
|
295
|
+
export function modelRequestConfigSnapshot(observation) {
|
|
296
|
+
const { body } = observation;
|
|
297
|
+
const tools = Array.isArray(body.tools) ? body.tools : [];
|
|
298
|
+
const parameters = Object.fromEntries(Object.entries(body).filter(([name]) => !["model", "messages", "input", "tools"].includes(name)));
|
|
299
|
+
return {
|
|
300
|
+
protocol: observation.protocol,
|
|
301
|
+
provider: observation.provider,
|
|
302
|
+
endpoint: safeUrl(observation.endpoint),
|
|
303
|
+
model: safeConfigValue(body.model, "model"),
|
|
304
|
+
// Extra-body values can replace any wire parameter. Apply the same content
|
|
305
|
+
// redaction even when a provider mapping introduced the final field name.
|
|
306
|
+
parameters: safeConfigValue(parameters, "", true),
|
|
307
|
+
tools: {
|
|
308
|
+
count: tools.length,
|
|
309
|
+
sha256: crypto.createHash("sha256").update(JSON.stringify(tools)).digest("hex"),
|
|
310
|
+
names: tools.map(tool => {
|
|
311
|
+
const name = tool?.function?.name ?? tool?.name;
|
|
312
|
+
return typeof name === "string" ? safeConfigValue(name, "name") : null;
|
|
313
|
+
}),
|
|
314
|
+
},
|
|
315
|
+
};
|
|
316
|
+
}
|
|
317
|
+
export async function logStartupConfig(config, context) {
|
|
318
|
+
if (["0", "false", "no"].includes((process.env.ARENA_CONFIG_LOGGING ?? "").toLowerCase()))
|
|
319
|
+
return;
|
|
320
|
+
const snapshot = startupConfigSnapshot(config, context);
|
|
321
|
+
const run = snapshot.run;
|
|
322
|
+
const diagnostics = new JsonlModelCallDiagnostics(run.configLogFile);
|
|
323
|
+
const record = async (event) => {
|
|
324
|
+
process.stderr.write(`[arena:config] ${JSON.stringify(event)}\n`);
|
|
325
|
+
await diagnostics.record(event);
|
|
326
|
+
};
|
|
327
|
+
await record(snapshot);
|
|
328
|
+
// Requests can change after connector discovery, compaction, or fallback.
|
|
329
|
+
// Log each distinct configuration once per invocation, not every tool step.
|
|
330
|
+
const seen = new Set();
|
|
331
|
+
return async (observation) => {
|
|
332
|
+
const requestConfig = modelRequestConfigSnapshot(observation);
|
|
333
|
+
const signature = JSON.stringify(requestConfig);
|
|
334
|
+
if (seen.has(signature))
|
|
335
|
+
return;
|
|
336
|
+
seen.add(signature);
|
|
337
|
+
await record({
|
|
338
|
+
event: "model_request_config",
|
|
339
|
+
version: context.version,
|
|
340
|
+
timestamp: new Date().toISOString(),
|
|
341
|
+
sessionId: context.sessionId,
|
|
342
|
+
callId: observation.callId,
|
|
343
|
+
...requestConfig,
|
|
344
|
+
});
|
|
345
|
+
};
|
|
346
|
+
}
|
|
347
|
+
//# sourceMappingURL=startup-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"startup-config.js","sourceRoot":"","sources":["../src/startup-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import type { ArenaConfig } from "./config.js";
|
|
2
|
+
export declare const startupMainConfigNames: {
|
|
3
|
+
readonly mode: "ARENA_HARNESS_MODE";
|
|
4
|
+
readonly model: "OPENAI_MODEL";
|
|
5
|
+
readonly workspace: null;
|
|
6
|
+
readonly stateRoot: "ARENA_HOME";
|
|
7
|
+
readonly tenantId: "ARENA_TENANT_ID";
|
|
8
|
+
readonly apiBase: "OPENAI_BASE_URL";
|
|
9
|
+
readonly apiKey: "OPENAI_API_KEY";
|
|
10
|
+
readonly openaiApi: "ARENA_OPENAI_API";
|
|
11
|
+
readonly responsesReplayReasoningState: "ARENA_RESPONSES_REPLAY_REASONING_STATE";
|
|
12
|
+
readonly maxTurns: "ARENA_MAX_TURNS";
|
|
13
|
+
readonly maxTokens: "ARENA_MAX_TOKENS";
|
|
14
|
+
readonly temperature: "ARENA_TEMPERATURE";
|
|
15
|
+
readonly incrementalOutput: null;
|
|
16
|
+
readonly resultFormat: null;
|
|
17
|
+
readonly reasoningEffort: "ARENA_REASONING_EFFORT";
|
|
18
|
+
readonly toolChoice: "ARENA_TOOL_CHOICE";
|
|
19
|
+
readonly disallowedTools: "ARENA_DISALLOWED_TOOLS";
|
|
20
|
+
readonly connectors: "ARENA_CONNECTORS";
|
|
21
|
+
readonly connectedConnectors: "ARENA_CONNECTED_CONNECTORS";
|
|
22
|
+
readonly mergeConnectors: null;
|
|
23
|
+
readonly extraBody: "ARENA_EXTRA_BODY";
|
|
24
|
+
readonly enableThinking: "ARENA_ENABLE_THINKING";
|
|
25
|
+
readonly thinkingBudget: "ARENA_THINKING_BUDGET";
|
|
26
|
+
readonly preserveThinking: "ARENA_PRESERVE_THINKING";
|
|
27
|
+
readonly systemPrompt: null;
|
|
28
|
+
readonly appendSystemPrompt: null;
|
|
29
|
+
readonly excludeQwenFromSystemPrompt: "ARENA_EXCLUDE_QWEN_FROM_SYSTEM_PROMPT";
|
|
30
|
+
readonly contextWindow: "ARENA_CONTEXT_WINDOW";
|
|
31
|
+
readonly compactionMode: "ARENA_COMPACTION_MODE";
|
|
32
|
+
readonly restoreSessionMemory: "ARENA_RESTORE_SESSION_MEMORY";
|
|
33
|
+
readonly contextCompactionRatio: "ARENA_CONTEXT_COMPACTION_RATIO";
|
|
34
|
+
readonly compactionThresholdTokens: null;
|
|
35
|
+
readonly compactionSummaryMaxTokens: "ARENA_COMPACTION_SUMMARY_MAX_TOKENS";
|
|
36
|
+
readonly memoryUpdateTokens: "ARENA_MEMORY_UPDATE_TOKENS";
|
|
37
|
+
readonly modelMaxRetries: "ARENA_MODEL_MAX_RETRIES";
|
|
38
|
+
readonly modelRetryBaseMs: "ARENA_MODEL_RETRY_BASE_MS";
|
|
39
|
+
readonly modelRetryMaxMs: "ARENA_MODEL_RETRY_MAX_MS";
|
|
40
|
+
readonly modelRetryableStatuses: "ARENA_MODEL_RETRYABLE_STATUS_CODES";
|
|
41
|
+
readonly modelStreamIdleTimeoutMs: "ARENA_MODEL_STREAM_IDLE_TIMEOUT_MS";
|
|
42
|
+
readonly modelCallLogging: "ARENA_MODEL_CALL_LOGGING";
|
|
43
|
+
readonly modelCallLogMode: "ARENA_MODEL_CALL_LOG_MODE";
|
|
44
|
+
readonly modelSupportsImageInput: "ARENA_MODEL_SUPPORTS_IMAGE_INPUT";
|
|
45
|
+
readonly modelSupportsVideoInput: "ARENA_MODEL_SUPPORTS_VIDEO_INPUT";
|
|
46
|
+
readonly modelSupportsAudioInput: "ARENA_MODEL_SUPPORTS_AUDIO_INPUT";
|
|
47
|
+
readonly imageInputFallbackModel: "ARENA_IMAGE_INPUT_FALLBACK_MODEL";
|
|
48
|
+
readonly imageInputFallbackBaseUrl: "ARENA_IMAGE_INPUT_FALLBACK_BASE_URL";
|
|
49
|
+
readonly imageInputFallbackApiKey: "ARENA_IMAGE_INPUT_FALLBACK_API_KEY";
|
|
50
|
+
readonly imageInputFallbackProtocol: "ARENA_IMAGE_INPUT_FALLBACK_PROTOCOL";
|
|
51
|
+
readonly metricsSideQueryEnabled: "ARENA_METRICS_SIDE_QUERY_ENABLED";
|
|
52
|
+
readonly metricsSideQueryModel: "ARENA_METRICS_SIDE_QUERY_MODEL";
|
|
53
|
+
readonly metricsSideQueryMaxTokens: "ARENA_METRICS_SIDE_QUERY_MAX_TOKENS";
|
|
54
|
+
readonly metricsSideQueryMaxAttempts: "ARENA_METRICS_SIDE_QUERY_MAX_ATTEMPTS";
|
|
55
|
+
readonly metricsSideQueryEnableThinking: "ARENA_METRICS_SIDE_QUERY_ENABLE_THINKING";
|
|
56
|
+
readonly metricsSideQueryThinkingBudget: "ARENA_METRICS_SIDE_QUERY_THINKING_BUDGET";
|
|
57
|
+
readonly askUserMode: "ARENA_ASK_USER_MODE";
|
|
58
|
+
readonly askUserHandlerUrl: "ARENA_ASK_USER_HANDLER_URL";
|
|
59
|
+
readonly askUserTimeoutMs: "ARENA_ASK_USER_TIMEOUT_MS";
|
|
60
|
+
};
|
|
61
|
+
export declare const startupMainEnvironmentNames: Set<string>;
|
|
62
|
+
/** Raw resolved values; the caller applies the shared startup-log sanitizer. */
|
|
63
|
+
export declare function startupMainConfig(config: ArenaConfig): Record<string, unknown>;
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
// Names identify settings, not the input that won precedence. Values always
|
|
2
|
+
// come from the resolved config; supplied environment values are logged apart.
|
|
3
|
+
// Keeping this exhaustive also makes new configuration fields visible here.
|
|
4
|
+
export const startupMainConfigNames = {
|
|
5
|
+
mode: "ARENA_HARNESS_MODE",
|
|
6
|
+
model: "OPENAI_MODEL",
|
|
7
|
+
workspace: null,
|
|
8
|
+
stateRoot: "ARENA_HOME",
|
|
9
|
+
tenantId: "ARENA_TENANT_ID",
|
|
10
|
+
apiBase: "OPENAI_BASE_URL",
|
|
11
|
+
apiKey: "OPENAI_API_KEY",
|
|
12
|
+
openaiApi: "ARENA_OPENAI_API",
|
|
13
|
+
responsesReplayReasoningState: "ARENA_RESPONSES_REPLAY_REASONING_STATE",
|
|
14
|
+
maxTurns: "ARENA_MAX_TURNS",
|
|
15
|
+
maxTokens: "ARENA_MAX_TOKENS",
|
|
16
|
+
temperature: "ARENA_TEMPERATURE",
|
|
17
|
+
incrementalOutput: null,
|
|
18
|
+
resultFormat: null,
|
|
19
|
+
reasoningEffort: "ARENA_REASONING_EFFORT",
|
|
20
|
+
toolChoice: "ARENA_TOOL_CHOICE",
|
|
21
|
+
disallowedTools: "ARENA_DISALLOWED_TOOLS",
|
|
22
|
+
connectors: "ARENA_CONNECTORS",
|
|
23
|
+
connectedConnectors: "ARENA_CONNECTED_CONNECTORS",
|
|
24
|
+
mergeConnectors: null,
|
|
25
|
+
extraBody: "ARENA_EXTRA_BODY",
|
|
26
|
+
enableThinking: "ARENA_ENABLE_THINKING",
|
|
27
|
+
thinkingBudget: "ARENA_THINKING_BUDGET",
|
|
28
|
+
preserveThinking: "ARENA_PRESERVE_THINKING",
|
|
29
|
+
systemPrompt: null,
|
|
30
|
+
appendSystemPrompt: null,
|
|
31
|
+
excludeQwenFromSystemPrompt: "ARENA_EXCLUDE_QWEN_FROM_SYSTEM_PROMPT",
|
|
32
|
+
contextWindow: "ARENA_CONTEXT_WINDOW",
|
|
33
|
+
compactionMode: "ARENA_COMPACTION_MODE",
|
|
34
|
+
restoreSessionMemory: "ARENA_RESTORE_SESSION_MEMORY",
|
|
35
|
+
contextCompactionRatio: "ARENA_CONTEXT_COMPACTION_RATIO",
|
|
36
|
+
compactionThresholdTokens: null,
|
|
37
|
+
compactionSummaryMaxTokens: "ARENA_COMPACTION_SUMMARY_MAX_TOKENS",
|
|
38
|
+
memoryUpdateTokens: "ARENA_MEMORY_UPDATE_TOKENS",
|
|
39
|
+
modelMaxRetries: "ARENA_MODEL_MAX_RETRIES",
|
|
40
|
+
modelRetryBaseMs: "ARENA_MODEL_RETRY_BASE_MS",
|
|
41
|
+
modelRetryMaxMs: "ARENA_MODEL_RETRY_MAX_MS",
|
|
42
|
+
modelRetryableStatuses: "ARENA_MODEL_RETRYABLE_STATUS_CODES",
|
|
43
|
+
modelStreamIdleTimeoutMs: "ARENA_MODEL_STREAM_IDLE_TIMEOUT_MS",
|
|
44
|
+
modelCallLogging: "ARENA_MODEL_CALL_LOGGING",
|
|
45
|
+
modelCallLogMode: "ARENA_MODEL_CALL_LOG_MODE",
|
|
46
|
+
modelSupportsImageInput: "ARENA_MODEL_SUPPORTS_IMAGE_INPUT",
|
|
47
|
+
modelSupportsVideoInput: "ARENA_MODEL_SUPPORTS_VIDEO_INPUT",
|
|
48
|
+
modelSupportsAudioInput: "ARENA_MODEL_SUPPORTS_AUDIO_INPUT",
|
|
49
|
+
imageInputFallbackModel: "ARENA_IMAGE_INPUT_FALLBACK_MODEL",
|
|
50
|
+
imageInputFallbackBaseUrl: "ARENA_IMAGE_INPUT_FALLBACK_BASE_URL",
|
|
51
|
+
imageInputFallbackApiKey: "ARENA_IMAGE_INPUT_FALLBACK_API_KEY",
|
|
52
|
+
imageInputFallbackProtocol: "ARENA_IMAGE_INPUT_FALLBACK_PROTOCOL",
|
|
53
|
+
metricsSideQueryEnabled: "ARENA_METRICS_SIDE_QUERY_ENABLED",
|
|
54
|
+
metricsSideQueryModel: "ARENA_METRICS_SIDE_QUERY_MODEL",
|
|
55
|
+
metricsSideQueryMaxTokens: "ARENA_METRICS_SIDE_QUERY_MAX_TOKENS",
|
|
56
|
+
metricsSideQueryMaxAttempts: "ARENA_METRICS_SIDE_QUERY_MAX_ATTEMPTS",
|
|
57
|
+
metricsSideQueryEnableThinking: "ARENA_METRICS_SIDE_QUERY_ENABLE_THINKING",
|
|
58
|
+
metricsSideQueryThinkingBudget: "ARENA_METRICS_SIDE_QUERY_THINKING_BUDGET",
|
|
59
|
+
askUserMode: "ARENA_ASK_USER_MODE",
|
|
60
|
+
askUserHandlerUrl: "ARENA_ASK_USER_HANDLER_URL",
|
|
61
|
+
askUserTimeoutMs: "ARENA_ASK_USER_TIMEOUT_MS",
|
|
62
|
+
};
|
|
63
|
+
const mergeConfigNames = {
|
|
64
|
+
accessKey: "ARENA_MERGE_ACCESS_KEY",
|
|
65
|
+
toolPackId: "ARENA_MERGE_TOOL_PACK_ID",
|
|
66
|
+
registeredUserId: "ARENA_MERGE_REGISTERED_USER_ID",
|
|
67
|
+
apiBase: "ARENA_MERGE_API_BASE",
|
|
68
|
+
timeoutMs: "ARENA_CONNECTOR_TIMEOUT_MS",
|
|
69
|
+
};
|
|
70
|
+
export const startupMainEnvironmentNames = new Set([
|
|
71
|
+
...Object.values(startupMainConfigNames).flatMap(name => name === null ? [] : [name]),
|
|
72
|
+
...Object.values(mergeConfigNames),
|
|
73
|
+
]);
|
|
74
|
+
/** Raw resolved values; the caller applies the shared startup-log sanitizer. */
|
|
75
|
+
export function startupMainConfig(config) {
|
|
76
|
+
const snapshot = {};
|
|
77
|
+
for (const field of Object.keys(startupMainConfigNames)) {
|
|
78
|
+
if (field === "mergeConnectors")
|
|
79
|
+
continue;
|
|
80
|
+
snapshot[startupMainConfigNames[field] ?? field] = config[field] ?? null;
|
|
81
|
+
}
|
|
82
|
+
snapshot.ARENA_MAX_TURNS = config.maxTurns ?? "unlimited";
|
|
83
|
+
snapshot.ARENA_MODEL_RETRYABLE_STATUS_CODES = config.modelRetryableStatuses
|
|
84
|
+
? [
|
|
85
|
+
...config.modelRetryableStatuses.exact,
|
|
86
|
+
...config.modelRetryableStatuses.classes.map(status => `${status}xx`),
|
|
87
|
+
]
|
|
88
|
+
: null;
|
|
89
|
+
for (const field of Object.keys(mergeConfigNames)) {
|
|
90
|
+
snapshot[mergeConfigNames[field]] = config.mergeConnectors?.[field] ?? null;
|
|
91
|
+
}
|
|
92
|
+
return snapshot;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=startup-main-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"startup-main-config.js","sourceRoot":"","sources":["../src/startup-main-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { HarnessMode } from "./mode.js";
|
|
2
|
+
/**
|
|
3
|
+
* Settings read lazily by tools rather than configFromEnv. Match each tool's
|
|
4
|
+
* parsing rules without importing its executor or triggering tool work.
|
|
5
|
+
* Null means unset or unused by this headless entry point / harness mode.
|
|
6
|
+
* Endpoint defaults describe available services, not requests already made.
|
|
7
|
+
*/
|
|
8
|
+
export declare function startupToolConfig(mode: HarnessMode, env: NodeJS.ProcessEnv, hostEnv: NodeJS.ProcessEnv): Record<string, unknown>;
|