@respan/cli 0.6.3 → 0.6.5

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.
@@ -428,16 +428,10 @@
428
428
  "set.js"
429
429
  ]
430
430
  },
431
- "datasets:add-spans": {
431
+ "evaluators:create": {
432
432
  "aliases": [],
433
- "args": {
434
- "dataset-id": {
435
- "description": "Dataset ID",
436
- "name": "dataset-id",
437
- "required": true
438
- }
439
- },
440
- "description": "Add existing spans to a dataset",
433
+ "args": {},
434
+ "description": "Create a new evaluator",
441
435
  "flags": {
442
436
  "api-key": {
443
437
  "description": "API key (env: RESPAN_API_KEY)",
@@ -473,18 +467,39 @@
473
467
  "allowNo": false,
474
468
  "type": "boolean"
475
469
  },
476
- "span-ids": {
477
- "description": "Comma-separated span IDs",
478
- "name": "span-ids",
470
+ "name": {
471
+ "description": "Evaluator name",
472
+ "name": "name",
479
473
  "required": true,
480
474
  "hasDynamicHelp": false,
481
475
  "multiple": false,
482
476
  "type": "option"
477
+ },
478
+ "type": {
479
+ "description": "Evaluator type",
480
+ "name": "type",
481
+ "hasDynamicHelp": false,
482
+ "multiple": false,
483
+ "type": "option"
484
+ },
485
+ "description": {
486
+ "description": "Evaluator description",
487
+ "name": "description",
488
+ "hasDynamicHelp": false,
489
+ "multiple": false,
490
+ "type": "option"
491
+ },
492
+ "config": {
493
+ "description": "Evaluator config as JSON string",
494
+ "name": "config",
495
+ "hasDynamicHelp": false,
496
+ "multiple": false,
497
+ "type": "option"
483
498
  }
484
499
  },
485
500
  "hasDynamicHelp": false,
486
501
  "hiddenAliases": [],
487
- "id": "datasets:add-spans",
502
+ "id": "evaluators:create",
488
503
  "pluginAlias": "@respan/cli",
489
504
  "pluginName": "@respan/cli",
490
505
  "pluginType": "core",
@@ -494,20 +509,20 @@
494
509
  "relativePath": [
495
510
  "dist",
496
511
  "commands",
497
- "datasets",
498
- "add-spans.js"
512
+ "evaluators",
513
+ "create.js"
499
514
  ]
500
515
  },
501
- "datasets:create-span": {
516
+ "evaluators:get": {
502
517
  "aliases": [],
503
518
  "args": {
504
- "dataset-id": {
505
- "description": "Dataset ID",
506
- "name": "dataset-id",
519
+ "id": {
520
+ "description": "Evaluator ID",
521
+ "name": "id",
507
522
  "required": true
508
523
  }
509
524
  },
510
- "description": "Create a span in a dataset",
525
+ "description": "Get a specific evaluator",
511
526
  "flags": {
512
527
  "api-key": {
513
528
  "description": "API key (env: RESPAN_API_KEY)",
@@ -542,19 +557,11 @@
542
557
  "name": "verbose",
543
558
  "allowNo": false,
544
559
  "type": "boolean"
545
- },
546
- "body": {
547
- "description": "Span body as JSON string",
548
- "name": "body",
549
- "required": true,
550
- "hasDynamicHelp": false,
551
- "multiple": false,
552
- "type": "option"
553
560
  }
554
561
  },
555
562
  "hasDynamicHelp": false,
556
563
  "hiddenAliases": [],
557
- "id": "datasets:create-span",
564
+ "id": "evaluators:get",
558
565
  "pluginAlias": "@respan/cli",
559
566
  "pluginName": "@respan/cli",
560
567
  "pluginType": "core",
@@ -564,14 +571,14 @@
564
571
  "relativePath": [
565
572
  "dist",
566
573
  "commands",
567
- "datasets",
568
- "create-span.js"
574
+ "evaluators",
575
+ "get.js"
569
576
  ]
570
577
  },
571
- "datasets:create": {
578
+ "evaluators:list": {
572
579
  "aliases": [],
573
580
  "args": {},
574
- "description": "Create a new dataset",
581
+ "description": "List evaluators",
575
582
  "flags": {
576
583
  "api-key": {
577
584
  "description": "API key (env: RESPAN_API_KEY)",
@@ -607,17 +614,18 @@
607
614
  "allowNo": false,
608
615
  "type": "boolean"
609
616
  },
610
- "name": {
611
- "description": "Dataset name",
612
- "name": "name",
613
- "required": true,
617
+ "limit": {
618
+ "description": "Number of results per page",
619
+ "name": "limit",
620
+ "default": 20,
614
621
  "hasDynamicHelp": false,
615
622
  "multiple": false,
616
623
  "type": "option"
617
624
  },
618
- "description": {
619
- "description": "Dataset description",
620
- "name": "description",
625
+ "page": {
626
+ "description": "Page number",
627
+ "name": "page",
628
+ "default": 1,
621
629
  "hasDynamicHelp": false,
622
630
  "multiple": false,
623
631
  "type": "option"
@@ -625,7 +633,7 @@
625
633
  },
626
634
  "hasDynamicHelp": false,
627
635
  "hiddenAliases": [],
628
- "id": "datasets:create",
636
+ "id": "evaluators:list",
629
637
  "pluginAlias": "@respan/cli",
630
638
  "pluginName": "@respan/cli",
631
639
  "pluginType": "core",
@@ -635,25 +643,20 @@
635
643
  "relativePath": [
636
644
  "dist",
637
645
  "commands",
638
- "datasets",
639
- "create.js"
646
+ "evaluators",
647
+ "list.js"
640
648
  ]
641
649
  },
642
- "datasets:get-span": {
650
+ "evaluators:run": {
643
651
  "aliases": [],
644
652
  "args": {
645
- "dataset-id": {
646
- "description": "Dataset ID",
647
- "name": "dataset-id",
648
- "required": true
649
- },
650
- "span-id": {
651
- "description": "Span ID",
652
- "name": "span-id",
653
+ "id": {
654
+ "description": "Evaluator ID",
655
+ "name": "id",
653
656
  "required": true
654
657
  }
655
658
  },
656
- "description": "Get a specific span from a dataset",
659
+ "description": "Run an evaluator",
657
660
  "flags": {
658
661
  "api-key": {
659
662
  "description": "API key (env: RESPAN_API_KEY)",
@@ -688,11 +691,32 @@
688
691
  "name": "verbose",
689
692
  "allowNo": false,
690
693
  "type": "boolean"
694
+ },
695
+ "dataset-id": {
696
+ "description": "Dataset ID to evaluate against",
697
+ "name": "dataset-id",
698
+ "hasDynamicHelp": false,
699
+ "multiple": false,
700
+ "type": "option"
701
+ },
702
+ "log-ids": {
703
+ "description": "Comma-separated log/span IDs to evaluate",
704
+ "name": "log-ids",
705
+ "hasDynamicHelp": false,
706
+ "multiple": false,
707
+ "type": "option"
708
+ },
709
+ "params": {
710
+ "description": "Additional parameters as JSON string",
711
+ "name": "params",
712
+ "hasDynamicHelp": false,
713
+ "multiple": false,
714
+ "type": "option"
691
715
  }
692
716
  },
693
717
  "hasDynamicHelp": false,
694
718
  "hiddenAliases": [],
695
- "id": "datasets:get-span",
719
+ "id": "evaluators:run",
696
720
  "pluginAlias": "@respan/cli",
697
721
  "pluginName": "@respan/cli",
698
722
  "pluginType": "core",
@@ -702,20 +726,20 @@
702
726
  "relativePath": [
703
727
  "dist",
704
728
  "commands",
705
- "datasets",
706
- "get-span.js"
729
+ "evaluators",
730
+ "run.js"
707
731
  ]
708
732
  },
709
- "datasets:get": {
733
+ "evaluators:update": {
710
734
  "aliases": [],
711
735
  "args": {
712
736
  "id": {
713
- "description": "Dataset ID",
737
+ "description": "Evaluator ID",
714
738
  "name": "id",
715
739
  "required": true
716
740
  }
717
741
  },
718
- "description": "Get a specific dataset",
742
+ "description": "Update an evaluator",
719
743
  "flags": {
720
744
  "api-key": {
721
745
  "description": "API key (env: RESPAN_API_KEY)",
@@ -750,11 +774,32 @@
750
774
  "name": "verbose",
751
775
  "allowNo": false,
752
776
  "type": "boolean"
777
+ },
778
+ "name": {
779
+ "description": "Evaluator name",
780
+ "name": "name",
781
+ "hasDynamicHelp": false,
782
+ "multiple": false,
783
+ "type": "option"
784
+ },
785
+ "description": {
786
+ "description": "Evaluator description",
787
+ "name": "description",
788
+ "hasDynamicHelp": false,
789
+ "multiple": false,
790
+ "type": "option"
791
+ },
792
+ "config": {
793
+ "description": "Evaluator config as JSON string",
794
+ "name": "config",
795
+ "hasDynamicHelp": false,
796
+ "multiple": false,
797
+ "type": "option"
753
798
  }
754
799
  },
755
800
  "hasDynamicHelp": false,
756
801
  "hiddenAliases": [],
757
- "id": "datasets:get",
802
+ "id": "evaluators:update",
758
803
  "pluginAlias": "@respan/cli",
759
804
  "pluginName": "@respan/cli",
760
805
  "pluginType": "core",
@@ -764,14 +809,14 @@
764
809
  "relativePath": [
765
810
  "dist",
766
811
  "commands",
767
- "datasets",
768
- "get.js"
812
+ "evaluators",
813
+ "update.js"
769
814
  ]
770
815
  },
771
- "datasets:list": {
816
+ "experiments:create": {
772
817
  "aliases": [],
773
818
  "args": {},
774
- "description": "List datasets",
819
+ "description": "Create a new experiment",
775
820
  "flags": {
776
821
  "api-key": {
777
822
  "description": "API key (env: RESPAN_API_KEY)",
@@ -807,18 +852,32 @@
807
852
  "allowNo": false,
808
853
  "type": "boolean"
809
854
  },
810
- "limit": {
811
- "description": "Number of results per page",
812
- "name": "limit",
813
- "default": 50,
855
+ "name": {
856
+ "description": "Experiment name",
857
+ "name": "name",
858
+ "required": true,
814
859
  "hasDynamicHelp": false,
815
860
  "multiple": false,
816
861
  "type": "option"
817
862
  },
818
- "page": {
819
- "description": "Page number",
820
- "name": "page",
821
- "default": 1,
863
+ "dataset-id": {
864
+ "description": "Dataset ID",
865
+ "name": "dataset-id",
866
+ "required": true,
867
+ "hasDynamicHelp": false,
868
+ "multiple": false,
869
+ "type": "option"
870
+ },
871
+ "description": {
872
+ "description": "Experiment description",
873
+ "name": "description",
874
+ "hasDynamicHelp": false,
875
+ "multiple": false,
876
+ "type": "option"
877
+ },
878
+ "workflows": {
879
+ "description": "Workflows configuration as JSON string",
880
+ "name": "workflows",
822
881
  "hasDynamicHelp": false,
823
882
  "multiple": false,
824
883
  "type": "option"
@@ -826,7 +885,7 @@
826
885
  },
827
886
  "hasDynamicHelp": false,
828
887
  "hiddenAliases": [],
829
- "id": "datasets:list",
888
+ "id": "experiments:create",
830
889
  "pluginAlias": "@respan/cli",
831
890
  "pluginName": "@respan/cli",
832
891
  "pluginType": "core",
@@ -836,20 +895,20 @@
836
895
  "relativePath": [
837
896
  "dist",
838
897
  "commands",
839
- "datasets",
840
- "list.js"
898
+ "experiments",
899
+ "create.js"
841
900
  ]
842
901
  },
843
- "datasets:spans": {
902
+ "experiments:get": {
844
903
  "aliases": [],
845
904
  "args": {
846
- "dataset-id": {
847
- "description": "Dataset ID",
848
- "name": "dataset-id",
905
+ "id": {
906
+ "description": "Experiment ID",
907
+ "name": "id",
849
908
  "required": true
850
909
  }
851
910
  },
852
- "description": "List spans in a dataset",
911
+ "description": "Get a specific experiment",
853
912
  "flags": {
854
913
  "api-key": {
855
914
  "description": "API key (env: RESPAN_API_KEY)",
@@ -888,7 +947,7 @@
888
947
  },
889
948
  "hasDynamicHelp": false,
890
949
  "hiddenAliases": [],
891
- "id": "datasets:spans",
950
+ "id": "experiments:get",
892
951
  "pluginAlias": "@respan/cli",
893
952
  "pluginName": "@respan/cli",
894
953
  "pluginType": "core",
@@ -898,20 +957,14 @@
898
957
  "relativePath": [
899
958
  "dist",
900
959
  "commands",
901
- "datasets",
902
- "spans.js"
960
+ "experiments",
961
+ "get.js"
903
962
  ]
904
963
  },
905
- "datasets:update": {
964
+ "experiments:list": {
906
965
  "aliases": [],
907
- "args": {
908
- "id": {
909
- "description": "Dataset ID",
910
- "name": "id",
911
- "required": true
912
- }
913
- },
914
- "description": "Update a dataset",
966
+ "args": {},
967
+ "description": "List experiments",
915
968
  "flags": {
916
969
  "api-key": {
917
970
  "description": "API key (env: RESPAN_API_KEY)",
@@ -947,16 +1000,18 @@
947
1000
  "allowNo": false,
948
1001
  "type": "boolean"
949
1002
  },
950
- "name": {
951
- "description": "Dataset name",
952
- "name": "name",
1003
+ "limit": {
1004
+ "description": "Number of results per page",
1005
+ "name": "limit",
1006
+ "default": 20,
953
1007
  "hasDynamicHelp": false,
954
1008
  "multiple": false,
955
1009
  "type": "option"
956
1010
  },
957
- "description": {
958
- "description": "Dataset description",
959
- "name": "description",
1011
+ "page": {
1012
+ "description": "Page number",
1013
+ "name": "page",
1014
+ "default": 1,
960
1015
  "hasDynamicHelp": false,
961
1016
  "multiple": false,
962
1017
  "type": "option"
@@ -964,7 +1019,7 @@
964
1019
  },
965
1020
  "hasDynamicHelp": false,
966
1021
  "hiddenAliases": [],
967
- "id": "datasets:update",
1022
+ "id": "experiments:list",
968
1023
  "pluginAlias": "@respan/cli",
969
1024
  "pluginName": "@respan/cli",
970
1025
  "pluginType": "core",
@@ -974,14 +1029,20 @@
974
1029
  "relativePath": [
975
1030
  "dist",
976
1031
  "commands",
977
- "datasets",
978
- "update.js"
979
- ]
1032
+ "experiments",
1033
+ "list.js"
1034
+ ]
980
1035
  },
981
- "evaluators:create": {
1036
+ "datasets:add-spans": {
982
1037
  "aliases": [],
983
- "args": {},
984
- "description": "Create a new evaluator",
1038
+ "args": {
1039
+ "dataset-id": {
1040
+ "description": "Dataset ID",
1041
+ "name": "dataset-id",
1042
+ "required": true
1043
+ }
1044
+ },
1045
+ "description": "Add existing spans to a dataset",
985
1046
  "flags": {
986
1047
  "api-key": {
987
1048
  "description": "API key (env: RESPAN_API_KEY)",
@@ -1017,39 +1078,18 @@
1017
1078
  "allowNo": false,
1018
1079
  "type": "boolean"
1019
1080
  },
1020
- "name": {
1021
- "description": "Evaluator name",
1022
- "name": "name",
1081
+ "span-ids": {
1082
+ "description": "Comma-separated span IDs",
1083
+ "name": "span-ids",
1023
1084
  "required": true,
1024
1085
  "hasDynamicHelp": false,
1025
1086
  "multiple": false,
1026
1087
  "type": "option"
1027
- },
1028
- "type": {
1029
- "description": "Evaluator type",
1030
- "name": "type",
1031
- "hasDynamicHelp": false,
1032
- "multiple": false,
1033
- "type": "option"
1034
- },
1035
- "description": {
1036
- "description": "Evaluator description",
1037
- "name": "description",
1038
- "hasDynamicHelp": false,
1039
- "multiple": false,
1040
- "type": "option"
1041
- },
1042
- "config": {
1043
- "description": "Evaluator config as JSON string",
1044
- "name": "config",
1045
- "hasDynamicHelp": false,
1046
- "multiple": false,
1047
- "type": "option"
1048
1088
  }
1049
1089
  },
1050
1090
  "hasDynamicHelp": false,
1051
1091
  "hiddenAliases": [],
1052
- "id": "evaluators:create",
1092
+ "id": "datasets:add-spans",
1053
1093
  "pluginAlias": "@respan/cli",
1054
1094
  "pluginName": "@respan/cli",
1055
1095
  "pluginType": "core",
@@ -1059,20 +1099,20 @@
1059
1099
  "relativePath": [
1060
1100
  "dist",
1061
1101
  "commands",
1062
- "evaluators",
1063
- "create.js"
1102
+ "datasets",
1103
+ "add-spans.js"
1064
1104
  ]
1065
1105
  },
1066
- "evaluators:get": {
1106
+ "datasets:create-span": {
1067
1107
  "aliases": [],
1068
1108
  "args": {
1069
- "id": {
1070
- "description": "Evaluator ID",
1071
- "name": "id",
1109
+ "dataset-id": {
1110
+ "description": "Dataset ID",
1111
+ "name": "dataset-id",
1072
1112
  "required": true
1073
1113
  }
1074
1114
  },
1075
- "description": "Get a specific evaluator",
1115
+ "description": "Create a span in a dataset",
1076
1116
  "flags": {
1077
1117
  "api-key": {
1078
1118
  "description": "API key (env: RESPAN_API_KEY)",
@@ -1107,11 +1147,19 @@
1107
1147
  "name": "verbose",
1108
1148
  "allowNo": false,
1109
1149
  "type": "boolean"
1150
+ },
1151
+ "body": {
1152
+ "description": "Span body as JSON string",
1153
+ "name": "body",
1154
+ "required": true,
1155
+ "hasDynamicHelp": false,
1156
+ "multiple": false,
1157
+ "type": "option"
1110
1158
  }
1111
1159
  },
1112
1160
  "hasDynamicHelp": false,
1113
1161
  "hiddenAliases": [],
1114
- "id": "evaluators:get",
1162
+ "id": "datasets:create-span",
1115
1163
  "pluginAlias": "@respan/cli",
1116
1164
  "pluginName": "@respan/cli",
1117
1165
  "pluginType": "core",
@@ -1121,14 +1169,14 @@
1121
1169
  "relativePath": [
1122
1170
  "dist",
1123
1171
  "commands",
1124
- "evaluators",
1125
- "get.js"
1172
+ "datasets",
1173
+ "create-span.js"
1126
1174
  ]
1127
1175
  },
1128
- "evaluators:list": {
1176
+ "datasets:create": {
1129
1177
  "aliases": [],
1130
1178
  "args": {},
1131
- "description": "List evaluators",
1179
+ "description": "Create a new dataset",
1132
1180
  "flags": {
1133
1181
  "api-key": {
1134
1182
  "description": "API key (env: RESPAN_API_KEY)",
@@ -1164,18 +1212,17 @@
1164
1212
  "allowNo": false,
1165
1213
  "type": "boolean"
1166
1214
  },
1167
- "limit": {
1168
- "description": "Number of results per page",
1169
- "name": "limit",
1170
- "default": 20,
1215
+ "name": {
1216
+ "description": "Dataset name",
1217
+ "name": "name",
1218
+ "required": true,
1171
1219
  "hasDynamicHelp": false,
1172
1220
  "multiple": false,
1173
1221
  "type": "option"
1174
1222
  },
1175
- "page": {
1176
- "description": "Page number",
1177
- "name": "page",
1178
- "default": 1,
1223
+ "description": {
1224
+ "description": "Dataset description",
1225
+ "name": "description",
1179
1226
  "hasDynamicHelp": false,
1180
1227
  "multiple": false,
1181
1228
  "type": "option"
@@ -1183,7 +1230,7 @@
1183
1230
  },
1184
1231
  "hasDynamicHelp": false,
1185
1232
  "hiddenAliases": [],
1186
- "id": "evaluators:list",
1233
+ "id": "datasets:create",
1187
1234
  "pluginAlias": "@respan/cli",
1188
1235
  "pluginName": "@respan/cli",
1189
1236
  "pluginType": "core",
@@ -1193,20 +1240,25 @@
1193
1240
  "relativePath": [
1194
1241
  "dist",
1195
1242
  "commands",
1196
- "evaluators",
1197
- "list.js"
1243
+ "datasets",
1244
+ "create.js"
1198
1245
  ]
1199
1246
  },
1200
- "evaluators:run": {
1247
+ "datasets:get-span": {
1201
1248
  "aliases": [],
1202
1249
  "args": {
1203
- "id": {
1204
- "description": "Evaluator ID",
1205
- "name": "id",
1250
+ "dataset-id": {
1251
+ "description": "Dataset ID",
1252
+ "name": "dataset-id",
1253
+ "required": true
1254
+ },
1255
+ "span-id": {
1256
+ "description": "Span ID",
1257
+ "name": "span-id",
1206
1258
  "required": true
1207
1259
  }
1208
1260
  },
1209
- "description": "Run an evaluator",
1261
+ "description": "Get a specific span from a dataset",
1210
1262
  "flags": {
1211
1263
  "api-key": {
1212
1264
  "description": "API key (env: RESPAN_API_KEY)",
@@ -1241,32 +1293,11 @@
1241
1293
  "name": "verbose",
1242
1294
  "allowNo": false,
1243
1295
  "type": "boolean"
1244
- },
1245
- "dataset-id": {
1246
- "description": "Dataset ID to evaluate against",
1247
- "name": "dataset-id",
1248
- "hasDynamicHelp": false,
1249
- "multiple": false,
1250
- "type": "option"
1251
- },
1252
- "log-ids": {
1253
- "description": "Comma-separated log/span IDs to evaluate",
1254
- "name": "log-ids",
1255
- "hasDynamicHelp": false,
1256
- "multiple": false,
1257
- "type": "option"
1258
- },
1259
- "params": {
1260
- "description": "Additional parameters as JSON string",
1261
- "name": "params",
1262
- "hasDynamicHelp": false,
1263
- "multiple": false,
1264
- "type": "option"
1265
1296
  }
1266
1297
  },
1267
1298
  "hasDynamicHelp": false,
1268
1299
  "hiddenAliases": [],
1269
- "id": "evaluators:run",
1300
+ "id": "datasets:get-span",
1270
1301
  "pluginAlias": "@respan/cli",
1271
1302
  "pluginName": "@respan/cli",
1272
1303
  "pluginType": "core",
@@ -1276,20 +1307,20 @@
1276
1307
  "relativePath": [
1277
1308
  "dist",
1278
1309
  "commands",
1279
- "evaluators",
1280
- "run.js"
1310
+ "datasets",
1311
+ "get-span.js"
1281
1312
  ]
1282
1313
  },
1283
- "evaluators:update": {
1314
+ "datasets:get": {
1284
1315
  "aliases": [],
1285
1316
  "args": {
1286
1317
  "id": {
1287
- "description": "Evaluator ID",
1318
+ "description": "Dataset ID",
1288
1319
  "name": "id",
1289
1320
  "required": true
1290
1321
  }
1291
1322
  },
1292
- "description": "Update an evaluator",
1323
+ "description": "Get a specific dataset",
1293
1324
  "flags": {
1294
1325
  "api-key": {
1295
1326
  "description": "API key (env: RESPAN_API_KEY)",
@@ -1324,32 +1355,11 @@
1324
1355
  "name": "verbose",
1325
1356
  "allowNo": false,
1326
1357
  "type": "boolean"
1327
- },
1328
- "name": {
1329
- "description": "Evaluator name",
1330
- "name": "name",
1331
- "hasDynamicHelp": false,
1332
- "multiple": false,
1333
- "type": "option"
1334
- },
1335
- "description": {
1336
- "description": "Evaluator description",
1337
- "name": "description",
1338
- "hasDynamicHelp": false,
1339
- "multiple": false,
1340
- "type": "option"
1341
- },
1342
- "config": {
1343
- "description": "Evaluator config as JSON string",
1344
- "name": "config",
1345
- "hasDynamicHelp": false,
1346
- "multiple": false,
1347
- "type": "option"
1348
1358
  }
1349
1359
  },
1350
1360
  "hasDynamicHelp": false,
1351
1361
  "hiddenAliases": [],
1352
- "id": "evaluators:update",
1362
+ "id": "datasets:get",
1353
1363
  "pluginAlias": "@respan/cli",
1354
1364
  "pluginName": "@respan/cli",
1355
1365
  "pluginType": "core",
@@ -1359,14 +1369,14 @@
1359
1369
  "relativePath": [
1360
1370
  "dist",
1361
1371
  "commands",
1362
- "evaluators",
1363
- "update.js"
1372
+ "datasets",
1373
+ "get.js"
1364
1374
  ]
1365
1375
  },
1366
- "experiments:create": {
1376
+ "datasets:list": {
1367
1377
  "aliases": [],
1368
1378
  "args": {},
1369
- "description": "Create a new experiment",
1379
+ "description": "List datasets",
1370
1380
  "flags": {
1371
1381
  "api-key": {
1372
1382
  "description": "API key (env: RESPAN_API_KEY)",
@@ -1402,32 +1412,18 @@
1402
1412
  "allowNo": false,
1403
1413
  "type": "boolean"
1404
1414
  },
1405
- "name": {
1406
- "description": "Experiment name",
1407
- "name": "name",
1408
- "required": true,
1409
- "hasDynamicHelp": false,
1410
- "multiple": false,
1411
- "type": "option"
1412
- },
1413
- "dataset-id": {
1414
- "description": "Dataset ID",
1415
- "name": "dataset-id",
1416
- "required": true,
1417
- "hasDynamicHelp": false,
1418
- "multiple": false,
1419
- "type": "option"
1420
- },
1421
- "description": {
1422
- "description": "Experiment description",
1423
- "name": "description",
1415
+ "limit": {
1416
+ "description": "Number of results per page",
1417
+ "name": "limit",
1418
+ "default": 50,
1424
1419
  "hasDynamicHelp": false,
1425
1420
  "multiple": false,
1426
1421
  "type": "option"
1427
1422
  },
1428
- "workflows": {
1429
- "description": "Workflows configuration as JSON string",
1430
- "name": "workflows",
1423
+ "page": {
1424
+ "description": "Page number",
1425
+ "name": "page",
1426
+ "default": 1,
1431
1427
  "hasDynamicHelp": false,
1432
1428
  "multiple": false,
1433
1429
  "type": "option"
@@ -1435,7 +1431,7 @@
1435
1431
  },
1436
1432
  "hasDynamicHelp": false,
1437
1433
  "hiddenAliases": [],
1438
- "id": "experiments:create",
1434
+ "id": "datasets:list",
1439
1435
  "pluginAlias": "@respan/cli",
1440
1436
  "pluginName": "@respan/cli",
1441
1437
  "pluginType": "core",
@@ -1445,20 +1441,20 @@
1445
1441
  "relativePath": [
1446
1442
  "dist",
1447
1443
  "commands",
1448
- "experiments",
1449
- "create.js"
1444
+ "datasets",
1445
+ "list.js"
1450
1446
  ]
1451
1447
  },
1452
- "experiments:get": {
1448
+ "datasets:spans": {
1453
1449
  "aliases": [],
1454
1450
  "args": {
1455
- "id": {
1456
- "description": "Experiment ID",
1457
- "name": "id",
1451
+ "dataset-id": {
1452
+ "description": "Dataset ID",
1453
+ "name": "dataset-id",
1458
1454
  "required": true
1459
1455
  }
1460
1456
  },
1461
- "description": "Get a specific experiment",
1457
+ "description": "List spans in a dataset",
1462
1458
  "flags": {
1463
1459
  "api-key": {
1464
1460
  "description": "API key (env: RESPAN_API_KEY)",
@@ -1497,7 +1493,7 @@
1497
1493
  },
1498
1494
  "hasDynamicHelp": false,
1499
1495
  "hiddenAliases": [],
1500
- "id": "experiments:get",
1496
+ "id": "datasets:spans",
1501
1497
  "pluginAlias": "@respan/cli",
1502
1498
  "pluginName": "@respan/cli",
1503
1499
  "pluginType": "core",
@@ -1507,14 +1503,20 @@
1507
1503
  "relativePath": [
1508
1504
  "dist",
1509
1505
  "commands",
1510
- "experiments",
1511
- "get.js"
1506
+ "datasets",
1507
+ "spans.js"
1512
1508
  ]
1513
1509
  },
1514
- "experiments:list": {
1510
+ "datasets:update": {
1515
1511
  "aliases": [],
1516
- "args": {},
1517
- "description": "List experiments",
1512
+ "args": {
1513
+ "id": {
1514
+ "description": "Dataset ID",
1515
+ "name": "id",
1516
+ "required": true
1517
+ }
1518
+ },
1519
+ "description": "Update a dataset",
1518
1520
  "flags": {
1519
1521
  "api-key": {
1520
1522
  "description": "API key (env: RESPAN_API_KEY)",
@@ -1550,18 +1552,16 @@
1550
1552
  "allowNo": false,
1551
1553
  "type": "boolean"
1552
1554
  },
1553
- "limit": {
1554
- "description": "Number of results per page",
1555
- "name": "limit",
1556
- "default": 20,
1555
+ "name": {
1556
+ "description": "Dataset name",
1557
+ "name": "name",
1557
1558
  "hasDynamicHelp": false,
1558
1559
  "multiple": false,
1559
1560
  "type": "option"
1560
1561
  },
1561
- "page": {
1562
- "description": "Page number",
1563
- "name": "page",
1564
- "default": 1,
1562
+ "description": {
1563
+ "description": "Dataset description",
1564
+ "name": "description",
1565
1565
  "hasDynamicHelp": false,
1566
1566
  "multiple": false,
1567
1567
  "type": "option"
@@ -1569,7 +1569,7 @@
1569
1569
  },
1570
1570
  "hasDynamicHelp": false,
1571
1571
  "hiddenAliases": [],
1572
- "id": "experiments:list",
1572
+ "id": "datasets:update",
1573
1573
  "pluginAlias": "@respan/cli",
1574
1574
  "pluginName": "@respan/cli",
1575
1575
  "pluginType": "core",
@@ -1579,21 +1579,14 @@
1579
1579
  "relativePath": [
1580
1580
  "dist",
1581
1581
  "commands",
1582
- "experiments",
1583
- "list.js"
1582
+ "datasets",
1583
+ "update.js"
1584
1584
  ]
1585
1585
  },
1586
- "integrate:claude-code": {
1586
+ "logs:create": {
1587
1587
  "aliases": [],
1588
1588
  "args": {},
1589
- "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 (default) Both: install hook globally + enable for current project",
1590
- "examples": [
1591
- "respan integrate claude-code",
1592
- "respan integrate claude-code --global",
1593
- "respan integrate claude-code --local --project-id my-project",
1594
- "respan integrate claude-code --attrs '{\"env\":\"prod\"}'",
1595
- "respan integrate claude-code --dry-run"
1596
- ],
1589
+ "description": "Create a log span",
1597
1590
  "flags": {
1598
1591
  "api-key": {
1599
1592
  "description": "API key (env: RESPAN_API_KEY)",
@@ -1629,80 +1622,101 @@
1629
1622
  "allowNo": false,
1630
1623
  "type": "boolean"
1631
1624
  },
1632
- "local": {
1633
- "description": "Write per-project config (default)",
1634
- "exclusive": [
1635
- "global"
1636
- ],
1637
- "name": "local",
1638
- "allowNo": false,
1639
- "type": "boolean"
1640
- },
1641
- "global": {
1642
- "description": "Write user-level global config",
1643
- "exclusive": [
1644
- "local"
1645
- ],
1646
- "name": "global",
1647
- "allowNo": false,
1648
- "type": "boolean"
1649
- },
1650
- "project-id": {
1651
- "description": "Respan project ID (added to metadata / resource attributes)",
1652
- "env": "RESPAN_PROJECT_ID",
1653
- "name": "project-id",
1625
+ "input": {
1626
+ "description": "Input text or JSON",
1627
+ "name": "input",
1628
+ "required": true,
1654
1629
  "hasDynamicHelp": false,
1655
1630
  "multiple": false,
1656
1631
  "type": "option"
1657
1632
  },
1658
- "base-url": {
1659
- "description": "Respan API base URL (for enterprise deployments)",
1660
- "name": "base-url",
1661
- "default": "https://api.respan.ai/api",
1633
+ "output": {
1634
+ "description": "Output text or JSON",
1635
+ "name": "output",
1662
1636
  "hasDynamicHelp": false,
1663
1637
  "multiple": false,
1664
1638
  "type": "option"
1665
1639
  },
1666
- "attrs": {
1667
- "description": "Custom attributes JSON (e.g. '{\"env\":\"prod\"}')",
1668
- "name": "attrs",
1669
- "default": "{}",
1640
+ "model": {
1641
+ "description": "Model name",
1642
+ "name": "model",
1670
1643
  "hasDynamicHelp": false,
1671
1644
  "multiple": false,
1672
1645
  "type": "option"
1673
1646
  },
1674
- "customer-id": {
1675
- "description": "Customer/user identifier for traces (e.g. your name or email)",
1676
- "env": "RESPAN_CUSTOMER_ID",
1677
- "name": "customer-id",
1647
+ "metadata": {
1648
+ "description": "Metadata as JSON string",
1649
+ "name": "metadata",
1678
1650
  "hasDynamicHelp": false,
1679
1651
  "multiple": false,
1680
1652
  "type": "option"
1681
- },
1682
- "span-name": {
1683
- "description": "Root span name for traces (default: claude-code)",
1684
- "name": "span-name",
1653
+ }
1654
+ },
1655
+ "hasDynamicHelp": false,
1656
+ "hiddenAliases": [],
1657
+ "id": "logs:create",
1658
+ "pluginAlias": "@respan/cli",
1659
+ "pluginName": "@respan/cli",
1660
+ "pluginType": "core",
1661
+ "strict": true,
1662
+ "enableJsonFlag": false,
1663
+ "isESM": true,
1664
+ "relativePath": [
1665
+ "dist",
1666
+ "commands",
1667
+ "logs",
1668
+ "create.js"
1669
+ ]
1670
+ },
1671
+ "logs:get": {
1672
+ "aliases": [],
1673
+ "args": {
1674
+ "id": {
1675
+ "description": "Span ID",
1676
+ "name": "id",
1677
+ "required": true
1678
+ }
1679
+ },
1680
+ "description": "Get a specific log span",
1681
+ "flags": {
1682
+ "api-key": {
1683
+ "description": "API key (env: RESPAN_API_KEY)",
1684
+ "env": "RESPAN_API_KEY",
1685
+ "name": "api-key",
1685
1686
  "hasDynamicHelp": false,
1686
1687
  "multiple": false,
1687
1688
  "type": "option"
1688
1689
  },
1689
- "workflow-name": {
1690
- "description": "Workflow name for traces (default: claude-code)",
1691
- "name": "workflow-name",
1690
+ "profile": {
1691
+ "description": "Named profile to use",
1692
+ "name": "profile",
1692
1693
  "hasDynamicHelp": false,
1693
1694
  "multiple": false,
1694
1695
  "type": "option"
1695
1696
  },
1696
- "dry-run": {
1697
- "description": "Preview changes without writing files",
1698
- "name": "dry-run",
1697
+ "json": {
1698
+ "description": "Output as JSON",
1699
+ "name": "json",
1700
+ "allowNo": false,
1701
+ "type": "boolean"
1702
+ },
1703
+ "csv": {
1704
+ "description": "Output as CSV",
1705
+ "name": "csv",
1706
+ "allowNo": false,
1707
+ "type": "boolean"
1708
+ },
1709
+ "verbose": {
1710
+ "char": "v",
1711
+ "description": "Show verbose output",
1712
+ "name": "verbose",
1699
1713
  "allowNo": false,
1700
1714
  "type": "boolean"
1701
1715
  }
1702
1716
  },
1703
1717
  "hasDynamicHelp": false,
1704
1718
  "hiddenAliases": [],
1705
- "id": "integrate:claude-code",
1719
+ "id": "logs:get",
1706
1720
  "pluginAlias": "@respan/cli",
1707
1721
  "pluginName": "@respan/cli",
1708
1722
  "pluginType": "core",
@@ -1712,21 +1726,14 @@
1712
1726
  "relativePath": [
1713
1727
  "dist",
1714
1728
  "commands",
1715
- "integrate",
1716
- "claude-code.js"
1729
+ "logs",
1730
+ "get.js"
1717
1731
  ]
1718
1732
  },
1719
- "integrate:codex-cli": {
1733
+ "logs:list": {
1720
1734
  "aliases": [],
1721
1735
  "args": {},
1722
- "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 (default) Both: install hook globally + config for current project",
1723
- "examples": [
1724
- "respan integrate codex-cli",
1725
- "respan integrate codex-cli --global",
1726
- "respan integrate codex-cli --local --customer-id frank",
1727
- "respan integrate codex-cli --attrs '{\"env\":\"prod\"}'",
1728
- "respan integrate codex-cli --dry-run"
1729
- ],
1736
+ "description": "List and filter LLM request logs (spans).\n\nSupports pagination, sorting, time range, and server-side filtering.\n\nFILTER SYNTAX: field:operator:value\n\nOPERATORS:\n (empty) Exact match model::gpt-4\n not Not equal status_code:not:200\n gt Greater than cost:gt:0.01\n gte Greater than/equal latency:gte:1.0\n lt Less than cost:lt:0.5\n lte Less than/equal prompt_tokens:lte:100\n contains Contains substring error_message:contains:timeout\n icontains Case-insensitive model:icontains:gpt\n startswith Starts with model:startswith:gpt\n endswith Ends with model:endswith:mini\n in Value in list model:in:gpt-4,gpt-4o\n isnull Is null error_message:isnull:true\n iexact Case-insens. exact status:iexact:success\n\nFILTERABLE FIELDS (logs):\n model, status_code, status, cost, latency, prompt_tokens,\n completion_tokens, customer_identifier, custom_identifier,\n thread_identifier, trace_unique_id, span_name, span_workflow_name,\n environment, log_type, error_message, failed, provider_id,\n deployment_name, prompt_name, prompt_id, unique_id, stream,\n temperature, max_tokens, tokens_per_second, time_to_first_token,\n total_request_tokens, metadata__<key>, scores__<evaluator_id>\n\nEXAMPLES:\n --filter model::gpt-4o --filter cost:gt:0.01\n --filter status_code:not:200\n --filter metadata__env::production\n --filter model:in:gpt-4,gpt-4o",
1730
1737
  "flags": {
1731
1738
  "api-key": {
1732
1739
  "description": "API key (env: RESPAN_API_KEY)",
@@ -1762,80 +1769,75 @@
1762
1769
  "allowNo": false,
1763
1770
  "type": "boolean"
1764
1771
  },
1765
- "local": {
1766
- "description": "Write per-project config (default)",
1767
- "exclusive": [
1768
- "global"
1769
- ],
1770
- "name": "local",
1771
- "allowNo": false,
1772
- "type": "boolean"
1773
- },
1774
- "global": {
1775
- "description": "Write user-level global config",
1776
- "exclusive": [
1777
- "local"
1778
- ],
1779
- "name": "global",
1780
- "allowNo": false,
1781
- "type": "boolean"
1772
+ "limit": {
1773
+ "description": "Number of results per page (max 1000)",
1774
+ "name": "limit",
1775
+ "default": 50,
1776
+ "hasDynamicHelp": false,
1777
+ "multiple": false,
1778
+ "type": "option"
1782
1779
  },
1783
- "project-id": {
1784
- "description": "Respan project ID (added to metadata / resource attributes)",
1785
- "env": "RESPAN_PROJECT_ID",
1786
- "name": "project-id",
1780
+ "page": {
1781
+ "description": "Page number",
1782
+ "name": "page",
1783
+ "default": 1,
1787
1784
  "hasDynamicHelp": false,
1788
1785
  "multiple": false,
1789
1786
  "type": "option"
1790
1787
  },
1791
- "base-url": {
1792
- "description": "Respan API base URL (for enterprise deployments)",
1793
- "name": "base-url",
1794
- "default": "https://api.respan.ai/api",
1788
+ "sort-by": {
1789
+ "description": "Sort field (prefix with - for descending, e.g. -cost, -latency)",
1790
+ "name": "sort-by",
1795
1791
  "hasDynamicHelp": false,
1796
1792
  "multiple": false,
1797
1793
  "type": "option"
1798
1794
  },
1799
- "attrs": {
1800
- "description": "Custom attributes JSON (e.g. '{\"env\":\"prod\"}')",
1801
- "name": "attrs",
1802
- "default": "{}",
1795
+ "start-time": {
1796
+ "description": "Start time filter (ISO 8601)",
1797
+ "name": "start-time",
1803
1798
  "hasDynamicHelp": false,
1804
1799
  "multiple": false,
1805
1800
  "type": "option"
1806
1801
  },
1807
- "customer-id": {
1808
- "description": "Customer/user identifier for traces (e.g. your name or email)",
1809
- "env": "RESPAN_CUSTOMER_ID",
1810
- "name": "customer-id",
1802
+ "end-time": {
1803
+ "description": "End time filter (ISO 8601)",
1804
+ "name": "end-time",
1811
1805
  "hasDynamicHelp": false,
1812
1806
  "multiple": false,
1813
1807
  "type": "option"
1814
1808
  },
1815
- "span-name": {
1816
- "description": "Root span name for traces (default: claude-code)",
1817
- "name": "span-name",
1809
+ "filter": {
1810
+ "description": "Filter in field:operator:value format (repeatable)",
1811
+ "name": "filter",
1812
+ "hasDynamicHelp": false,
1813
+ "multiple": true,
1814
+ "type": "option"
1815
+ },
1816
+ "all-envs": {
1817
+ "description": "Include all environments (true/false)",
1818
+ "name": "all-envs",
1818
1819
  "hasDynamicHelp": false,
1819
1820
  "multiple": false,
1820
1821
  "type": "option"
1821
1822
  },
1822
- "workflow-name": {
1823
- "description": "Workflow name for traces (default: claude-code)",
1824
- "name": "workflow-name",
1823
+ "is-test": {
1824
+ "description": "Filter by test (true) or production (false) environment",
1825
+ "name": "is-test",
1825
1826
  "hasDynamicHelp": false,
1826
1827
  "multiple": false,
1827
1828
  "type": "option"
1828
1829
  },
1829
- "dry-run": {
1830
- "description": "Preview changes without writing files",
1831
- "name": "dry-run",
1832
- "allowNo": false,
1833
- "type": "boolean"
1830
+ "include-fields": {
1831
+ "description": "Comma-separated fields to include in response",
1832
+ "name": "include-fields",
1833
+ "hasDynamicHelp": false,
1834
+ "multiple": false,
1835
+ "type": "option"
1834
1836
  }
1835
1837
  },
1836
1838
  "hasDynamicHelp": false,
1837
1839
  "hiddenAliases": [],
1838
- "id": "integrate:codex-cli",
1840
+ "id": "logs:list",
1839
1841
  "pluginAlias": "@respan/cli",
1840
1842
  "pluginName": "@respan/cli",
1841
1843
  "pluginType": "core",
@@ -1845,20 +1847,14 @@
1845
1847
  "relativePath": [
1846
1848
  "dist",
1847
1849
  "commands",
1848
- "integrate",
1849
- "codex-cli.js"
1850
+ "logs",
1851
+ "list.js"
1850
1852
  ]
1851
1853
  },
1852
- "integrate:gemini-cli": {
1854
+ "logs:summary": {
1853
1855
  "aliases": [],
1854
1856
  "args": {},
1855
- "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\nNote: Gemini CLI ignores workspace-level telemetry settings, so\n--global is the default.",
1856
- "examples": [
1857
- "respan integrate gemini-cli",
1858
- "respan integrate gemini-cli --local",
1859
- "respan integrate gemini-cli --project-id my-project --attrs '{\"env\":\"prod\"}'",
1860
- "respan integrate gemini-cli --dry-run"
1861
- ],
1857
+ "description": "Get aggregated summary statistics for log spans in a time range.\n\nReturns total cost, total tokens, request count, and score summaries.\n\nFILTER SYNTAX: field:operator:value\n\nOPERATORS:\n (empty) Exact match model::gpt-4\n not Not equal status_code:not:200\n gt Greater than cost:gt:0.01\n gte Greater than/equal latency:gte:1.0\n lt Less than cost:lt:0.5\n lte Less than/equal prompt_tokens:lte:100\n contains Contains substring error_message:contains:timeout\n icontains Case-insensitive model:icontains:gpt\n startswith Starts with model:startswith:gpt\n endswith Ends with model:endswith:mini\n in Value in list model:in:gpt-4,gpt-4o\n isnull Is null error_message:isnull:true\n iexact Case-insens. exact status:iexact:success\n\nFILTERABLE FIELDS (logs):\n model, status_code, status, cost, latency, prompt_tokens,\n completion_tokens, customer_identifier, custom_identifier,\n thread_identifier, trace_unique_id, span_name, span_workflow_name,\n environment, log_type, error_message, failed, provider_id,\n deployment_name, prompt_name, prompt_id, unique_id, stream,\n temperature, max_tokens, tokens_per_second, time_to_first_token,\n total_request_tokens, metadata__<key>, scores__<evaluator_id>\n\nEXAMPLES:\n --filter model::gpt-4o --filter cost:gt:0.01\n --filter status_code:not:200\n --filter metadata__env::production\n --filter model:in:gpt-4,gpt-4o",
1862
1858
  "flags": {
1863
1859
  "api-key": {
1864
1860
  "description": "API key (env: RESPAN_API_KEY)",
@@ -1894,212 +1890,47 @@
1894
1890
  "allowNo": false,
1895
1891
  "type": "boolean"
1896
1892
  },
1897
- "local": {
1898
- "description": "Write per-project config (default)",
1899
- "exclusive": [
1900
- "global"
1901
- ],
1902
- "name": "local",
1903
- "allowNo": false,
1904
- "type": "boolean"
1893
+ "start-time": {
1894
+ "description": "Start time (ISO 8601)",
1895
+ "name": "start-time",
1896
+ "required": true,
1897
+ "hasDynamicHelp": false,
1898
+ "multiple": false,
1899
+ "type": "option"
1905
1900
  },
1906
- "global": {
1907
- "description": "Write user-level global config",
1908
- "exclusive": [
1909
- "local"
1910
- ],
1911
- "name": "global",
1912
- "allowNo": false,
1913
- "type": "boolean"
1914
- },
1915
- "project-id": {
1916
- "description": "Respan project ID (added to metadata / resource attributes)",
1917
- "env": "RESPAN_PROJECT_ID",
1918
- "name": "project-id",
1919
- "hasDynamicHelp": false,
1920
- "multiple": false,
1921
- "type": "option"
1922
- },
1923
- "base-url": {
1924
- "description": "Respan API base URL (for enterprise deployments)",
1925
- "name": "base-url",
1926
- "default": "https://api.respan.ai/api",
1927
- "hasDynamicHelp": false,
1928
- "multiple": false,
1929
- "type": "option"
1930
- },
1931
- "attrs": {
1932
- "description": "Custom attributes JSON (e.g. '{\"env\":\"prod\"}')",
1933
- "name": "attrs",
1934
- "default": "{}",
1935
- "hasDynamicHelp": false,
1936
- "multiple": false,
1937
- "type": "option"
1938
- },
1939
- "customer-id": {
1940
- "description": "Customer/user identifier for traces (e.g. your name or email)",
1941
- "env": "RESPAN_CUSTOMER_ID",
1942
- "name": "customer-id",
1943
- "hasDynamicHelp": false,
1944
- "multiple": false,
1945
- "type": "option"
1946
- },
1947
- "span-name": {
1948
- "description": "Root span name for traces (default: claude-code)",
1949
- "name": "span-name",
1950
- "hasDynamicHelp": false,
1951
- "multiple": false,
1952
- "type": "option"
1953
- },
1954
- "workflow-name": {
1955
- "description": "Workflow name for traces (default: claude-code)",
1956
- "name": "workflow-name",
1957
- "hasDynamicHelp": false,
1958
- "multiple": false,
1959
- "type": "option"
1960
- },
1961
- "dry-run": {
1962
- "description": "Preview changes without writing files",
1963
- "name": "dry-run",
1964
- "allowNo": false,
1965
- "type": "boolean"
1966
- }
1967
- },
1968
- "hasDynamicHelp": false,
1969
- "hiddenAliases": [],
1970
- "id": "integrate:gemini-cli",
1971
- "pluginAlias": "@respan/cli",
1972
- "pluginName": "@respan/cli",
1973
- "pluginType": "core",
1974
- "strict": true,
1975
- "enableJsonFlag": false,
1976
- "isESM": true,
1977
- "relativePath": [
1978
- "dist",
1979
- "commands",
1980
- "integrate",
1981
- "gemini-cli.js"
1982
- ]
1983
- },
1984
- "integrate:opencode": {
1985
- "aliases": [],
1986
- "args": {},
1987
- "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.",
1988
- "examples": [
1989
- "respan integrate opencode",
1990
- "respan integrate opencode --global",
1991
- "respan integrate opencode --project-id my-project --attrs '{\"env\":\"prod\"}'",
1992
- "respan integrate opencode --dry-run"
1993
- ],
1994
- "flags": {
1995
- "api-key": {
1996
- "description": "API key (env: RESPAN_API_KEY)",
1997
- "env": "RESPAN_API_KEY",
1998
- "name": "api-key",
1999
- "hasDynamicHelp": false,
2000
- "multiple": false,
2001
- "type": "option"
2002
- },
2003
- "profile": {
2004
- "description": "Named profile to use",
2005
- "name": "profile",
2006
- "hasDynamicHelp": false,
2007
- "multiple": false,
2008
- "type": "option"
2009
- },
2010
- "json": {
2011
- "description": "Output as JSON",
2012
- "name": "json",
2013
- "allowNo": false,
2014
- "type": "boolean"
2015
- },
2016
- "csv": {
2017
- "description": "Output as CSV",
2018
- "name": "csv",
2019
- "allowNo": false,
2020
- "type": "boolean"
2021
- },
2022
- "verbose": {
2023
- "char": "v",
2024
- "description": "Show verbose output",
2025
- "name": "verbose",
2026
- "allowNo": false,
2027
- "type": "boolean"
2028
- },
2029
- "local": {
2030
- "description": "Write per-project config (default)",
2031
- "exclusive": [
2032
- "global"
2033
- ],
2034
- "name": "local",
2035
- "allowNo": false,
2036
- "type": "boolean"
2037
- },
2038
- "global": {
2039
- "description": "Write user-level global config",
2040
- "exclusive": [
2041
- "local"
2042
- ],
2043
- "name": "global",
2044
- "allowNo": false,
2045
- "type": "boolean"
2046
- },
2047
- "project-id": {
2048
- "description": "Respan project ID (added to metadata / resource attributes)",
2049
- "env": "RESPAN_PROJECT_ID",
2050
- "name": "project-id",
2051
- "hasDynamicHelp": false,
2052
- "multiple": false,
2053
- "type": "option"
2054
- },
2055
- "base-url": {
2056
- "description": "Respan API base URL (for enterprise deployments)",
2057
- "name": "base-url",
2058
- "default": "https://api.respan.ai/api",
2059
- "hasDynamicHelp": false,
2060
- "multiple": false,
2061
- "type": "option"
2062
- },
2063
- "attrs": {
2064
- "description": "Custom attributes JSON (e.g. '{\"env\":\"prod\"}')",
2065
- "name": "attrs",
2066
- "default": "{}",
1901
+ "end-time": {
1902
+ "description": "End time (ISO 8601)",
1903
+ "name": "end-time",
1904
+ "required": true,
2067
1905
  "hasDynamicHelp": false,
2068
1906
  "multiple": false,
2069
1907
  "type": "option"
2070
1908
  },
2071
- "customer-id": {
2072
- "description": "Customer/user identifier for traces (e.g. your name or email)",
2073
- "env": "RESPAN_CUSTOMER_ID",
2074
- "name": "customer-id",
1909
+ "filter": {
1910
+ "description": "Filter in field:operator:value format (repeatable)",
1911
+ "name": "filter",
2075
1912
  "hasDynamicHelp": false,
2076
- "multiple": false,
1913
+ "multiple": true,
2077
1914
  "type": "option"
2078
1915
  },
2079
- "span-name": {
2080
- "description": "Root span name for traces (default: claude-code)",
2081
- "name": "span-name",
1916
+ "all-envs": {
1917
+ "description": "Include all environments (true/false)",
1918
+ "name": "all-envs",
2082
1919
  "hasDynamicHelp": false,
2083
1920
  "multiple": false,
2084
1921
  "type": "option"
2085
1922
  },
2086
- "workflow-name": {
2087
- "description": "Workflow name for traces (default: claude-code)",
2088
- "name": "workflow-name",
1923
+ "is-test": {
1924
+ "description": "Filter by test (true) or production (false) environment",
1925
+ "name": "is-test",
2089
1926
  "hasDynamicHelp": false,
2090
1927
  "multiple": false,
2091
1928
  "type": "option"
2092
- },
2093
- "dry-run": {
2094
- "description": "Preview changes without writing files",
2095
- "name": "dry-run",
2096
- "allowNo": false,
2097
- "type": "boolean"
2098
1929
  }
2099
1930
  },
2100
1931
  "hasDynamicHelp": false,
2101
1932
  "hiddenAliases": [],
2102
- "id": "integrate:opencode",
1933
+ "id": "logs:summary",
2103
1934
  "pluginAlias": "@respan/cli",
2104
1935
  "pluginName": "@respan/cli",
2105
1936
  "pluginType": "core",
@@ -2109,8 +1940,8 @@
2109
1940
  "relativePath": [
2110
1941
  "dist",
2111
1942
  "commands",
2112
- "integrate",
2113
- "opencode.js"
1943
+ "logs",
1944
+ "summary.js"
2114
1945
  ]
2115
1946
  },
2116
1947
  "prompts:create-version": {
@@ -2539,16 +2370,10 @@
2539
2370
  "versions.js"
2540
2371
  ]
2541
2372
  },
2542
- "traces:get": {
2373
+ "users:create": {
2543
2374
  "aliases": [],
2544
- "args": {
2545
- "id": {
2546
- "description": "Trace ID",
2547
- "name": "id",
2548
- "required": true
2549
- }
2550
- },
2551
- "description": "Get a specific trace",
2375
+ "args": {},
2376
+ "description": "Create a new user (customer)",
2552
2377
  "flags": {
2553
2378
  "api-key": {
2554
2379
  "description": "API key (env: RESPAN_API_KEY)",
@@ -2583,11 +2408,40 @@
2583
2408
  "name": "verbose",
2584
2409
  "allowNo": false,
2585
2410
  "type": "boolean"
2411
+ },
2412
+ "identifier": {
2413
+ "description": "Customer identifier",
2414
+ "name": "identifier",
2415
+ "required": true,
2416
+ "hasDynamicHelp": false,
2417
+ "multiple": false,
2418
+ "type": "option"
2419
+ },
2420
+ "name": {
2421
+ "description": "Customer name",
2422
+ "name": "name",
2423
+ "hasDynamicHelp": false,
2424
+ "multiple": false,
2425
+ "type": "option"
2426
+ },
2427
+ "email": {
2428
+ "description": "Customer email",
2429
+ "name": "email",
2430
+ "hasDynamicHelp": false,
2431
+ "multiple": false,
2432
+ "type": "option"
2433
+ },
2434
+ "metadata": {
2435
+ "description": "Metadata as JSON string",
2436
+ "name": "metadata",
2437
+ "hasDynamicHelp": false,
2438
+ "multiple": false,
2439
+ "type": "option"
2586
2440
  }
2587
2441
  },
2588
2442
  "hasDynamicHelp": false,
2589
2443
  "hiddenAliases": [],
2590
- "id": "traces:get",
2444
+ "id": "users:create",
2591
2445
  "pluginAlias": "@respan/cli",
2592
2446
  "pluginName": "@respan/cli",
2593
2447
  "pluginType": "core",
@@ -2597,14 +2451,20 @@
2597
2451
  "relativePath": [
2598
2452
  "dist",
2599
2453
  "commands",
2600
- "traces",
2601
- "get.js"
2454
+ "users",
2455
+ "create.js"
2602
2456
  ]
2603
2457
  },
2604
- "traces:list": {
2458
+ "users:get": {
2605
2459
  "aliases": [],
2606
- "args": {},
2607
- "description": "List and filter traces.\n\nA trace represents a complete workflow execution containing multiple spans.\n\nFILTER SYNTAX: field:operator:value\n\nOPERATORS:\n (empty) Exact match model::gpt-4\n not Not equal status_code:not:200\n gt Greater than cost:gt:0.01\n gte Greater than/equal latency:gte:1.0\n lt Less than cost:lt:0.5\n lte Less than/equal prompt_tokens:lte:100\n contains Contains substring error_message:contains:timeout\n icontains Case-insensitive model:icontains:gpt\n startswith Starts with model:startswith:gpt\n endswith Ends with model:endswith:mini\n in Value in list model:in:gpt-4,gpt-4o\n isnull Is null error_message:isnull:true\n iexact Case-insens. exact status:iexact:success\n\nFILTERABLE FIELDS (traces):\n trace_unique_id, customer_identifier, environment, span_count,\n llm_call_count, error_count, total_cost, total_tokens,\n total_prompt_tokens, total_completion_tokens, duration,\n span_workflow_name, metadata__<key>\n\nEXAMPLES:\n --filter model::gpt-4o --filter cost:gt:0.01\n --filter status_code:not:200\n --filter metadata__env::production\n --filter model:in:gpt-4,gpt-4o",
2460
+ "args": {
2461
+ "id": {
2462
+ "description": "Customer identifier",
2463
+ "name": "id",
2464
+ "required": true
2465
+ }
2466
+ },
2467
+ "description": "Get a specific user (customer)",
2608
2468
  "flags": {
2609
2469
  "api-key": {
2610
2470
  "description": "API key (env: RESPAN_API_KEY)",
@@ -2639,63 +2499,11 @@
2639
2499
  "name": "verbose",
2640
2500
  "allowNo": false,
2641
2501
  "type": "boolean"
2642
- },
2643
- "limit": {
2644
- "description": "Number of results per page",
2645
- "name": "limit",
2646
- "default": 10,
2647
- "hasDynamicHelp": false,
2648
- "multiple": false,
2649
- "type": "option"
2650
- },
2651
- "page": {
2652
- "description": "Page number",
2653
- "name": "page",
2654
- "default": 1,
2655
- "hasDynamicHelp": false,
2656
- "multiple": false,
2657
- "type": "option"
2658
- },
2659
- "sort-by": {
2660
- "description": "Sort field (prefix with - for descending)",
2661
- "name": "sort-by",
2662
- "default": "-timestamp",
2663
- "hasDynamicHelp": false,
2664
- "multiple": false,
2665
- "type": "option"
2666
- },
2667
- "start-time": {
2668
- "description": "Start time filter (ISO 8601)",
2669
- "name": "start-time",
2670
- "hasDynamicHelp": false,
2671
- "multiple": false,
2672
- "type": "option"
2673
- },
2674
- "end-time": {
2675
- "description": "End time filter (ISO 8601)",
2676
- "name": "end-time",
2677
- "hasDynamicHelp": false,
2678
- "multiple": false,
2679
- "type": "option"
2680
- },
2681
- "environment": {
2682
- "description": "Environment filter",
2683
- "name": "environment",
2684
- "hasDynamicHelp": false,
2685
- "multiple": false,
2686
- "type": "option"
2687
- },
2688
- "filter": {
2689
- "description": "Filter in field:operator:value format (repeatable)",
2690
- "name": "filter",
2691
- "hasDynamicHelp": false,
2692
- "multiple": true,
2693
- "type": "option"
2694
2502
  }
2695
2503
  },
2696
2504
  "hasDynamicHelp": false,
2697
2505
  "hiddenAliases": [],
2698
- "id": "traces:list",
2506
+ "id": "users:get",
2699
2507
  "pluginAlias": "@respan/cli",
2700
2508
  "pluginName": "@respan/cli",
2701
2509
  "pluginType": "core",
@@ -2705,14 +2513,14 @@
2705
2513
  "relativePath": [
2706
2514
  "dist",
2707
2515
  "commands",
2708
- "traces",
2709
- "list.js"
2516
+ "users",
2517
+ "get.js"
2710
2518
  ]
2711
2519
  },
2712
- "traces:summary": {
2520
+ "users:list": {
2713
2521
  "aliases": [],
2714
2522
  "args": {},
2715
- "description": "Get a summary of traces for a time range",
2523
+ "description": "List users (customers)",
2716
2524
  "flags": {
2717
2525
  "api-key": {
2718
2526
  "description": "API key (env: RESPAN_API_KEY)",
@@ -2748,18 +2556,32 @@
2748
2556
  "allowNo": false,
2749
2557
  "type": "boolean"
2750
2558
  },
2751
- "start-time": {
2752
- "description": "Start time (ISO 8601)",
2753
- "name": "start-time",
2754
- "required": true,
2559
+ "limit": {
2560
+ "description": "Number of results per page",
2561
+ "name": "limit",
2562
+ "default": 20,
2755
2563
  "hasDynamicHelp": false,
2756
2564
  "multiple": false,
2757
2565
  "type": "option"
2758
2566
  },
2759
- "end-time": {
2760
- "description": "End time (ISO 8601)",
2761
- "name": "end-time",
2762
- "required": true,
2567
+ "page": {
2568
+ "description": "Page number",
2569
+ "name": "page",
2570
+ "default": 1,
2571
+ "hasDynamicHelp": false,
2572
+ "multiple": false,
2573
+ "type": "option"
2574
+ },
2575
+ "sort-by": {
2576
+ "description": "Sort field",
2577
+ "name": "sort-by",
2578
+ "hasDynamicHelp": false,
2579
+ "multiple": false,
2580
+ "type": "option"
2581
+ },
2582
+ "environment": {
2583
+ "description": "Environment filter",
2584
+ "name": "environment",
2763
2585
  "hasDynamicHelp": false,
2764
2586
  "multiple": false,
2765
2587
  "type": "option"
@@ -2767,7 +2589,7 @@
2767
2589
  },
2768
2590
  "hasDynamicHelp": false,
2769
2591
  "hiddenAliases": [],
2770
- "id": "traces:summary",
2592
+ "id": "users:list",
2771
2593
  "pluginAlias": "@respan/cli",
2772
2594
  "pluginName": "@respan/cli",
2773
2595
  "pluginType": "core",
@@ -2777,14 +2599,20 @@
2777
2599
  "relativePath": [
2778
2600
  "dist",
2779
2601
  "commands",
2780
- "traces",
2781
- "summary.js"
2602
+ "users",
2603
+ "list.js"
2782
2604
  ]
2783
2605
  },
2784
- "users:create": {
2606
+ "users:update": {
2785
2607
  "aliases": [],
2786
- "args": {},
2787
- "description": "Create a new user (customer)",
2608
+ "args": {
2609
+ "id": {
2610
+ "description": "Customer identifier",
2611
+ "name": "id",
2612
+ "required": true
2613
+ }
2614
+ },
2615
+ "description": "Update a user (customer)",
2788
2616
  "flags": {
2789
2617
  "api-key": {
2790
2618
  "description": "API key (env: RESPAN_API_KEY)",
@@ -2820,14 +2648,6 @@
2820
2648
  "allowNo": false,
2821
2649
  "type": "boolean"
2822
2650
  },
2823
- "identifier": {
2824
- "description": "Customer identifier",
2825
- "name": "identifier",
2826
- "required": true,
2827
- "hasDynamicHelp": false,
2828
- "multiple": false,
2829
- "type": "option"
2830
- },
2831
2651
  "name": {
2832
2652
  "description": "Customer name",
2833
2653
  "name": "name",
@@ -2852,7 +2672,7 @@
2852
2672
  },
2853
2673
  "hasDynamicHelp": false,
2854
2674
  "hiddenAliases": [],
2855
- "id": "users:create",
2675
+ "id": "users:update",
2856
2676
  "pluginAlias": "@respan/cli",
2857
2677
  "pluginName": "@respan/cli",
2858
2678
  "pluginType": "core",
@@ -2863,19 +2683,19 @@
2863
2683
  "dist",
2864
2684
  "commands",
2865
2685
  "users",
2866
- "create.js"
2686
+ "update.js"
2867
2687
  ]
2868
2688
  },
2869
- "users:get": {
2689
+ "traces:get": {
2870
2690
  "aliases": [],
2871
2691
  "args": {
2872
2692
  "id": {
2873
- "description": "Customer identifier",
2693
+ "description": "Trace ID",
2874
2694
  "name": "id",
2875
2695
  "required": true
2876
2696
  }
2877
2697
  },
2878
- "description": "Get a specific user (customer)",
2698
+ "description": "Get a specific trace",
2879
2699
  "flags": {
2880
2700
  "api-key": {
2881
2701
  "description": "API key (env: RESPAN_API_KEY)",
@@ -2914,7 +2734,7 @@
2914
2734
  },
2915
2735
  "hasDynamicHelp": false,
2916
2736
  "hiddenAliases": [],
2917
- "id": "users:get",
2737
+ "id": "traces:get",
2918
2738
  "pluginAlias": "@respan/cli",
2919
2739
  "pluginName": "@respan/cli",
2920
2740
  "pluginType": "core",
@@ -2924,14 +2744,14 @@
2924
2744
  "relativePath": [
2925
2745
  "dist",
2926
2746
  "commands",
2927
- "users",
2747
+ "traces",
2928
2748
  "get.js"
2929
2749
  ]
2930
2750
  },
2931
- "users:list": {
2751
+ "traces:list": {
2932
2752
  "aliases": [],
2933
2753
  "args": {},
2934
- "description": "List users (customers)",
2754
+ "description": "List and filter traces.\n\nA trace represents a complete workflow execution containing multiple spans.\n\nFILTER SYNTAX: field:operator:value\n\nOPERATORS:\n (empty) Exact match model::gpt-4\n not Not equal status_code:not:200\n gt Greater than cost:gt:0.01\n gte Greater than/equal latency:gte:1.0\n lt Less than cost:lt:0.5\n lte Less than/equal prompt_tokens:lte:100\n contains Contains substring error_message:contains:timeout\n icontains Case-insensitive model:icontains:gpt\n startswith Starts with model:startswith:gpt\n endswith Ends with model:endswith:mini\n in Value in list model:in:gpt-4,gpt-4o\n isnull Is null error_message:isnull:true\n iexact Case-insens. exact status:iexact:success\n\nFILTERABLE FIELDS (traces):\n trace_unique_id, customer_identifier, environment, span_count,\n llm_call_count, error_count, total_cost, total_tokens,\n total_prompt_tokens, total_completion_tokens, duration,\n span_workflow_name, metadata__<key>\n\nEXAMPLES:\n --filter model::gpt-4o --filter cost:gt:0.01\n --filter status_code:not:200\n --filter metadata__env::production\n --filter model:in:gpt-4,gpt-4o",
2935
2755
  "flags": {
2936
2756
  "api-key": {
2937
2757
  "description": "API key (env: RESPAN_API_KEY)",
@@ -2970,7 +2790,7 @@
2970
2790
  "limit": {
2971
2791
  "description": "Number of results per page",
2972
2792
  "name": "limit",
2973
- "default": 20,
2793
+ "default": 10,
2974
2794
  "hasDynamicHelp": false,
2975
2795
  "multiple": false,
2976
2796
  "type": "option"
@@ -2984,8 +2804,23 @@
2984
2804
  "type": "option"
2985
2805
  },
2986
2806
  "sort-by": {
2987
- "description": "Sort field",
2807
+ "description": "Sort field (prefix with - for descending)",
2988
2808
  "name": "sort-by",
2809
+ "default": "-timestamp",
2810
+ "hasDynamicHelp": false,
2811
+ "multiple": false,
2812
+ "type": "option"
2813
+ },
2814
+ "start-time": {
2815
+ "description": "Start time filter (ISO 8601)",
2816
+ "name": "start-time",
2817
+ "hasDynamicHelp": false,
2818
+ "multiple": false,
2819
+ "type": "option"
2820
+ },
2821
+ "end-time": {
2822
+ "description": "End time filter (ISO 8601)",
2823
+ "name": "end-time",
2989
2824
  "hasDynamicHelp": false,
2990
2825
  "multiple": false,
2991
2826
  "type": "option"
@@ -2996,11 +2831,18 @@
2996
2831
  "hasDynamicHelp": false,
2997
2832
  "multiple": false,
2998
2833
  "type": "option"
2834
+ },
2835
+ "filter": {
2836
+ "description": "Filter in field:operator:value format (repeatable)",
2837
+ "name": "filter",
2838
+ "hasDynamicHelp": false,
2839
+ "multiple": true,
2840
+ "type": "option"
2999
2841
  }
3000
2842
  },
3001
2843
  "hasDynamicHelp": false,
3002
2844
  "hiddenAliases": [],
3003
- "id": "users:list",
2845
+ "id": "traces:list",
3004
2846
  "pluginAlias": "@respan/cli",
3005
2847
  "pluginName": "@respan/cli",
3006
2848
  "pluginType": "core",
@@ -3010,20 +2852,14 @@
3010
2852
  "relativePath": [
3011
2853
  "dist",
3012
2854
  "commands",
3013
- "users",
2855
+ "traces",
3014
2856
  "list.js"
3015
2857
  ]
3016
2858
  },
3017
- "users:update": {
2859
+ "traces:summary": {
3018
2860
  "aliases": [],
3019
- "args": {
3020
- "id": {
3021
- "description": "Customer identifier",
3022
- "name": "id",
3023
- "required": true
3024
- }
3025
- },
3026
- "description": "Update a user (customer)",
2861
+ "args": {},
2862
+ "description": "Get a summary of traces for a time range",
3027
2863
  "flags": {
3028
2864
  "api-key": {
3029
2865
  "description": "API key (env: RESPAN_API_KEY)",
@@ -3059,23 +2895,18 @@
3059
2895
  "allowNo": false,
3060
2896
  "type": "boolean"
3061
2897
  },
3062
- "name": {
3063
- "description": "Customer name",
3064
- "name": "name",
3065
- "hasDynamicHelp": false,
3066
- "multiple": false,
3067
- "type": "option"
3068
- },
3069
- "email": {
3070
- "description": "Customer email",
3071
- "name": "email",
2898
+ "start-time": {
2899
+ "description": "Start time (ISO 8601)",
2900
+ "name": "start-time",
2901
+ "required": true,
3072
2902
  "hasDynamicHelp": false,
3073
2903
  "multiple": false,
3074
2904
  "type": "option"
3075
2905
  },
3076
- "metadata": {
3077
- "description": "Metadata as JSON string",
3078
- "name": "metadata",
2906
+ "end-time": {
2907
+ "description": "End time (ISO 8601)",
2908
+ "name": "end-time",
2909
+ "required": true,
3079
2910
  "hasDynamicHelp": false,
3080
2911
  "multiple": false,
3081
2912
  "type": "option"
@@ -3083,7 +2914,7 @@
3083
2914
  },
3084
2915
  "hasDynamicHelp": false,
3085
2916
  "hiddenAliases": [],
3086
- "id": "users:update",
2917
+ "id": "traces:summary",
3087
2918
  "pluginAlias": "@respan/cli",
3088
2919
  "pluginName": "@respan/cli",
3089
2920
  "pluginType": "core",
@@ -3093,14 +2924,21 @@
3093
2924
  "relativePath": [
3094
2925
  "dist",
3095
2926
  "commands",
3096
- "users",
3097
- "update.js"
2927
+ "traces",
2928
+ "summary.js"
3098
2929
  ]
3099
2930
  },
3100
- "logs:create": {
2931
+ "integrate:claude-code": {
3101
2932
  "aliases": [],
3102
2933
  "args": {},
3103
- "description": "Create a log span",
2934
+ "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 (default) Both: install hook globally + enable for current project",
2935
+ "examples": [
2936
+ "respan integrate claude-code",
2937
+ "respan integrate claude-code --global",
2938
+ "respan integrate claude-code --local --project-id my-project",
2939
+ "respan integrate claude-code --attrs '{\"env\":\"prod\"}'",
2940
+ "respan integrate claude-code --dry-run"
2941
+ ],
3104
2942
  "flags": {
3105
2943
  "api-key": {
3106
2944
  "description": "API key (env: RESPAN_API_KEY)",
@@ -3136,39 +2974,80 @@
3136
2974
  "allowNo": false,
3137
2975
  "type": "boolean"
3138
2976
  },
3139
- "input": {
3140
- "description": "Input text or JSON",
3141
- "name": "input",
3142
- "required": true,
2977
+ "local": {
2978
+ "description": "Write per-project config (default)",
2979
+ "exclusive": [
2980
+ "global"
2981
+ ],
2982
+ "name": "local",
2983
+ "allowNo": false,
2984
+ "type": "boolean"
2985
+ },
2986
+ "global": {
2987
+ "description": "Write user-level global config",
2988
+ "exclusive": [
2989
+ "local"
2990
+ ],
2991
+ "name": "global",
2992
+ "allowNo": false,
2993
+ "type": "boolean"
2994
+ },
2995
+ "project-id": {
2996
+ "description": "Respan project ID (added to metadata / resource attributes)",
2997
+ "env": "RESPAN_PROJECT_ID",
2998
+ "name": "project-id",
3143
2999
  "hasDynamicHelp": false,
3144
3000
  "multiple": false,
3145
3001
  "type": "option"
3146
3002
  },
3147
- "output": {
3148
- "description": "Output text or JSON",
3149
- "name": "output",
3003
+ "base-url": {
3004
+ "description": "Respan API base URL (for enterprise deployments)",
3005
+ "name": "base-url",
3006
+ "default": "https://api.respan.ai/api",
3150
3007
  "hasDynamicHelp": false,
3151
3008
  "multiple": false,
3152
3009
  "type": "option"
3153
3010
  },
3154
- "model": {
3155
- "description": "Model name",
3156
- "name": "model",
3011
+ "attrs": {
3012
+ "description": "Custom attributes JSON (e.g. '{\"env\":\"prod\"}')",
3013
+ "name": "attrs",
3014
+ "default": "{}",
3157
3015
  "hasDynamicHelp": false,
3158
3016
  "multiple": false,
3159
3017
  "type": "option"
3160
3018
  },
3161
- "metadata": {
3162
- "description": "Metadata as JSON string",
3163
- "name": "metadata",
3019
+ "customer-id": {
3020
+ "description": "Customer/user identifier for traces (e.g. your name or email)",
3021
+ "env": "RESPAN_CUSTOMER_ID",
3022
+ "name": "customer-id",
3023
+ "hasDynamicHelp": false,
3024
+ "multiple": false,
3025
+ "type": "option"
3026
+ },
3027
+ "span-name": {
3028
+ "description": "Root span name for traces (default: claude-code)",
3029
+ "name": "span-name",
3164
3030
  "hasDynamicHelp": false,
3165
3031
  "multiple": false,
3166
3032
  "type": "option"
3033
+ },
3034
+ "workflow-name": {
3035
+ "description": "Workflow name for traces (default: claude-code)",
3036
+ "name": "workflow-name",
3037
+ "hasDynamicHelp": false,
3038
+ "multiple": false,
3039
+ "type": "option"
3040
+ },
3041
+ "dry-run": {
3042
+ "description": "Preview changes without writing files",
3043
+ "name": "dry-run",
3044
+ "allowNo": false,
3045
+ "type": "boolean"
3167
3046
  }
3168
3047
  },
3169
3048
  "hasDynamicHelp": false,
3170
3049
  "hiddenAliases": [],
3171
- "id": "logs:create",
3050
+ "id": "integrate:claude-code",
3172
3051
  "pluginAlias": "@respan/cli",
3173
3052
  "pluginName": "@respan/cli",
3174
3053
  "pluginType": "core",
@@ -3178,20 +3057,21 @@
3178
3057
  "relativePath": [
3179
3058
  "dist",
3180
3059
  "commands",
3181
- "logs",
3182
- "create.js"
3060
+ "integrate",
3061
+ "claude-code.js"
3183
3062
  ]
3184
3063
  },
3185
- "logs:get": {
3064
+ "integrate:codex-cli": {
3186
3065
  "aliases": [],
3187
- "args": {
3188
- "id": {
3189
- "description": "Span ID",
3190
- "name": "id",
3191
- "required": true
3192
- }
3193
- },
3194
- "description": "Get a specific log span",
3066
+ "args": {},
3067
+ "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 (default) Both: install hook globally + config for current project",
3068
+ "examples": [
3069
+ "respan integrate codex-cli",
3070
+ "respan integrate codex-cli --global",
3071
+ "respan integrate codex-cli --local --customer-id frank",
3072
+ "respan integrate codex-cli --attrs '{\"env\":\"prod\"}'",
3073
+ "respan integrate codex-cli --dry-run"
3074
+ ],
3195
3075
  "flags": {
3196
3076
  "api-key": {
3197
3077
  "description": "API key (env: RESPAN_API_KEY)",
@@ -3226,11 +3106,81 @@
3226
3106
  "name": "verbose",
3227
3107
  "allowNo": false,
3228
3108
  "type": "boolean"
3109
+ },
3110
+ "local": {
3111
+ "description": "Write per-project config (default)",
3112
+ "exclusive": [
3113
+ "global"
3114
+ ],
3115
+ "name": "local",
3116
+ "allowNo": false,
3117
+ "type": "boolean"
3118
+ },
3119
+ "global": {
3120
+ "description": "Write user-level global config",
3121
+ "exclusive": [
3122
+ "local"
3123
+ ],
3124
+ "name": "global",
3125
+ "allowNo": false,
3126
+ "type": "boolean"
3127
+ },
3128
+ "project-id": {
3129
+ "description": "Respan project ID (added to metadata / resource attributes)",
3130
+ "env": "RESPAN_PROJECT_ID",
3131
+ "name": "project-id",
3132
+ "hasDynamicHelp": false,
3133
+ "multiple": false,
3134
+ "type": "option"
3135
+ },
3136
+ "base-url": {
3137
+ "description": "Respan API base URL (for enterprise deployments)",
3138
+ "name": "base-url",
3139
+ "default": "https://api.respan.ai/api",
3140
+ "hasDynamicHelp": false,
3141
+ "multiple": false,
3142
+ "type": "option"
3143
+ },
3144
+ "attrs": {
3145
+ "description": "Custom attributes JSON (e.g. '{\"env\":\"prod\"}')",
3146
+ "name": "attrs",
3147
+ "default": "{}",
3148
+ "hasDynamicHelp": false,
3149
+ "multiple": false,
3150
+ "type": "option"
3151
+ },
3152
+ "customer-id": {
3153
+ "description": "Customer/user identifier for traces (e.g. your name or email)",
3154
+ "env": "RESPAN_CUSTOMER_ID",
3155
+ "name": "customer-id",
3156
+ "hasDynamicHelp": false,
3157
+ "multiple": false,
3158
+ "type": "option"
3159
+ },
3160
+ "span-name": {
3161
+ "description": "Root span name for traces (default: claude-code)",
3162
+ "name": "span-name",
3163
+ "hasDynamicHelp": false,
3164
+ "multiple": false,
3165
+ "type": "option"
3166
+ },
3167
+ "workflow-name": {
3168
+ "description": "Workflow name for traces (default: claude-code)",
3169
+ "name": "workflow-name",
3170
+ "hasDynamicHelp": false,
3171
+ "multiple": false,
3172
+ "type": "option"
3173
+ },
3174
+ "dry-run": {
3175
+ "description": "Preview changes without writing files",
3176
+ "name": "dry-run",
3177
+ "allowNo": false,
3178
+ "type": "boolean"
3229
3179
  }
3230
3180
  },
3231
3181
  "hasDynamicHelp": false,
3232
3182
  "hiddenAliases": [],
3233
- "id": "logs:get",
3183
+ "id": "integrate:codex-cli",
3234
3184
  "pluginAlias": "@respan/cli",
3235
3185
  "pluginName": "@respan/cli",
3236
3186
  "pluginType": "core",
@@ -3240,14 +3190,20 @@
3240
3190
  "relativePath": [
3241
3191
  "dist",
3242
3192
  "commands",
3243
- "logs",
3244
- "get.js"
3193
+ "integrate",
3194
+ "codex-cli.js"
3245
3195
  ]
3246
3196
  },
3247
- "logs:list": {
3197
+ "integrate:gemini-cli": {
3248
3198
  "aliases": [],
3249
3199
  "args": {},
3250
- "description": "List and filter LLM request logs (spans).\n\nSupports pagination, sorting, time range, and server-side filtering.\n\nFILTER SYNTAX: field:operator:value\n\nOPERATORS:\n (empty) Exact match model::gpt-4\n not Not equal status_code:not:200\n gt Greater than cost:gt:0.01\n gte Greater than/equal latency:gte:1.0\n lt Less than cost:lt:0.5\n lte Less than/equal prompt_tokens:lte:100\n contains Contains substring error_message:contains:timeout\n icontains Case-insensitive model:icontains:gpt\n startswith Starts with model:startswith:gpt\n endswith Ends with model:endswith:mini\n in Value in list model:in:gpt-4,gpt-4o\n isnull Is null error_message:isnull:true\n iexact Case-insens. exact status:iexact:success\n\nFILTERABLE FIELDS (logs):\n model, status_code, status, cost, latency, prompt_tokens,\n completion_tokens, customer_identifier, custom_identifier,\n thread_identifier, trace_unique_id, span_name, span_workflow_name,\n environment, log_type, error_message, failed, provider_id,\n deployment_name, prompt_name, prompt_id, unique_id, stream,\n temperature, max_tokens, tokens_per_second, time_to_first_token,\n total_request_tokens, metadata__<key>, scores__<evaluator_id>\n\nEXAMPLES:\n --filter model::gpt-4o --filter cost:gt:0.01\n --filter status_code:not:200\n --filter metadata__env::production\n --filter model:in:gpt-4,gpt-4o",
3200
+ "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\nNote: Gemini CLI ignores workspace-level telemetry settings, so\n--global is the default.",
3201
+ "examples": [
3202
+ "respan integrate gemini-cli",
3203
+ "respan integrate gemini-cli --local",
3204
+ "respan integrate gemini-cli --project-id my-project --attrs '{\"env\":\"prod\"}'",
3205
+ "respan integrate gemini-cli --dry-run"
3206
+ ],
3251
3207
  "flags": {
3252
3208
  "api-key": {
3253
3209
  "description": "API key (env: RESPAN_API_KEY)",
@@ -3283,75 +3239,80 @@
3283
3239
  "allowNo": false,
3284
3240
  "type": "boolean"
3285
3241
  },
3286
- "limit": {
3287
- "description": "Number of results per page (max 1000)",
3288
- "name": "limit",
3289
- "default": 50,
3290
- "hasDynamicHelp": false,
3291
- "multiple": false,
3292
- "type": "option"
3242
+ "local": {
3243
+ "description": "Write per-project config (default)",
3244
+ "exclusive": [
3245
+ "global"
3246
+ ],
3247
+ "name": "local",
3248
+ "allowNo": false,
3249
+ "type": "boolean"
3293
3250
  },
3294
- "page": {
3295
- "description": "Page number",
3296
- "name": "page",
3297
- "default": 1,
3298
- "hasDynamicHelp": false,
3299
- "multiple": false,
3300
- "type": "option"
3251
+ "global": {
3252
+ "description": "Write user-level global config",
3253
+ "exclusive": [
3254
+ "local"
3255
+ ],
3256
+ "name": "global",
3257
+ "allowNo": false,
3258
+ "type": "boolean"
3301
3259
  },
3302
- "sort-by": {
3303
- "description": "Sort field (prefix with - for descending, e.g. -cost, -latency)",
3304
- "name": "sort-by",
3260
+ "project-id": {
3261
+ "description": "Respan project ID (added to metadata / resource attributes)",
3262
+ "env": "RESPAN_PROJECT_ID",
3263
+ "name": "project-id",
3305
3264
  "hasDynamicHelp": false,
3306
3265
  "multiple": false,
3307
3266
  "type": "option"
3308
3267
  },
3309
- "start-time": {
3310
- "description": "Start time filter (ISO 8601)",
3311
- "name": "start-time",
3268
+ "base-url": {
3269
+ "description": "Respan API base URL (for enterprise deployments)",
3270
+ "name": "base-url",
3271
+ "default": "https://api.respan.ai/api",
3312
3272
  "hasDynamicHelp": false,
3313
3273
  "multiple": false,
3314
3274
  "type": "option"
3315
3275
  },
3316
- "end-time": {
3317
- "description": "End time filter (ISO 8601)",
3318
- "name": "end-time",
3276
+ "attrs": {
3277
+ "description": "Custom attributes JSON (e.g. '{\"env\":\"prod\"}')",
3278
+ "name": "attrs",
3279
+ "default": "{}",
3319
3280
  "hasDynamicHelp": false,
3320
3281
  "multiple": false,
3321
3282
  "type": "option"
3322
3283
  },
3323
- "filter": {
3324
- "description": "Filter in field:operator:value format (repeatable)",
3325
- "name": "filter",
3326
- "hasDynamicHelp": false,
3327
- "multiple": true,
3328
- "type": "option"
3329
- },
3330
- "all-envs": {
3331
- "description": "Include all environments (true/false)",
3332
- "name": "all-envs",
3284
+ "customer-id": {
3285
+ "description": "Customer/user identifier for traces (e.g. your name or email)",
3286
+ "env": "RESPAN_CUSTOMER_ID",
3287
+ "name": "customer-id",
3333
3288
  "hasDynamicHelp": false,
3334
3289
  "multiple": false,
3335
3290
  "type": "option"
3336
3291
  },
3337
- "is-test": {
3338
- "description": "Filter by test (true) or production (false) environment",
3339
- "name": "is-test",
3292
+ "span-name": {
3293
+ "description": "Root span name for traces (default: claude-code)",
3294
+ "name": "span-name",
3340
3295
  "hasDynamicHelp": false,
3341
3296
  "multiple": false,
3342
3297
  "type": "option"
3343
3298
  },
3344
- "include-fields": {
3345
- "description": "Comma-separated fields to include in response",
3346
- "name": "include-fields",
3299
+ "workflow-name": {
3300
+ "description": "Workflow name for traces (default: claude-code)",
3301
+ "name": "workflow-name",
3347
3302
  "hasDynamicHelp": false,
3348
3303
  "multiple": false,
3349
3304
  "type": "option"
3305
+ },
3306
+ "dry-run": {
3307
+ "description": "Preview changes without writing files",
3308
+ "name": "dry-run",
3309
+ "allowNo": false,
3310
+ "type": "boolean"
3350
3311
  }
3351
3312
  },
3352
3313
  "hasDynamicHelp": false,
3353
3314
  "hiddenAliases": [],
3354
- "id": "logs:list",
3315
+ "id": "integrate:gemini-cli",
3355
3316
  "pluginAlias": "@respan/cli",
3356
3317
  "pluginName": "@respan/cli",
3357
3318
  "pluginType": "core",
@@ -3361,14 +3322,20 @@
3361
3322
  "relativePath": [
3362
3323
  "dist",
3363
3324
  "commands",
3364
- "logs",
3365
- "list.js"
3325
+ "integrate",
3326
+ "gemini-cli.js"
3366
3327
  ]
3367
3328
  },
3368
- "logs:summary": {
3329
+ "integrate:opencode": {
3369
3330
  "aliases": [],
3370
3331
  "args": {},
3371
- "description": "Get aggregated summary statistics for log spans in a time range.\n\nReturns total cost, total tokens, request count, and score summaries.\n\nFILTER SYNTAX: field:operator:value\n\nOPERATORS:\n (empty) Exact match model::gpt-4\n not Not equal status_code:not:200\n gt Greater than cost:gt:0.01\n gte Greater than/equal latency:gte:1.0\n lt Less than cost:lt:0.5\n lte Less than/equal prompt_tokens:lte:100\n contains Contains substring error_message:contains:timeout\n icontains Case-insensitive model:icontains:gpt\n startswith Starts with model:startswith:gpt\n endswith Ends with model:endswith:mini\n in Value in list model:in:gpt-4,gpt-4o\n isnull Is null error_message:isnull:true\n iexact Case-insens. exact status:iexact:success\n\nFILTERABLE FIELDS (logs):\n model, status_code, status, cost, latency, prompt_tokens,\n completion_tokens, customer_identifier, custom_identifier,\n thread_identifier, trace_unique_id, span_name, span_workflow_name,\n environment, log_type, error_message, failed, provider_id,\n deployment_name, prompt_name, prompt_id, unique_id, stream,\n temperature, max_tokens, tokens_per_second, time_to_first_token,\n total_request_tokens, metadata__<key>, scores__<evaluator_id>\n\nEXAMPLES:\n --filter model::gpt-4o --filter cost:gt:0.01\n --filter status_code:not:200\n --filter metadata__env::production\n --filter model:in:gpt-4,gpt-4o",
3332
+ "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.",
3333
+ "examples": [
3334
+ "respan integrate opencode",
3335
+ "respan integrate opencode --global",
3336
+ "respan integrate opencode --project-id my-project --attrs '{\"env\":\"prod\"}'",
3337
+ "respan integrate opencode --dry-run"
3338
+ ],
3372
3339
  "flags": {
3373
3340
  "api-key": {
3374
3341
  "description": "API key (env: RESPAN_API_KEY)",
@@ -3404,47 +3371,80 @@
3404
3371
  "allowNo": false,
3405
3372
  "type": "boolean"
3406
3373
  },
3407
- "start-time": {
3408
- "description": "Start time (ISO 8601)",
3409
- "name": "start-time",
3410
- "required": true,
3374
+ "local": {
3375
+ "description": "Write per-project config (default)",
3376
+ "exclusive": [
3377
+ "global"
3378
+ ],
3379
+ "name": "local",
3380
+ "allowNo": false,
3381
+ "type": "boolean"
3382
+ },
3383
+ "global": {
3384
+ "description": "Write user-level global config",
3385
+ "exclusive": [
3386
+ "local"
3387
+ ],
3388
+ "name": "global",
3389
+ "allowNo": false,
3390
+ "type": "boolean"
3391
+ },
3392
+ "project-id": {
3393
+ "description": "Respan project ID (added to metadata / resource attributes)",
3394
+ "env": "RESPAN_PROJECT_ID",
3395
+ "name": "project-id",
3411
3396
  "hasDynamicHelp": false,
3412
3397
  "multiple": false,
3413
3398
  "type": "option"
3414
3399
  },
3415
- "end-time": {
3416
- "description": "End time (ISO 8601)",
3417
- "name": "end-time",
3418
- "required": true,
3400
+ "base-url": {
3401
+ "description": "Respan API base URL (for enterprise deployments)",
3402
+ "name": "base-url",
3403
+ "default": "https://api.respan.ai/api",
3419
3404
  "hasDynamicHelp": false,
3420
3405
  "multiple": false,
3421
3406
  "type": "option"
3422
3407
  },
3423
- "filter": {
3424
- "description": "Filter in field:operator:value format (repeatable)",
3425
- "name": "filter",
3408
+ "attrs": {
3409
+ "description": "Custom attributes JSON (e.g. '{\"env\":\"prod\"}')",
3410
+ "name": "attrs",
3411
+ "default": "{}",
3426
3412
  "hasDynamicHelp": false,
3427
- "multiple": true,
3413
+ "multiple": false,
3428
3414
  "type": "option"
3429
3415
  },
3430
- "all-envs": {
3431
- "description": "Include all environments (true/false)",
3432
- "name": "all-envs",
3416
+ "customer-id": {
3417
+ "description": "Customer/user identifier for traces (e.g. your name or email)",
3418
+ "env": "RESPAN_CUSTOMER_ID",
3419
+ "name": "customer-id",
3433
3420
  "hasDynamicHelp": false,
3434
3421
  "multiple": false,
3435
3422
  "type": "option"
3436
3423
  },
3437
- "is-test": {
3438
- "description": "Filter by test (true) or production (false) environment",
3439
- "name": "is-test",
3424
+ "span-name": {
3425
+ "description": "Root span name for traces (default: claude-code)",
3426
+ "name": "span-name",
3440
3427
  "hasDynamicHelp": false,
3441
3428
  "multiple": false,
3442
3429
  "type": "option"
3430
+ },
3431
+ "workflow-name": {
3432
+ "description": "Workflow name for traces (default: claude-code)",
3433
+ "name": "workflow-name",
3434
+ "hasDynamicHelp": false,
3435
+ "multiple": false,
3436
+ "type": "option"
3437
+ },
3438
+ "dry-run": {
3439
+ "description": "Preview changes without writing files",
3440
+ "name": "dry-run",
3441
+ "allowNo": false,
3442
+ "type": "boolean"
3443
3443
  }
3444
3444
  },
3445
3445
  "hasDynamicHelp": false,
3446
3446
  "hiddenAliases": [],
3447
- "id": "logs:summary",
3447
+ "id": "integrate:opencode",
3448
3448
  "pluginAlias": "@respan/cli",
3449
3449
  "pluginName": "@respan/cli",
3450
3450
  "pluginType": "core",
@@ -3454,10 +3454,10 @@
3454
3454
  "relativePath": [
3455
3455
  "dist",
3456
3456
  "commands",
3457
- "logs",
3458
- "summary.js"
3457
+ "integrate",
3458
+ "opencode.js"
3459
3459
  ]
3460
3460
  }
3461
3461
  },
3462
- "version": "0.6.3"
3462
+ "version": "0.6.5"
3463
3463
  }