@respan/cli 0.14.0 → 0.14.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.
@@ -708,16 +708,16 @@
708
708
  "stop.js"
709
709
  ]
710
710
  },
711
- "config:get": {
711
+ "datasets:create-span": {
712
712
  "aliases": [],
713
713
  "args": {
714
- "key": {
715
- "description": "Config key",
716
- "name": "key",
714
+ "dataset-id": {
715
+ "description": "Dataset ID",
716
+ "name": "dataset-id",
717
717
  "required": true
718
718
  }
719
719
  },
720
- "description": "Get a configuration value",
720
+ "description": "Create a span in a dataset",
721
721
  "flags": {
722
722
  "api-key": {
723
723
  "description": "API key (env: RESPAN_API_KEY)",
@@ -759,11 +759,19 @@
759
759
  "name": "verbose",
760
760
  "allowNo": false,
761
761
  "type": "boolean"
762
+ },
763
+ "body": {
764
+ "description": "Span body as JSON string",
765
+ "name": "body",
766
+ "required": true,
767
+ "hasDynamicHelp": false,
768
+ "multiple": false,
769
+ "type": "option"
762
770
  }
763
771
  },
764
772
  "hasDynamicHelp": false,
765
773
  "hiddenAliases": [],
766
- "id": "config:get",
774
+ "id": "datasets:create-span",
767
775
  "pluginAlias": "@respan/cli",
768
776
  "pluginName": "@respan/cli",
769
777
  "pluginType": "core",
@@ -773,14 +781,14 @@
773
781
  "relativePath": [
774
782
  "dist",
775
783
  "commands",
776
- "config",
777
- "get.js"
784
+ "datasets",
785
+ "create-span.js"
778
786
  ]
779
787
  },
780
- "config:list": {
788
+ "datasets:create": {
781
789
  "aliases": [],
782
790
  "args": {},
783
- "description": "List all configuration",
791
+ "description": "Create a new dataset",
784
792
  "flags": {
785
793
  "api-key": {
786
794
  "description": "API key (env: RESPAN_API_KEY)",
@@ -822,11 +830,26 @@
822
830
  "name": "verbose",
823
831
  "allowNo": false,
824
832
  "type": "boolean"
833
+ },
834
+ "name": {
835
+ "description": "Dataset name",
836
+ "name": "name",
837
+ "required": true,
838
+ "hasDynamicHelp": false,
839
+ "multiple": false,
840
+ "type": "option"
841
+ },
842
+ "description": {
843
+ "description": "Dataset description",
844
+ "name": "description",
845
+ "hasDynamicHelp": false,
846
+ "multiple": false,
847
+ "type": "option"
825
848
  }
826
849
  },
827
850
  "hasDynamicHelp": false,
828
851
  "hiddenAliases": [],
829
- "id": "config:list",
852
+ "id": "datasets:create",
830
853
  "pluginAlias": "@respan/cli",
831
854
  "pluginName": "@respan/cli",
832
855
  "pluginType": "core",
@@ -836,25 +859,25 @@
836
859
  "relativePath": [
837
860
  "dist",
838
861
  "commands",
839
- "config",
840
- "list.js"
862
+ "datasets",
863
+ "create.js"
841
864
  ]
842
865
  },
843
- "config:set": {
866
+ "datasets:get-span": {
844
867
  "aliases": [],
845
868
  "args": {
846
- "key": {
847
- "description": "Config key",
848
- "name": "key",
869
+ "dataset-id": {
870
+ "description": "Dataset ID",
871
+ "name": "dataset-id",
849
872
  "required": true
850
873
  },
851
- "value": {
852
- "description": "Config value",
853
- "name": "value",
874
+ "span-id": {
875
+ "description": "Span ID",
876
+ "name": "span-id",
854
877
  "required": true
855
878
  }
856
879
  },
857
- "description": "Set a configuration value",
880
+ "description": "Get a specific span from a dataset",
858
881
  "flags": {
859
882
  "api-key": {
860
883
  "description": "API key (env: RESPAN_API_KEY)",
@@ -900,7 +923,7 @@
900
923
  },
901
924
  "hasDynamicHelp": false,
902
925
  "hiddenAliases": [],
903
- "id": "config:set",
926
+ "id": "datasets:get-span",
904
927
  "pluginAlias": "@respan/cli",
905
928
  "pluginName": "@respan/cli",
906
929
  "pluginType": "core",
@@ -910,20 +933,20 @@
910
933
  "relativePath": [
911
934
  "dist",
912
935
  "commands",
913
- "config",
914
- "set.js"
936
+ "datasets",
937
+ "get-span.js"
915
938
  ]
916
939
  },
917
- "datasets:create-span": {
940
+ "datasets:get": {
918
941
  "aliases": [],
919
942
  "args": {
920
- "dataset-id": {
943
+ "id": {
921
944
  "description": "Dataset ID",
922
- "name": "dataset-id",
945
+ "name": "id",
923
946
  "required": true
924
947
  }
925
948
  },
926
- "description": "Create a span in a dataset",
949
+ "description": "Get a specific dataset",
927
950
  "flags": {
928
951
  "api-key": {
929
952
  "description": "API key (env: RESPAN_API_KEY)",
@@ -965,19 +988,11 @@
965
988
  "name": "verbose",
966
989
  "allowNo": false,
967
990
  "type": "boolean"
968
- },
969
- "body": {
970
- "description": "Span body as JSON string",
971
- "name": "body",
972
- "required": true,
973
- "hasDynamicHelp": false,
974
- "multiple": false,
975
- "type": "option"
976
991
  }
977
992
  },
978
993
  "hasDynamicHelp": false,
979
994
  "hiddenAliases": [],
980
- "id": "datasets:create-span",
995
+ "id": "datasets:get",
981
996
  "pluginAlias": "@respan/cli",
982
997
  "pluginName": "@respan/cli",
983
998
  "pluginType": "core",
@@ -988,13 +1003,13 @@
988
1003
  "dist",
989
1004
  "commands",
990
1005
  "datasets",
991
- "create-span.js"
1006
+ "get.js"
992
1007
  ]
993
1008
  },
994
- "datasets:create": {
1009
+ "datasets:list": {
995
1010
  "aliases": [],
996
1011
  "args": {},
997
- "description": "Create a new dataset",
1012
+ "description": "List datasets",
998
1013
  "flags": {
999
1014
  "api-key": {
1000
1015
  "description": "API key (env: RESPAN_API_KEY)",
@@ -1037,17 +1052,18 @@
1037
1052
  "allowNo": false,
1038
1053
  "type": "boolean"
1039
1054
  },
1040
- "name": {
1041
- "description": "Dataset name",
1042
- "name": "name",
1043
- "required": true,
1055
+ "limit": {
1056
+ "description": "Number of results per page",
1057
+ "name": "limit",
1058
+ "default": 50,
1044
1059
  "hasDynamicHelp": false,
1045
1060
  "multiple": false,
1046
1061
  "type": "option"
1047
1062
  },
1048
- "description": {
1049
- "description": "Dataset description",
1050
- "name": "description",
1063
+ "page": {
1064
+ "description": "Page number",
1065
+ "name": "page",
1066
+ "default": 1,
1051
1067
  "hasDynamicHelp": false,
1052
1068
  "multiple": false,
1053
1069
  "type": "option"
@@ -1055,7 +1071,7 @@
1055
1071
  },
1056
1072
  "hasDynamicHelp": false,
1057
1073
  "hiddenAliases": [],
1058
- "id": "datasets:create",
1074
+ "id": "datasets:list",
1059
1075
  "pluginAlias": "@respan/cli",
1060
1076
  "pluginName": "@respan/cli",
1061
1077
  "pluginType": "core",
@@ -1066,24 +1082,19 @@
1066
1082
  "dist",
1067
1083
  "commands",
1068
1084
  "datasets",
1069
- "create.js"
1085
+ "list.js"
1070
1086
  ]
1071
1087
  },
1072
- "datasets:get-span": {
1088
+ "datasets:spans": {
1073
1089
  "aliases": [],
1074
1090
  "args": {
1075
1091
  "dataset-id": {
1076
1092
  "description": "Dataset ID",
1077
1093
  "name": "dataset-id",
1078
1094
  "required": true
1079
- },
1080
- "span-id": {
1081
- "description": "Span ID",
1082
- "name": "span-id",
1083
- "required": true
1084
1095
  }
1085
1096
  },
1086
- "description": "Get a specific span from a dataset",
1097
+ "description": "List spans in a dataset",
1087
1098
  "flags": {
1088
1099
  "api-key": {
1089
1100
  "description": "API key (env: RESPAN_API_KEY)",
@@ -1129,7 +1140,7 @@
1129
1140
  },
1130
1141
  "hasDynamicHelp": false,
1131
1142
  "hiddenAliases": [],
1132
- "id": "datasets:get-span",
1143
+ "id": "datasets:spans",
1133
1144
  "pluginAlias": "@respan/cli",
1134
1145
  "pluginName": "@respan/cli",
1135
1146
  "pluginType": "core",
@@ -1140,10 +1151,10 @@
1140
1151
  "dist",
1141
1152
  "commands",
1142
1153
  "datasets",
1143
- "get-span.js"
1154
+ "spans.js"
1144
1155
  ]
1145
1156
  },
1146
- "datasets:get": {
1157
+ "datasets:update": {
1147
1158
  "aliases": [],
1148
1159
  "args": {
1149
1160
  "id": {
@@ -1152,7 +1163,7 @@
1152
1163
  "required": true
1153
1164
  }
1154
1165
  },
1155
- "description": "Get a specific dataset",
1166
+ "description": "Update a dataset",
1156
1167
  "flags": {
1157
1168
  "api-key": {
1158
1169
  "description": "API key (env: RESPAN_API_KEY)",
@@ -1194,11 +1205,25 @@
1194
1205
  "name": "verbose",
1195
1206
  "allowNo": false,
1196
1207
  "type": "boolean"
1208
+ },
1209
+ "name": {
1210
+ "description": "Dataset name",
1211
+ "name": "name",
1212
+ "hasDynamicHelp": false,
1213
+ "multiple": false,
1214
+ "type": "option"
1215
+ },
1216
+ "description": {
1217
+ "description": "Dataset description",
1218
+ "name": "description",
1219
+ "hasDynamicHelp": false,
1220
+ "multiple": false,
1221
+ "type": "option"
1197
1222
  }
1198
1223
  },
1199
1224
  "hasDynamicHelp": false,
1200
1225
  "hiddenAliases": [],
1201
- "id": "datasets:get",
1226
+ "id": "datasets:update",
1202
1227
  "pluginAlias": "@respan/cli",
1203
1228
  "pluginName": "@respan/cli",
1204
1229
  "pluginType": "core",
@@ -1209,13 +1234,19 @@
1209
1234
  "dist",
1210
1235
  "commands",
1211
1236
  "datasets",
1212
- "get.js"
1237
+ "update.js"
1213
1238
  ]
1214
1239
  },
1215
- "datasets:list": {
1240
+ "config:get": {
1216
1241
  "aliases": [],
1217
- "args": {},
1218
- "description": "List datasets",
1242
+ "args": {
1243
+ "key": {
1244
+ "description": "Config key",
1245
+ "name": "key",
1246
+ "required": true
1247
+ }
1248
+ },
1249
+ "description": "Get a configuration value",
1219
1250
  "flags": {
1220
1251
  "api-key": {
1221
1252
  "description": "API key (env: RESPAN_API_KEY)",
@@ -1257,27 +1288,11 @@
1257
1288
  "name": "verbose",
1258
1289
  "allowNo": false,
1259
1290
  "type": "boolean"
1260
- },
1261
- "limit": {
1262
- "description": "Number of results per page",
1263
- "name": "limit",
1264
- "default": 50,
1265
- "hasDynamicHelp": false,
1266
- "multiple": false,
1267
- "type": "option"
1268
- },
1269
- "page": {
1270
- "description": "Page number",
1271
- "name": "page",
1272
- "default": 1,
1273
- "hasDynamicHelp": false,
1274
- "multiple": false,
1275
- "type": "option"
1276
1291
  }
1277
1292
  },
1278
1293
  "hasDynamicHelp": false,
1279
1294
  "hiddenAliases": [],
1280
- "id": "datasets:list",
1295
+ "id": "config:get",
1281
1296
  "pluginAlias": "@respan/cli",
1282
1297
  "pluginName": "@respan/cli",
1283
1298
  "pluginType": "core",
@@ -1287,20 +1302,14 @@
1287
1302
  "relativePath": [
1288
1303
  "dist",
1289
1304
  "commands",
1290
- "datasets",
1291
- "list.js"
1305
+ "config",
1306
+ "get.js"
1292
1307
  ]
1293
1308
  },
1294
- "datasets:spans": {
1309
+ "config:list": {
1295
1310
  "aliases": [],
1296
- "args": {
1297
- "dataset-id": {
1298
- "description": "Dataset ID",
1299
- "name": "dataset-id",
1300
- "required": true
1301
- }
1302
- },
1303
- "description": "List spans in a dataset",
1311
+ "args": {},
1312
+ "description": "List all configuration",
1304
1313
  "flags": {
1305
1314
  "api-key": {
1306
1315
  "description": "API key (env: RESPAN_API_KEY)",
@@ -1346,7 +1355,7 @@
1346
1355
  },
1347
1356
  "hasDynamicHelp": false,
1348
1357
  "hiddenAliases": [],
1349
- "id": "datasets:spans",
1358
+ "id": "config:list",
1350
1359
  "pluginAlias": "@respan/cli",
1351
1360
  "pluginName": "@respan/cli",
1352
1361
  "pluginType": "core",
@@ -1356,20 +1365,25 @@
1356
1365
  "relativePath": [
1357
1366
  "dist",
1358
1367
  "commands",
1359
- "datasets",
1360
- "spans.js"
1368
+ "config",
1369
+ "list.js"
1361
1370
  ]
1362
1371
  },
1363
- "datasets:update": {
1372
+ "config:set": {
1364
1373
  "aliases": [],
1365
1374
  "args": {
1366
- "id": {
1367
- "description": "Dataset ID",
1368
- "name": "id",
1375
+ "key": {
1376
+ "description": "Config key",
1377
+ "name": "key",
1378
+ "required": true
1379
+ },
1380
+ "value": {
1381
+ "description": "Config value",
1382
+ "name": "value",
1369
1383
  "required": true
1370
1384
  }
1371
1385
  },
1372
- "description": "Update a dataset",
1386
+ "description": "Set a configuration value",
1373
1387
  "flags": {
1374
1388
  "api-key": {
1375
1389
  "description": "API key (env: RESPAN_API_KEY)",
@@ -1411,25 +1425,11 @@
1411
1425
  "name": "verbose",
1412
1426
  "allowNo": false,
1413
1427
  "type": "boolean"
1414
- },
1415
- "name": {
1416
- "description": "Dataset name",
1417
- "name": "name",
1418
- "hasDynamicHelp": false,
1419
- "multiple": false,
1420
- "type": "option"
1421
- },
1422
- "description": {
1423
- "description": "Dataset description",
1424
- "name": "description",
1425
- "hasDynamicHelp": false,
1426
- "multiple": false,
1427
- "type": "option"
1428
1428
  }
1429
1429
  },
1430
1430
  "hasDynamicHelp": false,
1431
1431
  "hiddenAliases": [],
1432
- "id": "datasets:update",
1432
+ "id": "config:set",
1433
1433
  "pluginAlias": "@respan/cli",
1434
1434
  "pluginName": "@respan/cli",
1435
1435
  "pluginType": "core",
@@ -1439,8 +1439,8 @@
1439
1439
  "relativePath": [
1440
1440
  "dist",
1441
1441
  "commands",
1442
- "datasets",
1443
- "update.js"
1442
+ "config",
1443
+ "set.js"
1444
1444
  ]
1445
1445
  },
1446
1446
  "demo:clear": {
@@ -2313,10 +2313,18 @@
2313
2313
  "list.js"
2314
2314
  ]
2315
2315
  },
2316
- "logs:create": {
2316
+ "integrate:claude-code": {
2317
2317
  "aliases": [],
2318
2318
  "args": {},
2319
- "description": "Create a log span",
2319
+ "description": "Integrate Respan with Claude Code.\n\nInstalls a Stop hook that reads conversation transcripts and sends\nthem to Respan as structured spans (chat, tool, thinking).\n\nScope:\n --global Install hook script + register in ~/.claude/settings.json\n --local Write credentials + enable flag to .claude/settings.local.json\n\nDefault behavior installs the global hook and writes local project config.",
2320
+ "examples": [
2321
+ "respan integrate claude-code",
2322
+ "respan integrate claude-code --disable",
2323
+ "respan integrate claude-code --global",
2324
+ "respan integrate claude-code --local --project-id my-project",
2325
+ "respan integrate claude-code --attrs '{\"env\":\"prod\"}'",
2326
+ "respan integrate claude-code --dry-run"
2327
+ ],
2320
2328
  "flags": {
2321
2329
  "api-key": {
2322
2330
  "description": "API key (env: RESPAN_API_KEY)",
@@ -2327,8 +2335,9 @@
2327
2335
  "type": "option"
2328
2336
  },
2329
2337
  "base-url": {
2330
- "description": "Temporary API base URL override for this command",
2338
+ "description": "Respan API base URL (for enterprise deployments)",
2331
2339
  "name": "base-url",
2340
+ "default": "https://api.respan.ai/api",
2332
2341
  "hasDynamicHelp": false,
2333
2342
  "multiple": false,
2334
2343
  "type": "option"
@@ -2359,39 +2368,90 @@
2359
2368
  "allowNo": false,
2360
2369
  "type": "boolean"
2361
2370
  },
2362
- "input": {
2363
- "description": "Input text or JSON",
2364
- "name": "input",
2365
- "required": true,
2366
- "hasDynamicHelp": false,
2371
+ "local": {
2372
+ "description": "Write per-project config (default)",
2373
+ "exclusive": [
2374
+ "global"
2375
+ ],
2376
+ "name": "local",
2377
+ "allowNo": false,
2378
+ "type": "boolean"
2379
+ },
2380
+ "global": {
2381
+ "description": "Write user-level global config",
2382
+ "exclusive": [
2383
+ "local"
2384
+ ],
2385
+ "name": "global",
2386
+ "allowNo": false,
2387
+ "type": "boolean"
2388
+ },
2389
+ "enable": {
2390
+ "description": "Enable tracing (default)",
2391
+ "exclusive": [
2392
+ "disable"
2393
+ ],
2394
+ "name": "enable",
2395
+ "allowNo": false,
2396
+ "type": "boolean"
2397
+ },
2398
+ "disable": {
2399
+ "description": "Disable tracing",
2400
+ "exclusive": [
2401
+ "enable"
2402
+ ],
2403
+ "name": "disable",
2404
+ "allowNo": false,
2405
+ "type": "boolean"
2406
+ },
2407
+ "project-id": {
2408
+ "description": "Respan project ID (added to metadata / resource attributes)",
2409
+ "env": "RESPAN_PROJECT_ID",
2410
+ "name": "project-id",
2411
+ "hasDynamicHelp": false,
2367
2412
  "multiple": false,
2368
2413
  "type": "option"
2369
2414
  },
2370
- "output": {
2371
- "description": "Output text or JSON",
2372
- "name": "output",
2415
+ "attrs": {
2416
+ "description": "Custom attributes JSON (e.g. '{\"env\":\"prod\"}')",
2417
+ "name": "attrs",
2418
+ "default": "{}",
2373
2419
  "hasDynamicHelp": false,
2374
2420
  "multiple": false,
2375
2421
  "type": "option"
2376
2422
  },
2377
- "model": {
2378
- "description": "Model name",
2379
- "name": "model",
2423
+ "customer-id": {
2424
+ "description": "Customer/user identifier for traces (e.g. your name or email)",
2425
+ "env": "RESPAN_CUSTOMER_ID",
2426
+ "name": "customer-id",
2380
2427
  "hasDynamicHelp": false,
2381
2428
  "multiple": false,
2382
2429
  "type": "option"
2383
2430
  },
2384
- "metadata": {
2385
- "description": "Metadata as JSON string",
2386
- "name": "metadata",
2431
+ "span-name": {
2432
+ "description": "Root span name for traces (default: claude-code)",
2433
+ "name": "span-name",
2387
2434
  "hasDynamicHelp": false,
2388
2435
  "multiple": false,
2389
2436
  "type": "option"
2437
+ },
2438
+ "workflow-name": {
2439
+ "description": "Workflow name for traces (default: claude-code)",
2440
+ "name": "workflow-name",
2441
+ "hasDynamicHelp": false,
2442
+ "multiple": false,
2443
+ "type": "option"
2444
+ },
2445
+ "dry-run": {
2446
+ "description": "Preview changes without writing files",
2447
+ "name": "dry-run",
2448
+ "allowNo": false,
2449
+ "type": "boolean"
2390
2450
  }
2391
2451
  },
2392
2452
  "hasDynamicHelp": false,
2393
2453
  "hiddenAliases": [],
2394
- "id": "logs:create",
2454
+ "id": "integrate:claude-code",
2395
2455
  "pluginAlias": "@respan/cli",
2396
2456
  "pluginName": "@respan/cli",
2397
2457
  "pluginType": "core",
@@ -2401,20 +2461,22 @@
2401
2461
  "relativePath": [
2402
2462
  "dist",
2403
2463
  "commands",
2404
- "logs",
2405
- "create.js"
2464
+ "integrate",
2465
+ "claude-code.js"
2406
2466
  ]
2407
2467
  },
2408
- "logs:get": {
2468
+ "integrate:codex-cli": {
2409
2469
  "aliases": [],
2410
- "args": {
2411
- "id": {
2412
- "description": "Span ID",
2413
- "name": "id",
2414
- "required": true
2415
- }
2416
- },
2417
- "description": "Get a specific log span",
2470
+ "args": {},
2471
+ "description": "Integrate Respan with Codex CLI.\n\nInstalls a notify hook that reads session JSONL files and sends\nthem to Respan as structured spans (chat, tool, reasoning).\n\nScope:\n --global Install hook script + register notify in ~/.codex/config.toml\n --local Write .codex/respan.json with customer_id, span_name, etc.\n\nDefault behavior installs the global notify hook and writes local project config.",
2472
+ "examples": [
2473
+ "respan integrate codex-cli",
2474
+ "respan integrate codex-cli --disable",
2475
+ "respan integrate codex-cli --global",
2476
+ "respan integrate codex-cli --local --customer-id frank",
2477
+ "respan integrate codex-cli --attrs '{\"env\":\"prod\"}'",
2478
+ "respan integrate codex-cli --dry-run"
2479
+ ],
2418
2480
  "flags": {
2419
2481
  "api-key": {
2420
2482
  "description": "API key (env: RESPAN_API_KEY)",
@@ -2425,8 +2487,9 @@
2425
2487
  "type": "option"
2426
2488
  },
2427
2489
  "base-url": {
2428
- "description": "Temporary API base URL override for this command",
2490
+ "description": "Respan API base URL (for enterprise deployments)",
2429
2491
  "name": "base-url",
2492
+ "default": "https://api.respan.ai/api",
2430
2493
  "hasDynamicHelp": false,
2431
2494
  "multiple": false,
2432
2495
  "type": "option"
@@ -2456,11 +2519,91 @@
2456
2519
  "name": "verbose",
2457
2520
  "allowNo": false,
2458
2521
  "type": "boolean"
2522
+ },
2523
+ "local": {
2524
+ "description": "Write per-project config (default)",
2525
+ "exclusive": [
2526
+ "global"
2527
+ ],
2528
+ "name": "local",
2529
+ "allowNo": false,
2530
+ "type": "boolean"
2531
+ },
2532
+ "global": {
2533
+ "description": "Write user-level global config",
2534
+ "exclusive": [
2535
+ "local"
2536
+ ],
2537
+ "name": "global",
2538
+ "allowNo": false,
2539
+ "type": "boolean"
2540
+ },
2541
+ "enable": {
2542
+ "description": "Enable tracing (default)",
2543
+ "exclusive": [
2544
+ "disable"
2545
+ ],
2546
+ "name": "enable",
2547
+ "allowNo": false,
2548
+ "type": "boolean"
2549
+ },
2550
+ "disable": {
2551
+ "description": "Disable tracing",
2552
+ "exclusive": [
2553
+ "enable"
2554
+ ],
2555
+ "name": "disable",
2556
+ "allowNo": false,
2557
+ "type": "boolean"
2558
+ },
2559
+ "project-id": {
2560
+ "description": "Respan project ID (added to metadata / resource attributes)",
2561
+ "env": "RESPAN_PROJECT_ID",
2562
+ "name": "project-id",
2563
+ "hasDynamicHelp": false,
2564
+ "multiple": false,
2565
+ "type": "option"
2566
+ },
2567
+ "attrs": {
2568
+ "description": "Custom attributes JSON (e.g. '{\"env\":\"prod\"}')",
2569
+ "name": "attrs",
2570
+ "default": "{}",
2571
+ "hasDynamicHelp": false,
2572
+ "multiple": false,
2573
+ "type": "option"
2574
+ },
2575
+ "customer-id": {
2576
+ "description": "Customer/user identifier for traces (e.g. your name or email)",
2577
+ "env": "RESPAN_CUSTOMER_ID",
2578
+ "name": "customer-id",
2579
+ "hasDynamicHelp": false,
2580
+ "multiple": false,
2581
+ "type": "option"
2582
+ },
2583
+ "span-name": {
2584
+ "description": "Root span name for traces (default: claude-code)",
2585
+ "name": "span-name",
2586
+ "hasDynamicHelp": false,
2587
+ "multiple": false,
2588
+ "type": "option"
2589
+ },
2590
+ "workflow-name": {
2591
+ "description": "Workflow name for traces (default: claude-code)",
2592
+ "name": "workflow-name",
2593
+ "hasDynamicHelp": false,
2594
+ "multiple": false,
2595
+ "type": "option"
2596
+ },
2597
+ "dry-run": {
2598
+ "description": "Preview changes without writing files",
2599
+ "name": "dry-run",
2600
+ "allowNo": false,
2601
+ "type": "boolean"
2459
2602
  }
2460
2603
  },
2461
2604
  "hasDynamicHelp": false,
2462
2605
  "hiddenAliases": [],
2463
- "id": "logs:get",
2606
+ "id": "integrate:codex-cli",
2464
2607
  "pluginAlias": "@respan/cli",
2465
2608
  "pluginName": "@respan/cli",
2466
2609
  "pluginType": "core",
@@ -2470,14 +2613,21 @@
2470
2613
  "relativePath": [
2471
2614
  "dist",
2472
2615
  "commands",
2473
- "logs",
2474
- "get.js"
2616
+ "integrate",
2617
+ "codex-cli.js"
2475
2618
  ]
2476
2619
  },
2477
- "logs:list": {
2620
+ "integrate:gemini-cli": {
2478
2621
  "aliases": [],
2479
2622
  "args": {},
2480
- "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",
2623
+ "description": "Integrate Respan with Gemini CLI.\n\nInstalls an AfterModel hook that captures LLM request/response data\nand sends it to Respan as structured spans with model, token counts,\nand input/output.\n\nScope:\n --global Write to ~/.gemini/settings.json (default)\n --local Write to .gemini/settings.json in project root\n\nGemini CLI ignores workspace-level telemetry settings, so --global is the default.",
2624
+ "examples": [
2625
+ "respan integrate gemini-cli",
2626
+ "respan integrate gemini-cli --disable",
2627
+ "respan integrate gemini-cli --local",
2628
+ "respan integrate gemini-cli --project-id my-project --attrs '{\"env\":\"prod\"}'",
2629
+ "respan integrate gemini-cli --dry-run"
2630
+ ],
2481
2631
  "flags": {
2482
2632
  "api-key": {
2483
2633
  "description": "API key (env: RESPAN_API_KEY)",
@@ -2488,8 +2638,9 @@
2488
2638
  "type": "option"
2489
2639
  },
2490
2640
  "base-url": {
2491
- "description": "Temporary API base URL override for this command",
2641
+ "description": "Respan API base URL (for enterprise deployments)",
2492
2642
  "name": "base-url",
2643
+ "default": "https://api.respan.ai/api",
2493
2644
  "hasDynamicHelp": false,
2494
2645
  "multiple": false,
2495
2646
  "type": "option"
@@ -2520,75 +2671,90 @@
2520
2671
  "allowNo": false,
2521
2672
  "type": "boolean"
2522
2673
  },
2523
- "limit": {
2524
- "description": "Number of results per page (max 1000)",
2525
- "name": "limit",
2526
- "default": 50,
2527
- "hasDynamicHelp": false,
2528
- "multiple": false,
2529
- "type": "option"
2674
+ "local": {
2675
+ "description": "Write per-project config (default)",
2676
+ "exclusive": [
2677
+ "global"
2678
+ ],
2679
+ "name": "local",
2680
+ "allowNo": false,
2681
+ "type": "boolean"
2530
2682
  },
2531
- "page": {
2532
- "description": "Page number",
2533
- "name": "page",
2534
- "default": 1,
2535
- "hasDynamicHelp": false,
2536
- "multiple": false,
2537
- "type": "option"
2683
+ "global": {
2684
+ "description": "Write user-level global config",
2685
+ "exclusive": [
2686
+ "local"
2687
+ ],
2688
+ "name": "global",
2689
+ "allowNo": false,
2690
+ "type": "boolean"
2538
2691
  },
2539
- "sort-by": {
2540
- "description": "Sort field (prefix with - for descending, e.g. -cost, -latency)",
2541
- "name": "sort-by",
2542
- "hasDynamicHelp": false,
2543
- "multiple": false,
2544
- "type": "option"
2692
+ "enable": {
2693
+ "description": "Enable tracing (default)",
2694
+ "exclusive": [
2695
+ "disable"
2696
+ ],
2697
+ "name": "enable",
2698
+ "allowNo": false,
2699
+ "type": "boolean"
2545
2700
  },
2546
- "start-time": {
2547
- "description": "Start time filter (ISO 8601)",
2548
- "name": "start-time",
2549
- "hasDynamicHelp": false,
2550
- "multiple": false,
2551
- "type": "option"
2701
+ "disable": {
2702
+ "description": "Disable tracing",
2703
+ "exclusive": [
2704
+ "enable"
2705
+ ],
2706
+ "name": "disable",
2707
+ "allowNo": false,
2708
+ "type": "boolean"
2552
2709
  },
2553
- "end-time": {
2554
- "description": "End time filter (ISO 8601)",
2555
- "name": "end-time",
2710
+ "project-id": {
2711
+ "description": "Respan project ID (added to metadata / resource attributes)",
2712
+ "env": "RESPAN_PROJECT_ID",
2713
+ "name": "project-id",
2556
2714
  "hasDynamicHelp": false,
2557
2715
  "multiple": false,
2558
2716
  "type": "option"
2559
2717
  },
2560
- "filter": {
2561
- "description": "Filter in field:operator:value format (repeatable)",
2562
- "name": "filter",
2718
+ "attrs": {
2719
+ "description": "Custom attributes JSON (e.g. '{\"env\":\"prod\"}')",
2720
+ "name": "attrs",
2721
+ "default": "{}",
2563
2722
  "hasDynamicHelp": false,
2564
- "multiple": true,
2723
+ "multiple": false,
2565
2724
  "type": "option"
2566
2725
  },
2567
- "all-envs": {
2568
- "description": "Include all environments (true/false)",
2569
- "name": "all-envs",
2726
+ "customer-id": {
2727
+ "description": "Customer/user identifier for traces (e.g. your name or email)",
2728
+ "env": "RESPAN_CUSTOMER_ID",
2729
+ "name": "customer-id",
2570
2730
  "hasDynamicHelp": false,
2571
2731
  "multiple": false,
2572
2732
  "type": "option"
2573
2733
  },
2574
- "is-test": {
2575
- "description": "Filter by test (true) or production (false) environment",
2576
- "name": "is-test",
2734
+ "span-name": {
2735
+ "description": "Root span name for traces (default: claude-code)",
2736
+ "name": "span-name",
2577
2737
  "hasDynamicHelp": false,
2578
2738
  "multiple": false,
2579
2739
  "type": "option"
2580
2740
  },
2581
- "include-fields": {
2582
- "description": "Comma-separated fields to include in response",
2583
- "name": "include-fields",
2741
+ "workflow-name": {
2742
+ "description": "Workflow name for traces (default: claude-code)",
2743
+ "name": "workflow-name",
2584
2744
  "hasDynamicHelp": false,
2585
2745
  "multiple": false,
2586
2746
  "type": "option"
2747
+ },
2748
+ "dry-run": {
2749
+ "description": "Preview changes without writing files",
2750
+ "name": "dry-run",
2751
+ "allowNo": false,
2752
+ "type": "boolean"
2587
2753
  }
2588
2754
  },
2589
2755
  "hasDynamicHelp": false,
2590
2756
  "hiddenAliases": [],
2591
- "id": "logs:list",
2757
+ "id": "integrate:gemini-cli",
2592
2758
  "pluginAlias": "@respan/cli",
2593
2759
  "pluginName": "@respan/cli",
2594
2760
  "pluginType": "core",
@@ -2598,14 +2764,21 @@
2598
2764
  "relativePath": [
2599
2765
  "dist",
2600
2766
  "commands",
2601
- "logs",
2602
- "list.js"
2767
+ "integrate",
2768
+ "gemini-cli.js"
2603
2769
  ]
2604
2770
  },
2605
- "logs:summary": {
2771
+ "integrate:opencode": {
2606
2772
  "aliases": [],
2607
2773
  "args": {},
2608
- "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",
2774
+ "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.",
2775
+ "examples": [
2776
+ "respan integrate opencode",
2777
+ "respan integrate opencode --disable",
2778
+ "respan integrate opencode --global",
2779
+ "respan integrate opencode --project-id my-project --attrs '{\"env\":\"prod\"}'",
2780
+ "respan integrate opencode --dry-run"
2781
+ ],
2609
2782
  "flags": {
2610
2783
  "api-key": {
2611
2784
  "description": "API key (env: RESPAN_API_KEY)",
@@ -2616,8 +2789,9 @@
2616
2789
  "type": "option"
2617
2790
  },
2618
2791
  "base-url": {
2619
- "description": "Temporary API base URL override for this command",
2792
+ "description": "Respan API base URL (for enterprise deployments)",
2620
2793
  "name": "base-url",
2794
+ "default": "https://api.respan.ai/api",
2621
2795
  "hasDynamicHelp": false,
2622
2796
  "multiple": false,
2623
2797
  "type": "option"
@@ -2648,47 +2822,90 @@
2648
2822
  "allowNo": false,
2649
2823
  "type": "boolean"
2650
2824
  },
2651
- "start-time": {
2652
- "description": "Start time (ISO 8601)",
2653
- "name": "start-time",
2654
- "required": true,
2825
+ "local": {
2826
+ "description": "Write per-project config (default)",
2827
+ "exclusive": [
2828
+ "global"
2829
+ ],
2830
+ "name": "local",
2831
+ "allowNo": false,
2832
+ "type": "boolean"
2833
+ },
2834
+ "global": {
2835
+ "description": "Write user-level global config",
2836
+ "exclusive": [
2837
+ "local"
2838
+ ],
2839
+ "name": "global",
2840
+ "allowNo": false,
2841
+ "type": "boolean"
2842
+ },
2843
+ "enable": {
2844
+ "description": "Enable tracing (default)",
2845
+ "exclusive": [
2846
+ "disable"
2847
+ ],
2848
+ "name": "enable",
2849
+ "allowNo": false,
2850
+ "type": "boolean"
2851
+ },
2852
+ "disable": {
2853
+ "description": "Disable tracing",
2854
+ "exclusive": [
2855
+ "enable"
2856
+ ],
2857
+ "name": "disable",
2858
+ "allowNo": false,
2859
+ "type": "boolean"
2860
+ },
2861
+ "project-id": {
2862
+ "description": "Respan project ID (added to metadata / resource attributes)",
2863
+ "env": "RESPAN_PROJECT_ID",
2864
+ "name": "project-id",
2655
2865
  "hasDynamicHelp": false,
2656
2866
  "multiple": false,
2657
2867
  "type": "option"
2658
2868
  },
2659
- "end-time": {
2660
- "description": "End time (ISO 8601)",
2661
- "name": "end-time",
2662
- "required": true,
2869
+ "attrs": {
2870
+ "description": "Custom attributes JSON (e.g. '{\"env\":\"prod\"}')",
2871
+ "name": "attrs",
2872
+ "default": "{}",
2663
2873
  "hasDynamicHelp": false,
2664
2874
  "multiple": false,
2665
2875
  "type": "option"
2666
2876
  },
2667
- "filter": {
2668
- "description": "Filter in field:operator:value format (repeatable)",
2669
- "name": "filter",
2877
+ "customer-id": {
2878
+ "description": "Customer/user identifier for traces (e.g. your name or email)",
2879
+ "env": "RESPAN_CUSTOMER_ID",
2880
+ "name": "customer-id",
2670
2881
  "hasDynamicHelp": false,
2671
- "multiple": true,
2882
+ "multiple": false,
2672
2883
  "type": "option"
2673
2884
  },
2674
- "all-envs": {
2675
- "description": "Include all environments (true/false)",
2676
- "name": "all-envs",
2885
+ "span-name": {
2886
+ "description": "Root span name for traces (default: claude-code)",
2887
+ "name": "span-name",
2677
2888
  "hasDynamicHelp": false,
2678
2889
  "multiple": false,
2679
2890
  "type": "option"
2680
2891
  },
2681
- "is-test": {
2682
- "description": "Filter by test (true) or production (false) environment",
2683
- "name": "is-test",
2892
+ "workflow-name": {
2893
+ "description": "Workflow name for traces (default: claude-code)",
2894
+ "name": "workflow-name",
2684
2895
  "hasDynamicHelp": false,
2685
2896
  "multiple": false,
2686
2897
  "type": "option"
2898
+ },
2899
+ "dry-run": {
2900
+ "description": "Preview changes without writing files",
2901
+ "name": "dry-run",
2902
+ "allowNo": false,
2903
+ "type": "boolean"
2687
2904
  }
2688
2905
  },
2689
2906
  "hasDynamicHelp": false,
2690
2907
  "hiddenAliases": [],
2691
- "id": "logs:summary",
2908
+ "id": "integrate:opencode",
2692
2909
  "pluginAlias": "@respan/cli",
2693
2910
  "pluginName": "@respan/cli",
2694
2911
  "pluginType": "core",
@@ -2698,20 +2915,24 @@
2698
2915
  "relativePath": [
2699
2916
  "dist",
2700
2917
  "commands",
2701
- "logs",
2702
- "summary.js"
2918
+ "integrate",
2919
+ "opencode.js"
2703
2920
  ]
2704
2921
  },
2705
- "prompts:create-version": {
2922
+ "integrate:pi": {
2706
2923
  "aliases": [],
2707
- "args": {
2708
- "prompt-id": {
2709
- "description": "Prompt ID",
2710
- "name": "prompt-id",
2711
- "required": true
2712
- }
2713
- },
2714
- "description": "Create a new version of a prompt",
2924
+ "args": {},
2925
+ "description": "Integrate Respan with the pi coding agent (https://pi.dev).\n\nInstalls the @respan/instrumentation-pi pi package — a pi extension that\ntraces every agent run as one turn span per prompt with chat and tool spans underneath,\ncorrelating all runs of a pi session by its session id — and writes a\nnon-secret respan.json config for it.\n\nScope:\n --global pi install npm:@respan/instrumentation-pi + ~/.pi/agent/respan.json (default)\n --local pi install -l npm:@respan/instrumentation-pi + .pi/respan.json in the project root\n\nTrace scope (--trace-scope, \"trace_scope\" in respan.json):\n session one multi-root trace per pi session, across processes and pauses (default)\n run one trace per agent run; runs of a session share a thread id\n\nDurable delivery (--with-collector):\n Sets base_url to a local Respan collector (http://127.0.0.1:4318) so traces\n go through its persistent queue and survive Respan outages. Run\n \"respan collector start\" once per machine.\n\nCredentials are never written to these files: the extension reads\nRESPAN_API_KEY or ~/.respan/credentials.json (from \"respan auth login\").",
2926
+ "examples": [
2927
+ "respan integrate pi",
2928
+ "respan integrate pi --disable",
2929
+ "respan integrate pi --local",
2930
+ "respan integrate pi --customer-id frank --workflow-name email-agent",
2931
+ "respan integrate pi --trace-scope run",
2932
+ "respan integrate pi --with-collector",
2933
+ "respan integrate pi --project-id my-project --attrs '{\"env\":\"prod\"}'",
2934
+ "respan integrate pi --dry-run"
2935
+ ],
2715
2936
  "flags": {
2716
2937
  "api-key": {
2717
2938
  "description": "API key (env: RESPAN_API_KEY)",
@@ -2722,8 +2943,9 @@
2722
2943
  "type": "option"
2723
2944
  },
2724
2945
  "base-url": {
2725
- "description": "Temporary API base URL override for this command",
2946
+ "description": "Respan API base URL (for enterprise deployments)",
2726
2947
  "name": "base-url",
2948
+ "default": "https://api.respan.ai/api",
2727
2949
  "hasDynamicHelp": false,
2728
2950
  "multiple": false,
2729
2951
  "type": "option"
@@ -2754,31 +2976,106 @@
2754
2976
  "allowNo": false,
2755
2977
  "type": "boolean"
2756
2978
  },
2757
- "messages": {
2758
- "description": "Messages as JSON array string",
2759
- "name": "messages",
2760
- "required": true,
2979
+ "local": {
2980
+ "description": "Write per-project config (default)",
2981
+ "exclusive": [
2982
+ "global"
2983
+ ],
2984
+ "name": "local",
2985
+ "allowNo": false,
2986
+ "type": "boolean"
2987
+ },
2988
+ "global": {
2989
+ "description": "Write user-level global config",
2990
+ "exclusive": [
2991
+ "local"
2992
+ ],
2993
+ "name": "global",
2994
+ "allowNo": false,
2995
+ "type": "boolean"
2996
+ },
2997
+ "enable": {
2998
+ "description": "Enable tracing (default)",
2999
+ "exclusive": [
3000
+ "disable"
3001
+ ],
3002
+ "name": "enable",
3003
+ "allowNo": false,
3004
+ "type": "boolean"
3005
+ },
3006
+ "disable": {
3007
+ "description": "Disable tracing",
3008
+ "exclusive": [
3009
+ "enable"
3010
+ ],
3011
+ "name": "disable",
3012
+ "allowNo": false,
3013
+ "type": "boolean"
3014
+ },
3015
+ "project-id": {
3016
+ "description": "Respan project ID (added to metadata / resource attributes)",
3017
+ "env": "RESPAN_PROJECT_ID",
3018
+ "name": "project-id",
2761
3019
  "hasDynamicHelp": false,
2762
3020
  "multiple": false,
2763
3021
  "type": "option"
2764
3022
  },
2765
- "model": {
2766
- "description": "Model name",
2767
- "name": "model",
3023
+ "attrs": {
3024
+ "description": "Custom attributes JSON (e.g. '{\"env\":\"prod\"}')",
3025
+ "name": "attrs",
3026
+ "default": "{}",
2768
3027
  "hasDynamicHelp": false,
2769
3028
  "multiple": false,
2770
3029
  "type": "option"
2771
3030
  },
2772
- "temperature": {
2773
- "description": "Temperature value",
2774
- "name": "temperature",
3031
+ "customer-id": {
3032
+ "description": "Customer/user identifier for traces (e.g. your name or email)",
3033
+ "env": "RESPAN_CUSTOMER_ID",
3034
+ "name": "customer-id",
2775
3035
  "hasDynamicHelp": false,
2776
3036
  "multiple": false,
2777
3037
  "type": "option"
2778
3038
  },
2779
- "max-tokens": {
2780
- "description": "Max tokens",
2781
- "name": "max-tokens",
3039
+ "span-name": {
3040
+ "description": "Alias of --workflow-name (default: pi)",
3041
+ "name": "span-name",
3042
+ "hasDynamicHelp": false,
3043
+ "multiple": false,
3044
+ "type": "option"
3045
+ },
3046
+ "workflow-name": {
3047
+ "description": "traceloop.workflow.name on pi turn spans (default: pi)",
3048
+ "name": "workflow-name",
3049
+ "hasDynamicHelp": false,
3050
+ "multiple": false,
3051
+ "type": "option"
3052
+ },
3053
+ "dry-run": {
3054
+ "description": "Preview changes without writing files",
3055
+ "name": "dry-run",
3056
+ "allowNo": false,
3057
+ "type": "boolean"
3058
+ },
3059
+ "trace-scope": {
3060
+ "description": "Trace scope: \"session\" = one multi-root trace per pi session (default), \"run\" = one trace per agent run",
3061
+ "name": "trace-scope",
3062
+ "hasDynamicHelp": false,
3063
+ "multiple": false,
3064
+ "options": [
3065
+ "run",
3066
+ "session"
3067
+ ],
3068
+ "type": "option"
3069
+ },
3070
+ "with-collector": {
3071
+ "description": "Send traces through a local Respan collector (respan collector start) for durable delivery",
3072
+ "name": "with-collector",
3073
+ "allowNo": false,
3074
+ "type": "boolean"
3075
+ },
3076
+ "collector-port": {
3077
+ "description": "Port of the local collector, with --with-collector (default: 4318)",
3078
+ "name": "collector-port",
2782
3079
  "hasDynamicHelp": false,
2783
3080
  "multiple": false,
2784
3081
  "type": "option"
@@ -2786,7 +3083,7 @@
2786
3083
  },
2787
3084
  "hasDynamicHelp": false,
2788
3085
  "hiddenAliases": [],
2789
- "id": "prompts:create-version",
3086
+ "id": "integrate:pi",
2790
3087
  "pluginAlias": "@respan/cli",
2791
3088
  "pluginName": "@respan/cli",
2792
3089
  "pluginType": "core",
@@ -2796,14 +3093,14 @@
2796
3093
  "relativePath": [
2797
3094
  "dist",
2798
3095
  "commands",
2799
- "prompts",
2800
- "create-version.js"
3096
+ "integrate",
3097
+ "pi.js"
2801
3098
  ]
2802
3099
  },
2803
- "prompts:create": {
3100
+ "logs:create": {
2804
3101
  "aliases": [],
2805
3102
  "args": {},
2806
- "description": "Create a new prompt",
3103
+ "description": "Create a log span",
2807
3104
  "flags": {
2808
3105
  "api-key": {
2809
3106
  "description": "API key (env: RESPAN_API_KEY)",
@@ -2846,94 +3143,39 @@
2846
3143
  "allowNo": false,
2847
3144
  "type": "boolean"
2848
3145
  },
2849
- "name": {
2850
- "description": "Prompt name",
2851
- "name": "name",
3146
+ "input": {
3147
+ "description": "Input text or JSON",
3148
+ "name": "input",
2852
3149
  "required": true,
2853
3150
  "hasDynamicHelp": false,
2854
3151
  "multiple": false,
2855
3152
  "type": "option"
2856
3153
  },
2857
- "description": {
2858
- "description": "Prompt description",
2859
- "name": "description",
2860
- "hasDynamicHelp": false,
2861
- "multiple": false,
2862
- "type": "option"
2863
- }
2864
- },
2865
- "hasDynamicHelp": false,
2866
- "hiddenAliases": [],
2867
- "id": "prompts:create",
2868
- "pluginAlias": "@respan/cli",
2869
- "pluginName": "@respan/cli",
2870
- "pluginType": "core",
2871
- "strict": true,
2872
- "enableJsonFlag": false,
2873
- "isESM": true,
2874
- "relativePath": [
2875
- "dist",
2876
- "commands",
2877
- "prompts",
2878
- "create.js"
2879
- ]
2880
- },
2881
- "prompts:get": {
2882
- "aliases": [],
2883
- "args": {
2884
- "id": {
2885
- "description": "Prompt ID",
2886
- "name": "id",
2887
- "required": true
2888
- }
2889
- },
2890
- "description": "Get a specific prompt",
2891
- "flags": {
2892
- "api-key": {
2893
- "description": "API key (env: RESPAN_API_KEY)",
2894
- "env": "RESPAN_API_KEY",
2895
- "name": "api-key",
3154
+ "output": {
3155
+ "description": "Output text or JSON",
3156
+ "name": "output",
2896
3157
  "hasDynamicHelp": false,
2897
3158
  "multiple": false,
2898
3159
  "type": "option"
2899
3160
  },
2900
- "base-url": {
2901
- "description": "Temporary API base URL override for this command",
2902
- "name": "base-url",
3161
+ "model": {
3162
+ "description": "Model name",
3163
+ "name": "model",
2903
3164
  "hasDynamicHelp": false,
2904
3165
  "multiple": false,
2905
3166
  "type": "option"
2906
3167
  },
2907
- "profile": {
2908
- "description": "Named profile to use",
2909
- "name": "profile",
3168
+ "metadata": {
3169
+ "description": "Metadata as JSON string",
3170
+ "name": "metadata",
2910
3171
  "hasDynamicHelp": false,
2911
3172
  "multiple": false,
2912
3173
  "type": "option"
2913
- },
2914
- "json": {
2915
- "description": "Output as JSON",
2916
- "name": "json",
2917
- "allowNo": false,
2918
- "type": "boolean"
2919
- },
2920
- "csv": {
2921
- "description": "Output as CSV",
2922
- "name": "csv",
2923
- "allowNo": false,
2924
- "type": "boolean"
2925
- },
2926
- "verbose": {
2927
- "char": "v",
2928
- "description": "Show verbose output",
2929
- "name": "verbose",
2930
- "allowNo": false,
2931
- "type": "boolean"
2932
3174
  }
2933
3175
  },
2934
3176
  "hasDynamicHelp": false,
2935
3177
  "hiddenAliases": [],
2936
- "id": "prompts:get",
3178
+ "id": "logs:create",
2937
3179
  "pluginAlias": "@respan/cli",
2938
3180
  "pluginName": "@respan/cli",
2939
3181
  "pluginType": "core",
@@ -2943,14 +3185,20 @@
2943
3185
  "relativePath": [
2944
3186
  "dist",
2945
3187
  "commands",
2946
- "prompts",
2947
- "get.js"
3188
+ "logs",
3189
+ "create.js"
2948
3190
  ]
2949
3191
  },
2950
- "prompts:list": {
3192
+ "logs:get": {
2951
3193
  "aliases": [],
2952
- "args": {},
2953
- "description": "List prompts",
3194
+ "args": {
3195
+ "id": {
3196
+ "description": "Span ID",
3197
+ "name": "id",
3198
+ "required": true
3199
+ }
3200
+ },
3201
+ "description": "Get a specific log span",
2954
3202
  "flags": {
2955
3203
  "api-key": {
2956
3204
  "description": "API key (env: RESPAN_API_KEY)",
@@ -2985,26 +3233,18 @@
2985
3233
  "name": "csv",
2986
3234
  "allowNo": false,
2987
3235
  "type": "boolean"
2988
- },
2989
- "verbose": {
2990
- "char": "v",
2991
- "description": "Show verbose output",
2992
- "name": "verbose",
2993
- "allowNo": false,
2994
- "type": "boolean"
2995
- },
2996
- "limit": {
2997
- "description": "Number of results per page",
2998
- "name": "limit",
2999
- "default": 50,
3000
- "hasDynamicHelp": false,
3001
- "multiple": false,
3002
- "type": "option"
3236
+ },
3237
+ "verbose": {
3238
+ "char": "v",
3239
+ "description": "Show verbose output",
3240
+ "name": "verbose",
3241
+ "allowNo": false,
3242
+ "type": "boolean"
3003
3243
  }
3004
3244
  },
3005
3245
  "hasDynamicHelp": false,
3006
3246
  "hiddenAliases": [],
3007
- "id": "prompts:list",
3247
+ "id": "logs:get",
3008
3248
  "pluginAlias": "@respan/cli",
3009
3249
  "pluginName": "@respan/cli",
3010
3250
  "pluginType": "core",
@@ -3014,20 +3254,14 @@
3014
3254
  "relativePath": [
3015
3255
  "dist",
3016
3256
  "commands",
3017
- "prompts",
3018
- "list.js"
3257
+ "logs",
3258
+ "get.js"
3019
3259
  ]
3020
3260
  },
3021
- "prompts:update": {
3261
+ "logs:list": {
3022
3262
  "aliases": [],
3023
- "args": {
3024
- "id": {
3025
- "description": "Prompt ID",
3026
- "name": "id",
3027
- "required": true
3028
- }
3029
- },
3030
- "description": "Update a prompt",
3263
+ "args": {},
3264
+ "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",
3031
3265
  "flags": {
3032
3266
  "api-key": {
3033
3267
  "description": "API key (env: RESPAN_API_KEY)",
@@ -3070,16 +3304,67 @@
3070
3304
  "allowNo": false,
3071
3305
  "type": "boolean"
3072
3306
  },
3073
- "name": {
3074
- "description": "Prompt name",
3075
- "name": "name",
3307
+ "limit": {
3308
+ "description": "Number of results per page (max 1000)",
3309
+ "name": "limit",
3310
+ "default": 50,
3076
3311
  "hasDynamicHelp": false,
3077
3312
  "multiple": false,
3078
3313
  "type": "option"
3079
3314
  },
3080
- "description": {
3081
- "description": "Prompt description",
3082
- "name": "description",
3315
+ "page": {
3316
+ "description": "Page number",
3317
+ "name": "page",
3318
+ "default": 1,
3319
+ "hasDynamicHelp": false,
3320
+ "multiple": false,
3321
+ "type": "option"
3322
+ },
3323
+ "sort-by": {
3324
+ "description": "Sort field (prefix with - for descending, e.g. -cost, -latency)",
3325
+ "name": "sort-by",
3326
+ "hasDynamicHelp": false,
3327
+ "multiple": false,
3328
+ "type": "option"
3329
+ },
3330
+ "start-time": {
3331
+ "description": "Start time filter (ISO 8601)",
3332
+ "name": "start-time",
3333
+ "hasDynamicHelp": false,
3334
+ "multiple": false,
3335
+ "type": "option"
3336
+ },
3337
+ "end-time": {
3338
+ "description": "End time filter (ISO 8601)",
3339
+ "name": "end-time",
3340
+ "hasDynamicHelp": false,
3341
+ "multiple": false,
3342
+ "type": "option"
3343
+ },
3344
+ "filter": {
3345
+ "description": "Filter in field:operator:value format (repeatable)",
3346
+ "name": "filter",
3347
+ "hasDynamicHelp": false,
3348
+ "multiple": true,
3349
+ "type": "option"
3350
+ },
3351
+ "all-envs": {
3352
+ "description": "Include all environments (true/false)",
3353
+ "name": "all-envs",
3354
+ "hasDynamicHelp": false,
3355
+ "multiple": false,
3356
+ "type": "option"
3357
+ },
3358
+ "is-test": {
3359
+ "description": "Filter by test (true) or production (false) environment",
3360
+ "name": "is-test",
3361
+ "hasDynamicHelp": false,
3362
+ "multiple": false,
3363
+ "type": "option"
3364
+ },
3365
+ "include-fields": {
3366
+ "description": "Comma-separated fields to include in response",
3367
+ "name": "include-fields",
3083
3368
  "hasDynamicHelp": false,
3084
3369
  "multiple": false,
3085
3370
  "type": "option"
@@ -3087,7 +3372,7 @@
3087
3372
  },
3088
3373
  "hasDynamicHelp": false,
3089
3374
  "hiddenAliases": [],
3090
- "id": "prompts:update",
3375
+ "id": "logs:list",
3091
3376
  "pluginAlias": "@respan/cli",
3092
3377
  "pluginName": "@respan/cli",
3093
3378
  "pluginType": "core",
@@ -3097,20 +3382,14 @@
3097
3382
  "relativePath": [
3098
3383
  "dist",
3099
3384
  "commands",
3100
- "prompts",
3101
- "update.js"
3385
+ "logs",
3386
+ "list.js"
3102
3387
  ]
3103
3388
  },
3104
- "prompts:versions": {
3389
+ "logs:summary": {
3105
3390
  "aliases": [],
3106
- "args": {
3107
- "prompt-id": {
3108
- "description": "Prompt ID",
3109
- "name": "prompt-id",
3110
- "required": true
3111
- }
3112
- },
3113
- "description": "List versions of a prompt",
3391
+ "args": {},
3392
+ "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",
3114
3393
  "flags": {
3115
3394
  "api-key": {
3116
3395
  "description": "API key (env: RESPAN_API_KEY)",
@@ -3152,11 +3431,48 @@
3152
3431
  "name": "verbose",
3153
3432
  "allowNo": false,
3154
3433
  "type": "boolean"
3434
+ },
3435
+ "start-time": {
3436
+ "description": "Start time (ISO 8601)",
3437
+ "name": "start-time",
3438
+ "required": true,
3439
+ "hasDynamicHelp": false,
3440
+ "multiple": false,
3441
+ "type": "option"
3442
+ },
3443
+ "end-time": {
3444
+ "description": "End time (ISO 8601)",
3445
+ "name": "end-time",
3446
+ "required": true,
3447
+ "hasDynamicHelp": false,
3448
+ "multiple": false,
3449
+ "type": "option"
3450
+ },
3451
+ "filter": {
3452
+ "description": "Filter in field:operator:value format (repeatable)",
3453
+ "name": "filter",
3454
+ "hasDynamicHelp": false,
3455
+ "multiple": true,
3456
+ "type": "option"
3457
+ },
3458
+ "all-envs": {
3459
+ "description": "Include all environments (true/false)",
3460
+ "name": "all-envs",
3461
+ "hasDynamicHelp": false,
3462
+ "multiple": false,
3463
+ "type": "option"
3464
+ },
3465
+ "is-test": {
3466
+ "description": "Filter by test (true) or production (false) environment",
3467
+ "name": "is-test",
3468
+ "hasDynamicHelp": false,
3469
+ "multiple": false,
3470
+ "type": "option"
3155
3471
  }
3156
3472
  },
3157
3473
  "hasDynamicHelp": false,
3158
3474
  "hiddenAliases": [],
3159
- "id": "prompts:versions",
3475
+ "id": "logs:summary",
3160
3476
  "pluginAlias": "@respan/cli",
3161
3477
  "pluginName": "@respan/cli",
3162
3478
  "pluginType": "core",
@@ -3166,8 +3482,8 @@
3166
3482
  "relativePath": [
3167
3483
  "dist",
3168
3484
  "commands",
3169
- "prompts",
3170
- "versions.js"
3485
+ "logs",
3486
+ "summary.js"
3171
3487
  ]
3172
3488
  },
3173
3489
  "setup:doctor": {
@@ -3501,16 +3817,16 @@
3501
3817
  "tracing.js"
3502
3818
  ]
3503
3819
  },
3504
- "traces:get": {
3820
+ "prompts:create-version": {
3505
3821
  "aliases": [],
3506
3822
  "args": {
3507
- "id": {
3508
- "description": "Trace ID",
3509
- "name": "id",
3823
+ "prompt-id": {
3824
+ "description": "Prompt ID",
3825
+ "name": "prompt-id",
3510
3826
  "required": true
3511
3827
  }
3512
3828
  },
3513
- "description": "Get a specific trace",
3829
+ "description": "Create a new version of a prompt",
3514
3830
  "flags": {
3515
3831
  "api-key": {
3516
3832
  "description": "API key (env: RESPAN_API_KEY)",
@@ -3552,11 +3868,40 @@
3552
3868
  "name": "verbose",
3553
3869
  "allowNo": false,
3554
3870
  "type": "boolean"
3871
+ },
3872
+ "messages": {
3873
+ "description": "Messages as JSON array string",
3874
+ "name": "messages",
3875
+ "required": true,
3876
+ "hasDynamicHelp": false,
3877
+ "multiple": false,
3878
+ "type": "option"
3879
+ },
3880
+ "model": {
3881
+ "description": "Model name",
3882
+ "name": "model",
3883
+ "hasDynamicHelp": false,
3884
+ "multiple": false,
3885
+ "type": "option"
3886
+ },
3887
+ "temperature": {
3888
+ "description": "Temperature value",
3889
+ "name": "temperature",
3890
+ "hasDynamicHelp": false,
3891
+ "multiple": false,
3892
+ "type": "option"
3893
+ },
3894
+ "max-tokens": {
3895
+ "description": "Max tokens",
3896
+ "name": "max-tokens",
3897
+ "hasDynamicHelp": false,
3898
+ "multiple": false,
3899
+ "type": "option"
3555
3900
  }
3556
3901
  },
3557
3902
  "hasDynamicHelp": false,
3558
3903
  "hiddenAliases": [],
3559
- "id": "traces:get",
3904
+ "id": "prompts:create-version",
3560
3905
  "pluginAlias": "@respan/cli",
3561
3906
  "pluginName": "@respan/cli",
3562
3907
  "pluginType": "core",
@@ -3566,14 +3911,14 @@
3566
3911
  "relativePath": [
3567
3912
  "dist",
3568
3913
  "commands",
3569
- "traces",
3570
- "get.js"
3914
+ "prompts",
3915
+ "create-version.js"
3571
3916
  ]
3572
3917
  },
3573
- "traces:list": {
3918
+ "prompts:create": {
3574
3919
  "aliases": [],
3575
3920
  "args": {},
3576
- "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",
3921
+ "description": "Create a new prompt",
3577
3922
  "flags": {
3578
3923
  "api-key": {
3579
3924
  "description": "API key (env: RESPAN_API_KEY)",
@@ -3616,62 +3961,25 @@
3616
3961
  "allowNo": false,
3617
3962
  "type": "boolean"
3618
3963
  },
3619
- "limit": {
3620
- "description": "Number of results per page",
3621
- "name": "limit",
3622
- "default": 10,
3623
- "hasDynamicHelp": false,
3624
- "multiple": false,
3625
- "type": "option"
3626
- },
3627
- "page": {
3628
- "description": "Page number",
3629
- "name": "page",
3630
- "default": 1,
3631
- "hasDynamicHelp": false,
3632
- "multiple": false,
3633
- "type": "option"
3634
- },
3635
- "sort-by": {
3636
- "description": "Sort field (prefix with - for descending)",
3637
- "name": "sort-by",
3638
- "default": "-timestamp",
3639
- "hasDynamicHelp": false,
3640
- "multiple": false,
3641
- "type": "option"
3642
- },
3643
- "start-time": {
3644
- "description": "Start time filter (ISO 8601)",
3645
- "name": "start-time",
3646
- "hasDynamicHelp": false,
3647
- "multiple": false,
3648
- "type": "option"
3649
- },
3650
- "end-time": {
3651
- "description": "End time filter (ISO 8601)",
3652
- "name": "end-time",
3964
+ "name": {
3965
+ "description": "Prompt name",
3966
+ "name": "name",
3967
+ "required": true,
3653
3968
  "hasDynamicHelp": false,
3654
3969
  "multiple": false,
3655
3970
  "type": "option"
3656
3971
  },
3657
- "environment": {
3658
- "description": "Environment filter",
3659
- "name": "environment",
3972
+ "description": {
3973
+ "description": "Prompt description",
3974
+ "name": "description",
3660
3975
  "hasDynamicHelp": false,
3661
3976
  "multiple": false,
3662
3977
  "type": "option"
3663
- },
3664
- "filter": {
3665
- "description": "Filter in field:operator:value format (repeatable)",
3666
- "name": "filter",
3667
- "hasDynamicHelp": false,
3668
- "multiple": true,
3669
- "type": "option"
3670
3978
  }
3671
3979
  },
3672
3980
  "hasDynamicHelp": false,
3673
3981
  "hiddenAliases": [],
3674
- "id": "traces:list",
3982
+ "id": "prompts:create",
3675
3983
  "pluginAlias": "@respan/cli",
3676
3984
  "pluginName": "@respan/cli",
3677
3985
  "pluginType": "core",
@@ -3681,14 +3989,20 @@
3681
3989
  "relativePath": [
3682
3990
  "dist",
3683
3991
  "commands",
3684
- "traces",
3685
- "list.js"
3992
+ "prompts",
3993
+ "create.js"
3686
3994
  ]
3687
3995
  },
3688
- "traces:summary": {
3996
+ "prompts:get": {
3689
3997
  "aliases": [],
3690
- "args": {},
3691
- "description": "Get a span-level summary of activity for a time range (counts, latency, cost, errors aggregated across spans)",
3998
+ "args": {
3999
+ "id": {
4000
+ "description": "Prompt ID",
4001
+ "name": "id",
4002
+ "required": true
4003
+ }
4004
+ },
4005
+ "description": "Get a specific prompt",
3692
4006
  "flags": {
3693
4007
  "api-key": {
3694
4008
  "description": "API key (env: RESPAN_API_KEY)",
@@ -3730,27 +4044,11 @@
3730
4044
  "name": "verbose",
3731
4045
  "allowNo": false,
3732
4046
  "type": "boolean"
3733
- },
3734
- "start-time": {
3735
- "description": "Start time (ISO 8601)",
3736
- "name": "start-time",
3737
- "required": true,
3738
- "hasDynamicHelp": false,
3739
- "multiple": false,
3740
- "type": "option"
3741
- },
3742
- "end-time": {
3743
- "description": "End time (ISO 8601)",
3744
- "name": "end-time",
3745
- "required": true,
3746
- "hasDynamicHelp": false,
3747
- "multiple": false,
3748
- "type": "option"
3749
4047
  }
3750
4048
  },
3751
4049
  "hasDynamicHelp": false,
3752
4050
  "hiddenAliases": [],
3753
- "id": "traces:summary",
4051
+ "id": "prompts:get",
3754
4052
  "pluginAlias": "@respan/cli",
3755
4053
  "pluginName": "@respan/cli",
3756
4054
  "pluginType": "core",
@@ -3760,14 +4058,14 @@
3760
4058
  "relativePath": [
3761
4059
  "dist",
3762
4060
  "commands",
3763
- "traces",
3764
- "summary.js"
4061
+ "prompts",
4062
+ "get.js"
3765
4063
  ]
3766
4064
  },
3767
- "users:create": {
4065
+ "prompts:list": {
3768
4066
  "aliases": [],
3769
4067
  "args": {},
3770
- "description": "Create a new user (customer)",
4068
+ "description": "List prompts",
3771
4069
  "flags": {
3772
4070
  "api-key": {
3773
4071
  "description": "API key (env: RESPAN_API_KEY)",
@@ -3810,31 +4108,10 @@
3810
4108
  "allowNo": false,
3811
4109
  "type": "boolean"
3812
4110
  },
3813
- "identifier": {
3814
- "description": "Customer identifier",
3815
- "name": "identifier",
3816
- "required": true,
3817
- "hasDynamicHelp": false,
3818
- "multiple": false,
3819
- "type": "option"
3820
- },
3821
- "name": {
3822
- "description": "Customer name",
3823
- "name": "name",
3824
- "hasDynamicHelp": false,
3825
- "multiple": false,
3826
- "type": "option"
3827
- },
3828
- "email": {
3829
- "description": "Customer email",
3830
- "name": "email",
3831
- "hasDynamicHelp": false,
3832
- "multiple": false,
3833
- "type": "option"
3834
- },
3835
- "metadata": {
3836
- "description": "Metadata as JSON string",
3837
- "name": "metadata",
4111
+ "limit": {
4112
+ "description": "Number of results per page",
4113
+ "name": "limit",
4114
+ "default": 50,
3838
4115
  "hasDynamicHelp": false,
3839
4116
  "multiple": false,
3840
4117
  "type": "option"
@@ -3842,7 +4119,7 @@
3842
4119
  },
3843
4120
  "hasDynamicHelp": false,
3844
4121
  "hiddenAliases": [],
3845
- "id": "users:create",
4122
+ "id": "prompts:list",
3846
4123
  "pluginAlias": "@respan/cli",
3847
4124
  "pluginName": "@respan/cli",
3848
4125
  "pluginType": "core",
@@ -3852,20 +4129,20 @@
3852
4129
  "relativePath": [
3853
4130
  "dist",
3854
4131
  "commands",
3855
- "users",
3856
- "create.js"
4132
+ "prompts",
4133
+ "list.js"
3857
4134
  ]
3858
4135
  },
3859
- "users:get": {
4136
+ "prompts:update": {
3860
4137
  "aliases": [],
3861
4138
  "args": {
3862
4139
  "id": {
3863
- "description": "Customer identifier",
4140
+ "description": "Prompt ID",
3864
4141
  "name": "id",
3865
4142
  "required": true
3866
4143
  }
3867
4144
  },
3868
- "description": "Get a specific user (customer)",
4145
+ "description": "Update a prompt",
3869
4146
  "flags": {
3870
4147
  "api-key": {
3871
4148
  "description": "API key (env: RESPAN_API_KEY)",
@@ -3907,11 +4184,25 @@
3907
4184
  "name": "verbose",
3908
4185
  "allowNo": false,
3909
4186
  "type": "boolean"
4187
+ },
4188
+ "name": {
4189
+ "description": "Prompt name",
4190
+ "name": "name",
4191
+ "hasDynamicHelp": false,
4192
+ "multiple": false,
4193
+ "type": "option"
4194
+ },
4195
+ "description": {
4196
+ "description": "Prompt description",
4197
+ "name": "description",
4198
+ "hasDynamicHelp": false,
4199
+ "multiple": false,
4200
+ "type": "option"
3910
4201
  }
3911
4202
  },
3912
4203
  "hasDynamicHelp": false,
3913
4204
  "hiddenAliases": [],
3914
- "id": "users:get",
4205
+ "id": "prompts:update",
3915
4206
  "pluginAlias": "@respan/cli",
3916
4207
  "pluginName": "@respan/cli",
3917
4208
  "pluginType": "core",
@@ -3921,14 +4212,20 @@
3921
4212
  "relativePath": [
3922
4213
  "dist",
3923
4214
  "commands",
3924
- "users",
3925
- "get.js"
4215
+ "prompts",
4216
+ "update.js"
3926
4217
  ]
3927
4218
  },
3928
- "users:list": {
4219
+ "prompts:versions": {
3929
4220
  "aliases": [],
3930
- "args": {},
3931
- "description": "List users (customers)",
4221
+ "args": {
4222
+ "prompt-id": {
4223
+ "description": "Prompt ID",
4224
+ "name": "prompt-id",
4225
+ "required": true
4226
+ }
4227
+ },
4228
+ "description": "List versions of a prompt",
3932
4229
  "flags": {
3933
4230
  "api-key": {
3934
4231
  "description": "API key (env: RESPAN_API_KEY)",
@@ -3970,41 +4267,11 @@
3970
4267
  "name": "verbose",
3971
4268
  "allowNo": false,
3972
4269
  "type": "boolean"
3973
- },
3974
- "limit": {
3975
- "description": "Number of results per page",
3976
- "name": "limit",
3977
- "default": 20,
3978
- "hasDynamicHelp": false,
3979
- "multiple": false,
3980
- "type": "option"
3981
- },
3982
- "page": {
3983
- "description": "Page number",
3984
- "name": "page",
3985
- "default": 1,
3986
- "hasDynamicHelp": false,
3987
- "multiple": false,
3988
- "type": "option"
3989
- },
3990
- "sort-by": {
3991
- "description": "Sort field",
3992
- "name": "sort-by",
3993
- "hasDynamicHelp": false,
3994
- "multiple": false,
3995
- "type": "option"
3996
- },
3997
- "environment": {
3998
- "description": "Environment filter",
3999
- "name": "environment",
4000
- "hasDynamicHelp": false,
4001
- "multiple": false,
4002
- "type": "option"
4003
4270
  }
4004
4271
  },
4005
4272
  "hasDynamicHelp": false,
4006
4273
  "hiddenAliases": [],
4007
- "id": "users:list",
4274
+ "id": "prompts:versions",
4008
4275
  "pluginAlias": "@respan/cli",
4009
4276
  "pluginName": "@respan/cli",
4010
4277
  "pluginType": "core",
@@ -4014,20 +4281,20 @@
4014
4281
  "relativePath": [
4015
4282
  "dist",
4016
4283
  "commands",
4017
- "users",
4018
- "list.js"
4284
+ "prompts",
4285
+ "versions.js"
4019
4286
  ]
4020
4287
  },
4021
- "users:update": {
4288
+ "traces:get": {
4022
4289
  "aliases": [],
4023
4290
  "args": {
4024
4291
  "id": {
4025
- "description": "Customer identifier",
4292
+ "description": "Trace ID",
4026
4293
  "name": "id",
4027
4294
  "required": true
4028
4295
  }
4029
4296
  },
4030
- "description": "Update a user (customer)",
4297
+ "description": "Get a specific trace",
4031
4298
  "flags": {
4032
4299
  "api-key": {
4033
4300
  "description": "API key (env: RESPAN_API_KEY)",
@@ -4069,32 +4336,11 @@
4069
4336
  "name": "verbose",
4070
4337
  "allowNo": false,
4071
4338
  "type": "boolean"
4072
- },
4073
- "name": {
4074
- "description": "Customer name",
4075
- "name": "name",
4076
- "hasDynamicHelp": false,
4077
- "multiple": false,
4078
- "type": "option"
4079
- },
4080
- "email": {
4081
- "description": "Customer email",
4082
- "name": "email",
4083
- "hasDynamicHelp": false,
4084
- "multiple": false,
4085
- "type": "option"
4086
- },
4087
- "metadata": {
4088
- "description": "Metadata as JSON string",
4089
- "name": "metadata",
4090
- "hasDynamicHelp": false,
4091
- "multiple": false,
4092
- "type": "option"
4093
4339
  }
4094
4340
  },
4095
4341
  "hasDynamicHelp": false,
4096
4342
  "hiddenAliases": [],
4097
- "id": "users:update",
4343
+ "id": "traces:get",
4098
4344
  "pluginAlias": "@respan/cli",
4099
4345
  "pluginName": "@respan/cli",
4100
4346
  "pluginType": "core",
@@ -4104,22 +4350,14 @@
4104
4350
  "relativePath": [
4105
4351
  "dist",
4106
4352
  "commands",
4107
- "users",
4108
- "update.js"
4353
+ "traces",
4354
+ "get.js"
4109
4355
  ]
4110
4356
  },
4111
- "integrate:claude-code": {
4357
+ "traces:list": {
4112
4358
  "aliases": [],
4113
4359
  "args": {},
4114
- "description": "Integrate Respan with Claude Code.\n\nInstalls a Stop hook that reads conversation transcripts and sends\nthem to Respan as structured spans (chat, tool, thinking).\n\nScope:\n --global Install hook script + register in ~/.claude/settings.json\n --local Write credentials + enable flag to .claude/settings.local.json\n\nDefault behavior installs the global hook and writes local project config.",
4115
- "examples": [
4116
- "respan integrate claude-code",
4117
- "respan integrate claude-code --disable",
4118
- "respan integrate claude-code --global",
4119
- "respan integrate claude-code --local --project-id my-project",
4120
- "respan integrate claude-code --attrs '{\"env\":\"prod\"}'",
4121
- "respan integrate claude-code --dry-run"
4122
- ],
4360
+ "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",
4123
4361
  "flags": {
4124
4362
  "api-key": {
4125
4363
  "description": "API key (env: RESPAN_API_KEY)",
@@ -4130,9 +4368,8 @@
4130
4368
  "type": "option"
4131
4369
  },
4132
4370
  "base-url": {
4133
- "description": "Respan API base URL (for enterprise deployments)",
4371
+ "description": "Temporary API base URL override for this command",
4134
4372
  "name": "base-url",
4135
- "default": "https://api.respan.ai/api",
4136
4373
  "hasDynamicHelp": false,
4137
4374
  "multiple": false,
4138
4375
  "type": "option"
@@ -4163,90 +4400,62 @@
4163
4400
  "allowNo": false,
4164
4401
  "type": "boolean"
4165
4402
  },
4166
- "local": {
4167
- "description": "Write per-project config (default)",
4168
- "exclusive": [
4169
- "global"
4170
- ],
4171
- "name": "local",
4172
- "allowNo": false,
4173
- "type": "boolean"
4174
- },
4175
- "global": {
4176
- "description": "Write user-level global config",
4177
- "exclusive": [
4178
- "local"
4179
- ],
4180
- "name": "global",
4181
- "allowNo": false,
4182
- "type": "boolean"
4183
- },
4184
- "enable": {
4185
- "description": "Enable tracing (default)",
4186
- "exclusive": [
4187
- "disable"
4188
- ],
4189
- "name": "enable",
4190
- "allowNo": false,
4191
- "type": "boolean"
4192
- },
4193
- "disable": {
4194
- "description": "Disable tracing",
4195
- "exclusive": [
4196
- "enable"
4197
- ],
4198
- "name": "disable",
4199
- "allowNo": false,
4200
- "type": "boolean"
4403
+ "limit": {
4404
+ "description": "Number of results per page",
4405
+ "name": "limit",
4406
+ "default": 10,
4407
+ "hasDynamicHelp": false,
4408
+ "multiple": false,
4409
+ "type": "option"
4201
4410
  },
4202
- "project-id": {
4203
- "description": "Respan project ID (added to metadata / resource attributes)",
4204
- "env": "RESPAN_PROJECT_ID",
4205
- "name": "project-id",
4411
+ "page": {
4412
+ "description": "Page number",
4413
+ "name": "page",
4414
+ "default": 1,
4206
4415
  "hasDynamicHelp": false,
4207
4416
  "multiple": false,
4208
4417
  "type": "option"
4209
4418
  },
4210
- "attrs": {
4211
- "description": "Custom attributes JSON (e.g. '{\"env\":\"prod\"}')",
4212
- "name": "attrs",
4213
- "default": "{}",
4419
+ "sort-by": {
4420
+ "description": "Sort field (prefix with - for descending)",
4421
+ "name": "sort-by",
4422
+ "default": "-timestamp",
4214
4423
  "hasDynamicHelp": false,
4215
4424
  "multiple": false,
4216
4425
  "type": "option"
4217
4426
  },
4218
- "customer-id": {
4219
- "description": "Customer/user identifier for traces (e.g. your name or email)",
4220
- "env": "RESPAN_CUSTOMER_ID",
4221
- "name": "customer-id",
4427
+ "start-time": {
4428
+ "description": "Start time filter (ISO 8601)",
4429
+ "name": "start-time",
4222
4430
  "hasDynamicHelp": false,
4223
4431
  "multiple": false,
4224
4432
  "type": "option"
4225
4433
  },
4226
- "span-name": {
4227
- "description": "Root span name for traces (default: claude-code)",
4228
- "name": "span-name",
4434
+ "end-time": {
4435
+ "description": "End time filter (ISO 8601)",
4436
+ "name": "end-time",
4229
4437
  "hasDynamicHelp": false,
4230
4438
  "multiple": false,
4231
4439
  "type": "option"
4232
4440
  },
4233
- "workflow-name": {
4234
- "description": "Workflow name for traces (default: claude-code)",
4235
- "name": "workflow-name",
4441
+ "environment": {
4442
+ "description": "Environment filter",
4443
+ "name": "environment",
4236
4444
  "hasDynamicHelp": false,
4237
4445
  "multiple": false,
4238
4446
  "type": "option"
4239
4447
  },
4240
- "dry-run": {
4241
- "description": "Preview changes without writing files",
4242
- "name": "dry-run",
4243
- "allowNo": false,
4244
- "type": "boolean"
4448
+ "filter": {
4449
+ "description": "Filter in field:operator:value format (repeatable)",
4450
+ "name": "filter",
4451
+ "hasDynamicHelp": false,
4452
+ "multiple": true,
4453
+ "type": "option"
4245
4454
  }
4246
4455
  },
4247
4456
  "hasDynamicHelp": false,
4248
4457
  "hiddenAliases": [],
4249
- "id": "integrate:claude-code",
4458
+ "id": "traces:list",
4250
4459
  "pluginAlias": "@respan/cli",
4251
4460
  "pluginName": "@respan/cli",
4252
4461
  "pluginType": "core",
@@ -4256,22 +4465,14 @@
4256
4465
  "relativePath": [
4257
4466
  "dist",
4258
4467
  "commands",
4259
- "integrate",
4260
- "claude-code.js"
4468
+ "traces",
4469
+ "list.js"
4261
4470
  ]
4262
4471
  },
4263
- "integrate:codex-cli": {
4472
+ "traces:summary": {
4264
4473
  "aliases": [],
4265
4474
  "args": {},
4266
- "description": "Integrate Respan with Codex CLI.\n\nInstalls a notify hook that reads session JSONL files and sends\nthem to Respan as structured spans (chat, tool, reasoning).\n\nScope:\n --global Install hook script + register notify in ~/.codex/config.toml\n --local Write .codex/respan.json with customer_id, span_name, etc.\n\nDefault behavior installs the global notify hook and writes local project config.",
4267
- "examples": [
4268
- "respan integrate codex-cli",
4269
- "respan integrate codex-cli --disable",
4270
- "respan integrate codex-cli --global",
4271
- "respan integrate codex-cli --local --customer-id frank",
4272
- "respan integrate codex-cli --attrs '{\"env\":\"prod\"}'",
4273
- "respan integrate codex-cli --dry-run"
4274
- ],
4475
+ "description": "Get a span-level summary of activity for a time range (counts, latency, cost, errors aggregated across spans)",
4275
4476
  "flags": {
4276
4477
  "api-key": {
4277
4478
  "description": "API key (env: RESPAN_API_KEY)",
@@ -4282,9 +4483,8 @@
4282
4483
  "type": "option"
4283
4484
  },
4284
4485
  "base-url": {
4285
- "description": "Respan API base URL (for enterprise deployments)",
4486
+ "description": "Temporary API base URL override for this command",
4286
4487
  "name": "base-url",
4287
- "default": "https://api.respan.ai/api",
4288
4488
  "hasDynamicHelp": false,
4289
4489
  "multiple": false,
4290
4490
  "type": "option"
@@ -4315,90 +4515,26 @@
4315
4515
  "allowNo": false,
4316
4516
  "type": "boolean"
4317
4517
  },
4318
- "local": {
4319
- "description": "Write per-project config (default)",
4320
- "exclusive": [
4321
- "global"
4322
- ],
4323
- "name": "local",
4324
- "allowNo": false,
4325
- "type": "boolean"
4326
- },
4327
- "global": {
4328
- "description": "Write user-level global config",
4329
- "exclusive": [
4330
- "local"
4331
- ],
4332
- "name": "global",
4333
- "allowNo": false,
4334
- "type": "boolean"
4335
- },
4336
- "enable": {
4337
- "description": "Enable tracing (default)",
4338
- "exclusive": [
4339
- "disable"
4340
- ],
4341
- "name": "enable",
4342
- "allowNo": false,
4343
- "type": "boolean"
4344
- },
4345
- "disable": {
4346
- "description": "Disable tracing",
4347
- "exclusive": [
4348
- "enable"
4349
- ],
4350
- "name": "disable",
4351
- "allowNo": false,
4352
- "type": "boolean"
4353
- },
4354
- "project-id": {
4355
- "description": "Respan project ID (added to metadata / resource attributes)",
4356
- "env": "RESPAN_PROJECT_ID",
4357
- "name": "project-id",
4358
- "hasDynamicHelp": false,
4359
- "multiple": false,
4360
- "type": "option"
4361
- },
4362
- "attrs": {
4363
- "description": "Custom attributes JSON (e.g. '{\"env\":\"prod\"}')",
4364
- "name": "attrs",
4365
- "default": "{}",
4366
- "hasDynamicHelp": false,
4367
- "multiple": false,
4368
- "type": "option"
4369
- },
4370
- "customer-id": {
4371
- "description": "Customer/user identifier for traces (e.g. your name or email)",
4372
- "env": "RESPAN_CUSTOMER_ID",
4373
- "name": "customer-id",
4374
- "hasDynamicHelp": false,
4375
- "multiple": false,
4376
- "type": "option"
4377
- },
4378
- "span-name": {
4379
- "description": "Root span name for traces (default: claude-code)",
4380
- "name": "span-name",
4518
+ "start-time": {
4519
+ "description": "Start time (ISO 8601)",
4520
+ "name": "start-time",
4521
+ "required": true,
4381
4522
  "hasDynamicHelp": false,
4382
4523
  "multiple": false,
4383
4524
  "type": "option"
4384
4525
  },
4385
- "workflow-name": {
4386
- "description": "Workflow name for traces (default: claude-code)",
4387
- "name": "workflow-name",
4526
+ "end-time": {
4527
+ "description": "End time (ISO 8601)",
4528
+ "name": "end-time",
4529
+ "required": true,
4388
4530
  "hasDynamicHelp": false,
4389
4531
  "multiple": false,
4390
4532
  "type": "option"
4391
- },
4392
- "dry-run": {
4393
- "description": "Preview changes without writing files",
4394
- "name": "dry-run",
4395
- "allowNo": false,
4396
- "type": "boolean"
4397
4533
  }
4398
4534
  },
4399
4535
  "hasDynamicHelp": false,
4400
4536
  "hiddenAliases": [],
4401
- "id": "integrate:codex-cli",
4537
+ "id": "traces:summary",
4402
4538
  "pluginAlias": "@respan/cli",
4403
4539
  "pluginName": "@respan/cli",
4404
4540
  "pluginType": "core",
@@ -4408,21 +4544,14 @@
4408
4544
  "relativePath": [
4409
4545
  "dist",
4410
4546
  "commands",
4411
- "integrate",
4412
- "codex-cli.js"
4547
+ "traces",
4548
+ "summary.js"
4413
4549
  ]
4414
4550
  },
4415
- "integrate:gemini-cli": {
4551
+ "users:create": {
4416
4552
  "aliases": [],
4417
4553
  "args": {},
4418
- "description": "Integrate Respan with Gemini CLI.\n\nInstalls an AfterModel hook that captures LLM request/response data\nand sends it to Respan as structured spans with model, token counts,\nand input/output.\n\nScope:\n --global Write to ~/.gemini/settings.json (default)\n --local Write to .gemini/settings.json in project root\n\nGemini CLI ignores workspace-level telemetry settings, so --global is the default.",
4419
- "examples": [
4420
- "respan integrate gemini-cli",
4421
- "respan integrate gemini-cli --disable",
4422
- "respan integrate gemini-cli --local",
4423
- "respan integrate gemini-cli --project-id my-project --attrs '{\"env\":\"prod\"}'",
4424
- "respan integrate gemini-cli --dry-run"
4425
- ],
4554
+ "description": "Create a new user (customer)",
4426
4555
  "flags": {
4427
4556
  "api-key": {
4428
4557
  "description": "API key (env: RESPAN_API_KEY)",
@@ -4433,9 +4562,8 @@
4433
4562
  "type": "option"
4434
4563
  },
4435
4564
  "base-url": {
4436
- "description": "Respan API base URL (for enterprise deployments)",
4565
+ "description": "Temporary API base URL override for this command",
4437
4566
  "name": "base-url",
4438
- "default": "https://api.respan.ai/api",
4439
4567
  "hasDynamicHelp": false,
4440
4568
  "multiple": false,
4441
4569
  "type": "option"
@@ -4466,90 +4594,108 @@
4466
4594
  "allowNo": false,
4467
4595
  "type": "boolean"
4468
4596
  },
4469
- "local": {
4470
- "description": "Write per-project config (default)",
4471
- "exclusive": [
4472
- "global"
4473
- ],
4474
- "name": "local",
4475
- "allowNo": false,
4476
- "type": "boolean"
4477
- },
4478
- "global": {
4479
- "description": "Write user-level global config",
4480
- "exclusive": [
4481
- "local"
4482
- ],
4483
- "name": "global",
4484
- "allowNo": false,
4485
- "type": "boolean"
4486
- },
4487
- "enable": {
4488
- "description": "Enable tracing (default)",
4489
- "exclusive": [
4490
- "disable"
4491
- ],
4492
- "name": "enable",
4493
- "allowNo": false,
4494
- "type": "boolean"
4495
- },
4496
- "disable": {
4497
- "description": "Disable tracing",
4498
- "exclusive": [
4499
- "enable"
4500
- ],
4501
- "name": "disable",
4502
- "allowNo": false,
4503
- "type": "boolean"
4504
- },
4505
- "project-id": {
4506
- "description": "Respan project ID (added to metadata / resource attributes)",
4507
- "env": "RESPAN_PROJECT_ID",
4508
- "name": "project-id",
4597
+ "identifier": {
4598
+ "description": "Customer identifier",
4599
+ "name": "identifier",
4600
+ "required": true,
4509
4601
  "hasDynamicHelp": false,
4510
4602
  "multiple": false,
4511
4603
  "type": "option"
4512
4604
  },
4513
- "attrs": {
4514
- "description": "Custom attributes JSON (e.g. '{\"env\":\"prod\"}')",
4515
- "name": "attrs",
4516
- "default": "{}",
4605
+ "name": {
4606
+ "description": "Customer name",
4607
+ "name": "name",
4517
4608
  "hasDynamicHelp": false,
4518
4609
  "multiple": false,
4519
4610
  "type": "option"
4520
4611
  },
4521
- "customer-id": {
4522
- "description": "Customer/user identifier for traces (e.g. your name or email)",
4523
- "env": "RESPAN_CUSTOMER_ID",
4524
- "name": "customer-id",
4612
+ "email": {
4613
+ "description": "Customer email",
4614
+ "name": "email",
4525
4615
  "hasDynamicHelp": false,
4526
4616
  "multiple": false,
4527
4617
  "type": "option"
4528
4618
  },
4529
- "span-name": {
4530
- "description": "Root span name for traces (default: claude-code)",
4531
- "name": "span-name",
4619
+ "metadata": {
4620
+ "description": "Metadata as JSON string",
4621
+ "name": "metadata",
4622
+ "hasDynamicHelp": false,
4623
+ "multiple": false,
4624
+ "type": "option"
4625
+ }
4626
+ },
4627
+ "hasDynamicHelp": false,
4628
+ "hiddenAliases": [],
4629
+ "id": "users:create",
4630
+ "pluginAlias": "@respan/cli",
4631
+ "pluginName": "@respan/cli",
4632
+ "pluginType": "core",
4633
+ "strict": true,
4634
+ "enableJsonFlag": false,
4635
+ "isESM": true,
4636
+ "relativePath": [
4637
+ "dist",
4638
+ "commands",
4639
+ "users",
4640
+ "create.js"
4641
+ ]
4642
+ },
4643
+ "users:get": {
4644
+ "aliases": [],
4645
+ "args": {
4646
+ "id": {
4647
+ "description": "Customer identifier",
4648
+ "name": "id",
4649
+ "required": true
4650
+ }
4651
+ },
4652
+ "description": "Get a specific user (customer)",
4653
+ "flags": {
4654
+ "api-key": {
4655
+ "description": "API key (env: RESPAN_API_KEY)",
4656
+ "env": "RESPAN_API_KEY",
4657
+ "name": "api-key",
4532
4658
  "hasDynamicHelp": false,
4533
4659
  "multiple": false,
4534
4660
  "type": "option"
4535
4661
  },
4536
- "workflow-name": {
4537
- "description": "Workflow name for traces (default: claude-code)",
4538
- "name": "workflow-name",
4662
+ "base-url": {
4663
+ "description": "Temporary API base URL override for this command",
4664
+ "name": "base-url",
4665
+ "hasDynamicHelp": false,
4666
+ "multiple": false,
4667
+ "type": "option"
4668
+ },
4669
+ "profile": {
4670
+ "description": "Named profile to use",
4671
+ "name": "profile",
4539
4672
  "hasDynamicHelp": false,
4540
4673
  "multiple": false,
4541
4674
  "type": "option"
4542
4675
  },
4543
- "dry-run": {
4544
- "description": "Preview changes without writing files",
4545
- "name": "dry-run",
4676
+ "json": {
4677
+ "description": "Output as JSON",
4678
+ "name": "json",
4679
+ "allowNo": false,
4680
+ "type": "boolean"
4681
+ },
4682
+ "csv": {
4683
+ "description": "Output as CSV",
4684
+ "name": "csv",
4685
+ "allowNo": false,
4686
+ "type": "boolean"
4687
+ },
4688
+ "verbose": {
4689
+ "char": "v",
4690
+ "description": "Show verbose output",
4691
+ "name": "verbose",
4546
4692
  "allowNo": false,
4547
4693
  "type": "boolean"
4548
4694
  }
4549
4695
  },
4550
4696
  "hasDynamicHelp": false,
4551
4697
  "hiddenAliases": [],
4552
- "id": "integrate:gemini-cli",
4698
+ "id": "users:get",
4553
4699
  "pluginAlias": "@respan/cli",
4554
4700
  "pluginName": "@respan/cli",
4555
4701
  "pluginType": "core",
@@ -4559,21 +4705,14 @@
4559
4705
  "relativePath": [
4560
4706
  "dist",
4561
4707
  "commands",
4562
- "integrate",
4563
- "gemini-cli.js"
4708
+ "users",
4709
+ "get.js"
4564
4710
  ]
4565
4711
  },
4566
- "integrate:opencode": {
4712
+ "users:list": {
4567
4713
  "aliases": [],
4568
4714
  "args": {},
4569
- "description": "Integrate Respan with OpenCode.\n\nOpenCode's built-in OTel does not work reliably, so this uses the\ncommunity opencode-otel plugin instead.\n\nScope:\n --local Write plugin config to project root (default)\n --global Write to ~/.config/opencode/plugins/otel.json\n The opencode-otel package is always installed globally.",
4570
- "examples": [
4571
- "respan integrate opencode",
4572
- "respan integrate opencode --disable",
4573
- "respan integrate opencode --global",
4574
- "respan integrate opencode --project-id my-project --attrs '{\"env\":\"prod\"}'",
4575
- "respan integrate opencode --dry-run"
4576
- ],
4715
+ "description": "List users (customers)",
4577
4716
  "flags": {
4578
4717
  "api-key": {
4579
4718
  "description": "API key (env: RESPAN_API_KEY)",
@@ -4584,9 +4723,8 @@
4584
4723
  "type": "option"
4585
4724
  },
4586
4725
  "base-url": {
4587
- "description": "Respan API base URL (for enterprise deployments)",
4726
+ "description": "Temporary API base URL override for this command",
4588
4727
  "name": "base-url",
4589
- "default": "https://api.respan.ai/api",
4590
4728
  "hasDynamicHelp": false,
4591
4729
  "multiple": false,
4592
4730
  "type": "option"
@@ -4617,90 +4755,40 @@
4617
4755
  "allowNo": false,
4618
4756
  "type": "boolean"
4619
4757
  },
4620
- "local": {
4621
- "description": "Write per-project config (default)",
4622
- "exclusive": [
4623
- "global"
4624
- ],
4625
- "name": "local",
4626
- "allowNo": false,
4627
- "type": "boolean"
4628
- },
4629
- "global": {
4630
- "description": "Write user-level global config",
4631
- "exclusive": [
4632
- "local"
4633
- ],
4634
- "name": "global",
4635
- "allowNo": false,
4636
- "type": "boolean"
4637
- },
4638
- "enable": {
4639
- "description": "Enable tracing (default)",
4640
- "exclusive": [
4641
- "disable"
4642
- ],
4643
- "name": "enable",
4644
- "allowNo": false,
4645
- "type": "boolean"
4646
- },
4647
- "disable": {
4648
- "description": "Disable tracing",
4649
- "exclusive": [
4650
- "enable"
4651
- ],
4652
- "name": "disable",
4653
- "allowNo": false,
4654
- "type": "boolean"
4655
- },
4656
- "project-id": {
4657
- "description": "Respan project ID (added to metadata / resource attributes)",
4658
- "env": "RESPAN_PROJECT_ID",
4659
- "name": "project-id",
4660
- "hasDynamicHelp": false,
4661
- "multiple": false,
4662
- "type": "option"
4663
- },
4664
- "attrs": {
4665
- "description": "Custom attributes JSON (e.g. '{\"env\":\"prod\"}')",
4666
- "name": "attrs",
4667
- "default": "{}",
4758
+ "limit": {
4759
+ "description": "Number of results per page",
4760
+ "name": "limit",
4761
+ "default": 20,
4668
4762
  "hasDynamicHelp": false,
4669
4763
  "multiple": false,
4670
4764
  "type": "option"
4671
4765
  },
4672
- "customer-id": {
4673
- "description": "Customer/user identifier for traces (e.g. your name or email)",
4674
- "env": "RESPAN_CUSTOMER_ID",
4675
- "name": "customer-id",
4766
+ "page": {
4767
+ "description": "Page number",
4768
+ "name": "page",
4769
+ "default": 1,
4676
4770
  "hasDynamicHelp": false,
4677
4771
  "multiple": false,
4678
4772
  "type": "option"
4679
4773
  },
4680
- "span-name": {
4681
- "description": "Root span name for traces (default: claude-code)",
4682
- "name": "span-name",
4774
+ "sort-by": {
4775
+ "description": "Sort field",
4776
+ "name": "sort-by",
4683
4777
  "hasDynamicHelp": false,
4684
4778
  "multiple": false,
4685
4779
  "type": "option"
4686
4780
  },
4687
- "workflow-name": {
4688
- "description": "Workflow name for traces (default: claude-code)",
4689
- "name": "workflow-name",
4781
+ "environment": {
4782
+ "description": "Environment filter",
4783
+ "name": "environment",
4690
4784
  "hasDynamicHelp": false,
4691
4785
  "multiple": false,
4692
4786
  "type": "option"
4693
- },
4694
- "dry-run": {
4695
- "description": "Preview changes without writing files",
4696
- "name": "dry-run",
4697
- "allowNo": false,
4698
- "type": "boolean"
4699
4787
  }
4700
4788
  },
4701
4789
  "hasDynamicHelp": false,
4702
4790
  "hiddenAliases": [],
4703
- "id": "integrate:opencode",
4791
+ "id": "users:list",
4704
4792
  "pluginAlias": "@respan/cli",
4705
4793
  "pluginName": "@respan/cli",
4706
4794
  "pluginType": "core",
@@ -4710,24 +4798,20 @@
4710
4798
  "relativePath": [
4711
4799
  "dist",
4712
4800
  "commands",
4713
- "integrate",
4714
- "opencode.js"
4801
+ "users",
4802
+ "list.js"
4715
4803
  ]
4716
4804
  },
4717
- "integrate:pi": {
4805
+ "users:update": {
4718
4806
  "aliases": [],
4719
- "args": {},
4720
- "description": "Integrate Respan with the pi coding agent (https://pi.dev).\n\nInstalls the @respan/instrumentation-pi pi package — a pi extension that\ntraces every agent run as one turn span per prompt with chat and tool spans underneath,\ncorrelating all runs of a pi session by its session id — and writes a\nnon-secret respan.json config for it.\n\nScope:\n --global pi install npm:@respan/instrumentation-pi + ~/.pi/agent/respan.json (default)\n --local pi install -l npm:@respan/instrumentation-pi + .pi/respan.json in the project root\n\nTrace scope (--trace-scope, \"trace_scope\" in respan.json):\n run one trace per agent run; runs of a session share a thread id (default)\n session one multi-root trace per pi session (long-lived, resumed sessions)\n\nDurable delivery (--with-collector):\n Sets base_url to a local Respan collector (http://127.0.0.1:4318) so traces\n go through its persistent queue and survive Respan outages. Run\n \"respan collector start\" once per machine.\n\nCredentials are never written to these files: the extension reads\nRESPAN_API_KEY or ~/.respan/credentials.json (from \"respan auth login\").",
4721
- "examples": [
4722
- "respan integrate pi",
4723
- "respan integrate pi --disable",
4724
- "respan integrate pi --local",
4725
- "respan integrate pi --customer-id frank --workflow-name email-agent",
4726
- "respan integrate pi --trace-scope session",
4727
- "respan integrate pi --with-collector",
4728
- "respan integrate pi --project-id my-project --attrs '{\"env\":\"prod\"}'",
4729
- "respan integrate pi --dry-run"
4730
- ],
4807
+ "args": {
4808
+ "id": {
4809
+ "description": "Customer identifier",
4810
+ "name": "id",
4811
+ "required": true
4812
+ }
4813
+ },
4814
+ "description": "Update a user (customer)",
4731
4815
  "flags": {
4732
4816
  "api-key": {
4733
4817
  "description": "API key (env: RESPAN_API_KEY)",
@@ -4738,9 +4822,8 @@
4738
4822
  "type": "option"
4739
4823
  },
4740
4824
  "base-url": {
4741
- "description": "Respan API base URL (for enterprise deployments)",
4825
+ "description": "Temporary API base URL override for this command",
4742
4826
  "name": "base-url",
4743
- "default": "https://api.respan.ai/api",
4744
4827
  "hasDynamicHelp": false,
4745
4828
  "multiple": false,
4746
4829
  "type": "option"
@@ -4771,106 +4854,23 @@
4771
4854
  "allowNo": false,
4772
4855
  "type": "boolean"
4773
4856
  },
4774
- "local": {
4775
- "description": "Write per-project config (default)",
4776
- "exclusive": [
4777
- "global"
4778
- ],
4779
- "name": "local",
4780
- "allowNo": false,
4781
- "type": "boolean"
4782
- },
4783
- "global": {
4784
- "description": "Write user-level global config",
4785
- "exclusive": [
4786
- "local"
4787
- ],
4788
- "name": "global",
4789
- "allowNo": false,
4790
- "type": "boolean"
4791
- },
4792
- "enable": {
4793
- "description": "Enable tracing (default)",
4794
- "exclusive": [
4795
- "disable"
4796
- ],
4797
- "name": "enable",
4798
- "allowNo": false,
4799
- "type": "boolean"
4800
- },
4801
- "disable": {
4802
- "description": "Disable tracing",
4803
- "exclusive": [
4804
- "enable"
4805
- ],
4806
- "name": "disable",
4807
- "allowNo": false,
4808
- "type": "boolean"
4809
- },
4810
- "project-id": {
4811
- "description": "Respan project ID (added to metadata / resource attributes)",
4812
- "env": "RESPAN_PROJECT_ID",
4813
- "name": "project-id",
4814
- "hasDynamicHelp": false,
4815
- "multiple": false,
4816
- "type": "option"
4817
- },
4818
- "attrs": {
4819
- "description": "Custom attributes JSON (e.g. '{\"env\":\"prod\"}')",
4820
- "name": "attrs",
4821
- "default": "{}",
4822
- "hasDynamicHelp": false,
4823
- "multiple": false,
4824
- "type": "option"
4825
- },
4826
- "customer-id": {
4827
- "description": "Customer/user identifier for traces (e.g. your name or email)",
4828
- "env": "RESPAN_CUSTOMER_ID",
4829
- "name": "customer-id",
4830
- "hasDynamicHelp": false,
4831
- "multiple": false,
4832
- "type": "option"
4833
- },
4834
- "span-name": {
4835
- "description": "Alias of --workflow-name (default: pi)",
4836
- "name": "span-name",
4837
- "hasDynamicHelp": false,
4838
- "multiple": false,
4839
- "type": "option"
4840
- },
4841
- "workflow-name": {
4842
- "description": "traceloop.workflow.name on pi turn spans (default: pi)",
4843
- "name": "workflow-name",
4857
+ "name": {
4858
+ "description": "Customer name",
4859
+ "name": "name",
4844
4860
  "hasDynamicHelp": false,
4845
4861
  "multiple": false,
4846
4862
  "type": "option"
4847
4863
  },
4848
- "dry-run": {
4849
- "description": "Preview changes without writing files",
4850
- "name": "dry-run",
4851
- "allowNo": false,
4852
- "type": "boolean"
4853
- },
4854
- "trace-scope": {
4855
- "description": "Trace scope: \"run\" = one trace per agent run (default), \"session\" = one multi-root trace per pi session",
4856
- "name": "trace-scope",
4864
+ "email": {
4865
+ "description": "Customer email",
4866
+ "name": "email",
4857
4867
  "hasDynamicHelp": false,
4858
4868
  "multiple": false,
4859
- "options": [
4860
- "run",
4861
- "session"
4862
- ],
4863
4869
  "type": "option"
4864
4870
  },
4865
- "with-collector": {
4866
- "description": "Send traces through a local Respan collector (respan collector start) for durable delivery",
4867
- "name": "with-collector",
4868
- "allowNo": false,
4869
- "type": "boolean"
4870
- },
4871
- "collector-port": {
4872
- "description": "Port of the local collector, with --with-collector (default: 4318)",
4873
- "name": "collector-port",
4871
+ "metadata": {
4872
+ "description": "Metadata as JSON string",
4873
+ "name": "metadata",
4874
4874
  "hasDynamicHelp": false,
4875
4875
  "multiple": false,
4876
4876
  "type": "option"
@@ -4878,7 +4878,7 @@
4878
4878
  },
4879
4879
  "hasDynamicHelp": false,
4880
4880
  "hiddenAliases": [],
4881
- "id": "integrate:pi",
4881
+ "id": "users:update",
4882
4882
  "pluginAlias": "@respan/cli",
4883
4883
  "pluginName": "@respan/cli",
4884
4884
  "pluginType": "core",
@@ -4888,10 +4888,10 @@
4888
4888
  "relativePath": [
4889
4889
  "dist",
4890
4890
  "commands",
4891
- "integrate",
4892
- "pi.js"
4891
+ "users",
4892
+ "update.js"
4893
4893
  ]
4894
4894
  }
4895
4895
  },
4896
- "version": "0.14.0"
4896
+ "version": "0.14.2"
4897
4897
  }