@respan/cli 0.6.8 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1363,10 +1363,17 @@
1363
1363
  "update.js"
1364
1364
  ]
1365
1365
  },
1366
- "experiments:create": {
1366
+ "integrate:claude-code": {
1367
1367
  "aliases": [],
1368
1368
  "args": {},
1369
- "description": "Create a new experiment",
1369
+ "description": "Integrate Respan with Claude Code.\n\nInstalls a Stop hook that reads conversation transcripts and sends\nthem to Respan as structured spans (chat, tool, thinking).\n\nScope:\n --global Install hook script + register in ~/.claude/settings.json\n --local Write credentials + enable flag to .claude/settings.local.json\n (default) Both: install hook globally + enable for current project",
1370
+ "examples": [
1371
+ "respan integrate claude-code",
1372
+ "respan integrate claude-code --global",
1373
+ "respan integrate claude-code --local --project-id my-project",
1374
+ "respan integrate claude-code --attrs '{\"env\":\"prod\"}'",
1375
+ "respan integrate claude-code --dry-run"
1376
+ ],
1370
1377
  "flags": {
1371
1378
  "api-key": {
1372
1379
  "description": "API key (env: RESPAN_API_KEY)",
@@ -1402,102 +1409,80 @@
1402
1409
  "allowNo": false,
1403
1410
  "type": "boolean"
1404
1411
  },
1405
- "name": {
1406
- "description": "Experiment name",
1407
- "name": "name",
1408
- "required": true,
1412
+ "local": {
1413
+ "description": "Write per-project config (default)",
1414
+ "exclusive": [
1415
+ "global"
1416
+ ],
1417
+ "name": "local",
1418
+ "allowNo": false,
1419
+ "type": "boolean"
1420
+ },
1421
+ "global": {
1422
+ "description": "Write user-level global config",
1423
+ "exclusive": [
1424
+ "local"
1425
+ ],
1426
+ "name": "global",
1427
+ "allowNo": false,
1428
+ "type": "boolean"
1429
+ },
1430
+ "project-id": {
1431
+ "description": "Respan project ID (added to metadata / resource attributes)",
1432
+ "env": "RESPAN_PROJECT_ID",
1433
+ "name": "project-id",
1409
1434
  "hasDynamicHelp": false,
1410
1435
  "multiple": false,
1411
1436
  "type": "option"
1412
1437
  },
1413
- "dataset-id": {
1414
- "description": "Dataset ID",
1415
- "name": "dataset-id",
1416
- "required": true,
1438
+ "base-url": {
1439
+ "description": "Respan API base URL (for enterprise deployments)",
1440
+ "name": "base-url",
1441
+ "default": "https://api.respan.ai/api",
1417
1442
  "hasDynamicHelp": false,
1418
1443
  "multiple": false,
1419
1444
  "type": "option"
1420
1445
  },
1421
- "description": {
1422
- "description": "Experiment description",
1423
- "name": "description",
1446
+ "attrs": {
1447
+ "description": "Custom attributes JSON (e.g. '{\"env\":\"prod\"}')",
1448
+ "name": "attrs",
1449
+ "default": "{}",
1424
1450
  "hasDynamicHelp": false,
1425
1451
  "multiple": false,
1426
1452
  "type": "option"
1427
1453
  },
1428
- "workflows": {
1429
- "description": "Workflows configuration as JSON string",
1430
- "name": "workflows",
1454
+ "customer-id": {
1455
+ "description": "Customer/user identifier for traces (e.g. your name or email)",
1456
+ "env": "RESPAN_CUSTOMER_ID",
1457
+ "name": "customer-id",
1431
1458
  "hasDynamicHelp": false,
1432
1459
  "multiple": false,
1433
1460
  "type": "option"
1434
- }
1435
- },
1436
- "hasDynamicHelp": false,
1437
- "hiddenAliases": [],
1438
- "id": "experiments:create",
1439
- "pluginAlias": "@respan/cli",
1440
- "pluginName": "@respan/cli",
1441
- "pluginType": "core",
1442
- "strict": true,
1443
- "enableJsonFlag": false,
1444
- "isESM": true,
1445
- "relativePath": [
1446
- "dist",
1447
- "commands",
1448
- "experiments",
1449
- "create.js"
1450
- ]
1451
- },
1452
- "experiments:get": {
1453
- "aliases": [],
1454
- "args": {
1455
- "id": {
1456
- "description": "Experiment ID",
1457
- "name": "id",
1458
- "required": true
1459
- }
1460
- },
1461
- "description": "Get a specific experiment",
1462
- "flags": {
1463
- "api-key": {
1464
- "description": "API key (env: RESPAN_API_KEY)",
1465
- "env": "RESPAN_API_KEY",
1466
- "name": "api-key",
1461
+ },
1462
+ "span-name": {
1463
+ "description": "Root span name for traces (default: claude-code)",
1464
+ "name": "span-name",
1467
1465
  "hasDynamicHelp": false,
1468
1466
  "multiple": false,
1469
1467
  "type": "option"
1470
1468
  },
1471
- "profile": {
1472
- "description": "Named profile to use",
1473
- "name": "profile",
1469
+ "workflow-name": {
1470
+ "description": "Workflow name for traces (default: claude-code)",
1471
+ "name": "workflow-name",
1474
1472
  "hasDynamicHelp": false,
1475
1473
  "multiple": false,
1476
1474
  "type": "option"
1477
1475
  },
1478
- "json": {
1479
- "description": "Output as JSON",
1480
- "name": "json",
1481
- "allowNo": false,
1482
- "type": "boolean"
1483
- },
1484
- "csv": {
1485
- "description": "Output as CSV",
1486
- "name": "csv",
1487
- "allowNo": false,
1488
- "type": "boolean"
1489
- },
1490
- "verbose": {
1491
- "char": "v",
1492
- "description": "Show verbose output",
1493
- "name": "verbose",
1476
+ "dry-run": {
1477
+ "description": "Preview changes without writing files",
1478
+ "name": "dry-run",
1494
1479
  "allowNo": false,
1495
1480
  "type": "boolean"
1496
1481
  }
1497
1482
  },
1498
1483
  "hasDynamicHelp": false,
1499
1484
  "hiddenAliases": [],
1500
- "id": "experiments:get",
1485
+ "id": "integrate:claude-code",
1501
1486
  "pluginAlias": "@respan/cli",
1502
1487
  "pluginName": "@respan/cli",
1503
1488
  "pluginType": "core",
@@ -1507,14 +1492,21 @@
1507
1492
  "relativePath": [
1508
1493
  "dist",
1509
1494
  "commands",
1510
- "experiments",
1511
- "get.js"
1495
+ "integrate",
1496
+ "claude-code.js"
1512
1497
  ]
1513
1498
  },
1514
- "experiments:list": {
1499
+ "integrate:codex-cli": {
1515
1500
  "aliases": [],
1516
1501
  "args": {},
1517
- "description": "List experiments",
1502
+ "description": "Integrate Respan with Codex CLI.\n\nInstalls a notify hook that reads session JSONL files and sends\nthem to Respan as structured spans (chat, tool, reasoning).\n\nScope:\n --global Install hook script + register notify in ~/.codex/config.toml\n --local Write .codex/respan.json with customer_id, span_name, etc.\n (default) Both: install hook globally + config for current project",
1503
+ "examples": [
1504
+ "respan integrate codex-cli",
1505
+ "respan integrate codex-cli --global",
1506
+ "respan integrate codex-cli --local --customer-id frank",
1507
+ "respan integrate codex-cli --attrs '{\"env\":\"prod\"}'",
1508
+ "respan integrate codex-cli --dry-run"
1509
+ ],
1518
1510
  "flags": {
1519
1511
  "api-key": {
1520
1512
  "description": "API key (env: RESPAN_API_KEY)",
@@ -1550,26 +1542,80 @@
1550
1542
  "allowNo": false,
1551
1543
  "type": "boolean"
1552
1544
  },
1553
- "limit": {
1554
- "description": "Number of results per page",
1555
- "name": "limit",
1556
- "default": 20,
1545
+ "local": {
1546
+ "description": "Write per-project config (default)",
1547
+ "exclusive": [
1548
+ "global"
1549
+ ],
1550
+ "name": "local",
1551
+ "allowNo": false,
1552
+ "type": "boolean"
1553
+ },
1554
+ "global": {
1555
+ "description": "Write user-level global config",
1556
+ "exclusive": [
1557
+ "local"
1558
+ ],
1559
+ "name": "global",
1560
+ "allowNo": false,
1561
+ "type": "boolean"
1562
+ },
1563
+ "project-id": {
1564
+ "description": "Respan project ID (added to metadata / resource attributes)",
1565
+ "env": "RESPAN_PROJECT_ID",
1566
+ "name": "project-id",
1557
1567
  "hasDynamicHelp": false,
1558
1568
  "multiple": false,
1559
1569
  "type": "option"
1560
1570
  },
1561
- "page": {
1562
- "description": "Page number",
1563
- "name": "page",
1564
- "default": 1,
1571
+ "base-url": {
1572
+ "description": "Respan API base URL (for enterprise deployments)",
1573
+ "name": "base-url",
1574
+ "default": "https://api.respan.ai/api",
1575
+ "hasDynamicHelp": false,
1576
+ "multiple": false,
1577
+ "type": "option"
1578
+ },
1579
+ "attrs": {
1580
+ "description": "Custom attributes JSON (e.g. '{\"env\":\"prod\"}')",
1581
+ "name": "attrs",
1582
+ "default": "{}",
1583
+ "hasDynamicHelp": false,
1584
+ "multiple": false,
1585
+ "type": "option"
1586
+ },
1587
+ "customer-id": {
1588
+ "description": "Customer/user identifier for traces (e.g. your name or email)",
1589
+ "env": "RESPAN_CUSTOMER_ID",
1590
+ "name": "customer-id",
1591
+ "hasDynamicHelp": false,
1592
+ "multiple": false,
1593
+ "type": "option"
1594
+ },
1595
+ "span-name": {
1596
+ "description": "Root span name for traces (default: claude-code)",
1597
+ "name": "span-name",
1598
+ "hasDynamicHelp": false,
1599
+ "multiple": false,
1600
+ "type": "option"
1601
+ },
1602
+ "workflow-name": {
1603
+ "description": "Workflow name for traces (default: claude-code)",
1604
+ "name": "workflow-name",
1565
1605
  "hasDynamicHelp": false,
1566
1606
  "multiple": false,
1567
1607
  "type": "option"
1608
+ },
1609
+ "dry-run": {
1610
+ "description": "Preview changes without writing files",
1611
+ "name": "dry-run",
1612
+ "allowNo": false,
1613
+ "type": "boolean"
1568
1614
  }
1569
1615
  },
1570
1616
  "hasDynamicHelp": false,
1571
1617
  "hiddenAliases": [],
1572
- "id": "experiments:list",
1618
+ "id": "integrate:codex-cli",
1573
1619
  "pluginAlias": "@respan/cli",
1574
1620
  "pluginName": "@respan/cli",
1575
1621
  "pluginType": "core",
@@ -1579,14 +1625,20 @@
1579
1625
  "relativePath": [
1580
1626
  "dist",
1581
1627
  "commands",
1582
- "experiments",
1583
- "list.js"
1628
+ "integrate",
1629
+ "codex-cli.js"
1584
1630
  ]
1585
1631
  },
1586
- "logs:create": {
1632
+ "integrate:gemini-cli": {
1587
1633
  "aliases": [],
1588
1634
  "args": {},
1589
- "description": "Create a log span",
1635
+ "description": "Integrate Respan with Gemini CLI.\n\nInstalls an AfterModel hook that captures LLM request/response data\nand sends it to Respan as structured spans with model, token counts,\nand input/output.\n\nScope:\n --global Write to ~/.gemini/settings.json (default)\n --local Write to .gemini/settings.json in project root\n\nNote: Gemini CLI ignores workspace-level telemetry settings, so\n--global is the default.",
1636
+ "examples": [
1637
+ "respan integrate gemini-cli",
1638
+ "respan integrate gemini-cli --local",
1639
+ "respan integrate gemini-cli --project-id my-project --attrs '{\"env\":\"prod\"}'",
1640
+ "respan integrate gemini-cli --dry-run"
1641
+ ],
1590
1642
  "flags": {
1591
1643
  "api-key": {
1592
1644
  "description": "API key (env: RESPAN_API_KEY)",
@@ -1622,101 +1674,80 @@
1622
1674
  "allowNo": false,
1623
1675
  "type": "boolean"
1624
1676
  },
1625
- "input": {
1626
- "description": "Input text or JSON",
1627
- "name": "input",
1628
- "required": true,
1677
+ "local": {
1678
+ "description": "Write per-project config (default)",
1679
+ "exclusive": [
1680
+ "global"
1681
+ ],
1682
+ "name": "local",
1683
+ "allowNo": false,
1684
+ "type": "boolean"
1685
+ },
1686
+ "global": {
1687
+ "description": "Write user-level global config",
1688
+ "exclusive": [
1689
+ "local"
1690
+ ],
1691
+ "name": "global",
1692
+ "allowNo": false,
1693
+ "type": "boolean"
1694
+ },
1695
+ "project-id": {
1696
+ "description": "Respan project ID (added to metadata / resource attributes)",
1697
+ "env": "RESPAN_PROJECT_ID",
1698
+ "name": "project-id",
1629
1699
  "hasDynamicHelp": false,
1630
1700
  "multiple": false,
1631
1701
  "type": "option"
1632
1702
  },
1633
- "output": {
1634
- "description": "Output text or JSON",
1635
- "name": "output",
1703
+ "base-url": {
1704
+ "description": "Respan API base URL (for enterprise deployments)",
1705
+ "name": "base-url",
1706
+ "default": "https://api.respan.ai/api",
1636
1707
  "hasDynamicHelp": false,
1637
1708
  "multiple": false,
1638
1709
  "type": "option"
1639
1710
  },
1640
- "model": {
1641
- "description": "Model name",
1642
- "name": "model",
1711
+ "attrs": {
1712
+ "description": "Custom attributes JSON (e.g. '{\"env\":\"prod\"}')",
1713
+ "name": "attrs",
1714
+ "default": "{}",
1643
1715
  "hasDynamicHelp": false,
1644
1716
  "multiple": false,
1645
1717
  "type": "option"
1646
1718
  },
1647
- "metadata": {
1648
- "description": "Metadata as JSON string",
1649
- "name": "metadata",
1719
+ "customer-id": {
1720
+ "description": "Customer/user identifier for traces (e.g. your name or email)",
1721
+ "env": "RESPAN_CUSTOMER_ID",
1722
+ "name": "customer-id",
1650
1723
  "hasDynamicHelp": false,
1651
1724
  "multiple": false,
1652
1725
  "type": "option"
1653
- }
1654
- },
1655
- "hasDynamicHelp": false,
1656
- "hiddenAliases": [],
1657
- "id": "logs:create",
1658
- "pluginAlias": "@respan/cli",
1659
- "pluginName": "@respan/cli",
1660
- "pluginType": "core",
1661
- "strict": true,
1662
- "enableJsonFlag": false,
1663
- "isESM": true,
1664
- "relativePath": [
1665
- "dist",
1666
- "commands",
1667
- "logs",
1668
- "create.js"
1669
- ]
1670
- },
1671
- "logs:get": {
1672
- "aliases": [],
1673
- "args": {
1674
- "id": {
1675
- "description": "Span ID",
1676
- "name": "id",
1677
- "required": true
1678
- }
1679
- },
1680
- "description": "Get a specific log span",
1681
- "flags": {
1682
- "api-key": {
1683
- "description": "API key (env: RESPAN_API_KEY)",
1684
- "env": "RESPAN_API_KEY",
1685
- "name": "api-key",
1726
+ },
1727
+ "span-name": {
1728
+ "description": "Root span name for traces (default: claude-code)",
1729
+ "name": "span-name",
1686
1730
  "hasDynamicHelp": false,
1687
1731
  "multiple": false,
1688
1732
  "type": "option"
1689
1733
  },
1690
- "profile": {
1691
- "description": "Named profile to use",
1692
- "name": "profile",
1734
+ "workflow-name": {
1735
+ "description": "Workflow name for traces (default: claude-code)",
1736
+ "name": "workflow-name",
1693
1737
  "hasDynamicHelp": false,
1694
1738
  "multiple": false,
1695
1739
  "type": "option"
1696
1740
  },
1697
- "json": {
1698
- "description": "Output as JSON",
1699
- "name": "json",
1700
- "allowNo": false,
1701
- "type": "boolean"
1702
- },
1703
- "csv": {
1704
- "description": "Output as CSV",
1705
- "name": "csv",
1706
- "allowNo": false,
1707
- "type": "boolean"
1708
- },
1709
- "verbose": {
1710
- "char": "v",
1711
- "description": "Show verbose output",
1712
- "name": "verbose",
1741
+ "dry-run": {
1742
+ "description": "Preview changes without writing files",
1743
+ "name": "dry-run",
1713
1744
  "allowNo": false,
1714
1745
  "type": "boolean"
1715
1746
  }
1716
1747
  },
1717
1748
  "hasDynamicHelp": false,
1718
1749
  "hiddenAliases": [],
1719
- "id": "logs:get",
1750
+ "id": "integrate:gemini-cli",
1720
1751
  "pluginAlias": "@respan/cli",
1721
1752
  "pluginName": "@respan/cli",
1722
1753
  "pluginType": "core",
@@ -1726,14 +1757,20 @@
1726
1757
  "relativePath": [
1727
1758
  "dist",
1728
1759
  "commands",
1729
- "logs",
1730
- "get.js"
1760
+ "integrate",
1761
+ "gemini-cli.js"
1731
1762
  ]
1732
1763
  },
1733
- "logs:list": {
1764
+ "integrate:opencode": {
1734
1765
  "aliases": [],
1735
1766
  "args": {},
1736
- "description": "List and filter LLM request logs (spans).\n\nSupports pagination, sorting, time range, and server-side filtering.\n\nFILTER SYNTAX: field:operator:value\n\nOPERATORS:\n (empty) Exact match model::gpt-4\n not Not equal status_code:not:200\n gt Greater than cost:gt:0.01\n gte Greater than/equal latency:gte:1.0\n lt Less than cost:lt:0.5\n lte Less than/equal prompt_tokens:lte:100\n contains Contains substring error_message:contains:timeout\n icontains Case-insensitive model:icontains:gpt\n startswith Starts with model:startswith:gpt\n endswith Ends with model:endswith:mini\n in Value in list model:in:gpt-4,gpt-4o\n isnull Is null error_message:isnull:true\n iexact Case-insens. exact status:iexact:success\n\nFILTERABLE FIELDS (logs):\n model, status_code, status, cost, latency, prompt_tokens,\n completion_tokens, customer_identifier, custom_identifier,\n thread_identifier, trace_unique_id, span_name, span_workflow_name,\n environment, log_type, error_message, failed, provider_id,\n deployment_name, prompt_name, prompt_id, unique_id, stream,\n temperature, max_tokens, tokens_per_second, time_to_first_token,\n total_request_tokens, metadata__<key>, scores__<evaluator_id>\n\nEXAMPLES:\n --filter model::gpt-4o --filter cost:gt:0.01\n --filter status_code:not:200\n --filter metadata__env::production\n --filter model:in:gpt-4,gpt-4o",
1767
+ "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.",
1768
+ "examples": [
1769
+ "respan integrate opencode",
1770
+ "respan integrate opencode --global",
1771
+ "respan integrate opencode --project-id my-project --attrs '{\"env\":\"prod\"}'",
1772
+ "respan integrate opencode --dry-run"
1773
+ ],
1737
1774
  "flags": {
1738
1775
  "api-key": {
1739
1776
  "description": "API key (env: RESPAN_API_KEY)",
@@ -1769,75 +1806,80 @@
1769
1806
  "allowNo": false,
1770
1807
  "type": "boolean"
1771
1808
  },
1772
- "limit": {
1773
- "description": "Number of results per page (max 1000)",
1774
- "name": "limit",
1775
- "default": 50,
1776
- "hasDynamicHelp": false,
1777
- "multiple": false,
1778
- "type": "option"
1809
+ "local": {
1810
+ "description": "Write per-project config (default)",
1811
+ "exclusive": [
1812
+ "global"
1813
+ ],
1814
+ "name": "local",
1815
+ "allowNo": false,
1816
+ "type": "boolean"
1779
1817
  },
1780
- "page": {
1781
- "description": "Page number",
1782
- "name": "page",
1783
- "default": 1,
1784
- "hasDynamicHelp": false,
1785
- "multiple": false,
1786
- "type": "option"
1818
+ "global": {
1819
+ "description": "Write user-level global config",
1820
+ "exclusive": [
1821
+ "local"
1822
+ ],
1823
+ "name": "global",
1824
+ "allowNo": false,
1825
+ "type": "boolean"
1787
1826
  },
1788
- "sort-by": {
1789
- "description": "Sort field (prefix with - for descending, e.g. -cost, -latency)",
1790
- "name": "sort-by",
1827
+ "project-id": {
1828
+ "description": "Respan project ID (added to metadata / resource attributes)",
1829
+ "env": "RESPAN_PROJECT_ID",
1830
+ "name": "project-id",
1791
1831
  "hasDynamicHelp": false,
1792
1832
  "multiple": false,
1793
1833
  "type": "option"
1794
1834
  },
1795
- "start-time": {
1796
- "description": "Start time filter (ISO 8601)",
1797
- "name": "start-time",
1835
+ "base-url": {
1836
+ "description": "Respan API base URL (for enterprise deployments)",
1837
+ "name": "base-url",
1838
+ "default": "https://api.respan.ai/api",
1798
1839
  "hasDynamicHelp": false,
1799
1840
  "multiple": false,
1800
1841
  "type": "option"
1801
1842
  },
1802
- "end-time": {
1803
- "description": "End time filter (ISO 8601)",
1804
- "name": "end-time",
1843
+ "attrs": {
1844
+ "description": "Custom attributes JSON (e.g. '{\"env\":\"prod\"}')",
1845
+ "name": "attrs",
1846
+ "default": "{}",
1805
1847
  "hasDynamicHelp": false,
1806
1848
  "multiple": false,
1807
1849
  "type": "option"
1808
1850
  },
1809
- "filter": {
1810
- "description": "Filter in field:operator:value format (repeatable)",
1811
- "name": "filter",
1812
- "hasDynamicHelp": false,
1813
- "multiple": true,
1814
- "type": "option"
1815
- },
1816
- "all-envs": {
1817
- "description": "Include all environments (true/false)",
1818
- "name": "all-envs",
1851
+ "customer-id": {
1852
+ "description": "Customer/user identifier for traces (e.g. your name or email)",
1853
+ "env": "RESPAN_CUSTOMER_ID",
1854
+ "name": "customer-id",
1819
1855
  "hasDynamicHelp": false,
1820
1856
  "multiple": false,
1821
1857
  "type": "option"
1822
1858
  },
1823
- "is-test": {
1824
- "description": "Filter by test (true) or production (false) environment",
1825
- "name": "is-test",
1859
+ "span-name": {
1860
+ "description": "Root span name for traces (default: claude-code)",
1861
+ "name": "span-name",
1826
1862
  "hasDynamicHelp": false,
1827
1863
  "multiple": false,
1828
1864
  "type": "option"
1829
1865
  },
1830
- "include-fields": {
1831
- "description": "Comma-separated fields to include in response",
1832
- "name": "include-fields",
1866
+ "workflow-name": {
1867
+ "description": "Workflow name for traces (default: claude-code)",
1868
+ "name": "workflow-name",
1833
1869
  "hasDynamicHelp": false,
1834
1870
  "multiple": false,
1835
1871
  "type": "option"
1872
+ },
1873
+ "dry-run": {
1874
+ "description": "Preview changes without writing files",
1875
+ "name": "dry-run",
1876
+ "allowNo": false,
1877
+ "type": "boolean"
1836
1878
  }
1837
1879
  },
1838
1880
  "hasDynamicHelp": false,
1839
1881
  "hiddenAliases": [],
1840
- "id": "logs:list",
1882
+ "id": "integrate:opencode",
1841
1883
  "pluginAlias": "@respan/cli",
1842
1884
  "pluginName": "@respan/cli",
1843
1885
  "pluginType": "core",
@@ -1847,14 +1889,14 @@
1847
1889
  "relativePath": [
1848
1890
  "dist",
1849
1891
  "commands",
1850
- "logs",
1851
- "list.js"
1892
+ "integrate",
1893
+ "opencode.js"
1852
1894
  ]
1853
1895
  },
1854
- "logs:summary": {
1896
+ "experiments:create": {
1855
1897
  "aliases": [],
1856
1898
  "args": {},
1857
- "description": "Get aggregated summary statistics for log spans in a time range.\n\nReturns total cost, total tokens, request count, and score summaries.\n\nFILTER SYNTAX: field:operator:value\n\nOPERATORS:\n (empty) Exact match model::gpt-4\n not Not equal status_code:not:200\n gt Greater than cost:gt:0.01\n gte Greater than/equal latency:gte:1.0\n lt Less than cost:lt:0.5\n lte Less than/equal prompt_tokens:lte:100\n contains Contains substring error_message:contains:timeout\n icontains Case-insensitive model:icontains:gpt\n startswith Starts with model:startswith:gpt\n endswith Ends with model:endswith:mini\n in Value in list model:in:gpt-4,gpt-4o\n isnull Is null error_message:isnull:true\n iexact Case-insens. exact status:iexact:success\n\nFILTERABLE FIELDS (logs):\n model, status_code, status, cost, latency, prompt_tokens,\n completion_tokens, customer_identifier, custom_identifier,\n thread_identifier, trace_unique_id, span_name, span_workflow_name,\n environment, log_type, error_message, failed, provider_id,\n deployment_name, prompt_name, prompt_id, unique_id, stream,\n temperature, max_tokens, tokens_per_second, time_to_first_token,\n total_request_tokens, metadata__<key>, scores__<evaluator_id>\n\nEXAMPLES:\n --filter model::gpt-4o --filter cost:gt:0.01\n --filter status_code:not:200\n --filter metadata__env::production\n --filter model:in:gpt-4,gpt-4o",
1899
+ "description": "Create a new experiment",
1858
1900
  "flags": {
1859
1901
  "api-key": {
1860
1902
  "description": "API key (env: RESPAN_API_KEY)",
@@ -1890,39 +1932,32 @@
1890
1932
  "allowNo": false,
1891
1933
  "type": "boolean"
1892
1934
  },
1893
- "start-time": {
1894
- "description": "Start time (ISO 8601)",
1895
- "name": "start-time",
1935
+ "name": {
1936
+ "description": "Experiment name",
1937
+ "name": "name",
1896
1938
  "required": true,
1897
1939
  "hasDynamicHelp": false,
1898
1940
  "multiple": false,
1899
1941
  "type": "option"
1900
1942
  },
1901
- "end-time": {
1902
- "description": "End time (ISO 8601)",
1903
- "name": "end-time",
1943
+ "dataset-id": {
1944
+ "description": "Dataset ID",
1945
+ "name": "dataset-id",
1904
1946
  "required": true,
1905
1947
  "hasDynamicHelp": false,
1906
1948
  "multiple": false,
1907
1949
  "type": "option"
1908
1950
  },
1909
- "filter": {
1910
- "description": "Filter in field:operator:value format (repeatable)",
1911
- "name": "filter",
1912
- "hasDynamicHelp": false,
1913
- "multiple": true,
1914
- "type": "option"
1915
- },
1916
- "all-envs": {
1917
- "description": "Include all environments (true/false)",
1918
- "name": "all-envs",
1951
+ "description": {
1952
+ "description": "Experiment description",
1953
+ "name": "description",
1919
1954
  "hasDynamicHelp": false,
1920
1955
  "multiple": false,
1921
1956
  "type": "option"
1922
1957
  },
1923
- "is-test": {
1924
- "description": "Filter by test (true) or production (false) environment",
1925
- "name": "is-test",
1958
+ "workflows": {
1959
+ "description": "Workflows configuration as JSON string",
1960
+ "name": "workflows",
1926
1961
  "hasDynamicHelp": false,
1927
1962
  "multiple": false,
1928
1963
  "type": "option"
@@ -1930,7 +1965,7 @@
1930
1965
  },
1931
1966
  "hasDynamicHelp": false,
1932
1967
  "hiddenAliases": [],
1933
- "id": "logs:summary",
1968
+ "id": "experiments:create",
1934
1969
  "pluginAlias": "@respan/cli",
1935
1970
  "pluginName": "@respan/cli",
1936
1971
  "pluginType": "core",
@@ -1940,20 +1975,20 @@
1940
1975
  "relativePath": [
1941
1976
  "dist",
1942
1977
  "commands",
1943
- "logs",
1944
- "summary.js"
1978
+ "experiments",
1979
+ "create.js"
1945
1980
  ]
1946
1981
  },
1947
- "prompts:create-version": {
1982
+ "experiments:get": {
1948
1983
  "aliases": [],
1949
1984
  "args": {
1950
- "prompt-id": {
1951
- "description": "Prompt ID",
1952
- "name": "prompt-id",
1985
+ "id": {
1986
+ "description": "Experiment ID",
1987
+ "name": "id",
1953
1988
  "required": true
1954
1989
  }
1955
1990
  },
1956
- "description": "Create a new version of a prompt",
1991
+ "description": "Get a specific experiment",
1957
1992
  "flags": {
1958
1993
  "api-key": {
1959
1994
  "description": "API key (env: RESPAN_API_KEY)",
@@ -1988,32 +2023,75 @@
1988
2023
  "name": "verbose",
1989
2024
  "allowNo": false,
1990
2025
  "type": "boolean"
1991
- },
1992
- "messages": {
1993
- "description": "Messages as JSON array string",
1994
- "name": "messages",
1995
- "required": true,
2026
+ }
2027
+ },
2028
+ "hasDynamicHelp": false,
2029
+ "hiddenAliases": [],
2030
+ "id": "experiments:get",
2031
+ "pluginAlias": "@respan/cli",
2032
+ "pluginName": "@respan/cli",
2033
+ "pluginType": "core",
2034
+ "strict": true,
2035
+ "enableJsonFlag": false,
2036
+ "isESM": true,
2037
+ "relativePath": [
2038
+ "dist",
2039
+ "commands",
2040
+ "experiments",
2041
+ "get.js"
2042
+ ]
2043
+ },
2044
+ "experiments:list": {
2045
+ "aliases": [],
2046
+ "args": {},
2047
+ "description": "List experiments",
2048
+ "flags": {
2049
+ "api-key": {
2050
+ "description": "API key (env: RESPAN_API_KEY)",
2051
+ "env": "RESPAN_API_KEY",
2052
+ "name": "api-key",
1996
2053
  "hasDynamicHelp": false,
1997
2054
  "multiple": false,
1998
2055
  "type": "option"
1999
2056
  },
2000
- "model": {
2001
- "description": "Model name",
2002
- "name": "model",
2057
+ "profile": {
2058
+ "description": "Named profile to use",
2059
+ "name": "profile",
2003
2060
  "hasDynamicHelp": false,
2004
2061
  "multiple": false,
2005
2062
  "type": "option"
2006
2063
  },
2007
- "temperature": {
2008
- "description": "Temperature value",
2009
- "name": "temperature",
2064
+ "json": {
2065
+ "description": "Output as JSON",
2066
+ "name": "json",
2067
+ "allowNo": false,
2068
+ "type": "boolean"
2069
+ },
2070
+ "csv": {
2071
+ "description": "Output as CSV",
2072
+ "name": "csv",
2073
+ "allowNo": false,
2074
+ "type": "boolean"
2075
+ },
2076
+ "verbose": {
2077
+ "char": "v",
2078
+ "description": "Show verbose output",
2079
+ "name": "verbose",
2080
+ "allowNo": false,
2081
+ "type": "boolean"
2082
+ },
2083
+ "limit": {
2084
+ "description": "Number of results per page",
2085
+ "name": "limit",
2086
+ "default": 20,
2010
2087
  "hasDynamicHelp": false,
2011
2088
  "multiple": false,
2012
2089
  "type": "option"
2013
2090
  },
2014
- "max-tokens": {
2015
- "description": "Max tokens",
2016
- "name": "max-tokens",
2091
+ "page": {
2092
+ "description": "Page number",
2093
+ "name": "page",
2094
+ "default": 1,
2017
2095
  "hasDynamicHelp": false,
2018
2096
  "multiple": false,
2019
2097
  "type": "option"
@@ -2021,7 +2099,7 @@
2021
2099
  },
2022
2100
  "hasDynamicHelp": false,
2023
2101
  "hiddenAliases": [],
2024
- "id": "prompts:create-version",
2102
+ "id": "experiments:list",
2025
2103
  "pluginAlias": "@respan/cli",
2026
2104
  "pluginName": "@respan/cli",
2027
2105
  "pluginType": "core",
@@ -2031,14 +2109,14 @@
2031
2109
  "relativePath": [
2032
2110
  "dist",
2033
2111
  "commands",
2034
- "prompts",
2035
- "create-version.js"
2112
+ "experiments",
2113
+ "list.js"
2036
2114
  ]
2037
2115
  },
2038
- "prompts:create": {
2116
+ "logs:create": {
2039
2117
  "aliases": [],
2040
2118
  "args": {},
2041
- "description": "Create a new prompt",
2119
+ "description": "Create a log span",
2042
2120
  "flags": {
2043
2121
  "api-key": {
2044
2122
  "description": "API key (env: RESPAN_API_KEY)",
@@ -2074,17 +2152,31 @@
2074
2152
  "allowNo": false,
2075
2153
  "type": "boolean"
2076
2154
  },
2077
- "name": {
2078
- "description": "Prompt name",
2079
- "name": "name",
2155
+ "input": {
2156
+ "description": "Input text or JSON",
2157
+ "name": "input",
2080
2158
  "required": true,
2081
2159
  "hasDynamicHelp": false,
2082
2160
  "multiple": false,
2083
2161
  "type": "option"
2084
2162
  },
2085
- "description": {
2086
- "description": "Prompt description",
2087
- "name": "description",
2163
+ "output": {
2164
+ "description": "Output text or JSON",
2165
+ "name": "output",
2166
+ "hasDynamicHelp": false,
2167
+ "multiple": false,
2168
+ "type": "option"
2169
+ },
2170
+ "model": {
2171
+ "description": "Model name",
2172
+ "name": "model",
2173
+ "hasDynamicHelp": false,
2174
+ "multiple": false,
2175
+ "type": "option"
2176
+ },
2177
+ "metadata": {
2178
+ "description": "Metadata as JSON string",
2179
+ "name": "metadata",
2088
2180
  "hasDynamicHelp": false,
2089
2181
  "multiple": false,
2090
2182
  "type": "option"
@@ -2092,7 +2184,7 @@
2092
2184
  },
2093
2185
  "hasDynamicHelp": false,
2094
2186
  "hiddenAliases": [],
2095
- "id": "prompts:create",
2187
+ "id": "logs:create",
2096
2188
  "pluginAlias": "@respan/cli",
2097
2189
  "pluginName": "@respan/cli",
2098
2190
  "pluginType": "core",
@@ -2102,20 +2194,20 @@
2102
2194
  "relativePath": [
2103
2195
  "dist",
2104
2196
  "commands",
2105
- "prompts",
2197
+ "logs",
2106
2198
  "create.js"
2107
2199
  ]
2108
2200
  },
2109
- "prompts:get": {
2201
+ "logs:get": {
2110
2202
  "aliases": [],
2111
2203
  "args": {
2112
2204
  "id": {
2113
- "description": "Prompt ID",
2205
+ "description": "Span ID",
2114
2206
  "name": "id",
2115
2207
  "required": true
2116
2208
  }
2117
2209
  },
2118
- "description": "Get a specific prompt",
2210
+ "description": "Get a specific log span",
2119
2211
  "flags": {
2120
2212
  "api-key": {
2121
2213
  "description": "API key (env: RESPAN_API_KEY)",
@@ -2154,7 +2246,7 @@
2154
2246
  },
2155
2247
  "hasDynamicHelp": false,
2156
2248
  "hiddenAliases": [],
2157
- "id": "prompts:get",
2249
+ "id": "logs:get",
2158
2250
  "pluginAlias": "@respan/cli",
2159
2251
  "pluginName": "@respan/cli",
2160
2252
  "pluginType": "core",
@@ -2164,14 +2256,14 @@
2164
2256
  "relativePath": [
2165
2257
  "dist",
2166
2258
  "commands",
2167
- "prompts",
2259
+ "logs",
2168
2260
  "get.js"
2169
2261
  ]
2170
2262
  },
2171
- "prompts:list": {
2263
+ "logs:list": {
2172
2264
  "aliases": [],
2173
2265
  "args": {},
2174
- "description": "List prompts",
2266
+ "description": "List and filter LLM request logs (spans).\n\nSupports pagination, sorting, time range, and server-side filtering.\n\nFILTER SYNTAX: field:operator:value\n\nOPERATORS:\n (empty) Exact match model::gpt-4\n not Not equal status_code:not:200\n gt Greater than cost:gt:0.01\n gte Greater than/equal latency:gte:1.0\n lt Less than cost:lt:0.5\n lte Less than/equal prompt_tokens:lte:100\n contains Contains substring error_message:contains:timeout\n icontains Case-insensitive model:icontains:gpt\n startswith Starts with model:startswith:gpt\n endswith Ends with model:endswith:mini\n in Value in list model:in:gpt-4,gpt-4o\n isnull Is null error_message:isnull:true\n iexact Case-insens. exact status:iexact:success\n\nFILTERABLE FIELDS (logs):\n model, status_code, status, cost, latency, prompt_tokens,\n completion_tokens, customer_identifier, custom_identifier,\n thread_identifier, trace_unique_id, span_name, span_workflow_name,\n environment, log_type, error_message, failed, provider_id,\n deployment_name, prompt_name, prompt_id, unique_id, stream,\n temperature, max_tokens, tokens_per_second, time_to_first_token,\n total_request_tokens, metadata__<key>, scores__<evaluator_id>\n\nEXAMPLES:\n --filter model::gpt-4o --filter cost:gt:0.01\n --filter status_code:not:200\n --filter metadata__env::production\n --filter model:in:gpt-4,gpt-4o",
2175
2267
  "flags": {
2176
2268
  "api-key": {
2177
2269
  "description": "API key (env: RESPAN_API_KEY)",
@@ -2188,29 +2280,86 @@
2188
2280
  "multiple": false,
2189
2281
  "type": "option"
2190
2282
  },
2191
- "json": {
2192
- "description": "Output as JSON",
2193
- "name": "json",
2194
- "allowNo": false,
2195
- "type": "boolean"
2196
- },
2197
- "csv": {
2198
- "description": "Output as CSV",
2199
- "name": "csv",
2200
- "allowNo": false,
2201
- "type": "boolean"
2202
- },
2203
- "verbose": {
2204
- "char": "v",
2205
- "description": "Show verbose output",
2206
- "name": "verbose",
2207
- "allowNo": false,
2208
- "type": "boolean"
2209
- },
2210
- "limit": {
2211
- "description": "Number of results per page",
2212
- "name": "limit",
2213
- "default": 50,
2283
+ "json": {
2284
+ "description": "Output as JSON",
2285
+ "name": "json",
2286
+ "allowNo": false,
2287
+ "type": "boolean"
2288
+ },
2289
+ "csv": {
2290
+ "description": "Output as CSV",
2291
+ "name": "csv",
2292
+ "allowNo": false,
2293
+ "type": "boolean"
2294
+ },
2295
+ "verbose": {
2296
+ "char": "v",
2297
+ "description": "Show verbose output",
2298
+ "name": "verbose",
2299
+ "allowNo": false,
2300
+ "type": "boolean"
2301
+ },
2302
+ "limit": {
2303
+ "description": "Number of results per page (max 1000)",
2304
+ "name": "limit",
2305
+ "default": 50,
2306
+ "hasDynamicHelp": false,
2307
+ "multiple": false,
2308
+ "type": "option"
2309
+ },
2310
+ "page": {
2311
+ "description": "Page number",
2312
+ "name": "page",
2313
+ "default": 1,
2314
+ "hasDynamicHelp": false,
2315
+ "multiple": false,
2316
+ "type": "option"
2317
+ },
2318
+ "sort-by": {
2319
+ "description": "Sort field (prefix with - for descending, e.g. -cost, -latency)",
2320
+ "name": "sort-by",
2321
+ "hasDynamicHelp": false,
2322
+ "multiple": false,
2323
+ "type": "option"
2324
+ },
2325
+ "start-time": {
2326
+ "description": "Start time filter (ISO 8601)",
2327
+ "name": "start-time",
2328
+ "hasDynamicHelp": false,
2329
+ "multiple": false,
2330
+ "type": "option"
2331
+ },
2332
+ "end-time": {
2333
+ "description": "End time filter (ISO 8601)",
2334
+ "name": "end-time",
2335
+ "hasDynamicHelp": false,
2336
+ "multiple": false,
2337
+ "type": "option"
2338
+ },
2339
+ "filter": {
2340
+ "description": "Filter in field:operator:value format (repeatable)",
2341
+ "name": "filter",
2342
+ "hasDynamicHelp": false,
2343
+ "multiple": true,
2344
+ "type": "option"
2345
+ },
2346
+ "all-envs": {
2347
+ "description": "Include all environments (true/false)",
2348
+ "name": "all-envs",
2349
+ "hasDynamicHelp": false,
2350
+ "multiple": false,
2351
+ "type": "option"
2352
+ },
2353
+ "is-test": {
2354
+ "description": "Filter by test (true) or production (false) environment",
2355
+ "name": "is-test",
2356
+ "hasDynamicHelp": false,
2357
+ "multiple": false,
2358
+ "type": "option"
2359
+ },
2360
+ "include-fields": {
2361
+ "description": "Comma-separated fields to include in response",
2362
+ "name": "include-fields",
2214
2363
  "hasDynamicHelp": false,
2215
2364
  "multiple": false,
2216
2365
  "type": "option"
@@ -2218,7 +2367,7 @@
2218
2367
  },
2219
2368
  "hasDynamicHelp": false,
2220
2369
  "hiddenAliases": [],
2221
- "id": "prompts:list",
2370
+ "id": "logs:list",
2222
2371
  "pluginAlias": "@respan/cli",
2223
2372
  "pluginName": "@respan/cli",
2224
2373
  "pluginType": "core",
@@ -2228,20 +2377,14 @@
2228
2377
  "relativePath": [
2229
2378
  "dist",
2230
2379
  "commands",
2231
- "prompts",
2380
+ "logs",
2232
2381
  "list.js"
2233
2382
  ]
2234
2383
  },
2235
- "prompts:update": {
2384
+ "logs:summary": {
2236
2385
  "aliases": [],
2237
- "args": {
2238
- "id": {
2239
- "description": "Prompt ID",
2240
- "name": "id",
2241
- "required": true
2242
- }
2243
- },
2244
- "description": "Update a prompt",
2386
+ "args": {},
2387
+ "description": "Get aggregated summary statistics for log spans in a time range.\n\nReturns total cost, total tokens, request count, and score summaries.\n\nFILTER SYNTAX: field:operator:value\n\nOPERATORS:\n (empty) Exact match model::gpt-4\n not Not equal status_code:not:200\n gt Greater than cost:gt:0.01\n gte Greater than/equal latency:gte:1.0\n lt Less than cost:lt:0.5\n lte Less than/equal prompt_tokens:lte:100\n contains Contains substring error_message:contains:timeout\n icontains Case-insensitive model:icontains:gpt\n startswith Starts with model:startswith:gpt\n endswith Ends with model:endswith:mini\n in Value in list model:in:gpt-4,gpt-4o\n isnull Is null error_message:isnull:true\n iexact Case-insens. exact status:iexact:success\n\nFILTERABLE FIELDS (logs):\n model, status_code, status, cost, latency, prompt_tokens,\n completion_tokens, customer_identifier, custom_identifier,\n thread_identifier, trace_unique_id, span_name, span_workflow_name,\n environment, log_type, error_message, failed, provider_id,\n deployment_name, prompt_name, prompt_id, unique_id, stream,\n temperature, max_tokens, tokens_per_second, time_to_first_token,\n total_request_tokens, metadata__<key>, scores__<evaluator_id>\n\nEXAMPLES:\n --filter model::gpt-4o --filter cost:gt:0.01\n --filter status_code:not:200\n --filter metadata__env::production\n --filter model:in:gpt-4,gpt-4o",
2245
2388
  "flags": {
2246
2389
  "api-key": {
2247
2390
  "description": "API key (env: RESPAN_API_KEY)",
@@ -2277,16 +2420,39 @@
2277
2420
  "allowNo": false,
2278
2421
  "type": "boolean"
2279
2422
  },
2280
- "name": {
2281
- "description": "Prompt name",
2282
- "name": "name",
2423
+ "start-time": {
2424
+ "description": "Start time (ISO 8601)",
2425
+ "name": "start-time",
2426
+ "required": true,
2283
2427
  "hasDynamicHelp": false,
2284
2428
  "multiple": false,
2285
2429
  "type": "option"
2286
2430
  },
2287
- "description": {
2288
- "description": "Prompt description",
2289
- "name": "description",
2431
+ "end-time": {
2432
+ "description": "End time (ISO 8601)",
2433
+ "name": "end-time",
2434
+ "required": true,
2435
+ "hasDynamicHelp": false,
2436
+ "multiple": false,
2437
+ "type": "option"
2438
+ },
2439
+ "filter": {
2440
+ "description": "Filter in field:operator:value format (repeatable)",
2441
+ "name": "filter",
2442
+ "hasDynamicHelp": false,
2443
+ "multiple": true,
2444
+ "type": "option"
2445
+ },
2446
+ "all-envs": {
2447
+ "description": "Include all environments (true/false)",
2448
+ "name": "all-envs",
2449
+ "hasDynamicHelp": false,
2450
+ "multiple": false,
2451
+ "type": "option"
2452
+ },
2453
+ "is-test": {
2454
+ "description": "Filter by test (true) or production (false) environment",
2455
+ "name": "is-test",
2290
2456
  "hasDynamicHelp": false,
2291
2457
  "multiple": false,
2292
2458
  "type": "option"
@@ -2294,7 +2460,7 @@
2294
2460
  },
2295
2461
  "hasDynamicHelp": false,
2296
2462
  "hiddenAliases": [],
2297
- "id": "prompts:update",
2463
+ "id": "logs:summary",
2298
2464
  "pluginAlias": "@respan/cli",
2299
2465
  "pluginName": "@respan/cli",
2300
2466
  "pluginType": "core",
@@ -2304,20 +2470,20 @@
2304
2470
  "relativePath": [
2305
2471
  "dist",
2306
2472
  "commands",
2307
- "prompts",
2308
- "update.js"
2473
+ "logs",
2474
+ "summary.js"
2309
2475
  ]
2310
2476
  },
2311
- "prompts:versions": {
2477
+ "traces:get": {
2312
2478
  "aliases": [],
2313
2479
  "args": {
2314
- "prompt-id": {
2315
- "description": "Prompt ID",
2316
- "name": "prompt-id",
2480
+ "id": {
2481
+ "description": "Trace ID",
2482
+ "name": "id",
2317
2483
  "required": true
2318
2484
  }
2319
2485
  },
2320
- "description": "List versions of a prompt",
2486
+ "description": "Get a specific trace",
2321
2487
  "flags": {
2322
2488
  "api-key": {
2323
2489
  "description": "API key (env: RESPAN_API_KEY)",
@@ -2356,7 +2522,7 @@
2356
2522
  },
2357
2523
  "hasDynamicHelp": false,
2358
2524
  "hiddenAliases": [],
2359
- "id": "prompts:versions",
2525
+ "id": "traces:get",
2360
2526
  "pluginAlias": "@respan/cli",
2361
2527
  "pluginName": "@respan/cli",
2362
2528
  "pluginType": "core",
@@ -2366,21 +2532,14 @@
2366
2532
  "relativePath": [
2367
2533
  "dist",
2368
2534
  "commands",
2369
- "prompts",
2370
- "versions.js"
2535
+ "traces",
2536
+ "get.js"
2371
2537
  ]
2372
2538
  },
2373
- "integrate:claude-code": {
2539
+ "traces:list": {
2374
2540
  "aliases": [],
2375
2541
  "args": {},
2376
- "description": "Integrate Respan with Claude Code.\n\nInstalls a Stop hook that reads conversation transcripts and sends\nthem to Respan as structured spans (chat, tool, thinking).\n\nScope:\n --global Install hook script + register in ~/.claude/settings.json\n --local Write credentials + enable flag to .claude/settings.local.json\n (default) Both: install hook globally + enable for current project",
2377
- "examples": [
2378
- "respan integrate claude-code",
2379
- "respan integrate claude-code --global",
2380
- "respan integrate claude-code --local --project-id my-project",
2381
- "respan integrate claude-code --attrs '{\"env\":\"prod\"}'",
2382
- "respan integrate claude-code --dry-run"
2383
- ],
2542
+ "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",
2384
2543
  "flags": {
2385
2544
  "api-key": {
2386
2545
  "description": "API key (env: RESPAN_API_KEY)",
@@ -2416,80 +2575,62 @@
2416
2575
  "allowNo": false,
2417
2576
  "type": "boolean"
2418
2577
  },
2419
- "local": {
2420
- "description": "Write per-project config (default)",
2421
- "exclusive": [
2422
- "global"
2423
- ],
2424
- "name": "local",
2425
- "allowNo": false,
2426
- "type": "boolean"
2427
- },
2428
- "global": {
2429
- "description": "Write user-level global config",
2430
- "exclusive": [
2431
- "local"
2432
- ],
2433
- "name": "global",
2434
- "allowNo": false,
2435
- "type": "boolean"
2436
- },
2437
- "project-id": {
2438
- "description": "Respan project ID (added to metadata / resource attributes)",
2439
- "env": "RESPAN_PROJECT_ID",
2440
- "name": "project-id",
2578
+ "limit": {
2579
+ "description": "Number of results per page",
2580
+ "name": "limit",
2581
+ "default": 10,
2441
2582
  "hasDynamicHelp": false,
2442
2583
  "multiple": false,
2443
2584
  "type": "option"
2444
2585
  },
2445
- "base-url": {
2446
- "description": "Respan API base URL (for enterprise deployments)",
2447
- "name": "base-url",
2448
- "default": "https://api.respan.ai/api",
2586
+ "page": {
2587
+ "description": "Page number",
2588
+ "name": "page",
2589
+ "default": 1,
2449
2590
  "hasDynamicHelp": false,
2450
2591
  "multiple": false,
2451
2592
  "type": "option"
2452
2593
  },
2453
- "attrs": {
2454
- "description": "Custom attributes JSON (e.g. '{\"env\":\"prod\"}')",
2455
- "name": "attrs",
2456
- "default": "{}",
2594
+ "sort-by": {
2595
+ "description": "Sort field (prefix with - for descending)",
2596
+ "name": "sort-by",
2597
+ "default": "-timestamp",
2457
2598
  "hasDynamicHelp": false,
2458
2599
  "multiple": false,
2459
2600
  "type": "option"
2460
2601
  },
2461
- "customer-id": {
2462
- "description": "Customer/user identifier for traces (e.g. your name or email)",
2463
- "env": "RESPAN_CUSTOMER_ID",
2464
- "name": "customer-id",
2602
+ "start-time": {
2603
+ "description": "Start time filter (ISO 8601)",
2604
+ "name": "start-time",
2465
2605
  "hasDynamicHelp": false,
2466
2606
  "multiple": false,
2467
2607
  "type": "option"
2468
2608
  },
2469
- "span-name": {
2470
- "description": "Root span name for traces (default: claude-code)",
2471
- "name": "span-name",
2609
+ "end-time": {
2610
+ "description": "End time filter (ISO 8601)",
2611
+ "name": "end-time",
2472
2612
  "hasDynamicHelp": false,
2473
2613
  "multiple": false,
2474
2614
  "type": "option"
2475
2615
  },
2476
- "workflow-name": {
2477
- "description": "Workflow name for traces (default: claude-code)",
2478
- "name": "workflow-name",
2616
+ "environment": {
2617
+ "description": "Environment filter",
2618
+ "name": "environment",
2479
2619
  "hasDynamicHelp": false,
2480
2620
  "multiple": false,
2481
2621
  "type": "option"
2482
2622
  },
2483
- "dry-run": {
2484
- "description": "Preview changes without writing files",
2485
- "name": "dry-run",
2486
- "allowNo": false,
2487
- "type": "boolean"
2623
+ "filter": {
2624
+ "description": "Filter in field:operator:value format (repeatable)",
2625
+ "name": "filter",
2626
+ "hasDynamicHelp": false,
2627
+ "multiple": true,
2628
+ "type": "option"
2488
2629
  }
2489
2630
  },
2490
2631
  "hasDynamicHelp": false,
2491
2632
  "hiddenAliases": [],
2492
- "id": "integrate:claude-code",
2633
+ "id": "traces:list",
2493
2634
  "pluginAlias": "@respan/cli",
2494
2635
  "pluginName": "@respan/cli",
2495
2636
  "pluginType": "core",
@@ -2499,21 +2640,14 @@
2499
2640
  "relativePath": [
2500
2641
  "dist",
2501
2642
  "commands",
2502
- "integrate",
2503
- "claude-code.js"
2643
+ "traces",
2644
+ "list.js"
2504
2645
  ]
2505
2646
  },
2506
- "integrate:codex-cli": {
2647
+ "traces:summary": {
2507
2648
  "aliases": [],
2508
2649
  "args": {},
2509
- "description": "Integrate Respan with Codex CLI.\n\nInstalls a notify hook that reads session JSONL files and sends\nthem to Respan as structured spans (chat, tool, reasoning).\n\nScope:\n --global Install hook script + register notify in ~/.codex/config.toml\n --local Write .codex/respan.json with customer_id, span_name, etc.\n (default) Both: install hook globally + config for current project",
2510
- "examples": [
2511
- "respan integrate codex-cli",
2512
- "respan integrate codex-cli --global",
2513
- "respan integrate codex-cli --local --customer-id frank",
2514
- "respan integrate codex-cli --attrs '{\"env\":\"prod\"}'",
2515
- "respan integrate codex-cli --dry-run"
2516
- ],
2650
+ "description": "Get a summary of traces for a time range",
2517
2651
  "flags": {
2518
2652
  "api-key": {
2519
2653
  "description": "API key (env: RESPAN_API_KEY)",
@@ -2549,80 +2683,26 @@
2549
2683
  "allowNo": false,
2550
2684
  "type": "boolean"
2551
2685
  },
2552
- "local": {
2553
- "description": "Write per-project config (default)",
2554
- "exclusive": [
2555
- "global"
2556
- ],
2557
- "name": "local",
2558
- "allowNo": false,
2559
- "type": "boolean"
2560
- },
2561
- "global": {
2562
- "description": "Write user-level global config",
2563
- "exclusive": [
2564
- "local"
2565
- ],
2566
- "name": "global",
2567
- "allowNo": false,
2568
- "type": "boolean"
2569
- },
2570
- "project-id": {
2571
- "description": "Respan project ID (added to metadata / resource attributes)",
2572
- "env": "RESPAN_PROJECT_ID",
2573
- "name": "project-id",
2574
- "hasDynamicHelp": false,
2575
- "multiple": false,
2576
- "type": "option"
2577
- },
2578
- "base-url": {
2579
- "description": "Respan API base URL (for enterprise deployments)",
2580
- "name": "base-url",
2581
- "default": "https://api.respan.ai/api",
2582
- "hasDynamicHelp": false,
2583
- "multiple": false,
2584
- "type": "option"
2585
- },
2586
- "attrs": {
2587
- "description": "Custom attributes JSON (e.g. '{\"env\":\"prod\"}')",
2588
- "name": "attrs",
2589
- "default": "{}",
2590
- "hasDynamicHelp": false,
2591
- "multiple": false,
2592
- "type": "option"
2593
- },
2594
- "customer-id": {
2595
- "description": "Customer/user identifier for traces (e.g. your name or email)",
2596
- "env": "RESPAN_CUSTOMER_ID",
2597
- "name": "customer-id",
2598
- "hasDynamicHelp": false,
2599
- "multiple": false,
2600
- "type": "option"
2601
- },
2602
- "span-name": {
2603
- "description": "Root span name for traces (default: claude-code)",
2604
- "name": "span-name",
2686
+ "start-time": {
2687
+ "description": "Start time (ISO 8601)",
2688
+ "name": "start-time",
2689
+ "required": true,
2605
2690
  "hasDynamicHelp": false,
2606
2691
  "multiple": false,
2607
2692
  "type": "option"
2608
2693
  },
2609
- "workflow-name": {
2610
- "description": "Workflow name for traces (default: claude-code)",
2611
- "name": "workflow-name",
2694
+ "end-time": {
2695
+ "description": "End time (ISO 8601)",
2696
+ "name": "end-time",
2697
+ "required": true,
2612
2698
  "hasDynamicHelp": false,
2613
2699
  "multiple": false,
2614
2700
  "type": "option"
2615
- },
2616
- "dry-run": {
2617
- "description": "Preview changes without writing files",
2618
- "name": "dry-run",
2619
- "allowNo": false,
2620
- "type": "boolean"
2621
2701
  }
2622
2702
  },
2623
2703
  "hasDynamicHelp": false,
2624
2704
  "hiddenAliases": [],
2625
- "id": "integrate:codex-cli",
2705
+ "id": "traces:summary",
2626
2706
  "pluginAlias": "@respan/cli",
2627
2707
  "pluginName": "@respan/cli",
2628
2708
  "pluginType": "core",
@@ -2632,20 +2712,14 @@
2632
2712
  "relativePath": [
2633
2713
  "dist",
2634
2714
  "commands",
2635
- "integrate",
2636
- "codex-cli.js"
2715
+ "traces",
2716
+ "summary.js"
2637
2717
  ]
2638
2718
  },
2639
- "integrate:gemini-cli": {
2719
+ "users:create": {
2640
2720
  "aliases": [],
2641
2721
  "args": {},
2642
- "description": "Integrate Respan with Gemini CLI.\n\nInstalls an AfterModel hook that captures LLM request/response data\nand sends it to Respan as structured spans with model, token counts,\nand input/output.\n\nScope:\n --global Write to ~/.gemini/settings.json (default)\n --local Write to .gemini/settings.json in project root\n\nNote: Gemini CLI ignores workspace-level telemetry settings, so\n--global is the default.",
2643
- "examples": [
2644
- "respan integrate gemini-cli",
2645
- "respan integrate gemini-cli --local",
2646
- "respan integrate gemini-cli --project-id my-project --attrs '{\"env\":\"prod\"}'",
2647
- "respan integrate gemini-cli --dry-run"
2648
- ],
2722
+ "description": "Create a new user (customer)",
2649
2723
  "flags": {
2650
2724
  "api-key": {
2651
2725
  "description": "API key (env: RESPAN_API_KEY)",
@@ -2681,80 +2755,39 @@
2681
2755
  "allowNo": false,
2682
2756
  "type": "boolean"
2683
2757
  },
2684
- "local": {
2685
- "description": "Write per-project config (default)",
2686
- "exclusive": [
2687
- "global"
2688
- ],
2689
- "name": "local",
2690
- "allowNo": false,
2691
- "type": "boolean"
2692
- },
2693
- "global": {
2694
- "description": "Write user-level global config",
2695
- "exclusive": [
2696
- "local"
2697
- ],
2698
- "name": "global",
2699
- "allowNo": false,
2700
- "type": "boolean"
2701
- },
2702
- "project-id": {
2703
- "description": "Respan project ID (added to metadata / resource attributes)",
2704
- "env": "RESPAN_PROJECT_ID",
2705
- "name": "project-id",
2706
- "hasDynamicHelp": false,
2707
- "multiple": false,
2708
- "type": "option"
2709
- },
2710
- "base-url": {
2711
- "description": "Respan API base URL (for enterprise deployments)",
2712
- "name": "base-url",
2713
- "default": "https://api.respan.ai/api",
2714
- "hasDynamicHelp": false,
2715
- "multiple": false,
2716
- "type": "option"
2717
- },
2718
- "attrs": {
2719
- "description": "Custom attributes JSON (e.g. '{\"env\":\"prod\"}')",
2720
- "name": "attrs",
2721
- "default": "{}",
2758
+ "identifier": {
2759
+ "description": "Customer identifier",
2760
+ "name": "identifier",
2761
+ "required": true,
2722
2762
  "hasDynamicHelp": false,
2723
2763
  "multiple": false,
2724
2764
  "type": "option"
2725
2765
  },
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",
2766
+ "name": {
2767
+ "description": "Customer name",
2768
+ "name": "name",
2730
2769
  "hasDynamicHelp": false,
2731
2770
  "multiple": false,
2732
2771
  "type": "option"
2733
2772
  },
2734
- "span-name": {
2735
- "description": "Root span name for traces (default: claude-code)",
2736
- "name": "span-name",
2773
+ "email": {
2774
+ "description": "Customer email",
2775
+ "name": "email",
2737
2776
  "hasDynamicHelp": false,
2738
2777
  "multiple": false,
2739
2778
  "type": "option"
2740
2779
  },
2741
- "workflow-name": {
2742
- "description": "Workflow name for traces (default: claude-code)",
2743
- "name": "workflow-name",
2780
+ "metadata": {
2781
+ "description": "Metadata as JSON string",
2782
+ "name": "metadata",
2744
2783
  "hasDynamicHelp": false,
2745
2784
  "multiple": false,
2746
2785
  "type": "option"
2747
- },
2748
- "dry-run": {
2749
- "description": "Preview changes without writing files",
2750
- "name": "dry-run",
2751
- "allowNo": false,
2752
- "type": "boolean"
2753
2786
  }
2754
2787
  },
2755
2788
  "hasDynamicHelp": false,
2756
2789
  "hiddenAliases": [],
2757
- "id": "integrate:gemini-cli",
2790
+ "id": "users:create",
2758
2791
  "pluginAlias": "@respan/cli",
2759
2792
  "pluginName": "@respan/cli",
2760
2793
  "pluginType": "core",
@@ -2764,20 +2797,20 @@
2764
2797
  "relativePath": [
2765
2798
  "dist",
2766
2799
  "commands",
2767
- "integrate",
2768
- "gemini-cli.js"
2800
+ "users",
2801
+ "create.js"
2769
2802
  ]
2770
2803
  },
2771
- "integrate:opencode": {
2804
+ "users:get": {
2772
2805
  "aliases": [],
2773
- "args": {},
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 --global",
2778
- "respan integrate opencode --project-id my-project --attrs '{\"env\":\"prod\"}'",
2779
- "respan integrate opencode --dry-run"
2780
- ],
2806
+ "args": {
2807
+ "id": {
2808
+ "description": "Customer identifier",
2809
+ "name": "id",
2810
+ "required": true
2811
+ }
2812
+ },
2813
+ "description": "Get a specific user (customer)",
2781
2814
  "flags": {
2782
2815
  "api-key": {
2783
2816
  "description": "API key (env: RESPAN_API_KEY)",
@@ -2812,81 +2845,11 @@
2812
2845
  "name": "verbose",
2813
2846
  "allowNo": false,
2814
2847
  "type": "boolean"
2815
- },
2816
- "local": {
2817
- "description": "Write per-project config (default)",
2818
- "exclusive": [
2819
- "global"
2820
- ],
2821
- "name": "local",
2822
- "allowNo": false,
2823
- "type": "boolean"
2824
- },
2825
- "global": {
2826
- "description": "Write user-level global config",
2827
- "exclusive": [
2828
- "local"
2829
- ],
2830
- "name": "global",
2831
- "allowNo": false,
2832
- "type": "boolean"
2833
- },
2834
- "project-id": {
2835
- "description": "Respan project ID (added to metadata / resource attributes)",
2836
- "env": "RESPAN_PROJECT_ID",
2837
- "name": "project-id",
2838
- "hasDynamicHelp": false,
2839
- "multiple": false,
2840
- "type": "option"
2841
- },
2842
- "base-url": {
2843
- "description": "Respan API base URL (for enterprise deployments)",
2844
- "name": "base-url",
2845
- "default": "https://api.respan.ai/api",
2846
- "hasDynamicHelp": false,
2847
- "multiple": false,
2848
- "type": "option"
2849
- },
2850
- "attrs": {
2851
- "description": "Custom attributes JSON (e.g. '{\"env\":\"prod\"}')",
2852
- "name": "attrs",
2853
- "default": "{}",
2854
- "hasDynamicHelp": false,
2855
- "multiple": false,
2856
- "type": "option"
2857
- },
2858
- "customer-id": {
2859
- "description": "Customer/user identifier for traces (e.g. your name or email)",
2860
- "env": "RESPAN_CUSTOMER_ID",
2861
- "name": "customer-id",
2862
- "hasDynamicHelp": false,
2863
- "multiple": false,
2864
- "type": "option"
2865
- },
2866
- "span-name": {
2867
- "description": "Root span name for traces (default: claude-code)",
2868
- "name": "span-name",
2869
- "hasDynamicHelp": false,
2870
- "multiple": false,
2871
- "type": "option"
2872
- },
2873
- "workflow-name": {
2874
- "description": "Workflow name for traces (default: claude-code)",
2875
- "name": "workflow-name",
2876
- "hasDynamicHelp": false,
2877
- "multiple": false,
2878
- "type": "option"
2879
- },
2880
- "dry-run": {
2881
- "description": "Preview changes without writing files",
2882
- "name": "dry-run",
2883
- "allowNo": false,
2884
- "type": "boolean"
2885
2848
  }
2886
2849
  },
2887
2850
  "hasDynamicHelp": false,
2888
2851
  "hiddenAliases": [],
2889
- "id": "integrate:opencode",
2852
+ "id": "users:get",
2890
2853
  "pluginAlias": "@respan/cli",
2891
2854
  "pluginName": "@respan/cli",
2892
2855
  "pluginType": "core",
@@ -2896,20 +2859,14 @@
2896
2859
  "relativePath": [
2897
2860
  "dist",
2898
2861
  "commands",
2899
- "integrate",
2900
- "opencode.js"
2862
+ "users",
2863
+ "get.js"
2901
2864
  ]
2902
2865
  },
2903
- "traces:get": {
2866
+ "users:list": {
2904
2867
  "aliases": [],
2905
- "args": {
2906
- "id": {
2907
- "description": "Trace ID",
2908
- "name": "id",
2909
- "required": true
2910
- }
2911
- },
2912
- "description": "Get a specific trace",
2868
+ "args": {},
2869
+ "description": "List users (customers)",
2913
2870
  "flags": {
2914
2871
  "api-key": {
2915
2872
  "description": "API key (env: RESPAN_API_KEY)",
@@ -2944,11 +2901,41 @@
2944
2901
  "name": "verbose",
2945
2902
  "allowNo": false,
2946
2903
  "type": "boolean"
2904
+ },
2905
+ "limit": {
2906
+ "description": "Number of results per page",
2907
+ "name": "limit",
2908
+ "default": 20,
2909
+ "hasDynamicHelp": false,
2910
+ "multiple": false,
2911
+ "type": "option"
2912
+ },
2913
+ "page": {
2914
+ "description": "Page number",
2915
+ "name": "page",
2916
+ "default": 1,
2917
+ "hasDynamicHelp": false,
2918
+ "multiple": false,
2919
+ "type": "option"
2920
+ },
2921
+ "sort-by": {
2922
+ "description": "Sort field",
2923
+ "name": "sort-by",
2924
+ "hasDynamicHelp": false,
2925
+ "multiple": false,
2926
+ "type": "option"
2927
+ },
2928
+ "environment": {
2929
+ "description": "Environment filter",
2930
+ "name": "environment",
2931
+ "hasDynamicHelp": false,
2932
+ "multiple": false,
2933
+ "type": "option"
2947
2934
  }
2948
2935
  },
2949
2936
  "hasDynamicHelp": false,
2950
2937
  "hiddenAliases": [],
2951
- "id": "traces:get",
2938
+ "id": "users:list",
2952
2939
  "pluginAlias": "@respan/cli",
2953
2940
  "pluginName": "@respan/cli",
2954
2941
  "pluginType": "core",
@@ -2958,14 +2945,20 @@
2958
2945
  "relativePath": [
2959
2946
  "dist",
2960
2947
  "commands",
2961
- "traces",
2962
- "get.js"
2948
+ "users",
2949
+ "list.js"
2963
2950
  ]
2964
2951
  },
2965
- "traces:list": {
2952
+ "users:update": {
2966
2953
  "aliases": [],
2967
- "args": {},
2968
- "description": "List and filter traces.\n\nA trace represents a complete workflow execution containing multiple spans.\n\nFILTER SYNTAX: field:operator:value\n\nOPERATORS:\n (empty) Exact match model::gpt-4\n not Not equal status_code:not:200\n gt Greater than cost:gt:0.01\n gte Greater than/equal latency:gte:1.0\n lt Less than cost:lt:0.5\n lte Less than/equal prompt_tokens:lte:100\n contains Contains substring error_message:contains:timeout\n icontains Case-insensitive model:icontains:gpt\n startswith Starts with model:startswith:gpt\n endswith Ends with model:endswith:mini\n in Value in list model:in:gpt-4,gpt-4o\n isnull Is null error_message:isnull:true\n iexact Case-insens. exact status:iexact:success\n\nFILTERABLE FIELDS (traces):\n trace_unique_id, customer_identifier, environment, span_count,\n llm_call_count, error_count, total_cost, total_tokens,\n total_prompt_tokens, total_completion_tokens, duration,\n span_workflow_name, metadata__<key>\n\nEXAMPLES:\n --filter model::gpt-4o --filter cost:gt:0.01\n --filter status_code:not:200\n --filter metadata__env::production\n --filter model:in:gpt-4,gpt-4o",
2954
+ "args": {
2955
+ "id": {
2956
+ "description": "Customer identifier",
2957
+ "name": "id",
2958
+ "required": true
2959
+ }
2960
+ },
2961
+ "description": "Update a user (customer)",
2969
2962
  "flags": {
2970
2963
  "api-key": {
2971
2964
  "description": "API key (env: RESPAN_API_KEY)",
@@ -3001,62 +2994,31 @@
3001
2994
  "allowNo": false,
3002
2995
  "type": "boolean"
3003
2996
  },
3004
- "limit": {
3005
- "description": "Number of results per page",
3006
- "name": "limit",
3007
- "default": 10,
3008
- "hasDynamicHelp": false,
3009
- "multiple": false,
3010
- "type": "option"
3011
- },
3012
- "page": {
3013
- "description": "Page number",
3014
- "name": "page",
3015
- "default": 1,
3016
- "hasDynamicHelp": false,
3017
- "multiple": false,
3018
- "type": "option"
3019
- },
3020
- "sort-by": {
3021
- "description": "Sort field (prefix with - for descending)",
3022
- "name": "sort-by",
3023
- "default": "-timestamp",
3024
- "hasDynamicHelp": false,
3025
- "multiple": false,
3026
- "type": "option"
3027
- },
3028
- "start-time": {
3029
- "description": "Start time filter (ISO 8601)",
3030
- "name": "start-time",
2997
+ "name": {
2998
+ "description": "Customer name",
2999
+ "name": "name",
3031
3000
  "hasDynamicHelp": false,
3032
3001
  "multiple": false,
3033
3002
  "type": "option"
3034
3003
  },
3035
- "end-time": {
3036
- "description": "End time filter (ISO 8601)",
3037
- "name": "end-time",
3004
+ "email": {
3005
+ "description": "Customer email",
3006
+ "name": "email",
3038
3007
  "hasDynamicHelp": false,
3039
3008
  "multiple": false,
3040
3009
  "type": "option"
3041
3010
  },
3042
- "environment": {
3043
- "description": "Environment filter",
3044
- "name": "environment",
3011
+ "metadata": {
3012
+ "description": "Metadata as JSON string",
3013
+ "name": "metadata",
3045
3014
  "hasDynamicHelp": false,
3046
3015
  "multiple": false,
3047
3016
  "type": "option"
3048
- },
3049
- "filter": {
3050
- "description": "Filter in field:operator:value format (repeatable)",
3051
- "name": "filter",
3052
- "hasDynamicHelp": false,
3053
- "multiple": true,
3054
- "type": "option"
3055
3017
  }
3056
3018
  },
3057
3019
  "hasDynamicHelp": false,
3058
3020
  "hiddenAliases": [],
3059
- "id": "traces:list",
3021
+ "id": "users:update",
3060
3022
  "pluginAlias": "@respan/cli",
3061
3023
  "pluginName": "@respan/cli",
3062
3024
  "pluginType": "core",
@@ -3066,14 +3028,20 @@
3066
3028
  "relativePath": [
3067
3029
  "dist",
3068
3030
  "commands",
3069
- "traces",
3070
- "list.js"
3031
+ "users",
3032
+ "update.js"
3071
3033
  ]
3072
3034
  },
3073
- "traces:summary": {
3035
+ "prompts:create-version": {
3074
3036
  "aliases": [],
3075
- "args": {},
3076
- "description": "Get a summary of traces for a time range",
3037
+ "args": {
3038
+ "prompt-id": {
3039
+ "description": "Prompt ID",
3040
+ "name": "prompt-id",
3041
+ "required": true
3042
+ }
3043
+ },
3044
+ "description": "Create a new version of a prompt",
3077
3045
  "flags": {
3078
3046
  "api-key": {
3079
3047
  "description": "API key (env: RESPAN_API_KEY)",
@@ -3109,18 +3077,31 @@
3109
3077
  "allowNo": false,
3110
3078
  "type": "boolean"
3111
3079
  },
3112
- "start-time": {
3113
- "description": "Start time (ISO 8601)",
3114
- "name": "start-time",
3080
+ "messages": {
3081
+ "description": "Messages as JSON array string",
3082
+ "name": "messages",
3115
3083
  "required": true,
3116
3084
  "hasDynamicHelp": false,
3117
3085
  "multiple": false,
3118
3086
  "type": "option"
3119
3087
  },
3120
- "end-time": {
3121
- "description": "End time (ISO 8601)",
3122
- "name": "end-time",
3123
- "required": true,
3088
+ "model": {
3089
+ "description": "Model name",
3090
+ "name": "model",
3091
+ "hasDynamicHelp": false,
3092
+ "multiple": false,
3093
+ "type": "option"
3094
+ },
3095
+ "temperature": {
3096
+ "description": "Temperature value",
3097
+ "name": "temperature",
3098
+ "hasDynamicHelp": false,
3099
+ "multiple": false,
3100
+ "type": "option"
3101
+ },
3102
+ "max-tokens": {
3103
+ "description": "Max tokens",
3104
+ "name": "max-tokens",
3124
3105
  "hasDynamicHelp": false,
3125
3106
  "multiple": false,
3126
3107
  "type": "option"
@@ -3128,7 +3109,7 @@
3128
3109
  },
3129
3110
  "hasDynamicHelp": false,
3130
3111
  "hiddenAliases": [],
3131
- "id": "traces:summary",
3112
+ "id": "prompts:create-version",
3132
3113
  "pluginAlias": "@respan/cli",
3133
3114
  "pluginName": "@respan/cli",
3134
3115
  "pluginType": "core",
@@ -3138,14 +3119,14 @@
3138
3119
  "relativePath": [
3139
3120
  "dist",
3140
3121
  "commands",
3141
- "traces",
3142
- "summary.js"
3122
+ "prompts",
3123
+ "create-version.js"
3143
3124
  ]
3144
3125
  },
3145
- "users:create": {
3126
+ "prompts:create": {
3146
3127
  "aliases": [],
3147
3128
  "args": {},
3148
- "description": "Create a new user (customer)",
3129
+ "description": "Create a new prompt",
3149
3130
  "flags": {
3150
3131
  "api-key": {
3151
3132
  "description": "API key (env: RESPAN_API_KEY)",
@@ -3181,31 +3162,17 @@
3181
3162
  "allowNo": false,
3182
3163
  "type": "boolean"
3183
3164
  },
3184
- "identifier": {
3185
- "description": "Customer identifier",
3186
- "name": "identifier",
3187
- "required": true,
3188
- "hasDynamicHelp": false,
3189
- "multiple": false,
3190
- "type": "option"
3191
- },
3192
3165
  "name": {
3193
- "description": "Customer name",
3166
+ "description": "Prompt name",
3194
3167
  "name": "name",
3168
+ "required": true,
3195
3169
  "hasDynamicHelp": false,
3196
3170
  "multiple": false,
3197
3171
  "type": "option"
3198
3172
  },
3199
- "email": {
3200
- "description": "Customer email",
3201
- "name": "email",
3202
- "hasDynamicHelp": false,
3203
- "multiple": false,
3204
- "type": "option"
3205
- },
3206
- "metadata": {
3207
- "description": "Metadata as JSON string",
3208
- "name": "metadata",
3173
+ "description": {
3174
+ "description": "Prompt description",
3175
+ "name": "description",
3209
3176
  "hasDynamicHelp": false,
3210
3177
  "multiple": false,
3211
3178
  "type": "option"
@@ -3213,7 +3180,7 @@
3213
3180
  },
3214
3181
  "hasDynamicHelp": false,
3215
3182
  "hiddenAliases": [],
3216
- "id": "users:create",
3183
+ "id": "prompts:create",
3217
3184
  "pluginAlias": "@respan/cli",
3218
3185
  "pluginName": "@respan/cli",
3219
3186
  "pluginType": "core",
@@ -3223,20 +3190,20 @@
3223
3190
  "relativePath": [
3224
3191
  "dist",
3225
3192
  "commands",
3226
- "users",
3193
+ "prompts",
3227
3194
  "create.js"
3228
3195
  ]
3229
3196
  },
3230
- "users:get": {
3197
+ "prompts:get": {
3231
3198
  "aliases": [],
3232
3199
  "args": {
3233
3200
  "id": {
3234
- "description": "Customer identifier",
3201
+ "description": "Prompt ID",
3235
3202
  "name": "id",
3236
3203
  "required": true
3237
3204
  }
3238
3205
  },
3239
- "description": "Get a specific user (customer)",
3206
+ "description": "Get a specific prompt",
3240
3207
  "flags": {
3241
3208
  "api-key": {
3242
3209
  "description": "API key (env: RESPAN_API_KEY)",
@@ -3275,7 +3242,7 @@
3275
3242
  },
3276
3243
  "hasDynamicHelp": false,
3277
3244
  "hiddenAliases": [],
3278
- "id": "users:get",
3245
+ "id": "prompts:get",
3279
3246
  "pluginAlias": "@respan/cli",
3280
3247
  "pluginName": "@respan/cli",
3281
3248
  "pluginType": "core",
@@ -3285,14 +3252,14 @@
3285
3252
  "relativePath": [
3286
3253
  "dist",
3287
3254
  "commands",
3288
- "users",
3255
+ "prompts",
3289
3256
  "get.js"
3290
3257
  ]
3291
3258
  },
3292
- "users:list": {
3259
+ "prompts:list": {
3293
3260
  "aliases": [],
3294
3261
  "args": {},
3295
- "description": "List users (customers)",
3262
+ "description": "List prompts",
3296
3263
  "flags": {
3297
3264
  "api-key": {
3298
3265
  "description": "API key (env: RESPAN_API_KEY)",
@@ -3331,29 +3298,7 @@
3331
3298
  "limit": {
3332
3299
  "description": "Number of results per page",
3333
3300
  "name": "limit",
3334
- "default": 20,
3335
- "hasDynamicHelp": false,
3336
- "multiple": false,
3337
- "type": "option"
3338
- },
3339
- "page": {
3340
- "description": "Page number",
3341
- "name": "page",
3342
- "default": 1,
3343
- "hasDynamicHelp": false,
3344
- "multiple": false,
3345
- "type": "option"
3346
- },
3347
- "sort-by": {
3348
- "description": "Sort field",
3349
- "name": "sort-by",
3350
- "hasDynamicHelp": false,
3351
- "multiple": false,
3352
- "type": "option"
3353
- },
3354
- "environment": {
3355
- "description": "Environment filter",
3356
- "name": "environment",
3301
+ "default": 50,
3357
3302
  "hasDynamicHelp": false,
3358
3303
  "multiple": false,
3359
3304
  "type": "option"
@@ -3361,7 +3306,7 @@
3361
3306
  },
3362
3307
  "hasDynamicHelp": false,
3363
3308
  "hiddenAliases": [],
3364
- "id": "users:list",
3309
+ "id": "prompts:list",
3365
3310
  "pluginAlias": "@respan/cli",
3366
3311
  "pluginName": "@respan/cli",
3367
3312
  "pluginType": "core",
@@ -3371,20 +3316,20 @@
3371
3316
  "relativePath": [
3372
3317
  "dist",
3373
3318
  "commands",
3374
- "users",
3319
+ "prompts",
3375
3320
  "list.js"
3376
3321
  ]
3377
3322
  },
3378
- "users:update": {
3323
+ "prompts:update": {
3379
3324
  "aliases": [],
3380
3325
  "args": {
3381
3326
  "id": {
3382
- "description": "Customer identifier",
3327
+ "description": "Prompt ID",
3383
3328
  "name": "id",
3384
3329
  "required": true
3385
3330
  }
3386
3331
  },
3387
- "description": "Update a user (customer)",
3332
+ "description": "Update a prompt",
3388
3333
  "flags": {
3389
3334
  "api-key": {
3390
3335
  "description": "API key (env: RESPAN_API_KEY)",
@@ -3421,30 +3366,85 @@
3421
3366
  "type": "boolean"
3422
3367
  },
3423
3368
  "name": {
3424
- "description": "Customer name",
3369
+ "description": "Prompt name",
3425
3370
  "name": "name",
3426
3371
  "hasDynamicHelp": false,
3427
3372
  "multiple": false,
3428
3373
  "type": "option"
3429
3374
  },
3430
- "email": {
3431
- "description": "Customer email",
3432
- "name": "email",
3375
+ "description": {
3376
+ "description": "Prompt description",
3377
+ "name": "description",
3378
+ "hasDynamicHelp": false,
3379
+ "multiple": false,
3380
+ "type": "option"
3381
+ }
3382
+ },
3383
+ "hasDynamicHelp": false,
3384
+ "hiddenAliases": [],
3385
+ "id": "prompts:update",
3386
+ "pluginAlias": "@respan/cli",
3387
+ "pluginName": "@respan/cli",
3388
+ "pluginType": "core",
3389
+ "strict": true,
3390
+ "enableJsonFlag": false,
3391
+ "isESM": true,
3392
+ "relativePath": [
3393
+ "dist",
3394
+ "commands",
3395
+ "prompts",
3396
+ "update.js"
3397
+ ]
3398
+ },
3399
+ "prompts:versions": {
3400
+ "aliases": [],
3401
+ "args": {
3402
+ "prompt-id": {
3403
+ "description": "Prompt ID",
3404
+ "name": "prompt-id",
3405
+ "required": true
3406
+ }
3407
+ },
3408
+ "description": "List versions of a prompt",
3409
+ "flags": {
3410
+ "api-key": {
3411
+ "description": "API key (env: RESPAN_API_KEY)",
3412
+ "env": "RESPAN_API_KEY",
3413
+ "name": "api-key",
3433
3414
  "hasDynamicHelp": false,
3434
3415
  "multiple": false,
3435
3416
  "type": "option"
3436
3417
  },
3437
- "metadata": {
3438
- "description": "Metadata as JSON string",
3439
- "name": "metadata",
3418
+ "profile": {
3419
+ "description": "Named profile to use",
3420
+ "name": "profile",
3440
3421
  "hasDynamicHelp": false,
3441
3422
  "multiple": false,
3442
3423
  "type": "option"
3424
+ },
3425
+ "json": {
3426
+ "description": "Output as JSON",
3427
+ "name": "json",
3428
+ "allowNo": false,
3429
+ "type": "boolean"
3430
+ },
3431
+ "csv": {
3432
+ "description": "Output as CSV",
3433
+ "name": "csv",
3434
+ "allowNo": false,
3435
+ "type": "boolean"
3436
+ },
3437
+ "verbose": {
3438
+ "char": "v",
3439
+ "description": "Show verbose output",
3440
+ "name": "verbose",
3441
+ "allowNo": false,
3442
+ "type": "boolean"
3443
3443
  }
3444
3444
  },
3445
3445
  "hasDynamicHelp": false,
3446
3446
  "hiddenAliases": [],
3447
- "id": "users:update",
3447
+ "id": "prompts:versions",
3448
3448
  "pluginAlias": "@respan/cli",
3449
3449
  "pluginName": "@respan/cli",
3450
3450
  "pluginType": "core",
@@ -3454,10 +3454,10 @@
3454
3454
  "relativePath": [
3455
3455
  "dist",
3456
3456
  "commands",
3457
- "users",
3458
- "update.js"
3457
+ "prompts",
3458
+ "versions.js"
3459
3459
  ]
3460
3460
  }
3461
3461
  },
3462
- "version": "0.6.8"
3462
+ "version": "0.7.0"
3463
3463
  }