Skip to content

Commit 48e484f

Browse files
authored
chore: turn arg name into snake case in sanitization (#1862)
This fixes the casing of the tool call params. We don't need any server side fix since they are already converted to snake case in the proto definition. This is needed nevertheless since the sanitizeParams() function will be called when we log the params (see the next PR: #1863 1863).
1 parent fefc8ad commit 48e484f

4 files changed

Lines changed: 59 additions & 55 deletions

File tree

src/telemetry/ClearcutLogger.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,12 +60,16 @@ export function getZodType(zodType: zod.ZodTypeAny): ZodType {
6060
type LoggedToolCallArgValue = string | number | boolean;
6161

6262
export function transformArgName(zodType: ZodType, name: string): string {
63+
const snakeCaseName = name.replace(
64+
/[A-Z]/g,
65+
letter => `_${letter.toLowerCase()}`,
66+
);
6367
if (zodType === 'ZodString') {
64-
return `${name}_length`;
68+
return `${snakeCaseName}_length`;
6569
} else if (zodType === 'ZodArray') {
66-
return `${name}_count`;
70+
return `${snakeCaseName}_count`;
6771
} else {
68-
return name;
72+
return snakeCaseName;
6973
}
7074
}
7175

src/telemetry/tool_call_metrics.json

Lines changed: 45 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33
"name": "click",
44
"args": [
55
{
6-
"name": "dblClick",
6+
"name": "dbl_click",
77
"argType": "boolean"
88
},
99
{
10-
"name": "includeSnapshot",
10+
"name": "include_snapshot",
1111
"argType": "boolean"
1212
}
1313
]
@@ -24,11 +24,11 @@
2424
"argType": "number"
2525
},
2626
{
27-
"name": "dblClick",
27+
"name": "dbl_click",
2828
"argType": "boolean"
2929
},
3030
{
31-
"name": "includeSnapshot",
31+
"name": "include_snapshot",
3232
"argType": "boolean"
3333
}
3434
]
@@ -37,7 +37,7 @@
3737
"name": "close_page",
3838
"args": [
3939
{
40-
"name": "pageId",
40+
"name": "page_id",
4141
"argType": "number"
4242
}
4343
]
@@ -54,7 +54,7 @@
5454
"argType": "number"
5555
},
5656
{
57-
"name": "includeSnapshot",
57+
"name": "include_snapshot",
5858
"argType": "boolean"
5959
}
6060
]
@@ -63,23 +63,23 @@
6363
"name": "emulate",
6464
"args": [
6565
{
66-
"name": "networkConditions",
66+
"name": "network_conditions",
6767
"argType": "string"
6868
},
6969
{
70-
"name": "cpuThrottlingRate",
70+
"name": "cpu_throttling_rate",
7171
"argType": "number"
7272
},
7373
{
7474
"name": "geolocation_length",
7575
"argType": "number"
7676
},
7777
{
78-
"name": "userAgent_length",
78+
"name": "user_agent_length",
7979
"argType": "number"
8080
},
8181
{
82-
"name": "colorScheme",
82+
"name": "color_scheme",
8383
"argType": "string"
8484
},
8585
{
@@ -114,7 +114,7 @@
114114
"name": "execute_in_page_tool",
115115
"args": [
116116
{
117-
"name": "toolName_length",
117+
"name": "tool_name_length",
118118
"argType": "number"
119119
},
120120
{
@@ -131,7 +131,7 @@
131131
"argType": "number"
132132
},
133133
{
134-
"name": "includeSnapshot",
134+
"name": "include_snapshot",
135135
"argType": "boolean"
136136
}
137137
]
@@ -144,7 +144,7 @@
144144
"argType": "number"
145145
},
146146
{
147-
"name": "includeSnapshot",
147+
"name": "include_snapshot",
148148
"argType": "boolean"
149149
}
150150
]
@@ -157,11 +157,11 @@
157157
"name": "get_network_request",
158158
"args": [
159159
{
160-
"name": "requestFilePath_length",
160+
"name": "request_file_path_length",
161161
"argType": "number"
162162
},
163163
{
164-
"name": "responseFilePath_length",
164+
"name": "response_file_path_length",
165165
"argType": "number"
166166
}
167167
]
@@ -170,7 +170,7 @@
170170
"name": "get_tab_id",
171171
"args": [
172172
{
173-
"name": "pageId",
173+
"name": "page_id",
174174
"argType": "number"
175175
}
176176
]
@@ -183,7 +183,7 @@
183183
"argType": "string"
184184
},
185185
{
186-
"name": "promptText_length",
186+
"name": "prompt_text_length",
187187
"argType": "number"
188188
}
189189
]
@@ -192,7 +192,7 @@
192192
"name": "hover",
193193
"args": [
194194
{
195-
"name": "includeSnapshot",
195+
"name": "include_snapshot",
196196
"argType": "boolean"
197197
}
198198
]
@@ -218,7 +218,7 @@
218218
"argType": "string"
219219
},
220220
{
221-
"name": "outputDirPath_length",
221+
"name": "output_dir_path_length",
222222
"argType": "number"
223223
}
224224
]
@@ -227,19 +227,19 @@
227227
"name": "list_console_messages",
228228
"args": [
229229
{
230-
"name": "pageSize",
230+
"name": "page_size",
231231
"argType": "number"
232232
},
233233
{
234-
"name": "pageIdx",
234+
"name": "page_idx",
235235
"argType": "number"
236236
},
237237
{
238238
"name": "types_count",
239239
"argType": "number"
240240
},
241241
{
242-
"name": "includePreservedMessages",
242+
"name": "include_preserved_messages",
243243
"argType": "boolean"
244244
}
245245
]
@@ -256,19 +256,19 @@
256256
"name": "list_network_requests",
257257
"args": [
258258
{
259-
"name": "pageSize",
259+
"name": "page_size",
260260
"argType": "number"
261261
},
262262
{
263-
"name": "pageIdx",
263+
"name": "page_idx",
264264
"argType": "number"
265265
},
266266
{
267-
"name": "resourceTypes_count",
267+
"name": "resource_types_count",
268268
"argType": "number"
269269
},
270270
{
271-
"name": "includePreservedRequests",
271+
"name": "include_preserved_requests",
272272
"argType": "boolean"
273273
}
274274
]
@@ -298,15 +298,15 @@
298298
"argType": "number"
299299
},
300300
{
301-
"name": "ignoreCache",
301+
"name": "ignore_cache",
302302
"argType": "boolean"
303303
},
304304
{
305-
"name": "handleBeforeUnload",
305+
"name": "handle_before_unload",
306306
"argType": "string"
307307
},
308308
{
309-
"name": "initScript_length",
309+
"name": "init_script_length",
310310
"argType": "number"
311311
},
312312
{
@@ -327,7 +327,7 @@
327327
"argType": "boolean"
328328
},
329329
{
330-
"name": "isolatedContext_length",
330+
"name": "isolated_context_length",
331331
"argType": "number"
332332
},
333333
{
@@ -340,11 +340,11 @@
340340
"name": "performance_analyze_insight",
341341
"args": [
342342
{
343-
"name": "insightSetId_length",
343+
"name": "insight_set_id_length",
344344
"argType": "number"
345345
},
346346
{
347-
"name": "insightName_length",
347+
"name": "insight_name_length",
348348
"argType": "number"
349349
}
350350
]
@@ -357,11 +357,11 @@
357357
"argType": "boolean"
358358
},
359359
{
360-
"name": "autoStop",
360+
"name": "auto_stop",
361361
"argType": "boolean"
362362
},
363363
{
364-
"name": "filePath_length",
364+
"name": "file_path_length",
365365
"argType": "number"
366366
}
367367
]
@@ -370,7 +370,7 @@
370370
"name": "performance_stop_trace",
371371
"args": [
372372
{
373-
"name": "filePath_length",
373+
"name": "file_path_length",
374374
"argType": "number"
375375
}
376376
]
@@ -383,7 +383,7 @@
383383
"argType": "number"
384384
},
385385
{
386-
"name": "includeSnapshot",
386+
"name": "include_snapshot",
387387
"argType": "boolean"
388388
}
389389
]
@@ -431,11 +431,11 @@
431431
"name": "select_page",
432432
"args": [
433433
{
434-
"name": "pageId",
434+
"name": "page_id",
435435
"argType": "number"
436436
},
437437
{
438-
"name": "bringToFront",
438+
"name": "bring_to_front",
439439
"argType": "boolean"
440440
}
441441
]
@@ -444,7 +444,7 @@
444444
"name": "take_memory_snapshot",
445445
"args": [
446446
{
447-
"name": "filePath_length",
447+
"name": "file_path_length",
448448
"argType": "number"
449449
}
450450
]
@@ -461,11 +461,11 @@
461461
"argType": "number"
462462
},
463463
{
464-
"name": "fullPage",
464+
"name": "full_page",
465465
"argType": "boolean"
466466
},
467467
{
468-
"name": "filePath_length",
468+
"name": "file_path_length",
469469
"argType": "number"
470470
}
471471
]
@@ -478,7 +478,7 @@
478478
"argType": "boolean"
479479
},
480480
{
481-
"name": "filePath_length",
481+
"name": "file_path_length",
482482
"argType": "number"
483483
}
484484
]
@@ -500,7 +500,7 @@
500500
"argType": "number"
501501
},
502502
{
503-
"name": "submitKey_length",
503+
"name": "submit_key_length",
504504
"argType": "number"
505505
}
506506
]
@@ -518,11 +518,11 @@
518518
"name": "upload_file",
519519
"args": [
520520
{
521-
"name": "filePath_length",
521+
"name": "file_path_length",
522522
"argType": "number"
523523
},
524524
{
525-
"name": "includeSnapshot",
525+
"name": "include_snapshot",
526526
"argType": "boolean"
527527
}
528528
]

