@damngamerz/pi-otel 0.1.0-bootstrap.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (90) hide show
  1. package/ACKNOWLEDGEMENTS.md +7 -0
  2. package/CHANGELOG.md +10 -0
  3. package/LICENSE +21 -0
  4. package/LICENSES/Apache-2.0.txt +202 -0
  5. package/NOTICE +15 -0
  6. package/README.md +120 -0
  7. package/SECURITY.md +24 -0
  8. package/dist/commands/flush.d.ts +4 -0
  9. package/dist/commands/flush.d.ts.map +1 -0
  10. package/dist/commands/flush.js +20 -0
  11. package/dist/commands/flush.js.map +1 -0
  12. package/dist/commands/status.d.ts +5 -0
  13. package/dist/commands/status.d.ts.map +1 -0
  14. package/dist/commands/status.js +47 -0
  15. package/dist/commands/status.js.map +1 -0
  16. package/dist/config.d.ts +41 -0
  17. package/dist/config.d.ts.map +1 -0
  18. package/dist/config.js +260 -0
  19. package/dist/config.js.map +1 -0
  20. package/dist/evaluation/evaluator.d.ts +11 -0
  21. package/dist/evaluation/evaluator.d.ts.map +1 -0
  22. package/dist/evaluation/evaluator.js +55 -0
  23. package/dist/evaluation/evaluator.js.map +1 -0
  24. package/dist/evaluation/parser.d.ts +3 -0
  25. package/dist/evaluation/parser.d.ts.map +1 -0
  26. package/dist/evaluation/parser.js +42 -0
  27. package/dist/evaluation/parser.js.map +1 -0
  28. package/dist/evaluation/prompt.d.ts +2 -0
  29. package/dist/evaluation/prompt.d.ts.map +1 -0
  30. package/dist/evaluation/prompt.js +16 -0
  31. package/dist/evaluation/prompt.js.map +1 -0
  32. package/dist/evaluation/sampling.d.ts +9 -0
  33. package/dist/evaluation/sampling.d.ts.map +1 -0
  34. package/dist/evaluation/sampling.js +25 -0
  35. package/dist/evaluation/sampling.js.map +1 -0
  36. package/dist/evaluation/types.d.ts +19 -0
  37. package/dist/evaluation/types.d.ts.map +1 -0
  38. package/dist/evaluation/types.js +2 -0
  39. package/dist/evaluation/types.js.map +1 -0
  40. package/dist/index.d.ts +4 -0
  41. package/dist/index.d.ts.map +1 -0
  42. package/dist/index.js +151 -0
  43. package/dist/index.js.map +1 -0
  44. package/dist/lifecycle.d.ts +3 -0
  45. package/dist/lifecycle.d.ts.map +1 -0
  46. package/dist/lifecycle.js +15 -0
  47. package/dist/lifecycle.js.map +1 -0
  48. package/dist/privacy/content-policy.d.ts +8 -0
  49. package/dist/privacy/content-policy.d.ts.map +1 -0
  50. package/dist/privacy/content-policy.js +48 -0
  51. package/dist/privacy/content-policy.js.map +1 -0
  52. package/dist/privacy/sanitization.d.ts +5 -0
  53. package/dist/privacy/sanitization.d.ts.map +1 -0
  54. package/dist/privacy/sanitization.js +42 -0
  55. package/dist/privacy/sanitization.js.map +1 -0
  56. package/dist/privacy/secret-detector.d.ts +2 -0
  57. package/dist/privacy/secret-detector.d.ts.map +1 -0
  58. package/dist/privacy/secret-detector.js +14 -0
  59. package/dist/privacy/secret-detector.js.map +1 -0
  60. package/dist/telemetry/attributes.d.ts +11 -0
  61. package/dist/telemetry/attributes.d.ts.map +1 -0
  62. package/dist/telemetry/attributes.js +13 -0
  63. package/dist/telemetry/attributes.js.map +1 -0
  64. package/dist/telemetry/instruments.d.ts +17 -0
  65. package/dist/telemetry/instruments.d.ts.map +1 -0
  66. package/dist/telemetry/instruments.js +54 -0
  67. package/dist/telemetry/instruments.js.map +1 -0
  68. package/dist/telemetry/providers.d.ts +21 -0
  69. package/dist/telemetry/providers.d.ts.map +1 -0
  70. package/dist/telemetry/providers.js +88 -0
  71. package/dist/telemetry/providers.js.map +1 -0
  72. package/dist/telemetry/traces.d.ts +44 -0
  73. package/dist/telemetry/traces.d.ts.map +1 -0
  74. package/dist/telemetry/traces.js +265 -0
  75. package/dist/telemetry/traces.js.map +1 -0
  76. package/dist/telemetry/usage.d.ts +11 -0
  77. package/dist/telemetry/usage.d.ts.map +1 -0
  78. package/dist/telemetry/usage.js +25 -0
  79. package/dist/telemetry/usage.js.map +1 -0
  80. package/docs/configuration.md +61 -0
  81. package/docs/evaluation.md +38 -0
  82. package/docs/metrics.md +27 -0
  83. package/docs/operations.md +41 -0
  84. package/docs/privacy.md +38 -0
  85. package/examples/grafana-lgtm/LICENSE +6 -0
  86. package/examples/grafana-lgtm/README.md +47 -0
  87. package/examples/grafana-lgtm/compose.yaml +16 -0
  88. package/examples/grafana-lgtm/dashboard.json +616 -0
  89. package/examples/grafana-lgtm/provisioning.yaml +9 -0
  90. package/package.json +87 -0
