nodebench-mcp 2.11.0 → 2.14.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 (67) hide show
  1. package/NODEBENCH_AGENTS.md +809 -809
  2. package/README.md +443 -431
  3. package/STYLE_GUIDE.md +477 -477
  4. package/dist/__tests__/evalHarness.test.js +1 -1
  5. package/dist/__tests__/gaiaCapabilityAudioEval.test.js +9 -14
  6. package/dist/__tests__/gaiaCapabilityAudioEval.test.js.map +1 -1
  7. package/dist/__tests__/gaiaCapabilityEval.test.js +88 -14
  8. package/dist/__tests__/gaiaCapabilityEval.test.js.map +1 -1
  9. package/dist/__tests__/gaiaCapabilityFilesEval.test.js +9 -5
  10. package/dist/__tests__/gaiaCapabilityFilesEval.test.js.map +1 -1
  11. package/dist/__tests__/gaiaCapabilityMediaEval.test.js +165 -17
  12. package/dist/__tests__/gaiaCapabilityMediaEval.test.js.map +1 -1
  13. package/dist/__tests__/helpers/answerMatch.d.ts +36 -7
  14. package/dist/__tests__/helpers/answerMatch.js +224 -35
  15. package/dist/__tests__/helpers/answerMatch.js.map +1 -1
  16. package/dist/__tests__/helpers/textLlm.d.ts +1 -1
  17. package/dist/__tests__/presetRealWorldBench.test.d.ts +1 -0
  18. package/dist/__tests__/presetRealWorldBench.test.js +850 -0
  19. package/dist/__tests__/presetRealWorldBench.test.js.map +1 -0
  20. package/dist/__tests__/tools.test.js +20 -7
  21. package/dist/__tests__/tools.test.js.map +1 -1
  22. package/dist/__tests__/toolsetGatingEval.test.js +21 -11
  23. package/dist/__tests__/toolsetGatingEval.test.js.map +1 -1
  24. package/dist/db.js +21 -0
  25. package/dist/db.js.map +1 -1
  26. package/dist/index.js +424 -327
  27. package/dist/index.js.map +1 -1
  28. package/dist/tools/agentBootstrapTools.js +258 -258
  29. package/dist/tools/boilerplateTools.js +144 -144
  30. package/dist/tools/cCompilerBenchmarkTools.js +33 -33
  31. package/dist/tools/documentationTools.js +59 -59
  32. package/dist/tools/flywheelTools.js +6 -6
  33. package/dist/tools/gitWorkflowTools.d.ts +11 -0
  34. package/dist/tools/gitWorkflowTools.js +580 -0
  35. package/dist/tools/gitWorkflowTools.js.map +1 -0
  36. package/dist/tools/learningTools.js +26 -26
  37. package/dist/tools/localFileTools.d.ts +3 -0
  38. package/dist/tools/localFileTools.js +3164 -125
  39. package/dist/tools/localFileTools.js.map +1 -1
  40. package/dist/tools/metaTools.js +82 -0
  41. package/dist/tools/metaTools.js.map +1 -1
  42. package/dist/tools/parallelAgentTools.js +228 -0
  43. package/dist/tools/parallelAgentTools.js.map +1 -1
  44. package/dist/tools/patternTools.d.ts +13 -0
  45. package/dist/tools/patternTools.js +456 -0
  46. package/dist/tools/patternTools.js.map +1 -0
  47. package/dist/tools/reconTools.js +31 -31
  48. package/dist/tools/selfEvalTools.js +44 -44
  49. package/dist/tools/seoTools.d.ts +16 -0
  50. package/dist/tools/seoTools.js +866 -0
  51. package/dist/tools/seoTools.js.map +1 -0
  52. package/dist/tools/sessionMemoryTools.d.ts +15 -0
  53. package/dist/tools/sessionMemoryTools.js +348 -0
  54. package/dist/tools/sessionMemoryTools.js.map +1 -0
  55. package/dist/tools/toolRegistry.d.ts +4 -0
  56. package/dist/tools/toolRegistry.js +489 -0
  57. package/dist/tools/toolRegistry.js.map +1 -1
  58. package/dist/tools/toonTools.d.ts +15 -0
  59. package/dist/tools/toonTools.js +94 -0
  60. package/dist/tools/toonTools.js.map +1 -0
  61. package/dist/tools/verificationTools.js +41 -41
  62. package/dist/tools/visionTools.js +17 -17
  63. package/dist/tools/voiceBridgeTools.d.ts +15 -0
  64. package/dist/tools/voiceBridgeTools.js +1427 -0
  65. package/dist/tools/voiceBridgeTools.js.map +1 -0
  66. package/dist/tools/webTools.js +18 -18
  67. package/package.json +102 -101
