@trillboards/cli 0.1.1 → 0.1.3

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-example-healthcheck": {
2370
2345
  "aliases": [],
2371
2346
  "args": {},
2372
- "description": "Platform-wide counters.",
2347
+ "description": "Example healthcheck (Phase 3 pipeline proof)",
2373
2348
  "examples": [
2374
- "$ trillboards generated data-api-stats"
2349
+ "$ trillboards generated example-healthcheck"
2375
2350
  ],
2376
2351
  "flags": {
2377
2352
  "api-key": {
@@ -2401,11 +2376,18 @@
2401
2376
  "yaml"
2402
2377
  ],
2403
2378
  "type": "option"
2379
+ },
2380
+ "verbose": {
2381
+ "description": "When `true`, include diagnostic fields in the response.",
2382
+ "name": "verbose",
2383
+ "hasDynamicHelp": false,
2384
+ "multiple": false,
2385
+ "type": "option"
2404
2386
  }
2405
2387
  },
2406
2388
  "hasDynamicHelp": false,
2407
2389
  "hiddenAliases": [],
2408
- "id": "generated:generated-data-api-stats",
2390
+ "id": "generated:generated-example-healthcheck",
2409
2391
  "pluginAlias": "@trillboards/cli",
2410
2392
  "pluginName": "@trillboards/cli",
2411
2393
  "pluginType": "core",
@@ -2416,15 +2398,21 @@
2416
2398
  "dist",
2417
2399
  "commands",
2418
2400
  "generated",
2419
- "generated-data-api-stats.js"
2401
+ "generated-example-healthcheck.js"
2420
2402
  ]
2421
2403
  },