@@ -0,0 +1,616 @@
1
+ {
2
+ "title": "@damngamerz/pi-otel",
3
+ "uid": "damngamerz-pi-otel",
4
+ "schemaVersion": 38,
5
+ "version": 1,
6
+ "editable": true,
7
+ "graphTooltip": 1,
8
+ "refresh": "10s",
9
+ "time": {
10
+ "from": "now-1h",
11
+ "to": "now"
12
+ },
13
+ "timezone": "browser",
14
+ "tags": [
15
+ "damngamerz",
16
+ "gen-ai",
17
+ "local",
18
+ "opentelemetry",
19
+ "otel",
20
+ "pi"
21
+ ],
22
+ "annotations": {
23
+ "list": []
24
+ },
25
+ "templating": {
26
+ "list": []
27
+ },
28
+ "links": [],
29
+ "panels": [
30
+ {
31
+ "id": 1,
32
+ "title": "Request rate (req/min)",
33
+ "type": "stat",
34
+ "gridPos": {
35
+ "x": 0,
36
+ "y": 0,
37
+ "w": 6,
38
+ "h": 4
39
+ },
40
+ "options": {
41
+ "reduceOptions": {
42
+ "calcs": [
43
+ "lastNotNull"
44
+ ]
45
+ },
46
+ "colorMode": "background",
47
+ "graphMode": "area"
48
+ },
49
+ "fieldConfig": {
50
+ "defaults": {
51
+ "unit": "reqpm",
52
+ "color": {
53
+ "mode": "thresholds"
54
+ },
55
+ "thresholds": {
56
+ "mode": "absolute",
57
+ "steps": [
58
+ {
59
+ "color": "blue",
60
+ "value": null
61
+ }
62
+ ]
63
+ }
64
+ }
65
+ },
66
+ "targets": [
67
+ {
68
+ "datasource": {
69
+ "type": "prometheus"
70
+ },
71
+ "expr": "sum(rate(gen_ai_client_operation_duration_seconds_count{gen_ai_system=\"pi\"}[5m])) * 60",
72
+ "legendFormat": "req/min",
73
+ "refId": "A"
74
+ }
75
+ ]
76
+ },
77
+ {
78
+ "id": 2,
79
+ "title": "Average LLM duration",
80
+ "type": "stat",
81
+ "gridPos": {
82
+ "x": 6,
83
+ "y": 0,
84
+ "w": 6,
85
+ "h": 4
86
+ },
87
+ "options": {
88
+ "reduceOptions": {
89
+ "calcs": [
90
+ "lastNotNull"
91
+ ]
92
+ },
93
+ "colorMode": "background",
94
+ "graphMode": "area"
95
+ },
96
+ "fieldConfig": {
97
+ "defaults": {
98
+ "unit": "s",
99
+ "color": {
100
+ "mode": "thresholds"
101
+ },
102
+ "thresholds": {
103
+ "mode": "absolute",
104
+ "steps": [
105
+ {
106
+ "color": "green",
107
+ "value": null
108
+ },
109
+ {
110
+ "color": "yellow",
111
+ "value": 10
112
+ },
113
+ {
114
+ "color": "red",
115
+ "value": 30
116
+ }
117
+ ]
118
+ }
119
+ }
120
+ },
121
+ "targets": [
122
+ {
123
+ "datasource": {
124
+ "type": "prometheus"
125
+ },
126
+ "expr": "sum(rate(gen_ai_client_operation_duration_seconds_sum{gen_ai_system=\"pi\"}[5m])) / sum(rate(gen_ai_client_operation_duration_seconds_count{gen_ai_system=\"pi\"}[5m]))",
127
+ "legendFormat": "avg",
128
+ "refId": "A"
129
+ }
130
+ ]
131
+ },
132
+ {
133
+ "id": 3,
134
+ "title": "Total tokens/min",
135
+ "type": "stat",
136
+ "gridPos": {
137
+ "x": 12,
138
+ "y": 0,
139
+ "w": 6,
140
+ "h": 4
141
+ },
142
+ "options": {
143
+ "reduceOptions": {
144
+ "calcs": [
145
+ "lastNotNull"
146
+ ]
147
+ },
148
+ "colorMode": "background",
149
+ "graphMode": "area"
150
+ },
151
+ "fieldConfig": {
152
+ "defaults": {
153
+ "unit": "short",
154
+ "color": {
155
+ "mode": "thresholds"
156
+ },
157
+ "thresholds": {
158
+ "mode": "absolute",
159
+ "steps": [
160
+ {
161
+ "color": "purple",
162
+ "value": null
163
+ }
164
+ ]
165
+ }
166
+ }
167
+ },
168
+ "targets": [
169
+ {
170
+ "datasource": {
171
+ "type": "prometheus"
172
+ },
173
+ "expr": "sum(rate(gen_ai_client_token_usage_sum{gen_ai_system=\"pi\"}[5m])) * 60",
174
+ "legendFormat": "tokens/min",
175
+ "refId": "A"
176
+ }
177
+ ]
178
+ },
179
+ {
180
+ "id": 4,
181
+ "title": "Avg tool calls/operation",
182
+ "type": "stat",
183
+ "gridPos": {
184
+ "x": 18,
185
+ "y": 0,
186
+ "w": 6,
187
+ "h": 4
188
+ },
189
+ "options": {
190
+ "reduceOptions": {
191
+ "calcs": [
192
+ "lastNotNull"
193
+ ]
194
+ },
195
+ "colorMode": "background",
196
+ "graphMode": "area"
197
+ },
198
+ "fieldConfig": {
199
+ "defaults": {
200
+ "unit": "short",
201
+ "color": {
202
+ "mode": "thresholds"
203
+ },
204
+ "thresholds": {
205
+ "mode": "absolute",
206
+ "steps": [
207
+ {
208
+ "color": "orange",
209
+ "value": null
210
+ }
211
+ ]
212
+ }
213
+ }
214
+ },
215
+ "targets": [
216
+ {
217
+ "datasource": {
218
+ "type": "prometheus"
219
+ },
220
+ "expr": "sum(rate(gen_ai_client_tool_calls_per_operation_sum{gen_ai_system=\"pi\"}[5m])) / sum(rate(gen_ai_client_tool_calls_per_operation_count{gen_ai_system=\"pi\"}[5m]))",
221
+ "legendFormat": "avg tool calls",
222
+ "refId": "A"
223
+ }
224
+ ]
225
+ },
226
+ {
227
+ "id": 5,
228
+ "title": "Operation duration percentiles",
229
+ "type": "timeseries",
230
+ "gridPos": {
231
+ "x": 0,
232
+ "y": 4,
233
+ "w": 12,
234
+ "h": 8
235
+ },
236
+ "fieldConfig": {
237
+ "defaults": {
238
+ "unit": "s",
239
+ "custom": {
240
+ "lineWidth": 2,
241
+ "fillOpacity": 10
242
+ }
243
+ }
244
+ },
245
+ "options": {
246
+ "tooltip": {
247
+ "mode": "multi"
248
+ }
249
+ },
250
+ "targets": [
251
+ {
252
+ "datasource": {
253
+ "type": "prometheus"
254
+ },
255
+ "expr": "histogram_quantile(0.50, sum(rate(gen_ai_client_operation_duration_seconds_bucket{gen_ai_system=\"pi\"}[5m])) by (le))",
256
+ "legendFormat": "p50",
257
+ "refId": "A"
258
+ },
259
+ {
260
+ "datasource": {
261
+ "type": "prometheus"
262
+ },
263
+ "expr": "histogram_quantile(0.95, sum(rate(gen_ai_client_operation_duration_seconds_bucket{gen_ai_system=\"pi\"}[5m])) by (le))",
264
+ "legendFormat": "p95",
265
+ "refId": "B"
266
+ },
267
+ {
268
+ "datasource": {
269
+ "type": "prometheus"
270
+ },
271
+ "expr": "histogram_quantile(0.99, sum(rate(gen_ai_client_operation_duration_seconds_bucket{gen_ai_system=\"pi\"}[5m])) by (le))",
272
+ "legendFormat": "p99",
273
+ "refId": "C"
274
+ }
275
+ ]
276
+ },
277
+ {
278
+ "id": 6,
279
+ "title": "Token usage by type",
280
+ "type": "timeseries",
281
+ "gridPos": {
282
+ "x": 12,
283
+ "y": 4,
284
+ "w": 12,
285
+ "h": 8
286
+ },
287
+ "fieldConfig": {
288
+ "defaults": {
289
+ "unit": "short",
290
+ "custom": {
291
+ "lineWidth": 2,
292
+ "fillOpacity": 20
293
+ }
294
+ }
295
+ },
296
+ "options": {
297
+ "tooltip": {
298
+ "mode": "multi"
299
+ }
300
+ },
301
+ "targets": [
302
+ {
303
+ "datasource": {
304
+ "type": "prometheus"
305
+ },
306
+ "expr": "sum(rate(gen_ai_client_token_usage_sum{gen_ai_system=\"pi\"}[5m])) by (gen_ai_token_type) * 60",
307
+ "legendFormat": "{{gen_ai_token_type}}",
308
+ "refId": "A"
309
+ }
310
+ ]
311
+ },
312
+ {
313
+ "id": 7,
314
+ "title": "Duration by model",
315
+ "type": "timeseries",
316
+ "gridPos": {
317
+ "x": 0,
318
+ "y": 12,
319
+ "w": 12,
320
+ "h": 8
321
+ },
322
+ "fieldConfig": {
323
+ "defaults": {
324
+ "unit": "s",
325
+ "custom": {
326
+ "lineWidth": 2,
327
+ "fillOpacity": 10
328
+ }
329
+ }
330
+ },
331
+ "options": {
332
+ "tooltip": {
333
+ "mode": "multi"
334
+ }
335
+ },
336
+ "targets": [
337
+ {
338
+ "datasource": {
339
+ "type": "prometheus"
340
+ },
341
+ "expr": "histogram_quantile(0.95, sum(rate(gen_ai_client_operation_duration_seconds_bucket{gen_ai_system=\"pi\"}[5m])) by (le, gen_ai_response_model))",
342
+ "legendFormat": "p95 {{gen_ai_response_model}}",
343
+ "refId": "A"
344
+ }
345
+ ]
346
+ },
347
+ {
348
+ "id": 8,
349
+ "title": "Tool calls per operation",
350
+ "type": "timeseries",
351
+ "gridPos": {
352
+ "x": 12,
353
+ "y": 12,
354
+ "w": 12,
355
+ "h": 8
356
+ },
357
+ "fieldConfig": {
358
+ "defaults": {
359
+ "unit": "short",
360
+ "custom": {
361
+ "lineWidth": 2,
362
+ "fillOpacity": 10
363
+ }
364
+ }
365
+ },
366
+ "options": {
367
+ "tooltip": {
368
+ "mode": "multi"
369
+ }
370
+ },
371
+ "targets": [
372
+ {
373
+ "datasource": {
374
+ "type": "prometheus"
375
+ },
376
+ "expr": "histogram_quantile(0.50, sum(rate(gen_ai_client_tool_calls_per_operation_bucket{gen_ai_system=\"pi\"}[5m])) by (le))",
377
+ "legendFormat": "p50",
378
+ "refId": "A"
379
+ },
380
+ {
381
+ "datasource": {
382
+ "type": "prometheus"
383
+ },
384
+ "expr": "histogram_quantile(0.95, sum(rate(gen_ai_client_tool_calls_per_operation_bucket{gen_ai_system=\"pi\"}[5m])) by (le))",
385
+ "legendFormat": "p95",
386
+ "refId": "B"
387
+ }
388
+ ]
389
+ },
390
+ {
391
+ "id": 9,
392
+ "title": "Average evaluation score",
393
+ "type": "stat",
394
+ "gridPos": {
395
+ "x": 0,
396
+ "y": 20,
397
+ "w": 6,
398
+ "h": 4
399
+ },
400
+ "options": {
401
+ "reduceOptions": {
402
+ "calcs": [
403
+ "lastNotNull"
404
+ ]
405
+ },
406
+ "colorMode": "background",
407
+ "graphMode": "area"
408
+ },
409
+ "fieldConfig": {
410
+ "defaults": {
411
+ "unit": "percentunit",
412
+ "color": {
413
+ "mode": "thresholds"
414
+ },
415
+ "thresholds": {
416
+ "mode": "absolute",
417
+ "steps": [
418
+ {
419
+ "color": "green",
420
+ "value": null
421
+ }
422
+ ]
423
+ }
424
+ }
425
+ },
426
+ "targets": [
427
+ {
428
+ "datasource": {
429
+ "type": "prometheus"
430
+ },
431
+ "expr": "sum(gen_ai_evaluation_score_sum) / sum(gen_ai_evaluation_score_count)",
432
+ "legendFormat": "avg score",
433
+ "refId": "A"
434
+ }
435
+ ]
436
+ },
437
+ {
438
+ "id": 10,
439
+ "title": "Automatic evaluations",
440
+ "type": "stat",
441
+ "gridPos": {
442
+ "x": 6,
443
+ "y": 20,
444
+ "w": 6,
445
+ "h": 4
446
+ },
447
+ "options": {
448
+ "reduceOptions": {
449
+ "calcs": [
450
+ "lastNotNull"
451
+ ]
452
+ },
453
+ "colorMode": "background",
454
+ "graphMode": "area"
455
+ },
456
+ "fieldConfig": {
457
+ "defaults": {
458
+ "unit": "short",
459
+ "color": {
460
+ "mode": "thresholds"
461
+ },
462
+ "thresholds": {
463
+ "mode": "absolute",
464
+ "steps": [
465
+ {
466
+ "color": "blue",
467
+ "value": null
468
+ }
469
+ ]
470
+ }
471
+ }
472
+ },
473
+ "targets": [
474
+ {
475
+ "datasource": {
476
+ "type": "prometheus"
477
+ },
478
+ "expr": "sum(gen_ai_evaluation_score_count) / 4",
479
+ "legendFormat": "runs",
480
+ "refId": "A"
481
+ }
482
+ ]
483
+ },
484
+ {
485
+ "id": 11,
486
+ "title": "Judge cost",
487
+ "type": "stat",
488
+ "gridPos": {
489
+ "x": 12,
490
+ "y": 20,
491
+ "w": 6,
492
+ "h": 4
493
+ },
494
+ "options": {
495
+ "reduceOptions": {
496
+ "calcs": [
497
+ "lastNotNull"
498
+ ]
499
+ },
500
+ "colorMode": "background",
501
+ "graphMode": "area"
502
+ },
503
+ "fieldConfig": {
504
+ "defaults": {
505
+ "unit": "currencyUSD",
506
+ "color": {
507
+ "mode": "thresholds"
508
+ },
509
+ "thresholds": {
510
+ "mode": "absolute",
511
+ "steps": [
512
+ {
513
+ "color": "purple",
514
+ "value": null
515
+ }
516
+ ]
517
+ }
518
+ }
519
+ },
520
+ "targets": [
521
+ {
522
+ "datasource": {
523
+ "type": "prometheus"
524
+ },
525
+ "expr": "sum(pi_agent_cost_USD_total{gen_ai_operation_name=\"evaluate\"})",
526
+ "legendFormat": "cost",
527
+ "refId": "A"
528
+ }
529
+ ]
530
+ },
531
+ {
532
+ "id": 12,
533
+ "title": "Average judge duration",
534
+ "type": "stat",
535
+ "gridPos": {
536
+ "x": 18,
537
+ "y": 20,
538
+ "w": 6,
539
+ "h": 4
540
+ },
541
+ "options": {
542
+ "reduceOptions": {
543
+ "calcs": [
544
+ "lastNotNull"
545
+ ]
546
+ },
547
+ "colorMode": "background",
548
+ "graphMode": "area"
549
+ },
550
+ "fieldConfig": {
551
+ "defaults": {
552
+ "unit": "s",
553
+ "color": {
554
+ "mode": "thresholds"
555
+ },
556
+ "thresholds": {
557
+ "mode": "absolute",
558
+ "steps": [
559
+ {
560
+ "color": "orange",
561
+ "value": null
562
+ }
563
+ ]
564
+ }
565
+ }
566
+ },
567
+ "targets": [
568
+ {
569
+ "datasource": {
570
+ "type": "prometheus"
571
+ },
572
+ "expr": "sum(gen_ai_client_operation_duration_seconds_sum{gen_ai_operation_name=\"evaluate\"}) / sum(gen_ai_client_operation_duration_seconds_count{gen_ai_operation_name=\"evaluate\"})",
573
+ "legendFormat": "duration",
574
+ "refId": "A"
575
+ }
576
+ ]
577
+ },
578
+ {
579
+ "id": 13,
580
+ "title": "Evaluation scores by dimension",
581
+ "type": "timeseries",
582
+ "gridPos": {
583
+ "x": 0,
584
+ "y": 24,
585
+ "w": 24,
586
+ "h": 8
587
+ },
588
+ "fieldConfig": {
589
+ "defaults": {
590
+ "unit": "percentunit",
591
+ "min": 0,
592
+ "max": 1,
593
+ "custom": {
594
+ "lineWidth": 2,
595
+ "fillOpacity": 15
596
+ }
597
+ }
598
+ },
599
+ "options": {
600
+ "tooltip": {
601
+ "mode": "multi"
602
+ }
603
+ },
604
+ "targets": [
605
+ {
606
+ "datasource": {
607
+ "type": "prometheus"
608
+ },
609
+ "expr": "sum(gen_ai_evaluation_score_sum) by (gen_ai_evaluation_name) / sum(gen_ai_evaluation_score_count) by (gen_ai_evaluation_name)",
610
+ "legendFormat": "{{gen_ai_evaluation_name}}",
611
+ "refId": "A"
612
+ }
613
+ ]
614
+ }
615
+ ]
616
+ }
@@ -0,0 +1,9 @@
1
+ apiVersion: 1
2
+
3
+ providers:
4
+ - name: damngamerz-pi-otel
5
+ type: file
6
+ disableDeletion: true
7
+ editable: true
8
+ options:
9
+ path: /dashboards/damngamerz-pi-otel.json
package/package.json ADDED
@@ -0,0 +1,87 @@
1
+ {
2
+ "name": "@damngamerz/pi-otel",
3
+ "version": "0.1.0-bootstrap.0",
4
+ "description": "Privacy-conscious OpenTelemetry traces, metrics, and optional LLM evaluation for Pi",
5
+ "type": "module",
6
+ "license": "MIT",
7
+ "author": "Damngamerz",
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/damngamerz/pi-otel.git"
11
+ },
12
+ "homepage": "https://github.com/damngamerz/pi-otel#readme",
13
+ "bugs": {
14
+ "url": "https://github.com/damngamerz/pi-otel/issues"
15
+ },
16
+ "keywords": [
17
+ "pi-package",
18
+ "pi-extension",
19
+ "opentelemetry",
20
+ "otel",
21
+ "gen-ai",
22
+ "llm",
23
+ "evaluation",
24
+ "observability"
25
+ ],
26
+ "engines": {
27
+ "node": ">=20.0.0"
28
+ },
29
+ "main": "./dist/index.js",
30
+ "types": "./dist/index.d.ts",
31
+ "exports": {
32
+ ".": {
33
+ "types": "./dist/index.d.ts",
34
+ "import": "./dist/index.js"
35
+ }
36
+ },
37
+ "files": [
38
+ "dist",
39
+ "examples",
40
+ "docs",
41
+ "README.md",
42
+ "LICENSE",
43
+ "NOTICE",
44
+ "ACKNOWLEDGEMENTS.md",
45
+ "SECURITY.md",
46
+ "CHANGELOG.md",
47
+ "LICENSES"
48
+ ],
49
+ "pi": {
50
+ "extensions": [
51
+ "./dist/index.js"
52
+ ]
53
+ },
54
+ "scripts": {
55
+ "clean": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"",
56
+ "build": "npm run clean && tsc -p tsconfig.json",
57
+ "typecheck": "tsc -p tsconfig.json --noEmit",
58
+ "format": "biome format --write .",
59
+ "format:check": "biome format .",
60
+ "lint": "biome lint .",
61
+ "test": "tsx --test test/*.test.ts",
62
+ "check": "npm run format:check && npm run lint && npm run typecheck && npm test && npm run build",
63
+ "prepack": "npm run check",
64
+ "sbom": "npm sbom --omit=dev --package-lock-only --sbom-format cyclonedx"
65
+ },
66
+ "peerDependencies": {
67
+ "@earendil-works/pi-ai": ">=0.80.10 <0.81.0",
68
+ "@earendil-works/pi-coding-agent": ">=0.80.10 <0.81.0"
69
+ },
70
+ "dependencies": {
71
+ "@opentelemetry/api": "1.9.1",
72
+ "@opentelemetry/exporter-metrics-otlp-http": "0.220.0",
73
+ "@opentelemetry/exporter-trace-otlp-http": "0.220.0",
74
+ "@opentelemetry/resources": "2.9.0",
75
+ "@opentelemetry/sdk-metrics": "2.9.0",
76
+ "@opentelemetry/sdk-trace-base": "2.9.0",
77
+ "@opentelemetry/sdk-trace-node": "2.9.0"
78
+ },
79
+ "devDependencies": {
80
+ "@biomejs/biome": "2.5.4",
81
+ "@earendil-works/pi-ai": "0.80.10",
82
+ "@earendil-works/pi-coding-agent": "0.80.10",
83
+ "@types/node": "22.19.11",
84
+ "tsx": "4.23.1",
85
+ "typescript": "5.9.3"
86
+ }
87
+ }