@@ -8,34 +8,12 @@ function normalizeBasic(value) {
8
8
  .toLowerCase();
9
9
  }
10
10
  const SIMPLE_NUMBER_WORDS = {
11
- zero: 0,
12
- one: 1,
13
- two: 2,
14
- three: 3,
15
- four: 4,
16
- five: 5,
17
- six: 6,
18
- seven: 7,
19
- eight: 8,
20
- nine: 9,
21
- ten: 10,
22
- eleven: 11,
23
- twelve: 12,
24
- thirteen: 13,
25
- fourteen: 14,
26
- fifteen: 15,
27
- sixteen: 16,
28
- seventeen: 17,
29
- eighteen: 18,
30
- nineteen: 19,
31
- twenty: 20,
32
- thirty: 30,
33
- forty: 40,
34
- fifty: 50,
35
- sixty: 60,
36
- seventy: 70,
37
- eighty: 80,
38
- ninety: 90,
11
+ zero: 0, one: 1, two: 2, three: 3, four: 4, five: 5,
12
+ six: 6, seven: 7, eight: 8, nine: 9, ten: 10,
13
+ eleven: 11, twelve: 12, thirteen: 13, fourteen: 14, fifteen: 15,
14
+ sixteen: 16, seventeen: 17, eighteen: 18, nineteen: 19,
15
+ twenty: 20, thirty: 30, forty: 40, fifty: 50,
16
+ sixty: 60, seventy: 70, eighty: 80, ninety: 90,
39
17
  };
