@newrelic/preflight 1.40.0 → 1.42.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -1
- package/dist/data/dashboards/ai-coding-assistant-adoption-cost.json +1948 -0
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/metrics/recommendation-engine.d.ts +4 -4
- package/dist/metrics/recommendation-engine.d.ts.map +1 -1
- package/dist/metrics/recommendation-engine.js +18 -22
- package/dist/metrics/recommendation-engine.js.map +1 -1
- package/dist/metrics/trend-analyzer.d.ts +26 -0
- package/dist/metrics/trend-analyzer.d.ts.map +1 -1
- package/dist/metrics/trend-analyzer.js +109 -0
- package/dist/metrics/trend-analyzer.js.map +1 -1
- package/dist/tools/cross-session-tools.d.ts +36 -0
- package/dist/tools/cross-session-tools.d.ts.map +1 -1
- package/dist/tools/cross-session-tools.js +53 -0
- package/dist/tools/cross-session-tools.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,1948 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "AI Coding Assistant — Adoption & Cost",
|
|
3
|
+
"description": "Org-wide adoption, spend, tool/MCP usage, and team leaderboard built entirely from Preflight events. Works on every supported platform with no additional telemetry.",
|
|
4
|
+
"permissions": "PUBLIC_READ_WRITE",
|
|
5
|
+
"pages": [
|
|
6
|
+
{
|
|
7
|
+
"name": "Adoption",
|
|
8
|
+
"description": null,
|
|
9
|
+
"widgets": [
|
|
10
|
+
{
|
|
11
|
+
"title": "About This Page",
|
|
12
|
+
"layout": {
|
|
13
|
+
"column": 1,
|
|
14
|
+
"row": 1,
|
|
15
|
+
"width": 12,
|
|
16
|
+
"height": 1
|
|
17
|
+
},
|
|
18
|
+
"visualization": {
|
|
19
|
+
"id": "viz.markdown"
|
|
20
|
+
},
|
|
21
|
+
"rawConfiguration": {
|
|
22
|
+
"text": "# Adoption\n\nWho is using AI coding assistants, how often, and on which platforms. All widgets read Preflight events (`AiToolCall`, `AiCodingTask`) — no platform-specific telemetry required."
|
|
23
|
+
}
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"title": "Active Developers (30d)",
|
|
27
|
+
"layout": {
|
|
28
|
+
"column": 1,
|
|
29
|
+
"row": 2,
|
|
30
|
+
"width": 3,
|
|
31
|
+
"height": 3
|
|
32
|
+
},
|
|
33
|
+
"visualization": {
|
|
34
|
+
"id": "viz.billboard"
|
|
35
|
+
},
|
|
36
|
+
"rawConfiguration": {
|
|
37
|
+
"facet": {
|
|
38
|
+
"showOtherSeries": false
|
|
39
|
+
},
|
|
40
|
+
"nrqlQueries": [
|
|
41
|
+
{
|
|
42
|
+
"accountIds": [],
|
|
43
|
+
"query": "FROM AiToolCall SELECT uniqueCount(developer) AS 'Developers' SINCE 30 days ago"
|
|
44
|
+
}
|
|
45
|
+
],
|
|
46
|
+
"platformOptions": {
|
|
47
|
+
"ignoreTimeRange": false
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"title": "Sessions (30d)",
|
|
53
|
+
"layout": {
|
|
54
|
+
"column": 4,
|
|
55
|
+
"row": 2,
|
|
56
|
+
"width": 3,
|
|
57
|
+
"height": 3
|
|
58
|
+
},
|
|
59
|
+
"visualization": {
|
|
60
|
+
"id": "viz.billboard"
|
|
61
|
+
},
|
|
62
|
+
"rawConfiguration": {
|
|
63
|
+
"facet": {
|
|
64
|
+
"showOtherSeries": false
|
|
65
|
+
},
|
|
66
|
+
"nrqlQueries": [
|
|
67
|
+
{
|
|
68
|
+
"accountIds": [],
|
|
69
|
+
"query": "FROM AiToolCall SELECT uniqueCount(session_id) AS 'Sessions' SINCE 30 days ago"
|
|
70
|
+
}
|
|
71
|
+
],
|
|
72
|
+
"platformOptions": {
|
|
73
|
+
"ignoreTimeRange": false
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
"title": "Tool Calls (30d)",
|
|
79
|
+
"layout": {
|
|
80
|
+
"column": 7,
|
|
81
|
+
"row": 2,
|
|
82
|
+
"width": 3,
|
|
83
|
+
"height": 3
|
|
84
|
+
},
|
|
85
|
+
"visualization": {
|
|
86
|
+
"id": "viz.billboard"
|
|
87
|
+
},
|
|
88
|
+
"rawConfiguration": {
|
|
89
|
+
"facet": {
|
|
90
|
+
"showOtherSeries": false
|
|
91
|
+
},
|
|
92
|
+
"nrqlQueries": [
|
|
93
|
+
{
|
|
94
|
+
"accountIds": [],
|
|
95
|
+
"query": "FROM AiToolCall SELECT count(*) AS 'Tool Calls' SINCE 30 days ago"
|
|
96
|
+
}
|
|
97
|
+
],
|
|
98
|
+
"platformOptions": {
|
|
99
|
+
"ignoreTimeRange": false
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"title": "Tasks Completed (30d)",
|
|
105
|
+
"layout": {
|
|
106
|
+
"column": 10,
|
|
107
|
+
"row": 2,
|
|
108
|
+
"width": 3,
|
|
109
|
+
"height": 3
|
|
110
|
+
},
|
|
111
|
+
"visualization": {
|
|
112
|
+
"id": "viz.billboard"
|
|
113
|
+
},
|
|
114
|
+
"rawConfiguration": {
|
|
115
|
+
"facet": {
|
|
116
|
+
"showOtherSeries": false
|
|
117
|
+
},
|
|
118
|
+
"nrqlQueries": [
|
|
119
|
+
{
|
|
120
|
+
"accountIds": [],
|
|
121
|
+
"query": "FROM AiCodingTask SELECT count(*) AS 'Tasks' SINCE 30 days ago"
|
|
122
|
+
}
|
|
123
|
+
],
|
|
124
|
+
"platformOptions": {
|
|
125
|
+
"ignoreTimeRange": false
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
"title": "Daily Active Developers",
|
|
131
|
+
"layout": {
|
|
132
|
+
"column": 1,
|
|
133
|
+
"row": 5,
|
|
134
|
+
"width": 4,
|
|
135
|
+
"height": 3
|
|
136
|
+
},
|
|
137
|
+
"visualization": {
|
|
138
|
+
"id": "viz.line"
|
|
139
|
+
},
|
|
140
|
+
"rawConfiguration": {
|
|
141
|
+
"facet": {
|
|
142
|
+
"showOtherSeries": false
|
|
143
|
+
},
|
|
144
|
+
"legend": {
|
|
145
|
+
"enabled": true
|
|
146
|
+
},
|
|
147
|
+
"nrqlQueries": [
|
|
148
|
+
{
|
|
149
|
+
"accountIds": [],
|
|
150
|
+
"query": "FROM AiToolCall SELECT uniqueCount(developer) AS 'Developers' SINCE 30 days ago TIMESERIES 1 day"
|
|
151
|
+
}
|
|
152
|
+
],
|
|
153
|
+
"platformOptions": {
|
|
154
|
+
"ignoreTimeRange": false
|
|
155
|
+
},
|
|
156
|
+
"yAxisLeft": {
|
|
157
|
+
"zero": true
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
},
|
|
161
|
+
{
|
|
162
|
+
"title": "Daily Sessions",
|
|
163
|
+
"layout": {
|
|
164
|
+
"column": 5,
|
|
165
|
+
"row": 5,
|
|
166
|
+
"width": 4,
|
|
167
|
+
"height": 3
|
|
168
|
+
},
|
|
169
|
+
"visualization": {
|
|
170
|
+
"id": "viz.line"
|
|
171
|
+
},
|
|
172
|
+
"rawConfiguration": {
|
|
173
|
+
"facet": {
|
|
174
|
+
"showOtherSeries": false
|
|
175
|
+
},
|
|
176
|
+
"legend": {
|
|
177
|
+
"enabled": true
|
|
178
|
+
},
|
|
179
|
+
"nrqlQueries": [
|
|
180
|
+
{
|
|
181
|
+
"accountIds": [],
|
|
182
|
+
"query": "FROM AiToolCall SELECT uniqueCount(session_id) AS 'Sessions' SINCE 30 days ago TIMESERIES 1 day"
|
|
183
|
+
}
|
|
184
|
+
],
|
|
185
|
+
"platformOptions": {
|
|
186
|
+
"ignoreTimeRange": false
|
|
187
|
+
},
|
|
188
|
+
"yAxisLeft": {
|
|
189
|
+
"zero": true
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
},
|
|
193
|
+
{
|
|
194
|
+
"title": "Platform Mix (30d)",
|
|
195
|
+
"layout": {
|
|
196
|
+
"column": 9,
|
|
197
|
+
"row": 5,
|
|
198
|
+
"width": 4,
|
|
199
|
+
"height": 3
|
|
200
|
+
},
|
|
201
|
+
"visualization": {
|
|
202
|
+
"id": "viz.pie"
|
|
203
|
+
},
|
|
204
|
+
"rawConfiguration": {
|
|
205
|
+
"facet": {
|
|
206
|
+
"showOtherSeries": true
|
|
207
|
+
},
|
|
208
|
+
"legend": {
|
|
209
|
+
"enabled": true
|
|
210
|
+
},
|
|
211
|
+
"nrqlQueries": [
|
|
212
|
+
{
|
|
213
|
+
"accountIds": [],
|
|
214
|
+
"query": "FROM AiToolCall SELECT count(*) FACET platform SINCE 30 days ago"
|
|
215
|
+
}
|
|
216
|
+
],
|
|
217
|
+
"platformOptions": {
|
|
218
|
+
"ignoreTimeRange": false
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
"title": "Daily Lines of Code",
|
|
224
|
+
"layout": {
|
|
225
|
+
"column": 1,
|
|
226
|
+
"row": 8,
|
|
227
|
+
"width": 4,
|
|
228
|
+
"height": 3
|
|
229
|
+
},
|
|
230
|
+
"visualization": {
|
|
231
|
+
"id": "viz.line"
|
|
232
|
+
},
|
|
233
|
+
"rawConfiguration": {
|
|
234
|
+
"facet": {
|
|
235
|
+
"showOtherSeries": false
|
|
236
|
+
},
|
|
237
|
+
"legend": {
|
|
238
|
+
"enabled": true
|
|
239
|
+
},
|
|
240
|
+
"nrqlQueries": [
|
|
241
|
+
{
|
|
242
|
+
"accountIds": [],
|
|
243
|
+
"query": "FROM AiCodingTask SELECT sum(lines_added) AS 'Added', sum(lines_removed) AS 'Removed' SINCE 30 days ago TIMESERIES 1 day"
|
|
244
|
+
}
|
|
245
|
+
],
|
|
246
|
+
"platformOptions": {
|
|
247
|
+
"ignoreTimeRange": false
|
|
248
|
+
},
|
|
249
|
+
"yAxisLeft": {
|
|
250
|
+
"zero": true
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
"title": "Daily Tool Calls by Platform",
|
|
256
|
+
"layout": {
|
|
257
|
+
"column": 5,
|
|
258
|
+
"row": 8,
|
|
259
|
+
"width": 4,
|
|
260
|
+
"height": 3
|
|
261
|
+
},
|
|
262
|
+
"visualization": {
|
|
263
|
+
"id": "viz.stacked-bar"
|
|
264
|
+
},
|
|
265
|
+
"rawConfiguration": {
|
|
266
|
+
"facet": {
|
|
267
|
+
"showOtherSeries": false
|
|
268
|
+
},
|
|
269
|
+
"legend": {
|
|
270
|
+
"enabled": true
|
|
271
|
+
},
|
|
272
|
+
"nrqlQueries": [
|
|
273
|
+
{
|
|
274
|
+
"accountIds": [],
|
|
275
|
+
"query": "FROM AiToolCall SELECT count(*) FACET platform SINCE 30 days ago TIMESERIES 1 day"
|
|
276
|
+
}
|
|
277
|
+
],
|
|
278
|
+
"platformOptions": {
|
|
279
|
+
"ignoreTimeRange": false
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
},
|
|
283
|
+
{
|
|
284
|
+
"title": "Active Days per Developer (30d)",
|
|
285
|
+
"layout": {
|
|
286
|
+
"column": 9,
|
|
287
|
+
"row": 8,
|
|
288
|
+
"width": 4,
|
|
289
|
+
"height": 3
|
|
290
|
+
},
|
|
291
|
+
"visualization": {
|
|
292
|
+
"id": "viz.bar"
|
|
293
|
+
},
|
|
294
|
+
"rawConfiguration": {
|
|
295
|
+
"facet": {
|
|
296
|
+
"showOtherSeries": false
|
|
297
|
+
},
|
|
298
|
+
"nrqlQueries": [
|
|
299
|
+
{
|
|
300
|
+
"accountIds": [],
|
|
301
|
+
"query": "FROM AiToolCall SELECT uniqueCount(dateOf(timestamp)) AS 'Active Days' FACET developer SINCE 30 days ago LIMIT 50"
|
|
302
|
+
}
|
|
303
|
+
],
|
|
304
|
+
"platformOptions": {
|
|
305
|
+
"ignoreTimeRange": false
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
]
|
|
310
|
+
},
|
|
311
|
+
{
|
|
312
|
+
"name": "Cost",
|
|
313
|
+
"description": null,
|
|
314
|
+
"widgets": [
|
|
315
|
+
{
|
|
316
|
+
"title": "How Cost Is Measured",
|
|
317
|
+
"layout": {
|
|
318
|
+
"column": 1,
|
|
319
|
+
"row": 1,
|
|
320
|
+
"width": 12,
|
|
321
|
+
"height": 1
|
|
322
|
+
},
|
|
323
|
+
"visualization": {
|
|
324
|
+
"id": "viz.markdown"
|
|
325
|
+
},
|
|
326
|
+
"rawConfiguration": {
|
|
327
|
+
"text": "# Cost\n\nSpend from `AiCodingTask.estimated_cost_usd` (per-task events, safe to sum). Token and cache widgets show ratios over the session-level `ai.cost.*` gauges — the gauges are cumulative snapshots, so only ratios (not raw sums) are meaningful across sessions. With `companionMode: true` the `ai.cost.*` gauges are suppressed, so the token/cache widgets go quiet and Claude Code's own OTel metrics become the cost authority — task cost events remain and are tagged `cost_authority: 'external'`.\n\n**Blank token widgets?** Cache Hit % and Token Mix % read `ai.cost.*` gauges from the Metric API. Those gauges are emitted only by a live Preflight MCP server with cloud export enabled (`mode: cloud` or `both`, plus a license key). Event-only data — including backfilled or generated data — leaves them blank."
|
|
328
|
+
}
|
|
329
|
+
},
|
|
330
|
+
{
|
|
331
|
+
"title": "Total Cost (30d)",
|
|
332
|
+
"layout": {
|
|
333
|
+
"column": 1,
|
|
334
|
+
"row": 2,
|
|
335
|
+
"width": 3,
|
|
336
|
+
"height": 3
|
|
337
|
+
},
|
|
338
|
+
"visualization": {
|
|
339
|
+
"id": "viz.billboard"
|
|
340
|
+
},
|
|
341
|
+
"rawConfiguration": {
|
|
342
|
+
"facet": {
|
|
343
|
+
"showOtherSeries": false
|
|
344
|
+
},
|
|
345
|
+
"nrqlQueries": [
|
|
346
|
+
{
|
|
347
|
+
"accountIds": [],
|
|
348
|
+
"query": "FROM AiCodingTask SELECT sum(estimated_cost_usd) AS 'USD' SINCE 30 days ago"
|
|
349
|
+
}
|
|
350
|
+
],
|
|
351
|
+
"platformOptions": {
|
|
352
|
+
"ignoreTimeRange": false
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
},
|
|
356
|
+
{
|
|
357
|
+
"title": "Total Cost (7d)",
|
|
358
|
+
"layout": {
|
|
359
|
+
"column": 4,
|
|
360
|
+
"row": 2,
|
|
361
|
+
"width": 3,
|
|
362
|
+
"height": 3
|
|
363
|
+
},
|
|
364
|
+
"visualization": {
|
|
365
|
+
"id": "viz.billboard"
|
|
366
|
+
},
|
|
367
|
+
"rawConfiguration": {
|
|
368
|
+
"facet": {
|
|
369
|
+
"showOtherSeries": false
|
|
370
|
+
},
|
|
371
|
+
"nrqlQueries": [
|
|
372
|
+
{
|
|
373
|
+
"accountIds": [],
|
|
374
|
+
"query": "FROM AiCodingTask SELECT sum(estimated_cost_usd) AS 'USD' SINCE 7 days ago"
|
|
375
|
+
}
|
|
376
|
+
],
|
|
377
|
+
"platformOptions": {
|
|
378
|
+
"ignoreTimeRange": false
|
|
379
|
+
}
|
|
380
|
+
}
|
|
381
|
+
},
|
|
382
|
+
{
|
|
383
|
+
"title": "Avg Cost per Task (7d)",
|
|
384
|
+
"layout": {
|
|
385
|
+
"column": 7,
|
|
386
|
+
"row": 2,
|
|
387
|
+
"width": 3,
|
|
388
|
+
"height": 3
|
|
389
|
+
},
|
|
390
|
+
"visualization": {
|
|
391
|
+
"id": "viz.billboard"
|
|
392
|
+
},
|
|
393
|
+
"rawConfiguration": {
|
|
394
|
+
"facet": {
|
|
395
|
+
"showOtherSeries": false
|
|
396
|
+
},
|
|
397
|
+
"nrqlQueries": [
|
|
398
|
+
{
|
|
399
|
+
"accountIds": [],
|
|
400
|
+
"query": "FROM AiCodingTask SELECT average(estimated_cost_usd) AS 'USD / Task' SINCE 7 days ago"
|
|
401
|
+
}
|
|
402
|
+
],
|
|
403
|
+
"platformOptions": {
|
|
404
|
+
"ignoreTimeRange": false
|
|
405
|
+
}
|
|
406
|
+
}
|
|
407
|
+
},
|
|
408
|
+
{
|
|
409
|
+
"title": "Cache Hit % (7d)",
|
|
410
|
+
"layout": {
|
|
411
|
+
"column": 10,
|
|
412
|
+
"row": 2,
|
|
413
|
+
"width": 3,
|
|
414
|
+
"height": 3
|
|
415
|
+
},
|
|
416
|
+
"visualization": {
|
|
417
|
+
"id": "viz.billboard"
|
|
418
|
+
},
|
|
419
|
+
"rawConfiguration": {
|
|
420
|
+
"facet": {
|
|
421
|
+
"showOtherSeries": false
|
|
422
|
+
},
|
|
423
|
+
"nrqlQueries": [
|
|
424
|
+
{
|
|
425
|
+
"accountIds": [],
|
|
426
|
+
"query": "FROM Metric SELECT sum(ai.cost.tokens_cache_read) / (sum(ai.cost.tokens_input) + sum(ai.cost.tokens_cache_read)) * 100 AS 'Cache Hit %' SINCE 7 days ago"
|
|
427
|
+
}
|
|
428
|
+
],
|
|
429
|
+
"platformOptions": {
|
|
430
|
+
"ignoreTimeRange": false
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
},
|
|
434
|
+
{
|
|
435
|
+
"title": "Daily Cost by Developer",
|
|
436
|
+
"layout": {
|
|
437
|
+
"column": 1,
|
|
438
|
+
"row": 5,
|
|
439
|
+
"width": 4,
|
|
440
|
+
"height": 3
|
|
441
|
+
},
|
|
442
|
+
"visualization": {
|
|
443
|
+
"id": "viz.stacked-bar"
|
|
444
|
+
},
|
|
445
|
+
"rawConfiguration": {
|
|
446
|
+
"facet": {
|
|
447
|
+
"showOtherSeries": false
|
|
448
|
+
},
|
|
449
|
+
"legend": {
|
|
450
|
+
"enabled": true
|
|
451
|
+
},
|
|
452
|
+
"nrqlQueries": [
|
|
453
|
+
{
|
|
454
|
+
"accountIds": [],
|
|
455
|
+
"query": "FROM AiCodingTask SELECT sum(estimated_cost_usd) AS 'USD' FACET developer SINCE 30 days ago TIMESERIES 1 day"
|
|
456
|
+
}
|
|
457
|
+
],
|
|
458
|
+
"platformOptions": {
|
|
459
|
+
"ignoreTimeRange": false
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
},
|
|
463
|
+
{
|
|
464
|
+
"title": "Monthly Cost by Developer",
|
|
465
|
+
"layout": {
|
|
466
|
+
"column": 5,
|
|
467
|
+
"row": 5,
|
|
468
|
+
"width": 4,
|
|
469
|
+
"height": 3
|
|
470
|
+
},
|
|
471
|
+
"visualization": {
|
|
472
|
+
"id": "viz.stacked-bar"
|
|
473
|
+
},
|
|
474
|
+
"rawConfiguration": {
|
|
475
|
+
"facet": {
|
|
476
|
+
"showOtherSeries": false
|
|
477
|
+
},
|
|
478
|
+
"legend": {
|
|
479
|
+
"enabled": true
|
|
480
|
+
},
|
|
481
|
+
"nrqlQueries": [
|
|
482
|
+
{
|
|
483
|
+
"accountIds": [],
|
|
484
|
+
"query": "FROM AiCodingTask SELECT sum(estimated_cost_usd) AS 'USD' FACET developer SINCE 6 months ago TIMESERIES 1 month"
|
|
485
|
+
}
|
|
486
|
+
],
|
|
487
|
+
"platformOptions": {
|
|
488
|
+
"ignoreTimeRange": false
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
},
|
|
492
|
+
{
|
|
493
|
+
"title": "Cost by Project (30d)",
|
|
494
|
+
"layout": {
|
|
495
|
+
"column": 9,
|
|
496
|
+
"row": 5,
|
|
497
|
+
"width": 4,
|
|
498
|
+
"height": 3
|
|
499
|
+
},
|
|
500
|
+
"visualization": {
|
|
501
|
+
"id": "viz.pie"
|
|
502
|
+
},
|
|
503
|
+
"rawConfiguration": {
|
|
504
|
+
"facet": {
|
|
505
|
+
"showOtherSeries": true
|
|
506
|
+
},
|
|
507
|
+
"legend": {
|
|
508
|
+
"enabled": true
|
|
509
|
+
},
|
|
510
|
+
"nrqlQueries": [
|
|
511
|
+
{
|
|
512
|
+
"accountIds": [],
|
|
513
|
+
"query": "FROM AiCodingTask SELECT sum(estimated_cost_usd) AS 'USD' FACET project_id SINCE 30 days ago"
|
|
514
|
+
}
|
|
515
|
+
],
|
|
516
|
+
"platformOptions": {
|
|
517
|
+
"ignoreTimeRange": false
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
},
|
|
521
|
+
{
|
|
522
|
+
"title": "Token Mix % (7d)",
|
|
523
|
+
"layout": {
|
|
524
|
+
"column": 1,
|
|
525
|
+
"row": 8,
|
|
526
|
+
"width": 4,
|
|
527
|
+
"height": 3
|
|
528
|
+
},
|
|
529
|
+
"visualization": {
|
|
530
|
+
"id": "viz.bar"
|
|
531
|
+
},
|
|
532
|
+
"rawConfiguration": {
|
|
533
|
+
"facet": {
|
|
534
|
+
"showOtherSeries": false
|
|
535
|
+
},
|
|
536
|
+
"nrqlQueries": [
|
|
537
|
+
{
|
|
538
|
+
"accountIds": [],
|
|
539
|
+
"query": "FROM Metric SELECT sum(ai.cost.tokens_input) / (sum(ai.cost.tokens_input) + sum(ai.cost.tokens_output) + sum(ai.cost.tokens_thinking) + sum(ai.cost.tokens_cache_read) + sum(ai.cost.tokens_cache_creation)) * 100 AS 'Input %', sum(ai.cost.tokens_output) / (sum(ai.cost.tokens_input) + sum(ai.cost.tokens_output) + sum(ai.cost.tokens_thinking) + sum(ai.cost.tokens_cache_read) + sum(ai.cost.tokens_cache_creation)) * 100 AS 'Output %', sum(ai.cost.tokens_thinking) / (sum(ai.cost.tokens_input) + sum(ai.cost.tokens_output) + sum(ai.cost.tokens_thinking) + sum(ai.cost.tokens_cache_read) + sum(ai.cost.tokens_cache_creation)) * 100 AS 'Thinking %', sum(ai.cost.tokens_cache_read) / (sum(ai.cost.tokens_input) + sum(ai.cost.tokens_output) + sum(ai.cost.tokens_thinking) + sum(ai.cost.tokens_cache_read) + sum(ai.cost.tokens_cache_creation)) * 100 AS 'Cache Read %', sum(ai.cost.tokens_cache_creation) / (sum(ai.cost.tokens_input) + sum(ai.cost.tokens_output) + sum(ai.cost.tokens_thinking) + sum(ai.cost.tokens_cache_read) + sum(ai.cost.tokens_cache_creation)) * 100 AS 'Cache Write %' SINCE 7 days ago"
|
|
540
|
+
}
|
|
541
|
+
],
|
|
542
|
+
"platformOptions": {
|
|
543
|
+
"ignoreTimeRange": false
|
|
544
|
+
}
|
|
545
|
+
}
|
|
546
|
+
},
|
|
547
|
+
{
|
|
548
|
+
"title": "Daily Token Volume",
|
|
549
|
+
"layout": {
|
|
550
|
+
"column": 5,
|
|
551
|
+
"row": 8,
|
|
552
|
+
"width": 4,
|
|
553
|
+
"height": 3
|
|
554
|
+
},
|
|
555
|
+
"visualization": {
|
|
556
|
+
"id": "viz.line"
|
|
557
|
+
},
|
|
558
|
+
"rawConfiguration": {
|
|
559
|
+
"facet": {
|
|
560
|
+
"showOtherSeries": false
|
|
561
|
+
},
|
|
562
|
+
"legend": {
|
|
563
|
+
"enabled": true
|
|
564
|
+
},
|
|
565
|
+
"nrqlQueries": [
|
|
566
|
+
{
|
|
567
|
+
"accountIds": [],
|
|
568
|
+
"query": "FROM AiCodingTask SELECT sum(tokens_used) AS 'Tokens' SINCE 30 days ago TIMESERIES 1 day"
|
|
569
|
+
}
|
|
570
|
+
],
|
|
571
|
+
"platformOptions": {
|
|
572
|
+
"ignoreTimeRange": false
|
|
573
|
+
},
|
|
574
|
+
"yAxisLeft": {
|
|
575
|
+
"zero": true
|
|
576
|
+
}
|
|
577
|
+
}
|
|
578
|
+
},
|
|
579
|
+
{
|
|
580
|
+
"title": "Most Expensive Sessions (7d)",
|
|
581
|
+
"layout": {
|
|
582
|
+
"column": 9,
|
|
583
|
+
"row": 8,
|
|
584
|
+
"width": 4,
|
|
585
|
+
"height": 3
|
|
586
|
+
},
|
|
587
|
+
"visualization": {
|
|
588
|
+
"id": "viz.table"
|
|
589
|
+
},
|
|
590
|
+
"rawConfiguration": {
|
|
591
|
+
"facet": {
|
|
592
|
+
"showOtherSeries": false
|
|
593
|
+
},
|
|
594
|
+
"nrqlQueries": [
|
|
595
|
+
{
|
|
596
|
+
"accountIds": [],
|
|
597
|
+
"query": "FROM AiCodingTask SELECT sum(estimated_cost_usd) AS 'USD' FACET developer, session_id SINCE 7 days ago LIMIT 10"
|
|
598
|
+
}
|
|
599
|
+
],
|
|
600
|
+
"platformOptions": {
|
|
601
|
+
"ignoreTimeRange": false
|
|
602
|
+
}
|
|
603
|
+
}
|
|
604
|
+
}
|
|
605
|
+
]
|
|
606
|
+
},
|
|
607
|
+
{
|
|
608
|
+
"name": "Tools & MCP",
|
|
609
|
+
"description": null,
|
|
610
|
+
"widgets": [
|
|
611
|
+
{
|
|
612
|
+
"title": "Reading MCP Data",
|
|
613
|
+
"layout": {
|
|
614
|
+
"column": 1,
|
|
615
|
+
"row": 1,
|
|
616
|
+
"width": 12,
|
|
617
|
+
"height": 1
|
|
618
|
+
},
|
|
619
|
+
"visualization": {
|
|
620
|
+
"id": "viz.markdown"
|
|
621
|
+
},
|
|
622
|
+
"rawConfiguration": {
|
|
623
|
+
"text": "MCP calls reach New Relic in two shapes depending on how Preflight is deployed. Hook-observed calls (stdio mode, the default) are `AiToolCall` events whose tool name is `mcp__<server>__<tool>`. Proxy-routed calls are `AiMcpToolCall` events with native `server` and `tool` fields. The billboards below count both shapes together; the breakdowns are labeled Hooks or Proxy. A blank breakdown means no MCP traffic of that shape in the window, not a broken widget."
|
|
624
|
+
}
|
|
625
|
+
},
|
|
626
|
+
{
|
|
627
|
+
"title": "Top Tools (7d)",
|
|
628
|
+
"layout": {
|
|
629
|
+
"column": 1,
|
|
630
|
+
"row": 2,
|
|
631
|
+
"width": 4,
|
|
632
|
+
"height": 3
|
|
633
|
+
},
|
|
634
|
+
"visualization": {
|
|
635
|
+
"id": "viz.bar"
|
|
636
|
+
},
|
|
637
|
+
"rawConfiguration": {
|
|
638
|
+
"facet": {
|
|
639
|
+
"showOtherSeries": false
|
|
640
|
+
},
|
|
641
|
+
"nrqlQueries": [
|
|
642
|
+
{
|
|
643
|
+
"accountIds": [],
|
|
644
|
+
"query": "FROM AiToolCall SELECT count(*) AS 'Calls' FACET tool SINCE 7 days ago LIMIT 25"
|
|
645
|
+
}
|
|
646
|
+
],
|
|
647
|
+
"platformOptions": {
|
|
648
|
+
"ignoreTimeRange": false
|
|
649
|
+
}
|
|
650
|
+
}
|
|
651
|
+
},
|
|
652
|
+
{
|
|
653
|
+
"title": "Tool Reliability (7d)",
|
|
654
|
+
"layout": {
|
|
655
|
+
"column": 5,
|
|
656
|
+
"row": 2,
|
|
657
|
+
"width": 4,
|
|
658
|
+
"height": 3
|
|
659
|
+
},
|
|
660
|
+
"visualization": {
|
|
661
|
+
"id": "viz.table"
|
|
662
|
+
},
|
|
663
|
+
"rawConfiguration": {
|
|
664
|
+
"facet": {
|
|
665
|
+
"showOtherSeries": false
|
|
666
|
+
},
|
|
667
|
+
"nrqlQueries": [
|
|
668
|
+
{
|
|
669
|
+
"accountIds": [],
|
|
670
|
+
"query": "FROM AiToolCall SELECT count(*) AS 'Calls', filter(count(*), WHERE success = false) AS 'Errors', percentage(count(*), WHERE success = false) AS 'Error %' FACET tool SINCE 7 days ago LIMIT 25"
|
|
671
|
+
}
|
|
672
|
+
],
|
|
673
|
+
"platformOptions": {
|
|
674
|
+
"ignoreTimeRange": false
|
|
675
|
+
}
|
|
676
|
+
}
|
|
677
|
+
},
|
|
678
|
+
{
|
|
679
|
+
"title": "Daily Tool Errors by Type (7d)",
|
|
680
|
+
"layout": {
|
|
681
|
+
"column": 9,
|
|
682
|
+
"row": 2,
|
|
683
|
+
"width": 4,
|
|
684
|
+
"height": 3
|
|
685
|
+
},
|
|
686
|
+
"visualization": {
|
|
687
|
+
"id": "viz.stacked-bar"
|
|
688
|
+
},
|
|
689
|
+
"rawConfiguration": {
|
|
690
|
+
"facet": {
|
|
691
|
+
"showOtherSeries": false
|
|
692
|
+
},
|
|
693
|
+
"legend": {
|
|
694
|
+
"enabled": true
|
|
695
|
+
},
|
|
696
|
+
"nrqlQueries": [
|
|
697
|
+
{
|
|
698
|
+
"accountIds": [],
|
|
699
|
+
"query": "FROM AiToolCall SELECT count(*) AS 'Errors' WHERE success = false FACET error_type SINCE 7 days ago TIMESERIES 1 day"
|
|
700
|
+
}
|
|
701
|
+
],
|
|
702
|
+
"platformOptions": {
|
|
703
|
+
"ignoreTimeRange": false
|
|
704
|
+
}
|
|
705
|
+
}
|
|
706
|
+
},
|
|
707
|
+
{
|
|
708
|
+
"title": "MCP Calls (7d)",
|
|
709
|
+
"layout": {
|
|
710
|
+
"column": 1,
|
|
711
|
+
"row": 5,
|
|
712
|
+
"width": 4,
|
|
713
|
+
"height": 3
|
|
714
|
+
},
|
|
715
|
+
"visualization": {
|
|
716
|
+
"id": "viz.billboard"
|
|
717
|
+
},
|
|
718
|
+
"rawConfiguration": {
|
|
719
|
+
"facet": {
|
|
720
|
+
"showOtherSeries": false
|
|
721
|
+
},
|
|
722
|
+
"nrqlQueries": [
|
|
723
|
+
{
|
|
724
|
+
"accountIds": [],
|
|
725
|
+
"query": "FROM AiToolCall, AiMcpToolCall SELECT count(*) AS 'MCP Calls' WHERE tool LIKE 'mcp__%' OR eventType() = 'AiMcpToolCall' SINCE 7 days ago"
|
|
726
|
+
}
|
|
727
|
+
],
|
|
728
|
+
"platformOptions": {
|
|
729
|
+
"ignoreTimeRange": false
|
|
730
|
+
}
|
|
731
|
+
}
|
|
732
|
+
},
|
|
733
|
+
{
|
|
734
|
+
"title": "MCP Error Rate (7d)",
|
|
735
|
+
"layout": {
|
|
736
|
+
"column": 5,
|
|
737
|
+
"row": 5,
|
|
738
|
+
"width": 4,
|
|
739
|
+
"height": 3
|
|
740
|
+
},
|
|
741
|
+
"visualization": {
|
|
742
|
+
"id": "viz.billboard"
|
|
743
|
+
},
|
|
744
|
+
"rawConfiguration": {
|
|
745
|
+
"facet": {
|
|
746
|
+
"showOtherSeries": false
|
|
747
|
+
},
|
|
748
|
+
"nrqlQueries": [
|
|
749
|
+
{
|
|
750
|
+
"accountIds": [],
|
|
751
|
+
"query": "FROM AiToolCall, AiMcpToolCall SELECT percentage(count(*), WHERE success = false) AS 'Error %' WHERE tool LIKE 'mcp__%' OR eventType() = 'AiMcpToolCall' SINCE 7 days ago"
|
|
752
|
+
}
|
|
753
|
+
],
|
|
754
|
+
"platformOptions": {
|
|
755
|
+
"ignoreTimeRange": false
|
|
756
|
+
}
|
|
757
|
+
}
|
|
758
|
+
},
|
|
759
|
+
{
|
|
760
|
+
"title": "Unique MCP Users (7d)",
|
|
761
|
+
"layout": {
|
|
762
|
+
"column": 9,
|
|
763
|
+
"row": 5,
|
|
764
|
+
"width": 4,
|
|
765
|
+
"height": 3
|
|
766
|
+
},
|
|
767
|
+
"visualization": {
|
|
768
|
+
"id": "viz.billboard"
|
|
769
|
+
},
|
|
770
|
+
"rawConfiguration": {
|
|
771
|
+
"facet": {
|
|
772
|
+
"showOtherSeries": false
|
|
773
|
+
},
|
|
774
|
+
"nrqlQueries": [
|
|
775
|
+
{
|
|
776
|
+
"accountIds": [],
|
|
777
|
+
"query": "FROM AiToolCall, AiMcpToolCall SELECT uniqueCount(developer) AS 'Users' WHERE tool LIKE 'mcp__%' OR eventType() = 'AiMcpToolCall' SINCE 7 days ago"
|
|
778
|
+
}
|
|
779
|
+
],
|
|
780
|
+
"platformOptions": {
|
|
781
|
+
"ignoreTimeRange": false
|
|
782
|
+
}
|
|
783
|
+
}
|
|
784
|
+
},
|
|
785
|
+
{
|
|
786
|
+
"title": "Top MCP Servers — Hooks (7d)",
|
|
787
|
+
"layout": {
|
|
788
|
+
"column": 1,
|
|
789
|
+
"row": 8,
|
|
790
|
+
"width": 4,
|
|
791
|
+
"height": 3
|
|
792
|
+
},
|
|
793
|
+
"visualization": {
|
|
794
|
+
"id": "viz.bar"
|
|
795
|
+
},
|
|
796
|
+
"rawConfiguration": {
|
|
797
|
+
"facet": {
|
|
798
|
+
"showOtherSeries": false
|
|
799
|
+
},
|
|
800
|
+
"nrqlQueries": [
|
|
801
|
+
{
|
|
802
|
+
"accountIds": [],
|
|
803
|
+
"query": "FROM AiToolCall SELECT count(*) AS 'Calls' WHERE tool LIKE 'mcp__%' FACET aparse(tool, 'mcp__*__%') AS 'MCP Server' SINCE 7 days ago LIMIT 25"
|
|
804
|
+
}
|
|
805
|
+
],
|
|
806
|
+
"platformOptions": {
|
|
807
|
+
"ignoreTimeRange": false
|
|
808
|
+
}
|
|
809
|
+
}
|
|
810
|
+
},
|
|
811
|
+
{
|
|
812
|
+
"title": "MCP Tools — Hooks (7d)",
|
|
813
|
+
"layout": {
|
|
814
|
+
"column": 1,
|
|
815
|
+
"row": 11,
|
|
816
|
+
"width": 6,
|
|
817
|
+
"height": 3
|
|
818
|
+
},
|
|
819
|
+
"visualization": {
|
|
820
|
+
"id": "viz.table"
|
|
821
|
+
},
|
|
822
|
+
"rawConfiguration": {
|
|
823
|
+
"facet": {
|
|
824
|
+
"showOtherSeries": false
|
|
825
|
+
},
|
|
826
|
+
"nrqlQueries": [
|
|
827
|
+
{
|
|
828
|
+
"accountIds": [],
|
|
829
|
+
"query": "FROM AiToolCall SELECT count(*) AS 'Calls', filter(count(*), WHERE success = false) AS 'Errors', uniqueCount(developer) AS 'Users' WHERE tool LIKE 'mcp__%' FACET aparse(tool, 'mcp__*__%') AS 'MCP Server', aparse(tool, 'mcp__%__*') AS 'Tool' SINCE 7 days ago LIMIT 50"
|
|
830
|
+
}
|
|
831
|
+
],
|
|
832
|
+
"platformOptions": {
|
|
833
|
+
"ignoreTimeRange": false
|
|
834
|
+
}
|
|
835
|
+
}
|
|
836
|
+
},
|
|
837
|
+
{
|
|
838
|
+
"title": "MCP Servers Over Time (7d)",
|
|
839
|
+
"layout": {
|
|
840
|
+
"column": 9,
|
|
841
|
+
"row": 8,
|
|
842
|
+
"width": 4,
|
|
843
|
+
"height": 3
|
|
844
|
+
},
|
|
845
|
+
"visualization": {
|
|
846
|
+
"id": "viz.line"
|
|
847
|
+
},
|
|
848
|
+
"rawConfiguration": {
|
|
849
|
+
"facet": {
|
|
850
|
+
"showOtherSeries": false
|
|
851
|
+
},
|
|
852
|
+
"legend": {
|
|
853
|
+
"enabled": true
|
|
854
|
+
},
|
|
855
|
+
"nrqlQueries": [
|
|
856
|
+
{
|
|
857
|
+
"accountIds": [],
|
|
858
|
+
"query": "FROM AiToolCall SELECT count(*) WHERE tool LIKE 'mcp__%' FACET aparse(tool, 'mcp__*__%') AS 'MCP Server' SINCE 7 days ago TIMESERIES 1 day LIMIT 10"
|
|
859
|
+
},
|
|
860
|
+
{
|
|
861
|
+
"accountIds": [],
|
|
862
|
+
"query": "FROM AiMcpToolCall SELECT count(*) FACET server AS 'MCP Server (proxy)' SINCE 7 days ago TIMESERIES 1 day LIMIT 10"
|
|
863
|
+
}
|
|
864
|
+
],
|
|
865
|
+
"platformOptions": {
|
|
866
|
+
"ignoreTimeRange": false
|
|
867
|
+
},
|
|
868
|
+
"yAxisLeft": {
|
|
869
|
+
"zero": true
|
|
870
|
+
}
|
|
871
|
+
}
|
|
872
|
+
},
|
|
873
|
+
{
|
|
874
|
+
"title": "MCP Tools — Proxy (7d)",
|
|
875
|
+
"layout": {
|
|
876
|
+
"column": 7,
|
|
877
|
+
"row": 11,
|
|
878
|
+
"width": 6,
|
|
879
|
+
"height": 3
|
|
880
|
+
},
|
|
881
|
+
"visualization": {
|
|
882
|
+
"id": "viz.table"
|
|
883
|
+
},
|
|
884
|
+
"rawConfiguration": {
|
|
885
|
+
"facet": {
|
|
886
|
+
"showOtherSeries": false
|
|
887
|
+
},
|
|
888
|
+
"legend": {
|
|
889
|
+
"enabled": true
|
|
890
|
+
},
|
|
891
|
+
"nrqlQueries": [
|
|
892
|
+
{
|
|
893
|
+
"accountIds": [],
|
|
894
|
+
"query": "FROM AiMcpToolCall SELECT count(*) AS 'Calls', average(duration_ms) AS 'Avg ms', percentage(count(*), WHERE success = false) AS 'Error %', uniqueCount(developer) AS 'Users' FACET server, tool SINCE 7 days ago LIMIT 50"
|
|
895
|
+
}
|
|
896
|
+
],
|
|
897
|
+
"platformOptions": {
|
|
898
|
+
"ignoreTimeRange": false
|
|
899
|
+
}
|
|
900
|
+
}
|
|
901
|
+
},
|
|
902
|
+
{
|
|
903
|
+
"title": "Top MCP Servers — Proxy (7d)",
|
|
904
|
+
"layout": {
|
|
905
|
+
"column": 5,
|
|
906
|
+
"row": 8,
|
|
907
|
+
"width": 4,
|
|
908
|
+
"height": 3
|
|
909
|
+
},
|
|
910
|
+
"visualization": {
|
|
911
|
+
"id": "viz.bar"
|
|
912
|
+
},
|
|
913
|
+
"rawConfiguration": {
|
|
914
|
+
"facet": {
|
|
915
|
+
"showOtherSeries": false
|
|
916
|
+
},
|
|
917
|
+
"legend": {
|
|
918
|
+
"enabled": true
|
|
919
|
+
},
|
|
920
|
+
"nrqlQueries": [
|
|
921
|
+
{
|
|
922
|
+
"accountIds": [],
|
|
923
|
+
"query": "FROM AiMcpToolCall SELECT count(*) AS 'Calls' FACET server SINCE 7 days ago LIMIT 25"
|
|
924
|
+
}
|
|
925
|
+
],
|
|
926
|
+
"platformOptions": {
|
|
927
|
+
"ignoreTimeRange": false
|
|
928
|
+
}
|
|
929
|
+
}
|
|
930
|
+
}
|
|
931
|
+
]
|
|
932
|
+
},
|
|
933
|
+
{
|
|
934
|
+
"name": "Team Leaderboard",
|
|
935
|
+
"description": null,
|
|
936
|
+
"widgets": [
|
|
937
|
+
{
|
|
938
|
+
"title": "Activity Leaderboard (7d)",
|
|
939
|
+
"layout": {
|
|
940
|
+
"column": 1,
|
|
941
|
+
"row": 1,
|
|
942
|
+
"width": 6,
|
|
943
|
+
"height": 4
|
|
944
|
+
},
|
|
945
|
+
"visualization": {
|
|
946
|
+
"id": "viz.table"
|
|
947
|
+
},
|
|
948
|
+
"rawConfiguration": {
|
|
949
|
+
"facet": {
|
|
950
|
+
"showOtherSeries": false
|
|
951
|
+
},
|
|
952
|
+
"nrqlQueries": [
|
|
953
|
+
{
|
|
954
|
+
"accountIds": [],
|
|
955
|
+
"query": "FROM AiToolCall SELECT uniqueCount(dateOf(timestamp)) AS 'Active Days', uniqueCount(session_id) AS 'Sessions', count(*) AS 'Tool Calls', percentage(count(*), WHERE success = true) AS 'Success %' FACET developer SINCE 7 days ago LIMIT 60"
|
|
956
|
+
}
|
|
957
|
+
],
|
|
958
|
+
"platformOptions": {
|
|
959
|
+
"ignoreTimeRange": false
|
|
960
|
+
}
|
|
961
|
+
}
|
|
962
|
+
},
|
|
963
|
+
{
|
|
964
|
+
"title": "Outcome Leaderboard (7d)",
|
|
965
|
+
"layout": {
|
|
966
|
+
"column": 7,
|
|
967
|
+
"row": 1,
|
|
968
|
+
"width": 6,
|
|
969
|
+
"height": 4
|
|
970
|
+
},
|
|
971
|
+
"visualization": {
|
|
972
|
+
"id": "viz.table"
|
|
973
|
+
},
|
|
974
|
+
"rawConfiguration": {
|
|
975
|
+
"facet": {
|
|
976
|
+
"showOtherSeries": false
|
|
977
|
+
},
|
|
978
|
+
"nrqlQueries": [
|
|
979
|
+
{
|
|
980
|
+
"accountIds": [],
|
|
981
|
+
"query": "FROM AiCodingTask SELECT count(*) AS 'Tasks', sum(estimated_cost_usd) AS 'Cost (USD)', sum(lines_added) AS 'Lines Added', percentage(count(*), WHERE tests_passed > 0) AS 'Tests Passing %' FACET developer SINCE 7 days ago LIMIT 60"
|
|
982
|
+
}
|
|
983
|
+
],
|
|
984
|
+
"platformOptions": {
|
|
985
|
+
"ignoreTimeRange": false
|
|
986
|
+
}
|
|
987
|
+
}
|
|
988
|
+
},
|
|
989
|
+
{
|
|
990
|
+
"title": "Efficiency Score by Developer (7d)",
|
|
991
|
+
"layout": {
|
|
992
|
+
"column": 1,
|
|
993
|
+
"row": 5,
|
|
994
|
+
"width": 4,
|
|
995
|
+
"height": 3
|
|
996
|
+
},
|
|
997
|
+
"visualization": {
|
|
998
|
+
"id": "viz.bar"
|
|
999
|
+
},
|
|
1000
|
+
"rawConfiguration": {
|
|
1001
|
+
"facet": {
|
|
1002
|
+
"showOtherSeries": false
|
|
1003
|
+
},
|
|
1004
|
+
"nrqlQueries": [
|
|
1005
|
+
{
|
|
1006
|
+
"accountIds": [],
|
|
1007
|
+
"query": "FROM Metric SELECT average(ai.efficiency.score) AS 'Score' FACET developer SINCE 7 days ago"
|
|
1008
|
+
}
|
|
1009
|
+
],
|
|
1010
|
+
"platformOptions": {
|
|
1011
|
+
"ignoreTimeRange": false
|
|
1012
|
+
}
|
|
1013
|
+
}
|
|
1014
|
+
},
|
|
1015
|
+
{
|
|
1016
|
+
"title": "Anti-Patterns by Developer (7d)",
|
|
1017
|
+
"layout": {
|
|
1018
|
+
"column": 5,
|
|
1019
|
+
"row": 5,
|
|
1020
|
+
"width": 4,
|
|
1021
|
+
"height": 3
|
|
1022
|
+
},
|
|
1023
|
+
"visualization": {
|
|
1024
|
+
"id": "viz.bar"
|
|
1025
|
+
},
|
|
1026
|
+
"rawConfiguration": {
|
|
1027
|
+
"facet": {
|
|
1028
|
+
"showOtherSeries": false
|
|
1029
|
+
},
|
|
1030
|
+
"nrqlQueries": [
|
|
1031
|
+
{
|
|
1032
|
+
"accountIds": [],
|
|
1033
|
+
"query": "FROM AiAntiPattern SELECT count(*) AS 'Anti-Patterns' FACET developer SINCE 7 days ago"
|
|
1034
|
+
}
|
|
1035
|
+
],
|
|
1036
|
+
"platformOptions": {
|
|
1037
|
+
"ignoreTimeRange": false
|
|
1038
|
+
}
|
|
1039
|
+
}
|
|
1040
|
+
},
|
|
1041
|
+
{
|
|
1042
|
+
"title": "Avg Cost per Task by Developer (7d)",
|
|
1043
|
+
"layout": {
|
|
1044
|
+
"column": 9,
|
|
1045
|
+
"row": 5,
|
|
1046
|
+
"width": 4,
|
|
1047
|
+
"height": 3
|
|
1048
|
+
},
|
|
1049
|
+
"visualization": {
|
|
1050
|
+
"id": "viz.bar"
|
|
1051
|
+
},
|
|
1052
|
+
"rawConfiguration": {
|
|
1053
|
+
"facet": {
|
|
1054
|
+
"showOtherSeries": false
|
|
1055
|
+
},
|
|
1056
|
+
"nrqlQueries": [
|
|
1057
|
+
{
|
|
1058
|
+
"accountIds": [],
|
|
1059
|
+
"query": "FROM AiCodingTask SELECT average(estimated_cost_usd) AS 'USD / Task' FACET developer SINCE 7 days ago"
|
|
1060
|
+
}
|
|
1061
|
+
],
|
|
1062
|
+
"platformOptions": {
|
|
1063
|
+
"ignoreTimeRange": false
|
|
1064
|
+
}
|
|
1065
|
+
}
|
|
1066
|
+
}
|
|
1067
|
+
]
|
|
1068
|
+
},
|
|
1069
|
+
{
|
|
1070
|
+
"name": "Team Pulse",
|
|
1071
|
+
"description": null,
|
|
1072
|
+
"widgets": [
|
|
1073
|
+
{
|
|
1074
|
+
"title": "About This Page",
|
|
1075
|
+
"layout": {
|
|
1076
|
+
"column": 1,
|
|
1077
|
+
"row": 1,
|
|
1078
|
+
"width": 12,
|
|
1079
|
+
"height": 2
|
|
1080
|
+
},
|
|
1081
|
+
"visualization": {
|
|
1082
|
+
"id": "viz.markdown"
|
|
1083
|
+
},
|
|
1084
|
+
"rawConfiguration": {
|
|
1085
|
+
"text": "Adoption momentum over 8 weeks and a 60-day look at who is compounding value. Leaderboards are normalized by **active days** (days with at least one recorded task), so a quiet calendar week is not mistaken for a productivity drop. Coding tasks are the output unit: one task is a detected unit of work (a feature, fix, or investigation inside a session). **Git outcomes** (bottom rows) read the `ai.git.*` gauges and the edit-rejection signal — both need a Preflight release recent enough to export them; upgrade with `preflight update` if these rows are empty. The gauges are per-session running totals, so tables show per-session maxima and Cost per PR divides one sum by another (both sums snapshot at the same cadence, so the ratio holds). Edit accept rate counts Edit/Write calls without a 'rejected'/'denied'/'interrupted' error_type. Model-level drill-down lives on the **Models** page."
|
|
1086
|
+
}
|
|
1087
|
+
},
|
|
1088
|
+
{
|
|
1089
|
+
"title": "Weekly Active Developers",
|
|
1090
|
+
"layout": {
|
|
1091
|
+
"column": 1,
|
|
1092
|
+
"row": 3,
|
|
1093
|
+
"width": 4,
|
|
1094
|
+
"height": 3
|
|
1095
|
+
},
|
|
1096
|
+
"visualization": {
|
|
1097
|
+
"id": "viz.line"
|
|
1098
|
+
},
|
|
1099
|
+
"rawConfiguration": {
|
|
1100
|
+
"facet": {
|
|
1101
|
+
"showOtherSeries": false
|
|
1102
|
+
},
|
|
1103
|
+
"legend": {
|
|
1104
|
+
"enabled": true
|
|
1105
|
+
},
|
|
1106
|
+
"nrqlQueries": [
|
|
1107
|
+
{
|
|
1108
|
+
"accountIds": [],
|
|
1109
|
+
"query": "FROM AiToolCall SELECT uniqueCount(developer) AS 'Developers' SINCE 8 weeks ago TIMESERIES 1 week"
|
|
1110
|
+
}
|
|
1111
|
+
],
|
|
1112
|
+
"platformOptions": {
|
|
1113
|
+
"ignoreTimeRange": false
|
|
1114
|
+
},
|
|
1115
|
+
"yAxisLeft": {
|
|
1116
|
+
"zero": true
|
|
1117
|
+
}
|
|
1118
|
+
}
|
|
1119
|
+
},
|
|
1120
|
+
{
|
|
1121
|
+
"title": "Weekly Sessions",
|
|
1122
|
+
"layout": {
|
|
1123
|
+
"column": 5,
|
|
1124
|
+
"row": 3,
|
|
1125
|
+
"width": 4,
|
|
1126
|
+
"height": 3
|
|
1127
|
+
},
|
|
1128
|
+
"visualization": {
|
|
1129
|
+
"id": "viz.line"
|
|
1130
|
+
},
|
|
1131
|
+
"rawConfiguration": {
|
|
1132
|
+
"facet": {
|
|
1133
|
+
"showOtherSeries": false
|
|
1134
|
+
},
|
|
1135
|
+
"legend": {
|
|
1136
|
+
"enabled": true
|
|
1137
|
+
},
|
|
1138
|
+
"nrqlQueries": [
|
|
1139
|
+
{
|
|
1140
|
+
"accountIds": [],
|
|
1141
|
+
"query": "FROM AiToolCall SELECT uniqueCount(session_id) AS 'Sessions' SINCE 8 weeks ago TIMESERIES 1 week"
|
|
1142
|
+
}
|
|
1143
|
+
],
|
|
1144
|
+
"platformOptions": {
|
|
1145
|
+
"ignoreTimeRange": false
|
|
1146
|
+
},
|
|
1147
|
+
"yAxisLeft": {
|
|
1148
|
+
"zero": true
|
|
1149
|
+
}
|
|
1150
|
+
}
|
|
1151
|
+
},
|
|
1152
|
+
{
|
|
1153
|
+
"title": "Weekly Cost",
|
|
1154
|
+
"layout": {
|
|
1155
|
+
"column": 9,
|
|
1156
|
+
"row": 3,
|
|
1157
|
+
"width": 4,
|
|
1158
|
+
"height": 3
|
|
1159
|
+
},
|
|
1160
|
+
"visualization": {
|
|
1161
|
+
"id": "viz.line"
|
|
1162
|
+
},
|
|
1163
|
+
"rawConfiguration": {
|
|
1164
|
+
"facet": {
|
|
1165
|
+
"showOtherSeries": false
|
|
1166
|
+
},
|
|
1167
|
+
"legend": {
|
|
1168
|
+
"enabled": true
|
|
1169
|
+
},
|
|
1170
|
+
"nrqlQueries": [
|
|
1171
|
+
{
|
|
1172
|
+
"accountIds": [],
|
|
1173
|
+
"query": "FROM AiCodingTask SELECT sum(estimated_cost_usd) AS 'USD' SINCE 8 weeks ago TIMESERIES 1 week"
|
|
1174
|
+
}
|
|
1175
|
+
],
|
|
1176
|
+
"platformOptions": {
|
|
1177
|
+
"ignoreTimeRange": false
|
|
1178
|
+
},
|
|
1179
|
+
"yAxisLeft": {
|
|
1180
|
+
"zero": true
|
|
1181
|
+
}
|
|
1182
|
+
}
|
|
1183
|
+
},
|
|
1184
|
+
{
|
|
1185
|
+
"title": "Weekly Token Volume",
|
|
1186
|
+
"layout": {
|
|
1187
|
+
"column": 1,
|
|
1188
|
+
"row": 6,
|
|
1189
|
+
"width": 4,
|
|
1190
|
+
"height": 3
|
|
1191
|
+
},
|
|
1192
|
+
"visualization": {
|
|
1193
|
+
"id": "viz.line"
|
|
1194
|
+
},
|
|
1195
|
+
"rawConfiguration": {
|
|
1196
|
+
"facet": {
|
|
1197
|
+
"showOtherSeries": false
|
|
1198
|
+
},
|
|
1199
|
+
"legend": {
|
|
1200
|
+
"enabled": true
|
|
1201
|
+
},
|
|
1202
|
+
"nrqlQueries": [
|
|
1203
|
+
{
|
|
1204
|
+
"accountIds": [],
|
|
1205
|
+
"query": "FROM AiCodingTask SELECT sum(tokens_used) AS 'Tokens' SINCE 8 weeks ago TIMESERIES 1 week"
|
|
1206
|
+
}
|
|
1207
|
+
],
|
|
1208
|
+
"platformOptions": {
|
|
1209
|
+
"ignoreTimeRange": false
|
|
1210
|
+
},
|
|
1211
|
+
"yAxisLeft": {
|
|
1212
|
+
"zero": true
|
|
1213
|
+
}
|
|
1214
|
+
}
|
|
1215
|
+
},
|
|
1216
|
+
{
|
|
1217
|
+
"title": "Avg Cost per Task Trend",
|
|
1218
|
+
"layout": {
|
|
1219
|
+
"column": 5,
|
|
1220
|
+
"row": 6,
|
|
1221
|
+
"width": 4,
|
|
1222
|
+
"height": 3
|
|
1223
|
+
},
|
|
1224
|
+
"visualization": {
|
|
1225
|
+
"id": "viz.line"
|
|
1226
|
+
},
|
|
1227
|
+
"rawConfiguration": {
|
|
1228
|
+
"facet": {
|
|
1229
|
+
"showOtherSeries": false
|
|
1230
|
+
},
|
|
1231
|
+
"legend": {
|
|
1232
|
+
"enabled": true
|
|
1233
|
+
},
|
|
1234
|
+
"nrqlQueries": [
|
|
1235
|
+
{
|
|
1236
|
+
"accountIds": [],
|
|
1237
|
+
"query": "FROM AiCodingTask SELECT average(estimated_cost_usd) AS 'USD / Task' SINCE 8 weeks ago TIMESERIES 1 week"
|
|
1238
|
+
}
|
|
1239
|
+
],
|
|
1240
|
+
"platformOptions": {
|
|
1241
|
+
"ignoreTimeRange": false
|
|
1242
|
+
},
|
|
1243
|
+
"yAxisLeft": {
|
|
1244
|
+
"zero": true
|
|
1245
|
+
}
|
|
1246
|
+
}
|
|
1247
|
+
},
|
|
1248
|
+
{
|
|
1249
|
+
"title": "Cache Hit % Trend",
|
|
1250
|
+
"layout": {
|
|
1251
|
+
"column": 9,
|
|
1252
|
+
"row": 6,
|
|
1253
|
+
"width": 4,
|
|
1254
|
+
"height": 3
|
|
1255
|
+
},
|
|
1256
|
+
"visualization": {
|
|
1257
|
+
"id": "viz.line"
|
|
1258
|
+
},
|
|
1259
|
+
"rawConfiguration": {
|
|
1260
|
+
"facet": {
|
|
1261
|
+
"showOtherSeries": false
|
|
1262
|
+
},
|
|
1263
|
+
"legend": {
|
|
1264
|
+
"enabled": true
|
|
1265
|
+
},
|
|
1266
|
+
"nrqlQueries": [
|
|
1267
|
+
{
|
|
1268
|
+
"accountIds": [],
|
|
1269
|
+
"query": "FROM Metric SELECT sum(ai.cost.tokens_cache_read) / (sum(ai.cost.tokens_input) + sum(ai.cost.tokens_cache_read)) * 100 AS 'Cache Hit %' SINCE 8 weeks ago TIMESERIES 1 week"
|
|
1270
|
+
}
|
|
1271
|
+
],
|
|
1272
|
+
"platformOptions": {
|
|
1273
|
+
"ignoreTimeRange": false
|
|
1274
|
+
},
|
|
1275
|
+
"yAxisLeft": {
|
|
1276
|
+
"zero": true
|
|
1277
|
+
}
|
|
1278
|
+
}
|
|
1279
|
+
},
|
|
1280
|
+
{
|
|
1281
|
+
"title": "Power Users (60d)",
|
|
1282
|
+
"layout": {
|
|
1283
|
+
"column": 1,
|
|
1284
|
+
"row": 9,
|
|
1285
|
+
"width": 12,
|
|
1286
|
+
"height": 4
|
|
1287
|
+
},
|
|
1288
|
+
"visualization": {
|
|
1289
|
+
"id": "viz.table"
|
|
1290
|
+
},
|
|
1291
|
+
"rawConfiguration": {
|
|
1292
|
+
"facet": {
|
|
1293
|
+
"showOtherSeries": false
|
|
1294
|
+
},
|
|
1295
|
+
"legend": {
|
|
1296
|
+
"enabled": true
|
|
1297
|
+
},
|
|
1298
|
+
"nrqlQueries": [
|
|
1299
|
+
{
|
|
1300
|
+
"accountIds": [],
|
|
1301
|
+
"query": "FROM AiCodingTask SELECT count(*) AS 'Tasks', sum(estimated_cost_usd) AS 'Cost (USD)', sum(lines_added) AS 'Lines Added', uniqueCount(dateOf(timestamp)) AS 'Active Days', count(*) / uniqueCount(dateOf(timestamp)) AS 'Tasks / Active Day', sum(duration_ms) / 3600000 AS 'Assisted Hours' FACET developer SINCE 60 days ago LIMIT 50"
|
|
1302
|
+
}
|
|
1303
|
+
],
|
|
1304
|
+
"platformOptions": {
|
|
1305
|
+
"ignoreTimeRange": false
|
|
1306
|
+
}
|
|
1307
|
+
}
|
|
1308
|
+
},
|
|
1309
|
+
{
|
|
1310
|
+
"title": "Tasks by Developer — Last 30d",
|
|
1311
|
+
"layout": {
|
|
1312
|
+
"column": 1,
|
|
1313
|
+
"row": 13,
|
|
1314
|
+
"width": 6,
|
|
1315
|
+
"height": 4
|
|
1316
|
+
},
|
|
1317
|
+
"visualization": {
|
|
1318
|
+
"id": "viz.table"
|
|
1319
|
+
},
|
|
1320
|
+
"rawConfiguration": {
|
|
1321
|
+
"facet": {
|
|
1322
|
+
"showOtherSeries": false
|
|
1323
|
+
},
|
|
1324
|
+
"legend": {
|
|
1325
|
+
"enabled": true
|
|
1326
|
+
},
|
|
1327
|
+
"nrqlQueries": [
|
|
1328
|
+
{
|
|
1329
|
+
"accountIds": [],
|
|
1330
|
+
"query": "FROM AiCodingTask SELECT count(*) AS 'Tasks', sum(estimated_cost_usd) AS 'Cost (USD)', uniqueCount(dateOf(timestamp)) AS 'Active Days' FACET developer SINCE 30 days ago LIMIT 25"
|
|
1331
|
+
}
|
|
1332
|
+
],
|
|
1333
|
+
"platformOptions": {
|
|
1334
|
+
"ignoreTimeRange": false
|
|
1335
|
+
}
|
|
1336
|
+
}
|
|
1337
|
+
},
|
|
1338
|
+
{
|
|
1339
|
+
"title": "Tasks by Developer — Prior 30d",
|
|
1340
|
+
"layout": {
|
|
1341
|
+
"column": 7,
|
|
1342
|
+
"row": 13,
|
|
1343
|
+
"width": 6,
|
|
1344
|
+
"height": 4
|
|
1345
|
+
},
|
|
1346
|
+
"visualization": {
|
|
1347
|
+
"id": "viz.table"
|
|
1348
|
+
},
|
|
1349
|
+
"rawConfiguration": {
|
|
1350
|
+
"facet": {
|
|
1351
|
+
"showOtherSeries": false
|
|
1352
|
+
},
|
|
1353
|
+
"legend": {
|
|
1354
|
+
"enabled": true
|
|
1355
|
+
},
|
|
1356
|
+
"nrqlQueries": [
|
|
1357
|
+
{
|
|
1358
|
+
"accountIds": [],
|
|
1359
|
+
"query": "FROM AiCodingTask SELECT count(*) AS 'Tasks', sum(estimated_cost_usd) AS 'Cost (USD)', uniqueCount(dateOf(timestamp)) AS 'Active Days' FACET developer SINCE 60 days ago UNTIL 30 days ago LIMIT 25"
|
|
1360
|
+
}
|
|
1361
|
+
],
|
|
1362
|
+
"platformOptions": {
|
|
1363
|
+
"ignoreTimeRange": false
|
|
1364
|
+
}
|
|
1365
|
+
}
|
|
1366
|
+
},
|
|
1367
|
+
{
|
|
1368
|
+
"title": "Active Days per Developer (60d)",
|
|
1369
|
+
"layout": {
|
|
1370
|
+
"column": 1,
|
|
1371
|
+
"row": 17,
|
|
1372
|
+
"width": 6,
|
|
1373
|
+
"height": 3
|
|
1374
|
+
},
|
|
1375
|
+
"visualization": {
|
|
1376
|
+
"id": "viz.bar"
|
|
1377
|
+
},
|
|
1378
|
+
"rawConfiguration": {
|
|
1379
|
+
"facet": {
|
|
1380
|
+
"showOtherSeries": false
|
|
1381
|
+
},
|
|
1382
|
+
"legend": {
|
|
1383
|
+
"enabled": true
|
|
1384
|
+
},
|
|
1385
|
+
"nrqlQueries": [
|
|
1386
|
+
{
|
|
1387
|
+
"accountIds": [],
|
|
1388
|
+
"query": "FROM AiToolCall SELECT uniqueCount(dateOf(timestamp)) AS 'Active Days' FACET developer SINCE 60 days ago LIMIT 50"
|
|
1389
|
+
}
|
|
1390
|
+
],
|
|
1391
|
+
"platformOptions": {
|
|
1392
|
+
"ignoreTimeRange": false
|
|
1393
|
+
}
|
|
1394
|
+
}
|
|
1395
|
+
},
|
|
1396
|
+
{
|
|
1397
|
+
"title": "Assisted Hours per Developer (60d)",
|
|
1398
|
+
"layout": {
|
|
1399
|
+
"column": 7,
|
|
1400
|
+
"row": 17,
|
|
1401
|
+
"width": 6,
|
|
1402
|
+
"height": 3
|
|
1403
|
+
},
|
|
1404
|
+
"visualization": {
|
|
1405
|
+
"id": "viz.bar"
|
|
1406
|
+
},
|
|
1407
|
+
"rawConfiguration": {
|
|
1408
|
+
"facet": {
|
|
1409
|
+
"showOtherSeries": false
|
|
1410
|
+
},
|
|
1411
|
+
"legend": {
|
|
1412
|
+
"enabled": true
|
|
1413
|
+
},
|
|
1414
|
+
"nrqlQueries": [
|
|
1415
|
+
{
|
|
1416
|
+
"accountIds": [],
|
|
1417
|
+
"query": "FROM AiCodingTask SELECT sum(duration_ms) / 3600000 AS 'Assisted Hours' FACET developer SINCE 60 days ago LIMIT 50"
|
|
1418
|
+
}
|
|
1419
|
+
],
|
|
1420
|
+
"platformOptions": {
|
|
1421
|
+
"ignoreTimeRange": false
|
|
1422
|
+
}
|
|
1423
|
+
}
|
|
1424
|
+
},
|
|
1425
|
+
{
|
|
1426
|
+
"title": "Git Outcomes by Session (7d)",
|
|
1427
|
+
"layout": {
|
|
1428
|
+
"column": 1,
|
|
1429
|
+
"row": 20,
|
|
1430
|
+
"width": 6,
|
|
1431
|
+
"height": 4
|
|
1432
|
+
},
|
|
1433
|
+
"visualization": {
|
|
1434
|
+
"id": "viz.table"
|
|
1435
|
+
},
|
|
1436
|
+
"rawConfiguration": {
|
|
1437
|
+
"facet": {
|
|
1438
|
+
"showOtherSeries": false
|
|
1439
|
+
},
|
|
1440
|
+
"legend": {
|
|
1441
|
+
"enabled": true
|
|
1442
|
+
},
|
|
1443
|
+
"nrqlQueries": [
|
|
1444
|
+
{
|
|
1445
|
+
"accountIds": [],
|
|
1446
|
+
"query": "FROM Metric SELECT max(ai.git.pr_created) AS 'PRs Created', max(ai.git.pr_merged) AS 'PRs Merged', max(ai.git.commit_count) AS 'Commits', max(ai.git.push_count) AS 'Pushes' FACET developer, session_id SINCE 7 days ago LIMIT 50"
|
|
1447
|
+
}
|
|
1448
|
+
],
|
|
1449
|
+
"platformOptions": {
|
|
1450
|
+
"ignoreTimeRange": false
|
|
1451
|
+
}
|
|
1452
|
+
}
|
|
1453
|
+
},
|
|
1454
|
+
{
|
|
1455
|
+
"title": "Edit Accept Rate (7d)",
|
|
1456
|
+
"layout": {
|
|
1457
|
+
"column": 7,
|
|
1458
|
+
"row": 20,
|
|
1459
|
+
"width": 3,
|
|
1460
|
+
"height": 4
|
|
1461
|
+
},
|
|
1462
|
+
"visualization": {
|
|
1463
|
+
"id": "viz.billboard"
|
|
1464
|
+
},
|
|
1465
|
+
"rawConfiguration": {
|
|
1466
|
+
"facet": {
|
|
1467
|
+
"showOtherSeries": false
|
|
1468
|
+
},
|
|
1469
|
+
"legend": {
|
|
1470
|
+
"enabled": true
|
|
1471
|
+
},
|
|
1472
|
+
"nrqlQueries": [
|
|
1473
|
+
{
|
|
1474
|
+
"accountIds": [],
|
|
1475
|
+
"query": "FROM AiToolCall SELECT percentage(count(*), WHERE error_type IS NULL OR error_type NOT IN ('rejected', 'denied', 'interrupted')) AS 'Accept %' WHERE tool IN ('Edit', 'Write', 'NotebookEdit') SINCE 7 days ago"
|
|
1476
|
+
}
|
|
1477
|
+
],
|
|
1478
|
+
"platformOptions": {
|
|
1479
|
+
"ignoreTimeRange": false
|
|
1480
|
+
}
|
|
1481
|
+
}
|
|
1482
|
+
},
|
|
1483
|
+
{
|
|
1484
|
+
"title": "Cost per PR (7d)",
|
|
1485
|
+
"layout": {
|
|
1486
|
+
"column": 10,
|
|
1487
|
+
"row": 20,
|
|
1488
|
+
"width": 3,
|
|
1489
|
+
"height": 4
|
|
1490
|
+
},
|
|
1491
|
+
"visualization": {
|
|
1492
|
+
"id": "viz.billboard"
|
|
1493
|
+
},
|
|
1494
|
+
"rawConfiguration": {
|
|
1495
|
+
"facet": {
|
|
1496
|
+
"showOtherSeries": false
|
|
1497
|
+
},
|
|
1498
|
+
"legend": {
|
|
1499
|
+
"enabled": true
|
|
1500
|
+
},
|
|
1501
|
+
"nrqlQueries": [
|
|
1502
|
+
{
|
|
1503
|
+
"accountIds": [],
|
|
1504
|
+
"query": "FROM Metric SELECT sum(ai.cost.session_total_usd) / sum(ai.git.pr_created) AS 'USD / PR' SINCE 7 days ago"
|
|
1505
|
+
}
|
|
1506
|
+
],
|
|
1507
|
+
"platformOptions": {
|
|
1508
|
+
"ignoreTimeRange": false
|
|
1509
|
+
}
|
|
1510
|
+
}
|
|
1511
|
+
},
|
|
1512
|
+
{
|
|
1513
|
+
"title": "Weekly Cost per PR",
|
|
1514
|
+
"layout": {
|
|
1515
|
+
"column": 1,
|
|
1516
|
+
"row": 24,
|
|
1517
|
+
"width": 6,
|
|
1518
|
+
"height": 3
|
|
1519
|
+
},
|
|
1520
|
+
"visualization": {
|
|
1521
|
+
"id": "viz.line"
|
|
1522
|
+
},
|
|
1523
|
+
"rawConfiguration": {
|
|
1524
|
+
"facet": {
|
|
1525
|
+
"showOtherSeries": false
|
|
1526
|
+
},
|
|
1527
|
+
"legend": {
|
|
1528
|
+
"enabled": true
|
|
1529
|
+
},
|
|
1530
|
+
"nrqlQueries": [
|
|
1531
|
+
{
|
|
1532
|
+
"accountIds": [],
|
|
1533
|
+
"query": "FROM Metric SELECT sum(ai.cost.session_total_usd) / sum(ai.git.pr_created) AS 'USD / PR' SINCE 8 weeks ago TIMESERIES 1 week"
|
|
1534
|
+
}
|
|
1535
|
+
],
|
|
1536
|
+
"platformOptions": {
|
|
1537
|
+
"ignoreTimeRange": false
|
|
1538
|
+
},
|
|
1539
|
+
"yAxisLeft": {
|
|
1540
|
+
"zero": true
|
|
1541
|
+
}
|
|
1542
|
+
}
|
|
1543
|
+
},
|
|
1544
|
+
{
|
|
1545
|
+
"title": "Weekly Sessions Shipping PRs",
|
|
1546
|
+
"layout": {
|
|
1547
|
+
"column": 7,
|
|
1548
|
+
"row": 24,
|
|
1549
|
+
"width": 6,
|
|
1550
|
+
"height": 3
|
|
1551
|
+
},
|
|
1552
|
+
"visualization": {
|
|
1553
|
+
"id": "viz.line"
|
|
1554
|
+
},
|
|
1555
|
+
"rawConfiguration": {
|
|
1556
|
+
"facet": {
|
|
1557
|
+
"showOtherSeries": false
|
|
1558
|
+
},
|
|
1559
|
+
"legend": {
|
|
1560
|
+
"enabled": true
|
|
1561
|
+
},
|
|
1562
|
+
"nrqlQueries": [
|
|
1563
|
+
{
|
|
1564
|
+
"accountIds": [],
|
|
1565
|
+
"query": "FROM Metric SELECT uniqueCount(session_id) AS 'Sessions with PRs' WHERE ai.git.pr_created > 0 SINCE 8 weeks ago TIMESERIES 1 week"
|
|
1566
|
+
}
|
|
1567
|
+
],
|
|
1568
|
+
"platformOptions": {
|
|
1569
|
+
"ignoreTimeRange": false
|
|
1570
|
+
},
|
|
1571
|
+
"yAxisLeft": {
|
|
1572
|
+
"zero": true
|
|
1573
|
+
}
|
|
1574
|
+
}
|
|
1575
|
+
}
|
|
1576
|
+
]
|
|
1577
|
+
},
|
|
1578
|
+
{
|
|
1579
|
+
"name": "Models",
|
|
1580
|
+
"description": null,
|
|
1581
|
+
"widgets": [
|
|
1582
|
+
{
|
|
1583
|
+
"title": "Reading This Page",
|
|
1584
|
+
"layout": {
|
|
1585
|
+
"column": 1,
|
|
1586
|
+
"row": 1,
|
|
1587
|
+
"width": 12,
|
|
1588
|
+
"height": 2
|
|
1589
|
+
},
|
|
1590
|
+
"visualization": {
|
|
1591
|
+
"id": "viz.markdown"
|
|
1592
|
+
},
|
|
1593
|
+
"rawConfiguration": {
|
|
1594
|
+
"text": "Which models are working best for which work. Task-level widgets read the `model` and `outcome_type` attributes on `AiCodingTask` — tasks from versions that don't stamp them appear without them, and a task that switched models mid-flight attributes wholly to the model active at completion. Cache Hit % reads `ai.cost.*` gauges, which exist only when a live server exports metrics. Success % counts tasks whose last test run passed (or that ran no tests)."
|
|
1595
|
+
}
|
|
1596
|
+
},
|
|
1597
|
+
{
|
|
1598
|
+
"title": "Cost by Model (30d)",
|
|
1599
|
+
"layout": {
|
|
1600
|
+
"column": 1,
|
|
1601
|
+
"row": 3,
|
|
1602
|
+
"width": 4,
|
|
1603
|
+
"height": 3
|
|
1604
|
+
},
|
|
1605
|
+
"visualization": {
|
|
1606
|
+
"id": "viz.pie"
|
|
1607
|
+
},
|
|
1608
|
+
"rawConfiguration": {
|
|
1609
|
+
"facet": {
|
|
1610
|
+
"showOtherSeries": false
|
|
1611
|
+
},
|
|
1612
|
+
"legend": {
|
|
1613
|
+
"enabled": true
|
|
1614
|
+
},
|
|
1615
|
+
"nrqlQueries": [
|
|
1616
|
+
{
|
|
1617
|
+
"accountIds": [],
|
|
1618
|
+
"query": "FROM AiCodingTask SELECT sum(estimated_cost_usd) AS 'USD' FACET model SINCE 30 days ago"
|
|
1619
|
+
}
|
|
1620
|
+
],
|
|
1621
|
+
"platformOptions": {
|
|
1622
|
+
"ignoreTimeRange": false
|
|
1623
|
+
}
|
|
1624
|
+
}
|
|
1625
|
+
},
|
|
1626
|
+
{
|
|
1627
|
+
"title": "Daily Cost by Model",
|
|
1628
|
+
"layout": {
|
|
1629
|
+
"column": 5,
|
|
1630
|
+
"row": 3,
|
|
1631
|
+
"width": 4,
|
|
1632
|
+
"height": 3
|
|
1633
|
+
},
|
|
1634
|
+
"visualization": {
|
|
1635
|
+
"id": "viz.stacked-bar"
|
|
1636
|
+
},
|
|
1637
|
+
"rawConfiguration": {
|
|
1638
|
+
"facet": {
|
|
1639
|
+
"showOtherSeries": false
|
|
1640
|
+
},
|
|
1641
|
+
"legend": {
|
|
1642
|
+
"enabled": true
|
|
1643
|
+
},
|
|
1644
|
+
"nrqlQueries": [
|
|
1645
|
+
{
|
|
1646
|
+
"accountIds": [],
|
|
1647
|
+
"query": "FROM AiCodingTask SELECT sum(estimated_cost_usd) AS 'USD' FACET model SINCE 30 days ago TIMESERIES 1 day"
|
|
1648
|
+
}
|
|
1649
|
+
],
|
|
1650
|
+
"platformOptions": {
|
|
1651
|
+
"ignoreTimeRange": false
|
|
1652
|
+
}
|
|
1653
|
+
}
|
|
1654
|
+
},
|
|
1655
|
+
{
|
|
1656
|
+
"title": "Tasks by Model (30d)",
|
|
1657
|
+
"layout": {
|
|
1658
|
+
"column": 9,
|
|
1659
|
+
"row": 3,
|
|
1660
|
+
"width": 4,
|
|
1661
|
+
"height": 3
|
|
1662
|
+
},
|
|
1663
|
+
"visualization": {
|
|
1664
|
+
"id": "viz.bar"
|
|
1665
|
+
},
|
|
1666
|
+
"rawConfiguration": {
|
|
1667
|
+
"facet": {
|
|
1668
|
+
"showOtherSeries": false
|
|
1669
|
+
},
|
|
1670
|
+
"legend": {
|
|
1671
|
+
"enabled": true
|
|
1672
|
+
},
|
|
1673
|
+
"nrqlQueries": [
|
|
1674
|
+
{
|
|
1675
|
+
"accountIds": [],
|
|
1676
|
+
"query": "FROM AiCodingTask SELECT count(*) AS 'Tasks' FACET model SINCE 30 days ago"
|
|
1677
|
+
}
|
|
1678
|
+
],
|
|
1679
|
+
"platformOptions": {
|
|
1680
|
+
"ignoreTimeRange": false
|
|
1681
|
+
}
|
|
1682
|
+
}
|
|
1683
|
+
},
|
|
1684
|
+
{
|
|
1685
|
+
"title": "Avg Cost per Task by Model (30d)",
|
|
1686
|
+
"layout": {
|
|
1687
|
+
"column": 1,
|
|
1688
|
+
"row": 6,
|
|
1689
|
+
"width": 4,
|
|
1690
|
+
"height": 3
|
|
1691
|
+
},
|
|
1692
|
+
"visualization": {
|
|
1693
|
+
"id": "viz.bar"
|
|
1694
|
+
},
|
|
1695
|
+
"rawConfiguration": {
|
|
1696
|
+
"facet": {
|
|
1697
|
+
"showOtherSeries": false
|
|
1698
|
+
},
|
|
1699
|
+
"legend": {
|
|
1700
|
+
"enabled": true
|
|
1701
|
+
},
|
|
1702
|
+
"nrqlQueries": [
|
|
1703
|
+
{
|
|
1704
|
+
"accountIds": [],
|
|
1705
|
+
"query": "FROM AiCodingTask SELECT average(estimated_cost_usd) AS 'USD / Task' FACET model SINCE 30 days ago"
|
|
1706
|
+
}
|
|
1707
|
+
],
|
|
1708
|
+
"platformOptions": {
|
|
1709
|
+
"ignoreTimeRange": false
|
|
1710
|
+
}
|
|
1711
|
+
}
|
|
1712
|
+
},
|
|
1713
|
+
{
|
|
1714
|
+
"title": "Tokens per Task by Model (30d)",
|
|
1715
|
+
"layout": {
|
|
1716
|
+
"column": 5,
|
|
1717
|
+
"row": 6,
|
|
1718
|
+
"width": 4,
|
|
1719
|
+
"height": 3
|
|
1720
|
+
},
|
|
1721
|
+
"visualization": {
|
|
1722
|
+
"id": "viz.bar"
|
|
1723
|
+
},
|
|
1724
|
+
"rawConfiguration": {
|
|
1725
|
+
"facet": {
|
|
1726
|
+
"showOtherSeries": false
|
|
1727
|
+
},
|
|
1728
|
+
"legend": {
|
|
1729
|
+
"enabled": true
|
|
1730
|
+
},
|
|
1731
|
+
"nrqlQueries": [
|
|
1732
|
+
{
|
|
1733
|
+
"accountIds": [],
|
|
1734
|
+
"query": "FROM AiCodingTask SELECT average(tokens_used) AS 'Tokens / Task' FACET model SINCE 30 days ago"
|
|
1735
|
+
}
|
|
1736
|
+
],
|
|
1737
|
+
"platformOptions": {
|
|
1738
|
+
"ignoreTimeRange": false
|
|
1739
|
+
}
|
|
1740
|
+
}
|
|
1741
|
+
},
|
|
1742
|
+
{
|
|
1743
|
+
"title": "Avg Task Minutes by Model (30d)",
|
|
1744
|
+
"layout": {
|
|
1745
|
+
"column": 9,
|
|
1746
|
+
"row": 6,
|
|
1747
|
+
"width": 4,
|
|
1748
|
+
"height": 3
|
|
1749
|
+
},
|
|
1750
|
+
"visualization": {
|
|
1751
|
+
"id": "viz.bar"
|
|
1752
|
+
},
|
|
1753
|
+
"rawConfiguration": {
|
|
1754
|
+
"facet": {
|
|
1755
|
+
"showOtherSeries": false
|
|
1756
|
+
},
|
|
1757
|
+
"legend": {
|
|
1758
|
+
"enabled": true
|
|
1759
|
+
},
|
|
1760
|
+
"nrqlQueries": [
|
|
1761
|
+
{
|
|
1762
|
+
"accountIds": [],
|
|
1763
|
+
"query": "FROM AiCodingTask SELECT average(duration_ms) / 60000 AS 'Minutes / Task' FACET model SINCE 30 days ago"
|
|
1764
|
+
}
|
|
1765
|
+
],
|
|
1766
|
+
"platformOptions": {
|
|
1767
|
+
"ignoreTimeRange": false
|
|
1768
|
+
}
|
|
1769
|
+
}
|
|
1770
|
+
},
|
|
1771
|
+
{
|
|
1772
|
+
"title": "Task Success % by Model (30d)",
|
|
1773
|
+
"layout": {
|
|
1774
|
+
"column": 1,
|
|
1775
|
+
"row": 9,
|
|
1776
|
+
"width": 4,
|
|
1777
|
+
"height": 3
|
|
1778
|
+
},
|
|
1779
|
+
"visualization": {
|
|
1780
|
+
"id": "viz.bar"
|
|
1781
|
+
},
|
|
1782
|
+
"rawConfiguration": {
|
|
1783
|
+
"facet": {
|
|
1784
|
+
"showOtherSeries": false
|
|
1785
|
+
},
|
|
1786
|
+
"legend": {
|
|
1787
|
+
"enabled": true
|
|
1788
|
+
},
|
|
1789
|
+
"nrqlQueries": [
|
|
1790
|
+
{
|
|
1791
|
+
"accountIds": [],
|
|
1792
|
+
"query": "FROM AiCodingTask SELECT percentage(count(*), WHERE tests_passed > 0 OR tests_run = 0) AS 'Success %' FACET model SINCE 30 days ago"
|
|
1793
|
+
}
|
|
1794
|
+
],
|
|
1795
|
+
"platformOptions": {
|
|
1796
|
+
"ignoreTimeRange": false
|
|
1797
|
+
}
|
|
1798
|
+
}
|
|
1799
|
+
},
|
|
1800
|
+
{
|
|
1801
|
+
"title": "Cache Hit % by Model (7d)",
|
|
1802
|
+
"layout": {
|
|
1803
|
+
"column": 5,
|
|
1804
|
+
"row": 9,
|
|
1805
|
+
"width": 4,
|
|
1806
|
+
"height": 3
|
|
1807
|
+
},
|
|
1808
|
+
"visualization": {
|
|
1809
|
+
"id": "viz.bar"
|
|
1810
|
+
},
|
|
1811
|
+
"rawConfiguration": {
|
|
1812
|
+
"facet": {
|
|
1813
|
+
"showOtherSeries": false
|
|
1814
|
+
},
|
|
1815
|
+
"legend": {
|
|
1816
|
+
"enabled": true
|
|
1817
|
+
},
|
|
1818
|
+
"nrqlQueries": [
|
|
1819
|
+
{
|
|
1820
|
+
"accountIds": [],
|
|
1821
|
+
"query": "FROM Metric SELECT sum(ai.cost.tokens_cache_read) / (sum(ai.cost.tokens_input) + sum(ai.cost.tokens_cache_read)) * 100 AS 'Cache Hit %' FACET model SINCE 7 days ago"
|
|
1822
|
+
}
|
|
1823
|
+
],
|
|
1824
|
+
"platformOptions": {
|
|
1825
|
+
"ignoreTimeRange": false
|
|
1826
|
+
}
|
|
1827
|
+
}
|
|
1828
|
+
},
|
|
1829
|
+
{
|
|
1830
|
+
"title": "Lines of Code per Dollar by Model (30d)",
|
|
1831
|
+
"layout": {
|
|
1832
|
+
"column": 9,
|
|
1833
|
+
"row": 9,
|
|
1834
|
+
"width": 4,
|
|
1835
|
+
"height": 3
|
|
1836
|
+
},
|
|
1837
|
+
"visualization": {
|
|
1838
|
+
"id": "viz.bar"
|
|
1839
|
+
},
|
|
1840
|
+
"rawConfiguration": {
|
|
1841
|
+
"facet": {
|
|
1842
|
+
"showOtherSeries": false
|
|
1843
|
+
},
|
|
1844
|
+
"legend": {
|
|
1845
|
+
"enabled": true
|
|
1846
|
+
},
|
|
1847
|
+
"nrqlQueries": [
|
|
1848
|
+
{
|
|
1849
|
+
"accountIds": [],
|
|
1850
|
+
"query": "FROM AiCodingTask SELECT sum(lines_added) / sum(estimated_cost_usd) AS 'Lines / USD' FACET model SINCE 30 days ago"
|
|
1851
|
+
}
|
|
1852
|
+
],
|
|
1853
|
+
"platformOptions": {
|
|
1854
|
+
"ignoreTimeRange": false
|
|
1855
|
+
}
|
|
1856
|
+
}
|
|
1857
|
+
},
|
|
1858
|
+
{
|
|
1859
|
+
"title": "Model × Task Type (30d)",
|
|
1860
|
+
"layout": {
|
|
1861
|
+
"column": 1,
|
|
1862
|
+
"row": 12,
|
|
1863
|
+
"width": 12,
|
|
1864
|
+
"height": 4
|
|
1865
|
+
},
|
|
1866
|
+
"visualization": {
|
|
1867
|
+
"id": "viz.table"
|
|
1868
|
+
},
|
|
1869
|
+
"rawConfiguration": {
|
|
1870
|
+
"facet": {
|
|
1871
|
+
"showOtherSeries": false
|
|
1872
|
+
},
|
|
1873
|
+
"legend": {
|
|
1874
|
+
"enabled": true
|
|
1875
|
+
},
|
|
1876
|
+
"nrqlQueries": [
|
|
1877
|
+
{
|
|
1878
|
+
"accountIds": [],
|
|
1879
|
+
"query": "FROM AiCodingTask SELECT count(*) AS 'Tasks', average(estimated_cost_usd) AS 'Avg Cost (USD)', average(duration_ms) / 60000 AS 'Avg Minutes', percentage(count(*), WHERE tests_passed > 0 OR tests_run = 0) AS 'Success %' FACET model, outcome_type SINCE 30 days ago LIMIT 100"
|
|
1880
|
+
}
|
|
1881
|
+
],
|
|
1882
|
+
"platformOptions": {
|
|
1883
|
+
"ignoreTimeRange": false
|
|
1884
|
+
}
|
|
1885
|
+
}
|
|
1886
|
+
},
|
|
1887
|
+
{
|
|
1888
|
+
"title": "Developer × Model (30d)",
|
|
1889
|
+
"layout": {
|
|
1890
|
+
"column": 1,
|
|
1891
|
+
"row": 16,
|
|
1892
|
+
"width": 6,
|
|
1893
|
+
"height": 4
|
|
1894
|
+
},
|
|
1895
|
+
"visualization": {
|
|
1896
|
+
"id": "viz.table"
|
|
1897
|
+
},
|
|
1898
|
+
"rawConfiguration": {
|
|
1899
|
+
"facet": {
|
|
1900
|
+
"showOtherSeries": false
|
|
1901
|
+
},
|
|
1902
|
+
"legend": {
|
|
1903
|
+
"enabled": true
|
|
1904
|
+
},
|
|
1905
|
+
"nrqlQueries": [
|
|
1906
|
+
{
|
|
1907
|
+
"accountIds": [],
|
|
1908
|
+
"query": "FROM AiCodingTask SELECT count(*) AS 'Tasks', sum(estimated_cost_usd) AS 'Cost (USD)', average(estimated_cost_usd) AS 'USD / Task' FACET developer, model SINCE 30 days ago LIMIT 100"
|
|
1909
|
+
}
|
|
1910
|
+
],
|
|
1911
|
+
"platformOptions": {
|
|
1912
|
+
"ignoreTimeRange": false
|
|
1913
|
+
}
|
|
1914
|
+
}
|
|
1915
|
+
},
|
|
1916
|
+
{
|
|
1917
|
+
"title": "Cost by Task Type (30d)",
|
|
1918
|
+
"layout": {
|
|
1919
|
+
"column": 7,
|
|
1920
|
+
"row": 16,
|
|
1921
|
+
"width": 6,
|
|
1922
|
+
"height": 4
|
|
1923
|
+
},
|
|
1924
|
+
"visualization": {
|
|
1925
|
+
"id": "viz.pie"
|
|
1926
|
+
},
|
|
1927
|
+
"rawConfiguration": {
|
|
1928
|
+
"facet": {
|
|
1929
|
+
"showOtherSeries": false
|
|
1930
|
+
},
|
|
1931
|
+
"legend": {
|
|
1932
|
+
"enabled": true
|
|
1933
|
+
},
|
|
1934
|
+
"nrqlQueries": [
|
|
1935
|
+
{
|
|
1936
|
+
"accountIds": [],
|
|
1937
|
+
"query": "FROM AiCodingTask SELECT sum(estimated_cost_usd) AS 'USD' FACET outcome_type SINCE 30 days ago"
|
|
1938
|
+
}
|
|
1939
|
+
],
|
|
1940
|
+
"platformOptions": {
|
|
1941
|
+
"ignoreTimeRange": false
|
|
1942
|
+
}
|
|
1943
|
+
}
|
|
1944
|
+
}
|
|
1945
|
+
]
|
|
1946
|
+
}
|
|
1947
|
+
]
|
|
1948
|
+
}
|