@qwen-code/arena-agent 0.0.10-dev.9 → 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.
Files changed (144) hide show
  1. package/.env.example +61 -10
  2. package/CHANGELOG.md +140 -11
  3. package/README.md +309 -46
  4. package/dist/agent.d.ts +20 -6
  5. package/dist/agent.js +303 -73
  6. package/dist/agent.js.map +1 -1
  7. package/dist/anthropic.d.ts +1 -1
  8. package/dist/anthropic.js +46 -57
  9. package/dist/anthropic.js.map +1 -1
  10. package/dist/arena-history.d.ts +12 -0
  11. package/dist/arena-history.js +119 -0
  12. package/dist/arena-history.js.map +1 -0
  13. package/dist/ask-user.js +44 -2
  14. package/dist/ask-user.js.map +1 -1
  15. package/dist/attachment-limits.d.ts +4 -0
  16. package/dist/attachment-limits.js +10 -0
  17. package/dist/attachment-limits.js.map +1 -0
  18. package/dist/attachments.d.ts +4 -2
  19. package/dist/attachments.js +9 -11
  20. package/dist/attachments.js.map +1 -1
  21. package/dist/brave-search.js +11 -7
  22. package/dist/brave-search.js.map +1 -1
  23. package/dist/canonical-data.d.ts +9 -0
  24. package/dist/canonical-data.js +12 -3
  25. package/dist/canonical-data.js.map +1 -1
  26. package/dist/cli.js +140 -40
  27. package/dist/cli.js.map +1 -1
  28. package/dist/code-tool-schema.d.ts +3 -0
  29. package/dist/code-tool-schema.js +92 -0
  30. package/dist/code-tool-schema.js.map +1 -0
  31. package/dist/code-tools.js +63 -26
  32. package/dist/code-tools.js.map +1 -1
  33. package/dist/compaction-threshold.d.ts +3 -0
  34. package/dist/compaction-threshold.js +6 -0
  35. package/dist/compaction-threshold.js.map +1 -0
  36. package/dist/compaction.d.ts +24 -7
  37. package/dist/compaction.js +242 -66
  38. package/dist/compaction.js.map +1 -1
  39. package/dist/config.d.ts +17 -0
  40. package/dist/config.js +30 -5
  41. package/dist/config.js.map +1 -1
  42. package/dist/connector-errors.d.ts +16 -0
  43. package/dist/connector-errors.js +69 -0
  44. package/dist/connector-errors.js.map +1 -0
  45. package/dist/connector-files.d.ts +31 -0
  46. package/dist/connector-files.js +249 -0
  47. package/dist/connector-files.js.map +1 -0
  48. package/dist/connector-input.d.ts +10 -0
  49. package/dist/connector-input.js +79 -0
  50. package/dist/connector-input.js.map +1 -0
  51. package/dist/connector-mcp.d.ts +60 -0
  52. package/dist/connector-mcp.js +474 -0
  53. package/dist/connector-mcp.js.map +1 -0
  54. package/dist/connectors.d.ts +13 -0
  55. package/dist/connectors.js +69 -0
  56. package/dist/connectors.js.map +1 -0
  57. package/dist/fetch-page.js +2 -2
  58. package/dist/fetch-page.js.map +1 -1
  59. package/dist/history.d.ts +15 -5
  60. package/dist/history.js +59 -14
  61. package/dist/history.js.map +1 -1
  62. package/dist/image-choice.d.ts +23 -0
  63. package/dist/image-choice.js +190 -0
  64. package/dist/image-choice.js.map +1 -0
  65. package/dist/image-input-fallback.js +5 -0
  66. package/dist/image-input-fallback.js.map +1 -1
  67. package/dist/image-model.d.ts +6 -0
  68. package/dist/image-model.js +32 -0
  69. package/dist/image-model.js.map +1 -0
  70. package/dist/midturn-checkpoint-hook.d.ts +14 -1
  71. package/dist/midturn-checkpoint-hook.js.map +1 -1
  72. package/dist/mode.js +1 -1
  73. package/dist/mode.js.map +1 -1
  74. package/dist/model-capabilities.js +18 -8
  75. package/dist/model-capabilities.js.map +1 -1
  76. package/dist/model-router-media.js +55 -3
  77. package/dist/model-router-media.js.map +1 -1
  78. package/dist/model-stream.d.ts +16 -0
  79. package/dist/model-stream.js +129 -0
  80. package/dist/model-stream.js.map +1 -0
  81. package/dist/openai-responses.d.ts +2 -1
  82. package/dist/openai-responses.js +85 -88
  83. package/dist/openai-responses.js.map +1 -1
  84. package/dist/process-manager.js +9 -9
  85. package/dist/process-manager.js.map +1 -1
  86. package/dist/prompts.d.ts +0 -2
  87. package/dist/prompts.js +10 -60
  88. package/dist/prompts.js.map +1 -1
  89. package/dist/protocol.d.ts +5 -1
  90. package/dist/protocol.js +23 -2
  91. package/dist/protocol.js.map +1 -1
  92. package/dist/provider.d.ts +18 -0
  93. package/dist/provider.js +120 -51
  94. package/dist/provider.js.map +1 -1
  95. package/dist/repo.d.ts +1 -1
  96. package/dist/repo.js +26 -4
  97. package/dist/repo.js.map +1 -1
  98. package/dist/routify-web-fetch.js +2 -2
  99. package/dist/routify-web-fetch.js.map +1 -1
  100. package/dist/server.js +55 -27
  101. package/dist/server.js.map +1 -1
  102. package/dist/session-memory-prompts.d.ts +3 -1
  103. package/dist/session-memory-prompts.js +4 -2
  104. package/dist/session-memory-prompts.js.map +1 -1
  105. package/dist/side-query.js +5 -0
  106. package/dist/side-query.js.map +1 -1
  107. package/dist/spec.d.ts +5 -4
  108. package/dist/spec.js +30 -11
  109. package/dist/spec.js.map +1 -1
  110. package/dist/startup-config.d.ts +39 -0
  111. package/dist/startup-config.js +347 -0
  112. package/dist/startup-config.js.map +1 -0
  113. package/dist/startup-main-config.d.ts +63 -0
  114. package/dist/startup-main-config.js +94 -0
  115. package/dist/startup-main-config.js.map +1 -0
  116. package/dist/startup-tool-config.d.ts +8 -0
  117. package/dist/startup-tool-config.js +116 -0
  118. package/dist/startup-tool-config.js.map +1 -0
  119. package/dist/summary-compaction.d.ts +29 -0
  120. package/dist/{legacy-compaction.js → summary-compaction.js} +79 -14
  121. package/dist/summary-compaction.js.map +1 -0
  122. package/dist/tools.d.ts +5 -1
  123. package/dist/tools.js +164 -54
  124. package/dist/tools.js.map +1 -1
  125. package/dist/tui.js +26 -6
  126. package/dist/tui.js.map +1 -1
  127. package/dist/types.d.ts +21 -1
  128. package/dist/web/app.js +30 -5
  129. package/dist/web/app.js.map +1 -1
  130. package/dist/workspace.js +61 -14
  131. package/dist/workspace.js.map +1 -1
  132. package/docs/BINARY_DISTRIBUTION.md +44 -8
  133. package/docs/MODES_AND_RELEASES.md +79 -6
  134. package/docs/SDK.md +1 -0
  135. package/modes/code-arena/capture-provenance.json +9 -6
  136. package/modes/code-arena/full-stack/dependencies.lock.json +8670 -0
  137. package/modes/code-arena/full-stack/system-prompt.txt +1 -1
  138. package/modes/code-arena/html/system-prompt.txt +1 -1
  139. package/modes/code-arena/react/dependencies.lock.json +2707 -0
  140. package/package.json +7 -2
  141. package/scripts/README.md +23 -4
  142. package/web/styles.css +22 -0
  143. package/dist/legacy-compaction.d.ts +0 -16
  144. package/dist/legacy-compaction.js.map +0 -1
