@trillboards/cli 0.1.1 → 0.1.4

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.
@@ -1400,15 +1400,12 @@
1400
1400
  "index.js"
1401
1401
  ]
1402
1402
  },
1403
- "logs:tail": {
1403
+ "generated:generated-changelog-query": {
1404
1404
  "aliases": [],
1405
1405
  "args": {},
1406
- "description": "Tail real-time request logs via server-sent events",
1406
+ "description": "Query API changelog",
1407
1407
  "examples": [
1408
- "<%= config.bin %> logs tail",
1409
- "<%= config.bin %> logs tail --events error.occurred",
1410
- "<%= config.bin %> logs tail --status 4xx,5xx",
1411
- "<%= config.bin %> logs tail --events request.logged,error.occurred --status 5xx"
1408
+ "$ trillboards generated changelog query"
1412
1409
  ],
1413
1410
  "flags": {
1414
1411
  "api-key": {
@@ -1439,17 +1436,16 @@
1439
1436
  ],
1440
1437
  "type": "option"
1441
1438
  },
1442
- "events": {
1443
- "description": "Comma-separated SSE event types to subscribe to",
1444
- "name": "events",
1445
- "default": "request.logged,error.occurred",
1439
+ "since": {
1440
+ "description": "Only entries dated on or after this date (YYYY-MM-DD). Unreleased entries always included.",
1441
+ "name": "since",
1446
1442
  "hasDynamicHelp": false,
1447
1443
  "multiple": false,
1448
1444
  "type": "option"
1449
1445
  },
1450
- "status": {
1451
- "description": "Filter by status code pattern (e.g. \"4xx\", \"5xx\", \"4xx,5xx\", \"404\")",
1452
- "name": "status",
1446
+ "type": {
1447
+ "description": "Filter by change category: \"breaking\" (changed+removed), \"additive\" (added), \"deprecation\" (deprecated), \"fix\" (fixed). Comma-separated for multiple.",
1448
+ "name": "type",
1453
1449
  "hasDynamicHelp": false,
1454
1450
  "multiple": false,
1455
1451
  "type": "option"
@@ -1457,7 +1453,7 @@
1457
1453
  },
1458
1454
  "hasDynamicHelp": false,
1459
1455
  "hiddenAliases": [],
1460
- "id": "logs:tail",
1456
+ "id": "generated:generated-changelog-query",
1461
1457
  "pluginAlias": "@trillboards/cli",
1462
1458
  "pluginName": "@trillboards/cli",
1463
1459
  "pluginType": "core",
@@ -1467,19 +1463,22 @@
1467
1463
  "relativePath": [
1468
1464
  "dist",
1469
1465
  "commands",
1470
- "logs",
1471
- "tail.js"
1466
+ "generated",
1467
+ "generated-changelog-query.js"
1472
1468
  ]
1473
1469
  },
1474
- "screens:watch": {
1470
+ "generated:generated-csi-venue-history": {
1475
1471
  "aliases": [],
1476
- "args": {},
1477
- "description": "Live fleet dashboard — watch all screens in real-time",
1472
+ "args": {
1473
+ "screenId": {
1474
+ "description": "Mongo ObjectId of the screen / venue sensing node (24-char lowercase hex).",
1475
+ "name": "screenId",
1476
+ "required": true
1477
+ }
1478
+ },
1479
+ "description": "Historical venue occupancy in 10-minute CSI buckets.",
1478
1480
  "examples": [
1479
- "<%= config.bin %> screens watch",
1480
- "<%= config.bin %> screens watch --filter online",
1481
- "<%= config.bin %> screens watch --sort earnings",
1482
- "<%= config.bin %> screens watch --format json"
1481
+ "$ trillboards generated csi-venue-history"
1483
1482
  ],
1484
1483
  "flags": {
1485
1484
  "api-key": {
@@ -1510,42 +1509,17 @@
1510
1509
  ],
1511
1510
  "type": "option"
1512
1511
  },
1513
- "filter": {
1514
- "description": "Filter screens by status",
1515
- "name": "filter",
1516
- "hasDynamicHelp": false,
1517
- "multiple": false,
1518
- "options": [
1519
- "online",
1520
- "offline"
1521
- ],
1522
- "type": "option"
1523
- },
1524
- "interval": {
1525
- "description": "Refresh interval in seconds",
1526
- "name": "interval",
1527
- "default": 10,
1528
- "hasDynamicHelp": false,
1529
- "multiple": false,
1530
- "type": "option"
1531
- },
1532
- "sort": {
1533
- "description": "Sort column",
1534
- "name": "sort",
1535
- "default": "name",
1512
+ "hours": {
1513
+ "description": "Look-back window in hours. Absent or non-positive values fall back to 24; values above 168 are capped to 168 (7 days).",
1514
+ "name": "hours",
1536
1515
  "hasDynamicHelp": false,
1537
1516
  "multiple": false,
1538
- "options": [
1539
- "name",
1540
- "earnings",
1541
- "fill-rate"
1542
- ],
1543
1517
  "type": "option"
1544
1518
  }
1545
1519
  },
1546
1520
  "hasDynamicHelp": false,
1547
1521
  "hiddenAliases": [],
1548
- "id": "screens:watch",
1522
+ "id": "generated:generated-csi-venue-history",
1549
1523
  "pluginAlias": "@trillboards/cli",
1550
1524
  "pluginName": "@trillboards/cli",
1551
1525
  "pluginType": "core",
@@ -1555,17 +1529,22 @@
1555
1529
  "relativePath": [
1556
1530
  "dist",
1557
1531
  "commands",
1558
- "screens",
1559
- "watch.js"
1532
+ "generated",
1533
+ "generated-csi-venue-history.js"
1560
1534
  ]
1561
1535
  },
1562
- "sandbox:create": {
1536
+ "generated:generated-csi-venue-occupancy": {
1563
1537
  "aliases": [],
1564
- "args": {},
1565
- "description": "Create a sandbox test screen",
1538
+ "args": {
1539
+ "screenId": {
1540
+ "description": "Mongo ObjectId of the screen / venue sensing node (24-char lowercase hex).",
1541
+ "name": "screenId",
1542
+ "required": true
1543
+ }
1544
+ },
1545
+ "description": "Real-time venue occupancy from WiFi CSI sensing.",
1566
1546
  "examples": [
1567
- "<%= config.bin %> sandbox create",
1568
- "<%= config.bin %> sandbox create --format json"
1547
+ "$ trillboards generated csi-venue-occupancy"
1569
1548
  ],
1570
1549
  "flags": {
1571
1550
  "api-key": {
@@ -1599,7 +1578,7 @@
1599
1578
  },
1600
1579
  "hasDynamicHelp": false,
1601
1580
  "hiddenAliases": [],
1602
- "id": "sandbox:create",
1581
+ "id": "generated:generated-csi-venue-occupancy",
1603
1582
  "pluginAlias": "@trillboards/cli",
1604
1583
  "pluginName": "@trillboards/cli",
1605
1584
  "pluginType": "core",
@@ -1609,24 +1588,16 @@
1609
1588
  "relativePath": [
1610
1589
  "dist",
1611
1590
  "commands",
1612
- "sandbox",
1613
- "create.js"
1591
+ "generated",
1592
+ "generated-csi-venue-occupancy.js"
1614
1593
  ]
1615
1594
  },
1616
- "sandbox:emit": {
1595
+ "generated:generated-data-api-aggregate": {
1617
1596
  "aliases": [],
1618
- "args": {
1619
- "event_type": {
1620
- "description": "Event type to emit (e.g. impression.recorded, heartbeat)",
1621
- "name": "event_type",
1622
- "required": true
1623
- }
1624
- },
1625
- "description": "Emit a test event in the sandbox",
1597
+ "args": {},
1598
+ "description": "Aggregate audience analytics for a time window.",
1626
1599
  "examples": [
1627
- "<%= config.bin %> sandbox emit impression.recorded",
1628
- "<%= config.bin %> sandbox emit heartbeat",
1629
- "<%= config.bin %> sandbox emit impression.recorded --data '{\"cpm\": 3.50}'"
1600
+ "$ trillboards generated data-api-aggregate"
1630
1601
  ],
1631
1602
  "flags": {
1632
1603
  "api-key": {
@@ -1657,10 +1628,23 @@
1657
1628
  ],
1658
1629
  "type": "option"
1659
1630
  },
1660
- "data": {
1661
- "char": "d",
1662
- "description": "Additional event data (JSON string)",
1663
- "name": "data",
1631
+ "group_by": {
1632
+ "description": "Dimension to group aggregations by.",
1633
+ "name": "group_by",
1634
+ "hasDynamicHelp": false,
1635
+ "multiple": false,
1636
+ "type": "option"
1637
+ },
1638
+ "metric": {
1639
+ "description": "Metric to aggregate on.",
1640
+ "name": "metric",
1641
+ "hasDynamicHelp": false,
1642
+ "multiple": false,
1643
+ "type": "option"
1644
+ },
1645
+ "since": {
1646
+ "description": "Relative time window (e.g. \"24h\", \"7d\").",
1647
+ "name": "since",
1664
1648
  "hasDynamicHelp": false,
1665
1649
  "multiple": false,
1666
1650
  "type": "option"
@@ -1668,7 +1652,7 @@
1668
1652
  },
1669
1653
  "hasDynamicHelp": false,
1670
1654
  "hiddenAliases": [],
1671
- "id": "sandbox:emit",
1655
+ "id": "generated:generated-data-api-aggregate",
1672
1656
  "pluginAlias": "@trillboards/cli",
1673
1657
  "pluginName": "@trillboards/cli",
1674
1658
  "pluginType": "core",
@@ -1678,17 +1662,16 @@
1678
1662
  "relativePath": [
1679
1663
  "dist",
1680
1664
  "commands",
1681
- "sandbox",
1682
- "emit.js"
1665
+ "generated",
1666
+ "generated-data-api-aggregate.js"
1683
1667
  ]
1684
1668
  },
1685
- "sandbox:reset": {
1669
+ "generated:generated-data-api-list-screens": {
1686
1670
  "aliases": [],
1687
1671
  "args": {},
1688
- "description": "Reset the sandbox — delete all test screens and events",
1672
+ "description": "List screens visible to the caller.",
1689
1673
  "examples": [
1690
- "<%= config.bin %> sandbox reset",
1691
- "<%= config.bin %> sandbox reset --format json"
1674
+ "$ trillboards generated data-api-list-screens"
1692
1675
  ],
1693
1676
  "flags": {
1694
1677
  "api-key": {
@@ -1718,11 +1701,39 @@
1718
1701
  "yaml"
1719
1702
  ],
1720
1703
  "type": "option"
1704
+ },
1705
+ "limit": {
1706
+ "description": "limit",
1707
+ "name": "limit",
1708
+ "hasDynamicHelp": false,
1709
+ "multiple": false,
1710
+ "type": "option"
1711
+ },
1712
+ "offset": {
1713
+ "description": "offset",
1714
+ "name": "offset",
1715
+ "hasDynamicHelp": false,
1716
+ "multiple": false,
1717
+ "type": "option"
1718
+ },
1719
+ "venue_type": {
1720
+ "description": "Filter by venue taxonomy type (e.g. bar, restaurant).",
1721
+ "name": "venue_type",
1722
+ "hasDynamicHelp": false,
1723
+ "multiple": false,
1724
+ "type": "option"
1725
+ },
1726
+ "country": {
1727
+ "description": "ISO-3166 alpha-2 country code.",
1728
+ "name": "country",
1729
+ "hasDynamicHelp": false,
1730
+ "multiple": false,
1731
+ "type": "option"
1721
1732
  }
1722
1733
  },
1723
1734
  "hasDynamicHelp": false,
1724
1735
  "hiddenAliases": [],
1725
- "id": "sandbox:reset",
1736
+ "id": "generated:generated-data-api-list-screens",
1726
1737
  "pluginAlias": "@trillboards/cli",
1727
1738
  "pluginName": "@trillboards/cli",
1728
1739
  "pluginType": "core",
@@ -1732,17 +1743,16 @@
1732
1743
  "relativePath": [
1733
1744
  "dist",
1734
1745
  "commands",
1735
- "sandbox",
1736
- "reset.js"
1746
+ "generated",
1747
+ "generated-data-api-list-screens.js"
1737
1748
  ]
1738
1749
  },
1739
- "sandbox:status": {
1750
+ "generated:generated-data-api-lookalike-screens": {
1740
1751
  "aliases": [],
1741
1752
  "args": {},
1742
- "description": "Show sandbox status — screens and recent events",
1753
+ "description": "Find screens with similar audience profiles.",
1743
1754
  "examples": [
1744
- "<%= config.bin %> sandbox status",
1745
- "<%= config.bin %> sandbox status --format json"
1755
+ "$ trillboards generated data-api-lookalike-screens"
1746
1756
  ],
1747
1757
  "flags": {
1748
1758
  "api-key": {
@@ -1772,11 +1782,32 @@
1772
1782
  "yaml"
1773
1783
  ],
1774
1784
  "type": "option"
1785
+ },
1786
+ "screen_id": {
1787
+ "description": "Internal screen identifier.",
1788
+ "name": "screen_id",
1789
+ "hasDynamicHelp": false,
1790
+ "multiple": false,
1791
+ "type": "option"
1792
+ },
1793
+ "limit": {
1794
+ "description": "limit",
1795
+ "name": "limit",
1796
+ "hasDynamicHelp": false,
1797
+ "multiple": false,
1798
+ "type": "option"
1799
+ },
1800
+ "min_similarity": {
1801
+ "description": "min_similarity",
1802
+ "name": "min_similarity",
1803
+ "hasDynamicHelp": false,
1804
+ "multiple": false,
1805
+ "type": "option"
1775
1806
  }
1776
1807
  },
1777
1808
  "hasDynamicHelp": false,
1778
1809
  "hiddenAliases": [],
1779
- "id": "sandbox:status",
1810
+ "id": "generated:generated-data-api-lookalike-screens",
1780
1811
  "pluginAlias": "@trillboards/cli",
1781
1812
  "pluginName": "@trillboards/cli",
1782
1813
  "pluginType": "core",
@@ -1786,16 +1817,16 @@
1786
1817
  "relativePath": [
1787
1818
  "dist",
1788
1819
  "commands",
1789
- "sandbox",
1790
- "status.js"
1820
+ "generated",
1821
+ "generated-data-api-lookalike-screens.js"
1791
1822
  ]
1792
1823
  },
1793
- "generated:generated-changelog-query": {
1824
+ "generated:generated-data-api-query-dsl": {
1794
1825
  "aliases": [],
1795
1826
  "args": {},
1796
- "description": "Query API changelog",
1827
+ "description": "Composable query DSL over approved datasets.",
1797
1828
  "examples": [
1798
- "$ trillboards generated changelog query"
1829
+ "$ trillboards generated data-api-query-dsl"
1799
1830
  ],
1800
1831
  "flags": {
1801
1832
  "api-key": {
@@ -1826,16 +1857,9 @@
1826
1857
  ],
1827
1858
  "type": "option"
1828
1859
  },
1829
- "since": {
1830
- "description": "Only entries dated on or after this date (YYYY-MM-DD). Unreleased entries always included.",
1831
- "name": "since",
1832
- "hasDynamicHelp": false,
1833
- "multiple": false,
1834
- "type": "option"
1835
- },
1836
- "type": {
1837
- "description": "Filter by change category: \"breaking\" (changed+removed), \"additive\" (added), \"deprecation\" (deprecated), \"fix\" (fixed). Comma-separated for multiple.",
1838
- "name": "type",
1860
+ "data": {
1861
+ "description": "JSON request body",
1862
+ "name": "data",
1839
1863
  "hasDynamicHelp": false,
1840
1864
  "multiple": false,
1841
1865
  "type": "option"
@@ -1843,7 +1867,7 @@
1843
1867
  },
1844
1868
  "hasDynamicHelp": false,
1845
1869
  "hiddenAliases": [],
1846
- "id": "generated:generated-changelog-query",
1870
+ "id": "generated:generated-data-api-query-dsl",
1847
1871
  "pluginAlias": "@trillboards/cli",
1848
1872
  "pluginName": "@trillboards/cli",
1849
1873
  "pluginType": "core",
@@ -1854,15 +1878,21 @@
1854
1878
  "dist",
1855
1879
  "commands",
1856
1880
  "generated",
1857
- "generated-changelog-query.js"
1881
+ "generated-data-api-query-dsl.js"
1858
1882
  ]
1859
1883
  },
1860
- "generated:generated-data-api-aggregate": {
1884
+ "generated:generated-data-api-screen-audience-history": {
1861
1885
  "aliases": [],
1862
- "args": {},
1863
- "description": "Aggregate audience analytics for a time window.",
1886
+ "args": {
1887
+ "screenId": {
1888
+ "description": "Internal screen identifier.",
1889
+ "name": "screenId",
1890
+ "required": true
1891
+ }
1892
+ },
1893
+ "description": "Historical audience_metrics rows for a screen.",
1864
1894
  "examples": [
1865
- "$ trillboards generated data-api-aggregate"
1895
+ "$ trillboards generated data-api-screen-audience-history"
1866
1896
  ],
1867
1897
  "flags": {
1868
1898
  "api-key": {
@@ -1893,23 +1923,23 @@
1893
1923
  ],
1894
1924
  "type": "option"
1895
1925
  },
1896
- "group_by": {
1897
- "description": "Dimension to group aggregations by.",
1898
- "name": "group_by",
1926
+ "since": {
1927
+ "description": "ISO-8601 start timestamp.",
1928
+ "name": "since",
1899
1929
  "hasDynamicHelp": false,
1900
1930
  "multiple": false,
1901
1931
  "type": "option"
1902
1932
  },
1903
- "metric": {
1904
- "description": "Metric to aggregate on.",
1905
- "name": "metric",
1933
+ "until": {
1934
+ "description": "ISO-8601 end timestamp.",
1935
+ "name": "until",
1906
1936
  "hasDynamicHelp": false,
1907
1937
  "multiple": false,
1908
1938
  "type": "option"
1909
1939
  },
1910
- "since": {
1911
- "description": "Relative time window (e.g. \"24h\", \"7d\").",
1912
- "name": "since",
1940
+ "limit": {
1941
+ "description": "limit",
1942
+ "name": "limit",
1913
1943
  "hasDynamicHelp": false,
1914
1944
  "multiple": false,
1915
1945
  "type": "option"
@@ -1917,7 +1947,7 @@
1917
1947
  },
1918
1948
  "hasDynamicHelp": false,
1919
1949
  "hiddenAliases": [],
1920
- "id": "generated:generated-data-api-aggregate",
1950
+ "id": "generated:generated-data-api-screen-audience-history",
1921
1951
  "pluginAlias": "@trillboards/cli",
1922
1952
  "pluginName": "@trillboards/cli",
1923
1953
  "pluginType": "core",
@@ -1928,15 +1958,21 @@
1928
1958
  "dist",
1929
1959
  "commands",
1930
1960
  "generated",
1931
- "generated-data-api-aggregate.js"
1961
+ "generated-data-api-screen-audience-history.js"
1932
1962
  ]
1933
1963
  },
1934
- "generated:generated-data-api-list-screens": {
1964
+ "generated:generated-data-api-screen-audience-live": {
1935
1965
  "aliases": [],
1936
- "args": {},
1937
- "description": "List screens visible to the caller.",
1966
+ "args": {
1967
+ "screenId": {
1968
+ "description": "Internal screen identifier.",
1969
+ "name": "screenId",
1970
+ "required": true
1971
+ }
1972
+ },
1973
+ "description": "Real-time audience snapshot for a screen.",
1938
1974
  "examples": [
1939
- "$ trillboards generated data-api-list-screens"
1975
+ "$ trillboards generated data-api-screen-audience-live"
1940
1976
  ],
1941
1977
  "flags": {
1942
1978
  "api-key": {
@@ -1966,39 +2002,11 @@
1966
2002
  "yaml"
1967
2003
  ],
1968
2004
  "type": "option"
1969
- },
1970
- "limit": {
1971
- "description": "limit",
1972
- "name": "limit",
1973
- "hasDynamicHelp": false,
1974
- "multiple": false,
1975
- "type": "option"
1976
- },
1977
- "offset": {
1978
- "description": "offset",
1979
- "name": "offset",
1980
- "hasDynamicHelp": false,
1981
- "multiple": false,
1982
- "type": "option"
1983
- },
1984
- "venue_type": {
1985
- "description": "Filter by venue taxonomy type (e.g. bar, restaurant).",
1986
- "name": "venue_type",
1987
- "hasDynamicHelp": false,
1988
- "multiple": false,
1989
- "type": "option"
1990
- },
1991
- "country": {
1992
- "description": "ISO-3166 alpha-2 country code.",
1993
- "name": "country",
1994
- "hasDynamicHelp": false,
1995
- "multiple": false,
1996
- "type": "option"
1997
2005
  }
1998
2006
  },
1999
2007
  "hasDynamicHelp": false,
2000
2008
  "hiddenAliases": [],
2001
- "id": "generated:generated-data-api-list-screens",
2009
+ "id": "generated:generated-data-api-screen-audience-live",
2002
2010
  "pluginAlias": "@trillboards/cli",
2003
2011
  "pluginName": "@trillboards/cli",
2004
2012
  "pluginType": "core",
@@ -2009,15 +2017,15 @@
2009
2017
  "dist",
2010
2018
  "commands",
2011
2019
  "generated",
2012
- "generated-data-api-list-screens.js"
2020
+ "generated-data-api-screen-audience-live.js"
2013
2021
  ]
2014
2022
  },
2015
- "generated:generated-data-api-lookalike-screens": {
2023
+ "generated:generated-data-api-semantic-search": {
2016
2024
  "aliases": [],
2017
2025
  "args": {},
2018
- "description": "Find screens with similar audience profiles.",
2026
+ "description": "Similarity search over scene embeddings.",
2019
2027
  "examples": [
2020
- "$ trillboards generated data-api-lookalike-screens"
2028
+ "$ trillboards generated data-api-semantic-search"
2021
2029
  ],
2022
2030
  "flags": {
2023
2031
  "api-key": {
@@ -2048,9 +2056,9 @@
2048
2056
  ],
2049
2057
  "type": "option"
2050
2058
  },
2051
- "screen_id": {
2052
- "description": "Internal screen identifier.",
2053
- "name": "screen_id",
2059
+ "q": {
2060
+ "description": "q",
2061
+ "name": "q",
2054
2062
  "hasDynamicHelp": false,
2055
2063
  "multiple": false,
2056
2064
  "type": "option"
@@ -2062,6 +2070,13 @@
2062
2070
  "multiple": false,
2063
2071
  "type": "option"
2064
2072
  },
2073
+ "since": {
2074
+ "description": "Relative time window (e.g. \"24h\", \"7d\").",
2075
+ "name": "since",
2076
+ "hasDynamicHelp": false,
2077
+ "multiple": false,
2078
+ "type": "option"
2079
+ },
2065
2080
  "min_similarity": {
2066
2081
  "description": "min_similarity",
2067
2082
  "name": "min_similarity",
@@ -2072,7 +2087,7 @@
2072
2087
  },
2073
2088
  "hasDynamicHelp": false,
2074
2089
  "hiddenAliases": [],
2075
- "id": "generated:generated-data-api-lookalike-screens",
2090
+ "id": "generated:generated-data-api-semantic-search",
2076
2091
  "pluginAlias": "@trillboards/cli",
2077
2092
  "pluginName": "@trillboards/cli",
2078
2093
  "pluginType": "core",
@@ -2083,15 +2098,15 @@
2083
2098
  "dist",
2084
2099
  "commands",
2085
2100
  "generated",
2086
- "generated-data-api-lookalike-screens.js"
2101
+ "generated-data-api-semantic-search.js"
2087
2102
  ]
2088
2103
  },
2089
- "generated:generated-data-api-query-dsl": {
2104
+ "generated:generated-data-api-stats": {
2090
2105
  "aliases": [],
2091
2106
  "args": {},
2092
- "description": "Composable query DSL over approved datasets.",
2107
+ "description": "Platform-wide counters.",
2093
2108
  "examples": [
2094
- "$ trillboards generated data-api-query-dsl"
2109
+ "$ trillboards generated data-api-stats"
2095
2110
  ],
2096
2111
  "flags": {
2097
2112
  "api-key": {
@@ -2121,18 +2136,11 @@
2121
2136
  "yaml"
2122
2137
  ],
2123
2138
  "type": "option"
2124
- },
2125
- "data": {
2126
- "description": "JSON request body",
2127
- "name": "data",
2128
- "hasDynamicHelp": false,
2129
- "multiple": false,
2130
- "type": "option"
2131
2139
  }
2132
2140
  },
2133
2141
  "hasDynamicHelp": false,
2134
2142
  "hiddenAliases": [],
2135
- "id": "generated:generated-data-api-query-dsl",
2143
+ "id": "generated:generated-data-api-stats",
2136
2144
  "pluginAlias": "@trillboards/cli",
2137
2145
  "pluginName": "@trillboards/cli",
2138
2146
  "pluginType": "core",
@@ -2143,21 +2151,15 @@
2143
2151
  "dist",
2144
2152
  "commands",
2145
2153
  "generated",
2146
- "generated-data-api-query-dsl.js"
2154
+ "generated-data-api-stats.js"
2147
2155
  ]
2148
2156
  },
2149
- "generated:generated-data-api-screen-audience-history": {
2157
+ "generated:generated-data-api-stream": {
2150
2158
  "aliases": [],
2151
- "args": {
2152
- "screenId": {
2153
- "description": "Internal screen identifier.",
2154
- "name": "screenId",
2155
- "required": true
2156
- }
2157
- },
2158
- "description": "Historical audience_metrics rows for a screen.",
2159
+ "args": {},
2160
+ "description": "Server-Sent Events stream of live audience/observation events.",
2159
2161
  "examples": [
2160
- "$ trillboards generated data-api-screen-audience-history"
2162
+ "$ trillboards generated data-api-stream"
2161
2163
  ],
2162
2164
  "flags": {
2163
2165
  "api-key": {
@@ -2188,23 +2190,16 @@
2188
2190
  ],
2189
2191
  "type": "option"
2190
2192
  },
2191
- "since": {
2192
- "description": "ISO-8601 start timestamp.",
2193
- "name": "since",
2194
- "hasDynamicHelp": false,
2195
- "multiple": false,
2196
- "type": "option"
2197
- },
2198
- "until": {
2199
- "description": "ISO-8601 end timestamp.",
2200
- "name": "until",
2193
+ "observation_family": {
2194
+ "description": "observation_family",
2195
+ "name": "observation_family",
2201
2196
  "hasDynamicHelp": false,
2202
2197
  "multiple": false,
2203
2198
  "type": "option"
2204
2199
  },
2205
- "limit": {
2206
- "description": "limit",
2207
- "name": "limit",
2200
+ "venue_type": {
2201
+ "description": "venue_type",
2202
+ "name": "venue_type",
2208
2203
  "hasDynamicHelp": false,
2209
2204
  "multiple": false,
2210
2205
  "type": "option"
@@ -2212,7 +2207,7 @@
2212
2207
  },
2213
2208
  "hasDynamicHelp": false,
2214
2209
  "hiddenAliases": [],
2215
- "id": "generated:generated-data-api-screen-audience-history",
2210
+ "id": "generated:generated-data-api-stream",
2216
2211
  "pluginAlias": "@trillboards/cli",
2217
2212
  "pluginName": "@trillboards/cli",
2218
2213
  "pluginType": "core",
@@ -2223,21 +2218,15 @@
2223
2218
  "dist",
2224
2219
  "commands",
2225
2220
  "generated",
2226
- "generated-data-api-screen-audience-history.js"
2221
+ "generated-data-api-stream.js"
2227
2222
  ]
2228
2223
  },
2229
- "generated:generated-data-api-screen-audience-live": {
2224
+ "generated:generated-data-api-usage": {
2230
2225
  "aliases": [],
2231
- "args": {
2232
- "screenId": {
2233
- "description": "Internal screen identifier.",
2234
- "name": "screenId",
2235
- "required": true
2236
- }
2237
- },
2238
- "description": "Real-time audience snapshot for a screen.",
2226
+ "args": {},
2227
+ "description": "API usage for the authenticated key (billing dashboard).",
2239
2228
  "examples": [
2240
- "$ trillboards generated data-api-screen-audience-live"
2229
+ "$ trillboards generated data-api-usage"
2241
2230
  ],
2242
2231
  "flags": {
2243
2232
  "api-key": {
@@ -2267,11 +2256,18 @@
2267
2256
  "yaml"
2268
2257
  ],
2269
2258
  "type": "option"
2259
+ },
2260
+ "days": {
2261
+ "description": "days",
2262
+ "name": "days",
2263
+ "hasDynamicHelp": false,
2264
+ "multiple": false,
2265
+ "type": "option"
2270
2266
  }
2271
2267
  },
2272
2268
  "hasDynamicHelp": false,
2273
2269
  "hiddenAliases": [],
2274
- "id": "generated:generated-data-api-screen-audience-live",
2270
+ "id": "generated:generated-data-api-usage",
2275
2271
  "pluginAlias": "@trillboards/cli",
2276
2272
  "pluginName": "@trillboards/cli",
2277
2273
  "pluginType": "core",
@@ -2282,15 +2278,15 @@
2282
2278
  "dist",
2283
2279
  "commands",
2284
2280
  "generated",
2285
- "generated-data-api-screen-audience-live.js"
2281
+ "generated-data-api-usage.js"
2286
2282
  ]
2287
2283
  },
2288
- "generated:generated-data-api-semantic-search": {
2284
+ "generated:generated-device-ota-manifest": {
2289
2285
  "aliases": [],
2290
2286
  "args": {},
2291
- "description": "Similarity search over scene embeddings.",
2287
+ "description": "Signed OTA manifest for managed-device update clients.",
2292
2288
  "examples": [
2293
- "$ trillboards generated data-api-semantic-search"
2289
+ "$ trillboards generated device-ota-manifest"
2294
2290
  ],
2295
2291
  "flags": {
2296
2292
  "api-key": {
@@ -2321,30 +2317,9 @@
2321
2317
  ],
2322
2318
  "type": "option"
2323
2319
  },
2324
- "q": {
2325
- "description": "q",
2326
- "name": "q",
2327
- "hasDynamicHelp": false,
2328
- "multiple": false,
2329
- "type": "option"
2330
- },
2331
- "limit": {
2332
- "description": "limit",
2333
- "name": "limit",
2334
- "hasDynamicHelp": false,
2335
- "multiple": false,
2336
- "type": "option"
2337
- },
2338
- "since": {
2339
- "description": "Relative time window (e.g. \"24h\", \"7d\").",
2340
- "name": "since",
2341
- "hasDynamicHelp": false,
2342
- "multiple": false,
2343
- "type": "option"
2344
- },
2345
- "min_similarity": {
2346
- "description": "min_similarity",
2347
- "name": "min_similarity",
2320
+ "agent": {
2321
+ "description": "Optional agent type filter (`agent-core`, `agent-core-lite`, etc.). When omitted the caller receives the default manifest bundle.",
2322
+ "name": "agent",
2348
2323
  "hasDynamicHelp": false,
2349
2324
  "multiple": false,
2350
2325
  "type": "option"
@@ -2352,7 +2327,7 @@
2352
2327
  },
2353
2328
  "hasDynamicHelp": false,
2354
2329
  "hiddenAliases": [],
2355
- "id": "generated:generated-data-api-semantic-search",
2330
+ "id": "generated:generated-device-ota-manifest",
2356
2331
  "pluginAlias": "@trillboards/cli",
2357
2332
  "pluginName": "@trillboards/cli",
2358
2333
  "pluginType": "core",
@@ -2363,15 +2338,15 @@
2363
2338
  "dist",
2364
2339
  "commands",
2365
2340
  "generated",
2366
- "generated-data-api-semantic-search.js"
2341
+ "generated-device-ota-manifest.js"
2367
2342
  ]
2368
2343
  },
2369
- "generated:generated-data-api-stats": {
2344
+ "generated:generated-device-sensing-profile": {
2370
2345
  "aliases": [],
2371
2346
  "args": {},
2372
- "description": "Platform-wide counters.",
2347
+ "description": "Active sensing profile for the calling connector's bound screen.",
2373
2348
  "examples": [
2374
- "$ trillboards generated data-api-stats"
2349
+ "$ trillboards generated device-sensing-profile"
2375
2350
  ],
2376
2351
  "flags": {
2377
2352
  "api-key": {
@@ -2405,7 +2380,7 @@
2405
2380
  },
2406
2381
  "hasDynamicHelp": false,
2407
2382
  "hiddenAliases": [],
2408
- "id": "generated:generated-data-api-stats",
2383
+ "id": "generated:generated-device-sensing-profile",
2409
2384
  "pluginAlias": "@trillboards/cli",
2410
2385
  "pluginName": "@trillboards/cli",
2411
2386
  "pluginType": "core",
@@ -2416,15 +2391,15 @@
2416
2391
  "dist",
2417
2392
  "commands",
2418
2393
  "generated",
2419
- "generated-data-api-stats.js"
2394
+ "generated-device-sensing-profile.js"
2420
2395
  ]
2421
2396
  },
2422
- "generated:generated-data-api-stream": {
2397
+ "generated:generated-example-healthcheck": {
2423
2398
  "aliases": [],
2424
2399
  "args": {},
2425
- "description": "Server-Sent Events stream of live audience/observation events.",
2400
+ "description": "Example healthcheck (Phase 3 pipeline proof)",
2426
2401
  "examples": [
2427
- "$ trillboards generated data-api-stream"
2402
+ "$ trillboards generated example-healthcheck"
2428
2403
  ],
2429
2404
  "flags": {
2430
2405
  "api-key": {
@@ -2455,16 +2430,9 @@
2455
2430
  ],
2456
2431
  "type": "option"
2457
2432
  },
2458
- "observation_family": {
2459
- "description": "observation_family",
2460
- "name": "observation_family",
2461
- "hasDynamicHelp": false,
2462
- "multiple": false,
2463
- "type": "option"
2464
- },
2465
- "venue_type": {
2466
- "description": "venue_type",
2467
- "name": "venue_type",
2433
+ "verbose": {
2434
+ "description": "When `true`, include diagnostic fields in the response.",
2435
+ "name": "verbose",
2468
2436
  "hasDynamicHelp": false,
2469
2437
  "multiple": false,
2470
2438
  "type": "option"
@@ -2472,7 +2440,7 @@
2472
2440
  },
2473
2441
  "hasDynamicHelp": false,
2474
2442
  "hiddenAliases": [],
2475
- "id": "generated:generated-data-api-stream",
2443
+ "id": "generated:generated-example-healthcheck",
2476
2444
  "pluginAlias": "@trillboards/cli",
2477
2445
  "pluginName": "@trillboards/cli",
2478
2446
  "pluginType": "core",
@@ -2483,15 +2451,21 @@
2483
2451
  "dist",
2484
2452
  "commands",
2485
2453
  "generated",
2486
- "generated-data-api-stream.js"
2454
+ "generated-example-healthcheck.js"
2487
2455
  ]
2488
2456
  },
2489
- "generated:generated-data-api-usage": {
2457
+ "generated:generated-federated-get-latest-model-descriptor": {
2490
2458
  "aliases": [],
2491
- "args": {},
2492
- "description": "API usage for the authenticated key (billing dashboard).",
2459
+ "args": {
2460
+ "modelType": {
2461
+ "description": "Federated model name.",
2462
+ "name": "modelType",
2463
+ "required": true
2464
+ }
2465
+ },
2466
+ "description": "Fetch the latest aggregated model descriptor (download URL + sha256 + version).",
2493
2467
  "examples": [
2494
- "$ trillboards generated data-api-usage"
2468
+ "$ trillboards generated federated-get-latest-model-descriptor"
2495
2469
  ],
2496
2470
  "flags": {
2497
2471
  "api-key": {
@@ -2522,9 +2496,37 @@
2522
2496
  ],
2523
2497
  "type": "option"
2524
2498
  },
2525
- "days": {
2526
- "description": "days",
2527
- "name": "days",
2499
+ "venue_type": {
2500
+ "description": "Venue category (required).",
2501
+ "name": "venue_type",
2502
+ "hasDynamicHelp": false,
2503
+ "multiple": false,
2504
+ "type": "option"
2505
+ },
2506
+ "venue_subtype": {
2507
+ "description": "venue_subtype",
2508
+ "name": "venue_subtype",
2509
+ "hasDynamicHelp": false,
2510
+ "multiple": false,
2511
+ "type": "option"
2512
+ },
2513
+ "daypart": {
2514
+ "description": "daypart",
2515
+ "name": "daypart",
2516
+ "hasDynamicHelp": false,
2517
+ "multiple": false,
2518
+ "type": "option"
2519
+ },
2520
+ "geo": {
2521
+ "description": "geo",
2522
+ "name": "geo",
2523
+ "hasDynamicHelp": false,
2524
+ "multiple": false,
2525
+ "type": "option"
2526
+ },
2527
+ "device_profile": {
2528
+ "description": "device_profile",
2529
+ "name": "device_profile",
2528
2530
  "hasDynamicHelp": false,
2529
2531
  "multiple": false,
2530
2532
  "type": "option"
@@ -2532,7 +2534,7 @@
2532
2534
  },
2533
2535
  "hasDynamicHelp": false,
2534
2536
  "hiddenAliases": [],
2535
- "id": "generated:generated-data-api-usage",
2537
+ "id": "generated:generated-federated-get-latest-model-descriptor",
2536
2538
  "pluginAlias": "@trillboards/cli",
2537
2539
  "pluginName": "@trillboards/cli",
2538
2540
  "pluginType": "core",
@@ -2543,21 +2545,21 @@
2543
2545
  "dist",
2544
2546
  "commands",
2545
2547
  "generated",
2546
- "generated-data-api-usage.js"
2548
+ "generated-federated-get-latest-model-descriptor.js"
2547
2549
  ]
2548
2550
  },
2549
- "generated:generated-device-heartbeat-get": {
2551
+ "generated:generated-federated-get-model-weights": {
2550
2552
  "aliases": [],
2551
2553
  "args": {
2552
- "deviceId": {
2553
- "description": "Device fingerprint or external device ID.",
2554
- "name": "deviceId",
2554
+ "modelType": {
2555
+ "description": "Federated model name.",
2556
+ "name": "modelType",
2555
2557
  "required": true
2556
2558
  }
2557
2559
  },
2558
- "description": "Read live device heartbeat state.",
2560
+ "description": "Fetch aggregated weights for the device-specific slice.",
2559
2561
  "examples": [
2560
- "$ trillboards generated device-heartbeat get"
2562
+ "$ trillboards generated federated-get-model-weights"
2561
2563
  ],
2562
2564
  "flags": {
2563
2565
  "api-key": {
@@ -2587,11 +2589,46 @@
2587
2589
  "yaml"
2588
2590
  ],
2589
2591
  "type": "option"
2592
+ },
2593
+ "venue_type": {
2594
+ "description": "Venue category for slice lookup. Snake_case query alias of venueType.",
2595
+ "name": "venue_type",
2596
+ "hasDynamicHelp": false,
2597
+ "multiple": false,
2598
+ "type": "option"
2599
+ },
2600
+ "venue_subtype": {
2601
+ "description": "venue_subtype",
2602
+ "name": "venue_subtype",
2603
+ "hasDynamicHelp": false,
2604
+ "multiple": false,
2605
+ "type": "option"
2606
+ },
2607
+ "daypart": {
2608
+ "description": "daypart",
2609
+ "name": "daypart",
2610
+ "hasDynamicHelp": false,
2611
+ "multiple": false,
2612
+ "type": "option"
2613
+ },
2614
+ "geo": {
2615
+ "description": "geo",
2616
+ "name": "geo",
2617
+ "hasDynamicHelp": false,
2618
+ "multiple": false,
2619
+ "type": "option"
2620
+ },
2621
+ "device_profile": {
2622
+ "description": "device_profile",
2623
+ "name": "device_profile",
2624
+ "hasDynamicHelp": false,
2625
+ "multiple": false,
2626
+ "type": "option"
2590
2627
  }
2591
2628
  },
2592
2629
  "hasDynamicHelp": false,
2593
2630
  "hiddenAliases": [],
2594
- "id": "generated:generated-device-heartbeat-get",
2631
+ "id": "generated:generated-federated-get-model-weights",
2595
2632
  "pluginAlias": "@trillboards/cli",
2596
2633
  "pluginName": "@trillboards/cli",
2597
2634
  "pluginType": "core",
@@ -2602,15 +2639,15 @@
2602
2639
  "dist",
2603
2640
  "commands",
2604
2641
  "generated",
2605
- "generated-device-heartbeat-get.js"
2642
+ "generated-federated-get-model-weights.js"
2606
2643
  ]
2607
2644
  },
2608
- "generated:generated-device-ota-manifest": {
2645
+ "generated:generated-federated-gradient-upload": {
2609
2646
  "aliases": [],
2610
2647
  "args": {},
2611
- "description": "Signed OTA manifest for managed-device update clients.",
2648
+ "description": "Upload sparsified gradients for multi-slice federated aggregation.",
2612
2649
  "examples": [
2613
- "$ trillboards generated device-ota-manifest"
2650
+ "$ trillboards generated federated-gradient-upload"
2614
2651
  ],
2615
2652
  "flags": {
2616
2653
  "api-key": {
@@ -2641,9 +2678,9 @@
2641
2678
  ],
2642
2679
  "type": "option"
2643
2680
  },
2644
- "agent": {
2645
- "description": "Optional agent type filter (`agent-core`, `agent-core-lite`, etc.). When omitted the caller receives the default manifest bundle.",
2646
- "name": "agent",
2681
+ "data": {
2682
+ "description": "JSON request body",
2683
+ "name": "data",
2647
2684
  "hasDynamicHelp": false,
2648
2685
  "multiple": false,
2649
2686
  "type": "option"
@@ -2651,7 +2688,7 @@
2651
2688
  },
2652
2689
  "hasDynamicHelp": false,
2653
2690
  "hiddenAliases": [],
2654
- "id": "generated:generated-device-ota-manifest",
2691
+ "id": "generated:generated-federated-gradient-upload",
2655
2692
  "pluginAlias": "@trillboards/cli",
2656
2693
  "pluginName": "@trillboards/cli",
2657
2694
  "pluginType": "core",
@@ -2662,15 +2699,15 @@
2662
2699
  "dist",
2663
2700
  "commands",
2664
2701
  "generated",
2665
- "generated-device-ota-manifest.js"
2702
+ "generated-federated-gradient-upload.js"
2666
2703
  ]
2667
2704
  },
2668
- "generated:generated-example-healthcheck": {
2705
+ "generated:generated-federated-performance-upload": {
2669
2706
  "aliases": [],
2670
2707
  "args": {},
2671
- "description": "Example healthcheck (Phase 3 pipeline proof)",
2708
+ "description": "Report on-device model performance metrics.",
2672
2709
  "examples": [
2673
- "$ trillboards generated example-healthcheck"
2710
+ "$ trillboards generated federated-performance-upload"
2674
2711
  ],
2675
2712
  "flags": {
2676
2713
  "api-key": {
@@ -2701,9 +2738,9 @@
2701
2738
  ],
2702
2739
  "type": "option"
2703
2740
  },
2704
- "verbose": {
2705
- "description": "When `true`, include diagnostic fields in the response.",
2706
- "name": "verbose",
2741
+ "data": {
2742
+ "description": "JSON request body",
2743
+ "name": "data",
2707
2744
  "hasDynamicHelp": false,
2708
2745
  "multiple": false,
2709
2746
  "type": "option"
@@ -2711,7 +2748,7 @@
2711
2748
  },
2712
2749
  "hasDynamicHelp": false,
2713
2750
  "hiddenAliases": [],
2714
- "id": "generated:generated-example-healthcheck",
2751
+ "id": "generated:generated-federated-performance-upload",
2715
2752
  "pluginAlias": "@trillboards/cli",
2716
2753
  "pluginName": "@trillboards/cli",
2717
2754
  "pluginType": "core",
@@ -2722,21 +2759,15 @@
2722
2759
  "dist",
2723
2760
  "commands",
2724
2761
  "generated",
2725
- "generated-example-healthcheck.js"
2762
+ "generated-federated-performance-upload.js"
2726
2763
  ]
2727
2764
  },
2728
- "generated:generated-federated-get-latest-model-descriptor": {
2765
+ "generated:generated-federated-taste-upload": {
2729
2766
  "aliases": [],
2730
- "args": {
2731
- "modelType": {
2732
- "description": "Federated model name.",
2733
- "name": "modelType",
2734
- "required": true
2735
- }
2736
- },
2737
- "description": "Fetch the latest aggregated model descriptor (download URL + sha256 + version).",
2767
+ "args": {},
2768
+ "description": "Upload a screen-taste embedding for content personalization aggregation.",
2738
2769
  "examples": [
2739
- "$ trillboards generated federated-get-latest-model-descriptor"
2770
+ "$ trillboards generated federated-taste-upload"
2740
2771
  ],
2741
2772
  "flags": {
2742
2773
  "api-key": {
@@ -2767,37 +2798,9 @@
2767
2798
  ],
2768
2799
  "type": "option"
2769
2800
  },
2770
- "venue_type": {
2771
- "description": "Venue category (required).",
2772
- "name": "venue_type",
2773
- "hasDynamicHelp": false,
2774
- "multiple": false,
2775
- "type": "option"
2776
- },
2777
- "venue_subtype": {
2778
- "description": "venue_subtype",
2779
- "name": "venue_subtype",
2780
- "hasDynamicHelp": false,
2781
- "multiple": false,
2782
- "type": "option"
2783
- },
2784
- "daypart": {
2785
- "description": "daypart",
2786
- "name": "daypart",
2787
- "hasDynamicHelp": false,
2788
- "multiple": false,
2789
- "type": "option"
2790
- },
2791
- "geo": {
2792
- "description": "geo",
2793
- "name": "geo",
2794
- "hasDynamicHelp": false,
2795
- "multiple": false,
2796
- "type": "option"
2797
- },
2798
- "device_profile": {
2799
- "description": "device_profile",
2800
- "name": "device_profile",
2801
+ "data": {
2802
+ "description": "JSON request body",
2803
+ "name": "data",
2801
2804
  "hasDynamicHelp": false,
2802
2805
  "multiple": false,
2803
2806
  "type": "option"
@@ -2805,7 +2808,7 @@
2805
2808
  },
2806
2809
  "hasDynamicHelp": false,
2807
2810
  "hiddenAliases": [],
2808
- "id": "generated:generated-federated-get-latest-model-descriptor",
2811
+ "id": "generated:generated-federated-taste-upload",
2809
2812
  "pluginAlias": "@trillboards/cli",
2810
2813
  "pluginName": "@trillboards/cli",
2811
2814
  "pluginType": "core",
@@ -2816,21 +2819,21 @@
2816
2819
  "dist",
2817
2820
  "commands",
2818
2821
  "generated",
2819
- "generated-federated-get-latest-model-descriptor.js"
2822
+ "generated-federated-taste-upload.js"
2820
2823
  ]
2821
2824
  },
2822
- "generated:generated-federated-get-model-weights": {
2825
+ "generated:generated-playground-dry-run": {
2823
2826
  "aliases": [],
2824
2827
  "args": {
2825
- "modelType": {
2826
- "description": "Federated model name.",
2827
- "name": "modelType",
2828
+ "operation_id": {
2829
+ "description": "The operationId of the endpoint to validate against.",
2830
+ "name": "operation_id",
2828
2831
  "required": true
2829
2832
  }
2830
2833
  },
2831
- "description": "Fetch aggregated weights for the device-specific slice.",
2834
+ "description": "Dry-run validate a request body against an operation schema",
2832
2835
  "examples": [
2833
- "$ trillboards generated federated-get-model-weights"
2836
+ "$ trillboards generated playground-dry-run"
2834
2837
  ],
2835
2838
  "flags": {
2836
2839
  "api-key": {
@@ -2860,46 +2863,70 @@
2860
2863
  "yaml"
2861
2864
  ],
2862
2865
  "type": "option"
2863
- },
2864
- "venue_type": {
2865
- "description": "Venue category for slice lookup. Snake_case query alias of venueType.",
2866
- "name": "venue_type",
2867
- "hasDynamicHelp": false,
2868
- "multiple": false,
2869
- "type": "option"
2870
- },
2871
- "venue_subtype": {
2872
- "description": "venue_subtype",
2873
- "name": "venue_subtype",
2874
- "hasDynamicHelp": false,
2875
- "multiple": false,
2876
- "type": "option"
2877
- },
2878
- "daypart": {
2879
- "description": "daypart",
2880
- "name": "daypart",
2866
+ }
2867
+ },
2868
+ "hasDynamicHelp": false,
2869
+ "hiddenAliases": [],
2870
+ "id": "generated:generated-playground-dry-run",
2871
+ "pluginAlias": "@trillboards/cli",
2872
+ "pluginName": "@trillboards/cli",
2873
+ "pluginType": "core",
2874
+ "strict": true,
2875
+ "enableJsonFlag": false,
2876
+ "isESM": true,
2877
+ "relativePath": [
2878
+ "dist",
2879
+ "commands",
2880
+ "generated",
2881
+ "generated-playground-dry-run.js"
2882
+ ]
2883
+ },
2884
+ "generated:generated-request-metadata-get": {
2885
+ "aliases": [],
2886
+ "args": {
2887
+ "request_id": {
2888
+ "description": "Server-generated request ID to look up.",
2889
+ "name": "request_id",
2890
+ "required": true
2891
+ }
2892
+ },
2893
+ "description": "Look up metadata for a recent API request",
2894
+ "examples": [
2895
+ "$ trillboards generated request-metadata get"
2896
+ ],
2897
+ "flags": {
2898
+ "api-key": {
2899
+ "description": "API key (or set TRILLBOARDS_API_KEY env var)",
2900
+ "env": "TRILLBOARDS_API_KEY",
2901
+ "name": "api-key",
2881
2902
  "hasDynamicHelp": false,
2882
2903
  "multiple": false,
2883
2904
  "type": "option"
2884
2905
  },
2885
- "geo": {
2886
- "description": "geo",
2887
- "name": "geo",
2906
+ "base-url": {
2907
+ "description": "API base URL",
2908
+ "name": "base-url",
2909
+ "default": "https://api.trillboards.com",
2888
2910
  "hasDynamicHelp": false,
2889
2911
  "multiple": false,
2890
2912
  "type": "option"
2891
2913
  },
2892
- "device_profile": {
2893
- "description": "device_profile",
2894
- "name": "device_profile",
2914
+ "format": {
2915
+ "description": "Output format",
2916
+ "name": "format",
2895
2917
  "hasDynamicHelp": false,
2896
2918
  "multiple": false,
2919
+ "options": [
2920
+ "json",
2921
+ "table",
2922
+ "yaml"
2923
+ ],
2897
2924
  "type": "option"
2898
2925
  }
2899
2926
  },
2900
2927
  "hasDynamicHelp": false,
2901
2928
  "hiddenAliases": [],
2902
- "id": "generated:generated-federated-get-model-weights",
2929
+ "id": "generated:generated-request-metadata-get",
2903
2930
  "pluginAlias": "@trillboards/cli",
2904
2931
  "pluginName": "@trillboards/cli",
2905
2932
  "pluginType": "core",
@@ -2910,15 +2937,15 @@
2910
2937
  "dist",
2911
2938
  "commands",
2912
2939
  "generated",
2913
- "generated-federated-get-model-weights.js"
2940
+ "generated-request-metadata-get.js"
2914
2941
  ]
2915
2942
  },
2916
- "generated:generated-federated-gradient-upload": {
2943
+ "generated:generated-sdk-enrich": {
2917
2944
  "aliases": [],
2918
2945
  "args": {},
2919
- "description": "Upload sparsified gradients for multi-slice federated aggregation.",
2946
+ "description": "Census + demographic enrichment from the request IP.",
2920
2947
  "examples": [
2921
- "$ trillboards generated federated-gradient-upload"
2948
+ "$ trillboards generated sdk-enrich"
2922
2949
  ],
2923
2950
  "flags": {
2924
2951
  "api-key": {
@@ -2959,7 +2986,7 @@
2959
2986
  },
2960
2987
  "hasDynamicHelp": false,
2961
2988
  "hiddenAliases": [],
2962
- "id": "generated:generated-federated-gradient-upload",
2989
+ "id": "generated:generated-sdk-enrich",
2963
2990
  "pluginAlias": "@trillboards/cli",
2964
2991
  "pluginName": "@trillboards/cli",
2965
2992
  "pluginType": "core",
@@ -2970,15 +2997,15 @@
2970
2997
  "dist",
2971
2998
  "commands",
2972
2999
  "generated",
2973
- "generated-federated-gradient-upload.js"
3000
+ "generated-sdk-enrich.js"
2974
3001
  ]
2975
3002
  },
2976
- "generated:generated-federated-performance-upload": {
3003
+ "generated:generated-sdk-impression": {
2977
3004
  "aliases": [],
2978
3005
  "args": {},
2979
- "description": "Report on-device model performance metrics.",
3006
+ "description": "Ingest an enriched CTV/DOOH impression.",
2980
3007
  "examples": [
2981
- "$ trillboards generated federated-performance-upload"
3008
+ "$ trillboards generated sdk-impression"
2982
3009
  ],
2983
3010
  "flags": {
2984
3011
  "api-key": {
@@ -3019,7 +3046,7 @@
3019
3046
  },
3020
3047
  "hasDynamicHelp": false,
3021
3048
  "hiddenAliases": [],
3022
- "id": "generated:generated-federated-performance-upload",
3049
+ "id": "generated:generated-sdk-impression",
3023
3050
  "pluginAlias": "@trillboards/cli",
3024
3051
  "pluginName": "@trillboards/cli",
3025
3052
  "pluginType": "core",
@@ -3030,15 +3057,15 @@
3030
3057
  "dist",
3031
3058
  "commands",
3032
3059
  "generated",
3033
- "generated-federated-performance-upload.js"
3060
+ "generated-sdk-impression.js"
3034
3061
  ]
3035
3062
  },
3036
- "generated:generated-federated-taste-upload": {
3063
+ "generated:generated-sdk-qr-beacon": {
3037
3064
  "aliases": [],
3038
3065
  "args": {},
3039
- "description": "Upload a screen-taste embedding for content personalization aggregation.",
3066
+ "description": "Process beacon signals associated with a prior QR scan.",
3040
3067
  "examples": [
3041
- "$ trillboards generated federated-taste-upload"
3068
+ "$ trillboards generated sdk-qr-beacon"
3042
3069
  ],
3043
3070
  "flags": {
3044
3071
  "api-key": {
@@ -3079,7 +3106,7 @@
3079
3106
  },
3080
3107
  "hasDynamicHelp": false,
3081
3108
  "hiddenAliases": [],
3082
- "id": "generated:generated-federated-taste-upload",
3109
+ "id": "generated:generated-sdk-qr-beacon",
3083
3110
  "pluginAlias": "@trillboards/cli",
3084
3111
  "pluginName": "@trillboards/cli",
3085
3112
  "pluginType": "core",
@@ -3090,21 +3117,15 @@
3090
3117
  "dist",
3091
3118
  "commands",
3092
3119
  "generated",
3093
- "generated-federated-taste-upload.js"
3120
+ "generated-sdk-qr-beacon.js"
3094
3121
  ]
3095
3122
  },
3096
- "generated:generated-playground-dry-run": {
3123
+ "generated:generated-sdk-qr-scan": {
3097
3124
  "aliases": [],
3098
- "args": {
3099
- "operation_id": {
3100
- "description": "The operationId of the endpoint to validate against.",
3101
- "name": "operation_id",
3102
- "required": true
3103
- }
3104
- },
3105
- "description": "Dry-run validate a request body against an operation schema",
3125
+ "args": {},
3126
+ "description": "Record a QR-code scan for physical-to-digital attribution.",
3106
3127
  "examples": [
3107
- "$ trillboards generated playground-dry-run"
3128
+ "$ trillboards generated sdk-qr-scan"
3108
3129
  ],
3109
3130
  "flags": {
3110
3131
  "api-key": {
@@ -3134,11 +3155,18 @@
3134
3155
  "yaml"
3135
3156
  ],
3136
3157
  "type": "option"
3158
+ },
3159
+ "data": {
3160
+ "description": "JSON request body",
3161
+ "name": "data",
3162
+ "hasDynamicHelp": false,
3163
+ "multiple": false,
3164
+ "type": "option"
3137
3165
  }
3138
3166
  },
3139
3167
  "hasDynamicHelp": false,
3140
3168
  "hiddenAliases": [],
3141
- "id": "generated:generated-playground-dry-run",
3169
+ "id": "generated:generated-sdk-qr-scan",
3142
3170
  "pluginAlias": "@trillboards/cli",
3143
3171
  "pluginName": "@trillboards/cli",
3144
3172
  "pluginType": "core",
@@ -3149,21 +3177,15 @@
3149
3177
  "dist",
3150
3178
  "commands",
3151
3179
  "generated",
3152
- "generated-playground-dry-run.js"
3180
+ "generated-sdk-qr-scan.js"
3153
3181
  ]
3154
3182
  },
3155
- "generated:generated-post-device-heartbeat": {
3183
+ "generated:generated-sensing-paired-training-upload": {
3156
3184
  "aliases": [],
3157
- "args": {
3158
- "deviceId": {
3159
- "description": "Device fingerprint or external device ID.",
3160
- "name": "deviceId",
3161
- "required": true
3162
- }
3163
- },
3164
- "description": "Submit a device heartbeat.",
3185
+ "args": {},
3186
+ "description": "Upload a batch of paired camera/CSI training samples.",
3165
3187
  "examples": [
3166
- "$ trillboards generated post-device-heartbeat"
3188
+ "$ trillboards generated sensing-paired-training-upload"
3167
3189
  ],
3168
3190
  "flags": {
3169
3191
  "api-key": {
@@ -3204,7 +3226,7 @@
3204
3226
  },
3205
3227
  "hasDynamicHelp": false,
3206
3228
  "hiddenAliases": [],
3207
- "id": "generated:generated-post-device-heartbeat",
3229
+ "id": "generated:generated-sensing-paired-training-upload",
3208
3230
  "pluginAlias": "@trillboards/cli",
3209
3231
  "pluginName": "@trillboards/cli",
3210
3232
  "pluginType": "core",
@@ -3215,21 +3237,18 @@
3215
3237
  "dist",
3216
3238
  "commands",
3217
3239
  "generated",
3218
- "generated-post-device-heartbeat.js"
3240
+ "generated-sensing-paired-training-upload.js"
3219
3241
  ]
3220
3242
  },
3221
- "generated:generated-request-metadata-get": {
3243
+ "logs:tail": {
3222
3244
  "aliases": [],
3223
- "args": {
3224
- "request_id": {
3225
- "description": "Server-generated request ID to look up.",
3226
- "name": "request_id",
3227
- "required": true
3228
- }
3229
- },
3230
- "description": "Look up metadata for a recent API request",
3245
+ "args": {},
3246
+ "description": "Tail real-time request logs via server-sent events",
3231
3247
  "examples": [
3232
- "$ trillboards generated request-metadata get"
3248
+ "<%= config.bin %> logs tail",
3249
+ "<%= config.bin %> logs tail --events error.occurred",
3250
+ "<%= config.bin %> logs tail --status 4xx,5xx",
3251
+ "<%= config.bin %> logs tail --events request.logged,error.occurred --status 5xx"
3233
3252
  ],
3234
3253
  "flags": {
3235
3254
  "api-key": {
@@ -3259,11 +3278,26 @@
3259
3278
  "yaml"
3260
3279
  ],
3261
3280
  "type": "option"
3281
+ },
3282
+ "events": {
3283
+ "description": "Comma-separated SSE event types to subscribe to",
3284
+ "name": "events",
3285
+ "default": "request.logged,error.occurred",
3286
+ "hasDynamicHelp": false,
3287
+ "multiple": false,
3288
+ "type": "option"
3289
+ },
3290
+ "status": {
3291
+ "description": "Filter by status code pattern (e.g. \"4xx\", \"5xx\", \"4xx,5xx\", \"404\")",
3292
+ "name": "status",
3293
+ "hasDynamicHelp": false,
3294
+ "multiple": false,
3295
+ "type": "option"
3262
3296
  }
3263
3297
  },
3264
3298
  "hasDynamicHelp": false,
3265
3299
  "hiddenAliases": [],
3266
- "id": "generated:generated-request-metadata-get",
3300
+ "id": "logs:tail",
3267
3301
  "pluginAlias": "@trillboards/cli",
3268
3302
  "pluginName": "@trillboards/cli",
3269
3303
  "pluginType": "core",
@@ -3273,16 +3307,17 @@
3273
3307
  "relativePath": [
3274
3308
  "dist",
3275
3309
  "commands",
3276
- "generated",
3277
- "generated-request-metadata-get.js"
3310
+ "logs",
3311
+ "tail.js"
3278
3312
  ]
3279
3313
  },
3280
- "generated:generated-sdk-enrich": {
3314
+ "sandbox:create": {
3281
3315
  "aliases": [],
3282
3316
  "args": {},
3283
- "description": "Census + demographic enrichment from the request IP.",
3317
+ "description": "Create a sandbox test screen",
3284
3318
  "examples": [
3285
- "$ trillboards generated sdk-enrich"
3319
+ "<%= config.bin %> sandbox create",
3320
+ "<%= config.bin %> sandbox create --format json"
3286
3321
  ],
3287
3322
  "flags": {
3288
3323
  "api-key": {
@@ -3312,18 +3347,11 @@
3312
3347
  "yaml"
3313
3348
  ],
3314
3349
  "type": "option"
3315
- },
3316
- "data": {
3317
- "description": "JSON request body",
3318
- "name": "data",
3319
- "hasDynamicHelp": false,
3320
- "multiple": false,
3321
- "type": "option"
3322
3350
  }
3323
3351
  },
3324
3352
  "hasDynamicHelp": false,
3325
3353
  "hiddenAliases": [],
3326
- "id": "generated:generated-sdk-enrich",
3354
+ "id": "sandbox:create",
3327
3355
  "pluginAlias": "@trillboards/cli",
3328
3356
  "pluginName": "@trillboards/cli",
3329
3357
  "pluginType": "core",
@@ -3333,16 +3361,24 @@
3333
3361
  "relativePath": [
3334
3362
  "dist",
3335
3363
  "commands",
3336
- "generated",
3337
- "generated-sdk-enrich.js"
3364
+ "sandbox",
3365
+ "create.js"
3338
3366
  ]
3339
3367
  },
3340
- "generated:generated-sdk-impression": {
3368
+ "sandbox:emit": {
3341
3369
  "aliases": [],
3342
- "args": {},
3343
- "description": "Ingest an enriched CTV/DOOH impression.",
3370
+ "args": {
3371
+ "event_type": {
3372
+ "description": "Event type to emit (e.g. impression.recorded, heartbeat)",
3373
+ "name": "event_type",
3374
+ "required": true
3375
+ }
3376
+ },
3377
+ "description": "Emit a test event in the sandbox",
3344
3378
  "examples": [
3345
- "$ trillboards generated sdk-impression"
3379
+ "<%= config.bin %> sandbox emit impression.recorded",
3380
+ "<%= config.bin %> sandbox emit heartbeat",
3381
+ "<%= config.bin %> sandbox emit impression.recorded --data '{\"cpm\": 3.50}'"
3346
3382
  ],
3347
3383
  "flags": {
3348
3384
  "api-key": {
@@ -3374,7 +3410,8 @@
3374
3410
  "type": "option"
3375
3411
  },
3376
3412
  "data": {
3377
- "description": "JSON request body",
3413
+ "char": "d",
3414
+ "description": "Additional event data (JSON string)",
3378
3415
  "name": "data",
3379
3416
  "hasDynamicHelp": false,
3380
3417
  "multiple": false,
@@ -3383,7 +3420,7 @@
3383
3420
  },
3384
3421
  "hasDynamicHelp": false,
3385
3422
  "hiddenAliases": [],
3386
- "id": "generated:generated-sdk-impression",
3423
+ "id": "sandbox:emit",
3387
3424
  "pluginAlias": "@trillboards/cli",
3388
3425
  "pluginName": "@trillboards/cli",
3389
3426
  "pluginType": "core",
@@ -3393,16 +3430,17 @@
3393
3430
  "relativePath": [
3394
3431
  "dist",
3395
3432
  "commands",
3396
- "generated",
3397
- "generated-sdk-impression.js"
3433
+ "sandbox",
3434
+ "emit.js"
3398
3435
  ]
3399
3436
  },
3400
- "generated:generated-sdk-qr-beacon": {
3437
+ "sandbox:reset": {
3401
3438
  "aliases": [],
3402
3439
  "args": {},
3403
- "description": "Process beacon signals associated with a prior QR scan.",
3440
+ "description": "Reset the sandbox — delete all test screens and events",
3404
3441
  "examples": [
3405
- "$ trillboards generated sdk-qr-beacon"
3442
+ "<%= config.bin %> sandbox reset",
3443
+ "<%= config.bin %> sandbox reset --format json"
3406
3444
  ],
3407
3445
  "flags": {
3408
3446
  "api-key": {
@@ -3432,18 +3470,11 @@
3432
3470
  "yaml"
3433
3471
  ],
3434
3472
  "type": "option"
3435
- },
3436
- "data": {
3437
- "description": "JSON request body",
3438
- "name": "data",
3439
- "hasDynamicHelp": false,
3440
- "multiple": false,
3441
- "type": "option"
3442
3473
  }
3443
3474
  },
3444
3475
  "hasDynamicHelp": false,
3445
3476
  "hiddenAliases": [],
3446
- "id": "generated:generated-sdk-qr-beacon",
3477
+ "id": "sandbox:reset",
3447
3478
  "pluginAlias": "@trillboards/cli",
3448
3479
  "pluginName": "@trillboards/cli",
3449
3480
  "pluginType": "core",
@@ -3453,16 +3484,17 @@
3453
3484
  "relativePath": [
3454
3485
  "dist",
3455
3486
  "commands",
3456
- "generated",
3457
- "generated-sdk-qr-beacon.js"
3487
+ "sandbox",
3488
+ "reset.js"
3458
3489
  ]
3459
3490
  },
3460
- "generated:generated-sdk-qr-scan": {
3491
+ "sandbox:status": {
3461
3492
  "aliases": [],
3462
3493
  "args": {},
3463
- "description": "Record a QR-code scan for physical-to-digital attribution.",
3494
+ "description": "Show sandbox status — screens and recent events",
3464
3495
  "examples": [
3465
- "$ trillboards generated sdk-qr-scan"
3496
+ "<%= config.bin %> sandbox status",
3497
+ "<%= config.bin %> sandbox status --format json"
3466
3498
  ],
3467
3499
  "flags": {
3468
3500
  "api-key": {
@@ -3492,18 +3524,11 @@
3492
3524
  "yaml"
3493
3525
  ],
3494
3526
  "type": "option"
3495
- },
3496
- "data": {
3497
- "description": "JSON request body",
3498
- "name": "data",
3499
- "hasDynamicHelp": false,
3500
- "multiple": false,
3501
- "type": "option"
3502
3527
  }
3503
3528
  },
3504
3529
  "hasDynamicHelp": false,
3505
3530
  "hiddenAliases": [],
3506
- "id": "generated:generated-sdk-qr-scan",
3531
+ "id": "sandbox:status",
3507
3532
  "pluginAlias": "@trillboards/cli",
3508
3533
  "pluginName": "@trillboards/cli",
3509
3534
  "pluginType": "core",
@@ -3513,16 +3538,19 @@
3513
3538
  "relativePath": [
3514
3539
  "dist",
3515
3540
  "commands",
3516
- "generated",
3517
- "generated-sdk-qr-scan.js"
3541
+ "sandbox",
3542
+ "status.js"
3518
3543
  ]
3519
3544
  },
3520
- "generated:generated-sensing-paired-training-upload": {
3545
+ "screens:watch": {
3521
3546
  "aliases": [],
3522
3547
  "args": {},
3523
- "description": "Upload a batch of paired camera/CSI training samples.",
3548
+ "description": "Live fleet dashboard — watch all screens in real-time",
3524
3549
  "examples": [
3525
- "$ trillboards generated sensing-paired-training-upload"
3550
+ "<%= config.bin %> screens watch",
3551
+ "<%= config.bin %> screens watch --filter online",
3552
+ "<%= config.bin %> screens watch --sort earnings",
3553
+ "<%= config.bin %> screens watch --format json"
3526
3554
  ],
3527
3555
  "flags": {
3528
3556
  "api-key": {
@@ -3553,17 +3581,42 @@
3553
3581
  ],
3554
3582
  "type": "option"
3555
3583
  },
3556
- "data": {
3557
- "description": "JSON request body",
3558
- "name": "data",
3584
+ "filter": {
3585
+ "description": "Filter screens by status",
3586
+ "name": "filter",
3587
+ "hasDynamicHelp": false,
3588
+ "multiple": false,
3589
+ "options": [
3590
+ "online",
3591
+ "offline"
3592
+ ],
3593
+ "type": "option"
3594
+ },
3595
+ "interval": {
3596
+ "description": "Refresh interval in seconds",
3597
+ "name": "interval",
3598
+ "default": 10,
3599
+ "hasDynamicHelp": false,
3600
+ "multiple": false,
3601
+ "type": "option"
3602
+ },
3603
+ "sort": {
3604
+ "description": "Sort column",
3605
+ "name": "sort",
3606
+ "default": "name",
3559
3607
  "hasDynamicHelp": false,
3560
3608
  "multiple": false,
3609
+ "options": [
3610
+ "name",
3611
+ "earnings",
3612
+ "fill-rate"
3613
+ ],
3561
3614
  "type": "option"
3562
3615
  }
3563
3616
  },
3564
3617
  "hasDynamicHelp": false,
3565
3618
  "hiddenAliases": [],
3566
- "id": "generated:generated-sensing-paired-training-upload",
3619
+ "id": "screens:watch",
3567
3620
  "pluginAlias": "@trillboards/cli",
3568
3621
  "pluginName": "@trillboards/cli",
3569
3622
  "pluginType": "core",
@@ -3573,10 +3626,10 @@
3573
3626
  "relativePath": [
3574
3627
  "dist",
3575
3628
  "commands",
3576
- "generated",
3577
- "generated-sensing-paired-training-upload.js"
3629
+ "screens",
3630
+ "watch.js"
3578
3631
  ]
3579
3632
  }
3580
3633
  },
3581
- "version": "0.1.1"
3634
+ "version": "0.1.4"
3582
3635
  }