2422
- "generated:generated-data-api-stream": {
2404
+ "generated:generated-federated-get-latest-model-descriptor": {
2423
2405
  "aliases": [],
2424
- "args": {},
2425
- "description": "Server-Sent Events stream of live audience/observation events.",
2406
+ "args": {
2407
+ "modelType": {
2408
+ "description": "Federated model name.",
2409
+ "name": "modelType",
2410
+ "required": true
2411
+ }
2412
+ },
2413
+ "description": "Fetch the latest aggregated model descriptor (download URL + sha256 + version).",
2426
2414
  "examples": [
2427
- "$ trillboards generated data-api-stream"
2415
+ "$ trillboards generated federated-get-latest-model-descriptor"
2428
2416
  ],
2429
2417
  "flags": {
2430
2418
  "api-key": {
@@ -2455,16 +2443,37 @@
2455
2443
  ],
2456
2444
  "type": "option"
2457
2445
  },
2458
- "observation_family": {
2459
- "description": "observation_family",
2460
- "name": "observation_family",
2446
+ "venue_type": {
2447
+ "description": "Venue category (required).",
2448
+ "name": "venue_type",
2461
2449
  "hasDynamicHelp": false,
2462
2450
  "multiple": false,
2463
2451
  "type": "option"
2464
2452
  },
2465
- "venue_type": {
2466
- "description": "venue_type",
2467
- "name": "venue_type",
2453
+ "venue_subtype": {
2454
+ "description": "venue_subtype",
2455
+ "name": "venue_subtype",
2456
+ "hasDynamicHelp": false,
2457
+ "multiple": false,
2458
+ "type": "option"
2459
+ },
2460
+ "daypart": {
2461
+ "description": "daypart",
2462
+ "name": "daypart",
2463
+ "hasDynamicHelp": false,
2464
+ "multiple": false,
2465
+ "type": "option"
2466
+ },
2467
+ "geo": {
2468
+ "description": "geo",
2469
+ "name": "geo",
2470
+ "hasDynamicHelp": false,
2471
+ "multiple": false,
2472
+ "type": "option"
2473
+ },
2474
+ "device_profile": {
2475
+ "description": "device_profile",
2476
+ "name": "device_profile",
2468
2477
  "hasDynamicHelp": false,
2469
2478
  "multiple": false,
2470
2479
  "type": "option"
@@ -2472,7 +2481,7 @@
2472
2481
  },
2473
2482
  "hasDynamicHelp": false,
2474
2483
  "hiddenAliases": [],
2475
- "id": "generated:generated-data-api-stream",
2484
+ "id": "generated:generated-federated-get-latest-model-descriptor",
2476
2485
  "pluginAlias": "@trillboards/cli",
2477
2486
  "pluginName": "@trillboards/cli",
2478
2487
  "pluginType": "core",
@@ -2483,15 +2492,21 @@
2483
2492
  "dist",
2484
2493
  "commands",
2485
2494
  "generated",
2486
- "generated-data-api-stream.js"
2495
+ "generated-federated-get-latest-model-descriptor.js"
2487
2496
  ]
2488
2497
  },
2489
- "generated:generated-data-api-usage": {
2498
+ "generated:generated-federated-get-model-weights": {
2490
2499
  "aliases": [],
2491
- "args": {},
2492
- "description": "API usage for the authenticated key (billing dashboard).",
2500
+ "args": {
2501
+ "modelType": {
2502
+ "description": "Federated model name.",
2503
+ "name": "modelType",
2504
+ "required": true
2505
+ }
2506
+ },
2507
+ "description": "Fetch aggregated weights for the device-specific slice.",
2493
2508
  "examples": [
2494
- "$ trillboards generated data-api-usage"
2509
+ "$ trillboards generated federated-get-model-weights"
2495
2510
  ],
2496
2511
  "flags": {
2497
2512
  "api-key": {
@@ -2522,9 +2537,37 @@
2522
2537
  ],
2523
2538
  "type": "option"
2524
2539
  },
2525
- "days": {
2526
- "description": "days",
2527
- "name": "days",
2540
+ "venue_type": {
2541
+ "description": "Venue category for slice lookup. Snake_case query alias of venueType.",
2542
+ "name": "venue_type",
2543
+ "hasDynamicHelp": false,
2544
+ "multiple": false,
2545
+ "type": "option"
2546
+ },
2547
+ "venue_subtype": {
2548
+ "description": "venue_subtype",
2549
+ "name": "venue_subtype",
2550
+ "hasDynamicHelp": false,
2551
+ "multiple": false,
2552
+ "type": "option"
2553
+ },
2554
+ "daypart": {
2555
+ "description": "daypart",
2556
+ "name": "daypart",
2557
+ "hasDynamicHelp": false,
2558
+ "multiple": false,
2559
+ "type": "option"
2560
+ },
2561
+ "geo": {
2562
+ "description": "geo",
2563
+ "name": "geo",
2564
+ "hasDynamicHelp": false,
2565
+ "multiple": false,
2566
+ "type": "option"
2567
+ },
2568
+ "device_profile": {
2569
+ "description": "device_profile",
2570
+ "name": "device_profile",
2528
2571
  "hasDynamicHelp": false,
2529
2572
  "multiple": false,
2530
2573
  "type": "option"
@@ -2532,7 +2575,7 @@
2532
2575
  },
2533
2576
  "hasDynamicHelp": false,
2534
2577
  "hiddenAliases": [],
2535
- "id": "generated:generated-data-api-usage",
2578
+ "id": "generated:generated-federated-get-model-weights",
2536
2579
  "pluginAlias": "@trillboards/cli",
2537
2580
  "pluginName": "@trillboards/cli",
2538
2581
  "pluginType": "core",
@@ -2543,21 +2586,15 @@
2543
2586
  "dist",
2544
2587
  "commands",
2545
2588
  "generated",
2546
- "generated-data-api-usage.js"
2589
+ "generated-federated-get-model-weights.js"
2547
2590
  ]
2548
2591
  },
2549
- "generated:generated-device-heartbeat-get": {
2592
+ "generated:generated-federated-gradient-upload": {
2550
2593
  "aliases": [],
2551
- "args": {
2552
- "deviceId": {
2553
- "description": "Device fingerprint or external device ID.",
2554
- "name": "deviceId",
2555
- "required": true
2556
- }
2557
- },
2558
- "description": "Read live device heartbeat state.",
2594
+ "args": {},
2595
+ "description": "Upload sparsified gradients for multi-slice federated aggregation.",
2559
2596
  "examples": [
2560
- "$ trillboards generated device-heartbeat get"
2597
+ "$ trillboards generated federated-gradient-upload"
2561
2598
  ],
2562
2599
  "flags": {
2563
2600
  "api-key": {
@@ -2587,11 +2624,18 @@
2587
2624
  "yaml"
2588
2625
  ],
2589
2626
  "type": "option"
2627
+ },
2628
+ "data": {
2629
+ "description": "JSON request body",
2630
+ "name": "data",
2631
+ "hasDynamicHelp": false,
2632
+ "multiple": false,
2633
+ "type": "option"
2590
2634
  }
2591
2635
  },
2592
2636
  "hasDynamicHelp": false,
2593
2637
  "hiddenAliases": [],
2594
- "id": "generated:generated-device-heartbeat-get",
2638
+ "id": "generated:generated-federated-gradient-upload",
2595
2639
  "pluginAlias": "@trillboards/cli",
2596
2640
  "pluginName": "@trillboards/cli",
2597
2641
  "pluginType": "core",
@@ -2602,15 +2646,15 @@
2602
2646
  "dist",
2603
2647
  "commands",
2604
2648
  "generated",
2605
- "generated-device-heartbeat-get.js"
2649
+ "generated-federated-gradient-upload.js"
2606
2650
  ]
2607
2651
  },
2608
- "generated:generated-device-ota-manifest": {
2652
+ "generated:generated-federated-performance-upload": {
2609
2653
  "aliases": [],
2610
2654
  "args": {},
2611
- "description": "Signed OTA manifest for managed-device update clients.",
2655
+ "description": "Report on-device model performance metrics.",
2612
2656
  "examples": [
2613
- "$ trillboards generated device-ota-manifest"
2657
+ "$ trillboards generated federated-performance-upload"
2614
2658
  ],
2615
2659
  "flags": {
2616
2660
  "api-key": {
@@ -2641,9 +2685,9 @@
2641
2685
  ],
2642
2686
  "type": "option"
2643
2687
  },
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",
2688
+ "data": {
2689
+ "description": "JSON request body",
2690
+ "name": "data",
2647
2691
  "hasDynamicHelp": false,
2648
2692
  "multiple": false,
2649
2693
  "type": "option"
@@ -2651,7 +2695,7 @@
2651
2695
  },
2652
2696
  "hasDynamicHelp": false,
2653
2697
  "hiddenAliases": [],
2654
- "id": "generated:generated-device-ota-manifest",
2698
+ "id": "generated:generated-federated-performance-upload",
2655
2699
  "pluginAlias": "@trillboards/cli",
2656
2700
  "pluginName": "@trillboards/cli",
2657
2701
  "pluginType": "core",
@@ -2662,15 +2706,15 @@
2662
2706
  "dist",
2663
2707
  "commands",
2664
2708
  "generated",
2665
- "generated-device-ota-manifest.js"
2709
+ "generated-federated-performance-upload.js"
2666
2710
  ]
2667
2711
  },
2668
- "generated:generated-example-healthcheck": {
2712
+ "generated:generated-federated-taste-upload": {
2669
2713
  "aliases": [],
2670
2714
  "args": {},
2671
- "description": "Example healthcheck (Phase 3 pipeline proof)",
2715
+ "description": "Upload a screen-taste embedding for content personalization aggregation.",
2672
2716
  "examples": [
2673
- "$ trillboards generated example-healthcheck"
2717
+ "$ trillboards generated federated-taste-upload"
2674
2718
  ],
2675
2719
  "flags": {
2676
2720
  "api-key": {
@@ -2701,9 +2745,9 @@
2701
2745
  ],
2702
2746
  "type": "option"
2703
2747
  },
2704
- "verbose": {
2705
- "description": "When `true`, include diagnostic fields in the response.",
2706
- "name": "verbose",
2748
+ "data": {
2749
+ "description": "JSON request body",
2750
+ "name": "data",
2707
2751
  "hasDynamicHelp": false,
2708
2752
  "multiple": false,
2709
2753
  "type": "option"
@@ -2711,7 +2755,7 @@
2711
2755
  },
2712
2756
  "hasDynamicHelp": false,
2713
2757
  "hiddenAliases": [],
2714
- "id": "generated:generated-example-healthcheck",
2758
+ "id": "generated:generated-federated-taste-upload",
2715
2759
  "pluginAlias": "@trillboards/cli",
2716
2760
  "pluginName": "@trillboards/cli",
2717
2761
  "pluginType": "core",
@@ -2722,21 +2766,21 @@
2722
2766
  "dist",
2723
2767
  "commands",
2724
2768
  "generated",
2725
- "generated-example-healthcheck.js"
2769
+ "generated-federated-taste-upload.js"
2726
2770
  ]
2727
2771
  },
2728
- "generated:generated-federated-get-latest-model-descriptor": {
2772
+ "generated:generated-playground-dry-run": {
2729
2773
  "aliases": [],
2730
2774
  "args": {
2731
- "modelType": {
2732
- "description": "Federated model name.",
2733
- "name": "modelType",
2775
+ "operation_id": {
2776
+ "description": "The operationId of the endpoint to validate against.",
2777
+ "name": "operation_id",
2734
2778
  "required": true
2735
2779
  }
2736
2780
  },
2737
- "description": "Fetch the latest aggregated model descriptor (download URL + sha256 + version).",
2781
+ "description": "Dry-run validate a request body against an operation schema",
2738
2782
  "examples": [
2739
- "$ trillboards generated federated-get-latest-model-descriptor"
2783
+ "$ trillboards generated playground-dry-run"
2740
2784
  ],
2741
2785
  "flags": {
2742
2786
  "api-key": {
@@ -2766,46 +2810,11 @@
2766
2810
  "yaml"
2767
2811
  ],
2768
2812
  "type": "option"
2769
- },
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
- "hasDynamicHelp": false,
2802
- "multiple": false,
2803
- "type": "option"
2804
2813
  }
2805
2814
  },
2806
2815
  "hasDynamicHelp": false,
2807
2816
  "hiddenAliases": [],
2808
- "id": "generated:generated-federated-get-latest-model-descriptor",
2817
+ "id": "generated:generated-playground-dry-run",
2809
2818
  "pluginAlias": "@trillboards/cli",
2810
2819
  "pluginName": "@trillboards/cli",
2811
2820
  "pluginType": "core",
@@ -2816,21 +2825,21 @@
2816
2825
  "dist",
2817
2826
  "commands",
2818
2827
  "generated",
2819
- "generated-federated-get-latest-model-descriptor.js"
2828
+ "generated-playground-dry-run.js"
2820
2829
  ]
2821
2830
  },
2822
- "generated:generated-federated-get-model-weights": {
2831
+ "generated:generated-request-metadata-get": {
2823
2832
  "aliases": [],
2824
2833
  "args": {
2825
- "modelType": {
2826
- "description": "Federated model name.",
2827
- "name": "modelType",
2834
+ "request_id": {
2835
+ "description": "Server-generated request ID to look up.",
2836
+ "name": "request_id",
2828
2837
  "required": true
2829
2838
  }
2830
2839
  },
2831
- "description": "Fetch aggregated weights for the device-specific slice.",
2840
+ "description": "Look up metadata for a recent API request",
2832
2841
  "examples": [
2833
- "$ trillboards generated federated-get-model-weights"
2842
+ "$ trillboards generated request-metadata get"
2834
2843
  ],
2835
2844
  "flags": {
2836
2845
  "api-key": {
@@ -2841,65 +2850,30 @@
2841
2850
  "multiple": false,
2842
2851
  "type": "option"
2843
2852
  },
2844
- "base-url": {
2845
- "description": "API base URL",
2846
- "name": "base-url",
2847
- "default": "https://api.trillboards.com",
2848
- "hasDynamicHelp": false,
2849
- "multiple": false,
2850
- "type": "option"
2851
- },
2852
- "format": {
2853
- "description": "Output format",
2854
- "name": "format",
2855
- "hasDynamicHelp": false,
2856
- "multiple": false,
2857
- "options": [
2858
- "json",
2859
- "table",
2860
- "yaml"
2861
- ],
2862
- "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",
2881
- "hasDynamicHelp": false,
2882
- "multiple": false,
2883
- "type": "option"
2884
- },
2885
- "geo": {
2886
- "description": "geo",
2887
- "name": "geo",
2853
+ "base-url": {
2854
+ "description": "API base URL",
2855
+ "name": "base-url",
2856
+ "default": "https://api.trillboards.com",
2888
2857
  "hasDynamicHelp": false,
2889
2858
  "multiple": false,
2890
2859
  "type": "option"
2891
2860
  },
2892
- "device_profile": {
2893
- "description": "device_profile",
2894
- "name": "device_profile",
2861
+ "format": {
2862
+ "description": "Output format",
2863
+ "name": "format",
2895
2864
  "hasDynamicHelp": false,
2896
2865
  "multiple": false,
2866
+ "options": [
2867
+ "json",
2868
+ "table",
2869
+ "yaml"
2870
+ ],
2897
2871
  "type": "option"
2898
2872
  }
2899
2873
  },
2900
2874
  "hasDynamicHelp": false,
2901
2875
  "hiddenAliases": [],
2902
- "id": "generated:generated-federated-get-model-weights",
2876
+ "id": "generated:generated-request-metadata-get",
2903
2877
  "pluginAlias": "@trillboards/cli",
2904
2878
  "pluginName": "@trillboards/cli",
2905
2879
  "pluginType": "core",
@@ -2910,15 +2884,15 @@
2910
2884
  "dist",
2911
2885
  "commands",
2912
2886
  "generated",
2913
- "generated-federated-get-model-weights.js"
2887
+ "generated-request-metadata-get.js"
2914
2888
  ]
2915
2889
  },
2916
- "generated:generated-federated-gradient-upload": {
2890
+ "generated:generated-sdk-enrich": {
2917
2891
  "aliases": [],
2918
2892
  "args": {},
2919
- "description": "Upload sparsified gradients for multi-slice federated aggregation.",
2893
+ "description": "Census + demographic enrichment from the request IP.",
2920
2894
  "examples": [
2921
- "$ trillboards generated federated-gradient-upload"
2895
+ "$ trillboards generated sdk-enrich"
2922
2896
  ],
2923
2897
  "flags": {
2924
2898
  "api-key": {
@@ -2959,7 +2933,7 @@
2959
2933
  },
2960
2934
  "hasDynamicHelp": false,
2961
2935
  "hiddenAliases": [],
2962
- "id": "generated:generated-federated-gradient-upload",
2936
+ "id": "generated:generated-sdk-enrich",
2963
2937
  "pluginAlias": "@trillboards/cli",
2964
2938
  "pluginName": "@trillboards/cli",
2965
2939
  "pluginType": "core",
@@ -2970,15 +2944,15 @@
2970
2944
  "dist",
2971
2945
  "commands",
2972
2946
  "generated",
2973
- "generated-federated-gradient-upload.js"
2947
+ "generated-sdk-enrich.js"
2974
2948
  ]
2975
2949
  },
2976
- "generated:generated-federated-performance-upload": {
2950
+ "generated:generated-sdk-impression": {
2977
2951
  "aliases": [],
2978
2952
  "args": {},
2979
- "description": "Report on-device model performance metrics.",
2953
+ "description": "Ingest an enriched CTV/DOOH impression.",
2980
2954
  "examples": [
2981
- "$ trillboards generated federated-performance-upload"
2955
+ "$ trillboards generated sdk-impression"
2982
2956
  ],
2983
2957
  "flags": {
2984
2958
  "api-key": {
@@ -3019,7 +2993,7 @@
3019
2993
  },
3020
2994
  "hasDynamicHelp": false,
3021
2995
  "hiddenAliases": [],
3022
- "id": "generated:generated-federated-performance-upload",
2996
+ "id": "generated:generated-sdk-impression",
3023
2997
  "pluginAlias": "@trillboards/cli",
3024
2998
  "pluginName": "@trillboards/cli",
3025
2999
  "pluginType": "core",
@@ -3030,15 +3004,15 @@
3030
3004
  "dist",
3031
3005
  "commands",
3032
3006
  "generated",
3033
- "generated-federated-performance-upload.js"
3007
+ "generated-sdk-impression.js"
3034
3008
  ]
3035
3009
  },
3036
- "generated:generated-federated-taste-upload": {
3010
+ "generated:generated-sdk-qr-beacon": {
3037
3011
  "aliases": [],
3038
3012
  "args": {},
3039
- "description": "Upload a screen-taste embedding for content personalization aggregation.",
3013
+ "description": "Process beacon signals associated with a prior QR scan.",
3040
3014
  "examples": [
3041
- "$ trillboards generated federated-taste-upload"
3015
+ "$ trillboards generated sdk-qr-beacon"
3042
3016
  ],
3043
3017
  "flags": {
3044
3018
  "api-key": {
@@ -3079,7 +3053,7 @@
3079
3053
  },
3080
3054
  "hasDynamicHelp": false,
3081
3055
  "hiddenAliases": [],
3082
- "id": "generated:generated-federated-taste-upload",
3056
+ "id": "generated:generated-sdk-qr-beacon",
3083
3057
  "pluginAlias": "@trillboards/cli",
3084
3058
  "pluginName": "@trillboards/cli",
3085
3059
  "pluginType": "core",
@@ -3090,21 +3064,15 @@
3090
3064
  "dist",
3091
3065
  "commands",
3092
3066
  "generated",
3093
- "generated-federated-taste-upload.js"
3067
+ "generated-sdk-qr-beacon.js"
3094
3068
  ]
3095
3069
  },
3096
- "generated:generated-playground-dry-run": {
3070
+ "generated:generated-sdk-qr-scan": {
3097
3071
  "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",
3072
+ "args": {},
3073
+ "description": "Record a QR-code scan for physical-to-digital attribution.",
3106
3074
  "examples": [
3107
- "$ trillboards generated playground-dry-run"
3075
+ "$ trillboards generated sdk-qr-scan"
3108
3076
  ],
3109
3077
  "flags": {
3110
3078
  "api-key": {
@@ -3134,11 +3102,18 @@
3134
3102
  "yaml"
3135
3103
  ],
3136
3104
  "type": "option"
3105
+ },
3106
+ "data": {
3107
+ "description": "JSON request body",
3108
+ "name": "data",
3109
+ "hasDynamicHelp": false,
3110
+ "multiple": false,
3111
+ "type": "option"
3137
3112
  }
3138
3113
  },
3139
3114
  "hasDynamicHelp": false,
3140
3115
  "hiddenAliases": [],
3141
- "id": "generated:generated-playground-dry-run",
3116
+ "id": "generated:generated-sdk-qr-scan",
3142
3117
  "pluginAlias": "@trillboards/cli",
3143
3118
  "pluginName": "@trillboards/cli",
3144
3119
  "pluginType": "core",
@@ -3149,21 +3124,15 @@
3149
3124
  "dist",
3150
3125
  "commands",
3151
3126
  "generated",
3152
- "generated-playground-dry-run.js"
3127
+ "generated-sdk-qr-scan.js"
3153
3128
  ]
3154
3129
  },
3155
- "generated:generated-post-device-heartbeat": {
3130
+ "generated:generated-sensing-paired-training-upload": {
3156
3131
  "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.",
3132
+ "args": {},
3133
+ "description": "Upload a batch of paired camera/CSI training samples.",
3165
3134
  "examples": [
3166
- "$ trillboards generated post-device-heartbeat"
3135
+ "$ trillboards generated sensing-paired-training-upload"
3167
3136
  ],
3168
3137
  "flags": {
3169
3138
  "api-key": {
@@ -3204,7 +3173,7 @@
3204
3173
  },
3205
3174
  "hasDynamicHelp": false,
3206
3175
  "hiddenAliases": [],
3207
- "id": "generated:generated-post-device-heartbeat",
3176
+ "id": "generated:generated-sensing-paired-training-upload",
3208
3177
  "pluginAlias": "@trillboards/cli",
3209
3178
  "pluginName": "@trillboards/cli",
3210
3179
  "pluginType": "core",
@@ -3215,21 +3184,18 @@
3215
3184
  "dist",
3216
3185
  "commands",
3217
3186
  "generated",
3218
- "generated-post-device-heartbeat.js"
3187
+ "generated-sensing-paired-training-upload.js"
3219
3188
  ]
3220
3189
  },
3221
- "generated:generated-request-metadata-get": {
3190
+ "logs:tail": {
3222
3191
  "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",
3192
+ "args": {},
3193
+ "description": "Tail real-time request logs via server-sent events",
3231
3194
  "examples": [
3232
- "$ trillboards generated request-metadata get"
3195
+ "<%= config.bin %> logs tail",
3196
+ "<%= config.bin %> logs tail --events error.occurred",
3197
+ "<%= config.bin %> logs tail --status 4xx,5xx",
3198
+ "<%= config.bin %> logs tail --events request.logged,error.occurred --status 5xx"
3233
3199
  ],
3234
3200
  "flags": {
3235
3201
  "api-key": {
@@ -3259,11 +3225,26 @@
3259
3225
  "yaml"
3260
3226
  ],
3261
3227
  "type": "option"
3228
+ },
3229
+ "events": {
3230
+ "description": "Comma-separated SSE event types to subscribe to",
3231
+ "name": "events",
3232
+ "default": "request.logged,error.occurred",
3233
+ "hasDynamicHelp": false,
3234
+ "multiple": false,
3235
+ "type": "option"
3236
+ },
3237
+ "status": {
3238
+ "description": "Filter by status code pattern (e.g. \"4xx\", \"5xx\", \"4xx,5xx\", \"404\")",
3239
+ "name": "status",
3240
+ "hasDynamicHelp": false,
3241
+ "multiple": false,
3242
+ "type": "option"
3262
3243
  }
3263
3244
  },
3264
3245
  "hasDynamicHelp": false,
3265
3246
  "hiddenAliases": [],
3266
- "id": "generated:generated-request-metadata-get",
3247
+ "id": "logs:tail",
3267
3248
  "pluginAlias": "@trillboards/cli",
3268
3249
  "pluginName": "@trillboards/cli",
3269
3250
  "pluginType": "core",
@@ -3273,16 +3254,19 @@
3273
3254
  "relativePath": [
3274
3255
  "dist",
3275
3256
  "commands",
3276
- "generated",
3277
- "generated-request-metadata-get.js"
3257
+ "logs",
3258
+ "tail.js"
3278
3259
  ]
3279
3260
  },
3280
- "generated:generated-sdk-enrich": {
3261
+ "screens:watch": {
3281
3262
  "aliases": [],
3282
3263
  "args": {},
3283
- "description": "Census + demographic enrichment from the request IP.",
3264
+ "description": "Live fleet dashboard — watch all screens in real-time",
3284
3265
  "examples": [
3285
- "$ trillboards generated sdk-enrich"
3266
+ "<%= config.bin %> screens watch",
3267
+ "<%= config.bin %> screens watch --filter online",
3268
+ "<%= config.bin %> screens watch --sort earnings",
3269
+ "<%= config.bin %> screens watch --format json"
3286
3270
  ],
3287
3271
  "flags": {
3288
3272
  "api-key": {
@@ -3313,17 +3297,42 @@
3313
3297
  ],
3314
3298
  "type": "option"
3315
3299
  },
3316
- "data": {
3317
- "description": "JSON request body",
3318
- "name": "data",
3300
+ "filter": {
3301
+ "description": "Filter screens by status",
3302
+ "name": "filter",
3303
+ "hasDynamicHelp": false,
3304
+ "multiple": false,
3305
+ "options": [
3306
+ "online",
3307
+ "offline"
3308
+ ],
3309
+ "type": "option"
3310
+ },
3311
+ "interval": {
3312
+ "description": "Refresh interval in seconds",
3313
+ "name": "interval",
3314
+ "default": 10,
3315
+ "hasDynamicHelp": false,
3316
+ "multiple": false,
3317
+ "type": "option"
3318
+ },
3319
+ "sort": {
3320
+ "description": "Sort column",
3321
+ "name": "sort",
3322
+ "default": "name",
3319
3323
  "hasDynamicHelp": false,
3320
3324
  "multiple": false,
3325
+ "options": [
3326
+ "name",
3327
+ "earnings",
3328
+ "fill-rate"
3329
+ ],
3321
3330
  "type": "option"
3322
3331
  }
3323
3332
  },
3324
3333
  "hasDynamicHelp": false,
3325
3334
  "hiddenAliases": [],
3326
- "id": "generated:generated-sdk-enrich",
3335
+ "id": "screens:watch",
3327
3336
  "pluginAlias": "@trillboards/cli",
3328
3337
  "pluginName": "@trillboards/cli",
3329
3338
  "pluginType": "core",
@@ -3333,16 +3342,17 @@
3333
3342
  "relativePath": [
3334
3343
  "dist",
3335
3344
  "commands",
3336
- "generated",
3337
- "generated-sdk-enrich.js"
3345
+ "screens",
3346
+ "watch.js"
3338
3347
  ]
3339
3348
  },
3340
- "generated:generated-sdk-impression": {
3349
+ "sandbox:create": {
3341
3350
  "aliases": [],
3342
3351
  "args": {},
3343
- "description": "Ingest an enriched CTV/DOOH impression.",
3352
+ "description": "Create a sandbox test screen",
3344
3353
  "examples": [
3345
- "$ trillboards generated sdk-impression"
3354
+ "<%= config.bin %> sandbox create",
3355
+ "<%= config.bin %> sandbox create --format json"
3346
3356
  ],
3347
3357
  "flags": {
3348
3358
  "api-key": {
@@ -3372,18 +3382,11 @@
3372
3382
  "yaml"
3373
3383
  ],
3374
3384
  "type": "option"
3375
- },
3376
- "data": {
3377
- "description": "JSON request body",
3378
- "name": "data",
3379
- "hasDynamicHelp": false,
3380
- "multiple": false,
3381
- "type": "option"
3382
3385
  }
3383
3386
  },
3384
3387
  "hasDynamicHelp": false,
3385
3388
  "hiddenAliases": [],
3386
- "id": "generated:generated-sdk-impression",
3389
+ "id": "sandbox:create",
3387
3390
  "pluginAlias": "@trillboards/cli",
3388
3391
  "pluginName": "@trillboards/cli",
3389
3392
  "pluginType": "core",
@@ -3393,16 +3396,24 @@
3393
3396
  "relativePath": [
3394
3397
  "dist",
3395
3398
  "commands",
3396
- "generated",
3397
- "generated-sdk-impression.js"
3399
+ "sandbox",
3400
+ "create.js"
3398
3401
  ]
3399
3402
  },
3400
- "generated:generated-sdk-qr-beacon": {
3403
+ "sandbox:emit": {
3401
3404
  "aliases": [],
3402
- "args": {},
3403
- "description": "Process beacon signals associated with a prior QR scan.",
3405
+ "args": {
3406
+ "event_type": {
3407
+ "description": "Event type to emit (e.g. impression.recorded, heartbeat)",
3408
+ "name": "event_type",
3409
+ "required": true
3410
+ }
3411
+ },
3412
+ "description": "Emit a test event in the sandbox",
3404
3413
  "examples": [
3405
- "$ trillboards generated sdk-qr-beacon"
3414
+ "<%= config.bin %> sandbox emit impression.recorded",
3415
+ "<%= config.bin %> sandbox emit heartbeat",
3416
+ "<%= config.bin %> sandbox emit impression.recorded --data '{\"cpm\": 3.50}'"
3406
3417
  ],
3407
3418
  "flags": {
3408
3419
  "api-key": {
@@ -3434,7 +3445,8 @@
3434
3445
  "type": "option"
3435
3446
  },
3436
3447
  "data": {
3437
- "description": "JSON request body",
3448
+ "char": "d",
3449
+ "description": "Additional event data (JSON string)",
3438
3450
  "name": "data",
3439
3451
  "hasDynamicHelp": false,
3440
3452
  "multiple": false,
@@ -3443,7 +3455,7 @@
3443
3455
  },
3444
3456
  "hasDynamicHelp": false,
3445
3457
  "hiddenAliases": [],
3446
- "id": "generated:generated-sdk-qr-beacon",
3458
+ "id": "sandbox:emit",
3447
3459
  "pluginAlias": "@trillboards/cli",
3448
3460
  "pluginName": "@trillboards/cli",
3449
3461
  "pluginType": "core",
@@ -3453,16 +3465,17 @@
3453
3465
  "relativePath": [
3454
3466
  "dist",
3455
3467
  "commands",
3456
- "generated",
3457
- "generated-sdk-qr-beacon.js"
3468
+ "sandbox",
3469
+ "emit.js"
3458
3470
  ]
3459
3471
  },
3460
- "generated:generated-sdk-qr-scan": {
3472
+ "sandbox:reset": {
3461
3473
  "aliases": [],
3462
3474
  "args": {},
3463
- "description": "Record a QR-code scan for physical-to-digital attribution.",
3475
+ "description": "Reset the sandbox — delete all test screens and events",
3464
3476
  "examples": [
3465
- "$ trillboards generated sdk-qr-scan"
3477
+ "<%= config.bin %> sandbox reset",
3478
+ "<%= config.bin %> sandbox reset --format json"
3466
3479
  ],
3467
3480
  "flags": {
3468
3481
  "api-key": {
@@ -3492,18 +3505,11 @@
3492
3505
  "yaml"
3493
3506
  ],
3494
3507
  "type": "option"
3495
- },
3496
- "data": {
3497
- "description": "JSON request body",
3498
- "name": "data",
3499
- "hasDynamicHelp": false,
3500
- "multiple": false,
3501
- "type": "option"
3502
3508
  }
3503
3509
  },
3504
3510
  "hasDynamicHelp": false,
3505
3511
  "hiddenAliases": [],
3506
- "id": "generated:generated-sdk-qr-scan",
3512
+ "id": "sandbox:reset",
3507
3513
  "pluginAlias": "@trillboards/cli",
3508
3514
  "pluginName": "@trillboards/cli",
3509
3515
  "pluginType": "core",
@@ -3513,16 +3519,17 @@
3513
3519
  "relativePath": [
3514
3520
  "dist",
3515
3521
  "commands",
3516
- "generated",
3517
- "generated-sdk-qr-scan.js"
3522
+ "sandbox",
3523
+ "reset.js"
3518
3524
  ]
3519
3525
  },
3520
- "generated:generated-sensing-paired-training-upload": {
3526
+ "sandbox:status": {
3521
3527
  "aliases": [],
3522
3528
  "args": {},
3523
- "description": "Upload a batch of paired camera/CSI training samples.",
3529
+ "description": "Show sandbox status — screens and recent events",
3524
3530
  "examples": [
3525
- "$ trillboards generated sensing-paired-training-upload"
3531
+ "<%= config.bin %> sandbox status",
3532
+ "<%= config.bin %> sandbox status --format json"
3526
3533
  ],
3527
3534
  "flags": {
3528
3535
  "api-key": {
@@ -3552,18 +3559,11 @@
3552
3559
  "yaml"
3553
3560
  ],
3554
3561
  "type": "option"
3555
- },
3556
- "data": {
3557
- "description": "JSON request body",
3558
- "name": "data",
3559
- "hasDynamicHelp": false,
3560
- "multiple": false,
3561
- "type": "option"
3562
3562
  }
3563
3563
  },
3564
3564
  "hasDynamicHelp": false,
3565
3565
  "hiddenAliases": [],
3566
- "id": "generated:generated-sensing-paired-training-upload",
3566
+ "id": "sandbox:status",
3567
3567
  "pluginAlias": "@trillboards/cli",
3568
3568
  "pluginName": "@trillboards/cli",
3569
3569
  "pluginType": "core",
@@ -3573,10 +3573,10 @@
3573
3573
  "relativePath": [
3574
3574
  "dist",
3575
3575
  "commands",
3576
- "generated",
3577
- "generated-sensing-paired-training-upload.js"
3576
+ "sandbox",
3577
+ "status.js"
3578
3578
  ]
3579
3579
  }
3580
3580
  },
3581
- "version": "0.1.1"
3581
+ "version": "0.1.3"
3582
3582
  }