40
18
  function tryParseLeadingInt(text) {
41
19
  const m = String(text ?? "").match(/-?\d+/);
@@ -48,15 +26,11 @@ function expectedIsStrictInt(expectedNorm) {
48
26
  return /^-?\d+$/.test(expectedNorm);
49
27
  }
50
28
  /**
51
- * GAIA capability scoring helper.
29
+ * GAIA capability scoring helper (deterministic, synchronous).
52
30
  *
53
- * We keep this intentionally conservative:
31
+ * Conservative rules:
54
32
  * - Case/whitespace normalization for all answers
55
- * - For integer-only expected answers, allow:
56
- * - leading integer inside the model output (e.g. "8 clients" -> 8)
57
- * - simple number words (e.g. "eight" -> 8)
58
- *
59
- * We do NOT loosen decimals/currency formatting by default to avoid inflating scores.
33
+ * - For integer-only expected answers: leading integer extraction + number words
60
34
  */
61
35
  export function answersMatch(expectedRaw, actualRaw) {
62
36
  const expected = normalizeBasic(expectedRaw);
@@ -75,4 +49,219 @@ export function answersMatch(expectedRaw, actualRaw) {
75
49
  }
76
50
  return actual === expected;
77
51
  }
52
+ // ---------- LLM Judge ----------
53
+ const JUDGE_SYSTEM_PROMPT = `You are a strict but fair answer-equivalence judge for the GAIA benchmark.
54
+
55
+ Given:
56
+ - EXPECTED: the ground-truth answer
57
+ - ACTUAL: the candidate answer
58
+
59
+ Decide whether ACTUAL is semantically equivalent to EXPECTED.
60
+
61
+ Rules:
62
+ 1. MATCH if both convey the same factual content, even with:
63
+ - Minor typos or spelling variations (e.g. "Ploybius" vs "Polybius")
64
+ - Different punctuation, capitalization, or trailing periods
65
+ - Reworded but equivalent phrasing (e.g. "85 points" vs "85")
66
+ - Number format variations (e.g. "1,000" vs "1000")
67
+ 2. NO MATCH if:
68
+ - The factual content differs (different numbers, names, dates)
69
+ - One answer is a subset but missing key information
70
+ - The answers are about different things entirely
71
+
72
+ Respond with ONLY a single JSON object:
73
+ {"match": true, "reason": "brief explanation"}
74
+ or
75
+ {"match": false, "reason": "brief explanation"}`;
76
+ // ---------- OpenRouter free model auto-discovery ----------
77
+ /**
78
+ * Free models on OpenRouter (ordered by preference for judge tasks).
79
+ * These require an OPENROUTER_API_KEY but cost $0.
80
+ */
81
+ const OPENROUTER_FREE_MODELS = [
82
+ "google/gemini-2.0-flash-exp:free",
83
+ "meta-llama/llama-3.3-70b-instruct:free",
84
+ "qwen/qwen-2.5-72b-instruct:free",
85
+ "mistralai/mistral-small-3.1-24b-instruct:free",
86
+ ];
87
+ let _cachedFreeJudge = null;
88
+ /**
89
+ * Try to create a free OpenRouter judge client.
90
+ * Uses OpenAI-compatible API. Returns null if no API key or all models fail.
91
+ */
92
+ async function tryCreateOpenRouterFreeJudge() {
93
+ if (_cachedFreeJudge === "unavailable")
94
+ return null;
95
+ if (_cachedFreeJudge)
96
+ return _cachedFreeJudge;
97
+ const apiKey = process.env.OPENROUTER_API_KEY ||
98
+ process.env.OPENROUTER_KEY ||
99
+ "";
100
+ if (!apiKey) {
101
+ _cachedFreeJudge = "unavailable";
102
+ return null;
103
+ }
104
+ // Probe the first available model with a tiny request
105
+ for (const model of OPENROUTER_FREE_MODELS) {
106
+ try {
107
+ const response = await fetch("https://openrouter.ai/api/v1/chat/completions", {
108
+ method: "POST",
109
+ headers: {
110
+ "Authorization": `Bearer ${apiKey}`,
111
+ "Content-Type": "application/json",
112
+ "HTTP-Referer": "https://github.com/nodebench/nodebench-ai",
113
+ "X-Title": "nodebench-gaia-judge",
114
+ },
115
+ body: JSON.stringify({
116
+ model,
117
+ messages: [{ role: "user", content: "Reply with only: OK" }],
118
+ temperature: 0,
119
+ max_tokens: 5,
120
+ }),
121
+ });
122
+ if (!response.ok)
123
+ continue;
124
+ const data = (await response.json());
125
+ const text = data?.choices?.[0]?.message?.content ?? "";
126
+ if (!text)
127
+ continue;
128
+ // Model works — create a reusable client
129
+ const client = {
130
+ provider: "openrouter",
131
+ model,
132
+ generateText: async ({ prompt, temperature, maxOutputTokens }) => {
133
+ const res = await fetch("https://openrouter.ai/api/v1/chat/completions", {
134
+ method: "POST",
135
+ headers: {
136
+ "Authorization": `Bearer ${apiKey}`,
137
+ "Content-Type": "application/json",
138
+ "HTTP-Referer": "https://github.com/nodebench/nodebench-ai",
139
+ "X-Title": "nodebench-gaia-judge",
140
+ },
141
+ body: JSON.stringify({
142
+ model,
143
+ messages: [{ role: "user", content: prompt }],
144
+ temperature: typeof temperature === "number" ? temperature : 0,
145
+ max_tokens: typeof maxOutputTokens === "number" ? maxOutputTokens : 200,
146
+ }),
147
+ });
148
+ if (!res.ok) {
149
+ const errText = await res.text().catch(() => "");
150
+ throw new Error(`OpenRouter ${res.status}: ${errText.slice(0, 200)}`);
151
+ }
152
+ const json = (await res.json());
153
+ return String(json?.choices?.[0]?.message?.content ?? "").trim();
154
+ },
155
+ };
156
+ _cachedFreeJudge = client;
157
+ return client;
158
+ }
159
+ catch {
160
+ continue;
161
+ }
162
+ }
163
+ _cachedFreeJudge = "unavailable";
164
+ return null;
165
+ }
166
+ /**
167
+ * Auto-discover the best available judge client.
168
+ *
169
+ * Priority:
170
+ * 1. OpenRouter free model ($0, just needs OPENROUTER_API_KEY)
171
+ * 2. Provided paid LLM client (Gemini/OpenAI/Anthropic)
172
+ * 3. null (deterministic-only fallback)
173
+ */
174
+ export async function autoDiscoverJudge(paidFallback) {
175
+ // Try free first
176
+ const free = await tryCreateOpenRouterFreeJudge();
177
+ if (free)
178
+ return free;
179
+ // Fall back to paid client (if available and not a noop)
180
+ if (paidFallback && paidFallback.provider !== "none")
181
+ return paidFallback;
182
+ return null;
183
+ }
184
+ /**
185
+ * Tiered answer matching: deterministic first, LLM judge fallback.
186
+ *
187
+ * Tier 0 (instant, free): `answersMatch()` — normalization + integer fuzzy
188
+ * Tier 1 (async, free): OpenRouter free model judge — semantic equivalence
189
+ * Tier 2 (async, paid): Provided LLM client — semantic equivalence
190
+ * Tier 3 (instant, free): No API key → deterministic only
191
+ *
192
+ * If no `judge` client is provided, auto-discovers via `autoDiscoverJudge()`.
193
+ */
194
+ export async function answersMatchWithJudge(expectedRaw, actualRaw, judge) {
195
+ // Tier 0: deterministic
196
+ const detMatch = answersMatch(expectedRaw, actualRaw);
197
+ if (detMatch) {
198
+ return { deterministicMatch: true, judgeInvoked: false, match: true };
199
+ }
200
+ // If no actual answer was produced, skip the judge
201
+ const actual = normalizeBasic(actualRaw);
202
+ if (!actual) {
203
+ return { deterministicMatch: false, judgeInvoked: false, match: false };
204
+ }
205
+ // Resolve judge: use provided client or auto-discover
206
+ const resolvedJudge = judge !== undefined ? judge : await autoDiscoverJudge();
207
+ if (!resolvedJudge || resolvedJudge.provider === "none") {
208
+ return { deterministicMatch: false, judgeInvoked: false, match: false };
209
+ }
210
+ try {
211
+ const prompt = [
212
+ JUDGE_SYSTEM_PROMPT,
213
+ "",
214
+ `EXPECTED: ${expectedRaw}`,
215
+ `ACTUAL: ${actualRaw}`,
216
+ ].join("\n");
217
+ const response = await resolvedJudge.generateText({
218
+ prompt,
219
+ temperature: 0,
220
+ maxOutputTokens: 200,
221
+ });
222
+ const parsed = parseJudgeResponse(response);
223
+ return {
224
+ deterministicMatch: false,
225
+ judgeInvoked: true,
226
+ judgeProvider: `${resolvedJudge.provider}:${resolvedJudge.model}`,
227
+ match: parsed.match,
228
+ reason: parsed.reason,
229
+ };
230
+ }
231
+ catch (err) {
232
+ return {
233
+ deterministicMatch: false,
234
+ judgeInvoked: true,
235
+ judgeProvider: `${resolvedJudge.provider}:${resolvedJudge.model}`,
236
+ match: false,
237
+ reason: `judge error: ${err?.message ?? String(err)}`,
238
+ };
239
+ }
240
+ }
241
+ function parseJudgeResponse(text) {
242
+ const trimmed = String(text ?? "").trim();
243
+ // Try JSON parse
244
+ const jsonMatch = trimmed.match(/\{[\s\S]*\}/);
245
+ if (jsonMatch) {
246
+ try {
247
+ const obj = JSON.parse(jsonMatch[0]);
248
+ if (typeof obj.match === "boolean") {
249
+ return { match: obj.match, reason: String(obj.reason ?? "") };
250
+ }
251
+ }
252
+ catch {
253
+ // Fall through to heuristic
254
+ }
255
+ }
256
+ // Heuristic fallback
257
+ const lower = trimmed.toLowerCase();
258
+ if (lower.includes('"match": true') || lower.includes('"match":true')) {
259
+ return { match: true, reason: trimmed };
260
+ }
261
+ if (lower.includes('"match": false') || lower.includes('"match":false')) {
262
+ return { match: false, reason: trimmed };
263
+ }
264
+ // Conservative default: no match
265
+ return { match: false, reason: `unparseable judge response: ${trimmed.slice(0, 200)}` };
266
+ }
78
267
  //# sourceMappingURL=answerMatch.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"answerMatch.js","sourceRoot":"","sources":["../../../src/__tests__/helpers/answerMatch.ts"],"names":[],"mappings":"AAAA,SAAS,cAAc,CAAC,KAAa;IACnC,OAAO,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;SACvB,IAAI,EAAE;SACN,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;SAClB,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC;SAC3B,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC;SACrB,WAAW,EAAE,CAAC;AACnB,CAAC;AAED,MAAM,mBAAmB,GAA2B;IAClD,IAAI,EAAE,CAAC;IACP,GAAG,EAAE,CAAC;IACN,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,IAAI,EAAE,CAAC;IACP,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,CAAC;IACR,KAAK,EAAE,CAAC;IACR,IAAI,EAAE,CAAC;IACP,GAAG,EAAE,EAAE;IACP,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,EAAE;IACV,QAAQ,EAAE,EAAE;IACZ,QAAQ,EAAE,EAAE;IACZ,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,EAAE;IACX,SAAS,EAAE,EAAE;IACb,QAAQ,EAAE,EAAE;IACZ,QAAQ,EAAE,EAAE;IACZ,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,EAAE;IACV,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,EAAE;IACT,OAAO,EAAE,EAAE;IACX,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,EAAE;CACX,CAAC;AAEF,SAAS,kBAAkB,CAAC,IAAY;IACtC,MAAM,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACpB,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACpC,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvC,CAAC;AAED,SAAS,mBAAmB,CAAC,YAAoB;IAC/C,OAAO,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CAAC,WAAmB,EAAE,SAAiB;IACjE,MAAM,QAAQ,GAAG,cAAc,CAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,CAAC;IACzC,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAC;IAE5B,IAAI,mBAAmB,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClC,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAClD,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,SAAS,KAAK,IAAI;YAAE,OAAO,SAAS,KAAK,WAAW,CAAC;QAEzD,MAAM,IAAI,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,OAAO,IAAI,KAAK,WAAW,CAAC;QAC1D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,MAAM,KAAK,QAAQ,CAAC;AAC7B,CAAC"}
1
+ {"version":3,"file":"answerMatch.js","sourceRoot":"","sources":["../../../src/__tests__/helpers/answerMatch.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- export type TextLlmProviderName = "gemini" | "openai" | "anthropic";
1
+ export type TextLlmProviderName = "gemini" | "openai" | "anthropic" | "none";
2
2
  export type TextLlmClient = {
3
3
  provider: TextLlmProviderName;
4
4
  model: string;
@@ -0,0 +1 @@
1
+ export {};