@respan/cli 0.13.2 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -264,16 +264,16 @@
264
264
  "status.js"
265
265
  ]
266
266
  },
267
- "config:get": {
267
+ "collector:config": {
268
268
  "aliases": [],
269
- "args": {
270
- "key": {
271
- "description": "Config key",
272
- "name": "key",
273
- "required": true
274
- }
275
- },
276
- "description": "Get a configuration value",
269
+ "args": {},
270
+ "description": "Write the Respan collector configuration.\n\nThe Respan collector is the upstream OpenTelemetry Collector (contrib\n0.160.0) with a config that receives OTLP/HTTP from the Respan SDKs\non localhost and forwards it to Respan through a bounded, persistent\n(write-ahead-log) queue — spans survive Respan outages and collector\nrestarts without unbounded local growth.\n\nThe written file never contains your API key: it reads RESPAN_API_KEY from\nthe environment. Use \"respan collector start\" to run it, or run\notelcol-contrib yourself with --config <file>.",
271
+ "examples": [
272
+ "respan collector config",
273
+ "respan collector config --print",
274
+ "respan collector config --output ./collector.yaml --max-size-mib 1024",
275
+ "respan collector config --export-url https://respan.internal/api/v2/traces"
276
+ ],
277
277
  "flags": {
278
278
  "api-key": {
279
279
  "description": "API key (env: RESPAN_API_KEY)",
@@ -315,11 +315,63 @@
315
315
  "name": "verbose",
316
316
  "allowNo": false,
317
317
  "type": "boolean"
318
+ },
319
+ "export-url": {
320
+ "description": "Respan ingest URL (default: <base URL>/api/v2/traces from your auth config)",
321
+ "env": "RESPAN_COLLECTOR_EXPORT_URL",
322
+ "name": "export-url",
323
+ "hasDynamicHelp": false,
324
+ "multiple": false,
325
+ "type": "option"
326
+ },
327
+ "data-dir": {
328
+ "description": "Persistent queue directory, binary mode only (default: ~/.respan/collector/data)",
329
+ "name": "data-dir",
330
+ "hasDynamicHelp": false,
331
+ "multiple": false,
332
+ "type": "option"
333
+ },
334
+ "max-size-mib": {
335
+ "description": "Disk cap for the persistent queue in MiB (minimum 100)",
336
+ "name": "max-size-mib",
337
+ "default": 512,
338
+ "hasDynamicHelp": false,
339
+ "multiple": false,
340
+ "type": "option"
341
+ },
342
+ "queue-size": {
343
+ "description": "Batches kept while Respan is unreachable",
344
+ "name": "queue-size",
345
+ "default": 10000,
346
+ "hasDynamicHelp": false,
347
+ "multiple": false,
348
+ "type": "option"
349
+ },
350
+ "port": {
351
+ "description": "Local OTLP/HTTP port the SDKs send to",
352
+ "name": "port",
353
+ "default": 4318,
354
+ "hasDynamicHelp": false,
355
+ "multiple": false,
356
+ "type": "option"
357
+ },
358
+ "output": {
359
+ "description": "Where to write the config (default: ~/.respan/collector/config.yaml)",
360
+ "name": "output",
361
+ "hasDynamicHelp": false,
362
+ "multiple": false,
363
+ "type": "option"
364
+ },
365
+ "print": {
366
+ "description": "Print the config to stdout instead of writing it",
367
+ "name": "print",
368
+ "allowNo": false,
369
+ "type": "boolean"
318
370
  }
319
371
  },
320
372
  "hasDynamicHelp": false,
321
373
  "hiddenAliases": [],
322
- "id": "config:get",
374
+ "id": "collector:config",
323
375
  "pluginAlias": "@respan/cli",
324
376
  "pluginName": "@respan/cli",
325
377
  "pluginType": "core",
@@ -329,14 +381,21 @@
329
381
  "relativePath": [
330
382
  "dist",
331
383
  "commands",
332
- "config",
333
- "get.js"
384
+ "collector",
385
+ "config.js"
334
386
  ]
335
387
  },
336
- "config:list": {
388
+ "collector:start": {
337
389
  "aliases": [],
338
390
  "args": {},
339
- "description": "List all configuration",
391
+ "description": "Start a local Respan collector.\n\nRuns the OpenTelemetry Collector (contrib) with the Respan config: the SDKs\nsend to http://127.0.0.1:4318, and the collector forwards to Respan through\na bounded, persistent queue so traces survive outages and restarts.\n\nModes:\n --docker docker run otel/opentelemetry-collector-contrib with the queue in\n the respan-collector-queue volume (default when Docker is available)\n --binary download otelcol-contrib to ~/.respan/collector/bin and run it\n detached, logging to ~/.respan/collector/collector.log\n\nThe API key is passed to the collector through its environment only; the\nconfig file never contains it.",
392
+ "examples": [
393
+ "respan collector start",
394
+ "respan collector start --binary",
395
+ "respan collector start --docker --max-size-mib 1024 --queue-size 20000",
396
+ "respan collector start --export-url https://respan.internal/api/v2/traces",
397
+ "respan collector start --dry-run"
398
+ ],
340
399
  "flags": {
341
400
  "api-key": {
342
401
  "description": "API key (env: RESPAN_API_KEY)",
@@ -378,85 +437,74 @@
378
437
  "name": "verbose",
379
438
  "allowNo": false,
380
439
  "type": "boolean"
381
- }
382
- },
383
- "hasDynamicHelp": false,
384
- "hiddenAliases": [],
385
- "id": "config:list",
386
- "pluginAlias": "@respan/cli",
387
- "pluginName": "@respan/cli",
388
- "pluginType": "core",
389
- "strict": true,
390
- "enableJsonFlag": false,
391
- "isESM": true,
392
- "relativePath": [
393
- "dist",
394
- "commands",
395
- "config",
396
- "list.js"
397
- ]
398
- },
399
- "config:set": {
400
- "aliases": [],
401
- "args": {
402
- "key": {
403
- "description": "Config key",
404
- "name": "key",
405
- "required": true
406
440
  },
407
- "value": {
408
- "description": "Config value",
409
- "name": "value",
410
- "required": true
411
- }
412
- },
413
- "description": "Set a configuration value",
414
- "flags": {
415
- "api-key": {
416
- "description": "API key (env: RESPAN_API_KEY)",
417
- "env": "RESPAN_API_KEY",
418
- "name": "api-key",
441
+ "docker": {
442
+ "description": "Use the Docker container (default when Docker is available)",
443
+ "exclusive": [
444
+ "binary"
445
+ ],
446
+ "name": "docker",
447
+ "allowNo": false,
448
+ "type": "boolean"
449
+ },
450
+ "binary": {
451
+ "description": "Use the otelcol-contrib binary in ~/.respan/collector/bin",
452
+ "exclusive": [
453
+ "docker"
454
+ ],
455
+ "name": "binary",
456
+ "allowNo": false,
457
+ "type": "boolean"
458
+ },
459
+ "export-url": {
460
+ "description": "Respan ingest URL (default: <base URL>/api/v2/traces from your auth config)",
461
+ "env": "RESPAN_COLLECTOR_EXPORT_URL",
462
+ "name": "export-url",
419
463
  "hasDynamicHelp": false,
420
464
  "multiple": false,
421
465
  "type": "option"
422
466
  },
423
- "base-url": {
424
- "description": "Temporary API base URL override for this command",
425
- "name": "base-url",
467
+ "data-dir": {
468
+ "description": "Persistent queue directory, binary mode only (default: ~/.respan/collector/data)",
469
+ "name": "data-dir",
426
470
  "hasDynamicHelp": false,
427
471
  "multiple": false,
428
472
  "type": "option"
429
473
  },
430
- "profile": {
431
- "description": "Named profile to use",
432
- "name": "profile",
474
+ "max-size-mib": {
475
+ "description": "Disk cap for the persistent queue in MiB (minimum 100)",
476
+ "name": "max-size-mib",
477
+ "default": 512,
433
478
  "hasDynamicHelp": false,
434
479
  "multiple": false,
435
480
  "type": "option"
436
481
  },
437
- "json": {
438
- "description": "Output as JSON",
439
- "name": "json",
440
- "allowNo": false,
441
- "type": "boolean"
482
+ "queue-size": {
483
+ "description": "Batches kept while Respan is unreachable",
484
+ "name": "queue-size",
485
+ "default": 10000,
486
+ "hasDynamicHelp": false,
487
+ "multiple": false,
488
+ "type": "option"
442
489
  },
443
- "csv": {
444
- "description": "Output as CSV",
445
- "name": "csv",
446
- "allowNo": false,
447
- "type": "boolean"
490
+ "port": {
491
+ "description": "Local OTLP/HTTP port the SDKs send to",
492
+ "name": "port",
493
+ "default": 4318,
494
+ "hasDynamicHelp": false,
495
+ "multiple": false,
496
+ "type": "option"
448
497
  },
449
- "verbose": {
450
- "char": "v",
451
- "description": "Show verbose output",
452
- "name": "verbose",
498
+ "dry-run": {
499
+ "description": "Show what would be done without starting anything",
500
+ "name": "dry-run",
453
501
  "allowNo": false,
454
502
  "type": "boolean"
455
503
  }
456
504
  },
457
505
  "hasDynamicHelp": false,
458
506
  "hiddenAliases": [],
459
- "id": "config:set",
507
+ "id": "collector:start",
460
508
  "pluginAlias": "@respan/cli",
461
509
  "pluginName": "@respan/cli",
462
510
  "pluginType": "core",
@@ -466,17 +514,17 @@
466
514
  "relativePath": [
467
515
  "dist",
468
516
  "commands",
469
- "config",
470
- "set.js"
517
+ "collector",
518
+ "start.js"
471
519
  ]
472
520
  },
473
- "demo:clear": {
521
+ "collector:status": {
474
522
  "aliases": [],
475
523
  "args": {},
476
- "description": "Delete the sample prompts, datasets, and evaluators created by `respan demo`. Demo traces are left in place (each run is timestamped history). Idempotent — safe to re-run.",
524
+ "description": "Show the local Respan collector's health and queue.\n\nReports how the collector is running (Docker container or binary), the\nhealth_check result, and the exporter metrics that matter for delivery:\nqueued batches, spans sent, spans dropped because the queue was full\n(enqueue-failed) and spans rejected by Respan (send-failed).",
477
525
  "examples": [
478
- "<%= config.bin %> demo clear",
479
- "<%= config.bin %> demo clear --yes"
526
+ "respan collector status",
527
+ "respan collector status --json"
480
528
  ],
481
529
  "flags": {
482
530
  "api-key": {
@@ -520,17 +568,36 @@
520
568
  "allowNo": false,
521
569
  "type": "boolean"
522
570
  },
523
- "yes": {
524
- "char": "y",
525
- "description": "Skip the confirmation prompt",
526
- "name": "yes",
571
+ "docker": {
572
+ "description": "Use the Docker container (default when Docker is available)",
573
+ "exclusive": [
574
+ "binary"
575
+ ],
576
+ "name": "docker",
527
577
  "allowNo": false,
528
578
  "type": "boolean"
579
+ },
580
+ "binary": {
581
+ "description": "Use the otelcol-contrib binary in ~/.respan/collector/bin",
582
+ "exclusive": [
583
+ "docker"
584
+ ],
585
+ "name": "binary",
586
+ "allowNo": false,
587
+ "type": "boolean"
588
+ },
589
+ "port": {
590
+ "description": "Local OTLP/HTTP port used in the SDK hint",
591
+ "name": "port",
592
+ "default": 4318,
593
+ "hasDynamicHelp": false,
594
+ "multiple": false,
595
+ "type": "option"
529
596
  }
530
597
  },
531
598
  "hasDynamicHelp": false,
532
599
  "hiddenAliases": [],
533
- "id": "demo:clear",
600
+ "id": "collector:status",
534
601
  "pluginAlias": "@respan/cli",
535
602
  "pluginName": "@respan/cli",
536
603
  "pluginType": "core",
@@ -540,16 +607,17 @@
540
607
  "relativePath": [
541
608
  "dist",
542
609
  "commands",
543
- "demo",
544
- "clear.js"
610
+ "collector",
611
+ "status.js"
545
612
  ]
546
613
  },
547
- "demo": {
614
+ "collector:stop": {
548
615
  "aliases": [],
549
616
  "args": {},
550
- "description": "Seed your account with sample data (prompts and traces) so you have something to explore. Idempotent — safe to re-run.",
617
+ "description": "Stop the local Respan collector.\n\nRemoves the respan-collector container or stops the detached binary. Spans\nstill queued on disk are kept and delivered the next time the collector\nstarts; pass --purge --yes to delete them.",
551
618
  "examples": [
552
- "<%= config.bin %> demo"
619
+ "respan collector stop",
620
+ "respan collector stop --purge --yes"
553
621
  ],
554
622
  "flags": {
555
623
  "api-key": {
@@ -592,11 +660,41 @@
592
660
  "name": "verbose",
593
661
  "allowNo": false,
594
662
  "type": "boolean"
663
+ },
664
+ "docker": {
665
+ "description": "Use the Docker container (default when Docker is available)",
666
+ "exclusive": [
667
+ "binary"
668
+ ],
669
+ "name": "docker",
670
+ "allowNo": false,
671
+ "type": "boolean"
672
+ },
673
+ "binary": {
674
+ "description": "Use the otelcol-contrib binary in ~/.respan/collector/bin",
675
+ "exclusive": [
676
+ "docker"
677
+ ],
678
+ "name": "binary",
679
+ "allowNo": false,
680
+ "type": "boolean"
681
+ },
682
+ "purge": {
683
+ "description": "Also delete the queued data (the respan-collector-queue volume / data dir). Requires --yes",
684
+ "name": "purge",
685
+ "allowNo": false,
686
+ "type": "boolean"
687
+ },
688
+ "yes": {
689
+ "description": "Confirm deleting queued spans with --purge",
690
+ "name": "yes",
691
+ "allowNo": false,
692
+ "type": "boolean"
595
693
  }
596
694
  },
597
695
  "hasDynamicHelp": false,
598
696
  "hiddenAliases": [],
599
- "id": "demo",
697
+ "id": "collector:stop",
600
698
  "pluginAlias": "@respan/cli",
601
699
  "pluginName": "@respan/cli",
602
700
  "pluginType": "core",
@@ -606,20 +704,20 @@
606
704
  "relativePath": [
607
705
  "dist",
608
706
  "commands",
609
- "demo",
610
- "index.js"
707
+ "collector",
708
+ "stop.js"
611
709
  ]
612
710
  },
613
- "datasets:create-span": {
711
+ "config:get": {
614
712
  "aliases": [],
615
713
  "args": {
616
- "dataset-id": {
617
- "description": "Dataset ID",
618
- "name": "dataset-id",
714
+ "key": {
715
+ "description": "Config key",
716
+ "name": "key",
619
717
  "required": true
620
718
  }
621
719
  },
622
- "description": "Create a span in a dataset",
720
+ "description": "Get a configuration value",
623
721
  "flags": {
624
722
  "api-key": {
625
723
  "description": "API key (env: RESPAN_API_KEY)",
@@ -661,19 +759,11 @@
661
759
  "name": "verbose",
662
760
  "allowNo": false,
663
761
  "type": "boolean"
664
- },
665
- "body": {
666
- "description": "Span body as JSON string",
667
- "name": "body",
668
- "required": true,
669
- "hasDynamicHelp": false,
670
- "multiple": false,
671
- "type": "option"
672
762
  }
673
763
  },
674
764
  "hasDynamicHelp": false,
675
765
  "hiddenAliases": [],
676
- "id": "datasets:create-span",
766
+ "id": "config:get",
677
767
  "pluginAlias": "@respan/cli",
678
768
  "pluginName": "@respan/cli",
679
769
  "pluginType": "core",
@@ -683,14 +773,14 @@
683
773
  "relativePath": [
684
774
  "dist",
685
775
  "commands",
686
- "datasets",
687
- "create-span.js"
776
+ "config",
777
+ "get.js"
688
778
  ]
689
779
  },
690
- "datasets:create": {
780
+ "config:list": {
691
781
  "aliases": [],
692
782
  "args": {},
693
- "description": "Create a new dataset",
783
+ "description": "List all configuration",
694
784
  "flags": {
695
785
  "api-key": {
696
786
  "description": "API key (env: RESPAN_API_KEY)",
@@ -732,26 +822,11 @@
732
822
  "name": "verbose",
733
823
  "allowNo": false,
734
824
  "type": "boolean"
735
- },
736
- "name": {
737
- "description": "Dataset name",
738
- "name": "name",
739
- "required": true,
740
- "hasDynamicHelp": false,
741
- "multiple": false,
742
- "type": "option"
743
- },
744
- "description": {
745
- "description": "Dataset description",
746
- "name": "description",
747
- "hasDynamicHelp": false,
748
- "multiple": false,
749
- "type": "option"
750
825
  }
751
826
  },
752
827
  "hasDynamicHelp": false,
753
828
  "hiddenAliases": [],
754
- "id": "datasets:create",
829
+ "id": "config:list",
755
830
  "pluginAlias": "@respan/cli",
756
831
  "pluginName": "@respan/cli",
757
832
  "pluginType": "core",
@@ -761,25 +836,25 @@
761
836
  "relativePath": [
762
837
  "dist",
763
838
  "commands",
764
- "datasets",
765
- "create.js"
839
+ "config",
840
+ "list.js"
766
841
  ]
767
842
  },
768
- "datasets:get-span": {
843
+ "config:set": {
769
844
  "aliases": [],
770
845
  "args": {
771
- "dataset-id": {
772
- "description": "Dataset ID",
773
- "name": "dataset-id",
846
+ "key": {
847
+ "description": "Config key",
848
+ "name": "key",
774
849
  "required": true
775
850
  },
776
- "span-id": {
777
- "description": "Span ID",
778
- "name": "span-id",
851
+ "value": {
852
+ "description": "Config value",
853
+ "name": "value",
779
854
  "required": true
780
855
  }
781
856
  },
782
- "description": "Get a specific span from a dataset",
857
+ "description": "Set a configuration value",
783
858
  "flags": {
784
859
  "api-key": {
785
860
  "description": "API key (env: RESPAN_API_KEY)",
@@ -825,7 +900,7 @@
825
900
  },
826
901
  "hasDynamicHelp": false,
827
902
  "hiddenAliases": [],
828
- "id": "datasets:get-span",
903
+ "id": "config:set",
829
904
  "pluginAlias": "@respan/cli",
830
905
  "pluginName": "@respan/cli",
831
906
  "pluginType": "core",
@@ -835,20 +910,20 @@
835
910
  "relativePath": [
836
911
  "dist",
837
912
  "commands",
838
- "datasets",
839
- "get-span.js"
913
+ "config",
914
+ "set.js"
840
915
  ]
841
916
  },
842
- "datasets:get": {
917
+ "datasets:create-span": {
843
918
  "aliases": [],
844
919
  "args": {
845
- "id": {
920
+ "dataset-id": {
846
921
  "description": "Dataset ID",
847
- "name": "id",
922
+ "name": "dataset-id",
848
923
  "required": true
849
924
  }
850
925
  },
851
- "description": "Get a specific dataset",
926
+ "description": "Create a span in a dataset",
852
927
  "flags": {
853
928
  "api-key": {
854
929
  "description": "API key (env: RESPAN_API_KEY)",
@@ -890,11 +965,19 @@
890
965
  "name": "verbose",
891
966
  "allowNo": false,
892
967
  "type": "boolean"
893
- }
894
- },
895
- "hasDynamicHelp": false,
896
- "hiddenAliases": [],
897
- "id": "datasets:get",
968
+ },
969
+ "body": {
970
+ "description": "Span body as JSON string",
971
+ "name": "body",
972
+ "required": true,
973
+ "hasDynamicHelp": false,
974
+ "multiple": false,
975
+ "type": "option"
976
+ }
977
+ },
978
+ "hasDynamicHelp": false,
979
+ "hiddenAliases": [],
980
+ "id": "datasets:create-span",
898
981
  "pluginAlias": "@respan/cli",
899
982
  "pluginName": "@respan/cli",
900
983
  "pluginType": "core",
@@ -905,13 +988,13 @@
905
988
  "dist",
906
989
  "commands",
907
990
  "datasets",
908
- "get.js"
991
+ "create-span.js"
909
992
  ]
910
993
  },
911
- "datasets:list": {
994
+ "datasets:create": {
912
995
  "aliases": [],
913
996
  "args": {},
914
- "description": "List datasets",
997
+ "description": "Create a new dataset",
915
998
  "flags": {
916
999
  "api-key": {
917
1000
  "description": "API key (env: RESPAN_API_KEY)",
@@ -954,18 +1037,17 @@
954
1037
  "allowNo": false,
955
1038
  "type": "boolean"
956
1039
  },
957
- "limit": {
958
- "description": "Number of results per page",
959
- "name": "limit",
960
- "default": 50,
1040
+ "name": {
1041
+ "description": "Dataset name",
1042
+ "name": "name",
1043
+ "required": true,
961
1044
  "hasDynamicHelp": false,
962
1045
  "multiple": false,
963
1046
  "type": "option"
964
1047
  },
965
- "page": {
966
- "description": "Page number",
967
- "name": "page",
968
- "default": 1,
1048
+ "description": {
1049
+ "description": "Dataset description",
1050
+ "name": "description",
969
1051
  "hasDynamicHelp": false,
970
1052
  "multiple": false,
971
1053
  "type": "option"
@@ -973,7 +1055,7 @@
973
1055
  },
974
1056
  "hasDynamicHelp": false,
975
1057
  "hiddenAliases": [],
976
- "id": "datasets:list",
1058
+ "id": "datasets:create",
977
1059
  "pluginAlias": "@respan/cli",
978
1060
  "pluginName": "@respan/cli",
979
1061
  "pluginType": "core",
@@ -984,19 +1066,24 @@
984
1066
  "dist",
985
1067
  "commands",
986
1068
  "datasets",
987
- "list.js"
1069
+ "create.js"
988
1070
  ]
989
1071
  },
990
- "datasets:spans": {
1072
+ "datasets:get-span": {
991
1073
  "aliases": [],
992
1074
  "args": {
993
1075
  "dataset-id": {
994
1076
  "description": "Dataset ID",
995
1077
  "name": "dataset-id",
996
1078
  "required": true
1079
+ },
1080
+ "span-id": {
1081
+ "description": "Span ID",
1082
+ "name": "span-id",
1083
+ "required": true
997
1084
  }
998
1085
  },
999
- "description": "List spans in a dataset",
1086
+ "description": "Get a specific span from a dataset",
1000
1087
  "flags": {
1001
1088
  "api-key": {
1002
1089
  "description": "API key (env: RESPAN_API_KEY)",
@@ -1042,7 +1129,7 @@
1042
1129
  },
1043
1130
  "hasDynamicHelp": false,
1044
1131
  "hiddenAliases": [],
1045
- "id": "datasets:spans",
1132
+ "id": "datasets:get-span",
1046
1133
  "pluginAlias": "@respan/cli",
1047
1134
  "pluginName": "@respan/cli",
1048
1135
  "pluginType": "core",
@@ -1053,10 +1140,10 @@
1053
1140
  "dist",
1054
1141
  "commands",
1055
1142
  "datasets",
1056
- "spans.js"
1143
+ "get-span.js"
1057
1144
  ]
1058
1145
  },
1059
- "datasets:update": {
1146
+ "datasets:get": {
1060
1147
  "aliases": [],
1061
1148
  "args": {
1062
1149
  "id": {
@@ -1065,7 +1152,7 @@
1065
1152
  "required": true
1066
1153
  }
1067
1154
  },
1068
- "description": "Update a dataset",
1155
+ "description": "Get a specific dataset",
1069
1156
  "flags": {
1070
1157
  "api-key": {
1071
1158
  "description": "API key (env: RESPAN_API_KEY)",
@@ -1107,25 +1194,11 @@
1107
1194
  "name": "verbose",
1108
1195
  "allowNo": false,
1109
1196
  "type": "boolean"
1110
- },
1111
- "name": {
1112
- "description": "Dataset name",
1113
- "name": "name",
1114
- "hasDynamicHelp": false,
1115
- "multiple": false,
1116
- "type": "option"
1117
- },
1118
- "description": {
1119
- "description": "Dataset description",
1120
- "name": "description",
1121
- "hasDynamicHelp": false,
1122
- "multiple": false,
1123
- "type": "option"
1124
1197
  }
1125
1198
  },
1126
1199
  "hasDynamicHelp": false,
1127
1200
  "hiddenAliases": [],
1128
- "id": "datasets:update",
1201
+ "id": "datasets:get",
1129
1202
  "pluginAlias": "@respan/cli",
1130
1203
  "pluginName": "@respan/cli",
1131
1204
  "pluginType": "core",
@@ -1136,19 +1209,13 @@
1136
1209
  "dist",
1137
1210
  "commands",
1138
1211
  "datasets",
1139
- "update.js"
1212
+ "get.js"
1140
1213
  ]
1141
1214
  },
1142
- "eval": {
1215
+ "datasets:list": {
1143
1216
  "aliases": [],
1144
- "args": {
1145
- "file": {
1146
- "description": "Path to eval JSON file",
1147
- "name": "file",
1148
- "required": true
1149
- }
1150
- },
1151
- "description": "Run an eval defined in a JSON file (creates prompt + dataset on the platform)",
1217
+ "args": {},
1218
+ "description": "List datasets",
1152
1219
  "flags": {
1153
1220
  "api-key": {
1154
1221
  "description": "API key (env: RESPAN_API_KEY)",
@@ -1190,11 +1257,27 @@
1190
1257
  "name": "verbose",
1191
1258
  "allowNo": false,
1192
1259
  "type": "boolean"
1260
+ },
1261
+ "limit": {
1262
+ "description": "Number of results per page",
1263
+ "name": "limit",
1264
+ "default": 50,
1265
+ "hasDynamicHelp": false,
1266
+ "multiple": false,
1267
+ "type": "option"
1268
+ },
1269
+ "page": {
1270
+ "description": "Page number",
1271
+ "name": "page",
1272
+ "default": 1,
1273
+ "hasDynamicHelp": false,
1274
+ "multiple": false,
1275
+ "type": "option"
1193
1276
  }
1194
1277
  },
1195
1278
  "hasDynamicHelp": false,
1196
1279
  "hiddenAliases": [],
1197
- "id": "eval",
1280
+ "id": "datasets:list",
1198
1281
  "pluginAlias": "@respan/cli",
1199
1282
  "pluginName": "@respan/cli",
1200
1283
  "pluginType": "core",
@@ -1204,14 +1287,20 @@
1204
1287
  "relativePath": [
1205
1288
  "dist",
1206
1289
  "commands",
1207
- "eval",
1208
- "index.js"
1290
+ "datasets",
1291
+ "list.js"
1209
1292
  ]
1210
1293
  },
1211
- "evaluators:create": {
1294
+ "datasets:spans": {
1212
1295
  "aliases": [],
1213
- "args": {},
1214
- "description": "Create a new evaluator",
1296
+ "args": {
1297
+ "dataset-id": {
1298
+ "description": "Dataset ID",
1299
+ "name": "dataset-id",
1300
+ "required": true
1301
+ }
1302
+ },
1303
+ "description": "List spans in a dataset",
1215
1304
  "flags": {
1216
1305
  "api-key": {
1217
1306
  "description": "API key (env: RESPAN_API_KEY)",
@@ -1253,40 +1342,11 @@
1253
1342
  "name": "verbose",
1254
1343
  "allowNo": false,
1255
1344
  "type": "boolean"
1256
- },
1257
- "name": {
1258
- "description": "Evaluator name",
1259
- "name": "name",
1260
- "required": true,
1261
- "hasDynamicHelp": false,
1262
- "multiple": false,
1263
- "type": "option"
1264
- },
1265
- "type": {
1266
- "description": "Evaluator type",
1267
- "name": "type",
1268
- "hasDynamicHelp": false,
1269
- "multiple": false,
1270
- "type": "option"
1271
- },
1272
- "description": {
1273
- "description": "Evaluator description",
1274
- "name": "description",
1275
- "hasDynamicHelp": false,
1276
- "multiple": false,
1277
- "type": "option"
1278
- },
1279
- "config": {
1280
- "description": "Evaluator config as JSON string",
1281
- "name": "config",
1282
- "hasDynamicHelp": false,
1283
- "multiple": false,
1284
- "type": "option"
1285
1345
  }
1286
1346
  },
1287
1347
  "hasDynamicHelp": false,
1288
1348
  "hiddenAliases": [],
1289
- "id": "evaluators:create",
1349
+ "id": "datasets:spans",
1290
1350
  "pluginAlias": "@respan/cli",
1291
1351
  "pluginName": "@respan/cli",
1292
1352
  "pluginType": "core",
@@ -1296,20 +1356,20 @@
1296
1356
  "relativePath": [
1297
1357
  "dist",
1298
1358
  "commands",
1299
- "evaluators",
1300
- "create.js"
1359
+ "datasets",
1360
+ "spans.js"
1301
1361
  ]
1302
1362
  },
1303
- "evaluators:get": {
1363
+ "datasets:update": {
1304
1364
  "aliases": [],
1305
1365
  "args": {
1306
1366
  "id": {
1307
- "description": "Evaluator ID",
1367
+ "description": "Dataset ID",
1308
1368
  "name": "id",
1309
1369
  "required": true
1310
1370
  }
1311
1371
  },
1312
- "description": "Get a specific evaluator",
1372
+ "description": "Update a dataset",
1313
1373
  "flags": {
1314
1374
  "api-key": {
1315
1375
  "description": "API key (env: RESPAN_API_KEY)",
@@ -1351,11 +1411,25 @@
1351
1411
  "name": "verbose",
1352
1412
  "allowNo": false,
1353
1413
  "type": "boolean"
1414
+ },
1415
+ "name": {
1416
+ "description": "Dataset name",
1417
+ "name": "name",
1418
+ "hasDynamicHelp": false,
1419
+ "multiple": false,
1420
+ "type": "option"
1421
+ },
1422
+ "description": {
1423
+ "description": "Dataset description",
1424
+ "name": "description",
1425
+ "hasDynamicHelp": false,
1426
+ "multiple": false,
1427
+ "type": "option"
1354
1428
  }
1355
1429
  },
1356
1430
  "hasDynamicHelp": false,
1357
1431
  "hiddenAliases": [],
1358
- "id": "evaluators:get",
1432
+ "id": "datasets:update",
1359
1433
  "pluginAlias": "@respan/cli",
1360
1434
  "pluginName": "@respan/cli",
1361
1435
  "pluginType": "core",
@@ -1365,14 +1439,18 @@
1365
1439
  "relativePath": [
1366
1440
  "dist",
1367
1441
  "commands",
1368
- "evaluators",
1369
- "get.js"
1442
+ "datasets",
1443
+ "update.js"
1370
1444
  ]
1371
1445
  },
1372
- "evaluators:list": {
1446
+ "demo:clear": {
1373
1447
  "aliases": [],
1374
1448
  "args": {},
1375
- "description": "List evaluators",
1449
+ "description": "Delete the sample prompts, datasets, and evaluators created by `respan demo`. Demo traces are left in place (each run is timestamped history). Idempotent — safe to re-run.",
1450
+ "examples": [
1451
+ "<%= config.bin %> demo clear",
1452
+ "<%= config.bin %> demo clear --yes"
1453
+ ],
1376
1454
  "flags": {
1377
1455
  "api-key": {
1378
1456
  "description": "API key (env: RESPAN_API_KEY)",
@@ -1415,26 +1493,17 @@
1415
1493
  "allowNo": false,
1416
1494
  "type": "boolean"
1417
1495
  },
1418
- "limit": {
1419
- "description": "Number of results per page",
1420
- "name": "limit",
1421
- "default": 20,
1422
- "hasDynamicHelp": false,
1423
- "multiple": false,
1424
- "type": "option"
1425
- },
1426
- "page": {
1427
- "description": "Page number",
1428
- "name": "page",
1429
- "default": 1,
1430
- "hasDynamicHelp": false,
1431
- "multiple": false,
1432
- "type": "option"
1496
+ "yes": {
1497
+ "char": "y",
1498
+ "description": "Skip the confirmation prompt",
1499
+ "name": "yes",
1500
+ "allowNo": false,
1501
+ "type": "boolean"
1433
1502
  }
1434
1503
  },
1435
1504
  "hasDynamicHelp": false,
1436
1505
  "hiddenAliases": [],
1437
- "id": "evaluators:list",
1506
+ "id": "demo:clear",
1438
1507
  "pluginAlias": "@respan/cli",
1439
1508
  "pluginName": "@respan/cli",
1440
1509
  "pluginType": "core",
@@ -1444,20 +1513,17 @@
1444
1513
  "relativePath": [
1445
1514
  "dist",
1446
1515
  "commands",
1447
- "evaluators",
1448
- "list.js"
1516
+ "demo",
1517
+ "clear.js"
1449
1518
  ]
1450
1519
  },
1451
- "evaluators:run": {
1520
+ "demo": {
1452
1521
  "aliases": [],
1453
- "args": {
1454
- "id": {
1455
- "description": "Evaluator ID",
1456
- "name": "id",
1457
- "required": true
1458
- }
1459
- },
1460
- "description": "Run an evaluator",
1522
+ "args": {},
1523
+ "description": "Seed your account with sample data (prompts and traces) so you have something to explore. Idempotent — safe to re-run.",
1524
+ "examples": [
1525
+ "<%= config.bin %> demo"
1526
+ ],
1461
1527
  "flags": {
1462
1528
  "api-key": {
1463
1529
  "description": "API key (env: RESPAN_API_KEY)",
@@ -1499,32 +1565,11 @@
1499
1565
  "name": "verbose",
1500
1566
  "allowNo": false,
1501
1567
  "type": "boolean"
1502
- },
1503
- "dataset-id": {
1504
- "description": "Dataset ID to evaluate against",
1505
- "name": "dataset-id",
1506
- "hasDynamicHelp": false,
1507
- "multiple": false,
1508
- "type": "option"
1509
- },
1510
- "log-ids": {
1511
- "description": "Comma-separated log/span IDs to evaluate",
1512
- "name": "log-ids",
1513
- "hasDynamicHelp": false,
1514
- "multiple": false,
1515
- "type": "option"
1516
- },
1517
- "params": {
1518
- "description": "Additional parameters as JSON string",
1519
- "name": "params",
1520
- "hasDynamicHelp": false,
1521
- "multiple": false,
1522
- "type": "option"
1523
1568
  }
1524
1569
  },
1525
1570
  "hasDynamicHelp": false,
1526
1571
  "hiddenAliases": [],
1527
- "id": "evaluators:run",
1572
+ "id": "demo",
1528
1573
  "pluginAlias": "@respan/cli",
1529
1574
  "pluginName": "@respan/cli",
1530
1575
  "pluginType": "core",
@@ -1534,20 +1579,20 @@
1534
1579
  "relativePath": [
1535
1580
  "dist",
1536
1581
  "commands",
1537
- "evaluators",
1538
- "run.js"
1582
+ "demo",
1583
+ "index.js"
1539
1584
  ]
1540
1585
  },
1541
- "evaluators:update": {
1586
+ "eval": {
1542
1587
  "aliases": [],
1543
1588
  "args": {
1544
- "id": {
1545
- "description": "Evaluator ID",
1546
- "name": "id",
1589
+ "file": {
1590
+ "description": "Path to eval JSON file",
1591
+ "name": "file",
1547
1592
  "required": true
1548
1593
  }
1549
1594
  },
1550
- "description": "Update an evaluator",
1595
+ "description": "Run an eval defined in a JSON file (creates prompt + dataset on the platform)",
1551
1596
  "flags": {
1552
1597
  "api-key": {
1553
1598
  "description": "API key (env: RESPAN_API_KEY)",
@@ -1589,32 +1634,11 @@
1589
1634
  "name": "verbose",
1590
1635
  "allowNo": false,
1591
1636
  "type": "boolean"
1592
- },
1593
- "name": {
1594
- "description": "Evaluator name",
1595
- "name": "name",
1596
- "hasDynamicHelp": false,
1597
- "multiple": false,
1598
- "type": "option"
1599
- },
1600
- "description": {
1601
- "description": "Evaluator description",
1602
- "name": "description",
1603
- "hasDynamicHelp": false,
1604
- "multiple": false,
1605
- "type": "option"
1606
- },
1607
- "config": {
1608
- "description": "Evaluator config as JSON string",
1609
- "name": "config",
1610
- "hasDynamicHelp": false,
1611
- "multiple": false,
1612
- "type": "option"
1613
1637
  }
1614
1638
  },
1615
1639
  "hasDynamicHelp": false,
1616
1640
  "hiddenAliases": [],
1617
- "id": "evaluators:update",
1641
+ "id": "eval",
1618
1642
  "pluginAlias": "@respan/cli",
1619
1643
  "pluginName": "@respan/cli",
1620
1644
  "pluginType": "core",
@@ -1624,14 +1648,14 @@
1624
1648
  "relativePath": [
1625
1649
  "dist",
1626
1650
  "commands",
1627
- "evaluators",
1628
- "update.js"
1651
+ "eval",
1652
+ "index.js"
1629
1653
  ]
1630
1654
  },
1631
- "experiments:create": {
1655
+ "evaluators:create": {
1632
1656
  "aliases": [],
1633
1657
  "args": {},
1634
- "description": "Create a new experiment",
1658
+ "description": "Create a new evaluator",
1635
1659
  "flags": {
1636
1660
  "api-key": {
1637
1661
  "description": "API key (env: RESPAN_API_KEY)",
@@ -1675,31 +1699,30 @@
1675
1699
  "type": "boolean"
1676
1700
  },
1677
1701
  "name": {
1678
- "description": "Experiment name",
1702
+ "description": "Evaluator name",
1679
1703
  "name": "name",
1680
1704
  "required": true,
1681
1705
  "hasDynamicHelp": false,
1682
1706
  "multiple": false,
1683
1707
  "type": "option"
1684
1708
  },
1685
- "dataset-id": {
1686
- "description": "Dataset ID",
1687
- "name": "dataset-id",
1688
- "required": true,
1709
+ "type": {
1710
+ "description": "Evaluator type",
1711
+ "name": "type",
1689
1712
  "hasDynamicHelp": false,
1690
1713
  "multiple": false,
1691
1714
  "type": "option"
1692
1715
  },
1693
1716
  "description": {
1694
- "description": "Experiment description",
1717
+ "description": "Evaluator description",
1695
1718
  "name": "description",
1696
1719
  "hasDynamicHelp": false,
1697
1720
  "multiple": false,
1698
1721
  "type": "option"
1699
1722
  },
1700
- "workflows": {
1701
- "description": "Workflows configuration as JSON string",
1702
- "name": "workflows",
1723
+ "config": {
1724
+ "description": "Evaluator config as JSON string",
1725
+ "name": "config",
1703
1726
  "hasDynamicHelp": false,
1704
1727
  "multiple": false,
1705
1728
  "type": "option"
@@ -1707,7 +1730,7 @@
1707
1730
  },
1708
1731
  "hasDynamicHelp": false,
1709
1732
  "hiddenAliases": [],
1710
- "id": "experiments:create",
1733
+ "id": "evaluators:create",
1711
1734
  "pluginAlias": "@respan/cli",
1712
1735
  "pluginName": "@respan/cli",
1713
1736
  "pluginType": "core",
@@ -1717,20 +1740,20 @@
1717
1740
  "relativePath": [
1718
1741
  "dist",
1719
1742
  "commands",
1720
- "experiments",
1743
+ "evaluators",
1721
1744
  "create.js"
1722
1745
  ]
1723
1746
  },
1724
- "experiments:get": {
1747
+ "evaluators:get": {
1725
1748
  "aliases": [],
1726
1749
  "args": {
1727
1750
  "id": {
1728
- "description": "Experiment ID",
1751
+ "description": "Evaluator ID",
1729
1752
  "name": "id",
1730
1753
  "required": true
1731
1754
  }
1732
1755
  },
1733
- "description": "Get a specific experiment",
1756
+ "description": "Get a specific evaluator",
1734
1757
  "flags": {
1735
1758
  "api-key": {
1736
1759
  "description": "API key (env: RESPAN_API_KEY)",
@@ -1776,7 +1799,7 @@
1776
1799
  },
1777
1800
  "hasDynamicHelp": false,
1778
1801
  "hiddenAliases": [],
1779
- "id": "experiments:get",
1802
+ "id": "evaluators:get",
1780
1803
  "pluginAlias": "@respan/cli",
1781
1804
  "pluginName": "@respan/cli",
1782
1805
  "pluginType": "core",
@@ -1786,14 +1809,14 @@
1786
1809
  "relativePath": [
1787
1810
  "dist",
1788
1811
  "commands",
1789
- "experiments",
1812
+ "evaluators",
1790
1813
  "get.js"
1791
1814
  ]
1792
1815
  },
1793
- "experiments:list": {
1816
+ "evaluators:list": {
1794
1817
  "aliases": [],
1795
1818
  "args": {},
1796
- "description": "List experiments",
1819
+ "description": "List evaluators",
1797
1820
  "flags": {
1798
1821
  "api-key": {
1799
1822
  "description": "API key (env: RESPAN_API_KEY)",
@@ -1855,7 +1878,7 @@
1855
1878
  },
1856
1879
  "hasDynamicHelp": false,
1857
1880
  "hiddenAliases": [],
1858
- "id": "experiments:list",
1881
+ "id": "evaluators:list",
1859
1882
  "pluginAlias": "@respan/cli",
1860
1883
  "pluginName": "@respan/cli",
1861
1884
  "pluginType": "core",
@@ -1865,22 +1888,20 @@
1865
1888
  "relativePath": [
1866
1889
  "dist",
1867
1890
  "commands",
1868
- "experiments",
1891
+ "evaluators",
1869
1892
  "list.js"
1870
1893
  ]
1871
1894
  },
1872
- "integrate:claude-code": {
1895
+ "evaluators:run": {
1873
1896
  "aliases": [],
1874
- "args": {},
1875
- "description": "Integrate Respan with Claude Code.\n\nInstalls a Stop hook that reads conversation transcripts and sends\nthem to Respan as structured spans (chat, tool, thinking).\n\nScope:\n --global Install hook script + register in ~/.claude/settings.json\n --local Write credentials + enable flag to .claude/settings.local.json\n\nDefault behavior installs the global hook and writes local project config.",
1876
- "examples": [
1877
- "respan integrate claude-code",
1878
- "respan integrate claude-code --disable",
1879
- "respan integrate claude-code --global",
1880
- "respan integrate claude-code --local --project-id my-project",
1881
- "respan integrate claude-code --attrs '{\"env\":\"prod\"}'",
1882
- "respan integrate claude-code --dry-run"
1883
- ],
1897
+ "args": {
1898
+ "id": {
1899
+ "description": "Evaluator ID",
1900
+ "name": "id",
1901
+ "required": true
1902
+ }
1903
+ },
1904
+ "description": "Run an evaluator",
1884
1905
  "flags": {
1885
1906
  "api-key": {
1886
1907
  "description": "API key (env: RESPAN_API_KEY)",
@@ -1891,9 +1912,8 @@
1891
1912
  "type": "option"
1892
1913
  },
1893
1914
  "base-url": {
1894
- "description": "Respan API base URL (for enterprise deployments)",
1915
+ "description": "Temporary API base URL override for this command",
1895
1916
  "name": "base-url",
1896
- "default": "https://api.respan.ai/api",
1897
1917
  "hasDynamicHelp": false,
1898
1918
  "multiple": false,
1899
1919
  "type": "option"
@@ -1924,90 +1944,31 @@
1924
1944
  "allowNo": false,
1925
1945
  "type": "boolean"
1926
1946
  },
1927
- "local": {
1928
- "description": "Write per-project config (default)",
1929
- "exclusive": [
1930
- "global"
1931
- ],
1932
- "name": "local",
1933
- "allowNo": false,
1934
- "type": "boolean"
1935
- },
1936
- "global": {
1937
- "description": "Write user-level global config",
1938
- "exclusive": [
1939
- "local"
1940
- ],
1941
- "name": "global",
1942
- "allowNo": false,
1943
- "type": "boolean"
1944
- },
1945
- "enable": {
1946
- "description": "Enable tracing (default)",
1947
- "exclusive": [
1948
- "disable"
1949
- ],
1950
- "name": "enable",
1951
- "allowNo": false,
1952
- "type": "boolean"
1953
- },
1954
- "disable": {
1955
- "description": "Disable tracing",
1956
- "exclusive": [
1957
- "enable"
1958
- ],
1959
- "name": "disable",
1960
- "allowNo": false,
1961
- "type": "boolean"
1962
- },
1963
- "project-id": {
1964
- "description": "Respan project ID (added to metadata / resource attributes)",
1965
- "env": "RESPAN_PROJECT_ID",
1966
- "name": "project-id",
1967
- "hasDynamicHelp": false,
1968
- "multiple": false,
1969
- "type": "option"
1970
- },
1971
- "attrs": {
1972
- "description": "Custom attributes JSON (e.g. '{\"env\":\"prod\"}')",
1973
- "name": "attrs",
1974
- "default": "{}",
1975
- "hasDynamicHelp": false,
1976
- "multiple": false,
1977
- "type": "option"
1978
- },
1979
- "customer-id": {
1980
- "description": "Customer/user identifier for traces (e.g. your name or email)",
1981
- "env": "RESPAN_CUSTOMER_ID",
1982
- "name": "customer-id",
1947
+ "dataset-id": {
1948
+ "description": "Dataset ID to evaluate against",
1949
+ "name": "dataset-id",
1983
1950
  "hasDynamicHelp": false,
1984
1951
  "multiple": false,
1985
1952
  "type": "option"
1986
1953
  },
1987
- "span-name": {
1988
- "description": "Root span name for traces (default: claude-code)",
1989
- "name": "span-name",
1954
+ "log-ids": {
1955
+ "description": "Comma-separated log/span IDs to evaluate",
1956
+ "name": "log-ids",
1990
1957
  "hasDynamicHelp": false,
1991
1958
  "multiple": false,
1992
1959
  "type": "option"
1993
1960
  },
1994
- "workflow-name": {
1995
- "description": "Workflow name for traces (default: claude-code)",
1996
- "name": "workflow-name",
1961
+ "params": {
1962
+ "description": "Additional parameters as JSON string",
1963
+ "name": "params",
1997
1964
  "hasDynamicHelp": false,
1998
1965
  "multiple": false,
1999
1966
  "type": "option"
2000
- },
2001
- "dry-run": {
2002
- "description": "Preview changes without writing files",
2003
- "name": "dry-run",
2004
- "allowNo": false,
2005
- "type": "boolean"
2006
1967
  }
2007
1968
  },
2008
1969
  "hasDynamicHelp": false,
2009
1970
  "hiddenAliases": [],
2010
- "id": "integrate:claude-code",
1971
+ "id": "evaluators:run",
2011
1972
  "pluginAlias": "@respan/cli",
2012
1973
  "pluginName": "@respan/cli",
2013
1974
  "pluginType": "core",
@@ -2017,22 +1978,20 @@
2017
1978
  "relativePath": [
2018
1979
  "dist",
2019
1980
  "commands",
2020
- "integrate",
2021
- "claude-code.js"
1981
+ "evaluators",
1982
+ "run.js"
2022
1983
  ]
2023
1984
  },
2024
- "integrate:codex-cli": {
1985
+ "evaluators:update": {
2025
1986
  "aliases": [],
2026
- "args": {},
2027
- "description": "Integrate Respan with Codex CLI.\n\nInstalls a notify hook that reads session JSONL files and sends\nthem to Respan as structured spans (chat, tool, reasoning).\n\nScope:\n --global Install hook script + register notify in ~/.codex/config.toml\n --local Write .codex/respan.json with customer_id, span_name, etc.\n\nDefault behavior installs the global notify hook and writes local project config.",
2028
- "examples": [
2029
- "respan integrate codex-cli",
2030
- "respan integrate codex-cli --disable",
2031
- "respan integrate codex-cli --global",
2032
- "respan integrate codex-cli --local --customer-id frank",
2033
- "respan integrate codex-cli --attrs '{\"env\":\"prod\"}'",
2034
- "respan integrate codex-cli --dry-run"
2035
- ],
1987
+ "args": {
1988
+ "id": {
1989
+ "description": "Evaluator ID",
1990
+ "name": "id",
1991
+ "required": true
1992
+ }
1993
+ },
1994
+ "description": "Update an evaluator",
2036
1995
  "flags": {
2037
1996
  "api-key": {
2038
1997
  "description": "API key (env: RESPAN_API_KEY)",
@@ -2043,9 +2002,8 @@
2043
2002
  "type": "option"
2044
2003
  },
2045
2004
  "base-url": {
2046
- "description": "Respan API base URL (for enterprise deployments)",
2005
+ "description": "Temporary API base URL override for this command",
2047
2006
  "name": "base-url",
2048
- "default": "https://api.respan.ai/api",
2049
2007
  "hasDynamicHelp": false,
2050
2008
  "multiple": false,
2051
2009
  "type": "option"
@@ -2076,90 +2034,31 @@
2076
2034
  "allowNo": false,
2077
2035
  "type": "boolean"
2078
2036
  },
2079
- "local": {
2080
- "description": "Write per-project config (default)",
2081
- "exclusive": [
2082
- "global"
2083
- ],
2084
- "name": "local",
2085
- "allowNo": false,
2086
- "type": "boolean"
2087
- },
2088
- "global": {
2089
- "description": "Write user-level global config",
2090
- "exclusive": [
2091
- "local"
2092
- ],
2093
- "name": "global",
2094
- "allowNo": false,
2095
- "type": "boolean"
2096
- },
2097
- "enable": {
2098
- "description": "Enable tracing (default)",
2099
- "exclusive": [
2100
- "disable"
2101
- ],
2102
- "name": "enable",
2103
- "allowNo": false,
2104
- "type": "boolean"
2105
- },
2106
- "disable": {
2107
- "description": "Disable tracing",
2108
- "exclusive": [
2109
- "enable"
2110
- ],
2111
- "name": "disable",
2112
- "allowNo": false,
2113
- "type": "boolean"
2114
- },
2115
- "project-id": {
2116
- "description": "Respan project ID (added to metadata / resource attributes)",
2117
- "env": "RESPAN_PROJECT_ID",
2118
- "name": "project-id",
2037
+ "name": {
2038
+ "description": "Evaluator name",
2039
+ "name": "name",
2119
2040
  "hasDynamicHelp": false,
2120
2041
  "multiple": false,
2121
2042
  "type": "option"
2122
2043
  },
2123
- "attrs": {
2124
- "description": "Custom attributes JSON (e.g. '{\"env\":\"prod\"}')",
2125
- "name": "attrs",
2126
- "default": "{}",
2127
- "hasDynamicHelp": false,
2128
- "multiple": false,
2129
- "type": "option"
2130
- },
2131
- "customer-id": {
2132
- "description": "Customer/user identifier for traces (e.g. your name or email)",
2133
- "env": "RESPAN_CUSTOMER_ID",
2134
- "name": "customer-id",
2135
- "hasDynamicHelp": false,
2136
- "multiple": false,
2137
- "type": "option"
2138
- },
2139
- "span-name": {
2140
- "description": "Root span name for traces (default: claude-code)",
2141
- "name": "span-name",
2044
+ "description": {
2045
+ "description": "Evaluator description",
2046
+ "name": "description",
2142
2047
  "hasDynamicHelp": false,
2143
2048
  "multiple": false,
2144
2049
  "type": "option"
2145
2050
  },
2146
- "workflow-name": {
2147
- "description": "Workflow name for traces (default: claude-code)",
2148
- "name": "workflow-name",
2051
+ "config": {
2052
+ "description": "Evaluator config as JSON string",
2053
+ "name": "config",
2149
2054
  "hasDynamicHelp": false,
2150
2055
  "multiple": false,
2151
2056
  "type": "option"
2152
- },
2153
- "dry-run": {
2154
- "description": "Preview changes without writing files",
2155
- "name": "dry-run",
2156
- "allowNo": false,
2157
- "type": "boolean"
2158
2057
  }
2159
2058
  },
2160
2059
  "hasDynamicHelp": false,
2161
2060
  "hiddenAliases": [],
2162
- "id": "integrate:codex-cli",
2061
+ "id": "evaluators:update",
2163
2062
  "pluginAlias": "@respan/cli",
2164
2063
  "pluginName": "@respan/cli",
2165
2064
  "pluginType": "core",
@@ -2169,21 +2068,14 @@
2169
2068
  "relativePath": [
2170
2069
  "dist",
2171
2070
  "commands",
2172
- "integrate",
2173
- "codex-cli.js"
2071
+ "evaluators",
2072
+ "update.js"
2174
2073
  ]
2175
2074
  },
2176
- "integrate:gemini-cli": {
2075
+ "experiments:create": {
2177
2076
  "aliases": [],
2178
2077
  "args": {},
2179
- "description": "Integrate Respan with Gemini CLI.\n\nInstalls an AfterModel hook that captures LLM request/response data\nand sends it to Respan as structured spans with model, token counts,\nand input/output.\n\nScope:\n --global Write to ~/.gemini/settings.json (default)\n --local Write to .gemini/settings.json in project root\n\nGemini CLI ignores workspace-level telemetry settings, so --global is the default.",
2180
- "examples": [
2181
- "respan integrate gemini-cli",
2182
- "respan integrate gemini-cli --disable",
2183
- "respan integrate gemini-cli --local",
2184
- "respan integrate gemini-cli --project-id my-project --attrs '{\"env\":\"prod\"}'",
2185
- "respan integrate gemini-cli --dry-run"
2186
- ],
2078
+ "description": "Create a new experiment",
2187
2079
  "flags": {
2188
2080
  "api-key": {
2189
2081
  "description": "API key (env: RESPAN_API_KEY)",
@@ -2194,9 +2086,8 @@
2194
2086
  "type": "option"
2195
2087
  },
2196
2088
  "base-url": {
2197
- "description": "Respan API base URL (for enterprise deployments)",
2089
+ "description": "Temporary API base URL override for this command",
2198
2090
  "name": "base-url",
2199
- "default": "https://api.respan.ai/api",
2200
2091
  "hasDynamicHelp": false,
2201
2092
  "multiple": false,
2202
2093
  "type": "option"
@@ -2227,90 +2118,40 @@
2227
2118
  "allowNo": false,
2228
2119
  "type": "boolean"
2229
2120
  },
2230
- "local": {
2231
- "description": "Write per-project config (default)",
2232
- "exclusive": [
2233
- "global"
2234
- ],
2235
- "name": "local",
2236
- "allowNo": false,
2237
- "type": "boolean"
2238
- },
2239
- "global": {
2240
- "description": "Write user-level global config",
2241
- "exclusive": [
2242
- "local"
2243
- ],
2244
- "name": "global",
2245
- "allowNo": false,
2246
- "type": "boolean"
2247
- },
2248
- "enable": {
2249
- "description": "Enable tracing (default)",
2250
- "exclusive": [
2251
- "disable"
2252
- ],
2253
- "name": "enable",
2254
- "allowNo": false,
2255
- "type": "boolean"
2256
- },
2257
- "disable": {
2258
- "description": "Disable tracing",
2259
- "exclusive": [
2260
- "enable"
2261
- ],
2262
- "name": "disable",
2263
- "allowNo": false,
2264
- "type": "boolean"
2265
- },
2266
- "project-id": {
2267
- "description": "Respan project ID (added to metadata / resource attributes)",
2268
- "env": "RESPAN_PROJECT_ID",
2269
- "name": "project-id",
2270
- "hasDynamicHelp": false,
2271
- "multiple": false,
2272
- "type": "option"
2273
- },
2274
- "attrs": {
2275
- "description": "Custom attributes JSON (e.g. '{\"env\":\"prod\"}')",
2276
- "name": "attrs",
2277
- "default": "{}",
2121
+ "name": {
2122
+ "description": "Experiment name",
2123
+ "name": "name",
2124
+ "required": true,
2278
2125
  "hasDynamicHelp": false,
2279
2126
  "multiple": false,
2280
2127
  "type": "option"
2281
2128
  },
2282
- "customer-id": {
2283
- "description": "Customer/user identifier for traces (e.g. your name or email)",
2284
- "env": "RESPAN_CUSTOMER_ID",
2285
- "name": "customer-id",
2129
+ "dataset-id": {
2130
+ "description": "Dataset ID",
2131
+ "name": "dataset-id",
2132
+ "required": true,
2286
2133
  "hasDynamicHelp": false,
2287
2134
  "multiple": false,
2288
2135
  "type": "option"
2289
2136
  },
2290
- "span-name": {
2291
- "description": "Root span name for traces (default: claude-code)",
2292
- "name": "span-name",
2137
+ "description": {
2138
+ "description": "Experiment description",
2139
+ "name": "description",
2293
2140
  "hasDynamicHelp": false,
2294
2141
  "multiple": false,
2295
2142
  "type": "option"
2296
2143
  },
2297
- "workflow-name": {
2298
- "description": "Workflow name for traces (default: claude-code)",
2299
- "name": "workflow-name",
2144
+ "workflows": {
2145
+ "description": "Workflows configuration as JSON string",
2146
+ "name": "workflows",
2300
2147
  "hasDynamicHelp": false,
2301
2148
  "multiple": false,
2302
2149
  "type": "option"
2303
- },
2304
- "dry-run": {
2305
- "description": "Preview changes without writing files",
2306
- "name": "dry-run",
2307
- "allowNo": false,
2308
- "type": "boolean"
2309
2150
  }
2310
2151
  },
2311
2152
  "hasDynamicHelp": false,
2312
2153
  "hiddenAliases": [],
2313
- "id": "integrate:gemini-cli",
2154
+ "id": "experiments:create",
2314
2155
  "pluginAlias": "@respan/cli",
2315
2156
  "pluginName": "@respan/cli",
2316
2157
  "pluginType": "core",
@@ -2320,21 +2161,20 @@
2320
2161
  "relativePath": [
2321
2162
  "dist",
2322
2163
  "commands",
2323
- "integrate",
2324
- "gemini-cli.js"
2164
+ "experiments",
2165
+ "create.js"
2325
2166
  ]
2326
2167
  },
2327
- "integrate:opencode": {
2168
+ "experiments:get": {
2328
2169
  "aliases": [],
2329
- "args": {},
2330
- "description": "Integrate Respan with OpenCode.\n\nOpenCode's built-in OTel does not work reliably, so this uses the\ncommunity opencode-otel plugin instead.\n\nScope:\n --local Write plugin config to project root (default)\n --global Write to ~/.config/opencode/plugins/otel.json\n The opencode-otel package is always installed globally.",
2331
- "examples": [
2332
- "respan integrate opencode",
2333
- "respan integrate opencode --disable",
2334
- "respan integrate opencode --global",
2335
- "respan integrate opencode --project-id my-project --attrs '{\"env\":\"prod\"}'",
2336
- "respan integrate opencode --dry-run"
2337
- ],
2170
+ "args": {
2171
+ "id": {
2172
+ "description": "Experiment ID",
2173
+ "name": "id",
2174
+ "required": true
2175
+ }
2176
+ },
2177
+ "description": "Get a specific experiment",
2338
2178
  "flags": {
2339
2179
  "api-key": {
2340
2180
  "description": "API key (env: RESPAN_API_KEY)",
@@ -2345,9 +2185,8 @@
2345
2185
  "type": "option"
2346
2186
  },
2347
2187
  "base-url": {
2348
- "description": "Respan API base URL (for enterprise deployments)",
2188
+ "description": "Temporary API base URL override for this command",
2349
2189
  "name": "base-url",
2350
- "default": "https://api.respan.ai/api",
2351
2190
  "hasDynamicHelp": false,
2352
2191
  "multiple": false,
2353
2192
  "type": "option"
@@ -2377,91 +2216,11 @@
2377
2216
  "name": "verbose",
2378
2217
  "allowNo": false,
2379
2218
  "type": "boolean"
2380
- },
2381
- "local": {
2382
- "description": "Write per-project config (default)",
2383
- "exclusive": [
2384
- "global"
2385
- ],
2386
- "name": "local",
2387
- "allowNo": false,
2388
- "type": "boolean"
2389
- },
2390
- "global": {
2391
- "description": "Write user-level global config",
2392
- "exclusive": [
2393
- "local"
2394
- ],
2395
- "name": "global",
2396
- "allowNo": false,
2397
- "type": "boolean"
2398
- },
2399
- "enable": {
2400
- "description": "Enable tracing (default)",
2401
- "exclusive": [
2402
- "disable"
2403
- ],
2404
- "name": "enable",
2405
- "allowNo": false,
2406
- "type": "boolean"
2407
- },
2408
- "disable": {
2409
- "description": "Disable tracing",
2410
- "exclusive": [
2411
- "enable"
2412
- ],
2413
- "name": "disable",
2414
- "allowNo": false,
2415
- "type": "boolean"
2416
- },
2417
- "project-id": {
2418
- "description": "Respan project ID (added to metadata / resource attributes)",
2419
- "env": "RESPAN_PROJECT_ID",
2420
- "name": "project-id",
2421
- "hasDynamicHelp": false,
2422
- "multiple": false,
2423
- "type": "option"
2424
- },
2425
- "attrs": {
2426
- "description": "Custom attributes JSON (e.g. '{\"env\":\"prod\"}')",
2427
- "name": "attrs",
2428
- "default": "{}",
2429
- "hasDynamicHelp": false,
2430
- "multiple": false,
2431
- "type": "option"
2432
- },
2433
- "customer-id": {
2434
- "description": "Customer/user identifier for traces (e.g. your name or email)",
2435
- "env": "RESPAN_CUSTOMER_ID",
2436
- "name": "customer-id",
2437
- "hasDynamicHelp": false,
2438
- "multiple": false,
2439
- "type": "option"
2440
- },
2441
- "span-name": {
2442
- "description": "Root span name for traces (default: claude-code)",
2443
- "name": "span-name",
2444
- "hasDynamicHelp": false,
2445
- "multiple": false,
2446
- "type": "option"
2447
- },
2448
- "workflow-name": {
2449
- "description": "Workflow name for traces (default: claude-code)",
2450
- "name": "workflow-name",
2451
- "hasDynamicHelp": false,
2452
- "multiple": false,
2453
- "type": "option"
2454
- },
2455
- "dry-run": {
2456
- "description": "Preview changes without writing files",
2457
- "name": "dry-run",
2458
- "allowNo": false,
2459
- "type": "boolean"
2460
2219
  }
2461
2220
  },
2462
2221
  "hasDynamicHelp": false,
2463
2222
  "hiddenAliases": [],
2464
- "id": "integrate:opencode",
2223
+ "id": "experiments:get",
2465
2224
  "pluginAlias": "@respan/cli",
2466
2225
  "pluginName": "@respan/cli",
2467
2226
  "pluginType": "core",
@@ -2471,14 +2230,14 @@
2471
2230
  "relativePath": [
2472
2231
  "dist",
2473
2232
  "commands",
2474
- "integrate",
2475
- "opencode.js"
2233
+ "experiments",
2234
+ "get.js"
2476
2235
  ]
2477
2236
  },
2478
- "logs:create": {
2237
+ "experiments:list": {
2479
2238
  "aliases": [],
2480
2239
  "args": {},
2481
- "description": "Create a log span",
2240
+ "description": "List experiments",
2482
2241
  "flags": {
2483
2242
  "api-key": {
2484
2243
  "description": "API key (env: RESPAN_API_KEY)",
@@ -2521,10 +2280,89 @@
2521
2280
  "allowNo": false,
2522
2281
  "type": "boolean"
2523
2282
  },
2524
- "input": {
2525
- "description": "Input text or JSON",
2526
- "name": "input",
2527
- "required": true,
2283
+ "limit": {
2284
+ "description": "Number of results per page",
2285
+ "name": "limit",
2286
+ "default": 20,
2287
+ "hasDynamicHelp": false,
2288
+ "multiple": false,
2289
+ "type": "option"
2290
+ },
2291
+ "page": {
2292
+ "description": "Page number",
2293
+ "name": "page",
2294
+ "default": 1,
2295
+ "hasDynamicHelp": false,
2296
+ "multiple": false,
2297
+ "type": "option"
2298
+ }
2299
+ },
2300
+ "hasDynamicHelp": false,
2301
+ "hiddenAliases": [],
2302
+ "id": "experiments:list",
2303
+ "pluginAlias": "@respan/cli",
2304
+ "pluginName": "@respan/cli",
2305
+ "pluginType": "core",
2306
+ "strict": true,
2307
+ "enableJsonFlag": false,
2308
+ "isESM": true,
2309
+ "relativePath": [
2310
+ "dist",
2311
+ "commands",
2312
+ "experiments",
2313
+ "list.js"
2314
+ ]
2315
+ },
2316
+ "logs:create": {
2317
+ "aliases": [],
2318
+ "args": {},
2319
+ "description": "Create a log span",
2320
+ "flags": {
2321
+ "api-key": {
2322
+ "description": "API key (env: RESPAN_API_KEY)",
2323
+ "env": "RESPAN_API_KEY",
2324
+ "name": "api-key",
2325
+ "hasDynamicHelp": false,
2326
+ "multiple": false,
2327
+ "type": "option"
2328
+ },
2329
+ "base-url": {
2330
+ "description": "Temporary API base URL override for this command",
2331
+ "name": "base-url",
2332
+ "hasDynamicHelp": false,
2333
+ "multiple": false,
2334
+ "type": "option"
2335
+ },
2336
+ "profile": {
2337
+ "description": "Named profile to use",
2338
+ "name": "profile",
2339
+ "hasDynamicHelp": false,
2340
+ "multiple": false,
2341
+ "type": "option"
2342
+ },
2343
+ "json": {
2344
+ "description": "Output as JSON",
2345
+ "name": "json",
2346
+ "allowNo": false,
2347
+ "type": "boolean"
2348
+ },
2349
+ "csv": {
2350
+ "description": "Output as CSV",
2351
+ "name": "csv",
2352
+ "allowNo": false,
2353
+ "type": "boolean"
2354
+ },
2355
+ "verbose": {
2356
+ "char": "v",
2357
+ "description": "Show verbose output",
2358
+ "name": "verbose",
2359
+ "allowNo": false,
2360
+ "type": "boolean"
2361
+ },
2362
+ "input": {
2363
+ "description": "Input text or JSON",
2364
+ "name": "input",
2365
+ "required": true,
2528
2366
  "hasDynamicHelp": false,
2529
2367
  "multiple": false,
2530
2368
  "type": "option"
@@ -4269,7 +4107,791 @@
4269
4107
  "users",
4270
4108
  "update.js"
4271
4109
  ]
4110
+ },
4111
+ "integrate:claude-code": {
4112
+ "aliases": [],
4113
+ "args": {},
4114
+ "description": "Integrate Respan with Claude Code.\n\nInstalls a Stop hook that reads conversation transcripts and sends\nthem to Respan as structured spans (chat, tool, thinking).\n\nScope:\n --global Install hook script + register in ~/.claude/settings.json\n --local Write credentials + enable flag to .claude/settings.local.json\n\nDefault behavior installs the global hook and writes local project config.",
4115
+ "examples": [
4116
+ "respan integrate claude-code",
4117
+ "respan integrate claude-code --disable",
4118
+ "respan integrate claude-code --global",
4119
+ "respan integrate claude-code --local --project-id my-project",
4120
+ "respan integrate claude-code --attrs '{\"env\":\"prod\"}'",
4121
+ "respan integrate claude-code --dry-run"
4122
+ ],
4123
+ "flags": {
4124
+ "api-key": {
4125
+ "description": "API key (env: RESPAN_API_KEY)",
4126
+ "env": "RESPAN_API_KEY",
4127
+ "name": "api-key",
4128
+ "hasDynamicHelp": false,
4129
+ "multiple": false,
4130
+ "type": "option"
4131
+ },
4132
+ "base-url": {
4133
+ "description": "Respan API base URL (for enterprise deployments)",
4134
+ "name": "base-url",
4135
+ "default": "https://api.respan.ai/api",
4136
+ "hasDynamicHelp": false,
4137
+ "multiple": false,
4138
+ "type": "option"
4139
+ },
4140
+ "profile": {
4141
+ "description": "Named profile to use",
4142
+ "name": "profile",
4143
+ "hasDynamicHelp": false,
4144
+ "multiple": false,
4145
+ "type": "option"
4146
+ },
4147
+ "json": {
4148
+ "description": "Output as JSON",
4149
+ "name": "json",
4150
+ "allowNo": false,
4151
+ "type": "boolean"
4152
+ },
4153
+ "csv": {
4154
+ "description": "Output as CSV",
4155
+ "name": "csv",
4156
+ "allowNo": false,
4157
+ "type": "boolean"
4158
+ },
4159
+ "verbose": {
4160
+ "char": "v",
4161
+ "description": "Show verbose output",
4162
+ "name": "verbose",
4163
+ "allowNo": false,
4164
+ "type": "boolean"
4165
+ },
4166
+ "local": {
4167
+ "description": "Write per-project config (default)",
4168
+ "exclusive": [
4169
+ "global"
4170
+ ],
4171
+ "name": "local",
4172
+ "allowNo": false,
4173
+ "type": "boolean"
4174
+ },
4175
+ "global": {
4176
+ "description": "Write user-level global config",
4177
+ "exclusive": [
4178
+ "local"
4179
+ ],
4180
+ "name": "global",
4181
+ "allowNo": false,
4182
+ "type": "boolean"
4183
+ },
4184
+ "enable": {
4185
+ "description": "Enable tracing (default)",
4186
+ "exclusive": [
4187
+ "disable"
4188
+ ],
4189
+ "name": "enable",
4190
+ "allowNo": false,
4191
+ "type": "boolean"
4192
+ },
4193
+ "disable": {
4194
+ "description": "Disable tracing",
4195
+ "exclusive": [
4196
+ "enable"
4197
+ ],
4198
+ "name": "disable",
4199
+ "allowNo": false,
4200
+ "type": "boolean"
4201
+ },
4202
+ "project-id": {
4203
+ "description": "Respan project ID (added to metadata / resource attributes)",
4204
+ "env": "RESPAN_PROJECT_ID",
4205
+ "name": "project-id",
4206
+ "hasDynamicHelp": false,
4207
+ "multiple": false,
4208
+ "type": "option"
4209
+ },
4210
+ "attrs": {
4211
+ "description": "Custom attributes JSON (e.g. '{\"env\":\"prod\"}')",
4212
+ "name": "attrs",
4213
+ "default": "{}",
4214
+ "hasDynamicHelp": false,
4215
+ "multiple": false,
4216
+ "type": "option"
4217
+ },
4218
+ "customer-id": {
4219
+ "description": "Customer/user identifier for traces (e.g. your name or email)",
4220
+ "env": "RESPAN_CUSTOMER_ID",
4221
+ "name": "customer-id",
4222
+ "hasDynamicHelp": false,
4223
+ "multiple": false,
4224
+ "type": "option"
4225
+ },
4226
+ "span-name": {
4227
+ "description": "Root span name for traces (default: claude-code)",
4228
+ "name": "span-name",
4229
+ "hasDynamicHelp": false,
4230
+ "multiple": false,
4231
+ "type": "option"
4232
+ },
4233
+ "workflow-name": {
4234
+ "description": "Workflow name for traces (default: claude-code)",
4235
+ "name": "workflow-name",
4236
+ "hasDynamicHelp": false,
4237
+ "multiple": false,
4238
+ "type": "option"
4239
+ },
4240
+ "dry-run": {
4241
+ "description": "Preview changes without writing files",
4242
+ "name": "dry-run",
4243
+ "allowNo": false,
4244
+ "type": "boolean"
4245
+ }
4246
+ },
4247
+ "hasDynamicHelp": false,
4248
+ "hiddenAliases": [],
4249
+ "id": "integrate:claude-code",
4250
+ "pluginAlias": "@respan/cli",
4251
+ "pluginName": "@respan/cli",
4252
+ "pluginType": "core",
4253
+ "strict": true,
4254
+ "enableJsonFlag": false,
4255
+ "isESM": true,
4256
+ "relativePath": [
4257
+ "dist",
4258
+ "commands",
4259
+ "integrate",
4260
+ "claude-code.js"
4261
+ ]
4262
+ },
4263
+ "integrate:codex-cli": {
4264
+ "aliases": [],
4265
+ "args": {},
4266
+ "description": "Integrate Respan with Codex CLI.\n\nInstalls a notify hook that reads session JSONL files and sends\nthem to Respan as structured spans (chat, tool, reasoning).\n\nScope:\n --global Install hook script + register notify in ~/.codex/config.toml\n --local Write .codex/respan.json with customer_id, span_name, etc.\n\nDefault behavior installs the global notify hook and writes local project config.",
4267
+ "examples": [
4268
+ "respan integrate codex-cli",
4269
+ "respan integrate codex-cli --disable",
4270
+ "respan integrate codex-cli --global",
4271
+ "respan integrate codex-cli --local --customer-id frank",
4272
+ "respan integrate codex-cli --attrs '{\"env\":\"prod\"}'",
4273
+ "respan integrate codex-cli --dry-run"
4274
+ ],
4275
+ "flags": {
4276
+ "api-key": {
4277
+ "description": "API key (env: RESPAN_API_KEY)",
4278
+ "env": "RESPAN_API_KEY",
4279
+ "name": "api-key",
4280
+ "hasDynamicHelp": false,
4281
+ "multiple": false,
4282
+ "type": "option"
4283
+ },
4284
+ "base-url": {
4285
+ "description": "Respan API base URL (for enterprise deployments)",
4286
+ "name": "base-url",
4287
+ "default": "https://api.respan.ai/api",
4288
+ "hasDynamicHelp": false,
4289
+ "multiple": false,
4290
+ "type": "option"
4291
+ },
4292
+ "profile": {
4293
+ "description": "Named profile to use",
4294
+ "name": "profile",
4295
+ "hasDynamicHelp": false,
4296
+ "multiple": false,
4297
+ "type": "option"
4298
+ },
4299
+ "json": {
4300
+ "description": "Output as JSON",
4301
+ "name": "json",
4302
+ "allowNo": false,
4303
+ "type": "boolean"
4304
+ },
4305
+ "csv": {
4306
+ "description": "Output as CSV",
4307
+ "name": "csv",
4308
+ "allowNo": false,
4309
+ "type": "boolean"
4310
+ },
4311
+ "verbose": {
4312
+ "char": "v",
4313
+ "description": "Show verbose output",
4314
+ "name": "verbose",
4315
+ "allowNo": false,
4316
+ "type": "boolean"
4317
+ },
4318
+ "local": {
4319
+ "description": "Write per-project config (default)",
4320
+ "exclusive": [
4321
+ "global"
4322
+ ],
4323
+ "name": "local",
4324
+ "allowNo": false,
4325
+ "type": "boolean"
4326
+ },
4327
+ "global": {
4328
+ "description": "Write user-level global config",
4329
+ "exclusive": [
4330
+ "local"
4331
+ ],
4332
+ "name": "global",
4333
+ "allowNo": false,
4334
+ "type": "boolean"
4335
+ },
4336
+ "enable": {
4337
+ "description": "Enable tracing (default)",
4338
+ "exclusive": [
4339
+ "disable"
4340
+ ],
4341
+ "name": "enable",
4342
+ "allowNo": false,
4343
+ "type": "boolean"
4344
+ },
4345
+ "disable": {
4346
+ "description": "Disable tracing",
4347
+ "exclusive": [
4348
+ "enable"
4349
+ ],
4350
+ "name": "disable",
4351
+ "allowNo": false,
4352
+ "type": "boolean"
4353
+ },
4354
+ "project-id": {
4355
+ "description": "Respan project ID (added to metadata / resource attributes)",
4356
+ "env": "RESPAN_PROJECT_ID",
4357
+ "name": "project-id",
4358
+ "hasDynamicHelp": false,
4359
+ "multiple": false,
4360
+ "type": "option"
4361
+ },
4362
+ "attrs": {
4363
+ "description": "Custom attributes JSON (e.g. '{\"env\":\"prod\"}')",
4364
+ "name": "attrs",
4365
+ "default": "{}",
4366
+ "hasDynamicHelp": false,
4367
+ "multiple": false,
4368
+ "type": "option"
4369
+ },
4370
+ "customer-id": {
4371
+ "description": "Customer/user identifier for traces (e.g. your name or email)",
4372
+ "env": "RESPAN_CUSTOMER_ID",
4373
+ "name": "customer-id",
4374
+ "hasDynamicHelp": false,
4375
+ "multiple": false,
4376
+ "type": "option"
4377
+ },
4378
+ "span-name": {
4379
+ "description": "Root span name for traces (default: claude-code)",
4380
+ "name": "span-name",
4381
+ "hasDynamicHelp": false,
4382
+ "multiple": false,
4383
+ "type": "option"
4384
+ },
4385
+ "workflow-name": {
4386
+ "description": "Workflow name for traces (default: claude-code)",
4387
+ "name": "workflow-name",
4388
+ "hasDynamicHelp": false,
4389
+ "multiple": false,
4390
+ "type": "option"
4391
+ },
4392
+ "dry-run": {
4393
+ "description": "Preview changes without writing files",
4394
+ "name": "dry-run",
4395
+ "allowNo": false,
4396
+ "type": "boolean"
4397
+ }
4398
+ },
4399
+ "hasDynamicHelp": false,
4400
+ "hiddenAliases": [],
4401
+ "id": "integrate:codex-cli",
4402
+ "pluginAlias": "@respan/cli",
4403
+ "pluginName": "@respan/cli",
4404
+ "pluginType": "core",
4405
+ "strict": true,
4406
+ "enableJsonFlag": false,
4407
+ "isESM": true,
4408
+ "relativePath": [
4409
+ "dist",
4410
+ "commands",
4411
+ "integrate",
4412
+ "codex-cli.js"
4413
+ ]
4414
+ },
4415
+ "integrate:gemini-cli": {
4416
+ "aliases": [],
4417
+ "args": {},
4418
+ "description": "Integrate Respan with Gemini CLI.\n\nInstalls an AfterModel hook that captures LLM request/response data\nand sends it to Respan as structured spans with model, token counts,\nand input/output.\n\nScope:\n --global Write to ~/.gemini/settings.json (default)\n --local Write to .gemini/settings.json in project root\n\nGemini CLI ignores workspace-level telemetry settings, so --global is the default.",
4419
+ "examples": [
4420
+ "respan integrate gemini-cli",
4421
+ "respan integrate gemini-cli --disable",
4422
+ "respan integrate gemini-cli --local",
4423
+ "respan integrate gemini-cli --project-id my-project --attrs '{\"env\":\"prod\"}'",
4424
+ "respan integrate gemini-cli --dry-run"
4425
+ ],
4426
+ "flags": {
4427
+ "api-key": {
4428
+ "description": "API key (env: RESPAN_API_KEY)",
4429
+ "env": "RESPAN_API_KEY",
4430
+ "name": "api-key",
4431
+ "hasDynamicHelp": false,
4432
+ "multiple": false,
4433
+ "type": "option"
4434
+ },
4435
+ "base-url": {
4436
+ "description": "Respan API base URL (for enterprise deployments)",
4437
+ "name": "base-url",
4438
+ "default": "https://api.respan.ai/api",
4439
+ "hasDynamicHelp": false,
4440
+ "multiple": false,
4441
+ "type": "option"
4442
+ },
4443
+ "profile": {
4444
+ "description": "Named profile to use",
4445
+ "name": "profile",
4446
+ "hasDynamicHelp": false,
4447
+ "multiple": false,
4448
+ "type": "option"
4449
+ },
4450
+ "json": {
4451
+ "description": "Output as JSON",
4452
+ "name": "json",
4453
+ "allowNo": false,
4454
+ "type": "boolean"
4455
+ },
4456
+ "csv": {
4457
+ "description": "Output as CSV",
4458
+ "name": "csv",
4459
+ "allowNo": false,
4460
+ "type": "boolean"
4461
+ },
4462
+ "verbose": {
4463
+ "char": "v",
4464
+ "description": "Show verbose output",
4465
+ "name": "verbose",
4466
+ "allowNo": false,
4467
+ "type": "boolean"
4468
+ },
4469
+ "local": {
4470
+ "description": "Write per-project config (default)",
4471
+ "exclusive": [
4472
+ "global"
4473
+ ],
4474
+ "name": "local",
4475
+ "allowNo": false,
4476
+ "type": "boolean"
4477
+ },
4478
+ "global": {
4479
+ "description": "Write user-level global config",
4480
+ "exclusive": [
4481
+ "local"
4482
+ ],
4483
+ "name": "global",
4484
+ "allowNo": false,
4485
+ "type": "boolean"
4486
+ },
4487
+ "enable": {
4488
+ "description": "Enable tracing (default)",
4489
+ "exclusive": [
4490
+ "disable"
4491
+ ],
4492
+ "name": "enable",
4493
+ "allowNo": false,
4494
+ "type": "boolean"
4495
+ },
4496
+ "disable": {
4497
+ "description": "Disable tracing",
4498
+ "exclusive": [
4499
+ "enable"
4500
+ ],
4501
+ "name": "disable",
4502
+ "allowNo": false,
4503
+ "type": "boolean"
4504
+ },
4505
+ "project-id": {
4506
+ "description": "Respan project ID (added to metadata / resource attributes)",
4507
+ "env": "RESPAN_PROJECT_ID",
4508
+ "name": "project-id",
4509
+ "hasDynamicHelp": false,
4510
+ "multiple": false,
4511
+ "type": "option"
4512
+ },
4513
+ "attrs": {
4514
+ "description": "Custom attributes JSON (e.g. '{\"env\":\"prod\"}')",
4515
+ "name": "attrs",
4516
+ "default": "{}",
4517
+ "hasDynamicHelp": false,
4518
+ "multiple": false,
4519
+ "type": "option"
4520
+ },
4521
+ "customer-id": {
4522
+ "description": "Customer/user identifier for traces (e.g. your name or email)",
4523
+ "env": "RESPAN_CUSTOMER_ID",
4524
+ "name": "customer-id",
4525
+ "hasDynamicHelp": false,
4526
+ "multiple": false,
4527
+ "type": "option"
4528
+ },
4529
+ "span-name": {
4530
+ "description": "Root span name for traces (default: claude-code)",
4531
+ "name": "span-name",
4532
+ "hasDynamicHelp": false,
4533
+ "multiple": false,
4534
+ "type": "option"
4535
+ },
4536
+ "workflow-name": {
4537
+ "description": "Workflow name for traces (default: claude-code)",
4538
+ "name": "workflow-name",
4539
+ "hasDynamicHelp": false,
4540
+ "multiple": false,
4541
+ "type": "option"
4542
+ },
4543
+ "dry-run": {
4544
+ "description": "Preview changes without writing files",
4545
+ "name": "dry-run",
4546
+ "allowNo": false,
4547
+ "type": "boolean"
4548
+ }
4549
+ },
4550
+ "hasDynamicHelp": false,
4551
+ "hiddenAliases": [],
4552
+ "id": "integrate:gemini-cli",
4553
+ "pluginAlias": "@respan/cli",
4554
+ "pluginName": "@respan/cli",
4555
+ "pluginType": "core",
4556
+ "strict": true,
4557
+ "enableJsonFlag": false,
4558
+ "isESM": true,
4559
+ "relativePath": [
4560
+ "dist",
4561
+ "commands",
4562
+ "integrate",
4563
+ "gemini-cli.js"
4564
+ ]
4565
+ },
4566
+ "integrate:opencode": {
4567
+ "aliases": [],
4568
+ "args": {},
4569
+ "description": "Integrate Respan with OpenCode.\n\nOpenCode's built-in OTel does not work reliably, so this uses the\ncommunity opencode-otel plugin instead.\n\nScope:\n --local Write plugin config to project root (default)\n --global Write to ~/.config/opencode/plugins/otel.json\n The opencode-otel package is always installed globally.",
4570
+ "examples": [
4571
+ "respan integrate opencode",
4572
+ "respan integrate opencode --disable",
4573
+ "respan integrate opencode --global",
4574
+ "respan integrate opencode --project-id my-project --attrs '{\"env\":\"prod\"}'",
4575
+ "respan integrate opencode --dry-run"
4576
+ ],
4577
+ "flags": {
4578
+ "api-key": {
4579
+ "description": "API key (env: RESPAN_API_KEY)",
4580
+ "env": "RESPAN_API_KEY",
4581
+ "name": "api-key",
4582
+ "hasDynamicHelp": false,
4583
+ "multiple": false,
4584
+ "type": "option"
4585
+ },
4586
+ "base-url": {
4587
+ "description": "Respan API base URL (for enterprise deployments)",
4588
+ "name": "base-url",
4589
+ "default": "https://api.respan.ai/api",
4590
+ "hasDynamicHelp": false,
4591
+ "multiple": false,
4592
+ "type": "option"
4593
+ },
4594
+ "profile": {
4595
+ "description": "Named profile to use",
4596
+ "name": "profile",
4597
+ "hasDynamicHelp": false,
4598
+ "multiple": false,
4599
+ "type": "option"
4600
+ },
4601
+ "json": {
4602
+ "description": "Output as JSON",
4603
+ "name": "json",
4604
+ "allowNo": false,
4605
+ "type": "boolean"
4606
+ },
4607
+ "csv": {
4608
+ "description": "Output as CSV",
4609
+ "name": "csv",
4610
+ "allowNo": false,
4611
+ "type": "boolean"
4612
+ },
4613
+ "verbose": {
4614
+ "char": "v",
4615
+ "description": "Show verbose output",
4616
+ "name": "verbose",
4617
+ "allowNo": false,
4618
+ "type": "boolean"
4619
+ },
4620
+ "local": {
4621
+ "description": "Write per-project config (default)",
4622
+ "exclusive": [
4623
+ "global"
4624
+ ],
4625
+ "name": "local",
4626
+ "allowNo": false,
4627
+ "type": "boolean"
4628
+ },
4629
+ "global": {
4630
+ "description": "Write user-level global config",
4631
+ "exclusive": [
4632
+ "local"
4633
+ ],
4634
+ "name": "global",
4635
+ "allowNo": false,
4636
+ "type": "boolean"
4637
+ },
4638
+ "enable": {
4639
+ "description": "Enable tracing (default)",
4640
+ "exclusive": [
4641
+ "disable"
4642
+ ],
4643
+ "name": "enable",
4644
+ "allowNo": false,
4645
+ "type": "boolean"
4646
+ },
4647
+ "disable": {
4648
+ "description": "Disable tracing",
4649
+ "exclusive": [
4650
+ "enable"
4651
+ ],
4652
+ "name": "disable",
4653
+ "allowNo": false,
4654
+ "type": "boolean"
4655
+ },
4656
+ "project-id": {
4657
+ "description": "Respan project ID (added to metadata / resource attributes)",
4658
+ "env": "RESPAN_PROJECT_ID",
4659
+ "name": "project-id",
4660
+ "hasDynamicHelp": false,
4661
+ "multiple": false,
4662
+ "type": "option"
4663
+ },
4664
+ "attrs": {
4665
+ "description": "Custom attributes JSON (e.g. '{\"env\":\"prod\"}')",
4666
+ "name": "attrs",
4667
+ "default": "{}",
4668
+ "hasDynamicHelp": false,
4669
+ "multiple": false,
4670
+ "type": "option"
4671
+ },
4672
+ "customer-id": {
4673
+ "description": "Customer/user identifier for traces (e.g. your name or email)",
4674
+ "env": "RESPAN_CUSTOMER_ID",
4675
+ "name": "customer-id",
4676
+ "hasDynamicHelp": false,
4677
+ "multiple": false,
4678
+ "type": "option"
4679
+ },
4680
+ "span-name": {
4681
+ "description": "Root span name for traces (default: claude-code)",
4682
+ "name": "span-name",
4683
+ "hasDynamicHelp": false,
4684
+ "multiple": false,
4685
+ "type": "option"
4686
+ },
4687
+ "workflow-name": {
4688
+ "description": "Workflow name for traces (default: claude-code)",
4689
+ "name": "workflow-name",
4690
+ "hasDynamicHelp": false,
4691
+ "multiple": false,
4692
+ "type": "option"
4693
+ },
4694
+ "dry-run": {
4695
+ "description": "Preview changes without writing files",
4696
+ "name": "dry-run",
4697
+ "allowNo": false,
4698
+ "type": "boolean"
4699
+ }
4700
+ },
4701
+ "hasDynamicHelp": false,
4702
+ "hiddenAliases": [],
4703
+ "id": "integrate:opencode",
4704
+ "pluginAlias": "@respan/cli",
4705
+ "pluginName": "@respan/cli",
4706
+ "pluginType": "core",
4707
+ "strict": true,
4708
+ "enableJsonFlag": false,
4709
+ "isESM": true,
4710
+ "relativePath": [
4711
+ "dist",
4712
+ "commands",
4713
+ "integrate",
4714
+ "opencode.js"
4715
+ ]
4716
+ },
4717
+ "integrate:pi": {
4718
+ "aliases": [],
4719
+ "args": {},
4720
+ "description": "Integrate Respan with the pi coding agent (https://pi.dev).\n\nInstalls the @respan/instrumentation-pi pi package — a pi extension that\ntraces every agent run as one turn span per prompt with chat and tool spans underneath,\ncorrelating all runs of a pi session by its session id — and writes a\nnon-secret respan.json config for it.\n\nScope:\n --global pi install npm:@respan/instrumentation-pi + ~/.pi/agent/respan.json (default)\n --local pi install -l npm:@respan/instrumentation-pi + .pi/respan.json in the project root\n\nTrace scope (--trace-scope, \"trace_scope\" in respan.json):\n run one trace per agent run; runs of a session share a thread id (default)\n session one multi-root trace per pi session (long-lived, resumed sessions)\n\nDurable delivery (--with-collector):\n Sets base_url to a local Respan collector (http://127.0.0.1:4318) so traces\n go through its persistent queue and survive Respan outages. Run\n \"respan collector start\" once per machine.\n\nCredentials are never written to these files: the extension reads\nRESPAN_API_KEY or ~/.respan/credentials.json (from \"respan auth login\").",
4721
+ "examples": [
4722
+ "respan integrate pi",
4723
+ "respan integrate pi --disable",
4724
+ "respan integrate pi --local",
4725
+ "respan integrate pi --customer-id frank --workflow-name email-agent",
4726
+ "respan integrate pi --trace-scope session",
4727
+ "respan integrate pi --with-collector",
4728
+ "respan integrate pi --project-id my-project --attrs '{\"env\":\"prod\"}'",
4729
+ "respan integrate pi --dry-run"
4730
+ ],
4731
+ "flags": {
4732
+ "api-key": {
4733
+ "description": "API key (env: RESPAN_API_KEY)",
4734
+ "env": "RESPAN_API_KEY",
4735
+ "name": "api-key",
4736
+ "hasDynamicHelp": false,
4737
+ "multiple": false,
4738
+ "type": "option"
4739
+ },
4740
+ "base-url": {
4741
+ "description": "Respan API base URL (for enterprise deployments)",
4742
+ "name": "base-url",
4743
+ "default": "https://api.respan.ai/api",
4744
+ "hasDynamicHelp": false,
4745
+ "multiple": false,
4746
+ "type": "option"
4747
+ },
4748
+ "profile": {
4749
+ "description": "Named profile to use",
4750
+ "name": "profile",
4751
+ "hasDynamicHelp": false,
4752
+ "multiple": false,
4753
+ "type": "option"
4754
+ },
4755
+ "json": {
4756
+ "description": "Output as JSON",
4757
+ "name": "json",
4758
+ "allowNo": false,
4759
+ "type": "boolean"
4760
+ },
4761
+ "csv": {
4762
+ "description": "Output as CSV",
4763
+ "name": "csv",
4764
+ "allowNo": false,
4765
+ "type": "boolean"
4766
+ },
4767
+ "verbose": {
4768
+ "char": "v",
4769
+ "description": "Show verbose output",
4770
+ "name": "verbose",
4771
+ "allowNo": false,
4772
+ "type": "boolean"
4773
+ },
4774
+ "local": {
4775
+ "description": "Write per-project config (default)",
4776
+ "exclusive": [
4777
+ "global"
4778
+ ],
4779
+ "name": "local",
4780
+ "allowNo": false,
4781
+ "type": "boolean"
4782
+ },
4783
+ "global": {
4784
+ "description": "Write user-level global config",
4785
+ "exclusive": [
4786
+ "local"
4787
+ ],
4788
+ "name": "global",
4789
+ "allowNo": false,
4790
+ "type": "boolean"
4791
+ },
4792
+ "enable": {
4793
+ "description": "Enable tracing (default)",
4794
+ "exclusive": [
4795
+ "disable"
4796
+ ],
4797
+ "name": "enable",
4798
+ "allowNo": false,
4799
+ "type": "boolean"
4800
+ },
4801
+ "disable": {
4802
+ "description": "Disable tracing",
4803
+ "exclusive": [
4804
+ "enable"
4805
+ ],
4806
+ "name": "disable",
4807
+ "allowNo": false,
4808
+ "type": "boolean"
4809
+ },
4810
+ "project-id": {
4811
+ "description": "Respan project ID (added to metadata / resource attributes)",
4812
+ "env": "RESPAN_PROJECT_ID",
4813
+ "name": "project-id",
4814
+ "hasDynamicHelp": false,
4815
+ "multiple": false,
4816
+ "type": "option"
4817
+ },
4818
+ "attrs": {
4819
+ "description": "Custom attributes JSON (e.g. '{\"env\":\"prod\"}')",
4820
+ "name": "attrs",
4821
+ "default": "{}",
4822
+ "hasDynamicHelp": false,
4823
+ "multiple": false,
4824
+ "type": "option"
4825
+ },
4826
+ "customer-id": {
4827
+ "description": "Customer/user identifier for traces (e.g. your name or email)",
4828
+ "env": "RESPAN_CUSTOMER_ID",
4829
+ "name": "customer-id",
4830
+ "hasDynamicHelp": false,
4831
+ "multiple": false,
4832
+ "type": "option"
4833
+ },
4834
+ "span-name": {
4835
+ "description": "Alias of --workflow-name (default: pi)",
4836
+ "name": "span-name",
4837
+ "hasDynamicHelp": false,
4838
+ "multiple": false,
4839
+ "type": "option"
4840
+ },
4841
+ "workflow-name": {
4842
+ "description": "traceloop.workflow.name on pi turn spans (default: pi)",
4843
+ "name": "workflow-name",
4844
+ "hasDynamicHelp": false,
4845
+ "multiple": false,
4846
+ "type": "option"
4847
+ },
4848
+ "dry-run": {
4849
+ "description": "Preview changes without writing files",
4850
+ "name": "dry-run",
4851
+ "allowNo": false,
4852
+ "type": "boolean"
4853
+ },
4854
+ "trace-scope": {
4855
+ "description": "Trace scope: \"run\" = one trace per agent run (default), \"session\" = one multi-root trace per pi session",
4856
+ "name": "trace-scope",
4857
+ "hasDynamicHelp": false,
4858
+ "multiple": false,
4859
+ "options": [
4860
+ "run",
4861
+ "session"
4862
+ ],
4863
+ "type": "option"
4864
+ },
4865
+ "with-collector": {
4866
+ "description": "Send traces through a local Respan collector (respan collector start) for durable delivery",
4867
+ "name": "with-collector",
4868
+ "allowNo": false,
4869
+ "type": "boolean"
4870
+ },
4871
+ "collector-port": {
4872
+ "description": "Port of the local collector, with --with-collector (default: 4318)",
4873
+ "name": "collector-port",
4874
+ "hasDynamicHelp": false,
4875
+ "multiple": false,
4876
+ "type": "option"
4877
+ }
4878
+ },
4879
+ "hasDynamicHelp": false,
4880
+ "hiddenAliases": [],
4881
+ "id": "integrate:pi",
4882
+ "pluginAlias": "@respan/cli",
4883
+ "pluginName": "@respan/cli",
4884
+ "pluginType": "core",
4885
+ "strict": true,
4886
+ "enableJsonFlag": false,
4887
+ "isESM": true,
4888
+ "relativePath": [
4889
+ "dist",
4890
+ "commands",
4891
+ "integrate",
4892
+ "pi.js"
4893
+ ]
4272
4894
  }
4273
4895
  },
4274
- "version": "0.13.2"
4896
+ "version": "0.14.0"
4275
4897
  }