@respan/cli 0.6.0 → 0.6.2

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,10 +428,16 @@
428
428
  "set.js"
429
429
  ]
430
430
  },
431
- "evaluators:create": {
431
+ "datasets:add-spans": {
432
432
  "aliases": [],
433
- "args": {},
434
- "description": "Create a new evaluator",
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",
435
441
  "flags": {
436
442
  "api-key": {
437
443
  "description": "API key (env: RESPAN_API_KEY)",
@@ -467,39 +473,18 @@
467
473
  "allowNo": false,
468
474
  "type": "boolean"
469
475
  },
470
- "name": {
471
- "description": "Evaluator name",
472
- "name": "name",
476
+ "span-ids": {
477
+ "description": "Comma-separated span IDs",
478
+ "name": "span-ids",
473
479
  "required": true,
474
480
  "hasDynamicHelp": false,
475
481
  "multiple": false,
476
482
  "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"
498
483
  }
499
484
  },
500
485
  "hasDynamicHelp": false,
501
486
  "hiddenAliases": [],
502
- "id": "evaluators:create",
487
+ "id": "datasets:add-spans",
503
488
  "pluginAlias": "@respan/cli",
504
489
  "pluginName": "@respan/cli",
505
490
  "pluginType": "core",
@@ -509,20 +494,20 @@
509
494
  "relativePath": [
510
495
  "dist",
511
496
  "commands",
512
- "evaluators",
513
- "create.js"
497
+ "datasets",
498
+ "add-spans.js"
514
499
  ]
515
500
  },
516
- "evaluators:get": {
501
+ "datasets:create-span": {
517
502
  "aliases": [],
518
503
  "args": {
519
- "id": {
520
- "description": "Evaluator ID",
521
- "name": "id",
504
+ "dataset-id": {
505
+ "description": "Dataset ID",
506
+ "name": "dataset-id",
522
507
  "required": true
523
508
  }
524
509
  },
525
- "description": "Get a specific evaluator",
510
+ "description": "Create a span in a dataset",
526
511
  "flags": {
527
512
  "api-key": {
528
513
  "description": "API key (env: RESPAN_API_KEY)",
@@ -557,11 +542,19 @@
557
542
  "name": "verbose",
558
543
  "allowNo": false,
559
544
  "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"
560
553
  }
561
554
  },
562
555
  "hasDynamicHelp": false,
563
556
  "hiddenAliases": [],
564
- "id": "evaluators:get",
557
+ "id": "datasets:create-span",
565
558
  "pluginAlias": "@respan/cli",
566
559
  "pluginName": "@respan/cli",
567
560
  "pluginType": "core",
@@ -571,14 +564,14 @@
571
564
  "relativePath": [
572
565
  "dist",
573
566
  "commands",
574
- "evaluators",
575
- "get.js"
567
+ "datasets",
568
+ "create-span.js"
576
569
  ]
577
570
  },
578
- "evaluators:list": {
571
+ "datasets:create": {
579
572
  "aliases": [],
580
573
  "args": {},
581
- "description": "List evaluators",
574
+ "description": "Create a new dataset",
582
575
  "flags": {
583
576
  "api-key": {
584
577
  "description": "API key (env: RESPAN_API_KEY)",
@@ -614,18 +607,17 @@
614
607
  "allowNo": false,
615
608
  "type": "boolean"
616
609
  },
617
- "limit": {
618
- "description": "Number of results per page",
619
- "name": "limit",
620
- "default": 20,
610
+ "name": {
611
+ "description": "Dataset name",
612
+ "name": "name",
613
+ "required": true,
621
614
  "hasDynamicHelp": false,
622
615
  "multiple": false,
623
616
  "type": "option"
624
617
  },
625
- "page": {
626
- "description": "Page number",
627
- "name": "page",
628
- "default": 1,
618
+ "description": {
619
+ "description": "Dataset description",
620
+ "name": "description",
629
621
  "hasDynamicHelp": false,
630
622
  "multiple": false,
631
623
  "type": "option"
@@ -633,7 +625,7 @@
633
625
  },
634
626
  "hasDynamicHelp": false,
635
627
  "hiddenAliases": [],
636
- "id": "evaluators:list",
628
+ "id": "datasets:create",
637
629
  "pluginAlias": "@respan/cli",
638
630
  "pluginName": "@respan/cli",
639
631
  "pluginType": "core",
@@ -643,20 +635,25 @@
643
635
  "relativePath": [
644
636
  "dist",
645
637
  "commands",
646
- "evaluators",
647
- "list.js"
638
+ "datasets",
639
+ "create.js"
648
640
  ]
649
641
  },
650
- "evaluators:run": {
642
+ "datasets:get-span": {
651
643
  "aliases": [],
652
644
  "args": {
653
- "id": {
654
- "description": "Evaluator ID",
655
- "name": "id",
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",
656
653
  "required": true
657
654
  }
658
655
  },
659
- "description": "Run an evaluator",
656
+ "description": "Get a specific span from a dataset",
660
657
  "flags": {
661
658
  "api-key": {
662
659
  "description": "API key (env: RESPAN_API_KEY)",
@@ -691,32 +688,11 @@
691
688
  "name": "verbose",
692
689
  "allowNo": false,
693
690
  "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"
715
691
  }
716
692
  },
717
693
  "hasDynamicHelp": false,
718
694
  "hiddenAliases": [],
719
- "id": "evaluators:run",
695
+ "id": "datasets:get-span",
720
696
  "pluginAlias": "@respan/cli",
721
697
  "pluginName": "@respan/cli",
722
698
  "pluginType": "core",
@@ -726,20 +702,20 @@
726
702
  "relativePath": [
727
703
  "dist",
728
704
  "commands",
729
- "evaluators",
730
- "run.js"
705
+ "datasets",
706
+ "get-span.js"
731
707
  ]
732
708
  },
733
- "evaluators:update": {
709
+ "datasets:get": {
734
710
  "aliases": [],
735
711
  "args": {
736
712
  "id": {
737
- "description": "Evaluator ID",
713
+ "description": "Dataset ID",
738
714
  "name": "id",
739
715
  "required": true
740
716
  }
741
717
  },
742
- "description": "Update an evaluator",
718
+ "description": "Get a specific dataset",
743
719
  "flags": {
744
720
  "api-key": {
745
721
  "description": "API key (env: RESPAN_API_KEY)",
@@ -774,32 +750,11 @@
774
750
  "name": "verbose",
775
751
  "allowNo": false,
776
752
  "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"
798
753
  }
799
754
  },
800
755
  "hasDynamicHelp": false,
801
756
  "hiddenAliases": [],
802
- "id": "evaluators:update",
757
+ "id": "datasets:get",
803
758
  "pluginAlias": "@respan/cli",
804
759
  "pluginName": "@respan/cli",
805
760
  "pluginType": "core",
@@ -809,20 +764,14 @@
809
764
  "relativePath": [
810
765
  "dist",
811
766
  "commands",
812
- "evaluators",
813
- "update.js"
767
+ "datasets",
768
+ "get.js"
814
769
  ]
815
770
  },
816
- "datasets:add-spans": {
771
+ "datasets:list": {
817
772
  "aliases": [],
818
- "args": {
819
- "dataset-id": {
820
- "description": "Dataset ID",
821
- "name": "dataset-id",
822
- "required": true
823
- }
824
- },
825
- "description": "Add existing spans to a dataset",
773
+ "args": {},
774
+ "description": "List datasets",
826
775
  "flags": {
827
776
  "api-key": {
828
777
  "description": "API key (env: RESPAN_API_KEY)",
@@ -858,10 +807,18 @@
858
807
  "allowNo": false,
859
808
  "type": "boolean"
860
809
  },
861
- "span-ids": {
862
- "description": "Comma-separated span IDs",
863
- "name": "span-ids",
864
- "required": true,
810
+ "limit": {
811
+ "description": "Number of results per page",
812
+ "name": "limit",
813
+ "default": 50,
814
+ "hasDynamicHelp": false,
815
+ "multiple": false,
816
+ "type": "option"
817
+ },
818
+ "page": {
819
+ "description": "Page number",
820
+ "name": "page",
821
+ "default": 1,
865
822
  "hasDynamicHelp": false,
866
823
  "multiple": false,
867
824
  "type": "option"
@@ -869,7 +826,7 @@
869
826
  },
870
827
  "hasDynamicHelp": false,
871
828
  "hiddenAliases": [],
872
- "id": "datasets:add-spans",
829
+ "id": "datasets:list",
873
830
  "pluginAlias": "@respan/cli",
874
831
  "pluginName": "@respan/cli",
875
832
  "pluginType": "core",
@@ -880,10 +837,10 @@
880
837
  "dist",
881
838
  "commands",
882
839
  "datasets",
883
- "add-spans.js"
840
+ "list.js"
884
841
  ]
885
842
  },
886
- "datasets:create-span": {
843
+ "datasets:spans": {
887
844
  "aliases": [],
888
845
  "args": {
889
846
  "dataset-id": {
@@ -892,7 +849,7 @@
892
849
  "required": true
893
850
  }
894
851
  },
895
- "description": "Create a span in a dataset",
852
+ "description": "List spans in a dataset",
896
853
  "flags": {
897
854
  "api-key": {
898
855
  "description": "API key (env: RESPAN_API_KEY)",
@@ -927,19 +884,11 @@
927
884
  "name": "verbose",
928
885
  "allowNo": false,
929
886
  "type": "boolean"
930
- },
931
- "body": {
932
- "description": "Span body as JSON string",
933
- "name": "body",
934
- "required": true,
935
- "hasDynamicHelp": false,
936
- "multiple": false,
937
- "type": "option"
938
887
  }
939
888
  },
940
889
  "hasDynamicHelp": false,
941
890
  "hiddenAliases": [],
942
- "id": "datasets:create-span",
891
+ "id": "datasets:spans",
943
892
  "pluginAlias": "@respan/cli",
944
893
  "pluginName": "@respan/cli",
945
894
  "pluginType": "core",
@@ -950,13 +899,19 @@
950
899
  "dist",
951
900
  "commands",
952
901
  "datasets",
953
- "create-span.js"
902
+ "spans.js"
954
903
  ]
955
904
  },
956
- "datasets:create": {
905
+ "datasets:update": {
957
906
  "aliases": [],
958
- "args": {},
959
- "description": "Create a new dataset",
907
+ "args": {
908
+ "id": {
909
+ "description": "Dataset ID",
910
+ "name": "id",
911
+ "required": true
912
+ }
913
+ },
914
+ "description": "Update a dataset",
960
915
  "flags": {
961
916
  "api-key": {
962
917
  "description": "API key (env: RESPAN_API_KEY)",
@@ -995,7 +950,6 @@
995
950
  "name": {
996
951
  "description": "Dataset name",
997
952
  "name": "name",
998
- "required": true,
999
953
  "hasDynamicHelp": false,
1000
954
  "multiple": false,
1001
955
  "type": "option"
@@ -1010,7 +964,7 @@
1010
964
  },
1011
965
  "hasDynamicHelp": false,
1012
966
  "hiddenAliases": [],
1013
- "id": "datasets:create",
967
+ "id": "datasets:update",
1014
968
  "pluginAlias": "@respan/cli",
1015
969
  "pluginName": "@respan/cli",
1016
970
  "pluginType": "core",
@@ -1021,24 +975,13 @@
1021
975
  "dist",
1022
976
  "commands",
1023
977
  "datasets",
1024
- "create.js"
978
+ "update.js"
1025
979
  ]
1026
980
  },
1027
- "datasets:get-span": {
981
+ "evaluators:create": {
1028
982
  "aliases": [],
1029
- "args": {
1030
- "dataset-id": {
1031
- "description": "Dataset ID",
1032
- "name": "dataset-id",
1033
- "required": true
1034
- },
1035
- "span-id": {
1036
- "description": "Span ID",
1037
- "name": "span-id",
1038
- "required": true
1039
- }
1040
- },
1041
- "description": "Get a specific span from a dataset",
983
+ "args": {},
984
+ "description": "Create a new evaluator",
1042
985
  "flags": {
1043
986
  "api-key": {
1044
987
  "description": "API key (env: RESPAN_API_KEY)",
@@ -1073,11 +1016,40 @@
1073
1016
  "name": "verbose",
1074
1017
  "allowNo": false,
1075
1018
  "type": "boolean"
1076
- }
1077
- },
1078
- "hasDynamicHelp": false,
1079
- "hiddenAliases": [],
1080
- "id": "datasets:get-span",
1019
+ },
1020
+ "name": {
1021
+ "description": "Evaluator name",
1022
+ "name": "name",
1023
+ "required": true,
1024
+ "hasDynamicHelp": false,
1025
+ "multiple": false,
1026
+ "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
+ }
1049
+ },
1050
+ "hasDynamicHelp": false,
1051
+ "hiddenAliases": [],
1052
+ "id": "evaluators:create",
1081
1053
  "pluginAlias": "@respan/cli",
1082
1054
  "pluginName": "@respan/cli",
1083
1055
  "pluginType": "core",
@@ -1087,20 +1059,20 @@
1087
1059
  "relativePath": [
1088
1060
  "dist",
1089
1061
  "commands",
1090
- "datasets",
1091
- "get-span.js"
1062
+ "evaluators",
1063
+ "create.js"
1092
1064
  ]
1093
1065
  },
1094
- "datasets:get": {
1066
+ "evaluators:get": {
1095
1067
  "aliases": [],
1096
1068
  "args": {
1097
1069
  "id": {
1098
- "description": "Dataset ID",
1070
+ "description": "Evaluator ID",
1099
1071
  "name": "id",
1100
1072
  "required": true
1101
1073
  }
1102
1074
  },
1103
- "description": "Get a specific dataset",
1075
+ "description": "Get a specific evaluator",
1104
1076
  "flags": {
1105
1077
  "api-key": {
1106
1078
  "description": "API key (env: RESPAN_API_KEY)",
@@ -1139,7 +1111,7 @@
1139
1111
  },
1140
1112
  "hasDynamicHelp": false,
1141
1113
  "hiddenAliases": [],
1142
- "id": "datasets:get",
1114
+ "id": "evaluators:get",
1143
1115
  "pluginAlias": "@respan/cli",
1144
1116
  "pluginName": "@respan/cli",
1145
1117
  "pluginType": "core",
@@ -1149,14 +1121,14 @@
1149
1121
  "relativePath": [
1150
1122
  "dist",
1151
1123
  "commands",
1152
- "datasets",
1124
+ "evaluators",
1153
1125
  "get.js"
1154
1126
  ]
1155
1127
  },
1156
- "datasets:list": {
1128
+ "evaluators:list": {
1157
1129
  "aliases": [],
1158
1130
  "args": {},
1159
- "description": "List datasets",
1131
+ "description": "List evaluators",
1160
1132
  "flags": {
1161
1133
  "api-key": {
1162
1134
  "description": "API key (env: RESPAN_API_KEY)",
@@ -1195,7 +1167,7 @@
1195
1167
  "limit": {
1196
1168
  "description": "Number of results per page",
1197
1169
  "name": "limit",
1198
- "default": 50,
1170
+ "default": 20,
1199
1171
  "hasDynamicHelp": false,
1200
1172
  "multiple": false,
1201
1173
  "type": "option"
@@ -1211,7 +1183,7 @@
1211
1183
  },
1212
1184
  "hasDynamicHelp": false,
1213
1185
  "hiddenAliases": [],
1214
- "id": "datasets:list",
1186
+ "id": "evaluators:list",
1215
1187
  "pluginAlias": "@respan/cli",
1216
1188
  "pluginName": "@respan/cli",
1217
1189
  "pluginType": "core",
@@ -1221,20 +1193,20 @@
1221
1193
  "relativePath": [
1222
1194
  "dist",
1223
1195
  "commands",
1224
- "datasets",
1196
+ "evaluators",
1225
1197
  "list.js"
1226
1198
  ]
1227
1199
  },
1228
- "datasets:spans": {
1200
+ "evaluators:run": {
1229
1201
  "aliases": [],
1230
1202
  "args": {
1231
- "dataset-id": {
1232
- "description": "Dataset ID",
1233
- "name": "dataset-id",
1203
+ "id": {
1204
+ "description": "Evaluator ID",
1205
+ "name": "id",
1234
1206
  "required": true
1235
1207
  }
1236
1208
  },
1237
- "description": "List spans in a dataset",
1209
+ "description": "Run an evaluator",
1238
1210
  "flags": {
1239
1211
  "api-key": {
1240
1212
  "description": "API key (env: RESPAN_API_KEY)",
@@ -1269,11 +1241,32 @@
1269
1241
  "name": "verbose",
1270
1242
  "allowNo": false,
1271
1243
  "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"
1272
1265
  }
1273
1266
  },
1274
1267
  "hasDynamicHelp": false,
1275
1268
  "hiddenAliases": [],
1276
- "id": "datasets:spans",
1269
+ "id": "evaluators:run",
1277
1270
  "pluginAlias": "@respan/cli",
1278
1271
  "pluginName": "@respan/cli",
1279
1272
  "pluginType": "core",
@@ -1283,20 +1276,20 @@
1283
1276
  "relativePath": [
1284
1277
  "dist",
1285
1278
  "commands",
1286
- "datasets",
1287
- "spans.js"
1279
+ "evaluators",
1280
+ "run.js"
1288
1281
  ]
1289
1282
  },
1290
- "datasets:update": {
1283
+ "evaluators:update": {
1291
1284
  "aliases": [],
1292
1285
  "args": {
1293
1286
  "id": {
1294
- "description": "Dataset ID",
1287
+ "description": "Evaluator ID",
1295
1288
  "name": "id",
1296
1289
  "required": true
1297
1290
  }
1298
1291
  },
1299
- "description": "Update a dataset",
1292
+ "description": "Update an evaluator",
1300
1293
  "flags": {
1301
1294
  "api-key": {
1302
1295
  "description": "API key (env: RESPAN_API_KEY)",
@@ -1333,23 +1326,30 @@
1333
1326
  "type": "boolean"
1334
1327
  },
1335
1328
  "name": {
1336
- "description": "Dataset name",
1329
+ "description": "Evaluator name",
1337
1330
  "name": "name",
1338
1331
  "hasDynamicHelp": false,
1339
1332
  "multiple": false,
1340
1333
  "type": "option"
1341
1334
  },
1342
1335
  "description": {
1343
- "description": "Dataset description",
1336
+ "description": "Evaluator description",
1344
1337
  "name": "description",
1345
1338
  "hasDynamicHelp": false,
1346
1339
  "multiple": false,
1347
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
1348
  }
1349
1349
  },
1350
1350
  "hasDynamicHelp": false,
1351
1351
  "hiddenAliases": [],
1352
- "id": "datasets:update",
1352
+ "id": "evaluators:update",
1353
1353
  "pluginAlias": "@respan/cli",
1354
1354
  "pluginName": "@respan/cli",
1355
1355
  "pluginType": "core",
@@ -1359,7 +1359,7 @@
1359
1359
  "relativePath": [
1360
1360
  "dist",
1361
1361
  "commands",
1362
- "datasets",
1362
+ "evaluators",
1363
1363
  "update.js"
1364
1364
  ]
1365
1365
  },
@@ -1583,10 +1583,17 @@
1583
1583
  "list.js"
1584
1584
  ]
1585
1585
  },
1586
- "logs:create": {
1586
+ "integrate:claude-code": {
1587
1587
  "aliases": [],
1588
1588
  "args": {},
1589
- "description": "Create a log span",
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
+ ],
1590
1597
  "flags": {
1591
1598
  "api-key": {
1592
1599
  "description": "API key (env: RESPAN_API_KEY)",
@@ -1622,101 +1629,80 @@
1622
1629
  "allowNo": false,
1623
1630
  "type": "boolean"
1624
1631
  },
1625
- "input": {
1626
- "description": "Input text or JSON",
1627
- "name": "input",
1628
- "required": true,
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",
1629
1654
  "hasDynamicHelp": false,
1630
1655
  "multiple": false,
1631
1656
  "type": "option"
1632
1657
  },
1633
- "output": {
1634
- "description": "Output text or JSON",
1635
- "name": "output",
1658
+ "base-url": {
1659
+ "description": "Respan API base URL (for enterprise deployments)",
1660
+ "name": "base-url",
1661
+ "default": "https://api.respan.ai/api",
1636
1662
  "hasDynamicHelp": false,
1637
1663
  "multiple": false,
1638
1664
  "type": "option"
1639
1665
  },
1640
- "model": {
1641
- "description": "Model name",
1642
- "name": "model",
1666
+ "attrs": {
1667
+ "description": "Custom attributes JSON (e.g. '{\"env\":\"prod\"}')",
1668
+ "name": "attrs",
1669
+ "default": "{}",
1643
1670
  "hasDynamicHelp": false,
1644
1671
  "multiple": false,
1645
1672
  "type": "option"
1646
1673
  },
1647
- "metadata": {
1648
- "description": "Metadata as JSON string",
1649
- "name": "metadata",
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",
1650
1678
  "hasDynamicHelp": false,
1651
1679
  "multiple": false,
1652
1680
  "type": "option"
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",
1681
+ },
1682
+ "span-name": {
1683
+ "description": "Root span name for traces (default: claude-code)",
1684
+ "name": "span-name",
1686
1685
  "hasDynamicHelp": false,
1687
1686
  "multiple": false,
1688
1687
  "type": "option"
1689
1688
  },
1690
- "profile": {
1691
- "description": "Named profile to use",
1692
- "name": "profile",
1689
+ "workflow-name": {
1690
+ "description": "Workflow name for traces (default: claude-code)",
1691
+ "name": "workflow-name",
1693
1692
  "hasDynamicHelp": false,
1694
1693
  "multiple": false,
1695
1694
  "type": "option"
1696
1695
  },
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",
1696
+ "dry-run": {
1697
+ "description": "Preview changes without writing files",
1698
+ "name": "dry-run",
1713
1699
  "allowNo": false,
1714
1700
  "type": "boolean"
1715
1701
  }
1716
1702
  },
1717
1703
  "hasDynamicHelp": false,
1718
1704
  "hiddenAliases": [],
1719
- "id": "logs:get",
1705
+ "id": "integrate:claude-code",
1720
1706
  "pluginAlias": "@respan/cli",
1721
1707
  "pluginName": "@respan/cli",
1722
1708
  "pluginType": "core",
@@ -1726,14 +1712,21 @@
1726
1712
  "relativePath": [
1727
1713
  "dist",
1728
1714
  "commands",
1729
- "logs",
1730
- "get.js"
1715
+ "integrate",
1716
+ "claude-code.js"
1731
1717
  ]
1732
1718
  },
1733
- "logs:list": {
1719
+ "integrate:codex-cli": {
1734
1720
  "aliases": [],
1735
1721
  "args": {},
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",
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
+ ],
1737
1730
  "flags": {
1738
1731
  "api-key": {
1739
1732
  "description": "API key (env: RESPAN_API_KEY)",
@@ -1769,75 +1762,80 @@
1769
1762
  "allowNo": false,
1770
1763
  "type": "boolean"
1771
1764
  },
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"
1765
+ "local": {
1766
+ "description": "Write per-project config (default)",
1767
+ "exclusive": [
1768
+ "global"
1769
+ ],
1770
+ "name": "local",
1771
+ "allowNo": false,
1772
+ "type": "boolean"
1779
1773
  },
1780
- "page": {
1781
- "description": "Page number",
1782
- "name": "page",
1783
- "default": 1,
1784
- "hasDynamicHelp": false,
1785
- "multiple": false,
1786
- "type": "option"
1774
+ "global": {
1775
+ "description": "Write user-level global config",
1776
+ "exclusive": [
1777
+ "local"
1778
+ ],
1779
+ "name": "global",
1780
+ "allowNo": false,
1781
+ "type": "boolean"
1787
1782
  },
1788
- "sort-by": {
1789
- "description": "Sort field (prefix with - for descending, e.g. -cost, -latency)",
1790
- "name": "sort-by",
1783
+ "project-id": {
1784
+ "description": "Respan project ID (added to metadata / resource attributes)",
1785
+ "env": "RESPAN_PROJECT_ID",
1786
+ "name": "project-id",
1791
1787
  "hasDynamicHelp": false,
1792
1788
  "multiple": false,
1793
1789
  "type": "option"
1794
1790
  },
1795
- "start-time": {
1796
- "description": "Start time filter (ISO 8601)",
1797
- "name": "start-time",
1791
+ "base-url": {
1792
+ "description": "Respan API base URL (for enterprise deployments)",
1793
+ "name": "base-url",
1794
+ "default": "https://api.respan.ai/api",
1798
1795
  "hasDynamicHelp": false,
1799
1796
  "multiple": false,
1800
1797
  "type": "option"
1801
1798
  },
1802
- "end-time": {
1803
- "description": "End time filter (ISO 8601)",
1804
- "name": "end-time",
1799
+ "attrs": {
1800
+ "description": "Custom attributes JSON (e.g. '{\"env\":\"prod\"}')",
1801
+ "name": "attrs",
1802
+ "default": "{}",
1805
1803
  "hasDynamicHelp": false,
1806
1804
  "multiple": false,
1807
1805
  "type": "option"
1808
1806
  },
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",
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",
1819
1811
  "hasDynamicHelp": false,
1820
1812
  "multiple": false,
1821
1813
  "type": "option"
1822
1814
  },
1823
- "is-test": {
1824
- "description": "Filter by test (true) or production (false) environment",
1825
- "name": "is-test",
1815
+ "span-name": {
1816
+ "description": "Root span name for traces (default: claude-code)",
1817
+ "name": "span-name",
1826
1818
  "hasDynamicHelp": false,
1827
1819
  "multiple": false,
1828
1820
  "type": "option"
1829
1821
  },
1830
- "include-fields": {
1831
- "description": "Comma-separated fields to include in response",
1832
- "name": "include-fields",
1822
+ "workflow-name": {
1823
+ "description": "Workflow name for traces (default: claude-code)",
1824
+ "name": "workflow-name",
1833
1825
  "hasDynamicHelp": false,
1834
1826
  "multiple": false,
1835
1827
  "type": "option"
1828
+ },
1829
+ "dry-run": {
1830
+ "description": "Preview changes without writing files",
1831
+ "name": "dry-run",
1832
+ "allowNo": false,
1833
+ "type": "boolean"
1836
1834
  }
1837
1835
  },
1838
1836
  "hasDynamicHelp": false,
1839
1837
  "hiddenAliases": [],
1840
- "id": "logs:list",
1838
+ "id": "integrate:codex-cli",
1841
1839
  "pluginAlias": "@respan/cli",
1842
1840
  "pluginName": "@respan/cli",
1843
1841
  "pluginType": "core",
@@ -1847,14 +1845,20 @@
1847
1845
  "relativePath": [
1848
1846
  "dist",
1849
1847
  "commands",
1850
- "logs",
1851
- "list.js"
1848
+ "integrate",
1849
+ "codex-cli.js"
1852
1850
  ]
1853
1851
  },
1854
- "logs:summary": {
1852
+ "integrate:gemini-cli": {
1855
1853
  "aliases": [],
1856
1854
  "args": {},
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",
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
+ ],
1858
1862
  "flags": {
1859
1863
  "api-key": {
1860
1864
  "description": "API key (env: RESPAN_API_KEY)",
@@ -1890,47 +1894,80 @@
1890
1894
  "allowNo": false,
1891
1895
  "type": "boolean"
1892
1896
  },
1893
- "start-time": {
1894
- "description": "Start time (ISO 8601)",
1895
- "name": "start-time",
1896
- "required": true,
1897
+ "local": {
1898
+ "description": "Write per-project config (default)",
1899
+ "exclusive": [
1900
+ "global"
1901
+ ],
1902
+ "name": "local",
1903
+ "allowNo": false,
1904
+ "type": "boolean"
1905
+ },
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",
1897
1919
  "hasDynamicHelp": false,
1898
1920
  "multiple": false,
1899
1921
  "type": "option"
1900
1922
  },
1901
- "end-time": {
1902
- "description": "End time (ISO 8601)",
1903
- "name": "end-time",
1904
- "required": true,
1923
+ "base-url": {
1924
+ "description": "Respan API base URL (for enterprise deployments)",
1925
+ "name": "base-url",
1926
+ "default": "https://api.respan.ai/api",
1905
1927
  "hasDynamicHelp": false,
1906
1928
  "multiple": false,
1907
1929
  "type": "option"
1908
1930
  },
1909
- "filter": {
1910
- "description": "Filter in field:operator:value format (repeatable)",
1911
- "name": "filter",
1931
+ "attrs": {
1932
+ "description": "Custom attributes JSON (e.g. '{\"env\":\"prod\"}')",
1933
+ "name": "attrs",
1934
+ "default": "{}",
1912
1935
  "hasDynamicHelp": false,
1913
- "multiple": true,
1936
+ "multiple": false,
1914
1937
  "type": "option"
1915
1938
  },
1916
- "all-envs": {
1917
- "description": "Include all environments (true/false)",
1918
- "name": "all-envs",
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",
1919
1943
  "hasDynamicHelp": false,
1920
1944
  "multiple": false,
1921
1945
  "type": "option"
1922
1946
  },
1923
- "is-test": {
1924
- "description": "Filter by test (true) or production (false) environment",
1925
- "name": "is-test",
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",
1926
1957
  "hasDynamicHelp": false,
1927
1958
  "multiple": false,
1928
1959
  "type": "option"
1960
+ },
1961
+ "dry-run": {
1962
+ "description": "Preview changes without writing files",
1963
+ "name": "dry-run",
1964
+ "allowNo": false,
1965
+ "type": "boolean"
1929
1966
  }
1930
1967
  },
1931
1968
  "hasDynamicHelp": false,
1932
1969
  "hiddenAliases": [],
1933
- "id": "logs:summary",
1970
+ "id": "integrate:gemini-cli",
1934
1971
  "pluginAlias": "@respan/cli",
1935
1972
  "pluginName": "@respan/cli",
1936
1973
  "pluginType": "core",
@@ -1940,20 +1977,20 @@
1940
1977
  "relativePath": [
1941
1978
  "dist",
1942
1979
  "commands",
1943
- "logs",
1944
- "summary.js"
1980
+ "integrate",
1981
+ "gemini-cli.js"
1945
1982
  ]
1946
1983
  },
1947
- "prompts:create-version": {
1984
+ "integrate:opencode": {
1948
1985
  "aliases": [],
1949
- "args": {
1950
- "prompt-id": {
1951
- "description": "Prompt ID",
1952
- "name": "prompt-id",
1953
- "required": true
1954
- }
1955
- },
1956
- "description": "Create a new version of a prompt",
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
+ ],
1957
1994
  "flags": {
1958
1995
  "api-key": {
1959
1996
  "description": "API key (env: RESPAN_API_KEY)",
@@ -1989,39 +2026,80 @@
1989
2026
  "allowNo": false,
1990
2027
  "type": "boolean"
1991
2028
  },
1992
- "messages": {
1993
- "description": "Messages as JSON array string",
1994
- "name": "messages",
1995
- "required": true,
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",
1996
2051
  "hasDynamicHelp": false,
1997
2052
  "multiple": false,
1998
2053
  "type": "option"
1999
2054
  },
2000
- "model": {
2001
- "description": "Model name",
2002
- "name": "model",
2055
+ "base-url": {
2056
+ "description": "Respan API base URL (for enterprise deployments)",
2057
+ "name": "base-url",
2058
+ "default": "https://api.respan.ai/api",
2003
2059
  "hasDynamicHelp": false,
2004
2060
  "multiple": false,
2005
2061
  "type": "option"
2006
2062
  },
2007
- "temperature": {
2008
- "description": "Temperature value",
2009
- "name": "temperature",
2063
+ "attrs": {
2064
+ "description": "Custom attributes JSON (e.g. '{\"env\":\"prod\"}')",
2065
+ "name": "attrs",
2066
+ "default": "{}",
2010
2067
  "hasDynamicHelp": false,
2011
2068
  "multiple": false,
2012
2069
  "type": "option"
2013
2070
  },
2014
- "max-tokens": {
2015
- "description": "Max tokens",
2016
- "name": "max-tokens",
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",
2017
2075
  "hasDynamicHelp": false,
2018
2076
  "multiple": false,
2019
2077
  "type": "option"
2078
+ },
2079
+ "span-name": {
2080
+ "description": "Root span name for traces (default: claude-code)",
2081
+ "name": "span-name",
2082
+ "hasDynamicHelp": false,
2083
+ "multiple": false,
2084
+ "type": "option"
2085
+ },
2086
+ "workflow-name": {
2087
+ "description": "Workflow name for traces (default: claude-code)",
2088
+ "name": "workflow-name",
2089
+ "hasDynamicHelp": false,
2090
+ "multiple": false,
2091
+ "type": "option"
2092
+ },
2093
+ "dry-run": {
2094
+ "description": "Preview changes without writing files",
2095
+ "name": "dry-run",
2096
+ "allowNo": false,
2097
+ "type": "boolean"
2020
2098
  }
2021
2099
  },
2022
2100
  "hasDynamicHelp": false,
2023
2101
  "hiddenAliases": [],
2024
- "id": "prompts:create-version",
2102
+ "id": "integrate:opencode",
2025
2103
  "pluginAlias": "@respan/cli",
2026
2104
  "pluginName": "@respan/cli",
2027
2105
  "pluginType": "core",
@@ -2031,14 +2109,14 @@
2031
2109
  "relativePath": [
2032
2110
  "dist",
2033
2111
  "commands",
2034
- "prompts",
2035
- "create-version.js"
2112
+ "integrate",
2113
+ "opencode.js"
2036
2114
  ]
2037
2115
  },
2038
- "prompts:create": {
2116
+ "logs:create": {
2039
2117
  "aliases": [],
2040
2118
  "args": {},
2041
- "description": "Create a new prompt",
2119
+ "description": "Create a log span",
2042
2120
  "flags": {
2043
2121
  "api-key": {
2044
2122
  "description": "API key (env: RESPAN_API_KEY)",
@@ -2074,17 +2152,31 @@
2074
2152
  "allowNo": false,
2075
2153
  "type": "boolean"
2076
2154
  },
2077
- "name": {
2078
- "description": "Prompt name",
2079
- "name": "name",
2155
+ "input": {
2156
+ "description": "Input text or JSON",
2157
+ "name": "input",
2080
2158
  "required": true,
2081
2159
  "hasDynamicHelp": false,
2082
2160
  "multiple": false,
2083
2161
  "type": "option"
2084
2162
  },
2085
- "description": {
2086
- "description": "Prompt description",
2087
- "name": "description",
2163
+ "output": {
2164
+ "description": "Output text or JSON",
2165
+ "name": "output",
2166
+ "hasDynamicHelp": false,
2167
+ "multiple": false,
2168
+ "type": "option"
2169
+ },
2170
+ "model": {
2171
+ "description": "Model name",
2172
+ "name": "model",
2173
+ "hasDynamicHelp": false,
2174
+ "multiple": false,
2175
+ "type": "option"
2176
+ },
2177
+ "metadata": {
2178
+ "description": "Metadata as JSON string",
2179
+ "name": "metadata",
2088
2180
  "hasDynamicHelp": false,
2089
2181
  "multiple": false,
2090
2182
  "type": "option"
@@ -2092,7 +2184,7 @@
2092
2184
  },
2093
2185
  "hasDynamicHelp": false,
2094
2186
  "hiddenAliases": [],
2095
- "id": "prompts:create",
2187
+ "id": "logs:create",
2096
2188
  "pluginAlias": "@respan/cli",
2097
2189
  "pluginName": "@respan/cli",
2098
2190
  "pluginType": "core",
@@ -2102,20 +2194,76 @@
2102
2194
  "relativePath": [
2103
2195
  "dist",
2104
2196
  "commands",
2105
- "prompts",
2197
+ "logs",
2106
2198
  "create.js"
2107
2199
  ]
2108
2200
  },
2109
- "prompts:get": {
2201
+ "logs:get": {
2110
2202
  "aliases": [],
2111
2203
  "args": {
2112
2204
  "id": {
2113
- "description": "Prompt ID",
2205
+ "description": "Span ID",
2114
2206
  "name": "id",
2115
2207
  "required": true
2116
2208
  }
2117
2209
  },
2118
- "description": "Get a specific prompt",
2210
+ "description": "Get a specific log span",
2211
+ "flags": {
2212
+ "api-key": {
2213
+ "description": "API key (env: RESPAN_API_KEY)",
2214
+ "env": "RESPAN_API_KEY",
2215
+ "name": "api-key",
2216
+ "hasDynamicHelp": false,
2217
+ "multiple": false,
2218
+ "type": "option"
2219
+ },
2220
+ "profile": {
2221
+ "description": "Named profile to use",
2222
+ "name": "profile",
2223
+ "hasDynamicHelp": false,
2224
+ "multiple": false,
2225
+ "type": "option"
2226
+ },
2227
+ "json": {
2228
+ "description": "Output as JSON",
2229
+ "name": "json",
2230
+ "allowNo": false,
2231
+ "type": "boolean"
2232
+ },
2233
+ "csv": {
2234
+ "description": "Output as CSV",
2235
+ "name": "csv",
2236
+ "allowNo": false,
2237
+ "type": "boolean"
2238
+ },
2239
+ "verbose": {
2240
+ "char": "v",
2241
+ "description": "Show verbose output",
2242
+ "name": "verbose",
2243
+ "allowNo": false,
2244
+ "type": "boolean"
2245
+ }
2246
+ },
2247
+ "hasDynamicHelp": false,
2248
+ "hiddenAliases": [],
2249
+ "id": "logs:get",
2250
+ "pluginAlias": "@respan/cli",
2251
+ "pluginName": "@respan/cli",
2252
+ "pluginType": "core",
2253
+ "strict": true,
2254
+ "enableJsonFlag": false,
2255
+ "isESM": true,
2256
+ "relativePath": [
2257
+ "dist",
2258
+ "commands",
2259
+ "logs",
2260
+ "get.js"
2261
+ ]
2262
+ },
2263
+ "logs:list": {
2264
+ "aliases": [],
2265
+ "args": {},
2266
+ "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",
2119
2267
  "flags": {
2120
2268
  "api-key": {
2121
2269
  "description": "API key (env: RESPAN_API_KEY)",
@@ -2150,11 +2298,76 @@
2150
2298
  "name": "verbose",
2151
2299
  "allowNo": false,
2152
2300
  "type": "boolean"
2301
+ },
2302
+ "limit": {
2303
+ "description": "Number of results per page (max 1000)",
2304
+ "name": "limit",
2305
+ "default": 50,
2306
+ "hasDynamicHelp": false,
2307
+ "multiple": false,
2308
+ "type": "option"
2309
+ },
2310
+ "page": {
2311
+ "description": "Page number",
2312
+ "name": "page",
2313
+ "default": 1,
2314
+ "hasDynamicHelp": false,
2315
+ "multiple": false,
2316
+ "type": "option"
2317
+ },
2318
+ "sort-by": {
2319
+ "description": "Sort field (prefix with - for descending, e.g. -cost, -latency)",
2320
+ "name": "sort-by",
2321
+ "hasDynamicHelp": false,
2322
+ "multiple": false,
2323
+ "type": "option"
2324
+ },
2325
+ "start-time": {
2326
+ "description": "Start time filter (ISO 8601)",
2327
+ "name": "start-time",
2328
+ "hasDynamicHelp": false,
2329
+ "multiple": false,
2330
+ "type": "option"
2331
+ },
2332
+ "end-time": {
2333
+ "description": "End time filter (ISO 8601)",
2334
+ "name": "end-time",
2335
+ "hasDynamicHelp": false,
2336
+ "multiple": false,
2337
+ "type": "option"
2338
+ },
2339
+ "filter": {
2340
+ "description": "Filter in field:operator:value format (repeatable)",
2341
+ "name": "filter",
2342
+ "hasDynamicHelp": false,
2343
+ "multiple": true,
2344
+ "type": "option"
2345
+ },
2346
+ "all-envs": {
2347
+ "description": "Include all environments (true/false)",
2348
+ "name": "all-envs",
2349
+ "hasDynamicHelp": false,
2350
+ "multiple": false,
2351
+ "type": "option"
2352
+ },
2353
+ "is-test": {
2354
+ "description": "Filter by test (true) or production (false) environment",
2355
+ "name": "is-test",
2356
+ "hasDynamicHelp": false,
2357
+ "multiple": false,
2358
+ "type": "option"
2359
+ },
2360
+ "include-fields": {
2361
+ "description": "Comma-separated fields to include in response",
2362
+ "name": "include-fields",
2363
+ "hasDynamicHelp": false,
2364
+ "multiple": false,
2365
+ "type": "option"
2153
2366
  }
2154
2367
  },
2155
2368
  "hasDynamicHelp": false,
2156
2369
  "hiddenAliases": [],
2157
- "id": "prompts:get",
2370
+ "id": "logs:list",
2158
2371
  "pluginAlias": "@respan/cli",
2159
2372
  "pluginName": "@respan/cli",
2160
2373
  "pluginType": "core",
@@ -2164,14 +2377,14 @@
2164
2377
  "relativePath": [
2165
2378
  "dist",
2166
2379
  "commands",
2167
- "prompts",
2168
- "get.js"
2380
+ "logs",
2381
+ "list.js"
2169
2382
  ]
2170
2383
  },
2171
- "prompts:list": {
2384
+ "logs:summary": {
2172
2385
  "aliases": [],
2173
2386
  "args": {},
2174
- "description": "List prompts",
2387
+ "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",
2175
2388
  "flags": {
2176
2389
  "api-key": {
2177
2390
  "description": "API key (env: RESPAN_API_KEY)",
@@ -2207,10 +2420,39 @@
2207
2420
  "allowNo": false,
2208
2421
  "type": "boolean"
2209
2422
  },
2210
- "limit": {
2211
- "description": "Number of results per page",
2212
- "name": "limit",
2213
- "default": 50,
2423
+ "start-time": {
2424
+ "description": "Start time (ISO 8601)",
2425
+ "name": "start-time",
2426
+ "required": true,
2427
+ "hasDynamicHelp": false,
2428
+ "multiple": false,
2429
+ "type": "option"
2430
+ },
2431
+ "end-time": {
2432
+ "description": "End time (ISO 8601)",
2433
+ "name": "end-time",
2434
+ "required": true,
2435
+ "hasDynamicHelp": false,
2436
+ "multiple": false,
2437
+ "type": "option"
2438
+ },
2439
+ "filter": {
2440
+ "description": "Filter in field:operator:value format (repeatable)",
2441
+ "name": "filter",
2442
+ "hasDynamicHelp": false,
2443
+ "multiple": true,
2444
+ "type": "option"
2445
+ },
2446
+ "all-envs": {
2447
+ "description": "Include all environments (true/false)",
2448
+ "name": "all-envs",
2449
+ "hasDynamicHelp": false,
2450
+ "multiple": false,
2451
+ "type": "option"
2452
+ },
2453
+ "is-test": {
2454
+ "description": "Filter by test (true) or production (false) environment",
2455
+ "name": "is-test",
2214
2456
  "hasDynamicHelp": false,
2215
2457
  "multiple": false,
2216
2458
  "type": "option"
@@ -2218,7 +2460,7 @@
2218
2460
  },
2219
2461
  "hasDynamicHelp": false,
2220
2462
  "hiddenAliases": [],
2221
- "id": "prompts:list",
2463
+ "id": "logs:summary",
2222
2464
  "pluginAlias": "@respan/cli",
2223
2465
  "pluginName": "@respan/cli",
2224
2466
  "pluginType": "core",
@@ -2228,20 +2470,20 @@
2228
2470
  "relativePath": [
2229
2471
  "dist",
2230
2472
  "commands",
2231
- "prompts",
2232
- "list.js"
2473
+ "logs",
2474
+ "summary.js"
2233
2475
  ]
2234
2476
  },
2235
- "prompts:update": {
2477
+ "prompts:create-version": {
2236
2478
  "aliases": [],
2237
2479
  "args": {
2238
- "id": {
2480
+ "prompt-id": {
2239
2481
  "description": "Prompt ID",
2240
- "name": "id",
2482
+ "name": "prompt-id",
2241
2483
  "required": true
2242
2484
  }
2243
2485
  },
2244
- "description": "Update a prompt",
2486
+ "description": "Create a new version of a prompt",
2245
2487
  "flags": {
2246
2488
  "api-key": {
2247
2489
  "description": "API key (env: RESPAN_API_KEY)",
@@ -2277,16 +2519,31 @@
2277
2519
  "allowNo": false,
2278
2520
  "type": "boolean"
2279
2521
  },
2280
- "name": {
2281
- "description": "Prompt name",
2282
- "name": "name",
2522
+ "messages": {
2523
+ "description": "Messages as JSON array string",
2524
+ "name": "messages",
2525
+ "required": true,
2283
2526
  "hasDynamicHelp": false,
2284
2527
  "multiple": false,
2285
2528
  "type": "option"
2286
2529
  },
2287
- "description": {
2288
- "description": "Prompt description",
2289
- "name": "description",
2530
+ "model": {
2531
+ "description": "Model name",
2532
+ "name": "model",
2533
+ "hasDynamicHelp": false,
2534
+ "multiple": false,
2535
+ "type": "option"
2536
+ },
2537
+ "temperature": {
2538
+ "description": "Temperature value",
2539
+ "name": "temperature",
2540
+ "hasDynamicHelp": false,
2541
+ "multiple": false,
2542
+ "type": "option"
2543
+ },
2544
+ "max-tokens": {
2545
+ "description": "Max tokens",
2546
+ "name": "max-tokens",
2290
2547
  "hasDynamicHelp": false,
2291
2548
  "multiple": false,
2292
2549
  "type": "option"
@@ -2294,7 +2551,7 @@
2294
2551
  },
2295
2552
  "hasDynamicHelp": false,
2296
2553
  "hiddenAliases": [],
2297
- "id": "prompts:update",
2554
+ "id": "prompts:create-version",
2298
2555
  "pluginAlias": "@respan/cli",
2299
2556
  "pluginName": "@respan/cli",
2300
2557
  "pluginType": "core",
@@ -2305,19 +2562,13 @@
2305
2562
  "dist",
2306
2563
  "commands",
2307
2564
  "prompts",
2308
- "update.js"
2565
+ "create-version.js"
2309
2566
  ]
2310
2567
  },
2311
- "prompts:versions": {
2568
+ "prompts:create": {
2312
2569
  "aliases": [],
2313
- "args": {
2314
- "prompt-id": {
2315
- "description": "Prompt ID",
2316
- "name": "prompt-id",
2317
- "required": true
2318
- }
2319
- },
2320
- "description": "List versions of a prompt",
2570
+ "args": {},
2571
+ "description": "Create a new prompt",
2321
2572
  "flags": {
2322
2573
  "api-key": {
2323
2574
  "description": "API key (env: RESPAN_API_KEY)",
@@ -2352,11 +2603,26 @@
2352
2603
  "name": "verbose",
2353
2604
  "allowNo": false,
2354
2605
  "type": "boolean"
2606
+ },
2607
+ "name": {
2608
+ "description": "Prompt name",
2609
+ "name": "name",
2610
+ "required": true,
2611
+ "hasDynamicHelp": false,
2612
+ "multiple": false,
2613
+ "type": "option"
2614
+ },
2615
+ "description": {
2616
+ "description": "Prompt description",
2617
+ "name": "description",
2618
+ "hasDynamicHelp": false,
2619
+ "multiple": false,
2620
+ "type": "option"
2355
2621
  }
2356
2622
  },
2357
2623
  "hasDynamicHelp": false,
2358
2624
  "hiddenAliases": [],
2359
- "id": "prompts:versions",
2625
+ "id": "prompts:create",
2360
2626
  "pluginAlias": "@respan/cli",
2361
2627
  "pluginName": "@respan/cli",
2362
2628
  "pluginType": "core",
@@ -2367,19 +2633,19 @@
2367
2633
  "dist",
2368
2634
  "commands",
2369
2635
  "prompts",
2370
- "versions.js"
2636
+ "create.js"
2371
2637
  ]
2372
2638
  },
2373
- "traces:get": {
2639
+ "prompts:get": {
2374
2640
  "aliases": [],
2375
2641
  "args": {
2376
2642
  "id": {
2377
- "description": "Trace ID",
2643
+ "description": "Prompt ID",
2378
2644
  "name": "id",
2379
2645
  "required": true
2380
2646
  }
2381
2647
  },
2382
- "description": "Get a specific trace",
2648
+ "description": "Get a specific prompt",
2383
2649
  "flags": {
2384
2650
  "api-key": {
2385
2651
  "description": "API key (env: RESPAN_API_KEY)",
@@ -2418,7 +2684,7 @@
2418
2684
  },
2419
2685
  "hasDynamicHelp": false,
2420
2686
  "hiddenAliases": [],
2421
- "id": "traces:get",
2687
+ "id": "prompts:get",
2422
2688
  "pluginAlias": "@respan/cli",
2423
2689
  "pluginName": "@respan/cli",
2424
2690
  "pluginType": "core",
@@ -2428,14 +2694,14 @@
2428
2694
  "relativePath": [
2429
2695
  "dist",
2430
2696
  "commands",
2431
- "traces",
2697
+ "prompts",
2432
2698
  "get.js"
2433
2699
  ]
2434
2700
  },
2435
- "traces:list": {
2701
+ "prompts:list": {
2436
2702
  "aliases": [],
2437
2703
  "args": {},
2438
- "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",
2704
+ "description": "List prompts",
2439
2705
  "flags": {
2440
2706
  "api-key": {
2441
2707
  "description": "API key (env: RESPAN_API_KEY)",
@@ -2474,59 +2740,15 @@
2474
2740
  "limit": {
2475
2741
  "description": "Number of results per page",
2476
2742
  "name": "limit",
2477
- "default": 10,
2478
- "hasDynamicHelp": false,
2479
- "multiple": false,
2480
- "type": "option"
2481
- },
2482
- "page": {
2483
- "description": "Page number",
2484
- "name": "page",
2485
- "default": 1,
2486
- "hasDynamicHelp": false,
2487
- "multiple": false,
2488
- "type": "option"
2489
- },
2490
- "sort-by": {
2491
- "description": "Sort field (prefix with - for descending)",
2492
- "name": "sort-by",
2493
- "default": "-timestamp",
2494
- "hasDynamicHelp": false,
2495
- "multiple": false,
2496
- "type": "option"
2497
- },
2498
- "start-time": {
2499
- "description": "Start time filter (ISO 8601)",
2500
- "name": "start-time",
2501
- "hasDynamicHelp": false,
2502
- "multiple": false,
2503
- "type": "option"
2504
- },
2505
- "end-time": {
2506
- "description": "End time filter (ISO 8601)",
2507
- "name": "end-time",
2508
- "hasDynamicHelp": false,
2509
- "multiple": false,
2510
- "type": "option"
2511
- },
2512
- "environment": {
2513
- "description": "Environment filter",
2514
- "name": "environment",
2743
+ "default": 50,
2515
2744
  "hasDynamicHelp": false,
2516
2745
  "multiple": false,
2517
2746
  "type": "option"
2518
- },
2519
- "filter": {
2520
- "description": "Filter in field:operator:value format (repeatable)",
2521
- "name": "filter",
2522
- "hasDynamicHelp": false,
2523
- "multiple": true,
2524
- "type": "option"
2525
2747
  }
2526
2748
  },
2527
2749
  "hasDynamicHelp": false,
2528
2750
  "hiddenAliases": [],
2529
- "id": "traces:list",
2751
+ "id": "prompts:list",
2530
2752
  "pluginAlias": "@respan/cli",
2531
2753
  "pluginName": "@respan/cli",
2532
2754
  "pluginType": "core",
@@ -2536,14 +2758,20 @@
2536
2758
  "relativePath": [
2537
2759
  "dist",
2538
2760
  "commands",
2539
- "traces",
2761
+ "prompts",
2540
2762
  "list.js"
2541
2763
  ]
2542
2764
  },
2543
- "traces:summary": {
2765
+ "prompts:update": {
2544
2766
  "aliases": [],
2545
- "args": {},
2546
- "description": "Get a summary of traces for a time range",
2767
+ "args": {
2768
+ "id": {
2769
+ "description": "Prompt ID",
2770
+ "name": "id",
2771
+ "required": true
2772
+ }
2773
+ },
2774
+ "description": "Update a prompt",
2547
2775
  "flags": {
2548
2776
  "api-key": {
2549
2777
  "description": "API key (env: RESPAN_API_KEY)",
@@ -2579,18 +2807,16 @@
2579
2807
  "allowNo": false,
2580
2808
  "type": "boolean"
2581
2809
  },
2582
- "start-time": {
2583
- "description": "Start time (ISO 8601)",
2584
- "name": "start-time",
2585
- "required": true,
2810
+ "name": {
2811
+ "description": "Prompt name",
2812
+ "name": "name",
2586
2813
  "hasDynamicHelp": false,
2587
2814
  "multiple": false,
2588
2815
  "type": "option"
2589
2816
  },
2590
- "end-time": {
2591
- "description": "End time (ISO 8601)",
2592
- "name": "end-time",
2593
- "required": true,
2817
+ "description": {
2818
+ "description": "Prompt description",
2819
+ "name": "description",
2594
2820
  "hasDynamicHelp": false,
2595
2821
  "multiple": false,
2596
2822
  "type": "option"
@@ -2598,7 +2824,7 @@
2598
2824
  },
2599
2825
  "hasDynamicHelp": false,
2600
2826
  "hiddenAliases": [],
2601
- "id": "traces:summary",
2827
+ "id": "prompts:update",
2602
2828
  "pluginAlias": "@respan/cli",
2603
2829
  "pluginName": "@respan/cli",
2604
2830
  "pluginType": "core",
@@ -2608,14 +2834,20 @@
2608
2834
  "relativePath": [
2609
2835
  "dist",
2610
2836
  "commands",
2611
- "traces",
2612
- "summary.js"
2837
+ "prompts",
2838
+ "update.js"
2613
2839
  ]
2614
2840
  },
2615
- "users:create": {
2841
+ "prompts:versions": {
2616
2842
  "aliases": [],
2617
- "args": {},
2618
- "description": "Create a new user (customer)",
2843
+ "args": {
2844
+ "prompt-id": {
2845
+ "description": "Prompt ID",
2846
+ "name": "prompt-id",
2847
+ "required": true
2848
+ }
2849
+ },
2850
+ "description": "List versions of a prompt",
2619
2851
  "flags": {
2620
2852
  "api-key": {
2621
2853
  "description": "API key (env: RESPAN_API_KEY)",
@@ -2650,40 +2882,11 @@
2650
2882
  "name": "verbose",
2651
2883
  "allowNo": false,
2652
2884
  "type": "boolean"
2653
- },
2654
- "identifier": {
2655
- "description": "Customer identifier",
2656
- "name": "identifier",
2657
- "required": true,
2658
- "hasDynamicHelp": false,
2659
- "multiple": false,
2660
- "type": "option"
2661
- },
2662
- "name": {
2663
- "description": "Customer name",
2664
- "name": "name",
2665
- "hasDynamicHelp": false,
2666
- "multiple": false,
2667
- "type": "option"
2668
- },
2669
- "email": {
2670
- "description": "Customer email",
2671
- "name": "email",
2672
- "hasDynamicHelp": false,
2673
- "multiple": false,
2674
- "type": "option"
2675
- },
2676
- "metadata": {
2677
- "description": "Metadata as JSON string",
2678
- "name": "metadata",
2679
- "hasDynamicHelp": false,
2680
- "multiple": false,
2681
- "type": "option"
2682
2885
  }
2683
2886
  },
2684
2887
  "hasDynamicHelp": false,
2685
2888
  "hiddenAliases": [],
2686
- "id": "users:create",
2889
+ "id": "prompts:versions",
2687
2890
  "pluginAlias": "@respan/cli",
2688
2891
  "pluginName": "@respan/cli",
2689
2892
  "pluginType": "core",
@@ -2693,20 +2896,20 @@
2693
2896
  "relativePath": [
2694
2897
  "dist",
2695
2898
  "commands",
2696
- "users",
2697
- "create.js"
2899
+ "prompts",
2900
+ "versions.js"
2698
2901
  ]
2699
2902
  },
2700
- "users:get": {
2903
+ "traces:get": {
2701
2904
  "aliases": [],
2702
2905
  "args": {
2703
2906
  "id": {
2704
- "description": "Customer identifier",
2907
+ "description": "Trace ID",
2705
2908
  "name": "id",
2706
2909
  "required": true
2707
2910
  }
2708
2911
  },
2709
- "description": "Get a specific user (customer)",
2912
+ "description": "Get a specific trace",
2710
2913
  "flags": {
2711
2914
  "api-key": {
2712
2915
  "description": "API key (env: RESPAN_API_KEY)",
@@ -2745,7 +2948,7 @@
2745
2948
  },
2746
2949
  "hasDynamicHelp": false,
2747
2950
  "hiddenAliases": [],
2748
- "id": "users:get",
2951
+ "id": "traces:get",
2749
2952
  "pluginAlias": "@respan/cli",
2750
2953
  "pluginName": "@respan/cli",
2751
2954
  "pluginType": "core",
@@ -2755,14 +2958,14 @@
2755
2958
  "relativePath": [
2756
2959
  "dist",
2757
2960
  "commands",
2758
- "users",
2961
+ "traces",
2759
2962
  "get.js"
2760
2963
  ]
2761
2964
  },
2762
- "users:list": {
2965
+ "traces:list": {
2763
2966
  "aliases": [],
2764
2967
  "args": {},
2765
- "description": "List users (customers)",
2968
+ "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",
2766
2969
  "flags": {
2767
2970
  "api-key": {
2768
2971
  "description": "API key (env: RESPAN_API_KEY)",
@@ -2801,7 +3004,7 @@
2801
3004
  "limit": {
2802
3005
  "description": "Number of results per page",
2803
3006
  "name": "limit",
2804
- "default": 20,
3007
+ "default": 10,
2805
3008
  "hasDynamicHelp": false,
2806
3009
  "multiple": false,
2807
3010
  "type": "option"
@@ -2815,8 +3018,23 @@
2815
3018
  "type": "option"
2816
3019
  },
2817
3020
  "sort-by": {
2818
- "description": "Sort field",
3021
+ "description": "Sort field (prefix with - for descending)",
2819
3022
  "name": "sort-by",
3023
+ "default": "-timestamp",
3024
+ "hasDynamicHelp": false,
3025
+ "multiple": false,
3026
+ "type": "option"
3027
+ },
3028
+ "start-time": {
3029
+ "description": "Start time filter (ISO 8601)",
3030
+ "name": "start-time",
3031
+ "hasDynamicHelp": false,
3032
+ "multiple": false,
3033
+ "type": "option"
3034
+ },
3035
+ "end-time": {
3036
+ "description": "End time filter (ISO 8601)",
3037
+ "name": "end-time",
2820
3038
  "hasDynamicHelp": false,
2821
3039
  "multiple": false,
2822
3040
  "type": "option"
@@ -2827,11 +3045,18 @@
2827
3045
  "hasDynamicHelp": false,
2828
3046
  "multiple": false,
2829
3047
  "type": "option"
3048
+ },
3049
+ "filter": {
3050
+ "description": "Filter in field:operator:value format (repeatable)",
3051
+ "name": "filter",
3052
+ "hasDynamicHelp": false,
3053
+ "multiple": true,
3054
+ "type": "option"
2830
3055
  }
2831
3056
  },
2832
3057
  "hasDynamicHelp": false,
2833
3058
  "hiddenAliases": [],
2834
- "id": "users:list",
3059
+ "id": "traces:list",
2835
3060
  "pluginAlias": "@respan/cli",
2836
3061
  "pluginName": "@respan/cli",
2837
3062
  "pluginType": "core",
@@ -2841,20 +3066,14 @@
2841
3066
  "relativePath": [
2842
3067
  "dist",
2843
3068
  "commands",
2844
- "users",
3069
+ "traces",
2845
3070
  "list.js"
2846
3071
  ]
2847
3072
  },
2848
- "users:update": {
3073
+ "traces:summary": {
2849
3074
  "aliases": [],
2850
- "args": {
2851
- "id": {
2852
- "description": "Customer identifier",
2853
- "name": "id",
2854
- "required": true
2855
- }
2856
- },
2857
- "description": "Update a user (customer)",
3075
+ "args": {},
3076
+ "description": "Get a summary of traces for a time range",
2858
3077
  "flags": {
2859
3078
  "api-key": {
2860
3079
  "description": "API key (env: RESPAN_API_KEY)",
@@ -2890,23 +3109,18 @@
2890
3109
  "allowNo": false,
2891
3110
  "type": "boolean"
2892
3111
  },
2893
- "name": {
2894
- "description": "Customer name",
2895
- "name": "name",
2896
- "hasDynamicHelp": false,
2897
- "multiple": false,
2898
- "type": "option"
2899
- },
2900
- "email": {
2901
- "description": "Customer email",
2902
- "name": "email",
3112
+ "start-time": {
3113
+ "description": "Start time (ISO 8601)",
3114
+ "name": "start-time",
3115
+ "required": true,
2903
3116
  "hasDynamicHelp": false,
2904
3117
  "multiple": false,
2905
3118
  "type": "option"
2906
3119
  },
2907
- "metadata": {
2908
- "description": "Metadata as JSON string",
2909
- "name": "metadata",
3120
+ "end-time": {
3121
+ "description": "End time (ISO 8601)",
3122
+ "name": "end-time",
3123
+ "required": true,
2910
3124
  "hasDynamicHelp": false,
2911
3125
  "multiple": false,
2912
3126
  "type": "option"
@@ -2914,7 +3128,7 @@
2914
3128
  },
2915
3129
  "hasDynamicHelp": false,
2916
3130
  "hiddenAliases": [],
2917
- "id": "users:update",
3131
+ "id": "traces:summary",
2918
3132
  "pluginAlias": "@respan/cli",
2919
3133
  "pluginName": "@respan/cli",
2920
3134
  "pluginType": "core",
@@ -2924,21 +3138,14 @@
2924
3138
  "relativePath": [
2925
3139
  "dist",
2926
3140
  "commands",
2927
- "users",
2928
- "update.js"
3141
+ "traces",
3142
+ "summary.js"
2929
3143
  ]
2930
3144
  },
2931
- "integrate:claude-code": {
3145
+ "users:create": {
2932
3146
  "aliases": [],
2933
3147
  "args": {},
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
- ],
3148
+ "description": "Create a new user (customer)",
2942
3149
  "flags": {
2943
3150
  "api-key": {
2944
3151
  "description": "API key (env: RESPAN_API_KEY)",
@@ -2974,80 +3181,39 @@
2974
3181
  "allowNo": false,
2975
3182
  "type": "boolean"
2976
3183
  },
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",
2999
- "hasDynamicHelp": false,
3000
- "multiple": false,
3001
- "type": "option"
3002
- },
3003
- "base-url": {
3004
- "description": "Respan API base URL (for enterprise deployments)",
3005
- "name": "base-url",
3006
- "default": "https://api.respan.ai/api",
3007
- "hasDynamicHelp": false,
3008
- "multiple": false,
3009
- "type": "option"
3010
- },
3011
- "attrs": {
3012
- "description": "Custom attributes JSON (e.g. '{\"env\":\"prod\"}')",
3013
- "name": "attrs",
3014
- "default": "{}",
3184
+ "identifier": {
3185
+ "description": "Customer identifier",
3186
+ "name": "identifier",
3187
+ "required": true,
3015
3188
  "hasDynamicHelp": false,
3016
3189
  "multiple": false,
3017
3190
  "type": "option"
3018
3191
  },
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",
3192
+ "name": {
3193
+ "description": "Customer name",
3194
+ "name": "name",
3023
3195
  "hasDynamicHelp": false,
3024
3196
  "multiple": false,
3025
3197
  "type": "option"
3026
3198
  },
3027
- "span-name": {
3028
- "description": "Root span name for traces (default: claude-code)",
3029
- "name": "span-name",
3199
+ "email": {
3200
+ "description": "Customer email",
3201
+ "name": "email",
3030
3202
  "hasDynamicHelp": false,
3031
3203
  "multiple": false,
3032
3204
  "type": "option"
3033
3205
  },
3034
- "workflow-name": {
3035
- "description": "Workflow name for traces (default: claude-code)",
3036
- "name": "workflow-name",
3206
+ "metadata": {
3207
+ "description": "Metadata as JSON string",
3208
+ "name": "metadata",
3037
3209
  "hasDynamicHelp": false,
3038
3210
  "multiple": false,
3039
3211
  "type": "option"
3040
- },
3041
- "dry-run": {
3042
- "description": "Preview changes without writing files",
3043
- "name": "dry-run",
3044
- "allowNo": false,
3045
- "type": "boolean"
3046
3212
  }
3047
3213
  },
3048
3214
  "hasDynamicHelp": false,
3049
3215
  "hiddenAliases": [],
3050
- "id": "integrate:claude-code",
3216
+ "id": "users:create",
3051
3217
  "pluginAlias": "@respan/cli",
3052
3218
  "pluginName": "@respan/cli",
3053
3219
  "pluginType": "core",
@@ -3057,21 +3223,20 @@
3057
3223
  "relativePath": [
3058
3224
  "dist",
3059
3225
  "commands",
3060
- "integrate",
3061
- "claude-code.js"
3226
+ "users",
3227
+ "create.js"
3062
3228
  ]
3063
3229
  },
3064
- "integrate:codex-cli": {
3230
+ "users:get": {
3065
3231
  "aliases": [],
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
- ],
3232
+ "args": {
3233
+ "id": {
3234
+ "description": "Customer identifier",
3235
+ "name": "id",
3236
+ "required": true
3237
+ }
3238
+ },
3239
+ "description": "Get a specific user (customer)",
3075
3240
  "flags": {
3076
3241
  "api-key": {
3077
3242
  "description": "API key (env: RESPAN_API_KEY)",
@@ -3106,81 +3271,11 @@
3106
3271
  "name": "verbose",
3107
3272
  "allowNo": false,
3108
3273
  "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"
3179
3274
  }
3180
3275
  },
3181
3276
  "hasDynamicHelp": false,
3182
3277
  "hiddenAliases": [],
3183
- "id": "integrate:codex-cli",
3278
+ "id": "users:get",
3184
3279
  "pluginAlias": "@respan/cli",
3185
3280
  "pluginName": "@respan/cli",
3186
3281
  "pluginType": "core",
@@ -3190,20 +3285,14 @@
3190
3285
  "relativePath": [
3191
3286
  "dist",
3192
3287
  "commands",
3193
- "integrate",
3194
- "codex-cli.js"
3288
+ "users",
3289
+ "get.js"
3195
3290
  ]
3196
3291
  },
3197
- "integrate:gemini-cli": {
3292
+ "users:list": {
3198
3293
  "aliases": [],
3199
3294
  "args": {},
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
- ],
3295
+ "description": "List users (customers)",
3207
3296
  "flags": {
3208
3297
  "api-key": {
3209
3298
  "description": "API key (env: RESPAN_API_KEY)",
@@ -3239,80 +3328,40 @@
3239
3328
  "allowNo": false,
3240
3329
  "type": "boolean"
3241
3330
  },
3242
- "local": {
3243
- "description": "Write per-project config (default)",
3244
- "exclusive": [
3245
- "global"
3246
- ],
3247
- "name": "local",
3248
- "allowNo": false,
3249
- "type": "boolean"
3250
- },
3251
- "global": {
3252
- "description": "Write user-level global config",
3253
- "exclusive": [
3254
- "local"
3255
- ],
3256
- "name": "global",
3257
- "allowNo": false,
3258
- "type": "boolean"
3259
- },
3260
- "project-id": {
3261
- "description": "Respan project ID (added to metadata / resource attributes)",
3262
- "env": "RESPAN_PROJECT_ID",
3263
- "name": "project-id",
3264
- "hasDynamicHelp": false,
3265
- "multiple": false,
3266
- "type": "option"
3267
- },
3268
- "base-url": {
3269
- "description": "Respan API base URL (for enterprise deployments)",
3270
- "name": "base-url",
3271
- "default": "https://api.respan.ai/api",
3272
- "hasDynamicHelp": false,
3273
- "multiple": false,
3274
- "type": "option"
3275
- },
3276
- "attrs": {
3277
- "description": "Custom attributes JSON (e.g. '{\"env\":\"prod\"}')",
3278
- "name": "attrs",
3279
- "default": "{}",
3331
+ "limit": {
3332
+ "description": "Number of results per page",
3333
+ "name": "limit",
3334
+ "default": 20,
3280
3335
  "hasDynamicHelp": false,
3281
3336
  "multiple": false,
3282
3337
  "type": "option"
3283
3338
  },
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",
3339
+ "page": {
3340
+ "description": "Page number",
3341
+ "name": "page",
3342
+ "default": 1,
3288
3343
  "hasDynamicHelp": false,
3289
3344
  "multiple": false,
3290
3345
  "type": "option"
3291
3346
  },
3292
- "span-name": {
3293
- "description": "Root span name for traces (default: claude-code)",
3294
- "name": "span-name",
3347
+ "sort-by": {
3348
+ "description": "Sort field",
3349
+ "name": "sort-by",
3295
3350
  "hasDynamicHelp": false,
3296
3351
  "multiple": false,
3297
3352
  "type": "option"
3298
3353
  },
3299
- "workflow-name": {
3300
- "description": "Workflow name for traces (default: claude-code)",
3301
- "name": "workflow-name",
3354
+ "environment": {
3355
+ "description": "Environment filter",
3356
+ "name": "environment",
3302
3357
  "hasDynamicHelp": false,
3303
3358
  "multiple": false,
3304
3359
  "type": "option"
3305
- },
3306
- "dry-run": {
3307
- "description": "Preview changes without writing files",
3308
- "name": "dry-run",
3309
- "allowNo": false,
3310
- "type": "boolean"
3311
3360
  }
3312
3361
  },
3313
3362
  "hasDynamicHelp": false,
3314
3363
  "hiddenAliases": [],
3315
- "id": "integrate:gemini-cli",
3364
+ "id": "users:list",
3316
3365
  "pluginAlias": "@respan/cli",
3317
3366
  "pluginName": "@respan/cli",
3318
3367
  "pluginType": "core",
@@ -3322,20 +3371,20 @@
3322
3371
  "relativePath": [
3323
3372
  "dist",
3324
3373
  "commands",
3325
- "integrate",
3326
- "gemini-cli.js"
3374
+ "users",
3375
+ "list.js"
3327
3376
  ]
3328
3377
  },
3329
- "integrate:opencode": {
3378
+ "users:update": {
3330
3379
  "aliases": [],
3331
- "args": {},
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
- ],
3380
+ "args": {
3381
+ "id": {
3382
+ "description": "Customer identifier",
3383
+ "name": "id",
3384
+ "required": true
3385
+ }
3386
+ },
3387
+ "description": "Update a user (customer)",
3339
3388
  "flags": {
3340
3389
  "api-key": {
3341
3390
  "description": "API key (env: RESPAN_API_KEY)",
@@ -3371,80 +3420,31 @@
3371
3420
  "allowNo": false,
3372
3421
  "type": "boolean"
3373
3422
  },
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",
3396
- "hasDynamicHelp": false,
3397
- "multiple": false,
3398
- "type": "option"
3399
- },
3400
- "base-url": {
3401
- "description": "Respan API base URL (for enterprise deployments)",
3402
- "name": "base-url",
3403
- "default": "https://api.respan.ai/api",
3404
- "hasDynamicHelp": false,
3405
- "multiple": false,
3406
- "type": "option"
3407
- },
3408
- "attrs": {
3409
- "description": "Custom attributes JSON (e.g. '{\"env\":\"prod\"}')",
3410
- "name": "attrs",
3411
- "default": "{}",
3412
- "hasDynamicHelp": false,
3413
- "multiple": false,
3414
- "type": "option"
3415
- },
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",
3423
+ "name": {
3424
+ "description": "Customer name",
3425
+ "name": "name",
3420
3426
  "hasDynamicHelp": false,
3421
3427
  "multiple": false,
3422
3428
  "type": "option"
3423
3429
  },
3424
- "span-name": {
3425
- "description": "Root span name for traces (default: claude-code)",
3426
- "name": "span-name",
3430
+ "email": {
3431
+ "description": "Customer email",
3432
+ "name": "email",
3427
3433
  "hasDynamicHelp": false,
3428
3434
  "multiple": false,
3429
3435
  "type": "option"
3430
3436
  },
3431
- "workflow-name": {
3432
- "description": "Workflow name for traces (default: claude-code)",
3433
- "name": "workflow-name",
3437
+ "metadata": {
3438
+ "description": "Metadata as JSON string",
3439
+ "name": "metadata",
3434
3440
  "hasDynamicHelp": false,
3435
3441
  "multiple": false,
3436
3442
  "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": "integrate:opencode",
3447
+ "id": "users:update",
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
- "integrate",
3458
- "opencode.js"
3457
+ "users",
3458
+ "update.js"
3459
3459
  ]
3460
3460
  }
3461
3461
  },
3462
- "version": "0.6.0"
3462
+ "version": "0.6.2"
3463
3463
  }