tests/telemetry/ClearcutLogger.test.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -191,11 +191,11 @@ describe('ClearcutLogger', () => {
191191
const sanitized = sanitizeParams(params, schema);
192192

193193
assert.deepStrictEqual(sanitized, {
194-
myString_length: 5,
195-
myArray_count: 2,
196-
myNumber: 42,
197-
myBool: true,
198-
myEnum: 'a',
194+
my_string_length: 5,
195+
my_array_count: 2,
196+
my_number: 42,
197+
my_bool: true,
198+
my_enum: 'a',
199199
});
200200
});
201201

tests/telemetry/toolMetricsUtils.test.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ describe('toolMetricsUtils', () => {
5555
assert.strictEqual(metrics.length, 1);
5656
assert.strictEqual(metrics[0].name, 'test_tool');
5757
assert.strictEqual(metrics[0].args.length, 1); // uid is blocked
58-
assert.strictEqual(metrics[0].args[0].name, 'argStr_length');
58+
assert.strictEqual(metrics[0].args[0].name, 'arg_str_length');
5959
assert.strictEqual(metrics[0].args[0].argType, 'number');
6060
});
6161

@@ -77,7 +77,7 @@ describe('toolMetricsUtils', () => {
7777

7878
const metrics = generateToolMetrics([mockTool]);
7979
assert.strictEqual(metrics.length, 1);
80-
assert.strictEqual(metrics[0].args[0].name, 'argEnum');
80+
assert.strictEqual(metrics[0].args[0].name, 'arg_enum');
8181
assert.strictEqual(metrics[0].args[0].argType, 'string');
8282
});
8383
});

0 commit comments

Comments
 (0)