@tangle-network/agent-bench 0.8.0 → 0.8.2
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/CHANGELOG.md +8 -0
- package/HARNESS.md +1 -1
- package/dist/adapters.js +4 -0
- package/dist/adapters.js.map +1 -1
- package/dist/benchmarks/mcad-bench.d.ts +106 -0
- package/dist/benchmarks/mcad-bench.js +569 -0
- package/dist/benchmarks/mcad-bench.js.map +1 -0
- package/dist/benchmarks/mcad-cq-bench.d.ts +82 -0
- package/dist/benchmarks/mcad-cq-bench.js +339 -0
- package/dist/benchmarks/mcad-cq-bench.js.map +1 -0
- package/dist/benchmarks/mcad-cq-golds.d.ts +36 -0
- package/dist/benchmarks/mcad-cq-golds.js +342 -0
- package/dist/benchmarks/mcad-cq-golds.js.map +1 -0
- package/dist/benchmarks/mcad-golds.d.ts +20 -0
- package/dist/benchmarks/mcad-golds.js +318 -0
- package/dist/benchmarks/mcad-golds.js.map +1 -0
- package/dist/benchmarks/mcad-tasks.d.ts +66 -0
- package/dist/benchmarks/mcad-tasks.js +508 -0
- package/dist/benchmarks/mcad-tasks.js.map +1 -0
- package/package.json +4 -4
- package/src/adapters.ts +11 -0
- package/src/benchmarks/mcad-bench.test.mts +455 -0
- package/src/benchmarks/mcad-bench.ts +561 -0
- package/src/benchmarks/mcad-cq-bench.ts +423 -0
- package/src/benchmarks/mcad-cq-golds.ts +374 -0
- package/src/benchmarks/mcad-cq.test.mts +386 -0
- package/src/benchmarks/mcad-golds.ts +359 -0
- package/src/benchmarks/mcad-tasks.ts +490 -0
- package/src/swe-arena/gepa-seat.mts +1 -1
|
@@ -0,0 +1,508 @@
|
|
|
1
|
+
//#region src/benchmarks/mcad-tasks.ts
|
|
2
|
+
/** Exported so a sibling adapter can SWAP this preamble for its own deliverable
|
|
3
|
+
* (see `mcad-cq-bench.ts`) by prefix, instead of re-authoring ten prompts and
|
|
4
|
+
* letting the two copies drift. The upstream dimensional text stays the tail. */
|
|
5
|
+
const MCAD_DELIVERABLE = "Author OpenSCAD source (units: mm) that builds exactly this part as one fused solid. Reply with ONLY the OpenSCAD code. Use $fn=96 or finer for round features.";
|
|
6
|
+
const DELIVERABLE = MCAD_DELIVERABLE;
|
|
7
|
+
/** Task 10 is an ASSEMBLY, not a part: its own text says "use separate solid bodies"
|
|
8
|
+
* and its checklist pins nine of them, which the single-solid boilerplate above
|
|
9
|
+
* flatly contradicts. A worker cannot satisfy both, so that task gets this
|
|
10
|
+
* preamble instead; everything else about the deliverable is unchanged. */
|
|
11
|
+
const MCAD_DELIVERABLE_MULTIBODY = "Author OpenSCAD source (units: mm) that builds exactly this assembly as the separate solid bodies listed below. The bodies must stay disjoint — no two of them may touch or intersect. Reply with ONLY the OpenSCAD code. Use $fn=96 or finer for round features.";
|
|
12
|
+
const MCAD_TASKS = [
|
|
13
|
+
{
|
|
14
|
+
id: "calibration-block",
|
|
15
|
+
source: "benchmarks/01-rectangular-calibration-block.md",
|
|
16
|
+
calibrated: true,
|
|
17
|
+
prompt: `${DELIVERABLE}\n\nThe part is a rectangular block, 100 mm long in X, 60 mm wide in Y, and 20 mm tall in Z. Center the block on the XY origin, with the bottom face at Z = 0. Add four vertical through-holes, each 8 mm in diameter, located at X = +/-35 mm and Y = +/-20 mm. Add a 2 mm chamfer to the top perimeter edges only. Do not chamfer the holes.`,
|
|
18
|
+
spec: {
|
|
19
|
+
bbox: {
|
|
20
|
+
x: [99, 101],
|
|
21
|
+
y: [59, 61],
|
|
22
|
+
z: [19, 21]
|
|
23
|
+
},
|
|
24
|
+
volume: [113e3, 117e3],
|
|
25
|
+
solids: [1, 1],
|
|
26
|
+
probesInsideSolid: [
|
|
27
|
+
[
|
|
28
|
+
0,
|
|
29
|
+
0,
|
|
30
|
+
10
|
|
31
|
+
],
|
|
32
|
+
[
|
|
33
|
+
48,
|
|
34
|
+
28,
|
|
35
|
+
10
|
|
36
|
+
],
|
|
37
|
+
[
|
|
38
|
+
35,
|
|
39
|
+
25.5,
|
|
40
|
+
10
|
|
41
|
+
]
|
|
42
|
+
],
|
|
43
|
+
probesOutsideSolid: [
|
|
44
|
+
[
|
|
45
|
+
35,
|
|
46
|
+
20,
|
|
47
|
+
10
|
|
48
|
+
],
|
|
49
|
+
[
|
|
50
|
+
-35,
|
|
51
|
+
20,
|
|
52
|
+
10
|
|
53
|
+
],
|
|
54
|
+
[
|
|
55
|
+
35,
|
|
56
|
+
-20,
|
|
57
|
+
10
|
|
58
|
+
],
|
|
59
|
+
[
|
|
60
|
+
-35,
|
|
61
|
+
-20,
|
|
62
|
+
10
|
|
63
|
+
],
|
|
64
|
+
[
|
|
65
|
+
35,
|
|
66
|
+
23,
|
|
67
|
+
10
|
|
68
|
+
]
|
|
69
|
+
]
|
|
70
|
+
}
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
id: "circular-flange",
|
|
74
|
+
source: "benchmarks/02-circular-flange.md",
|
|
75
|
+
calibrated: true,
|
|
76
|
+
prompt: `${DELIVERABLE}\n\nThe flange is a cylinder with an outside diameter of 80 mm and a thickness of 10 mm. Its axis is vertical along Z, with the bottom face at Z = 0 and the center at X = 0, Y = 0. Add a central vertical through-bore with diameter 30 mm. Add six equally spaced vertical through-holes, each 6 mm in diameter, on a 60 mm bolt-circle diameter. Add a 1.5 mm fillet to the top and bottom outside circular edges.`,
|
|
77
|
+
spec: {
|
|
78
|
+
bbox: {
|
|
79
|
+
x: [79, 81],
|
|
80
|
+
y: [79, 81],
|
|
81
|
+
z: [9, 11]
|
|
82
|
+
},
|
|
83
|
+
volume: [40250, 42750],
|
|
84
|
+
solids: [1, 1],
|
|
85
|
+
minTriangles: 100,
|
|
86
|
+
probesInsideSolid: [[
|
|
87
|
+
22,
|
|
88
|
+
0,
|
|
89
|
+
5
|
|
90
|
+
], [
|
|
91
|
+
16.5,
|
|
92
|
+
0,
|
|
93
|
+
5
|
|
94
|
+
]],
|
|
95
|
+
probesOutsideSolid: [[
|
|
96
|
+
0,
|
|
97
|
+
0,
|
|
98
|
+
5
|
|
99
|
+
], [
|
|
100
|
+
14,
|
|
101
|
+
0,
|
|
102
|
+
5
|
|
103
|
+
]]
|
|
104
|
+
}
|
|
105
|
+
},
|
|
106
|
+
{
|
|
107
|
+
id: "l-bracket",
|
|
108
|
+
source: "benchmarks/03-l-bracket.md",
|
|
109
|
+
calibrated: true,
|
|
110
|
+
prompt: `${DELIVERABLE}\n\nThe bracket has a horizontal base plate 80 mm long in X, 50 mm wide in Y, and 8 mm thick in Z. Center the base plate on the XY origin, with its bottom at Z = 0. Add a vertical back plate along the rear long edge of the base. The back plate is 80 mm long in X, 8 mm thick in Y, and 50 mm tall in Z, rising from the top of the base plate. The back plate should sit along the rear edge at positive Y. Add two vertical through-holes in the base plate, each 6 mm in diameter, located at X = +/-25 mm and Y = -10 mm. Add two horizontal through-holes in the vertical plate, each 6 mm in diameter, located at X = +/-25 mm and Z = 30 mm, passing through the 8 mm thickness of the vertical plate. Add two triangular gussets, each 8 mm thick in X, located at X = +/-20 mm. Each gusset should connect the base plate to the back plate with a right-triangle side profile 30 mm tall and 30 mm deep. Add 2 mm fillets to the outside corner where the base and back plate meet.`,
|
|
111
|
+
spec: {
|
|
112
|
+
bbox: {
|
|
113
|
+
x: [79, 81],
|
|
114
|
+
y: [49, 51],
|
|
115
|
+
z: [57, 59]
|
|
116
|
+
},
|
|
117
|
+
volume: [68200, 72400],
|
|
118
|
+
solids: [1, 1],
|
|
119
|
+
minTriangles: 100,
|
|
120
|
+
probesInsideSolid: [
|
|
121
|
+
[
|
|
122
|
+
0,
|
|
123
|
+
0,
|
|
124
|
+
4
|
|
125
|
+
],
|
|
126
|
+
[
|
|
127
|
+
0,
|
|
128
|
+
21,
|
|
129
|
+
30
|
|
130
|
+
],
|
|
131
|
+
[
|
|
132
|
+
25,
|
|
133
|
+
-5.5,
|
|
134
|
+
4
|
|
135
|
+
],
|
|
136
|
+
[
|
|
137
|
+
25,
|
|
138
|
+
21,
|
|
139
|
+
34.5
|
|
140
|
+
]
|
|
141
|
+
],
|
|
142
|
+
probesOutsideSolid: [
|
|
143
|
+
[
|
|
144
|
+
25,
|
|
145
|
+
-10,
|
|
146
|
+
4
|
|
147
|
+
],
|
|
148
|
+
[
|
|
149
|
+
-25,
|
|
150
|
+
-10,
|
|
151
|
+
4
|
|
152
|
+
],
|
|
153
|
+
[
|
|
154
|
+
25,
|
|
155
|
+
-8,
|
|
156
|
+
4
|
|
157
|
+
],
|
|
158
|
+
[
|
|
159
|
+
25,
|
|
160
|
+
21,
|
|
161
|
+
30
|
|
162
|
+
],
|
|
163
|
+
[
|
|
164
|
+
-25,
|
|
165
|
+
21,
|
|
166
|
+
30
|
|
167
|
+
],
|
|
168
|
+
[
|
|
169
|
+
25,
|
|
170
|
+
21,
|
|
171
|
+
32
|
|
172
|
+
]
|
|
173
|
+
]
|
|
174
|
+
}
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
id: "stepped-shaft-keyway",
|
|
178
|
+
source: "benchmarks/04-stepped-shaft-keyway.md",
|
|
179
|
+
calibrated: true,
|
|
180
|
+
prompt: `${DELIVERABLE}\n\nThe shaft axis runs along X. The total length is 120 mm. The left end center is at X = 0, Y = 0, Z = 0. From X = 0 to X = 30, the shaft diameter is 20 mm. From X = 30 to X = 90, the shaft diameter is 30 mm. From X = 90 to X = 120, the shaft diameter is 20 mm. Add a 1 mm chamfer to both end edges. Add a rectangular keyway slot on the top of the 30 mm diameter middle section. The keyway is 6 mm wide in Y, 3 mm deep in Z, and runs from X = 40 to X = 80.`,
|
|
181
|
+
spec: {
|
|
182
|
+
bbox: {
|
|
183
|
+
x: [119, 121],
|
|
184
|
+
y: [29, 31],
|
|
185
|
+
z: [29, 31]
|
|
186
|
+
},
|
|
187
|
+
volume: [59700, 61050],
|
|
188
|
+
solids: [1, 1],
|
|
189
|
+
minTriangles: 100,
|
|
190
|
+
probesInsideSolid: [
|
|
191
|
+
[
|
|
192
|
+
15,
|
|
193
|
+
0,
|
|
194
|
+
0
|
|
195
|
+
],
|
|
196
|
+
[
|
|
197
|
+
60,
|
|
198
|
+
0,
|
|
199
|
+
0
|
|
200
|
+
],
|
|
201
|
+
[
|
|
202
|
+
105,
|
|
203
|
+
0,
|
|
204
|
+
0
|
|
205
|
+
],
|
|
206
|
+
[
|
|
207
|
+
60,
|
|
208
|
+
4.5,
|
|
209
|
+
13.5
|
|
210
|
+
],
|
|
211
|
+
[
|
|
212
|
+
60,
|
|
213
|
+
0,
|
|
214
|
+
10
|
|
215
|
+
]
|
|
216
|
+
],
|
|
217
|
+
probesOutsideSolid: [[
|
|
218
|
+
60,
|
|
219
|
+
0,
|
|
220
|
+
13.5
|
|
221
|
+
], [
|
|
222
|
+
60,
|
|
223
|
+
2,
|
|
224
|
+
13.5
|
|
225
|
+
]]
|
|
226
|
+
}
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
id: "open-top-electronics-enclosure",
|
|
230
|
+
source: "benchmarks/05-open-top-electronics-enclosure.md",
|
|
231
|
+
calibrated: true,
|
|
232
|
+
prompt: `${DELIVERABLE}\n\nThe outer shape is a rectangular box 100 mm long in X, 70 mm wide in Y, and 30 mm tall in Z. Center it on the XY origin, with the bottom face at Z = 0. The enclosure is open at the top. The wall thickness is 3 mm and the bottom floor thickness is 3 mm. Add four internal cylindrical standoffs rising from the inside floor. Each standoff has an outside diameter of 10 mm and a height of 12 mm above the inside floor. Place the standoffs at X = +/-35 mm and Y = +/-25 mm. Add a centered blind hole in each standoff, 3 mm in diameter and 8 mm deep from the top of the standoff. Add 2 mm radius fillets to the four outside vertical corners of the enclosure.`,
|
|
233
|
+
spec: {
|
|
234
|
+
bbox: {
|
|
235
|
+
x: [99, 101],
|
|
236
|
+
y: [69, 71],
|
|
237
|
+
z: [29, 31]
|
|
238
|
+
},
|
|
239
|
+
volume: [49600, 52650],
|
|
240
|
+
solids: [1, 1],
|
|
241
|
+
minTriangles: 100,
|
|
242
|
+
probesInsideSolid: [
|
|
243
|
+
[
|
|
244
|
+
0,
|
|
245
|
+
0,
|
|
246
|
+
3 / 2
|
|
247
|
+
],
|
|
248
|
+
[
|
|
249
|
+
50 - 3 / 2,
|
|
250
|
+
0,
|
|
251
|
+
15
|
|
252
|
+
],
|
|
253
|
+
[
|
|
254
|
+
38,
|
|
255
|
+
25,
|
|
256
|
+
15 - 8 / 2
|
|
257
|
+
],
|
|
258
|
+
[
|
|
259
|
+
35,
|
|
260
|
+
25,
|
|
261
|
+
3.5
|
|
262
|
+
]
|
|
263
|
+
],
|
|
264
|
+
probesOutsideSolid: [
|
|
265
|
+
[
|
|
266
|
+
0,
|
|
267
|
+
0,
|
|
268
|
+
15
|
|
269
|
+
],
|
|
270
|
+
[
|
|
271
|
+
35,
|
|
272
|
+
25,
|
|
273
|
+
15 - 8 / 2
|
|
274
|
+
],
|
|
275
|
+
[
|
|
276
|
+
-35,
|
|
277
|
+
25,
|
|
278
|
+
15 - 8 / 2
|
|
279
|
+
],
|
|
280
|
+
[
|
|
281
|
+
35,
|
|
282
|
+
-25,
|
|
283
|
+
15 - 8 / 2
|
|
284
|
+
],
|
|
285
|
+
[
|
|
286
|
+
-35,
|
|
287
|
+
-25,
|
|
288
|
+
15 - 8 / 2
|
|
289
|
+
],
|
|
290
|
+
[
|
|
291
|
+
35.5,
|
|
292
|
+
25,
|
|
293
|
+
15 - 8 / 2
|
|
294
|
+
]
|
|
295
|
+
]
|
|
296
|
+
}
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
id: "clevis-bracket-lightening-cutouts",
|
|
300
|
+
source: "benchmarks/06-clevis-bracket-lightening-cutouts.md",
|
|
301
|
+
calibrated: true,
|
|
302
|
+
prompt: `${DELIVERABLE}\n\nThe part is symmetric about the XZ plane. Start with a base plate 120 mm long in X, 60 mm wide in Y, and 10 mm thick in Z, centered on the XY origin, with bottom face at Z = 0. Add two vertical clevis lugs rising from the top of the base near the center. Each lug is 18 mm thick in Y, 42 mm tall above the base, and extends 36 mm along X. The two lugs are separated by a 16 mm central gap in Y. The top of each lug has a semicircular rounded profile with radius 18 mm when viewed from the side. Add a horizontal through-hole of diameter 14 mm through both lugs along the Y direction, centered at X = 0 and Z = 34 mm. Add four base mounting holes, diameter 7 mm, through the base plate, located at X = +/-45 mm and Y = +/-20 mm. Add two triangular lightening cutouts through the base web, one on each side of the clevis, each with rounded corners of radius 3 mm. Add two diagonal reinforcing ribs from the base to the outer faces of the lugs, one on each side, thickness 6 mm. Add 3 mm fillets to the base perimeter and 2 mm fillets at lug-to-base transitions.`,
|
|
303
|
+
spec: {
|
|
304
|
+
bbox: {
|
|
305
|
+
x: [119, 121],
|
|
306
|
+
y: [59, 61],
|
|
307
|
+
z: [51, 53]
|
|
308
|
+
},
|
|
309
|
+
solids: [1, 1],
|
|
310
|
+
minTriangles: 100,
|
|
311
|
+
probesInsideSolid: [[
|
|
312
|
+
0,
|
|
313
|
+
17,
|
|
314
|
+
42.5
|
|
315
|
+
], [
|
|
316
|
+
45,
|
|
317
|
+
25,
|
|
318
|
+
5
|
|
319
|
+
]],
|
|
320
|
+
probesOutsideSolid: [
|
|
321
|
+
[
|
|
322
|
+
0,
|
|
323
|
+
17,
|
|
324
|
+
34
|
|
325
|
+
],
|
|
326
|
+
[
|
|
327
|
+
0,
|
|
328
|
+
-17,
|
|
329
|
+
34
|
|
330
|
+
],
|
|
331
|
+
[
|
|
332
|
+
0,
|
|
333
|
+
17,
|
|
334
|
+
40
|
|
335
|
+
],
|
|
336
|
+
[
|
|
337
|
+
45,
|
|
338
|
+
20,
|
|
339
|
+
5
|
|
340
|
+
],
|
|
341
|
+
[
|
|
342
|
+
-45,
|
|
343
|
+
20,
|
|
344
|
+
5
|
|
345
|
+
],
|
|
346
|
+
[
|
|
347
|
+
45,
|
|
348
|
+
-20,
|
|
349
|
+
5
|
|
350
|
+
],
|
|
351
|
+
[
|
|
352
|
+
-45,
|
|
353
|
+
-20,
|
|
354
|
+
5
|
|
355
|
+
],
|
|
356
|
+
[
|
|
357
|
+
45,
|
|
358
|
+
22.5,
|
|
359
|
+
5
|
|
360
|
+
]
|
|
361
|
+
]
|
|
362
|
+
}
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
id: "radial-engine-cylinder",
|
|
366
|
+
source: "benchmarks/07-radial-engine-cylinder.md",
|
|
367
|
+
calibrated: true,
|
|
368
|
+
prompt: `${DELIVERABLE}\n\nThe main cylinder axis is vertical along Z and centered at the origin. Create a central barrel with diameter 36 mm and height 70 mm, bottom at Z = 0. Around the barrel, add 12 horizontal circular cooling fins. Each fin is 2 mm thick in Z, has outside diameter 62 mm, and is spaced every 5 mm from Z = 10 mm to Z = 65 mm. Add a thicker base flange at the bottom, outside diameter 70 mm and thickness 8 mm, with six vertical mounting holes of diameter 5 mm on a 56 mm bolt circle. Add a top cap cylinder, diameter 44 mm and height 8 mm, from Z = 70 mm to Z = 78 mm. Add an angled spark-plug boss protruding from the side of the top cap. The boss is a cylinder of diameter 12 mm and length 24 mm, angled upward at 35 degrees from horizontal, with its axis pointing outward in the positive X direction. Add a 5 mm diameter hole through the boss along its own axis. Add small 1 mm fillets to the outer fin edges and base flange edges.`,
|
|
369
|
+
spec: {
|
|
370
|
+
bbox: { y: [69, 71] },
|
|
371
|
+
solids: [1, 1],
|
|
372
|
+
minTriangles: 100,
|
|
373
|
+
probesInsideSolid: [
|
|
374
|
+
[
|
|
375
|
+
0,
|
|
376
|
+
0,
|
|
377
|
+
35
|
|
378
|
+
],
|
|
379
|
+
[
|
|
380
|
+
22,
|
|
381
|
+
0,
|
|
382
|
+
4
|
|
383
|
+
],
|
|
384
|
+
[
|
|
385
|
+
33,
|
|
386
|
+
0,
|
|
387
|
+
4
|
|
388
|
+
],
|
|
389
|
+
[
|
|
390
|
+
0,
|
|
391
|
+
0,
|
|
392
|
+
74
|
|
393
|
+
],
|
|
394
|
+
[
|
|
395
|
+
17,
|
|
396
|
+
0,
|
|
397
|
+
13.5
|
|
398
|
+
]
|
|
399
|
+
],
|
|
400
|
+
probesOutsideSolid: [[
|
|
401
|
+
19,
|
|
402
|
+
0,
|
|
403
|
+
13.5
|
|
404
|
+
]]
|
|
405
|
+
}
|
|
406
|
+
},
|
|
407
|
+
{
|
|
408
|
+
id: "centrifugal-impeller",
|
|
409
|
+
source: "benchmarks/08-centrifugal-impeller.md",
|
|
410
|
+
calibrated: true,
|
|
411
|
+
prompt: `${DELIVERABLE}\n\nThe impeller axis is vertical along Z and centered at the origin. Add a circular backplate disk with outside diameter 90 mm and thickness 6 mm, with its bottom face at Z = 0. Add a central hub cylinder on top of the backplate, diameter 26 mm and height 22 mm above the backplate. Add a vertical through-bore of diameter 8 mm through the entire part. Add 12 identical backward-curved blades on top of the backplate, equally spaced around the hub. Each blade begins at radius 18 mm and ends at radius 43 mm. Each blade is 3 mm thick, 16 mm tall above the backplate, and curves backward by approximately 45 degrees from root to tip. The blade tips should lean opposite the direction of rotation when viewed from above. Add 1 mm fillets at the blade roots where they meet the backplate and hub. Add a 1.5 mm fillet to the top and bottom outer circular edges of the backplate.`,
|
|
412
|
+
spec: {
|
|
413
|
+
bbox: {
|
|
414
|
+
x: [89, 91],
|
|
415
|
+
y: [89, 91],
|
|
416
|
+
z: [27, 29]
|
|
417
|
+
},
|
|
418
|
+
solids: [1, 1],
|
|
419
|
+
minTriangles: 100,
|
|
420
|
+
probesInsideSolid: [
|
|
421
|
+
[
|
|
422
|
+
5.5,
|
|
423
|
+
0,
|
|
424
|
+
14
|
|
425
|
+
],
|
|
426
|
+
[
|
|
427
|
+
10,
|
|
428
|
+
0,
|
|
429
|
+
15
|
|
430
|
+
],
|
|
431
|
+
[
|
|
432
|
+
30,
|
|
433
|
+
0,
|
|
434
|
+
3
|
|
435
|
+
]
|
|
436
|
+
],
|
|
437
|
+
probesOutsideSolid: [[
|
|
438
|
+
0,
|
|
439
|
+
0,
|
|
440
|
+
14
|
|
441
|
+
], [
|
|
442
|
+
3,
|
|
443
|
+
0,
|
|
444
|
+
14
|
|
445
|
+
]]
|
|
446
|
+
}
|
|
447
|
+
},
|
|
448
|
+
{
|
|
449
|
+
id: "spiral-staircase",
|
|
450
|
+
source: "benchmarks/09-spiral-staircase.md",
|
|
451
|
+
calibrated: true,
|
|
452
|
+
prompt: `${DELIVERABLE}\n\nThe staircase is centered on the origin and rises along Z. Add a central vertical column, diameter 14 mm and height 140 mm, with its bottom at Z = 0. Add 20 identical wedge-shaped stair treads arranged helically around the column. Each tread is 4 mm thick, has an inner radius of 10 mm, an outer radius of 62 mm, and subtends 24 degrees in plan view. The first tread is at Z = 4 mm, and each subsequent tread rises by 6 mm and rotates by 18 degrees around Z. Add a helical outer handrail tube of diameter 5 mm following radius 66 mm, starting at Z = 14 mm and ending at Z = 130 mm, making one full revolution around the staircase. Add 20 vertical balusters, each diameter 3 mm, connecting the outer end of each tread to the handrail. Add a circular base disk, diameter 90 mm and thickness 5 mm.`,
|
|
453
|
+
spec: {
|
|
454
|
+
bbox: {
|
|
455
|
+
x: [136, 138],
|
|
456
|
+
y: [136, 138]
|
|
457
|
+
},
|
|
458
|
+
solids: [1, 1],
|
|
459
|
+
minTriangles: 100,
|
|
460
|
+
probesInsideSolid: [[
|
|
461
|
+
0,
|
|
462
|
+
0,
|
|
463
|
+
70
|
|
464
|
+
], [
|
|
465
|
+
6,
|
|
466
|
+
0,
|
|
467
|
+
70
|
|
468
|
+
]],
|
|
469
|
+
probesOutsideSolid: [[
|
|
470
|
+
8,
|
|
471
|
+
0,
|
|
472
|
+
70
|
|
473
|
+
]]
|
|
474
|
+
}
|
|
475
|
+
},
|
|
476
|
+
{
|
|
477
|
+
id: "planetary-gear-stage",
|
|
478
|
+
source: "benchmarks/10-planetary-gear-stage.md",
|
|
479
|
+
calibrated: true,
|
|
480
|
+
prompt: `${MCAD_DELIVERABLE_MULTIBODY}\n\nThe assembly lies flat in the XY plane with gear axes along Z. Use separate solid bodies for the sun gear, three planet gears, ring gear, carrier plate, and three planet pins. All gears are 8 mm thick. Use simplified straight-sided trapezoidal teeth rather than true involute teeth. The sun gear has 24 external teeth, pitch diameter 48 mm, root diameter 42 mm, and outside diameter 54 mm. The three planet gears each have 18 external teeth, pitch diameter 36 mm, root diameter 31 mm, and outside diameter 41 mm. Place the planet gear centers on a 42 mm radius circle, equally spaced every 120 degrees. The ring gear is concentric with the sun gear, has 60 internal teeth, internal pitch diameter 120 mm, internal root diameter 126 mm, internal tooth-tip diameter 114 mm, and outside diameter 140 mm. Add a thin circular carrier plate below the gears, diameter 105 mm and thickness 4 mm, located from Z = -5 mm to Z = -1 mm. Add three vertical planet pins, each diameter 6 mm and height 14 mm, centered under the planet gears. Add a central sun bore of diameter 10 mm.`,
|
|
481
|
+
spec: {
|
|
482
|
+
bbox: {
|
|
483
|
+
x: [139, 141],
|
|
484
|
+
y: [139, 141]
|
|
485
|
+
},
|
|
486
|
+
solids: [9, 9],
|
|
487
|
+
minTriangles: 100,
|
|
488
|
+
probesInsideSolid: [[
|
|
489
|
+
40,
|
|
490
|
+
0,
|
|
491
|
+
-3
|
|
492
|
+
], [
|
|
493
|
+
105 / 2 - 1,
|
|
494
|
+
0,
|
|
495
|
+
-3
|
|
496
|
+
]],
|
|
497
|
+
probesOutsideSolid: [[
|
|
498
|
+
53.5,
|
|
499
|
+
0,
|
|
500
|
+
-3
|
|
501
|
+
]]
|
|
502
|
+
}
|
|
503
|
+
}
|
|
504
|
+
];
|
|
505
|
+
//#endregion
|
|
506
|
+
export { MCAD_DELIVERABLE, MCAD_DELIVERABLE_MULTIBODY, MCAD_TASKS };
|
|
507
|
+
|
|
508
|
+
//# sourceMappingURL=mcad-tasks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcad-tasks.js","names":[],"sources":["../../src/benchmarks/mcad-tasks.ts"],"sourcesContent":["/**\n * MCAD task specs — 10 dimensioned mechanical parts adopted from the MIT-licensed\n * text-to-cad benchmark set (github.com/earthtojake/text-to-cad, `benchmarks/`).\n *\n * Upstream ships each part as a prompt plus a human checklist (\"four through-holes,\n * 8 mm each; no floating gussets\") with NO grader. This file is the machine-checkable\n * form: every assertion below is derivable in closed form from the upstream prompt,\n * and every derivation is shown in a comment beside its number. An assertion that\n * cannot be derived in closed form is OMITTED, never guessed — the judge only\n * asserts what the prompt actually pins.\n *\n * FORMAT DEVIATION, stated once: upstream asks for STEP export. The v1 judge\n * compiles OpenSCAD and grades the STL mesh (same judge deps as `cad-design`);\n * OpenSCAD cannot emit STEP. The geometric content of every check is preserved;\n * the \"STEP imports\" row is replaced by \"compiles + watertight\". Tasks keep the\n * upstream dimensional text verbatim inside an OpenSCAD-deliverable wrapper.\n *\n * Probes are the hole/pocket checks: a point the finished solid must NOT contain\n * (inside a hole bore) or MUST contain (in the surrounding material). Locations\n * come from the prompt's own dimensions, with clearance chosen so a hole that is\n * missing, misplaced by more than ~1 mm, or wrong in diameter by more than ~1 mm\n * flips at least one probe.\n */\n\nexport interface McadSpec {\n /** Overall axis-aligned extents in mm, [min, max] per axis. */\n bbox?: { x?: [number, number]; y?: [number, number]; z?: [number, number] }\n /** Enclosed mesh volume band in mm^3 — closed-form only, derivation in a comment. */\n volume?: [number, number]\n /** Disconnected-solid count band (fused parts must read as ONE solid). */\n solids?: [number, number]\n /** Triangle floor — rejects degenerate single-box answers where relevant. */\n minTriangles?: number\n /** Points (mm) that must test INSIDE the solid (material present). */\n probesInsideSolid?: Array<[number, number, number]>\n /** Points (mm) that must test OUTSIDE the solid (hole/pocket/clearance present). */\n probesOutsideSolid?: Array<[number, number, number]>\n}\n\nexport interface McadTask {\n id: string\n /** Upstream dimensional brief, verbatim, wrapped for the OpenSCAD deliverable. */\n prompt: string\n spec: McadSpec\n /** Upstream file this was adopted from. */\n source: string\n /** False when the spec has no verified gold yet — the judge still runs, but the\n * accept direction is uncalibrated and the loader surfaces that in metadata. */\n calibrated: boolean\n}\n\n/** Exported so a sibling adapter can SWAP this preamble for its own deliverable\n * (see `mcad-cq-bench.ts`) by prefix, instead of re-authoring ten prompts and\n * letting the two copies drift. The upstream dimensional text stays the tail. */\nexport const MCAD_DELIVERABLE =\n 'Author OpenSCAD source (units: mm) that builds exactly this part as one fused solid. ' +\n 'Reply with ONLY the OpenSCAD code. Use $fn=96 or finer for round features.'\n\nconst DELIVERABLE = MCAD_DELIVERABLE\n\n/** Task 10 is an ASSEMBLY, not a part: its own text says \"use separate solid bodies\"\n * and its checklist pins nine of them, which the single-solid boilerplate above\n * flatly contradicts. A worker cannot satisfy both, so that task gets this\n * preamble instead; everything else about the deliverable is unchanged. */\nexport const MCAD_DELIVERABLE_MULTIBODY =\n 'Author OpenSCAD source (units: mm) that builds exactly this assembly as the separate ' +\n 'solid bodies listed below. The bodies must stay disjoint — no two of them may touch or ' +\n 'intersect. Reply with ONLY the OpenSCAD code. Use $fn=96 or finer for round features.'\n\nconst DELIVERABLE_MULTIBODY = MCAD_DELIVERABLE_MULTIBODY\n\nexport const MCAD_TASKS: McadTask[] = [\n {\n id: 'calibration-block',\n source: 'benchmarks/01-rectangular-calibration-block.md',\n calibrated: true,\n prompt:\n `${DELIVERABLE}\\n\\n` +\n 'The part is a rectangular block, 100 mm long in X, 60 mm wide in Y, and 20 mm tall in Z. ' +\n 'Center the block on the XY origin, with the bottom face at Z = 0. ' +\n 'Add four vertical through-holes, each 8 mm in diameter, located at X = +/-35 mm and Y = +/-20 mm. ' +\n 'Add a 2 mm chamfer to the top perimeter edges only. Do not chamfer the holes.',\n spec: {\n bbox: { x: [99, 101], y: [59, 61], z: [19, 21] },\n // block 100*60*20 = 120000; holes 4 * pi * 4^2 * 20 = 4021.2;\n // top-perimeter 2 mm chamfer ~ (2*2/2) * perimeter(320) - corners ~ 620..640.\n // exact-ish 115340; band allows +-1% modelling slack but excludes\n // no-chamfer (115979) ONLY via the upper edge staying below it? No -\n // 115979 is within 1%; the chamfer is NOT volume-separable at this size,\n // so the band checks holes+block and the chamfer stays unasserted.\n volume: [113_000, 117_000],\n solids: [1, 1],\n probesInsideSolid: [\n [0, 0, 10], // core material between the holes\n [48, 28, 10], // corner material\n [35, 20 + 5.5, 10], // 5.5 mm off a hole center: outside an 8 mm bore, inside the block\n ],\n probesOutsideSolid: [\n [35, 20, 10], // each 8 mm bore, probed at mid-depth\n [-35, 20, 10],\n [35, -20, 10],\n [-35, -20, 10],\n [35, 20 + 3.0, 10], // 3.0 mm off center: still inside a 4 mm-radius bore\n ],\n },\n },\n {\n id: 'circular-flange',\n source: 'benchmarks/02-circular-flange.md',\n calibrated: true,\n prompt:\n `${DELIVERABLE}\\n\\n` +\n 'The flange is a cylinder with an outside diameter of 80 mm and a thickness of 10 mm. ' +\n 'Its axis is vertical along Z, with the bottom face at Z = 0 and the center at X = 0, Y = 0. ' +\n 'Add a central vertical through-bore with diameter 30 mm. ' +\n 'Add six equally spaced vertical through-holes, each 6 mm in diameter, on a 60 mm bolt-circle diameter. ' +\n 'Add a 1.5 mm fillet to the top and bottom outside circular edges.',\n spec: {\n // OD 80 -> radius 40; thickness 10.\n bbox: { x: [79, 81], y: [79, 81], z: [9, 11] },\n // cylinder pi*40^2*10 = 50265.48; central bore pi*15^2*10 = 7068.58;\n // 6 bolt holes 6*pi*3^2*10 = 1696.46; net 41500.44.\n // top+bottom 1.5 mm fillet on the OD removes ~2*(1-pi/4)*1.5^2*(pi*80)\n // = ~242.7 (0.6%), well inside a +-3% band, so it stays unasserted here.\n volume: [40_250, 42_750],\n solids: [1, 1],\n minTriangles: 100,\n probesInsideSolid: [\n [22, 0, 5], // core material between the 30 mm bore and the 60 mm bolt circle\n [15 + 1.5, 0, 5], // 1.5 mm past the 15 mm bore radius: inside material\n ],\n probesOutsideSolid: [\n [0, 0, 5], // central bore, dead center, mid-thickness\n [15 - 1, 0, 5], // 1 mm inside the 15 mm bore radius: still inside the bore\n ],\n // The 6 bolt holes have a pinned radius (30 mm) and count (6) but no stated\n // starting angle, so their exact XY centers are not derivable; any global\n // rotation of the pattern is a valid answer. Omitted rather than guessed.\n },\n },\n {\n id: 'l-bracket',\n source: 'benchmarks/03-l-bracket.md',\n calibrated: true,\n prompt:\n `${DELIVERABLE}\\n\\n` +\n 'The bracket has a horizontal base plate 80 mm long in X, 50 mm wide in Y, and 8 mm thick in Z. Center the base plate on the XY origin, with its bottom at Z = 0. ' +\n 'Add a vertical back plate along the rear long edge of the base. The back plate is 80 mm long in X, 8 mm thick in Y, and 50 mm tall in Z, rising from the top of the base plate. The back plate should sit along the rear edge at positive Y. ' +\n 'Add two vertical through-holes in the base plate, each 6 mm in diameter, located at X = +/-25 mm and Y = -10 mm. ' +\n 'Add two horizontal through-holes in the vertical plate, each 6 mm in diameter, located at X = +/-25 mm and Z = 30 mm, passing through the 8 mm thickness of the vertical plate. ' +\n 'Add two triangular gussets, each 8 mm thick in X, located at X = +/-20 mm. Each gusset should connect the base plate to the back plate with a right-triangle side profile 30 mm tall and 30 mm deep. ' +\n 'Add 2 mm fillets to the outside corner where the base and back plate meet.',\n spec: {\n // X: both plates are 80 mm long, gussets sit within +/-24 -> base governs.\n // Y: base is 50 mm wide (-25..25); back plate (8 mm thick) hugs the rear\n // edge, occupying Y=17..25 (flush at Y=25), inside the base's Y range.\n // Z: base bottom 0, base top 8; back plate rises 50 mm from there -> top 58.\n bbox: { x: [79, 81], y: [49, 51], z: [57, 59] },\n // base 80*50*8=32000 - 2 holes(pi*3^2*8=452.39) = 31547.61\n // back 80*8*50=32000 - 2 holes(452.39) = 31547.61\n // 2 gussets: right triangle 30x30 * 8 mm thick = 0.5*30*30*8=3600 each -> 7200\n // sum 70295.22; the two plates occupy disjoint Z ranges (0-8 vs 8-58), no\n // volume overlap. A 2 mm fillet on the one outside X-running corner edge\n // (length 80) removes ~(1-pi/4)*2^2*80=68.7 (0.1%), folded into the band.\n volume: [68_200, 72_400],\n solids: [1, 1],\n minTriangles: 100,\n probesInsideSolid: [\n [0, 0, 4], // base plate core, away from both base holes (X=+/-25, Y=-10)\n [0, 21, 30], // back plate core (mid-Y-thickness 17..25), away from both back holes\n [25, -10 + 4.5, 4], // 4.5 mm past the base hole's 3 mm radius (r+1.5): inside material\n [25, 21, 30 + 4.5], // 4.5 mm past the back hole's 3 mm radius (r+1.5), offset in Z: inside material\n ],\n probesOutsideSolid: [\n [25, -10, 4], // base hole (X=25, Y=-10), dead center, mid-thickness\n [-25, -10, 4], // base hole (X=-25, Y=-10), dead center\n [25, -10 + 2, 4], // 1 mm inside the base hole's 3 mm radius (r-1)\n [25, 21, 30], // back hole (X=25, Z=30), dead center, mid-Y-thickness\n [-25, 21, 30], // back hole (X=-25, Z=30), dead center\n [25, 21, 30 + 2], // 1 mm inside the back hole's 3 mm radius (r-1), offset in Z\n ],\n },\n },\n {\n id: 'stepped-shaft-keyway',\n source: 'benchmarks/04-stepped-shaft-keyway.md',\n calibrated: true,\n prompt:\n `${DELIVERABLE}\\n\\n` +\n 'The shaft axis runs along X. The total length is 120 mm. The left end center is at X = 0, Y = 0, Z = 0. ' +\n 'From X = 0 to X = 30, the shaft diameter is 20 mm. From X = 30 to X = 90, the shaft diameter is 30 mm. From X = 90 to X = 120, the shaft diameter is 20 mm. ' +\n 'Add a 1 mm chamfer to both end edges. ' +\n 'Add a rectangular keyway slot on the top of the 30 mm diameter middle section. The keyway is 6 mm wide in Y, 3 mm deep in Z, and runs from X = 40 to X = 80.',\n spec: {\n // length 0..120; widest section is the 30 mm-diameter middle (radius 15).\n bbox: { x: [119, 121], y: [29, 31], z: [29, 31] },\n // 3 segments on-axis (Y=0,Z=0): pi*10^2*30 + pi*15^2*60 + pi*10^2*30 = 61261.06\n // minus keyway 6*3*40=720 -> net 60541.06. End chamfers (1 mm, r=10 circles)\n // remove ~2*0.5*1^2*(2*pi*10)=62.8 (0.1%), folded into the band.\n // TIGHTENED band: a model that omits the keyway entirely would measure\n // 61261.06, only 1.19% above net -- inside a naive +-3% band. Upper bound\n // is pulled below 61261 to force that failure to read as a miss; probes\n // below also independently catch a keyway that is missing or too shallow.\n volume: [59_700, 61_050],\n solids: [1, 1],\n minTriangles: 100,\n probesInsideSolid: [\n [15, 0, 0], // on-axis material, left 20 mm-diameter section\n [60, 0, 0], // on-axis material, middle section, far from the keyway (which is at Z=12..15)\n [105, 0, 0], // on-axis material, right 20 mm-diameter section\n [60, 3 + 1.5, 15 - 1.5], // 1.5 mm past the keyway's 3 mm half-width (assumed centered on Y=0): inside the 30 mm section\n [60, 0, 15 - 3 - 2], // 2 mm below the keyway floor (Z = 15-3 = 12): shaft material intact beneath the slot\n ],\n probesOutsideSolid: [\n [60, 0, 15 - 1.5], // keyway void, X-midpoint of the 40..80 run, mid-depth between floor (Z=12) and top (Z=15)\n [60, 3 - 1, 15 - 1.5], // 1 mm inside the keyway's 3 mm half-width: still within the 6 mm-wide slot\n ],\n },\n },\n {\n id: 'open-top-electronics-enclosure',\n source: 'benchmarks/05-open-top-electronics-enclosure.md',\n calibrated: true,\n prompt:\n `${DELIVERABLE}\\n\\n` +\n 'The outer shape is a rectangular box 100 mm long in X, 70 mm wide in Y, and 30 mm tall in Z. Center it on the XY origin, with the bottom face at Z = 0. ' +\n 'The enclosure is open at the top. The wall thickness is 3 mm and the bottom floor thickness is 3 mm. ' +\n 'Add four internal cylindrical standoffs rising from the inside floor. Each standoff has an outside diameter of 10 mm and a height of 12 mm above the inside floor. Place the standoffs at X = +/-35 mm and Y = +/-25 mm. ' +\n 'Add a centered blind hole in each standoff, 3 mm in diameter and 8 mm deep from the top of the standoff. ' +\n 'Add 2 mm radius fillets to the four outside vertical corners of the enclosure.',\n spec: {\n bbox: { x: [99, 101], y: [69, 71], z: [29, 31] },\n // outer box 100*70*30=210000; interior cavity (94 x 64 footprint, open\n // top, floor top at Z=3) is 94*64*27=162432; shell = 47568.\n // 4 standoffs (OD10 r5, h12 above floor): 4*pi*5^2*12=3769.91.\n // 4 blind holes (d3 r1.5, 8 mm deep from standoff top): 4*pi*1.5^2*8=226.19.\n // net 47568 + 3769.91 - 226.19 = 51111.72. 4 corner fillets (r2, full\n // 30 mm height) remove ~4*(1-pi/4)*2^2*30=103.0 (0.2%), folded into band.\n volume: [49_600, 52_650],\n solids: [1, 1],\n minTriangles: 100,\n probesInsideSolid: [\n [0, 0, 3 / 2], // floor slab, mid-thickness (Z=0..3), away from all standoffs\n [50 - 3 / 2, 0, 15], // +X wall material, mid-wall-thickness (47..50), mid-height\n [35 + 1.5 + 1.5, 25, 15 - 8 / 2], // 1.5 mm past the (35,25) standoff's 1.5 mm blind-hole radius (r+1.5): inside the standoff (OD10, r5)\n [35, 25, 3 + 0.5], // 0.5 mm above the floor top (Z=3), within the (35,25) standoff's footprint: confirms the standoff is fused to the floor, not floating\n ],\n probesOutsideSolid: [\n [0, 0, 15], // open interior cavity, away from standoffs: confirms the box is hollow, not solid\n [35, 25, 15 - 8 / 2], // blind hole at the (35,25) standoff: top at Z=3+12=15, 8 mm deep -> mid-depth Z=11\n [-35, 25, 15 - 8 / 2], // blind hole at the (-35,25) standoff, dead center\n [35, -25, 15 - 8 / 2], // blind hole at the (35,-25) standoff, dead center\n [-35, -25, 15 - 8 / 2], // blind hole at the (-35,-25) standoff, dead center\n [35 + 0.5, 25, 15 - 8 / 2], // 1 mm inside the (35,25) hole's 1.5 mm radius\n ],\n },\n },\n {\n id: 'clevis-bracket-lightening-cutouts',\n source: 'benchmarks/06-clevis-bracket-lightening-cutouts.md',\n calibrated: true,\n prompt:\n `${DELIVERABLE}\\n\\n` +\n 'The part is symmetric about the XZ plane. ' +\n 'Start with a base plate 120 mm long in X, 60 mm wide in Y, and 10 mm thick in Z, centered on the XY origin, with bottom face at Z = 0. ' +\n 'Add two vertical clevis lugs rising from the top of the base near the center. Each lug is 18 mm thick in Y, 42 mm tall above the base, and extends 36 mm along X. The two lugs are separated by a 16 mm central gap in Y. The top of each lug has a semicircular rounded profile with radius 18 mm when viewed from the side. ' +\n 'Add a horizontal through-hole of diameter 14 mm through both lugs along the Y direction, centered at X = 0 and Z = 34 mm. ' +\n 'Add four base mounting holes, diameter 7 mm, through the base plate, located at X = +/-45 mm and Y = +/-20 mm. ' +\n 'Add two triangular lightening cutouts through the base web, one on each side of the clevis, each with rounded corners of radius 3 mm. ' +\n 'Add two diagonal reinforcing ribs from the base to the outer faces of the lugs, one on each side, thickness 6 mm. ' +\n 'Add 3 mm fillets to the base perimeter and 2 mm fillets at lug-to-base transitions.',\n spec: {\n // X: base 120 mm governs (lugs +/-18, ribs bounded by the lugs, both well inside).\n // Y: base 60 mm governs (lugs span 8..26 / -26..-8, inside the base's +/-30).\n // Z: base top at 10; lug is 42 mm tall total (36 mm X-width -> the stated\n // 18 mm cap radius = half that width, so the 42 mm figure already includes\n // the rounded top) -> lug top at 10+42=52.\n bbox: { x: [119, 121], y: [59, 61], z: [51, 53] },\n // Volume OMITTED: the two triangular lightening cutouts have no stated\n // size (only \"rounded corners radius 3 mm\" and \"one on each side\"), and\n // the two reinforcing ribs give only a thickness (6 mm), not a length or\n // height. Both features materially remove/add volume by an unbounded\n // amount, so no closed-form band is honest here.\n solids: [1, 1],\n minTriangles: 100,\n probesInsideSolid: [\n // 8.5 mm past the clevis hole's 7 mm radius (r+1.5), offset in Z, inside\n // the lug's rounded cap (Z=34 is the semicircle's flat base at the lug's\n // straight-to-round transition; 34+8.5=42.5 is within the cap, |X|<~15.9 there).\n [0, 17, 34 + 8.5],\n [45, 20 + 3.5 + 1.5, 5], // 5 mm past the (45,20) mounting hole's 3.5 mm radius (r+1.5): inside the base plate\n ],\n probesOutsideSolid: [\n [0, 17, 34], // clevis hole, dead center (positive-Y lug, mid-thickness Y=17 of the 8..26 lug)\n [0, -17, 34], // clevis hole, dead center (negative-Y lug, mid-thickness Y=-17)\n [0, 17, 34 + 6], // 1 mm inside the clevis hole's 7 mm radius (r-1), offset in Z\n [45, 20, 5], // (45,20) mounting hole, dead center, mid-thickness\n [-45, 20, 5], // (-45,20) mounting hole, dead center\n [45, -20, 5], // (45,-20) mounting hole, dead center\n [-45, -20, 5], // (-45,-20) mounting hole, dead center\n [45, 20 + 3.5 - 1, 5], // 1 mm inside the (45,20) hole's 3.5 mm radius (r-1)\n ],\n // Lightening-cutout and rib probes omitted: neither feature has a stated\n // position or size beyond \"one on each side\" / a single thickness, so no\n // point can be placed with confidence it lands inside or outside either.\n },\n },\n {\n id: 'radial-engine-cylinder',\n source: 'benchmarks/07-radial-engine-cylinder.md',\n calibrated: true,\n prompt:\n `${DELIVERABLE}\\n\\n` +\n 'The main cylinder axis is vertical along Z and centered at the origin. ' +\n 'Create a central barrel with diameter 36 mm and height 70 mm, bottom at Z = 0. ' +\n 'Around the barrel, add 12 horizontal circular cooling fins. Each fin is 2 mm thick in Z, has outside diameter 62 mm, and is spaced every 5 mm from Z = 10 mm to Z = 65 mm. ' +\n 'Add a thicker base flange at the bottom, outside diameter 70 mm and thickness 8 mm, with six vertical mounting holes of diameter 5 mm on a 56 mm bolt circle. ' +\n 'Add a top cap cylinder, diameter 44 mm and height 8 mm, from Z = 70 mm to Z = 78 mm. ' +\n 'Add an angled spark-plug boss protruding from the side of the top cap. The boss is a cylinder of diameter 12 mm and length 24 mm, angled upward at 35 degrees from horizontal, with its axis pointing outward in the positive X direction. ' +\n 'Add a 5 mm diameter hole through the boss along its own axis. ' +\n 'Add small 1 mm fillets to the outer fin edges and base flange edges.',\n spec: {\n // Y is unaffected by the boss (boss points only in +X): widest rotational\n // feature is the base flange, OD 70 mm.\n // X and Z OMITTED: the boss (12 mm dia, 24 mm long, 35 deg up, +X) has no\n // stated root position along the top cap (only \"protruding from the side\"),\n // so how far it extends past the cap's OD=44 (X) and how high its tip\n // rises past the cap top at Z=78 (Z) both depend on an unstated embedding\n // depth -- not closed-form derivable.\n bbox: { y: [69, 71] },\n // Volume OMITTED: same boss-root ambiguity makes the boss's net\n // contribution (external protrusion minus embedded overlap minus its own\n // 5 mm bore, intersected at an angle with the cap's curved surface) not\n // closed-form. The rotational-body-only components (barrel 71251.32 +\n // 12 fins 48028.67 + flange-net 21702.12 + cap 12164.25 = 153146.36) are\n // well defined but omitting the boss would silently mis-grade any correct\n // model, so the whole field is left unset rather than partially asserted.\n solids: [1, 1],\n minTriangles: 100,\n probesInsideSolid: [\n [0, 0, 35], // barrel core, on-axis, mid-height (0..70) -- barrel has no bore\n [22, 0, 4], // flange material at r=22 (between barrel r=18 and the 56 mm bolt-circle band r=25.5..30.5), mid-thickness (0..8)\n [33, 0, 4], // flange material at r=33 (between the bolt-circle band and OD 35), mid-thickness\n [0, 0, 74], // top cap core, on-axis, mid-height (70..78) -- away from the boss, which emerges from the cap's side, not its axis\n [18 - 1, 0, 12 + 1.5], // 1 mm inside the barrel's 18 mm radius, at Z=13.5 -- the gap between fin 1 (Z=10..12) and fin 2 (Z=15..17), where only the barrel itself can be present\n ],\n probesOutsideSolid: [\n [18 + 1, 0, 12 + 1.5], // 1 mm beyond the barrel's 18 mm radius, same fin-gap Z=13.5: confirms the barrel does not bulge past its stated 36 mm diameter (fins only exist in their own 2 mm Z-slices, not this gap)\n ],\n // No further probesOutsideSolid: the 6 base-flange mounting holes have a\n // pinned radius (28 mm) and count (6) but no stated starting angle (same\n // ambiguity as task 02's bolt circle), and the boss's own 5 mm bore sits\n // at an unstated root position on the cap. Neither has a fully pinned\n // XYZ location to probe.\n },\n },\n {\n id: 'centrifugal-impeller',\n source: 'benchmarks/08-centrifugal-impeller.md',\n calibrated: true,\n prompt:\n `${DELIVERABLE}\\n\\n` +\n 'The impeller axis is vertical along Z and centered at the origin. ' +\n 'Add a circular backplate disk with outside diameter 90 mm and thickness 6 mm, with its bottom face at Z = 0. ' +\n 'Add a central hub cylinder on top of the backplate, diameter 26 mm and height 22 mm above the backplate. ' +\n 'Add a vertical through-bore of diameter 8 mm through the entire part. ' +\n 'Add 12 identical backward-curved blades on top of the backplate, equally spaced around the hub. Each blade begins at radius 18 mm and ends at radius 43 mm. Each blade is 3 mm thick, 16 mm tall above the backplate, and curves backward by approximately 45 degrees from root to tip. The blade tips should lean opposite the direction of rotation when viewed from above. ' +\n 'Add 1 mm fillets at the blade roots where they meet the backplate and hub. Add a 1.5 mm fillet to the top and bottom outer circular edges of the backplate.',\n spec: {\n // X/Y: backplate OD 90 mm is the widest feature (blade tips reach only\n // r=43 -> diameter 86). Z: backplate top at 6, hub top at 6+22=28, which\n // exceeds the blades' top at 6+16=22 -> hub governs the overall height.\n bbox: { x: [89, 91], y: [89, 91], z: [27, 29] },\n // Volume OMITTED (named directly in the task rules as an omit example):\n // the 12 blades are specified only by start/end radius, thickness, and an\n // \"approximately 45 degrees\" backward curve -- no exact swept-path or\n // cross-section profile is given, so their volume is not closed-form.\n solids: [1, 1],\n minTriangles: 100,\n probesInsideSolid: [\n [4 + 1.5, 0, 14], // 1.5 mm past the 4 mm through-bore radius (r+1.5), inside the hub\n [10, 0, 15], // hub material (r=10, within the hub's 13 mm radius), away from the bore and the blade root region (blades begin at r=18)\n [30, 0, 3], // backplate material, mid-thickness (Z=0..6), r=30 -- below blade start height (Z=6), safe regardless of blade shape\n ],\n probesOutsideSolid: [\n [0, 0, 14], // through-bore, dead center, mid-height (bore runs the full 0..28 part height)\n [4 - 1, 0, 14], // 1 mm inside the bore's 4 mm radius (r-1)\n ],\n // Blade probes omitted: the curved sweep path between the stated start\n // (r18) and end (r43) radii is only qualitatively described (\"approximately\n // 45 degrees\"), so no exact in/out point on a blade is derivable.\n },\n },\n {\n id: 'spiral-staircase',\n source: 'benchmarks/09-spiral-staircase.md',\n calibrated: true,\n prompt:\n `${DELIVERABLE}\\n\\n` +\n 'The staircase is centered on the origin and rises along Z. ' +\n 'Add a central vertical column, diameter 14 mm and height 140 mm, with its bottom at Z = 0. ' +\n 'Add 20 identical wedge-shaped stair treads arranged helically around the column. Each tread is 4 mm thick, has an inner radius of 10 mm, an outer radius of 62 mm, and subtends 24 degrees in plan view. The first tread is at Z = 4 mm, and each subsequent tread rises by 6 mm and rotates by 18 degrees around Z. ' +\n 'Add a helical outer handrail tube of diameter 5 mm following radius 66 mm, starting at Z = 14 mm and ending at Z = 130 mm, making one full revolution around the staircase. ' +\n 'Add 20 vertical balusters, each diameter 3 mm, connecting the outer end of each tread to the handrail. ' +\n 'Add a circular base disk, diameter 90 mm and thickness 5 mm.',\n spec: {\n // Widest reach is the handrail TUBE's outer surface: centerline radius 66\n // + tube radius 2.5 = 68.5 -> diameter 137. (Base disk OD 90 and tread OD\n // 124 are both smaller.)\n // Z OMITTED: the base disk (diameter 90, thickness 5) has no stated Z\n // position -- unlike every other feature in this part, its placement\n // relative to the column's Z=0 bottom is never given. Column-top-only\n // height is 140; if the disk sits fully below Z=0 the total is 145 --\n // a 5 mm (3.6%) swing with no textual basis to pick one, so left unset.\n bbox: { x: [136, 138], y: [136, 138] },\n // Volume OMITTED (named directly in the task rules as an omit example):\n // helical wedge treads, a helical handrail sweep, and angled balusters\n // have no closed-form solid-of-revolution/extrusion formula from radii\n // and angles alone.\n solids: [1, 1],\n minTriangles: 100,\n probesInsideSolid: [\n [0, 0, 70], // central column, on-axis, mid-height (0..140) -- unambiguous regardless of tread/handrail/baluster placement\n [7 - 1, 0, 70], // 1 mm inside the column's 7 mm radius: confirms the column reaches its stated 14 mm diameter\n ],\n probesOutsideSolid: [\n // 1 mm beyond the column's 7 mm radius, same height: treads never reach\n // this radius (their stated inner radius is 10 mm, a fixed 3 mm gap from\n // the column regardless of Z), so this is safely open air at any Z.\n [7 + 1, 0, 70],\n ],\n // No hole/bore/pocket is stated for this part otherwise -- it is purely\n // additive (column, treads, handrail, balusters, base disk).\n },\n },\n {\n id: 'planetary-gear-stage',\n source: 'benchmarks/10-planetary-gear-stage.md',\n calibrated: true,\n prompt:\n `${DELIVERABLE_MULTIBODY}\\n\\n` +\n 'The assembly lies flat in the XY plane with gear axes along Z. Use separate solid bodies for the sun gear, three planet gears, ring gear, carrier plate, and three planet pins. ' +\n 'All gears are 8 mm thick. Use simplified straight-sided trapezoidal teeth rather than true involute teeth. ' +\n 'The sun gear has 24 external teeth, pitch diameter 48 mm, root diameter 42 mm, and outside diameter 54 mm. ' +\n 'The three planet gears each have 18 external teeth, pitch diameter 36 mm, root diameter 31 mm, and outside diameter 41 mm. Place the planet gear centers on a 42 mm radius circle, equally spaced every 120 degrees. ' +\n 'The ring gear is concentric with the sun gear, has 60 internal teeth, internal pitch diameter 120 mm, internal root diameter 126 mm, internal tooth-tip diameter 114 mm, and outside diameter 140 mm. ' +\n 'Add a thin circular carrier plate below the gears, diameter 105 mm and thickness 4 mm, located from Z = -5 mm to Z = -1 mm. ' +\n 'Add three vertical planet pins, each diameter 6 mm and height 14 mm, centered under the planet gears. ' +\n 'Add a central sun bore of diameter 10 mm.',\n spec: {\n // This task uses DELIVERABLE_MULTIBODY, not the single-solid boilerplate:\n // the two are contradictory here (the part's own text says \"Use separate\n // solid bodies for...\"), and solids below is the upstream checklist's\n // explicit nine-body requirement, which no fused answer can satisfy.\n //\n // X/Y: ring gear OD 140 mm is the widest feature (planet reach = 42\n // (center radius) + 20.5 (planet outside radius) = 62.5 -> dia 125, smaller).\n bbox: { x: [139, 141], y: [139, 141] },\n // Z OMITTED: only the carrier plate has an explicit Z range (-5..-1).\n // The pin height (14 mm) strongly suggests pins bridge carrier-top to\n // gear-bottom (-1 -> 13, gears then spanning 13..21), since spacing the\n // gears above the carrier is the pin's whole mechanical purpose -- but\n // the prompt never states pins rest flush on the carrier or that gears\n // rest flush on the pins, so this is inference, not a pinned value.\n //\n // Volume OMITTED (gear teeth named directly in the task rules as an omit\n // example): trapezoidal tooth width/profile is not given beyond pitch/\n // root/outside diameters and tooth count, and the Z-stacking ambiguity\n // above compounds it for 8 of the 9 bodies.\n solids: [9, 9], // sun(1) + 3 planets + ring(1) + carrier(1) + 3 pins = 9, per the checklist's explicit body count\n minTriangles: 100,\n probesInsideSolid: [\n [40, 0, -3], // carrier plate material, mid-thickness (Z=-5..-1), r=40 (within its 52.5 mm radius) -- the only body with a fully pinned Z range\n [105 / 2 - 1, 0, -3], // 1 mm inside the carrier's 52.5 mm radius (105 mm OD): confirms the carrier reaches its stated diameter\n ],\n probesOutsideSolid: [\n // 1 mm beyond the carrier's 52.5 mm radius, same mid-thickness Z: the\n // prompt states the carrier plate is \"below the gears,\" so nothing\n // else in the assembly can occupy Z=-3 at any radius.\n [105 / 2 + 1, 0, -3],\n ],\n // No further probesOutsideSolid: the sun bore and every other gear-body\n // feature sit at a Z height that depends on the carrier/pin stacking\n // inference above, which the prompt does not state numerically. Planet\n // gear centers ARE derivable in XY (radius 42, 120 deg spacing ->\n // (42,0), (42*cos120, 42*sin120)=(-21, 36.37), (-21,-36.37)) but without\n // a pinned Z no 3D probe point can be placed with confidence.\n },\n },\n]\n"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tangle-network/agent-bench",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.2",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Benchmark adapters and execution for agent-runtime across coding, tool-use, RAG, memory, browser, and terminal tasks.",
|
|
6
6
|
"repository": {
|
|
@@ -25,11 +25,11 @@
|
|
|
25
25
|
}
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@tangle-network/agent-eval": "0.144.
|
|
28
|
+
"@tangle-network/agent-eval": "0.144.10",
|
|
29
29
|
"@tangle-network/agent-interface": "0.46.1",
|
|
30
|
-
"@tangle-network/agent-knowledge": "7.
|
|
30
|
+
"@tangle-network/agent-knowledge": "7.2.0",
|
|
31
31
|
"@tangle-network/sandbox": "0.19.4",
|
|
32
|
-
"@tangle-network/agent-runtime": "0.131.
|
|
32
|
+
"@tangle-network/agent-runtime": "0.131.7"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"@arethetypeswrong/cli": "0.18.5",
|
package/src/adapters.ts
CHANGED
|
@@ -21,6 +21,8 @@ import { createFinsearchcompAdapter } from './benchmarks/finsearchcomp'
|
|
|
21
21
|
import { createFramesAdapter } from './benchmarks/frames'
|
|
22
22
|
import { createHotpotqaAdapter } from './benchmarks/hotpotqa'
|
|
23
23
|
import { createHumanEvalAdapter } from './benchmarks/humaneval'
|
|
24
|
+
import { createMcadBenchAdapter } from './benchmarks/mcad-bench'
|
|
25
|
+
import { createMcadCqAdapter } from './benchmarks/mcad-cq-bench'
|
|
24
26
|
import { createMind2WebAdapter } from './benchmarks/mind2web'
|
|
25
27
|
import { createNoMiraclAdapter } from './benchmarks/nomiracl'
|
|
26
28
|
import { createOpenRagBenchAdapter } from './benchmarks/open-rag-bench'
|
|
@@ -59,6 +61,15 @@ export const ADAPTERS: Record<string, () => BenchmarkAdapter> = {
|
|
|
59
61
|
'appworld-react': createAppWorldReactAdapter,
|
|
60
62
|
'enterpriseops-gym': createEnterpriseOpsGymAdapter,
|
|
61
63
|
'cad-design': createCadDesignAdapter,
|
|
64
|
+
// Dimensioned mechanical parts: same OpenSCAD+xvfb judge deps as cad-design, but
|
|
65
|
+
// the spec is metric (bbox / volume / body count / point-in-solid hole probes)
|
|
66
|
+
// rather than qualitative, and every task carries a verified gold.
|
|
67
|
+
mcad: createMcadBenchAdapter,
|
|
68
|
+
// The same 10 parts and the same spec assertions, but the worker writes a Python
|
|
69
|
+
// CadQuery script that must export STEP as well as the ASCII STL — which closes
|
|
70
|
+
// the format deviation `mcad-tasks.ts` documents (upstream asks for STEP;
|
|
71
|
+
// OpenSCAD cannot emit it). STEP delivery is one extra SCORED check.
|
|
72
|
+
'mcad-cq': createMcadCqAdapter,
|
|
62
73
|
cadbench: createCadBenchAdapter,
|
|
63
74
|
cadgenbench: createCadGenBenchAdapter,
|
|
64
75
|
frames: createFramesAdapter,
|