package/dist/config.d.ts CHANGED
@@ -1,3 +1,5 @@
1
+ import { type ConnectorService } from "./connectors.js";
2
+ import { type MergeConnectorConfig } from "./connector-mcp.js";
1
3
  export { modelInputCapabilities, normalizeModelId, supportsImageInput, supportsModelInput, type ModelInputCapabilities, type ModelInputModality, } from "./model-capabilities.js";
2
4
  import { type HarnessMode } from "./mode.js";
3
5
  import type { ReasoningEffort } from "./types.js";
@@ -11,6 +13,7 @@ export interface RetryableStatusMatcher {
11
13
  classes: number[];
12
14
  }
13
15
  export type ModelProtocol = "anthropic-messages" | "openai-chat-completions" | "openai-responses";
16
+ export type CompactionMode = "rolling" | "summary";
14
17
  export interface ArenaConfig {
15
18
  mode: HarnessMode;
16
19
  model: string;
@@ -21,6 +24,8 @@ export interface ArenaConfig {
21
24
  apiKey?: string;
22
25
  /** Native OpenAI transport. Auto selects Responses for GPT model names. */
23
26
  openaiApi?: "auto" | "chat-completions" | "responses";
27
+ /** Replay reasoning encrypted_content and id in Responses input (default true). */
28
+ responsesReplayReasoningState?: boolean;
24
29
  maxTurns?: number;
25
30
  maxTokens: number;
26
31
  temperature: number;
@@ -31,6 +36,12 @@ export interface ArenaConfig {
31
36
  reasoningEffort?: ReasoningEffort;
32
37
  toolChoice: string;
33
38
  disallowedTools?: string[];
39
+ /** Agent Arena only. Conversation-enabled apps; opt-in discovery also accepts connectedConnectors. */
40
+ connectors?: readonly ConnectorService[];
41
+ /** Optional host-authenticated app list. Supplying [] enables discovery with no connected apps. */
42
+ connectedConnectors?: readonly string[];
43
+ /** Agent Arena only. Server-side Merge identity; never sent to the model. */
44
+ mergeConnectors?: MergeConnectorConfig;
34
45
  extraBody?: Record<string, unknown>;
35
46
  enableThinking: boolean;
36
47
  thinkingBudget: number;
@@ -44,7 +55,13 @@ export interface ArenaConfig {
44
55
  /** Remove Qwen from the Arena identity-model list in the system prompt. */
45
56
  excludeQwenFromSystemPrompt?: boolean;
46
57
  contextWindow: number;
58
+ /** Agent Arena defaults to rolling; Code Arena always uses summary. */
59
+ compactionMode?: CompactionMode;
60
+ /** Restore Agent Arena rolling memory by default; false opts out. */
61
+ restoreSessionMemory?: boolean;
47
62
  contextCompactionRatio: number;
63
+ /** Resolved Agent Arena threshold; defaults to min(250k, 80% of the window). */
64
+ compactionThresholdTokens?: number;
48
65
  compactionSummaryMaxTokens: number;
49
66
  memoryUpdateTokens?: number;
50
67
  modelMaxRetries?: number;
package/dist/config.js CHANGED
@@ -1,8 +1,18 @@
1
1
  import os from "node:os";
2
2
  import path from "node:path";
3
+ import { agentArenaCompactionThreshold } from "./compaction-threshold.js";
4
+ import { connectorsFromEnv, connectedConnectorsFromEnv } from "./connectors.js";
5
+ import { mergeConnectorConfigFromEnv } from "./connector-mcp.js";
3
6
  export { modelInputCapabilities, normalizeModelId, supportsImageInput, supportsModelInput, } from "./model-capabilities.js";
4
7
  import { defaultStepLimit, isCodeArenaMode, parseHarnessMode, } from "./mode.js";
5
8
  import { modelSpec } from "./spec.js";
9
+ function parseCompactionMode(value) {
10
+ if (value === undefined || value === "rolling")
11
+ return "rolling";
12
+ if (value === "summary")
13
+ return "summary";
14
+ throw new Error("ARENA_COMPACTION_MODE must be rolling or summary");
15
+ }
6
16
  function booleanValue(value, fallback) {
7
17
  if (value === undefined)
8
18
  return fallback;
@@ -210,6 +220,12 @@ export function configFromEnv(workspace = process.cwd(), modeOverride) {
210
220
  process.env.CODE_HARNESS_MODE ||
211
221
  process.env.ARENA_MODE);
212
222
  const source = modelSpec(mode);
223
+ const connectors = isCodeArenaMode(mode) ? [] : connectorsFromEnv(process.env.ARENA_CONNECTORS);
224
+ const connectedConnectors = isCodeArenaMode(mode) ? undefined : connectedConnectorsFromEnv(process.env.ARENA_CONNECTED_CONNECTORS);
225
+ const compactionMode = isCodeArenaMode(mode) ? "summary"
226
+ : parseCompactionMode(process.env.ARENA_COMPACTION_MODE);
227
+ const contextWindow = positiveNumber(process.env.ARENA_CONTEXT_WINDOW, 1_000_000, true);
228
+ const contextCompactionRatio = ratio(process.env.ARENA_CONTEXT_COMPACTION_RATIO, isCodeArenaMode(mode) ? 0.7 : 0.8);
213
229
  const model = process.env.OPENAI_MODEL ||
214
230
  process.env.ARENA_MODEL ||
215
231
  "openai/qwen-latest-series-invite-beta-v92";
@@ -225,26 +241,35 @@ export function configFromEnv(workspace = process.cwd(), modeOverride) {
225
241
  apiBase: process.env.OPENAI_BASE_URL || process.env.ARENA_API_BASE || undefined,
226
242
  apiKey: process.env.OPENAI_API_KEY || process.env.ARENA_API_KEY || undefined,
227
243
  openaiApi: openaiApi(process.env.ARENA_OPENAI_API),
244
+ responsesReplayReasoningState: booleanValue(process.env.ARENA_RESPONSES_REPLAY_REASONING_STATE, true),
228
245
  maxTurns: process.env.ARENA_MAX_TURNS
229
- ? positiveNumber(process.env.ARENA_MAX_TURNS, 500, true)
246
+ ? positiveNumber(process.env.ARENA_MAX_TURNS, isCodeArenaMode(mode) ? 500 : 250, true)
230
247
  : isCodeArenaMode(mode)
231
248
  ? positiveNumber(process.env.CODE_HARNESS_MAX_STEPS ||
232
249
  process.env.ARENA_MAX_AGENT_STEPS, defaultStepLimit(mode), true)
233
- : undefined,
250
+ : defaultStepLimit(mode),
234
251
  maxTokens: Number(process.env.ARENA_MAX_TOKENS || source.max_tokens),
235
252
  temperature: nonNegativeNumber(process.env.ARENA_TEMPERATURE, 1),
236
253
  reasoningEffort: reasoningEffort(process.env.ARENA_REASONING_EFFORT),
237
254
  toolChoice: process.env.ARENA_TOOL_CHOICE || "auto",
238
255
  disallowedTools: stringArray(process.env.ARENA_DISALLOWED_TOOLS, "ARENA_DISALLOWED_TOOLS"),
256
+ connectors,
257
+ connectedConnectors,
258
+ mergeConnectors: connectors.length || connectedConnectors !== undefined ? mergeConnectorConfigFromEnv() : undefined,
239
259
  extraBody: jsonObject(process.env.ARENA_EXTRA_BODY, "ARENA_EXTRA_BODY"),
240
260
  enableThinking,
241
261
  thinkingBudget,
242
262
  preserveThinking: booleanValue(process.env.ARENA_PRESERVE_THINKING, true),
243
263
  excludeQwenFromSystemPrompt: booleanValue(process.env.ARENA_EXCLUDE_QWEN_FROM_SYSTEM_PROMPT, false),
244
- contextWindow: positiveNumber(process.env.ARENA_CONTEXT_WINDOW, 1_000_000, true),
245
- contextCompactionRatio: ratio(process.env.ARENA_CONTEXT_COMPACTION_RATIO, isCodeArenaMode(mode) ? 0.7 : 0.8),
264
+ contextWindow,
265
+ compactionMode,
266
+ contextCompactionRatio,
267
+ ...(isCodeArenaMode(mode) ? {} : {
268
+ compactionThresholdTokens: agentArenaCompactionThreshold(contextWindow, contextCompactionRatio),
269
+ }),
270
+ restoreSessionMemory: booleanValue(process.env.ARENA_RESTORE_SESSION_MEMORY, true),
246
271
  memoryUpdateTokens: positiveNumber(process.env.ARENA_MEMORY_UPDATE_TOKENS, 24_000, true),
247
- compactionSummaryMaxTokens: positiveNumber(process.env.ARENA_COMPACTION_SUMMARY_MAX_TOKENS, isCodeArenaMode(mode) ? 8192 : 131072, true),
272
+ compactionSummaryMaxTokens: positiveNumber(process.env.ARENA_COMPACTION_SUMMARY_MAX_TOKENS, compactionMode === "summary" ? 8192 : 131072, true),
248
273
  modelMaxRetries: nonNegativeNumber(process.env.ARENA_MODEL_MAX_RETRIES, 10, true),
249
274
  modelRetryBaseMs: nonNegativeNumber(process.env.ARENA_MODEL_RETRY_BASE_MS, 1000),
250
275
  modelRetryMaxMs: nonNegativeNumber(process.env.ARENA_MODEL_RETRY_MAX_MS, 120_000),
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,kBAAkB,EAClB,kBAAkB,GAGnB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,gBAAgB,GAEjB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAqFtC,SAAS,YAAY,CAAC,KAAmC,EAAE,QAAiB;IAC1E,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IACzC,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC7C,OAAO,CAAC,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAyB;IACrD,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,iBAAiB,CACxB,KAAyB,EACzB,QAAgB,EAChB,OAAO,GAAG,KAAK;IAEf,IAAI,CAAC,KAAK;QAAE,OAAO,QAAQ,CAAC;IAC5B,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC5D,OAAO,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;AAC/C,CAAC;AAED,SAAS,cAAc,CACrB,KAAyB,EACzB,QAAgB,EAChB,OAAO,GAAG,KAAK;IAEf,MAAM,MAAM,GAAG,iBAAiB,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC3D,OAAO,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC;AACxC,CAAC;AAED,SAAS,KAAK,CAAC,KAAyB,EAAE,QAAgB;IACxD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,GAAG,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC3E,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAkB;IAChD,KAAK;IACL,QAAQ;IACR,MAAM;IACN,OAAO;IACP,KAAK;IACL,OAAO;CACR,CAAC,CAAC;AAEH,SAAS,eAAe,CAAC,KAAyB;IAChD,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,IAAI,gBAAgB,CAAC,GAAG,CAAC,KAAwB,CAAC,EAAE,CAAC;QACnD,OAAO,KAAwB,CAAC;IAClC,CAAC;IACD,MAAM,IAAI,KAAK,CACb,+EAA+E,CAChF,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAClB,KAAyB,EACzB,IAAY;IAEZ,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,4CAA4C,CAAC,CAAC;IACvE,CAAC;IACD,IACE,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QACtB,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAC/D,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,4CAA4C,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC;AAED;;;;;;GAMG;AACH,SAAS,iBAAiB,CACxB,KAAyB,EACzB,IAAY;IAEZ,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,sEAAsE,CAC9E,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,sEAAsE,CAC9E,CAAC;IACJ,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;QAC1B,IACE,OAAO,IAAI,KAAK,QAAQ;YACxB,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC;YACtB,IAAI,IAAI,GAAG;YACX,IAAI,IAAI,GAAG,EACX,CAAC;YACD,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAChB,SAAS;QACX,CAAC;QACD,MAAM,SAAS,GACb,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACrE,IAAI,SAAS,EAAE,CAAC;YACd,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAClC,SAAS;QACX,CAAC;QACD,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,wEAAwE,CAChF,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,CAAC,CAAS,EAAE,CAAS,EAAU,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IAC1D,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;AACtF,CAAC;AAED,SAAS,UAAU,CACjB,KAAyB,EACzB,IAAY;IAEZ,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,wBAAwB,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACnE,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,wBAAwB,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,MAAiC,CAAC;AAC3C,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAyB;IACjD,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IAC5C,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,SAAS,CAChB,KAAyB;IAEzB,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IAC9C,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,kBAAkB,EAAE,CAAC;QACrD,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IACD,IAAI,KAAK,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC;IACxC,MAAM,IAAI,KAAK,CACb,yEAAyE,CAC1E,CAAC;AACJ,CAAC;AAED,SAAS,aAAa,CACpB,KAAyB,EACzB,IAAY;IAEZ,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,SAAS,CAAC;IACjD,IACE,KAAK,KAAK,QAAQ;QAClB,KAAK,KAAK,MAAM;QAChB,KAAK,KAAK,kBAAkB;QAC5B,KAAK,KAAK,yBAAyB,EACnC,CAAC;QACD,OAAO,yBAAyB,CAAC;IACnC,CAAC;IACD,IAAI,KAAK,KAAK,WAAW,IAAI,KAAK,KAAK,kBAAkB,EAAE,CAAC;QAC1D,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IACD,IACE,KAAK,KAAK,WAAW;QACrB,KAAK,KAAK,UAAU;QACpB,KAAK,KAAK,oBAAoB,EAC9B,CAAC;QACD,OAAO,oBAAoB,CAAC;IAC9B,CAAC;IACD,MAAM,IAAI,KAAK,CACb,GAAG,IAAI,iFAAiF,CACzF,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,KAAyB;IAC5C,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,IAAI,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACrC,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;AACjE,CAAC;AAED,SAAS,iBAAiB,CACxB,IAA0B,EAC1B,KAAyB;IAEzB,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,wEAAwE,CACzE,CAAC;IACJ,CAAC;IACD,IAAI,MAAW,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,KAAK,OAAO,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC;AAC3B,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAyB;IACjD,IAAI,CAAC,KAAK;QAAE,OAAO,MAAM,CAAC;IAC1B,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;QACjD,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,IAAI,KAAK,KAAK,GAAG;QAAE,OAAO,EAAE,CAAC,OAAO,EAAE,CAAC;IACvC,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3E,OAAO,KAAK,CAAC;AACf,CAAC;AAED,yEAAyE;AACzE,4EAA4E;AAC5E,iEAAiE;AACjE,MAAM,UAAU,gBAAgB;IAC9B,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;IACxC,IAAI,QAAQ;QAAE,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxD,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,SAAS,GAAG,OAAO,CAAC,GAAG,EAAE,EACzB,YAA0B;IAE1B,MAAM,IAAI,GACR,YAAY;QACZ,gBAAgB,CACd,OAAO,CAAC,GAAG,CAAC,kBAAkB;YAC5B,OAAO,CAAC,GAAG,CAAC,iBAAiB;YAC7B,OAAO,CAAC,GAAG,CAAC,UAAU,CACzB,CAAC;IACJ,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC/B,MAAM,KAAK,GACT,OAAO,CAAC,GAAG,CAAC,YAAY;QACxB,OAAO,CAAC,GAAG,CAAC,WAAW;QACvB,2CAA2C,CAAC;IAC9C,MAAM,cAAc,GAAG,YAAY,CACjC,OAAO,CAAC,GAAG,CAAC,qBAAqB,EACjC,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC,CAChC,CAAC;IACF,MAAM,cAAc,GAAG,MAAM,CAC3B,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,MAAM,CAAC,eAAe,CAC5D,CAAC;IACF,MAAM,qBAAqB,GAAG,WAAW,CACvC,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAChC,CAAC;IACF,OAAO;QACL,IAAI;QACJ,KAAK;QACL,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC9C,SAAS,EAAE,gBAAgB,EAAE;QAC7B,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,OAAO;QAChD,OAAO,EACL,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,SAAS;QACxE,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,SAAS;QAC5E,SAAS,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;QAClD,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,eAAe;YACnC,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,GAAG,EAAE,IAAI,CAAC;YACxD,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC;gBACrB,CAAC,CAAC,cAAc,CACZ,OAAO,CAAC,GAAG,CAAC,sBAAsB;oBAChC,OAAO,CAAC,GAAG,CAAC,qBAAqB,EACnC,gBAAgB,CAAC,IAAI,CAAE,EACvB,IAAI,CACL;gBACH,CAAC,CAAC,SAAS;QACf,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,MAAM,CAAC,UAAU,CAAC;QACpE,WAAW,EAAE,iBAAiB,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC;QAChE,eAAe,EAAE,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC;QACpE,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,MAAM;QACnD,eAAe,EAAE,WAAW,CAC1B,OAAO,CAAC,GAAG,CAAC,sBAAsB,EAClC,wBAAwB,CACzB;QACD,SAAS,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,EAAE,kBAAkB,CAAC;QACvE,cAAc;QACd,cAAc;QACd,gBAAgB,EAAE,YAAY,CAC5B,OAAO,CAAC,GAAG,CAAC,uBAAuB,EACnC,IAAI,CACL;QACD,2BAA2B,EAAE,YAAY,CACvC,OAAO,CAAC,GAAG,CAAC,qCAAqC,EACjD,KAAK,CACN;QACD,aAAa,EAAE,cAAc,CAC3B,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAChC,SAAS,EACT,IAAI,CACL;QACD,sBAAsB,EAAE,KAAK,CAC3B,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAC1C,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAClC;QACD,kBAAkB,EAAE,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,MAAM,EAAE,IAAI,CAAC;QACxF,0BAA0B,EAAE,cAAc,CACxC,OAAO,CAAC,GAAG,CAAC,mCAAmC,EAC/C,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,EACrC,IAAI,CACL;QACD,eAAe,EAAE,iBAAiB,CAChC,OAAO,CAAC,GAAG,CAAC,uBAAuB,EACnC,EAAE,EACF,IAAI,CACL;QACD,gBAAgB,EAAE,iBAAiB,CACjC,OAAO,CAAC,GAAG,CAAC,yBAAyB,EACrC,IAAI,CACL;QACD,eAAe,EAAE,iBAAiB,CAChC,OAAO,CAAC,GAAG,CAAC,wBAAwB,EACpC,OAAO,CACR;QACD,sBAAsB,EAAE,iBAAiB,CACvC,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAC9C,oCAAoC,CACrC;QACD,0EAA0E;QAC1E,qEAAqE;QACrE,wBAAwB,EAAE,iBAAiB,CACzC,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAC9C,OAAO,CACR;QACD,gBAAgB,EAAE,YAAY,CAC5B,OAAO,CAAC,GAAG,CAAC,wBAAwB,EACpC,IAAI,CACL;QACD,gBAAgB,EAAE,gBAAgB,CAChC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CACtC;QACD,uBAAuB,EAAE,oBAAoB,CAC3C,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAC7C;QACD,uBAAuB,EAAE,oBAAoB,CAC3C,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAC7C;QACD,uBAAuB,EAAE,oBAAoB,CAC3C,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAC7C;QACD,uBAAuB,EACrB,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAAE,IAAI,EAAE,IAAI,SAAS;QACnE,yBAAyB,EACvB,OAAO,CAAC,GAAG,CAAC,mCAAmC,EAAE,IAAI,EAAE,IAAI,SAAS;QACtE,wBAAwB,EACtB,OAAO,CAAC,GAAG,CAAC,kCAAkC,EAAE,IAAI,EAAE,IAAI,SAAS;QACrE,0BAA0B,EAAE,aAAa,CACvC,OAAO,CAAC,GAAG,CAAC,mCAAmC,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,EACrE,qCAAqC,CACtC;QACD,uBAAuB,EAAE,YAAY,CACnC,OAAO,CAAC,GAAG,CAAC,gCAAgC,EAC5C,KAAK,CACN;QACD,qBAAqB,EACnB,OAAO,CAAC,GAAG,CAAC,8BAA8B,IAAI,KAAK;QACrD,yBAAyB,EAAE,cAAc,CACvC,OAAO,CAAC,GAAG,CAAC,mCAAmC,EAC/C,GAAG,EACH,IAAI,CACL;QACD,2BAA2B,EAAE,cAAc,CACzC,OAAO,CAAC,GAAG,CAAC,qCAAqC,EACjD,CAAC,EACD,IAAI,CACL;QACD,wEAAwE;QACxE,yEAAyE;QACzE,8BAA8B,EAAE,YAAY,CAC1C,OAAO,CAAC,GAAG,CAAC,wCAAwC,EACpD,cAAc,CACf;QACD,8BAA8B,EAAE,iBAAiB,CAC/C,OAAO,CAAC,GAAG,CAAC,wCAAwC,EACpD,cAAc,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAC1B,IAAI,CACL;QACD,WAAW,EAAE,qBAAqB;QAClC,iBAAiB,EAAE,iBAAiB,CAClC,qBAAqB,EACrB,OAAO,CAAC,GAAG,CAAC,0BAA0B,CACvC;QACD,gBAAgB,EAAE,gBAAgB,CAChC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CACtC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
2
+ export type ConnectorErrorCode = "invalid_request" | "provider_unavailable" | "unknown" | "file_transfer_failed";
3
+ export interface ConnectorFailure {
4
+ code: ConnectorErrorCode;
5
+ error: string;
6
+ }
7
+ export declare const connectorRepeatGuidance = "Do not repeat this exact call. If the error names an input to correct, change only that input. Otherwise, tell the user what happened.";
8
+ export declare function connectorErrorText(failure: ConnectorFailure): string;
9
+ export declare function repeatedConnectorFailure(code: ConnectorErrorCode): ConnectorFailure;
10
+ /** Conservative effect classification; SQL execution can mutate even through a CTE. */
11
+ export declare function connectorWrites(name: string): boolean;
12
+ export declare function completedConnectorWrite(running: boolean): ConnectorFailure;
13
+ /** Inspect provider error envelopes, never words inside successful document data. */
14
+ export declare function connectorResultFailure(result: CallToolResult, write: boolean, name?: string): ConnectorFailure | undefined;
15
+ /** Prefixes and guidance are captured; provider details are capped at 400 code points. */
16
+ export declare function describeConnectorFailure(reason: string, write: boolean, rawCode?: unknown, rawStatus?: unknown): ConnectorFailure;
@@ -0,0 +1,69 @@
1
+ export const connectorRepeatGuidance = "Do not repeat this exact call. If the error names an input to correct, change only that input. Otherwise, tell the user what happened.";
2
+ const invalidGuidance = "Do not repeat this exact call. Change the arguments, or tell the user what happened.";
3
+ const writeGuidance = "The call may have already taken effect. Do not repeat it. Check the state in the app first.";
4
+ export function connectorErrorText(failure) {
5
+ return JSON.stringify({ status: "error", code: failure.code, error: failure.error });
6
+ }
7
+ export function repeatedConnectorFailure(code) {
8
+ return { code, error: "This exact call already failed in this reply, so Arena did not send it again. " +
9
+ (code === "invalid_request" ? invalidGuidance : connectorRepeatGuidance) };
10
+ }
11
+ /** Conservative effect classification; SQL execution can mutate even through a CTE. */
12
+ export function connectorWrites(name) {
13
+ const tool = name.split("__")[1] || name;
14
+ return !/^(get_|list_|search(?:_|$)|query_|find_|read_|download_|export_|validate_|check_|batch_get_|count_)/.test(tool);
15
+ }
16
+ export function completedConnectorWrite(running) {
17
+ return { code: "unknown", error: running
18
+ ? "This exact write is still running in this reply, so Arena did not send it again. Wait for the first call to finish before you act on its result."
19
+ : "This exact write already completed in this reply, so Arena did not send it again. Use the first result." };
20
+ }
21
+ function object(value) {
22
+ return value !== null && typeof value === "object" && !Array.isArray(value) ? value : undefined;
23
+ }
24
+ /** Inspect provider error envelopes, never words inside successful document data. */
25
+ export function connectorResultFailure(result, write, name) {
26
+ for (const part of result.content) {
27
+ if (part.type !== "text")
28
+ continue;
29
+ let body;
30
+ try {
31
+ body = object(JSON.parse(part.text));
32
+ }
33
+ catch { /* MCP errors may be plain text. */ }
34
+ // The capture returns extraction availability as data, including
35
+ // success:false / extraction_status:failed|unsupported / error:null.
36
+ const extractionReport = name === "google_drive__read_file_text" && body?.error === null
37
+ && ["failed", "unsupported"].includes(String(body?.extraction_status));
38
+ if (result.isError || (!extractionReport && body?.success === false) || body?.status === "error" || body?.error_code || body?.error_reason || body?.error) {
39
+ const nested = object(body?.error);
40
+ const reason = body?.error_reason ?? nested?.message ?? nested?.error_reason ?? body?.error ?? body?.message;
41
+ const detail = typeof reason === "string" ? reason : result.isError ? part.text : "The provider returned an error.";
42
+ return describeConnectorFailure(detail, write, body?.error_code ?? nested?.code, body?.status_code ?? nested?.status_code);
43
+ }
44
+ }
45
+ if (result.isError)
46
+ return describeConnectorFailure("The provider returned an error.", write);
47
+ return undefined;
48
+ }
49
+ /** Prefixes and guidance are captured; provider details are capped at 400 code points. */
50
+ export function describeConnectorFailure(reason, write, rawCode, rawStatus) {
51
+ const detailChars = Array.from(reason);
52
+ const detail = detailChars.slice(0, 400).join("") + (detailChars.length > 400 ? "…" : "");
53
+ const code = String(rawCode || "").toLowerCase();
54
+ const status = Number(rawStatus) || Number(/\b(400|401|403|404|409|422|429|5\d\d)\b/.exec(reason)?.[1]);
55
+ if (status === 404 || /not_found|notfound/.test(code)) {
56
+ return { code: "invalid_request", error: `The app could not find the target for this call. The app reported: ${detail} Use the exact target ID from a list or search result, or from the user. Never reconstruct or modify it. Find the target again by name or another supported attribute with a list or search tool. Copy the returned ID exactly. Do not repeat the identical failed call or change unrelated arguments to bypass the block. If access still fails, explain the issue or use ask_user when clarification is necessary.` };
57
+ }
58
+ if (status === 401 || status === 403 || /permission|access_denied|forbidden|unauthorized/.test(code)) {
59
+ return { code: "invalid_request", error: `The app denied access for this call. The app reported: ${detail} Do not repeat this exact call. Other arguments or flags for the same target do not fix an access denial. Tell the user what happened.` };
60
+ }
61
+ if ([400, 409, 422].includes(status) || /invalid|validation|bad_request|unsupported_operation/.test(code)) {
62
+ return { code: "invalid_request", error: `The app rejected the arguments for this tool. The app reported: ${detail} ${invalidGuidance}` };
63
+ }
64
+ const unavailable = status === 429 || status >= 500 || /unavailable|timeout|rate_limit|credential/.test(code)
65
+ || /credential refresh|timed? out|timeout/i.test(reason);
66
+ return { code: unavailable ? "provider_unavailable" : "unknown",
67
+ error: `${unavailable ? "The app is unavailable." : "The tool call failed."} The app reported: ${detail} ${write ? writeGuidance : connectorRepeatGuidance}` };
68
+ }
69
+ //# sourceMappingURL=connector-errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connector-errors.js","sourceRoot":"","sources":["../src/connector-errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
2
+ import type { MergeConnectorConfig } from "./connector-mcp.js";
3
+ export declare const connectorFileLimit = 104857600;
4
+ export declare const connectorUploadTools: Set<string>;
5
+ export declare const connectorDownloadTools: Set<string>;
6
+ export declare class ConnectorFileError extends Error {
7
+ readonly cacheFailure: boolean;
8
+ constructor(message: string, cacheFailure?: boolean);
9
+ }
10
+ export declare function oversizedConnectorDownload(size: number): ConnectorFileError;
11
+ export declare function connectorApiBase(config: MergeConnectorConfig): URL;
12
+ export declare function connectorResultObjects(result: CallToolResult): Record<string, any>[];
13
+ export interface ConnectorFileOptions {
14
+ workspace?: string;
15
+ resolvePath?: (raw: string) => Promise<string>;
16
+ }
17
+ /** File bytes go through Merge's files API, never through the model context. */
18
+ export declare class ConnectorFiles {
19
+ private readonly config;
20
+ private readonly options;
21
+ private readonly signal?;
22
+ private uploadBlocked?;
23
+ constructor(config: MergeConnectorConfig, options: ConnectorFileOptions, signal?: AbortSignal | undefined);
24
+ reset(): void;
25
+ restoreFailure(message: string): void;
26
+ private requestSignal;
27
+ private fileUrl;
28
+ private uploadFailure;
29
+ upload(name: string, args: Record<string, any>): Promise<Record<string, any>>;
30
+ download(name: string, result: CallToolResult, args: Record<string, any>): Promise<string | undefined>;
31
+ }
@@ -0,0 +1,249 @@
1
+ import { constants } from "node:fs";
2
+ import { mkdir, open, rename, rm } from "node:fs/promises";
3
+ import path from "node:path";
4
+ import { randomUUID } from "node:crypto";
5
+ import mime from "mime/lite";
6
+ import { connectorRepeatGuidance } from "./connector-errors.js";
7
+ export const connectorFileLimit = 104_857_600;
8
+ export const connectorUploadTools = new Set(["google_drive__upload_file", "dropbox__upload_file", "gmail__create_draft"]);
9
+ export const connectorDownloadTools = new Set(["google_drive__download_file", "google_drive__export_file", "dropbox__get_file_content", "gmail__get_attachment"]);
10
+ export class ConnectorFileError extends Error {
11
+ cacheFailure;
12
+ constructor(message, cacheFailure = false) {
13
+ super(message);
14
+ this.cacheFailure = cacheFailure;
15
+ }
16
+ }
17
+ export function oversizedConnectorDownload(size) {
18
+ return new ConnectorFileError(`Arena did not send this download. File metadata reports ${size} bytes, more than the 100 MiB (104857600 byte) workspace file limit. Tell the user that the file is too large. Share its Drive link if available.`, true);
19
+ }
20
+ export function connectorApiBase(config) {
21
+ const url = new URL(config.apiBase || "https://ah-api.merge.dev");
22
+ const loopback = ["localhost", "127.0.0.1", "[::1]"].includes(url.hostname);
23
+ if ((url.protocol !== "https:" && !(url.protocol === "http:" && loopback)) ||
24
+ url.username || url.password || url.search || url.hash) {
25
+ throw new Error("ARENA_MERGE_API_BASE must be an HTTPS origin (HTTP loopback is allowed for testing)");
26
+ }
27
+ return url;
28
+ }
29
+ export function connectorResultObjects(result) {
30
+ return result.content.flatMap(part => {
31
+ if (part.type !== "text")
32
+ return [];
33
+ try {
34
+ const value = JSON.parse(part.text);
35
+ return value && typeof value === "object" && !Array.isArray(value) ? [value] : [];
36
+ }
37
+ catch {
38
+ return [];
39
+ }
40
+ });
41
+ }
42
+ /** File bytes go through Merge's files API, never through the model context. */
43
+ export class ConnectorFiles {
44
+ config;
45
+ options;
46
+ signal;
47
+ uploadBlocked;
48
+ constructor(config, options, signal) {
49
+ this.config = config;
50
+ this.options = options;
51
+ this.signal = signal;
52
+ }
53
+ reset() { this.uploadBlocked = undefined; }
54
+ restoreFailure(message) {
55
+ if (message.startsWith("Merge is rate-limiting file uploads."))
56
+ this.uploadBlocked = message;
57
+ }
58
+ requestSignal() {
59
+ const timeout = AbortSignal.timeout(this.config.timeoutMs ?? 60_000);
60
+ return this.signal ? AbortSignal.any([this.signal, timeout]) : timeout;
61
+ }
62
+ fileUrl(raw, action) {
63
+ const base = connectorApiBase(this.config), url = new URL(raw);
64
+ const prefix = `${base.pathname.replace(/\/$/, "")}/api/v1/files/`;
65
+ // The files service returns authenticated same-origin URLs. Never forward
66
+ // the access key to a connector-supplied host or through a redirect.
67
+ if (url.origin !== base.origin || !url.pathname.startsWith(prefix) || !url.pathname.endsWith(`/${action}/`)
68
+ || url.username || url.password || url.search || url.hash)
69
+ throw new ConnectorFileError("The connector returned an invalid file-transfer URL.");
70
+ return url;
71
+ }
72
+ async uploadFailure(response, rawPath) {
73
+ if (response.status === 429) {
74
+ const seconds = Math.max(1, Number(response.headers.get("retry-after")) || 15);
75
+ this.uploadBlocked = `Merge is rate-limiting file uploads. Arena did not send this file to the app. Do not upload more files in this reply. Tell the user that the upload limit was reached, and that they can try again in at least ${seconds} seconds.`;
76
+ throw new ConnectorFileError(this.uploadBlocked);
77
+ }
78
+ const text = await response.text();
79
+ if (/security.{0,30}(?:filter|block)|content.{0,30}block|guardrail/i.test(text)) {
80
+ throw new ConnectorFileError(`A security filter at the connector provider blocked the file at ${JSON.stringify(rawPath)} because of its content. The file was not sent. Do not send this content again, and do not change it to get past the filter. Tell the user that the connector provider blocked it.`, true);
81
+ }
82
+ throw new ConnectorFileError(`Arena could not upload the workspace file (HTTP ${response.status}), so it did not send the file to the app. ${connectorRepeatGuidance}`);
83
+ }
84
+ async upload(name, args) {
85
+ const input = args.input;
86
+ if (!connectorUploadTools.has(name) || !input || typeof input.file_path !== "string")
87
+ return args;
88
+ if (this.uploadBlocked)
89
+ throw new ConnectorFileError(this.uploadBlocked);
90
+ const rawPath = input.file_path;
91
+ let handle;
92
+ let phase = "read";
93
+ try {
94
+ if (!this.options.resolvePath)
95
+ throw new Error("No workspace resolver");
96
+ const target = await this.options.resolvePath(rawPath);
97
+ handle = await open(target, constants.O_RDONLY | constants.O_NOFOLLOW);
98
+ const metadata = await handle.stat();
99
+ if (!metadata.isFile())
100
+ throw new Error("Not a regular file");
101
+ if (!metadata.size)
102
+ throw new ConnectorFileError(`The file at ${JSON.stringify(rawPath)} is empty. The app rejects an empty file.`);
103
+ if (metadata.size > connectorFileLimit)
104
+ throw new ConnectorFileError(`The file at ${JSON.stringify(rawPath)} is larger than the 100 MiB (104857600 byte) workspace file limit. Arena did not send it to the app. Compress or split the file, or tell the user that it is too large.`);
105
+ const filename = path.basename(target), contentType = input.content_mime_type || mime.getType(filename) || "application/octet-stream";
106
+ const base = connectorApiBase(this.config);
107
+ base.pathname = `${base.pathname.replace(/\/$/, "")}/api/v1/files/`;
108
+ const headers = { Authorization: `Bearer ${this.config.accessKey}`, "Content-Type": "application/json" };
109
+ phase = "upload";
110
+ const reservation = await fetch(base, { method: "POST", headers, body: JSON.stringify({ filename, content_type: contentType, size_bytes: metadata.size }),
111
+ signal: this.requestSignal(), redirect: "error" });
112
+ if (!reservation.ok)
113
+ await this.uploadFailure(reservation, rawPath);
114
+ const slot = await reservation.json();
115
+ if (!slot.file_reference || !slot.upload?.url || slot.upload.method !== "PUT")
116
+ throw new ConnectorFileError("The connector provider returned an invalid upload reservation.");
117
+ if (slot.max_size_bytes !== undefined && metadata.size > slot.max_size_bytes)
118
+ throw new ConnectorFileError("The workspace file exceeds the connector provider's upload limit.");
119
+ const stream = handle.createReadStream({ autoClose: false, end: metadata.size - 1 });
120
+ let uploaded;
121
+ try {
122
+ uploaded = await fetch(this.fileUrl(slot.upload.url, "upload"), { method: "PUT", headers: { Authorization: headers.Authorization,
123
+ "Content-Type": contentType, "Content-Length": String(metadata.size) }, body: stream,
124
+ duplex: "half", signal: this.requestSignal(), redirect: "error" });
125
+ }
126
+ finally {
127
+ stream.destroy();
128
+ }
129
+ if (!uploaded.ok)
130
+ await this.uploadFailure(uploaded, rawPath);
131
+ const receipt = await uploaded.json();
132
+ if (receipt.size_bytes !== undefined && receipt.size_bytes !== metadata.size)
133
+ throw new ConnectorFileError("The connector provider received an incomplete file. Arena did not send it to the app.");
134
+ const result = structuredClone(args);
135
+ delete result.input.file_path;
136
+ result.input.file_reference = slot.file_reference;
137
+ if (name === "gmail__create_draft")
138
+ result.input.file_reference_filename = filename;
139
+ return result;
140
+ }
141
+ catch (error) {
142
+ if (this.signal?.aborted || error instanceof ConnectorFileError)
143
+ throw error;
144
+ if (phase === "upload")
145
+ throw new ConnectorFileError(`The workspace file upload failed before it was sent to the app. ${connectorRepeatGuidance}`);
146
+ if (error.code === "ENOENT")
147
+ throw new ConnectorFileError(`No file exists at ${JSON.stringify(rawPath)}. List the workspace to find the right path.`);
148
+ throw new ConnectorFileError(`Arena could not read the file from the workspace, so it did not send the file to the app. ${connectorRepeatGuidance}`);
149
+ }
150
+ finally {
151
+ await handle?.close();
152
+ }
153
+ }
154
+ async download(name, result, args) {
155
+ if (!connectorDownloadTools.has(name))
156
+ return undefined;
157
+ const objects = connectorResultObjects(result);
158
+ const payload = objects.map(value => value.data && typeof value.data === "object" ? value.data : value)
159
+ .find(value => value.download || (typeof value.content === "string" && value.encoding));
160
+ if (!payload)
161
+ return undefined;
162
+ if (!this.options.resolvePath)
163
+ throw new ConnectorFileError("No workspace is configured for connector file downloads.");
164
+ const transfer = payload.download;
165
+ const originalName = transfer?.filename || payload.name || payload.filename || args.input?.filename || (args.input?.path && path.posix.basename(args.input.path));
166
+ if (typeof originalName !== "string" || !originalName)
167
+ throw new ConnectorFileError("The connector did not return a file name.");
168
+ const filename = path.posix.basename(originalName.replaceAll("\\", "/")).replace(/[\x00-\x1f\x7f]/g, "_");
169
+ if (!filename || filename === "." || filename === "..")
170
+ throw new ConnectorFileError("The connector returned an invalid file name.");
171
+ const expectedSize = Number(transfer?.size_bytes ?? payload.size);
172
+ if (expectedSize > connectorFileLimit)
173
+ throw oversizedConnectorDownload(expectedSize);
174
+ const relative = `${name.split("__")[0]}/${filename}`;
175
+ let temporary;
176
+ let handle;
177
+ try {
178
+ const target = await this.options.resolvePath(relative);
179
+ await mkdir(path.dirname(target), { recursive: true });
180
+ // Resolve again after creating the directory; never follow a changed parent.
181
+ if (await this.options.resolvePath(relative) !== target)
182
+ throw new Error("Download directory changed");
183
+ temporary = path.join(path.dirname(target), `.arena-download-${randomUUID()}`);
184
+ handle = await open(temporary, "wx", 0o600);
185
+ let size = 0;
186
+ const append = async (chunk) => {
187
+ size += chunk.byteLength;
188
+ if (size > connectorFileLimit)
189
+ throw oversizedConnectorDownload(size);
190
+ await handle.writeFile(chunk);
191
+ };
192
+ let contentType = transfer?.content_type || payload.mime_type || payload.content_type || "application/octet-stream";
193
+ if (transfer) {
194
+ if (transfer.method !== "GET" || typeof transfer.url !== "string")
195
+ throw new ConnectorFileError("The connector returned an invalid download descriptor.");
196
+ const response = await fetch(this.fileUrl(transfer.url, "download"), { headers: { Authorization: `Bearer ${this.config.accessKey}` },
197
+ signal: this.requestSignal(), redirect: "error" });
198
+ if (!response.ok || !response.body)
199
+ throw new ConnectorFileError(`The connector file download failed (HTTP ${response.status}).`);
200
+ const length = Number(response.headers.get("content-length"));
201
+ if (length > connectorFileLimit) {
202
+ await response.body.cancel();
203
+ throw oversizedConnectorDownload(length);
204
+ }
205
+ contentType = transfer.content_type || response.headers.get("content-type") || contentType;
206
+ const reader = response.body.getReader();
207
+ try {
208
+ while (true) {
209
+ const next = await reader.read();
210
+ if (next.done)
211
+ break;
212
+ await append(next.value);
213
+ }
214
+ }
215
+ finally {
216
+ await reader.cancel().catch(() => { });
217
+ reader.releaseLock();
218
+ }
219
+ }
220
+ else {
221
+ const encoding = String(payload.encoding).toLowerCase();
222
+ if (!["utf-8", "utf8", "text", "base64", "base64url"].includes(encoding))
223
+ throw new ConnectorFileError("The connector returned an unsupported file encoding.");
224
+ if (encoding.startsWith("base64") && !/^[a-zA-Z0-9+/_=\-\s]*$/.test(payload.content))
225
+ throw new ConnectorFileError("The connector returned invalid base64 file bytes.");
226
+ await append(Buffer.from(payload.content, encoding === "base64url" ? "base64url" : encoding === "base64" ? "base64" : "utf8"));
227
+ }
228
+ if (Number.isFinite(expectedSize) && expectedSize >= 0 && expectedSize !== size)
229
+ throw new ConnectorFileError("The connector file download is incomplete. Arena did not save a partial file.");
230
+ await handle.close();
231
+ handle = undefined;
232
+ this.signal?.throwIfAborted();
233
+ await rename(temporary, target);
234
+ temporary = undefined;
235
+ return JSON.stringify({ file_path: relative, name: filename, mime_type: contentType, size });
236
+ }
237
+ catch (error) {
238
+ if (this.signal?.aborted || error instanceof ConnectorFileError)
239
+ throw error;
240
+ throw new ConnectorFileError(`Arena could not save the connector file in the workspace. ${connectorRepeatGuidance}`);
241
+ }
242
+ finally {
243
+ await handle?.close();
244
+ if (temporary)
245
+ await rm(temporary, { force: true }).catch(() => { });
246
+ }
247
+ }
248
+ }
249
+ //# sourceMappingURL=connector-files.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connector-files.js","sourceRoot":"","sources":["../src/connector-files.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ type Schema = Record<string, any>;
2
+ /** Captured model schemas use anyOf for optional objects. Keep their property order. */
3
+ export declare function connectorSchemaValue(value: unknown, schema: Schema, root?: Schema): unknown;
4
+ /** Documented Notion JSON fields accept an object or a well-formed JSON string. */
5
+ export declare function normalizeConnectorInput(name: string, value: unknown): unknown;
6
+ /** The MCP schema requires explicit nullable fields that Arena omits from its model contract.
7
+ * Apply these only to the backend request, without changing model-visible history.
8
+ */
9
+ export declare function connectorBackendInput(value: unknown, schema: Schema, root?: Schema): unknown;
10
+ export {};